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

Продаёте или покупаете?

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

Телепорт игрока при выходе или релоге в определённом квадрате

Вопрос

Всем привет! Ребята, никак не могу найти скрипт(а он скорее всего есть): телепорт игрока при выходе или релоге в определённом триггере,  в определённую точку или за триггер. Такой скрипт установлен на моде Origins, там при релоге или выходе на секторе Б, игрока, при следующем заходе на сервер телепортирует за территорию сектора.

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


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

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

  • 0
pos = getpos player;
sector = [ x, y, z]; //координаты центра зоны
radius = 100; //радиус зоны
teletort_coord = [x,y,z]; //координаты куда тпшить
if ((pos distance sector) <= radius) then {player setpos teleport_coord};
 

 

это первое, что пришло в голову

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


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


  • 0

 

pos = getpos player;
sector = [ x, y, z]; //координаты центра зоны
radius = 100; //радиус зоны
teletort_coord = [x,y,z]; //координаты куда тпшить
if ((pos distance sector) <= radius) then {player setpos teleport_coord};
 

 

это первое, что пришло в голову

а не подскажешь как это прописать и куда?

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


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

Думаю надо создать .sqf файл, и в init.sqf прописать его запуск

да вот не уверен я что то.... проверю

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


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

 

pos = getpos player;
sector = [ x, y, z]; //координаты центра зоны
radius = 100; //радиус зоны
teletort_coord = [x,y,z]; //координаты куда тпшить
if ((pos distance sector) <= radius) then {player setpos teleport_coord};
 

 

это первое, что пришло в голову

 

Думаю надо создать .sqf файл, и в init.sqf прописать его запуск

неа.... не работает((

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


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

Надеюсь координаты задал? Лог в студию...

Ахах))) Я внимательный, вообще))) На teletort то внимания  не обратил))

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


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

Надеюсь координаты задал? Лог в студию...

а лог вообще молчит... никакого упоминания о данном файле или ещё что то...

В init.sqf подключил так(в самом низу):

execVM "teleport.sqf";

код самого teleport.sqf

pos = getpos player; 
sector = [16436.162,18356.584,0]; //координаты центра зоны 
radius = 1500; //радиус зоны 
teleport_coord = [18075.406,19223.268,0]; //координаты куда тпшить 
if ((pos distance sector) <= radius) then {player setpos teleport_coord};

Корды пробовал прописать и так:

[16436.162, 0, 18356.584];

Результат тот же....

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
pos = getpos player; 
sector = [16436,18356]; //координаты центра зоны 
radius = 1500; //радиус зоны 
teleport_coord = [18075,19223]; //координаты куда тпшить 
if ((pos distance sector) <= radius) then {player setpos teleport_coord};

Попробуйте так

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


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

 

pos = getpos player; 
sector = [16436,18356]; //координаты центра зоны 
radius = 1500; //радиус зоны 
teleport_coord = [18075,19223]; //координаты куда тпшить 
if ((pos distance sector) <= radius) then {player setpos teleport_coord};

Попробуйте так

