BorizzK

Задержка/таймаут при входе игрока на сервер

19 сообщений в этой теме

Нашел где и как она задается

 

Файл MissionServer.c

 

Функция

void OnPreloadEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int queueTime)

 

Вызывается по эвенту PreloadEventTypeID: - при подключении игрока и постановке его в очередь

 

Она возвращает queueTime в которой и будут те самые 15 сек

Тк он возвращается пустой, сервер использует значение по умолчанию

Если внутри функции изменить значение

queueTime = 5;

то будет нужное Вам время

 

Соответственно переопределяем эту функцию в init.c или Вашем файле миссии в моде (или нет)

 

	override void OnPreloadEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int queueTime)
	{
		if (GetHive())
		{
			// Preload data on client by character from database
			useDB = true;
			queueTime = 1; //Делаем 1 сек
		}
		else
		{
			// Preload data on client without database //Вот это я не понял зачем
			useDB = false;
			pos = "1189.3 0.0 5392.48";
			yaw = 0;
			queueTime = 1; //Делаем 1 сек
		}
	}

Делаем 1 сек

 

Вуаля...

 

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


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


Я у себя сделал просто

в server.cfg создал параметр по аналогии respawnTime

spawnTime = 5;

 

И в переопределенной функции OnPreloadEvent его читаю и присваиваю queueTime

if (GetGame().ServerConfigGetInt("spawnTime"))

{

      queueTime = GetGame().ServerConfigGetInt("spawnTime");

}

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 19.12.2018 в 19:35, BorizzK сказал:

Я у себя сделал просто

в server.cfg создал параметр по аналогии respawnTime

spawnTime = 5;

 

И в переопределенной функции OnPreloadEvent его читаю и присваиваю queueTime

if (GetGame().ServerConfigGetInt("spawnTime"))

{

      queueTime = GetGame().ServerConfigGetInt("spawnTime");

}

 

Возможно это все грамотно звучит, для тех кто разбирается в этом, вот честно для простого пользователя ничего не понятно, какая то каша. Начало сделайте так то, но при этом все звучит как описание технической работы скриптов, для тех кто кубатурит что и как работает, на твоем уровне. И далее то что у тебя работает опять же написано каким то отрывком, типа доделайте сами, для кого эти гайды написаны?

Неужели нельзя полноценно написать ? 

1) в serverDZ.cfg вписываем это :

respawnTime = 1;

spawnTime = 1;

2) идем по пути DayZServer\mpmissions\dayzOffline.chernarusplus открываем файл init.c находим такой то раздел и вписываем то то ( я бы написал но сам нихера не понял,

( куда это вписать?)

if (GetGame().ServerConfigGetInt("spawnTime"))

{

      queueTime = GetGame().ServerConfigGetInt("spawnTime");

}

3) а здесь можно уже расписать как работает скрипт и свои умозаключения! 

Спасибо гайд супер , два часа пляски с бубном обеспечены!

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

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


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

А можно просто не ломать себе голову и поправит цифарку в xml-файле
Безымянный.png

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


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

123new 

Я еще исходил из того что можно менять время на лету из моей админки

Допиливаю ее

Выложу в ближайшее время

 

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


Ссылка на сообщение
Поделиться на других сайтах
В ‎19‎.‎12‎.‎2018 в 12:35, BorizzK сказал:

Я у себя сделал просто

в server.cfg создал параметр по аналогии respawnTime

spawnTime = 5;

 

И в переопределенной функции OnPreloadEvent его читаю и присваиваю queueTime

if (GetGame().ServerConfigGetInt("spawnTime"))

{

      queueTime = GetGame().ServerConfigGetInt("spawnTime");

}

 

Извиняюсь а можно поподробнее как это сделать А то мои познания в скриптинге равны нулю

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


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

PJIIOxa 

 

В init.c в классе миссии
который class CustomMission : MissionServer

 

вот в нем добавил функцию (она переопределяет штатную)

 

	override void OnPreloadEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int queueTime)
	{
		//Читаем spqwn time из конфига сервера
        if (GetGame().ServerConfigGetInt("spawnTime") > 0)
		{
			queueTime = GetGame().ServerConfigGetInt("spawnTime");
		}

		if (GetHive())
		{
			// Preload data on client by character from database
			useDB = true;
		}
		else
		{
			// Preload data on client without database //Вот это я не понял зачем
			useDB = false;
			pos = "1189.3 0.0 5392.48";
			yaw = 0;
		}
	}

и в конфиге сервера добавляем параметр spawnTime
типа

spawnTime = 5;

 

Теперь при входе в функции будет считан параметр из конфига и установлено время указанное в конфиге

 

