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

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

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

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

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

Время спавна VIP`ок

Шалом, православные

Появился вопрос - можно ли задать время спавна випок на сервере?

Если кто сталкивался с таким - где можно инфу найти?

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


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

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

  • 0

в каком смысле 'время спавна'?

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


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

@123new в прямом. Как время спавна всех игроков после смерти, но ограничить это время для випок

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


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

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

Если это не про то, поясняйте свои хотелки более подробно, наши понималки не понимают ваших хотелок)

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


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

@123new Как увеличить минимальное время респавна только для вип игроков

Типа, умер и ждешь 5 минут, потом респавн

Достаточно понятно?)

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


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

@123new Как увеличить минимальное время респавна только для вип игроков

Типа, умер и ждешь 5 минут, потом респавн

Достаточно понятно?)

в лоб никак

но возможно есть идея

однако придется моддидь клиента

 

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


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

@BorizzK Накинешь мысль?

 

как ковырну нативный код - накину ))))

самому интересно стало

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


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

как ковырну нативный код - накину ))))

самому интересно стало

действительно занятная задачка
По хорошему можно кнопку респавна просто блокировать, это по идее не сложно должно быть. Но вот тока этого не достаточно, т.к. сама процедура респавна и при присоединении к серверу может пойти, а вот тут уже как раз и сложности, т.к. это, как я понимаю, на уровне движка автоматом определяется, и результатом должен быть обязательно персонаж (новый или загруженный). Как вариант, костыль, можно тут же убивать новореснувшегося и чистить трупик, пока отсчет не выйдет. Насколько это прямо ну вопрос сложный)

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


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

действительно занятная задачка
По хорошему можно кнопку респавна просто блокировать, это по идее не сложно должно быть. Но вот тока этого не достаточно, т.к. сама процедура респавна и при присоединении к серверу может пойти, а вот тут уже как раз и сложности, т.к. это, как я понимаю, на уровне движка автоматом определяется, и результатом должен быть обязательно персонаж (новый или загруженный). Как вариант, костыль, можно тут же убивать новореснувшегося и чистить трупик, пока отсчет не выйдет. Насколько это прямо ну вопрос сложный)

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

моддим функцию

но надо получить вип/невип

вот основная задачка

но это можно заранее при первом соединении с помощью rpc на клиента отправить и в переменной держать

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


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

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

моддим функцию

но надо получить вип/невип

вот основная задачка

но это можно заранее при первом соединении с помощью rpc на клиента отправить и в переменной держать

а нельзя тупо это время в базе замоддить напрямую на сервере?

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


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

а нельзя тупо это время в базе замоддить напрямую на сервере?

ну так нам же надо одним одно время другим другое

 

так-то оно вот

905646474_.png.7089840abede9ca1b2e39f706f72b6bc.png

 

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


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

ну так нам же надо одним одно время другим другое

 

так-то оно вот

905646474_.png.7089840abede9ca1b2e39f706f72b6bc.png

 

я не про xml, а про скриптинг. Скриптами где-то значение это обрабатывается в коде энскрипта?

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


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

470592176_.png.87809aa25e15d069826f06b5239cb4a8.png

 

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

 

574713099_.png.ba1f528dae53f21d2b9a303eff4cfefe.png

Однако

1004171578_.png.a3fb236f464b5b6448de56d50aa339ba.png

2015045596_.png.bc68bc015f8501c5ba6b60cd814e6744.png

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


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

 

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

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

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


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

Кароче ковырять OnRespawnEvent в DayZGame.c
Понятно что это клиент-серверный мод

 

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


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

Кароче ковырять OnRespawnEvent в DayZGame.c
Понятно что это клиент-серверный мод

 

не совсем въехал, в сервере или клиенте будет работать

case RespawnEventTypeID:
		{
			RespawnEventParams respawnParams;
			if (Class.CastTo(respawnParams, params))
			{
				OnRespawnEvent(respawnParams.param1);
			}	
			break;
		}

но если в сервере, то тупо втулить проверку по массиву игроков и подменивать значение пытаться

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


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

не совсем въехал, в сервере или клиенте будет работать

На клиенте - ты посмотри что там

1720324572_.png.3a760533fe02c778a69fd1bd4aa865fd.png

Это клиентские функции

На сервере ты по этой теме не сделаешь ничего
Хотя

Как мы видим выше вызов идет из OnEvent который принял параметры - понятно что из штатного обработчика RPC
а параметр прилетает с СЕРВЕРА

так?

Смотрим дальше
 

		case RespawnEventTypeID:
		{
			RespawnEventParams respawnParams;
			if (Class.CastTo(respawnParams, params))
			{
				OnRespawnEvent(respawnParams.param1);
			}	
			break;
		}

Это вызов OnRespawnEvent
И явно виднео что эти параметры содержат ВРЕМЯ

Осталось найти где на сервере этот параметр заворачивается и отправляется на клиента

Тут мы находим
606697715_.png.4b845895a850763a79dc6ae75cc2eeec.png

Да
Точно время

 

но где оно отправляется на клиента я пока на нашел

 


 

 

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
void OnClientPrepareEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int preloadTimeout)
	{
		if (GetHive())
		{
			// use character from database
			useDB = true;
		}
		else
		{
			// use following data without database
			useDB = false;
			pos = "1189.3 0.0 5392.48";
			yaw = 0;
		}
	}

переменная preloadTimeout не оно?

ведет в функцию override void OnEvent(EventType eventTypeId, Param params)

case ClientPrepareEventTypeID:
			ClientPrepareEventParams clientPrepareParams;
			Class.CastTo(clientPrepareParams, params);
			
			OnClientPrepareEvent(clientPrepareParams.param1, clientPrepareParams.param2, clientPrepareParams.param3, clientPrepareParams.param4, clientPrepareParams.param5);
			break;

последнее значение в функции OnClientPrepareEvent

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

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


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

missionServer.c

case ClientRespawnEventTypeID: ClientRespawnEventParams respawnParams; Class.CastTo(respawnParams, params); identity = respawnParams.param1; Class.CastTo(player, respawnParams.param2); if (!player) { Debug.Log("ClientRespawnEvent: Player is empty"); return; } OnClientRespawnEvent(identity, player); break;


case ClientRespawnEventTypeID:
			ClientRespawnEventParams respawnParams;
			Class.CastTo(respawnParams, params);
			
			identity = respawnParams.param1;
			Class.CastTo(player, respawnParams.param2);
			if (!player)
			{
				Debug.Log("ClientRespawnEvent: Player is empty");
				return;
			}
			
			OnClientRespawnEvent(identity, player);
			break;
			

не оно? вроде похоже

это на сервере обработка когда по рпц прилетает что клиент респавнится и более ничего

кароче

время проходит через двигло напрямую и работает ток на клиенте

посему на клиенте и надо моддидь

 

как отправить время

а просто - в PlayerBase вводим сетевую переменную!

 

в классе

int m_RespawnTime;

 

в конструкторе

RegisterNetSyncVariableInt("m_RespawnTime",0,256); мин, макс значение - не думаю что макс время будет больше


и когда чел на сервер вошел проверяем в массиве по уид - и присваиваем

синхрим с клиентом по SetSynchDirty();

моддим класс DatyzGame - он моддится
 

конкретно функцию

OnRespawnEvent

И там уже когда клиент хочет респавнится - двиг ее вызовет и в ней

 

	override void OnRespawnEvent(int time)
	{	
		// use login time screen for respawn timer
		PlayerBase respawn_player = PlayerBase.Cast(GetGame().GetPlayer());
		if (respawn_player.m_RespawnTime != time) time = respawn_player.m_RespawnTime;

		if (time > 0)
		{	
			m_LoginTime = time;
			if (!m_LoginTimeScreen)
			{
				GetUIManager().CloseAll();
				
				UIScriptedMenu parent = GetUIManager().GetMenu();
				EnterLoginTime(parent);
			}
			
			m_LoginTimeScreen.SetRespawn(true);
			m_LoginTimeScreen.SetTime(m_LoginTime);
			m_LoginTimeScreen.Show();
			
			GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(this.LoginTimeCountdown, 1000, true);
		}
		if (GetPlayer())
			GetPlayer().StopDeathDarkeningEffect();
		PPEffects.SetDeathDarkening(1);
	}

 

Думаю так сработает

 

Дерзайте )))

 

 

 

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


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

Я надеюсь ты попробуешь ибо у мну сейчас катастрофически не хватает на все времени

 

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


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

Я надеюсь ты попробуешь ибо у мну сейчас катастрофически не хватает на все времени

 

чуть позже да, щас с товарищем встреча по времени

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


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

Ща до дома доеду

Если силы останутся попробую

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

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


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

Ща до дома доеду

Если силы останутся попробую

коротко)))

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

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


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

Да

он же еще не обьявлен

но! мы не ищем легких путей

и сделаем все через внешний класс

 

сейчас поприкидываю

 

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


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

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

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

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

Поддержка