не работает....(

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


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

Радиус зоны задан 1500 м, расстояние между точками около 1390 метров. Попробуй задать либо меньший радиус либо точку куда тпшить перенеси дальше. Где и как подключаешь скрипт...  Что в логе на клиенте. Добавь вывод диагностического сообщения в лог. А может быть у тебя античит блокирует это перемещение, думаяя, что  это чит-тп

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

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


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

Радиус зоны задан 1500 м, расстояние между точками около 1390 метров. Попробуй задать либо меньший радиус либо точку куда тпшить перенеси дальше. Где и как подключаешь скрипт...  Что в логе на клиенте. Добавь вывод диагностического сообщения в лог. А может быть у тебя античит блокирует это перемещение, думаяя, что  это чит-тп

подключаю в init.sqf:  execVM "teleport.sqf"; 

Не античит. Т.к. меня, как админа, тоже не телепортит. А RPT вообще молчит по поводу данного файла

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


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

подключаю в init.sqf:  execVM "teleport.sqf"; 

где конкретно?

 

 А RPT вообще молчит по поводу данного файла

 

diag_log format ["Игрок внутри сектора, тпшим его..."];
 

Вставь в скрипт... И смотри в логе на клиенте данную строку...

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
_player = vehicle player;
_pos = getpos _player; 
_sector = [16436,18356,0];
_radius = 1500;
_coord = [18075,19223,0];
if ((_pos distance _sector) <= _radius) then {
_player setpos _coord
};
sleep 2;
if (_pos distance _coord) then {
diag_log format ["Игрок был телепортирован в зону %1" , _coord];
} else {
diag_log format ["Ошибка"];
};

Попробуй так

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

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


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

Как вариант, почему может не работать - это выполнение скрипта до полной загрузки игрока, тоесть позиция игрока еще в дебаг зоне и он не был перемещен по своим последним сохранненым координатам. Как вариант можно поставить длинный слип, секунд на 10 или больше. Но тогда возможен вариант когда игрок прогрузился, начал бегать и его будет тпшить. Лучше сделать так:

 

waituntil {!(dayz_clientPreload && dayz_authed)};
 

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


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

 

Как вариант, почему может не работать - это выполнение скрипта до полной загрузки игрока, тоесть позиция игрока еще в дебаг зоне и он не был перемещен по своим последним сохранненым координатам. Как вариант можно поставить длинный слип, секунд на 10 или больше. Но тогда возможен вариант когда игрок прогрузился, начал бегать и его будет тпшить. Лучше сделать так:

 

waituntil {!(dayz_clientPreload && dayz_authed)};
 

if (hasInterface) then { }; так короче)

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


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

Абсолютно не верно. Эта команда позволяет определить тип клиента, а не степень загрузки персонажа.

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


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

if (hasInterface) then { }; так короче)

Тоже нужен такой скрипт как в конечном итоге должен выглядеть код полностью?

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
[] spawn {
	waituntil {!(dayz_clientPreload && dayz_authed)};
	_pos = getpos player; 
	_sector = [16436, 18356, 0]; //координаты центра зоны 
	_radius = 1500; //радиус зоны 
	_teleport_coord = [18075, 19223, 0]; //координаты куда тпшить 
	if ((_pos distance _sector) <= _radius) then 
	{
		player setpos _teleport_coord;
	};
};

вставить в самом низу init

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


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

 

[] spawn {
	waituntil {!(dayz_clientPreload && dayz_authed)};
	_pos = getpos player; 
	_sector = [16436, 18356, 0]; //координаты центра зоны 
	_radius = 1500; //радиус зоны 
	_teleport_coord = [18075, 19223, 0]; //координаты куда тпшить 
	if ((_pos distance _sector) <= _radius) then 
	{
		player setpos _teleport_coord;
	};
};

вставить в самом низу init

Спасибо попробую напишу результат 

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


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

Спасибо попробую напишу результат 

не работает к сожалению 

вот мой код с координатами 

   

 

 [] spawn {
    waituntil {!(dayz_clientPreload && dayz_authed)};
    _pos = getpos player; 
    _sector = [13678.7,3004.33,0]; //координаты центра зоны 
    _radius = 1500; //радиус зоны 
    _teleport_coord = [5026.77,2346.09,0]; //координаты куда тпшить 
    if ((_pos distance _sector) <= _radius) then 
    {
        player setpos _teleport_coord;
    };
};
 

 