если установить 0 то время queueTime сервер установит в дефолт - 15 сек
потому я сделал проверку GetGame().ServerConfigGetInt("spawnTime") > 0

 

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


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

вот сделал проще скопировать папку scripts в дирикторию сервера, файл модифийированный не заменяет оригинальный файл missionServer_modded.c

 

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

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

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


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

Ребята, извините за глупый вопрос, но зачем убирать задержку на входе? Это ж вроде как защита от дюперства?..

Я имею в виду есть ли практический смысл это делать, кроме сокращения времени ожидания для игрока? 15 секунд - ну не такой уж срок, чтоб только ради этого морочиться?..

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


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

VIRrusR ну пока вы ждете 15 секунд ваш персонаж уже находится в игре и стоит ждет пока вы дождетесь отсчета в это время вас могут еб…...ть

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


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

VIRrusR От дюперства задержка при выходе
Да и не работает вроде как дюперство сейчас

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


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

VIRrusR От дюперства задержка при выходе
Да и не работает вроде как дюперство сейчас

работает, при неплановых рестартах и крашах сервера из-за разницы в сохранениях карты сервера и игроков

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


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

123new Но через входы-выходы не работает

само собой, так как помимо таймаута этого перс еще в бд лочится выходящий, и тебя чисто физически не пустит сама бд

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


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

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

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

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

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


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

Войти

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


