И так, ребятки, вот вам небольшая ‘полезняшка’ от меня, и совершенно бесплатно!
Описание:
Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
или создать их самим со следующим содержанием:
Script.c
/*
Описание: Скрипт выдачи индивидуального стартового лута, скина игрока и точек спавна
Автор: 123new
Установка:
1. По пути: {папка с вашим сервером}mpmissionsdayzOffline.chernarusplus
создать папку ‘CustomSpawnPlayerConfig’
и поместить в нее 3 файла скрипта: Script.c Sets.c init_mod.c
2. В файле: {папка с вашим сервером}mpmissionsdayzOffline.chernarusplusinit.c
в самом верху файла добавить:
#include «$CurrentDir:mpmissionsdayzOffline.chernarusplusCustomSpawnPlayerConfiginit_mod.c»
3. В папке, обозначенной параметром запуска сервера ‘-profile=’, поместить файл с именем CustomSpawnPlayerConfig.txt
и заполнить его данными по следующему формату:
UID|Skin_player|sets_numbers|points_spawns
где UID — это steam64id от профиля игрока в steam
Skin_player — точный id скина игрока (можно указать 0 для отключения опции)
sets_numbers — номер сета со стартовым лутом (можно указать несколько через ‘;’, указать один всего, либо указать 0 для отключения опции)
points_spawns — координаты спавна игрока на карте в формате ‘x y z’ (можно указать несколько через ‘;’, указать всего одну точку, либо указать 0 для отключения опции)
Пример:
76561198141889254|SurvivorM_Oliver|1|12955.091797 16.115206 7993.588379
76561198141889256|SurvivorM_Oliver|1;2|14791.965820 76.481781 14041.661133;12029.079102 196.356125 7274.689941
76561198141889253|SurvivorM_Oliver|0|0
4. В файле Sets.c в папке: {папка с вашим сервером}mpmissionsdayzOffline.chernarusplusCustomSpawnPlayerConfig
настроить стартовый лут для ваших игроков и написать собственные сеты
ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше)
Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет!
P.S. Прикрепить к соспавненному оружию магазин не получится, рабочего кода я не смог найти!!
Если у вас папка активной миссии сервера отличается от dayzOffline.chernarusplus то переименуйте ее в строке, вписываемой в:
{папка с вашим сервером}mpmissionsdayzOffline.chernarusplusinit.c
{папка с вашим сервером}mpmissionsdayzOffline.chernarusplusCustomSpawnPlayerConfiginit_mod.c
*/
class CustomSpawnPlayerConfig
{
private string Location_Directory_config = «$profile:»; // Расположение папки с конфигом скрипта
private string Location_filename_config = «CustomSpawnPlayerConfig.txt»; // имя файла с конфигом скрипта
private string default_log_block_name = «[CustomSpawnPlayerConfig] «; // Стандартный блок скрипта для идентификации с script.log
private string disable_read_parameter = «0»; // Стандартное значение (без кавычек) для обозначения в файле конфига скрипта неиспользование параметра
private string block_split_parameters_config = «|»; // Символ, обозначающий разделение параметров при чтении файла конфига
private string block_split_multi_parameters_config = «;»; // Символ, обозначающий перечисление в одной ячейке параметра нескольких параметров при чтении файла конфига
private bool enabled_loading_custom_spawnpoints = true; // Параметр, включающий и отключающий возможность использования приватной точки спавна для каждого игрока. В случае отключения кастомная точка спавна будет отключена для всех поумолчанию, вне зависимости от данных в конфиге!
private bool enabled_loading_custom_sets = true; // Параметр, включающий и отключающий возможность использования приватного сета для каждого игроков. В случае отключения выдача сетов будет отключена для всех поумолчанию, вне зависимости от данных в конфиге, будет выдаваться только сет для всех игроков!
private bool enabled_loading_custom_skins = true; // Параметр, включающий и отключающий возможность использования индивидуального стартового скина игрока для каждого игрока. В случае отключения эта возможность будет отключена для всех поумолчанию, вне зависимости от данных в конфиге!
// ————————————————————
// —————- NEXT CODE DON’T EDIT ——————
// ————————————————————
ref map<string, ref array<vector>> players_spawnpoints = new map<string, ref array<vector> >;
ref map<string, ref array<int>> players_sets = new map<string, ref array<int> >;
ref map<string, string> players_skins = new map<string, string>;
private bool enabled_loaded_successfull_config = false;
string Log_CustomSpawnPlayerConfig_GetDateTime()
{
private int year, month, day, hour, minute, second;
GetYearMonthDay(year, month, day);
GetHourMinuteSecond(hour, minute, second);
string returned_message = «[» + day.ToStringLen(2) + «.» + month.ToStringLen(2) + «.» + year.ToStringLen(2) + » — » + hour.ToStringLen(2) + «.» + minute.ToStringLen(2) + «.» + second.ToStringLen(2) + «] «;
return returned_message;
}
bool Check_coords_disable(vector coord)
{
private bool ret_zn = false;
private float pos_x = coord[0];
private float pos_y = coord[1];
private float pos_z = coord[2];
if ((pos_x == 0.0) & (pos_y == 0.0) & (pos_z == 0.0))
{
ret_zn = true;
}
return ret_zn;
}
vector Set_Read_coords_disable()
{
return Vector(0.0, 0.0, 0.0);
}
void CustomSpawnPlayerConfig()
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + «CustomSpawnPlayerConfig initialize start!»);
Read_Update_Config();
}
void ~CustomSpawnPlayerConfig()
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + «CustomSpawnPlayerConfig work end, class closed!»);
}
void Read_Update_Config()
{
private string name_block_work = «[ReadAndUpdateSettings] «;
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + » Started Reading config!»);
private array<string> readed_lines_config = ReadFileConfig();
private bool check_normal_read = AnaliseFileConfig(readed_lines_config);
if (check_normal_read)
{
LoadFileConfig(readed_lines_config);
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «config readed successfull!»);
enabled_loaded_successfull_config = true;
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «config read failed, work script disabled for players!»);
enabled_loaded_successfull_config = false;
}
}
array<string> ReadFileConfig()
{
private string name_block_work = «[ReadFileConfig] «;
private array<string> readed_lines_config = new array<string>;
readed_lines_config.Clear();
if (FileExist ( (Location_Directory_config + Location_filename_config) ) )
{
private string line_content;
FileHandle file = OpenFile((Location_Directory_config + Location_filename_config), FileMode.READ);
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Open file config: » + (Location_Directory_config + Location_filename_config));
if (file != 0)
{
while ( FGets( file, line_content ) > 0 )
{
readed_lines_config.Insert( line_content);
}
CloseFile(file);
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «ERROR!!! CAN’T OPEN FILE CONFIG : » + (Location_Directory_config + Location_filename_config));
}
//readed_lines_config.Debug();
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «ERROR!!! CAN’T FOUND FILE CONFIG OR DIRECTORY: » + (Location_Directory_config + Location_filename_config));
}
return readed_lines_config;
}
bool AnaliseFileConfig(array<string> readed_lines_config)
{
private bool return_zn = true;
private string name_block_work = «[AnaliseFileConfig] «;
if (readed_lines_config.Count() > 0)
{
foreach (string line : readed_lines_config)
{
if (line.Contains(block_split_parameters_config))
{
private array<string> splited_line = new array<string>;
line.Split( block_split_parameters_config, splited_line );
if (splited_line.Count() == 4)
{
private string UID_player = splited_line.Get(0);
private string default_skin_player = splited_line.Get(1);
private string sets_numbers_player = splited_line.Get(2);
private string points_spawn_player = splited_line.Get(3);
if ((UID_player == «») || (default_skin_player == «») || (sets_numbers_player == «») || (points_spawn_player == «»))
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «ERROR!!! Lines in Readed file is not correct, please, fix your config script!»);
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Line checking: » + line);
return_zn = false;
break;
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «ERROR!!! Readed file is have incorrect count parameters with a tag ‘» + block_split_parameters_config + «‘, please, fix your config script!»);
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Line checking: » + line);
return_zn = false;
break;
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «ERROR!!! Readed file can’t have a tag ‘» + block_split_parameters_config + «‘, please, fix your config script!»);
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Line checking: » + line);
return_zn = false;
break;
}
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «ERROR!!! Config file is empty, fix your config script!»);
return_zn = false;
}
return return_zn;
}
void LoadFileConfig(array<string> readed_lines_config)
{
private string name_block_work = «[LoadFileConfig] «;
players_spawnpoints.Clear();
players_sets.Clear();
players_skins.Clear();
foreach (string line : readed_lines_config)
{
private array<string> splited_line = new array<string>; splited_line.Clear();
line.Split( block_split_parameters_config, splited_line );
private string UID_player = splited_line.Get(0);
private string default_skin_player = splited_line.Get(1);
private string sets_numbers_player = splited_line.Get(2);
private string points_spawn_player = splited_line.Get(3);
private array<vector> temp_players_spawnpoints = new array<vector>; temp_players_spawnpoints.Clear();
array<int> temp_players_sets = new array<int>; temp_players_sets.Clear();
array<string> temp_players_spawnpoints_string = new array<string>; temp_players_spawnpoints_string.Clear();
array<string> temp_players_sets_string = new array<string>; temp_players_sets_string.Clear();
if (points_spawn_player.Contains(block_split_multi_parameters_config))
{
points_spawn_player.Split( block_split_multi_parameters_config, temp_players_spawnpoints_string );
} else
{
temp_players_spawnpoints_string.Insert(points_spawn_player);
}
foreach (string line_spawnpoint : temp_players_spawnpoints_string)
{
if (line_spawnpoint == disable_read_parameter)
{
temp_players_spawnpoints.Insert(Set_Read_coords_disable());
} else
{
temp_players_spawnpoints.Insert(line_spawnpoint.ToVector());
}
}
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Generated massive for » + UID_player + » with » + temp_players_spawnpoints.Count().ToString() + » spawnpoints.»);
if (sets_numbers_player.Contains(block_split_multi_parameters_config))
{
sets_numbers_player.Split( block_split_multi_parameters_config, temp_players_sets_string );
} else
{
temp_players_sets_string.Insert(sets_numbers_player);
}
foreach (string line_set : temp_players_sets_string)
{
if (line_set == disable_read_parameter)
{
temp_players_sets.Insert(0);
} else
{
temp_players_sets.Insert(line_set.ToInt());
}
}
if (default_skin_player == disable_read_parameter)
{
default_skin_player = «0»;
}
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Generated massive for » + UID_player + » with » + temp_players_sets.Count().ToString() + » sets.»);
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Detected for » + UID_player + » skin » + default_skin_player);
players_spawnpoints.Insert(UID_player,temp_players_spawnpoints);
players_sets.Insert(UID_player,temp_players_sets);
players_skins.Insert(UID_player,default_skin_player);
}
}
vector Load_And_Check_Spawnpoints(PlayerIdentity identity, vector pos_default)
{
private string name_block_work = «[Load_And_Check_Spawnpoints] «;
private vector retun_pos = pos_default;
if(identity)
{
private string Name_P = identity.GetName();
private string UID_P = identity.GetPlainId();
private string Game_UID_P = identity.GetId();
private string Game_ID_P = identity.GetPlayerId().ToString();
if (enabled_loading_custom_spawnpoints)
{
if ((players_spawnpoints.Count() > 0) && (enabled_loaded_successfull_config))
{
if (players_spawnpoints.Contains(UID_P))
{
private array<vector> readed_lines_config = new array<vector>;
readed_lines_config = players_spawnpoints.Get(UID_P);
private vector retun_pos_check = readed_lines_config.GetRandomElement();
if (Check_coords_disable(retun_pos_check))
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) disabled loading private spawn point. Will be used default spawn point!»);
} else
{
retun_pos = retun_pos_check;
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) setuped private spawn point: » + retun_pos.ToString());
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Can’t founded private spawnpoint for player » + Name_P + «(steam64id=» + UID_P + «)»);
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Config script is incorrect, checking private spawnpoints is disabled! Player: » + Name_P + «(steam64id=» + UID_P + «)»);
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «disabled loading personal spawnpoints from config file script!»);
}
}
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) will be used spawn point: » + retun_pos.ToString());
return retun_pos;
}
string Load_And_Check_SpawnSkin_Player(PlayerIdentity identity, string characterName)
{
private string name_block_work = «[SelectStartSkinPlayer] «;
private string retun_skin = characterName;
if(identity)
{
private string Name_P = identity.GetName();
private string UID_P = identity.GetPlainId();
private string Game_UID_P = identity.GetId();
private string Game_ID_P = identity.GetPlayerId().ToString();
if (enabled_loading_custom_skins)
{
if (players_skins.Count() > 0)
{
if (players_skins.Contains(UID_P))
{
private string readed_skin = players_skins.Get(UID_P);
if (readed_skin == «0»)
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) disabled loading private skin setting, will be used default setting game!»);
} else
{
retun_skin = readed_skin;
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) setuped private skin setting: » + retun_skin);
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Can’t founded private skin setting for player » + Name_P + «(steam64id=» + UID_P + «)»);
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Config script is incorrect, checking private skin setting is disabled! Player: » + Name_P + «(steam64id=» + UID_P + «)»);
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «disabled loading personal skin player settings from config file script!»);
}
}
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) will be used skin: » + retun_skin);
return retun_skin;
}
void Load_And_Check_StartLoadout(PlayerBase player)
{
private string name_block_work = «[SelectStartSetPlayer] «;
private int use_set_id = -1;
private PlayerIdentity identity = player.GetIdentity();
if(identity)
{
private string Name_P = identity.GetName();
private string UID_P = identity.GetPlainId();
private string Game_UID_P = identity.GetId();
private string Game_ID_P = identity.GetPlayerId().ToString();
if (enabled_loading_custom_sets)
{
if ((players_sets.Count() > 0) && (enabled_loaded_successfull_config))
{
if (players_sets.Contains(UID_P))
{
private array<int> readed_lines_config = new array<int>; readed_lines_config.Clear();
readed_lines_config = players_sets.Get(UID_P);
private int chek_use_set_id = readed_lines_config.GetRandomElement();
if (chek_use_set_id == 0)
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) disabled loading private set numbers. Will be used default set player! «);
} else
{
use_set_id = chek_use_set_id;
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) setuped private set number is: » + use_set_id.ToString());
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Can’t founded private sets for player » + Name_P + «(steam64id=» + UID_P + «)»);
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «Config script is incorrect, checking private sets is disabled! Player: » + Name_P + «(steam64id=» + UID_P + «)»);
}
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «disabled loading personal loadout sets player settings from config file script! Will be used default loadout!»);
}
if (use_set_id >= 0)
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) will be used spawn set with number is: » + use_set_id.ToString());
} else
{
Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + «For player » + Name_P + «(steam64id=» + UID_P + «) will be used spawn default start set without number. «);
}
StartSetsPlayers.StartSetsPlayer(player, use_set_id);
}
}
private array<EntityAI> GetItemListinobject(PlayerBase player,EntityAI item, bool check_player)
{
array<EntityAI> EntityAI_list_items = new array<EntityAI>; EntityAI_list_items.Clear();
int attIdx = 0; int attCount = 0; EntityAI item_in_object;
if ((player) && (check_player))
{
attCount = player.GetInventory().AttachmentCount();
for (attIdx = 0; attIdx < attCount; attIdx++)
{
item_in_object = player.GetInventory().GetAttachmentFromIndex(attIdx);
if ( item_in_object.IsItemBase() )
{
EntityAI_list_items.Insert(item_in_object);
}
}
}
if ((item) && !check_player)
{
attCount = item.GetInventory().AttachmentCount();
for (attIdx = 0; attIdx < attCount; attIdx++)
{
item_in_object = item.GetInventory().GetAttachmentFromIndex(attIdx);
if ( item_in_object.IsItemBase() )
{
EntityAI_list_items.Insert(item_in_object);
}
}
}
return EntityAI_list_items;
}
void RemoveAllItems (PlayerBase player)
{
private array<EntityAI> ItemListPlayer = new array<EntityAI>;
private array<EntityAI> ItemsForDelete = new array<EntityAI>;
private EntityAI itemInHands_player = player.GetHumanInventory().GetEntityInHands();
if (itemInHands_player != NULL)
{
if (player.CanDropEntity(itemInHands_player) && player.GetHumanInventory().CanRemoveEntityInHands())
{
// Print(«ItemForDelete: » + itemInHands_player.ToString());
ItemsForDelete.Insert(itemInHands_player);
}
}
ItemListPlayer = GetItemListinobject(player,NULL,true);
if (ItemListPlayer.Count() > 0)
{
foreach(EntityAI ItemPlayer: ItemListPlayer)
{
private array<EntityAI> ItemInItemInInventory = GetItemListinobject(NULL,ItemPlayer,false);
private CargoBase cargo = ItemPlayer.GetInventory().GetCargo();
if(cargo)
{
if (cargo.GetItemCount() > 0)
{
for (int f = 0; f < cargo.GetItemCount(); f++)
{
if(cargo.GetItem(f))
{
ItemsForDelete.Insert(cargo.GetItem(f));
}
}
}
}
if (ItemInItemInInventory.Count() > 0)
{
foreach(EntityAI items_temp: ItemInItemInInventory)
{
if(items_temp)
{
ItemsForDelete.Insert(items_temp);
}
}
}
if(ItemPlayer)
{
ItemsForDelete.Insert(ItemPlayer);
}
}
}
if (ItemsForDelete.Count() > 0)
{
foreach(EntityAI item_temp: ItemsForDelete)
{
if(item_temp)
{
GetGame().ObjectDelete(item_temp);
}
}
}
}
};
Sets.c
class StartSetsPlayersConfig
{
void StartSetsPlayer(PlayerBase player,int use_set_id)
{
EntityAI itemCreated = NULL;
EntityAI itemCreated1 = NULL;
ItemBase itemCasted = NULL;
switch( use_set_id ) //Раздаем лут (можно использовать значения от 1 и выше, только не 0 и не -1)
{
case 1: //Set with number 1 (Сет с номером 1)
{
My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку
itemCreated = player.GetInventory().CreateInInventory(«CoyoteBag_Green»); // Выдаем рюкзак и записываем в переменную itemCreated
if (itemCreated) // Проверяем, создался ли рюкзак. Если он создался, переменная itemCreated будет не пуста и проверка пройдет
{
SetRandomHealthItem(itemCreated); // Выдаем рюкзаку рандомное качество
itemCreated1 = itemCreated.GetInventory().CreateInInventory(«Apple»); // Добавляем в инвентарь созданного рюкзака яблоко и записываем в переменную itemCreated1
if (itemCreated1) // Проверяем, создалось ли яблоко в рюкзаке, яблоко у нас с переменной itemCreated1
{
SetRandomHealthItem(itemCreated1); // Выдаем яблоку рандомное качество
}
itemCreated1 = NULL; // Обнуляем значение переменной после работы с ней, чтобы следующая проверка прошла корректно
itemCreated1 = itemCreated.GetInventory().CreateInInventory(«Rag»); // Выдаем игроку бинты в рюкзак и записываем в переменную itemCreated1
if (itemCreated1) // Проверяем, создались ли бинты в рюкзаке, они у нас с переменной itemCreated1
{
itemCasted = ItemBase.Cast(itemCreated1); // Выполняем преобразование в другой класс для работы с нужной нам функцией, поскольку в классе EntityAI нет нужной нам функции SetQuantity, а в подклассе ItemBase она есть. Предмет при этом так и остается один и тот же!
itemCasted.SetQuantity(4); // Определяем количество для созданных бинтов как 4 штуки
SetRandomHealthItem(itemCreated); // Выдаем бинтам рандомное качество, функция работает с классом EntityAI (см. в конфе файла)
}
}
// переменную itemCreated не обнуляем далее, поскольку мы ее не используем в проверке ниже.
itemCreated = player.GetInventory().CreateInInventory(«TTSKOPants»); // Выдаем игроку штаны
itemCreated = player.GetInventory().CreateInInventory(«TTsKOJacket_Camo»); // Выдаем игроку куртку
itemCreated = player.GetInventory().CreateInInventory(«CombatBoots_Black»); // Выдаем игроку обувь
//itemCasted = ItemBase.Cast(itemCreated); // Строка не нужна, закоментирована. используется для изменения класса EntityAI в ItemBase (чтобы нужные операции были доступны)
itemCreated = player.GetInventory().CreateInInventory(«CombatKnife»); // Выдаем игроку ножик в любой свободный слот в инвентаре
itemCreated = player.GetInventory().CreateInInventory(«FNX45»); // Выдаем игроку FNX в любой свободный слот в инвентаре
itemCreated = player.GetInventory().CreateInInventory(«Mag_FNX45_15Rnd»); // Выдаем игроку магазины к FNX в любой свободный слот в инвентаре
itemCreated = player.GetInventory().CreateInInventory(«Mag_FNX45_15Rnd»); // Выдаем игроку магазины к FNX в любой свободный слот в инвентаре
itemCreated = player.GetInventory().CreateInInventory(«Mag_AKM_30Rnd»); // Выдаем игроку магазины к AKM в любой свободный слот в инвентаре
itemCreated = player.GetInventory().CreateInInventory(«Mag_AKM_30Rnd»); // Выдаем игроку магазины к AKM в любой свободный слот в инвентаре
itemCreated = NULL; // Обнуляем значение переменной после работы с ней, нужно если мы будем использовать ее далее
itemCreated = player.GetHumanInventory().CreateInHands(«akm»); // Выдаем игроку AKM в руки
if (itemCreated) // Проверяем, создался ли АКМ
{
itemCreated.GetInventory().CreateAttachment( «PSO11Optic» ); // Выдаем игроку на AKM оптику ПСО 11 и крепим
itemCreated.GetInventory().CreateAttachment( «AK_WoodBttstck» ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим
itemCreated.GetInventory().CreateAttachment( «AK_WoodHndgrd» ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим
itemCreated.GetInventory().CreateAttachment( «AK_Suppressor» ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим
}
break;
}
case 2: //Set with number 2 (Сет с номером 2)
{
break;
}
case 3: //Set with number 3 (Сет с номером 3)
{
break;
}
case 4: //Set with number 4 (Сет с номером 4)
{
break;
}
case 5: //Set with number 5 (Сет с номером 5)
{
break;
}
case 6: //Set with number 6 (Сет с номером 6)
{
break;
}
default: //Default starting spawn set (Сет поумолчанию для всех игроков, если хотите назначить — добавляйте здесь!)
{
//My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку
DefaultSets(player); // Для выдачи своих сетов по рандому всем игрокам, не прописанным в скрипте, раскомментировать эту строку
break;
}
}
}
void SetRandomHealthItem(EntityAI itemCreated) // Функция генерирует и применяет для предмета рандомное значение здоровья!
{
if ( itemCreated )
{
private int rndHlt = Math.RandomInt(55,6);
itemCreated.SetHealth(«»,»»,rndHlt);
}
}
void DefaultSets(PlayerBase player) // Функция выдает сеты игрокам, не прописанным в конфигурации скрипта!!!
{
EntityAI itemCreated = NULL;
EntityAI itemCreated1 = NULL;
ItemBase itemCasted = NULL;
// ниже пример, если вам нужно задать свои точки спавна для всех игроков. Этот код можно также использовать и для каждого сета индивидуально!
// Код закомментирован, если это надо — раскомментируйте!
// начало кода точек спавна игрока
/*
private array <vector> spawnpoints = {«7500 0 7500»,
«7500 0 7500″,»7500 0 7500»,
«7500 0 7500»};
private vector selected_spawnpoint = spawnpoints.GetRandomElement();
player.SetPosition(selected_spawnpoint);
*/
// конец кода точек спавна игрока
private int random_set_number = Math.RandomIntInclusive(1,6); // генерируем рандом номер сета от 1 до 6 включительно (по значениям блоков case ниже)
switch( random_set_number ) //Раздаем лут (можно использовать значения от 1 и выше, только не 0 и не -1)
{
case 1: //Set with number 1 (Сет с номером 1)
{
break;
}
case 2: //Set with number 2 (Сет с номером 2)
{
break;
}
case 3: //Set with number 3 (Сет с номером 3)
{
break;
}
case 4: //Set with number 4 (Сет с номером 4)
{
break;
}
case 5: //Set with number 5 (Сет с номером 5)
{
break;
}
case 6: //Set with number 6 (Сет с номером 6)
{
break;
}
default: //Default starting spawn set (Сет поумолчанию для всех игроков, в случае если ни один из сетов выше не выпал.
{
//My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку
break;
}
}
}
}
init_mod.c
#include «$CurrentDir:mpmissionsdayzOffline.chernarusplusCustomSpawnPlayerConfigScript.c»
#include «$CurrentDir:mpmissionsdayzOffline.chernarusplusCustomSpawnPlayerConfigSets.c»
ref CustomSpawnPlayerConfig My_Custom_Spawn_Parameters = new CustomSpawnPlayerConfig();
ref StartSetsPlayersConfig StartSetsPlayers = new StartSetsPlayersConfig();
modded class CustomMission
{
override void OnInit ()
{
super.OnInit();
GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(My_Custom_Spawn_Parameters.Read_Update_Config, 120000, true); // Обновление настроек скрипта кастомных спавнов, 1 минута = 60000
}
override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
{
pos = My_Custom_Spawn_Parameters.Load_And_Check_Spawnpoints(identity, pos);
characterName = My_Custom_Spawn_Parameters.Load_And_Check_SpawnSkin_Player(identity, characterName);
super.CreateCharacter(identity, pos, ctx, characterName);
return m_player;
}
override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
{
super.StartingEquipSetup(player, clothesChosen);
My_Custom_Spawn_Parameters.Load_And_Check_StartLoadout(player);
}
}
2. В файле:
{папка с вашим сервером}mpmissionsdayzOffline.chernarusplusinit.c
в самом верху файла добавить:
#include «$CurrentDir:mpmissionsdayzOffline.chernarusplusCustomSpawnPlayerConfiginit_mod.c»
Чтобы получилось примерно так
3. В папке, обозначенной параметром запуска сервера ‘-profile=’, поместить файл с именем CustomSpawnPlayerConfig.txt
и заполнить его данными по следующему формату:
UID|Skin_player|sets_numbers|points_spawns
где UID — это steam64id от профиля игрока в steam
Skin_player — точный id скина игрока (можно указать 0 для отключения опции)
sets_numbers — номер сета со стартовым лутом (можно указать несколько через ‘;’, указать один всего, либо указать 0 для отключения опции)
points_spawns — координаты спавна игрока на карте в формате ‘x y z’ (можно указать несколько через ‘;’, указать всего одну точку, либо указать 0 для отключения опции)
Пример:
Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
76561198141889254|SurvivorM_Oliver|1|12955.091797 16.115206 7993.588379
76561198141889256|SurvivorM_Oliver|1;2|14791.965820 76.481781 14041.661133;12029.079102 196.356125 7274.689941
76561198141889253|SurvivorM_Oliver|0|0
4. В файле Sets.c в папке:
{папка с вашим сервером}mpmissionsdayzOffline.chernarusplusCustomSpawnPlayerConfig
настроить стартовый лут для ваших игроков и написать собственные сеты
ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше)
Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет!
Поумолчанию в функции default вызывается функция DefaultSets, позволяющая рандомно выбирать любой из сетов для игроков, которым сет не задан в конфигурации скрипта. Принцип составления сетов такой же, как и выше. Если будете пользоваться этим, обратите вниманием на строку:
private int random_set_number = Math.RandomIntInclusive(1,6);
Эта функция генерирует число от 1 до 6 включительно. Соответственно если сетов будет больше 6, то число надо корректировать и тут тоже!
P.S. Прикрепить к соспавненному оружию магазин не получится, рабочего кода я не смог найти!!
Если у вас папка активной миссии сервера отличается от dayzOffline.chernarusplus то переименуйте ее в строке, вписываемой в:
{папка с вашим сервером}mpmissionsdayzOffline.chernarusplusinit.c
{папка с вашим сервером}mpmissionsdayzOffline.chernarusplusCustomSpawnPlayerConfiginit_mod.c
Благодарности: Товарищу Mizev за его первоначальные гайды в группе VK при появлении в сети серверной части игры
О ПРОЕКТЕ DAYZ-CODE.RU
Основным направлением нашего проекта является создание серверов DayZ Standalone и все что связано с направлением серверостроения DayZ. На нашем сайте вы сможете найти множество гайдов по установке различных дополнений и скриптов для DayZ Standalone, дополнительный софт для администраторов, античиты и различные программы для упрощения работы с сервером и модами, дополнения для различных карт DayZ Standalone, а так же всегда сможете задать интересующий вас вопрос в разделе помощи по серверам. Наша площадка открывает большие возможности для развития и создания вашего собственного проекта!
БУДУЩЕЕ ПРОЕКТА DAYZ-CODE.RU
Наш проект имеет огромные амбиции и большой потенциал, а команда портала делает всё что-бы помочь нашим будущим администраторам по любым вопросам касающиеся серверостроения и других аспектов администрирования, своего собственного проекта. Наш проект пытается максимально развиваться и не топтаться на одном месте. Именно такой настрой, а так же дружелюбный коллектив пользователей форума и нашей команды администраторов проекта DAYZ-CODE является первым шагом и крепким фундаментом к дальнейшей работе и развитию.
Introduction
Tired of manually typing the commands and logging into BERCon each time?
Tired of other tools being overloaded with features?
Just want a universal remote control for your server?
Then you maybe found the right tool here.
You need the .NET Framework in order for this to work, you can grab it here: http://www.microsoft…s.aspx?id=17851
What is it?
DaRT is a really lightweight RCon tool designed especially for usage with DayZ.
The goal is to give admins more control over their server via RCon.
The current apps out their are either complicated or don’t include every feature you need.
This is why I decided to make my own.
Donations
Donations are optional.
I am always happy if someone is using an application I made.
If you donate you can include your server ip(s) in the comments and they will be whitelisted for DaRTBans.
I will explain later what this means.
Download
Current version: v2.1
Download: http://forum.swisscr…u/DaRT/DaRT.zip
virustotal (File): https://www.virustot…sis/1344710331/
virustotal (Domain): https://www.virustot…sis/1344710328/
Download the DaRT Ban Relay Server (BRS)
Current version: v1.0
Download: http://forum.swisscr…eu/DaRT/BRS.zip
virustotal (File): https://www.virustot…sis/1372174138/
Features
Here is what it does:
* Connecting to your server via RCon
* Showing you server console (including chat and join/leave messages)
* Showing you player list
* Showing you ban list
* See what country players come from
* Auto refresh
* Creating a local player database
* Kicking, GUID Banning, IP Banning, Offline Banning with just 2 clicks
* Writing in global chat
* Using console (incase you still want to enter commands)
* Talking to players
* Copy player informations
* Search through players
* Reload scripts (server-side)
* GameTracker integration
* And more
Here is what it doesn’t do, and will never do:
* Analyzing log files
* Making any sort of FTP connection
* Log rotation
* Heart beat
* Replacing tools like BEC
Changelog
v2.1
[NEW] Re-added option to ban IP & GUID at the same time
[FIX] Numerous crash fixes
[FIX] Numerous bug fixes
v2.0
[NEW] Complete rewrite of player/ban request
[NEW] Geolocating is now done locally (fixes flags!)
[NEW] Updated BattleNET version
[NEW] Changed to Mono.Data.Sqlite for database access (Linux compatible)
[NEW] Database format changed (DaRT will automatically migrate your data)
[NEW] Colors can now be enabled/disabled for chat/filters in all tab
[NEW] Changed settings layout (now featuring tabs)
[NEW] Domains are now supported when connecting
[NEW] Added credits to settings
[NEW] You can now use your name for admin calls too
[NEW] You can now set the player/ban request ticks (less = faster requests, higher chance for timeout; higher = slower request, higher chance of success on slow servers)
[NEW] Split flash window and highlight admin calls setting
[NEW] Split player connect setting and show connect messages
[NEW] Removed reconnect checkbox (will now automatically reconnect)
[NEW] General code cleanup
[NEW] Slightly resized main window to prevent graphical glitches
[NEW] Minimal width of window is now smaller to fit common server resolutions
[NEW] Added option to show debug messages (makes finding uncommon problems easier)
[NEW] Maximal input length of messages/commands is now 400 characters
[NEW] Made character limit visible with counter
[NEW] Made all colors slightly darker to increase readability
[NEW] Added command chat as own chat type
[NEW] Log queue instead of disabling auto scroll
[NEW] DaRTBans was removed in order to maintain support for ArmA 3
[NEW] Tooltips for settings
[NEW] Added option to clear expired bans
[NEW] Added a log buffer (This can be used in later versions to show a history for certain users, not used atm)
[NEW] All filters can now be modified via the settings
[NEW] You can now set custom filters in the settings to do client side filtering of all the script/event logs that come in
[FIX] Deadlock on connect
[FIX] Reconnect is now properly working
[FIX] Poor database performance
[FIX] Crash on connect
[FIX] Crash on refresh
[FIX] Duplicate messages
[FIX] Auto refresh getting stuck
[FIX] Fixed issue that caused packet ids to be assigned multiple times resulting in timeouts
[FIX] Multiple threading issues causing disconnects
[FIX] Automatic refreshes on player join/leave won’t disable timed refreshes anymore
[FIX] Sometimes logging in twice
[FIX] Disconnect issue on fast player join (server desync)
[FIX] Auto refresh counter now properly updates all the time
[FIX] Sped up message filtering to prevent desyncing and disconnects
[FIX] Delayed refresh on join to prevent GUID from not being logged (was triggered too early for GUID to load)
[FIX] Refresh on join/leave will now also triger for kicks
[FIX] User-agent being shown incorrectly because of encoding
[FIX] Removed unecessary threads
[FIX] Removed «brute-force» requests with a more elegant approach
[FIX] Disconnect when using global chat for long messages
[FIX] Disconnect when sending messages too fast
[FIX] DaRT not logging to file properly
[FIX] Fixed auto scroll not working (now replaced with queue)
[FIX] Auto refresh on player join not working when disabling join messages
[FIX] Settings will not be applied anymore if settings window is just closed
Note: There is still a limit on how many bans you can receive via BattlEye RCon.
The Ban Relay Server (BRS) is still the recommended way of requesting bans in a reliable way!
Older versions:
v1.2 (Unreleased)
[FIX] Code cleanup
[FIX] Ordering ban list is possible again
[FIX] No more crash on fast tab switching
[FIX] No more empty lists
[NEW] Source code release
Note: v1.2 will be the final update and the changelog is subject to change.v1.1 (Community update) (Unreleased)
[NEW] Colored chat in all tab (DONE)
[NEW] Ban verification
[NEW] Use Arrow up to get last sent messages in console (similar to Windows cmd)
[NEW] Pressing enter in chat will now send command
[NEW] Keyboard shortcuts for smoother usage
[NEW] Backup will now be stored secure if anything goes wrong during sync
[NEW] Setting to choose if GUID with different names should be logged multiple times
[NEW] Save/Load column order of each list
[NEW] Save/Load column size of each list
[NEW] Save/Load console split height again
[NEW] Ability to choose ban duration in minutes, hours and days
[NEW] Sync player database with global server
[NEW] Support for connection to domains instead of IP (DONE)
[NEW] Execute application on admin call
[NEW] Themes (maybe)
[FIX] Corrected name length
[FIX] Useragent (DONE)v1.0.1
[FIX] Crash on startupv1.0
[NEW] Possibility to set name to identify ingame, default is DaRT
[NEW] Autoconnect on startup
[NEW] Recoded player request (faster, lighter, more reliable)
[NEW] Recoded ban request (faster, lighter, more reliable)
[NEW] Recoded admin request (faster, lighter, more reliable)
[NEW] DaRT Ban Relay Server for reliable ban list access
[NEW] DaRT will not display admins with the same IP anymore
[NEW] Moved connect process to a new thread
[NEW] Auto refresh has no more impact on manual refreshes (Do not spam message removed)
[NEW] DaRT is now able to only refresh when new players join/leave
[NEW] Modified report window a little bit
[NEW] Quick ban
[NEW] Ability to add comments per GUID
[NEW] A few changes to settings GUI
[FIX] Removed connect messages when already connected
[FIX] Fixed a bug where BattlEye was unable to respond with ban list on connect
[FIX] Disconnect issues
[FIX] General performance improvements
[FIX] Fixed typo in SQL query
[FIX] Crash when switching between tabs too fast
Known bugs:
* Another crash issue when switching between tabs too fast
* List will sometimes be empty, just refresh againv0.9.2
[NEW] Font picker
[FIX] DaRT randomly disconnecting
[FIX] DaRT not being able to establish connection
[FIX] Messages being sent multiple times
[FIX] Readded ability to execute commands with less then 4 characters
[FIX] Reconnect loopv0.9.1
[NEW] Option to manually ban multiple GUIDs at once
[NEW] Global messages need to have atleast 4 symbols now
[NEW] Updated BattleNET (Thanks to Sawyer!)
[NEW] DaRT will notify you in the taskbar if someone is calling an admin ingame
[NEW] Error message when player leaves during ban dialog
[FIX] Fixed ban reason being cut off
[FIX] Crash on ban list request
[FIX] Slow ban list loading
[FIX] Corrected color of side chat
[FIX] Corrected color of group chat
[FIX] Fixed a crash related to news request
[FIX] Fixed formatting in new crash reports
[FIX] Error when banning offline players
[FIX] Fix for cyrillic symbols
[FIX] Disabled resizing of dialog windows
[FIX] Fixed console output being displayed 2 times
[FIX] Crash when in console mode without output
[FIX] Crash when IP contains spaces — will now automatically delete spaces
[FIX] Fixed crash when closing
[FIX] Fixed crash when clicking on the news
[FIX] Improved reliability of the ban list
Note: There are still problems with ban list requests when the ban list is too big. (Request timed out)
This is a confirmed problem with the BattlEye RCon protocol.v0.9
[NEW] DaRT can run scripts!
[NEW] Rewrote console mode
[NEW] Ability to remove entries from player database
[NEW] DaRT will now check for currently active ban list requests and prevent new ones
[NEW] Added a new timeout type
[NEW] Changed ban & player request algorithm to be more aggressive and effective
[NEW] Chat is now colored like ingame
[FIX] General code cleanup
[FIX] Fixed chat not being shown on chat tab
[FIX] Ban will now properly get removed after unbanning a player
[FIX] Ban list will now update properly after unbanning a player and count down the ban #
[FIX] Fixed log not resizing
[FIX] Hosts won’t get added multiple times to list anymore
[FIX] Fixed a bug in console mode
[FIX] Fixed a critical typo in player database causing DaRT to not save every playerv0.8.2
[NEW] Multiple log tabs are working now
[NEW] Increased speed and reliability of player list
[NEW] Increased speed and reliability of ban list
[NEW] Increased speed of player database drastically (Preparing for player sync)
[NEW] Sorting player database is temporary disabled
[NEW] Minor GUI changes
[NEW] Added auto scroll checkbox to main GUI
[NEW] Added pdb file so I can do some more debugging
[FIX] Fixed messages getting sent multiple times
[FIX] Timestamps will now properly show in 24h format
[FIX] Fixed crash regarding ban list (BattlEye update!)
[FIX] Auto scroll can now be properly disabled (This time for real) (Thanks to Assassin_UK1!)
[FIX] Fixed a bug where DaRT would not clean up old ban list when refreshing
[FIX] Fixed a crash when pressing F5 in player database while no connection is open
[FIX] Auto refresh state will now save properly when closing applicationv0.8.1
[NEW] Auto reconnect after server restart
[NEW] No more confirmation when sending message
[NEW] Console input will now suggest commands
[NEW] Temporary disabled splitter saving, will always default on restart
[NEW] First preparations for multi console support
[FIX] Search will properly reset
[FIX] Searching in ban list is possible again
[FIX] Added timeout for player list
[FIX] Added timeout for ban list
[FIX] DaRT won’t crash anymore when accessing console.log is not possible
[FIX] Crash on start
[FIX] Crashes when interacting with list while refreshing
[FIX] Clicking on disconnect will now properly reset progressbar
[FIX] Clicking on disconnect will now properly reset counters
[FIX] Ban list not loading (Thanks to Sawyer!)
[FIX] Ban list request crashing server (Wait for next BattlEye update!)
[FIX] Ban list request crashing DaRT
Note: There is still an issue with the ban list not being display properly.
This is a BattlEye issue and will be fixed in one of the future BattlEye updates.v0.8
[NEW] Increased speed of ban list drastically
[NEW] Increased speed of connection process
[NEW] Increased reliability of connection process
[NEW] Added a crash reporter so it makes it easy to send crash reports to me
[NEW] Log window is now resizable!
[NEW] Increased size of log window
[NEW] Log window will save chosen size
[FIX] DaRT will now save current host in mask when connecting, not when closing
[NEW] Include newest version of BattleNET
[FIX] DaRT crashing when closing
[FIX] DaRT now works properly when using a proxy
[NEW] No GUI mode now opens a console
[NEW] Added -close property to console mode to automatically close the console once done
[NEW] Updated BattleNET (should also fix russian input)
[FIX] DaRT won’t send logout on disconnect anymore
[FIX] No more empty lines in log
[NEW] Added progressbar for auto refresh
Note: Searching and sorting in ban list is not possible in this version.
Expect a hotfix.v0.7
[FIX] No more beep sound when pressing enter in search or input field
[NEW] Pressing escape in search or input field now wipes text
[NEW] Added search button
[NEW] Search won’t search after each letter anymore
[NEW] Auto refresh interval can now be set in settings
[NEW] Filter options for script restrictions messages
[NEW] Filter options for log errors
[NEW] DaRT can now start without GUI to complete simple tasks
[NEW] You can now copy Host:Port from the saved hosts
[FIX] No more errors when copying to clipboard on saved hosts dialog
[FIX] You can now properly refresh player database/ban list while auto refresh is enabled
[FIX] Refresh button is now enabled for player database in offline mode
[FIX] Fixed a crash when pressing Load while no host is selected
[NEW] You can now also filter global and side chat
[NEW] Option to not request player/ban list on connect
[NEW] Moved input textfield a little bit upv0.6.1
[FIX] Crash on startupv0.6
[FIX] Alot of serverside changes
[NEW] Player Database will now show server IP player was last seen on
[NEW] More changes to player database (DaRT will convert automatically)
[NEW] You can now copy all data via Copy -> All
[FIX] Log window now supports UTF-8 characters (ä, ü, russian, …) (Thanks to Sawyer and darkwoox!)
[FIX] Some people unable to connect due to timeout (Thanks to Sawyer!)
[FIX] Memory leak causing over 500MB being used by DaRT and eventually crashing it (Thanks to darkwoox!)
[FIX] Crash when copying while list is refreshing
[FIX] GameTracker banner now properly realigns on resize
[FIX] DaRT will now switch to Players tab on connect to prevent crashes
[FIX] Ban requests will now timeout instead of showing invalid data
[NEW] Geolocation is now using a new service provider
[NEW] Refresh messages are now disabled by default
[NEW] Location data is now cached to reduce traffic
[NEW] DaRT will now properly set a user agent so it can be identified
[FIX] Timestamps are now properly formatted to be actually useful
Note: Player sync didn’t make it into v0.6
Fix for disabling auto scroll didn’t make it either. Expect a hotfix.v0.5
[FIX] DaRT will now properly show the Initializing state
[FIX] Flags/country codes not matching
[NEW] Refresh scripts is now under «Execute…»
[NEW] Refresh bans is now under «Execute…»
[NEW] Refresh events is now under «Execute…»
[NEW] Shutdown is now under «Execute…»
[NEW] You can now lock the server under «Execute…»
[NEW] You can now unlock the server under «Execute…»
[NEW] You can now manually ban a GUID from DaRT under «Execute…»
[FIX] Removed milliseconds from player database timestamp
[FIX] DaRT won’t connect to ports where no RCon service is running anymore. (Thanks to Sawyer!)
[FIX] Console still scrolling even if auto scroll is disabled
[NEW] You can now maximize DaRT
[NEW] You can now scale DaRTv0.4
[NEW] You can now reorder the columns of the list
[NEW] The ban list is not affected by the auto refresh anymore
[NEW] You can now rightclick to clear the chatbox
[NEW] DaRT can now write a log file (enable in settings)
[NEW] Settings are now shown with a different layout
[NEW] Country code will now be shown beneath each flag
[FIX] Admins are now checked to prevent duplicate ips
[FIX] Admin counter showing 1 admin too much
[FIX] Fixed a crash when loading the player database
[NEW] New version of BattleNET (Thanks to Sawyer!)
[NEW] Removed ability to report players via Player Database
[FIX] Ban window will now properly close if not reporting
[NEW] DaRT is now able to display news messages, for new updates and news
[FIX] Icons on dialogs is now shown properly
[NEW] Will now show an confirmation before shutting down
[NEW] You are now able to sort lists by columnsv0.3
[NEW] Chat filter settings
[NEW] Improved ban dialog to make it more simple
[NEW] Option to enable/disable player database
[NEW] Option to enable/disable hosts database
[NEW] Option to enable/disable auto scrolling
[NEW] Option to enable/disable timestamps
[FIX] DaRT does not properly display ban list if too long
[NEW] Button to shutdown
[NEW] Button to reload bans
[NEW] Button to reload events
[NEW] Player and ban count are not shown in log anymore
[NEW] DaRT won’t refresh anymore when switching to a different tab
[FIX] DaRT sometimes crashes when another process is using the clipboard
[NEW] Loading hosts
[FIX] Added handler for bans without reason causing ban list to not be shown
[FIX] Added timeout to ban request
[FIX] GUI not being enabled after closing ban window
[FIX] Timestamp in player database showing milliseconds
[FIX] Some smaller bug fixes
Note: DaRT still sometimes fails to request the ban list, just request it again, it will work.
DaRT can’t copy host/port from load host window into clipboard.v0.2.6 (Hotfix)
[FIX] Fixed crash when requesting flags
[NEW] DaRT will save every host when clicking on connect
[NEW] Updated folder structure
Note: If you want to keep your player database move it from /data/players.db to /data/db/players.dbv0.2.5
[NEW] DaRT will now escape all the input and output from the database to prevent sql injections and crashes
[NEW] Increased security for DaRTBans to prepare for first public release
[NEW] DaRTBans will suggest you to register your server on GameTracker now
[NEW] Decreased border size
[FIX] Fixed crash when location of IP could not be determined (will now show a ?)v0.2.4
[NEW] Improved checks before connecting to a server
[FIX] Fixed a crash when closing the window while a worker thread is running (will now exit thread properly)v0.2.3
[FIX] Fixed a crash if invalid server information is entered
[FIX] Fixed a crash when BattlEye fails to respond
[FIX] Fixed a crash when BattlEye sends response twice (will now flag as invalid and request again)v0.2.2
[NEW] Added DaRTBans for testing
[REM] Removed debug consolev0.2.1
[NEW] Added multi threading to process user input fasterv0.2
[NEW] Added flags for each user based on ip address
[NEW] Integrated GameTracker
[NEW] New network configuration for faster requestsv0.1
[NEW] First release
Feedback
Feel free to post any feedback in this thread.
I will read it all.
Credits
DaRT is made by me, feel free to do with it whatever you like.
DaRT uses BattleNET by Vipeax and ziellos2k (Sawyer).
Beans go to both of them.
Edited October 11, 2015 by DomiStyle
-
#1
Dart 2.0 удобная программа для управления серверами DayZ Standalone (многие функции недоступны на публичных серверах)
Для чего нужен DART
Вот что он делает:
* Подключение к вашему серверу через RCon (протокол удалённого доступа)
* Показывает серверную консоль (включая сообщения чата и соединения / отключения)
* Отображение списка игроков
* Показывает список заблокированных
* Показывает страну игрока
* Автоматическое обновление
* Создание локальной базы данных игроков
* Кикнуть, Бан по GUID, Бан IP, Offline бан
* Писать в глобальный чат в реальном времени
* Использование консоли (если вы все еще хотите вводить команды)
* Написать определённому игроку
* Копирование информации об игроке
* Поиск игроков
* Перезагрузка скриптов (на стороне сервера)
* Интеграция GameTracker
* И тд
Скачайте программу DART (в самом низу архив) и разархивируйте скачанный архив, запустите Dart.exe
Введите данные от сервера, для подключения (где их взять смотрите тут)
После подключения, перед вами появится список игроков, нажав правой клавишей по игроку, вы можете кикнуть его, забанить, написать сообщение лично игроку, скопировать о нём данные
Рекомендую включить авто обновление (Auto Refresh) чтобы происходящее на сервере отображалось в реальном времени.
Так же вы можете установить, какие логи будут отображаться, нажмите Settings и Server Filters
-
DaRT (2).zip
2,4 MB
· Просмотры: 1.015
-
#2
Добрый день. Подскажите пожалуйста, пароль от сервера един для всех администраторов ? Добавил администратора, он скачал DaRT v2.1 при попытке подключения выдает следующую ошибку: ошибка запрошенное имя верно но данные запрошенного вида не найдены.
-
#3
Добрый день. Подскажите пожалуйста, пароль от сервера един для всех администраторов ? Добавил администратора, он скачал DaRT v2.1 при попытке подключения выдает следующую ошибку: ошибка запрошенное имя верно но данные запрошенного вида не найдены.
пароль и логин для удалённого подключения един, данные для подключения те, что находятся во вкладке Settings
Willkommen! Melden Sie sich an oder registrieren Sie sich.
Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.
Sie haben schon ein Benutzerkonto? Melden Sie sich hier an.
Jetzt anmelden
Hier können Sie ein neues Benutzerkonto erstellen.
Neues Benutzerkonto erstellen
Empfohlen
DaRT
2.2
-
Urs
-
26. September 2018 -
4,1k Downloads -
0 Kommentare
Ein Admin-Tool für DayZ Mod/Standalone Server
DaRT — A Lightweight DayZ RCon Tool
Features:
- Connecting to your server via RCon
- Showing you server console (including chat and join/leave messages)
- Showing you player list
- Showing you ban list
- See what country players come from
- Auto refresh
- Enables you to report players to DaRTBans (read more below)
- Creating a local player database
- Kicking, GUID Banning, IP Banning, Offline Banning with just 2 clicks
- Writing in global chat
- Using console (incase you still want to enter commands)
- Talking to players
- Copy player informations
- Search through players
- Reload scripts (server-side)
- GameTracker integration
- And more
- Standalone
- Server
- Mod
- Tool
-
Teilen
-
- New TAB in Settings Menu called «Announcers».
- Login/Logout feed announcement option. (This function can work for anyone, this does not require any special setup).
- Kill feed announcement option (using the new internal ADM file reader — NOTE: this requires running on the server or a LAN system with direct access to the file over the network).
- New Logo
- Removed banners (as they do not work when connecting inside LAN anyway)
- Removed link for DaRT 2.1
-
DART 2.1 Changelog:
- [NEW] Re-added option to ban IP & GUID at the same time
- [FIX] Numerous crash fixes
- [FIX] Numerous bug fixes
-
DART 2.0 Changelog:
- [NEW] Complete rewrite of player/ban request
- [NEW] Geolocating is now done locally (fixes flags!)
- [NEW] Updated BattleNET version
- [NEW] Changed to Mono.Data.Sqlite for database access (Linux compatible)
- [NEW] Database format changed (DaRT will automatically migrate your data)
- [NEW] Colors can now be enabled/disabled for chat/filters in all tab
- [NEW] Changed settings layout (now featuring tabs)
- [NEW] Domains are now supported when connecting
- [NEW] Added credits to settings
- [NEW] You can now use your name for admin calls too
- [NEW] You can now set the player/ban request ticks (less = faster requests, higher chance for timeout; higher = slower request, higher chance of success on slow servers)
- [NEW] Split flash window and highlight admin calls setting
- [NEW] Split player connect setting and show connect messages
- [NEW] Removed reconnect checkbox (will now automatically reconnect)
- [NEW] General code cleanup
- [NEW] Slightly resized main window to prevent graphical glitches
- [NEW] Minimal width of window is now smaller to fit common server resolutions
- [NEW] Added option to show debug messages (makes finding uncommon problems easier)
- [NEW] Maximal input length of messages/commands is now 400 characters
- [NEW] Made character limit visible with counter
- [NEW] Made all colors slightly darker to increase readability
- [NEW] Added command chat as own chat type
- [NEW] Log queue instead of disabling auto scroll
- [NEW] DaRTBans was removed in order to maintain support for ArmA 3
- [NEW] Tooltips for settings
- [NEW] Added option to clear expired bans
- [NEW] Added a log buffer (This can be used in later versions to show a history for certain users, not used atm)
- [NEW] All filters can now be modified via the settings
- [NEW] You can now set custom filters in the settings to do client side filtering of all the script/event logs that come in
- [FIX] Deadlock on connect
- [FIX] Reconnect is now properly working
- [FIX] Poor database performance
- [FIX] Crash on connect
- [FIX] Crash on refresh
- [FIX] Duplicate messages
- [FIX] Auto refresh getting stuck
- [FIX] Fixed issue that caused packet ids to be assigned multiple times resulting in timeouts
- [FIX] Multiple threading issues causing disconnects
- [FIX] Automatic refreshes on player join/leave won’t disable timed refreshes anymore
- [FIX] Sometimes logging in twice
- [FIX] Disconnect issue on fast player join (server desync)
- [FIX] Auto refresh counter now properly updates all the time
- [FIX] Sped up message filtering to prevent desyncing and disconnects
- [FIX] Delayed refresh on join to prevent GUID from not being logged (was triggered too early for GUID to load)
- [FIX] Refresh on join/leave will now also triger for kicks
- [FIX] User-agent being shown incorrectly because of encoding
- [FIX] Removed unecessary threads
- [FIX] Removed «brute-force» requests with a more elegant approach
- [FIX] Disconnect when using global chat for long messages
- [FIX] Disconnect when sending messages too fast
- [FIX] DaRT not logging to file properly
- [FIX] Fixed auto scroll not working (now replaced with queue)
- [FIX] Auto refresh on player join not working when disabling join messages
- [FIX] Settings will not be applied anymore if settings window is just closed
1. If you’re running a BattlEye based game server this app will be a must have! Send commands remotely through the RCON, be updated on what happens on the server, manage everything thanks to your mobile device.
2. After the command is typed you will see the server response, for example if you have typed «players» in an Arma 3 server you would receive all the information regarding the players connected.
3. You will be able to manage your server sending commands remotely through the RCON just like if you were typing on the server console.
загрузить и установить RCON Admin for Arma, Dayz на вашем персональном компьютере и Mac
Проверить совместимые приложения для ПК или альтернативы
Или следуйте инструкциям ниже для использования на ПК
Выберите версию для ПК:
- Windows 7-10
- Windows 11
Если вы хотите установить и использовать RCON Admin for Arma, Dayz на вашем ПК или Mac, вам нужно будет загрузить и установить эмулятор Desktop App для своего компьютера. Мы усердно работали, чтобы помочь вам понять, как использовать app для вашего компьютера в 4 простых шагах ниже:
Шаг 1: Загрузите эмулятор Android для ПК и Mac
Хорошо. Прежде всего. Если вы хотите использовать приложение на своем компьютере, сначала посетите магазин Mac или Windows AppStore и найдите либо приложение Bluestacks, либо Приложение Nox . Большинство учебных пособий в Интернете рекомендуют приложение Bluestacks, и у меня может возникнуть соблазн рекомендовать его, потому что вы с большей вероятностью сможете легко найти решения в Интернете, если у вас возникнут проблемы с использованием приложения Bluestacks на вашем компьютере. Вы можете загрузить программное обеспечение Bluestacks Pc или Mac here .
Шаг 2: установите эмулятор на ПК или Mac
Теперь, когда вы загрузили эмулятор по вашему выбору, перейдите в папку «Загрузка» на вашем компьютере, чтобы найти приложение эмулятора или Bluestacks.
Как только вы его нашли, щелкните его, чтобы установить приложение или exe на компьютер или компьютер Mac.
Теперь нажмите «Далее», чтобы принять лицензионное соглашение.
Чтобы правильно установить приложение, следуйте инструкциям на экране.
Если вы правильно это сделаете, приложение Emulator будет успешно установлено.
Шаг 3: RCON Admin for Arma, Dayz для ПК — Windows 7/8 / 10/ 11
Теперь откройте приложение Emulator, которое вы установили, и найдите его панель поиска. Найдя его, введите RCON Admin for Arma, Dayz в строке поиска и нажмите «Поиск». Нажмите на RCON Admin for Arma, Dayzзначок приложения. Окно RCON Admin for Arma, Dayz в Play Маркете или магазине приложений, и он отобразит Store в вашем приложении эмулятора. Теперь нажмите кнопку «Установить» и, например, на устройстве iPhone или Android, ваше приложение начнет загрузку. Теперь мы все закончили.
Вы увидите значок под названием «Все приложения».
Нажмите на нее, и она перенесет вас на страницу, содержащую все установленные вами приложения.
Вы должны увидеть . Нажмите на нее и начните использовать приложение.
Шаг 4: RCON Admin for Arma, Dayz для Mac OS
Привет. Пользователь Mac!
Шаги по использованию RCON Admin for Arma, Dayz для Mac точно такие же, как для ОС Windows выше. Все, что вам нужно сделать, это установить Nox Application Emulator или Bluestack на вашем Macintosh. Вы можете получить Это здесь .
Спасибо за чтение этого урока. Хорошего дня!
Получить совместимый APK для ПК
Скачать | Разработчик | Рейтинг | Score | Текущая версия | Совместимость |
---|---|---|---|---|---|
Проверить APK → | GENOVA Softworks | 1.0.2 | 4+ |
Скачать Android
RCON Admin for Arma, Dayz На iTunes
Скачать | Разработчик | Рейтинг | Score | Текущая версия | Взрослый рейтинг |
---|---|---|---|---|---|
229,00 ₽ На iTunes | GENOVA Softworks | 1.0.2 | 4+ |
Как скачать и установить RCON Admin в Windows 11
Чтобы использовать мобильные приложения в Windows 11, необходимо установить Amazon Appstore. Как только он будет настроен, вы сможете просматривать и устанавливать мобильные приложения из кураторского каталога. Если вы хотите запускать приложения Android на своей Windows 11, это руководство для вас..
Шаги по настройке компьютера и загрузке приложения RCON Admin в Windows 11:
- Проверьте, совместим ли ваш компьютер: Вот минимальные требования:
- RAM: 8GB (минимум), 16GB (рекомендованный)
- Хранение: SSD
- Processor:
- Intel Core i3 8th Gen (минимум или выше)
- AMD Ryzen 3000 (минимум или выше)
- Qualcomm Snapdragon 8c (минимум или выше)
- Processor Architecture: x64 or ARM64
- Проверьте, имеет ли RCON Admin собственную версию Windows. Сделай это здесь ». Если собственная версия отсутствует, перейдите к шагу 3.
- Установите Amazon Appstore из Microsoft Store. Сделай это здесь ». При выборе «Получить» начнется установка приложения и автоматически установится подсистема Windows для Android.
- После установки Amazon Appstore и приложение «Настройки подсистемы Windows для Android» появятся в меню «Пуск» и списке приложений. Откройте Amazon Appstore и войдите в свою учетную запись Amazon.
- Перейдите в магазин приложений Amazon и выполните поиск по слову « RCON Admin ». Откройте страницу приложения, щелкнув значок приложения. Нажмите «Установить». После установки нажмите «Открыть», чтобы начать использовать приложение RCON Admin.
If you’re running a BattlEye based game server this app will be a must have! Send commands remotely through the RCON, be updated on what happens on the server, manage everything thanks to your mobile device.
This RCON version works through the UDP port and supports games such as:
• Arma 2;
• Arma 3;
• DayZ;
What does the app offer?
You will be able to manage your server sending commands remotely through the RCON just like if you were typing on the server console.
This includes any command supported by the game server.
After the command is typed you will see the server response, for example if you have typed «players» in an Arma 3 server you would receive all the information regarding the players connected.
The app supports any command supported by the game server. You will also be able to kick, ban and send messages to the connected users.