Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
paulmanz

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

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

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

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

Share this post


Link to post
Share on other sites

Recommended Posts




  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

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

Share this post


Link to post
Share on other sites
  • 0

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

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

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

Share this post


Link to post
Share on other sites
  • 0
18 минут назад, paulmanz сказал:

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

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

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

в лоб никак

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

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

 

Share this post


Link to post
Share on other sites
  • 0
1 минуту назад, paulmanz сказал:

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

 

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

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

Share this post


Link to post
Share on other sites
  • 0
9 часов назад, BorizzK сказал:

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

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

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

Share this post


Link to post
Share on other sites
  • 0
8 часов назад, 123new сказал:

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
  • 0
2 часа назад, BorizzK сказал:

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
  • 0
2 минуты назад, 123new сказал:

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

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

 

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

905646474_.png.7089840abede9ca1b2e39f706f72b6bc.png

 

Share this post


Link to post
Share on other sites
  • 0
8 минут назад, BorizzK сказал:

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

 

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

905646474_.png.7089840abede9ca1b2e39f706f72b6bc.png

 

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

Share this post


Link to post
Share on other sites
  • 0

470592176_.png.87809aa25e15d069826f06b5239cb4a8.png

 

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

 

574713099_.png.ba1f528dae53f21d2b9a303eff4cfefe.png

Однако

1004171578_.png.a3fb236f464b5b6448de56d50aa339ba.png

2015045596_.png.bc68bc015f8501c5ba6b60cd814e6744.png

Share this post


Link to post
Share on other sites
  • 0

 

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

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

 

Share this post


Link to post
Share on other sites
  • 0
Только что, BorizzK сказал:

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

 

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

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

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

Share this post


Link to post
Share on other sites
  • 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

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

 

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

 


 

 

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 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

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites
  • 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);
	}

 

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

 

Дерзайте )))

 

 

 

Share this post


Link to post
Share on other sites
  • 0

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

 

Share this post


Link to post
Share on other sites
  • 0
3 минуты назад, BorizzK сказал:

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

 

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

Share this post


Link to post
Share on other sites
  • 0
55 минут назад, BorizzK сказал:

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

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

коротко)))

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

Share this post


Link to post
Share on other sites
  • 0

Да

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

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

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

 

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

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.