Войти сейчас

  • Похожие публикации

    • Автор: Miduznya
      Всем привет, чет не нашел не где как можно в ручную обновить через .bat или .cmd файл
      если есть у кого такой поделитесь плиз. Прошу сильно не пинать если есть такая тема дайте ссылку
    • Автор: 123new
      Здравствуйте, дорогие друзья и посетители сайта. В данной теме я распишу как создать свой "чистый" сервер на основе первых официальных серверных файлов игры, доступных каждому в steam для тех, кто приобрел эту замечательную игру. Для тех, кто не приобретал ее, не расстраивайтесь, добавлю зеркала на файлы.
      И так, приступим.
       
      Нам понадобятся:
      1. Официальные серверные файлы игры со steam ссылки на файлы имеются в теме:
      Копия Server Files от меня на момент публикации статьи (версия сервера игры 1.0.149923):  https://mega.nz/#!Pu50WKaY!K2LlvflSsHJj3-xWvoyMxYd4Prt-IPbO5Hy7YErZBBU
      Копия Server Tools от меня на момент публикации статьи (версия сервера игры 1.0.149923): https://mega.nz/#!7ugEkCZb!2sVV5n9Qssyd2NlUj4491bp8-NNXNAY9itY7GiAnCtQ
      Скачать можно и через SteamCMD:

      2. Официальный клиент игры из steam:
      https://store.steampowered.com/app/221100/DayZ/
      Зеркало на DayZ Client версию клиента игры 1.0.149923 на момент публикации: https://mega.nz/#!C3AHlAjK!5FOv8ZeXB8pS085ff1jkCoFQCr4uAr7bMs827u95Dls
      3. "Настроенная конфигурация серверной части игры" и батник для старта сервера:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      4. Notepad++ https://notepad-plus-plus.org/download
      И так, приступим.
      1. Распаковываем скачанные серверные файлы игры в отдельную папку
      2. Распаковываем архив с "Настроенной конфигурацией серверной части игры" в папку с серверными файлами
      Получим что-то типа такого

      Если вам необходимо, настраиваем cfg-файлы сервера вручную сами, как вам необходимо, информация по его настройке есть в теме во 2 ее сообщении
      Открывать cfg файлы через Notepad++.
      Ккомментарии по CFG файлам Battleye ниже:
      где 12345678 - rcon-пароль сервера
      500 - максимальный пинг, разрешенный battleye на сервере игры (не уверен, что работает)
      RestrictRCon 0 - подключение с rcon-клиентов с правами кика и бана игроков(например, dart и bec)(0 - разрешено все, 1 - запрещен кик и бан, только отправка в чат)
      По остальным настройкам и файлам читайте комментарии в файлах и в теме:
      3. Запускаем !!!Start_server.bat и наш сервер запустится
      4. Запускаем клиент игры со steam, находим наш сервер вручную по ip и порту, либо имени сервера.
      Если сервер запущен на том же компьютере, где и игра, и на стандартном порту 2302, то поумолчанию поиск выполняется по 127.0.0.1:2302
      Если сервер запущен на другом компьютере, то вместо 127.0.0.1 будет ip адрес компьютера, где запущен сервер, или его доменное имя. Например, myserver.com:2302 или 178.123.22.12:2302
      ВАЖНО: если сервер запущен на другом компьютере, отличном от компьютера где запущена игра, то для доступа на сервер игроков необходимо иметь "внешний" выделенный ip-адрес и открытый порт сервера!
      5. Для выключения сервера рекоммендуется пользоваться !!!Server_kill.bat файлом, созданным в соответствии с рекоммендациями разработчиков игры и официальной документацией.
       
      Для совсем "ленивых" запаковал уже настроенный сервер в архив с версией игры 1.0.149923:
      https://mega.nz/#!W3QhECTR!4m0hf8KGrL6a36Vo-6GY93vXCNfrbDraSIv3FrPgcrM
       
      Настраивайте лишь config сервера, battleye и bat-файл запуска сервера, и можете играть.
       
      Crack SmartSteamEmu v. 1.4.3 данной версии клиента игры и сервера:
      Скачать с Zippyshare.com: https://www64.zippyshare.com/v/mHmPweqg/file.html
      Скачать с Mega.nz: https://mega.nz/#!rnZBXK4b!KRrJm6obcJjUlzMpEPNQ3R8sy2z0pP-0Myb_ao4TVhg
      Скачать с yandex.disk: https://yadi.sk/d/4xSF1dSt6XN41g
      Инструкция по установке есть в архиве, дублирую:
       
      Для работы Battleye используйте ip-адрес и порт сервера, и любой rcon-клиент с паролем из BEServer_x64.cfg
      Для работы BEC делайте Battleye config файл BEServer.cfg идентичным по содержанию BEServer_x64.cfg иначе программа не будет работать!
      База данных (storage) теперь хранится по пути: mpmissions\dayzOffline.chernarusplus\storage_{номер instance с cfg сервера}
      В базе данных также хранится файл с сохранениями игроков на сервере с именем players.db
       
      Вот и все, приятной игры на сервере!
       
       
    • Автор: 123new
      В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления о присоединении и отсоединении игроков.
       
      Нам понадобится:
      1. Сервер DayZ 1.0, сделанный по одному из гайдов:
      2. Notepad++
      3. Немножечко трезвого ума
       
      Приступим:
      1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
      2. В самом начале файла добавляем:
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\ConnectDisconnectMessagesInChat.c" Обратите внимание, имя папки с активной mpmissions сервера у вас может отличаться от стандартного названия  dayzOffline.chernarusplus - в таком случае в ссылке выше имя этой папки также надо заменить (это актуально в основном для серверов аренды)
      3. Помещаем в папку файл
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Либо создаем вручную этот файл с именем " "ConnectDisconnectMessagesInChat.c" и заполняем его следующим текстом:
      modded class CustomMission { void SendGlobalChatMessage(string message) { private array<Man> players = new array<Man>; GetGame().GetPlayers( players ); int numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { foreach(Man player: players) { SendPersonalMessage(message, player); } //GetGame().ChatPlayer(message); } } void SendPersonalMessage(string message, Man player) { if(( player ) && (message != "")) { Param1<string> m_GlobalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_GlobalMessage, true, player.GetIdentity()); } } override void InvokeOnDisconnect( PlayerBase player ) { private PlayerIdentity identity = NULL; identity = player.GetIdentity(); if (player && identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string message = "[Информация] Игрок " + Name_P + " отключился от сервера."; private string log_message = "[Disconnect] Player " + Name_P + " with Uid: " + UID_P + " disconnected from server."; //GetGame().ChatPlayer(message); SendGlobalChatMessage(message); Print(log_message); } super.InvokeOnDisconnect( player ); } override void InvokeOnConnect(PlayerBase player, PlayerIdentity identity) { super.InvokeOnConnect(player, identity); private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string message = "[Информация] Игрок " + Name_P + " Зашёл на сервер."; private string log_message = "[Connect] Player " + Name_P + " with Uid: " + UID_P + "connected to server."; //GetGame().ChatPlayer(message); SendGlobalChatMessage(message); Print(log_message); } } 4. Настраиваем текст как нам нужно. Т.е. в строках для чата
      private string message = "[Информация] Игрок " + Name_P + " отключился от сервера."; и
      private string message = "[Информация] Игрок " + Name_P + " Зашёл на сервер."; а также для логов
      private string log_message = "[Disconnect] Player " + Name_P + " with Uid: " + UID_P + " disconnected from server."; и
      private string log_message = "[Connect] Player " + Name_P + " with Uid: " + UID_P + "connected to server."; P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!
       
    • Автор: zra47
      Такая вот проблемка,2 комп подключен к роутеру wifi .пробросы портов делал что он ещё хочет не понимаю . Напрямую в локальной сети видит сервер.