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
Larryoncheg

Запрет на нахождение игроков за картой

Подскажите, как скриптово, или может есть мод, который запрещает находиться игрокам за пределами карты? 

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Ну можешь например как-то так (проверку на админку уже сам допишешь)

modded class PlayerBase
{
	private const float	CHECK_INTERVAL = 2; // Интервал проверки положения игрока в секундах
	private vector lastPos;
	private float checkCounter;
	
	void OnScheduledTick(float deltaTime)
	{
		super.OnScheduledTick(deltaTime);
		
		if( !IsPlayerSelected() || !IsAlive() ) return;
		
		if (checkCounter >= CHECK_INTERVAL)
		{
			checkCounter = 0;
			
			int liquidType;
			string surfaceType;
			
			GetGame().SurfaceUnderObject(this, surfaceType, liquidType);
			if (surfaceType == "" && liquidType == -1)
			{
				SetPosition(lastPos);
			}
			else
			{
				lastPos = GetPosition();
			}
		}
		else
		{
			checkCounter = checkCounter + deltaTime;
		}
	
	}
	
	override void AfterStoreLoad()
	{
		super.AfterStoreLoad();
		lastPos = GetPosition();
	}
}

 

Edited by nytlenc (see edit history)

Share this post


Link to post
Share on other sites



  • 0

Поддерживаю код выше, добавлю вопрос - что значит "за пределами карты"?

Share this post


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

Поддерживаю код выше, добавлю вопрос - что значит "за пределами карты"?

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

Share this post


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

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

Просто возьми хоть (0 0 0) к примеру, травки там нет, а вот вода есть. Код увидит воду под игроком и всё будет ок

Share this post


Link to post
Share on other sites
  • 0
05.01.2023 в 20:10, nytlenc сказал:

Ну можешь например как-то так (проверку на админку уже сам допишешь)

modded class PlayerBase { private const float CHECK_INTERVAL = 2; // Интервал проверки положения игрока в секундах private vector lastPos; private float checkCounter; void OnScheduledTick(float deltaTime) { super.OnScheduledTick(deltaTime); if( !IsPlayerSelected() || !IsAlive() ) return; if (checkCounter >= CHECK_INTERVAL) { checkCounter = 0; int liquidType; string surfaceType; GetGame().SurfaceUnderObject(this, surfaceType, liquidType); if (surfaceType == "" && liquidType == -1) { SetPosition(lastPos); } else { lastPos = GetPosition(); } } else { checkCounter = checkCounter + deltaTime; } } override void AfterStoreLoad() { super.AfterStoreLoad(); lastPos = GetPosition(); } }


modded class PlayerBase
{
	private const float	CHECK_INTERVAL = 2; // Интервал проверки положения игрока в секундах
	private vector lastPos;
	private float checkCounter;
	
	void OnScheduledTick(float deltaTime)
	{
		super.OnScheduledTick(deltaTime);
		
		if( !IsPlayerSelected() || !IsAlive() ) return;
		
		if (checkCounter >= CHECK_INTERVAL)
		{
			checkCounter = 0;
			
			int liquidType;
			string surfaceType;
			
			GetGame().SurfaceUnderObject(this, surfaceType, liquidType);
			if (surfaceType == "" && liquidType == -1)
			{
				SetPosition(lastPos);
			}
			else
			{
				lastPos = GetPosition();
			}
		}
		else
		{
			checkCounter = checkCounter + deltaTime;
		}
	
	}
	
	override void AfterStoreLoad()
	{
		super.AfterStoreLoad();
		lastPos = GetPosition();
	}
}

 

Работает, спасибо!

Share this post


Link to post
Share on other sites
  • 0
06.01.2023 в 15:45, XenoZD сказал:

Просто возьми хоть (0 0 0) к примеру, травки там нет, а вот вода есть. Код увидит воду под игроком и всё будет ок

Сомневаюсь что игрок сам доплывает до 0 0 0. Или по крайней мере станет пытаться это делать.

Share this post


Link to post
Share on other sites
  • 0

Что я мог сделать не так?

1. Создал файл c этим кодом. Назвал ExitMap.c

2. Через Тулз собрал его в pbo, закинул в папку с серверными модами.

Не работает....

 

Так же видел на каком-то проекте, когда машина приближается к краю карты - она глохнет и надо руками выталкивать её обратно в зону, чтобы завести.

Это мод какой-то есть?

Share this post


Link to post
Share on other sites
  • 0

Разобрался. Получилось. Спасибо.

Осталось разобраться, как прописать игнорировать админа:)

P.S> Да, да, только учусь еще))

 

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.