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
Doki

Скрипт для телепортации игрока, возможно ли???

Возможно ли сделать скрипт для телепортации игрока? Допустим активация триггера должна происходить  при наличии игрока в в определенной зоне "А", и телепортировать игрока в зону "Б". 

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts










  • 0

Doki накатаю чуть позджее - сейас немного занят

Share this post


Link to post
Share on other sites
  • 0

void fnc_Check_Players_Zone()
{
	vector coords_zone = "0 0 0";
	float dist_zone = 100;
	vector coords_tp = "0 0 0";

	array<Man> players = new array<Man>; 
	GetGame().GetPlayers( players ); 
	
	for ( int i = 0; i < players.Count(); i++ ) 
	{ 
		Man player = players.Get(i);
		if( player ) 
		{
			PlayerIdentity p_identity = player.GetIdentity();
			if(p_identity)
			{
				private string Name_P = p_identity.GetName();
				private string UID_P = p_identity.GetPlainId();
				if(Check_player_in_zone(player,coords_zone,dist_zone))
				{
					(PlayerBase.Cast(player)).SetPosition(coords_tp);
					Print("Player " + Name_P + "(" + UID_P + ") teleported to " + coords_tp.ToString());
				} else
				{
					//Print("");
				}
			}
		}
	}
	players.Clear();
}

bool Check_player_in_zone(Man player, vector coords_zone, float dist_zone) 
{
	PlayerIdentity p_identity = player.GetIdentity();
	private vector coords_player = player.GetPosition();
	if ( (vector.Distance(coords_player, coords_zone)) < dist_zone )
	{
		return true;
	} else
	{
		return false;
	}
}	

Остается тока вызов дописать для функции fnc_Check_Players_Zone() и заполнить параметры

vector coords_zone = "0 0 0";
	float dist_zone = 100;
	vector coords_tp = "0 0 0";

 

Share this post


Link to post
Share on other sites
  • 0

123new большое спасибо, вечерком дома проверю.

float dist_zone = 100; -это дистанция(радиус) до центра точки на какой срабатывает триггер?

Share this post


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

123new большое спасибо, вечерком дома проверю.

float dist_zone = 100; -это дистанция(радиус) до центра точки на какой срабатывает триггер?

верно

Share this post


Link to post
Share on other sites
  • 0

скрипт не сработал.

в init.c 

Цитата

#include "C:\Games\DayZServer\mpmissions\dayzOffline.chernarusplus\teleport.c"
блаблабла.....
}

void main()
{
блаблабла.....
    fnc_Check_Players_Zone();

}
 

и сам скрипт

Цитата

void fnc_Check_Players_Zone()
{
    vector coords_zone = "739.593 6.1285 1858.85";
    float dist_zone = 2;
    vector coords_tp = "1058.1 84.3826 1805.81";

    array<Man> players = new array<Man>; 
    GetGame().GetPlayers( players ); 

 

Edited by Doki (see edit history)

Share this post


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

скрипт не сработал.

в init.c 

и сам скрипт

 

Естественно не сработал, так как функция main() срабатывает непосредственно при самом запуске сервера. Т.е. у вас сервер запускается, прогружается миссия сервера, и в конце прогрузки сервера один раз выполняется функция fnc_Check_Players_Zone()
Вы чем думаете, когда код бездумно вставляете? Ну хоть немного то можно поразмыслить, что если нам надо постоянно точку проверять на наличие игроков, то и функция должна соответственно выполняться по циклу постоянно с повтором?
Или вы хотите, как говорится, на блюдичке с голубой каемочкой, да в розовой окантовке?

Share this post


Link to post
Share on other sites
  • 0

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

Благо шедулер ща вроде норм работает

Share this post


Link to post
Share on other sites
  • 0

BorizzK Спасибо за подсказку, прикрутил обновление скрипта через CallLater и еще сообщение игроку добавил!

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.