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

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

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

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

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

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

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

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


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

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






  • 0

BorizzK  А есть примеры?

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


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

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 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";

 

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


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

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

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

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


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

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

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

верно

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


Ссылка на сообщение
Поделиться на других сайтах
  • 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 ); 

 

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

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


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

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

в init.c 

и сам скрипт

 

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

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


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

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

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

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


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

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

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

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

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

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