Я хочу представить вашему вниманию систему пикапов-порталов.
С помощью системы можно с легкостью создавать пикапы Вход-Выход с возможностью телепортироваться в виртуальные миры и интерьеры.
Функция:
PHP код:
CreatePortal(Float:X, Float:Y, Float:Z, Float:A, Int, Virt, Float:ToX, Float:ToY, Float:ToZ, Float:ToA, ToInt, ToVirt, Key = -1)
Разбор:
X - Координата X входа.
Y - Координата Y входа.
Z - Координата Z входа.
A - Координата Angle входа. (угол поворота игрока)
Int - Интерьер входа.
Virt - Виртуальный мир входа.
ToX - Координата X выхода.
ToY - Координата Y выхода.
ToZ - Координата Z выхода.
ToA - Координата Angle выхода. (угол поворота игрока)
ToInt - Интерьер выхода.
ToVirt - Виртуальный мир выхода.
Key - ID Клавиши при нажатии которой игрок пройдет через портал. (Если параметр не указан игрок пройдет через портал без нажатия клавиши)
Функция возвращает ID портала.
В координатах X,Y,Z,A,Int,Virt создается портал(пикап) который является входом.
В координатах ToX,ToY,ToZ,ToA,ToInt,ToVirt создается портал(пикап) который является выходом.
Если игрок стоит на координатах входа то его переместит на координаты выхода,
если же игрок стоит на координатах выхода то его переместит на координаты входа.
Key - Это клавиша по нажатию которой произойдет вход/выход, если это параметр не указан или указано -1 то игрок пройдет без нажатия клавиши.
CallBack:
PHP код:
forward OnPlayerPortal(playerid, portalid, side);
Разбор:
playerid - ID игрока.
portalid - ID портала.
side - Действие. 0 - Выход, 1 - Вход.
В public OnPlayerPortal можно выполнять действия после телепортации.
Пример использования:
PHP код:
new Portal[2];
public OnGameModeInit()
{
Portal[0] = CreatePortal(-2026.6503,-102.0512,35.1641,359.2226, 0, 0, -2027.1029, -103.8649, 1035.1719, 123.1587, 3, 10); //Двор Автошколы SF - Автошкола SF
Portal[1] = CreatePortal(-2029.7428, -119.6036, 1035.1719, 1.7291, 3, 10, -2029.8539, -120.5209, 35.1693, 171.8475, 0, 0); //Автошкола SF - Автодром автошколы SF
return 1;
}
public OnPlayerPortal(playerid, portalid, side)
{
if(portalid == Portal[0] && side == 1) SendClientMessage(playerid, 0xFFFF00AA, "Вы зашли в автошколу.");
if(portalid == Portal[0] && side == 0) SendClientMessage(playerid, 0xFFFF00AA, "Вы вы вышли из автошколы.");
if(portalid == Portal[1] && side == 1) SendClientMessage(playerid, 0xFFFF00AA, "Вы вы вышли на автодром.");
if(portalid == Portal[1] && side == 0) SendClientMessage(playerid, 0xFFFF00AA, "Вы зашли в автошколу с автодром.");
return 1;
}
PHP код:
#define pps_Model 1318 // Модель пикапа
#define pps_Type 1 // Тип пикапа
#define pps_Deact 1500 // Время деактивации после прохода через портал (мс)
#define MAX_PORTALS 100 // Максимальное кол-во порталов
!Примечание: Функцию CreatePortal можно использовать в любой части мода/скрипта, но я рекомендую создавать порталы при инициализации мода/скрипта, то есть в пабликах OnGameModInit или OnFilterScriptInit
Ещё в далёком 2011 году я написал инклуд
Key Teleport System после того как наткнулся на
PPS OFFREAL'a.
В 2013 году я обновил инклуд Key Teleport System и написал инклуд Pickup Teleport System работающий без нажатия клавиши.
И вот 17.07.2015 я объединил эти инклуды в один и назвал его Pickup Portal System(Да простит же меня OFFREAL xD )
Ссылка: http://pastebin.com/Gd0zGaj7
Автор: _[Bupyc]_