1. Админ логин вводить не нужно. id админа надо добавить в файл ADMINS_LIST.lst
2. Убедитесь, что в файле AdminMod_Class.c строка //LoadServerSettings(); закомментирована как я показал или удалите ее. Тогда cfggameplay.json начнет читаться.
static void Init()
{
Print("::: [AdminMod_Class] ::: Init() Begin :::");
//LoadServerSettings();
LoadAdminsList();
LoadArbitratorsList();
LoadCommandsSettings();
.....
3. Объясню в кратце как все это работает, чтобы вам проще было исправлять.
Инструкция по подключению в файле с кодом.
1.1. Add next code to your mission file like init.c (not in class!):
#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_MOD\\_AdminTools\\AdminMod_Class.c" //подключаем AdminTools //mod edition (w/static variables and functions)
ref AdminMod_Class AdminMod = new AdminMod_Class();
1.2. Add call AdminMod.Init() to OnInit function in your custom mission class in your mission file like init.c and add overrided function OnEvent to class
class CustomMission : MissionServer
{
override void OnInit()
{
// Another code
AdminMod.Init(); //Admin mod initialization see Init() function in AdminMod_Class.c
// Another code
}
// Another code
override void OnEvent(EventType eventTypeId, Param params) //Call from chat
{
switch(eventTypeId)
{
case ChatMessageEventTypeID:
{
ChatMessageEventParams chat_params = ChatMessageEventParams.Cast(params);
if (chat_params.param1 == 0 && chat_params.param2 != "" && chat_params.param3 != "") //trigger only when channel is Global == 0, Player Name does not equal to null and entered command
{
AdminMod.OnAdminChatRequest(params); //Redirect call from chat to AdminMod
}
break;
}
default:
{
super.OnEvent(eventTypeId,params);
break;
}
break;
}
}
// Another code
}
Файл init.c загружается, когда стартует сервер. В него нужно добавить в самый верх путь к файлу скрипта (строка #include ....) и инициализировать этот код (строка ref Admin ....). Это загружает на сервер код из файла и далее функции скрипта можно использовать. Запуск кода скрипта происходит командой
AdminMod.Init(); //Admin mod initialization see Init() function in AdminMod_Class.c
которую нужно добавить в этот же файл (см. пример). Далее настраивается перехват сообщений, которые будут отправляться функциям скрипта.
......
if (chat_params.param1 == 0 && chat_params.param2 != "" && chat_params.param3 != "") //trigger only when channel is Global == 0, Player Name does not equal to null and entered command
{
AdminMod.OnAdminChatRequest(params); //Redirect call from chat to AdminMod
}
...
После того, как это сделаете, сервер при старте будет пытаться загрузить код скрипта из файла AdminMod_Class.c Все ошибки при использование файла скрипта будут выводиться в логи сервера (к примеру DayZServer\profiles\script_2022-04-21_21-53-28.log). Для тестирования кода удобно дописывать в файл функцию печати Print("12345"); и если код дойдет до этого места, то в лог запишется строка "12345". Так вы сможете понять где прерывается выполнение кода. При вводе сообщения в чат, оно запускает функцию скрипта
static void OnAdminChatRequest(Param request_params)
{
ChatMessageEventParams chat_params = ChatMessageEventParams.Cast( request_params );
switch(chat_params.param1)
{
case 0:
{
......
Т.к. у вас нет результата при вводе команд, то для начала можно попробовать понять, а перехватывается ли сообщение и запускается ли функция. OnAdminChatRequest . Можно вставить в код Print посмотреть в логах появился ли текст - 12312123123123123. Проверка на админов происходит далее по коду.
static void OnAdminChatRequest(Param request_params)
{
ChatMessageEventParams chat_params = ChatMessageEventParams.Cast( request_params );
Print("12312123123123123");
switch(chat_params.param1)