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
Verum

Наручники

Ребят.
Отключил возможность освободиться от наручников самостоятельно, но так и не получилось отключить смерть игрока при перезаходе (если он в наручниках),  может кто подсказать решение?

Share this post


Link to post
Share on other sites

24 answers to this question

Recommended Posts

  • 0

scripts\5_Mission\mission\missionServer.c

modded class MissionServer extends MissionBase
{
	override void HandleBody(PlayerBase player)
	{
		if (player.IsAlive() && !player.IsRestrained() && !player.IsUnconscious())
		{
			// remove the body
			player.Delete();	
		} else 
		{
			if (player.IsUnconscious() || player.IsRestrained())
			{
				// kill character
				player.SetHealth("", "", 0.0);
			}
		}
	}
}

осталось функцию переписать по своим нуждам

Share this post


Link to post
Share on other sites







  • 0

Кто-нибудь может подсказать, что именно тут заменять?

Share this post


Link to post
Share on other sites
  • 0

@123new Не совсем помогло. Если удалить переменные player.IsRestrained() из кода, то если персонаж был связан, и вышел из игры, при перезаходе его откатывает не секунд 15 назад. т.е. он появляется в метрах 10-15 до места связывания.

Share this post


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

@123new Не совсем помогло. Если удалить переменные player.IsRestrained() из кода, то если персонаж был связан, и вышел из игры, при перезаходе его откатывает не секунд 15 назад. т.е. он появляется в метрах 10-15 до места связывания.

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

Share this post


Link to post
Share on other sites
  • 0

Вопрос открыт, на самом деле.

Share this post


Link to post
Share on other sites
  • 0

Все просто

Игрок погибает при выходе если он закован или без сознания

Обработка эта происходит в missionServer

2099025120_.png.4308f03cfd7908a6ba067176820776d7.png

 

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

 

Не знаю, работает ли эта функция, раньше не работала

 

466483798_.png.3e288be0a1993e8cd30f0e901e7ce018.png

 

Edited by BorizzK (see edit history)

Share this post


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

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

эх, научится бы всему, да времени не хватает. Может кто готовую пбо скинет? Буду весьма благодарен!

Share this post


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

эх, научится бы всему, да времени не хватает. Может кто готовую пбо скинет? Буду весьма благодарен!

придется учиться

 

Share this post


Link to post
Share on other sites
  • 0

@BorizzK Пробовал. Удалял проверку на "связан ли персонаж". Получилось вот что, персонаж перестал умирать.. При перезаходе он тупо появляется со своим лутом, условно в 10 метрах от места релога, и без наручников на руках. Вот в чём вопрос, не поддающийся объяснению.

Share this post


Link to post
Share on other sites
  • 0

что откуда удалял - где

ни хре на не понятно

Share this post


Link to post
Share on other sites
  • 0

@BorizzK Вот если указанный вами участок изменяю на такое
 

void HandleBody(PlayerBase player)
	{
		if (player.IsAlive() && !player.IsUnconscious())
		{
			// remove the body
			player.Delete();	
		}
		else if (player.IsUnconscious())
		{
			// kill character
			player.SetHealth("", "", 0.0);
		}
	}

Персонаж связан, уходит в релог, заходит живой, но в метрах 10 от места связывания.

Share this post


Link to post
Share on other sites
  • 0

@BorizzK А если оставляю такой код:
 

modded class MissionServer extends MissionBase
{
	override void HandleBody(PlayerBase player)
	{
		if (player.IsAlive() && !player.IsRestrained() && !player.IsUnconscious())
		{
			// remove the body
			player.Delete();	
		} else 
		{
			if (player.IsUnconscious())
			{
				// kill character
				player.SetHealth("", "", 0.0);
			}
		}
	}
}

То вообще картина века:
Появился и вижу себя )

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

Share this post


Link to post
Share on other sites
  • 0

Кароче

Там же еще сохранка должны быть правильной

Если он рестрайн или ванкунси - его тупо не сохраняет в бд сервера

потому так

 

MissionSerever

	override void HandleBody(PlayerBase player)
	{
		if (player.IsAlive())
		{
			GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(player.Delete);
		}
	}

 

PlayerBase

 

modded class PlayerBase extends ManBase
{
	ref TStringArray restrain_Items = {"HandcuffsLocked","RopeLocked","DuctTapeLocked","MetalWireLocked","BarbedWireLocked"};
	
	override void OnConnect()
	{
		super.OnConnect();
		if (GetItemInHands())
		{
			if (restrain_Items.Find(GetItemInHands().GetType()) >= 0)
			{
				BzRestrtainOnConnect();
			}
		}
	}

	override void OnReconnect()
	{
		super.OnReconnect();
		if (GetItemInHands())
		{
			if (restrain_Items.Find(GetItemInHands().GetType()) >= 0)
			{
				BzRestrtainOnConnect();
			}
		}
	}
	
	override bool Save()
	{
		if (GetPlayerState() == EPlayerStates.ALIVE )
		{
			GetHive().CharacterSave(this);
			Debug.Log("Restrained player " + this.ToString() + " saved as alive!"); //типа дебаг
			return true;
		}
		return super.Save();
	}

	void BzRestrtainOnConnect()
	{
		EntityAI item_in_hands = GetItemInHands(); //Это не обязательно но пусть будет
		if(item_in_hands)
		{
			SetRestrained(true);
			OnItemInHandsChanged();
			SetSynchDirty();
		}
	}
}

