Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
fedotovyasha

как отключить любого игрока (скрипты)

как отключить любого игрока который уже подключился, вводом команды (например /kick) в скриптах

 

про rcon знаю. Нужен для кика всех перед рестартом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0
13 часа назад, fedotovyasha сказал:

Vladislavfaddeevich 123new А можно команду кика?) Тимер сам могу поставить)

 

нашел)

 

GetGame().DisconnectPlayer(player.GetIdentity());

 

советую проверить сохранение персонажа при ней ;) Дабы персонажа не откатило. А так сам дисконнект в прямом корректном виде указан в MissionServer.c функцией.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах





  • 0

fedotovyasha Поиск по словам "Кик перед рестартом"... 

Ответ уже был. 

Никто ничего не знает, плати бабки за писанину скрипта или пиши сам)) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

В принципе как я понимаю, скрипт очень легкий, 5 строчек максимум, включая скобки. 

 

Глобал кик и таймер обратного отсчета, от старта до рестарта. 

 

 

Но если бы я знал Язык... 

Изменено пользователем Vladislavfaddeevich (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
3 часа назад, Vladislavfaddeevich сказал:

В принципе как я понимаю, скрипт очень легкий, 5 строчек максимум, включая скобки. 

 

Глобал кик и таймер обратного отсчета, от старта до рестарта. 

 

 

Но если бы я знал Язык... 

именно, причем сама функция дисконнекта там уже есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Vladislavfaddeevich 123new А можно команду кика?) Тимер сам могу поставить)

 

нашел)

 

GetGame().DisconnectPlayer(player.GetIdentity());

 

Изменено пользователем fedotovyasha (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new хорошо, спасибо) Есть проблема с таймером. Написал класс но он не вызывается в методе main с помощью GetCallQueue

 

AutoKickMission autoKickMission = new AutoKickMission;

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(autoKickMission.Check, 60000, true);

Изменено пользователем fedotovyasha (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 минуту назад, fedotovyasha сказал:

123new хорошо, спасибо) Есть проблема с таймером. Написал класс но он не вызывается в методе main с помощью 

 

AutoKickMission autoKickMission = new AutoKickMission;

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(autoKickMission.Check, 60000, true);

если правильно помню, CALL_CATEGORY_GAMEPLAY только на клиенте существует

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new если в классе CustomMission: MissionServer вызвать, то норм все

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

fedotovyasha тогда добавляй логирования в функции и наблюдай запуск функции, увидишь после чего она перестает выполняться

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new добавлял, один раз выполняется все, и перестает. И если убрать класс оставить только методы, то тож работает все. Но мне переменные нужно сохранить

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

fedotovyasha а вызов откуда шлешь проверял точку? может ты вписал код в нерабочем месте где-то

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

fedotovyasha а теперь погляди где ты переменную класса нового объявил и где класс инициализируешь. Как думаешь, переменная нового класса объявленного вызовется ли он повторно, если она после отрабатывания функции main удалится из памяти как существующая?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new как ее объявить, чтобы не удалялась? за методом выдает ошибку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

fedotovyasha в самый верх файла вынеси объявление переменной, над мейн функцией чтобы была

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new аа, все, выдавало ошибку из-за того что инклуд за комментирован был)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new А, нет

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

fedotovyasha так у тебя сервер класс твой не видит, т.е. ты пытаешься переменную своего класса сделать, но не может он ее сделать т.к. класс неверно назван, судя по всему. Если че инициализацию переменной нового класса вместе с new можно писать сверху ;)

и да, ref не забывай дописывать к классу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new CALL_CATEGORY_GAMEPLAY и на сервере существует

но приоритет ниже чем у CALL_CATEGORY_SYSTEM

 

Но имхо есть лучше

 

Через ScriptInvoker ставить в очередь свою функцию

и в ней считать задержку через переменную в классе

 

Чуть позже покажу

 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
float Timer = 0;
float TimeRun = 0;
float TimeWait = 0;


void Init()
{
   TimeWait = 10.00;
   Timer = GetGame().GetTickTime();
   TimeRun = GetGame().GetTickTime() + TimeWait;
   GetDayZGame().GetUpdateQueue(CALL_CATEGORY_SYSTEM).Insert(MyOnUpdate);
}


void MyOnUpdate(float timeslice)
{
	Timer+=timeslice;
	 If (Timer >= TimeRun)
	 {
	     MyFunc();
	     Timer = GetGame().GetTickTime() ;
	     TimeRun = Timer + TimeWait;
	 }
}


void MyFunc()
{
   //будт выполняться раз в 10 сек с высоким приоритетом в общей очереди OnUpdate
}

Тож самое можно и для OnRPC сделать

Те вонзить в очередь системной обработки RPC вызов своей функции в своем классе

GetDayZGame().Event_OnRPC.Insert(OnMyRPC);

ну и соответственно в своем классе функцию со стандартными параметрами и стандартную обработку
все что в RPC прилетит пройдет в тч и через нее

Ну а назвать ее можно хоть как угодно
 

void OnMyRPC(PlayerIdentity sender, Object target, int rpc_type, ParamsReadContext ctx)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.