Код прописал этот в Init в самом низу
Изменено пользователем TheFirstNoob (история изменений)

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Akie
      Вопрос в чем, как тому или иному предмету дать свойство, чтобы при использовании в инвентаре он удалялся и давал хумку, пытался сделать сам, сделал удаление предмета через функцию player removeMagazine, потом проверку на количество хумки, то есть, если хумка больше 2500 то _positive, если меньше то _negative, прописал выдачу в зависимости от условия к примеру :
      if (_Positive) then { player setVariable["humanity",(_HumanityVal+5000),true] }; прикрутил экзекут скрипта к Overwrites click actions, кнопка появилась, но при нажатии, ничего не происходит, ни удаления предмета, ни начисления хуманити, куда копать?

      Понимаю, что чего-то не хватает, а вот чего понять не могу, вот сам скрипт:
       
      private ["_item","_HumanityVal","_Negative","_Positive"] _item = "Итем класс нейм"; player removeMagazine _item; _HumanityVal = player getVariable["humanity",0]; if (_HumanityVal <= -2500) then {_Negative = true;}; if (_HumanityVal >= 2500) then {_Positive = true;}; if (_Positive) then { player setVariable["humanity",(_HumanityVal+5000),true] }; if (_Negative) then { player setVariable["humanity",(_HumanityVal-5000),true] }; Подскажите пожалуйста, что не так)
    • Автор: BorizzK
      Пишу мод для стримеров и сериальщиков (наши оч попросили и пара ютьюберов)
      Управление камерой с регулированием fov и тп включая углы итп
      Все почти отлично
      Столкнулись с проблемой
      С фрикамеры когда крупным планом беседу снимаешь не видно (нет анимации) движения губ. Жестикуляция и голос есть, а движения губ нет, только если перса оператора прям рядом поставить, тогда есть, но он в кадр в некоторых моментах попадает, а этого не нужно. Если удалить обьект перса оператора, то норм, но иногда сервак с ума сходит.
      А когда операторов 2 - 3, то ваще фигня иногда начинается вплоть до краша...
       
      Может кто в курсе, где расстояние, радиус синхры настроить можно?
       
       
    • Автор: DrTauren
      На нашем сайте предусмотрена возможность рекламирования вашего игрового сервера/сайта/програмного обеспечения при помощи баннеров и ссылок.
       
      Баннеры под первым сообщением темы ↓
       
      Баннер на главной странице (над чатом) ↓
       
      Ссылки над первым сообщением темы ↓
       
      Ссылка на главной странице (над чатом) ↓
       
       

      Заявку вы можете заполнить в этой же теме, либо написать мне в ЛС.
      Любые сообщения не по теме запрещены.
    • Автор: 123new
      В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления о присоединении и отсоединении игроков, а также логировать их данные.
       
      Нам понадобится:
      1. Сервер DayZ 1.0, сделанный по одному из гайдов:
      2. Notepad++
      3. Немножечко трезвого ума
       
      Приступим:
      1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
      2. В самом начале файла добавляем:
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\ConnectDisconnectMessagesInChat.c" Обратите внимание, имя папки с активной mpmissions сервера у вас может отличаться от стандартного названия  dayzOffline.chernarusplus - в таком случае в ссылке выше имя этой папки также надо заменить (это актуально в основном для серверов аренды)
      3. Помещаем в папку файл
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Либо создаем вручную этот файл с именем " "ConnectDisconnectMessagesInChat.c" и заполняем его следующим текстом:
      modded class CustomMission { void SendGlobalChatMessage(string message) { private array<Man> players = new array<Man>; GetGame().GetPlayers( players ); int numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { foreach(Man player: players) { SendPersonalMessage(message, player); } //GetGame().ChatPlayer(message); } } void SendPersonalMessage(string message, Man player) { if(( player ) && (message != "")) { Param1<string> m_GlobalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_GlobalMessage, true, player.GetIdentity()); } } override void InvokeOnDisconnect( PlayerBase player ) { private PlayerIdentity identity = NULL; identity = player.GetIdentity(); if (player && identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string message = "[Информация] Игрок " + Name_P + " отключился от сервера."; private string log_message = "[Disconnect] Player " + Name_P + " with Steam64ID: " + UID_P + " disconnected from server."; //GetGame().ChatPlayer(message); SendGlobalChatMessage(message); Print(log_message); } super.InvokeOnDisconnect( player ); } override void InvokeOnConnect(PlayerBase player, PlayerIdentity identity) { super.InvokeOnConnect(player, identity); private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string message = "[Информация] Игрок " + Name_P + " Зашёл на сервер."; private string log_message = "[Connect] Player " + Name_P + " with Steam64ID: " + UID_P + "connected to server."; //GetGame().ChatPlayer(message); SendGlobalChatMessage(message); Print(log_message); } } 4. Настраиваем текст как нам нужно. Т.е. в строках для чата
      private string message = "[Информация] Игрок " + Name_P + " отключился от сервера."; и
      private string message = "[Информация] Игрок " + Name_P + " Зашёл на сервер."; а также для логов
      private string log_message = "[Disconnect] Player " + Name_P + " with Steam64ID: " + UID_P + " disconnected from server."; и
      private string log_message = "[Connect] Player " + Name_P + " with Steam64ID: " + UID_P + "connected to server."; P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!
       
×
×
  • Создать...