если вышел в наручниках

то войдя снова будет в наручниках

с ванкунси аналогично

 

Работает чисто серверно

 

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 0

@BorizzK Попробую сегодня, спасибо большое.

Т е. Из миссии убрать строку про установку персонажу здоровья на 0?

Edited by Verum (see edit history)

Share this post


Link to post
Share on other sites
  • 0
03.03.2021 в 22:48, BorizzK сказал:

Кароче

Там же еще сохранка должны быть правильной

Если он рестрайн или ванкунси - его тупо не сохраняет в бд сервера

потому так

 

MissionSerever

override void HandleBody(PlayerBase player) { if (player.IsAlive()) { GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(player.Delete); } }


	override void HandleBody(PlayerBase player)
	{
		if (player.IsAlive())
		{
			GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(player.Delete);
		}
	}

 

PlayerBase

 

modded class PlayerBase extends ManBase { ref TStringArray restrain_Items = {"HandcuffsLocked","RopeLocked","DuctTapeLocked","MetalWireLocked","BarbedWireLocked"}; override void OnConnect() { super.OnConnect(); if (GetItemInHands()) { if (restrain_Items.Find(GetItemInHands().GetType()) >= 0) { BzRestrtainOnConnect(); } } } override void OnReconnect() { super.OnReconnect(); if (GetItemInHands()) { if (restrain_Items.Find(GetItemInHands().GetType()) >= 0) { BzRestrtainOnConnect(); } } } override bool Save() { if (GetPlayerState() == EPlayerStates.ALIVE ) { GetHive().CharacterSave(this); Debug.Log("Restrained player " + this.ToString() + " saved as alive!"); //типа дебаг return true; } return super.Save(); } void BzRestrtainOnConnect() { EntityAI item_in_hands = GetItemInHands(); //Это не обязательно но пусть будет if(item_in_hands) { SetRestrained(true); OnItemInHandsChanged(); SetSynchDirty(); } } }


modded class PlayerBase extends ManBase
{
	ref TStringArray restrain_Items = {"HandcuffsLocked","RopeLocked","DuctTapeLocked","MetalWireLocked","BarbedWireLocked"};
	
	override void OnConnect()
	{
		super.OnConnect();
		if (GetItemInHands())
		{
			if (restrain_Items.Find(GetItemInHands().GetType()) >= 0)
			{
				BzRestrtainOnConnect();
			}
		}
	}

	override void OnReconnect()
	{
		super.OnReconnect();
		if (GetItemInHands())
		{
			if (restrain_Items.Find(GetItemInHands().GetType()) >= 0)
			{
				BzRestrtainOnConnect();
			}
		}
	}
	
	override bool Save()
	{
		if (GetPlayerState() == EPlayerStates.ALIVE )
		{
			GetHive().CharacterSave(this);
			Debug.Log("Restrained player " + this.ToString() + " saved as alive!"); //типа дебаг
			return true;
		}
		return super.Save();
	}

	void BzRestrtainOnConnect()
	{
		EntityAI item_in_hands = GetItemInHands(); //Это не обязательно но пусть будет
		if(item_in_hands)
		{
			SetRestrained(true);
			OnItemInHandsChanged();
			SetSynchDirty();
		}
	}
}

если вышел в наручниках

то войдя снова будет в наручниках

с ванкунси аналогично

 

Работает чисто серверно

 

НЕ РАБОТАЕТ, КАК ЭТО ИСПРАВИТЬ ЧТОБ РАБОТАЛО?

03.03.2021 в 22:48, BorizzK сказал:

2021-04-21_17-04-46.png.0c77d0bc0af1daf6b5bc4d91fde68632.png2021-04-21_17-05-32.png.b64a513c9c2a1e7515be70b1cb0de70a.png

 

Edited by Balcoz (see edit history)

Share this post


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

 

НЕ РАБОТАЕТ, КАК ЭТО ИСПРАВИТЬ ЧТОБ РАБОТАЛО?

 

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

Share this post


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

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

я скриншоты скинул вот так нужно?

 

Share this post


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

я скриншоты скинул вот так нужно?

 

разумеется нет, в папке мода должна быть папка Addons, и уже в ней должен быть pbo файл

Share this post


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

разумеется нет, в папке мода должна быть папка Addons, и уже в ней должен быть pbo файл

Addons и все или там должны быть папки mission ?

 

Share this post


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

Addons и все или там должны быть папки mission ?

 

🤬

Share this post


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

Addons и все или там должны быть папки mission ?

 

открой любые 5 модов скачанных и сравни структуру, дмаю найдешь что общее у всех 😉

Share this post


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

открой любые 5 модов скачанных и сравни структуру, дмаю найдешь что общее у всех 😉

Бляха муха, туплю точняк, спасибо)

 

Share this post


Link to post
Share on other sites
  • 0

всем привет! вопрос встал) как добавить к этому скрипту функцию, чтобы персонаж не мог сам освободиться? где найти, если есть пример, буду признателен!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • 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.