PDA

Просмотр полной версии : [Function] TelPort - Функция для телепорта



Иван Бубнов
01.06.2016, 21:02
Описание:


Телепортирует игрока в необходимое место.


Параметры:


playerid - ID телепортируемого игрока
Float:x, y, z - координаты x,y,z куда будет телепортирован игрока
Float:angle - угол поворота после телепорта игрока
worldid - ид вирт. мира после телепорта (по умолчанию 0)
interiorid - ид интерьера после телепорта (по умолчанию 0)


Код:

stock TelPort(playerid, Float:x, Float:y, Float:z, Float:angle, worldid = 0, interiorid = 0)
{
new
Float:zx, Float:zy, Float:zz,
vehicleid = GetPlayerVehicleID(playerid);

if(IsPlayerInAnyVehicle(playerid))
{
GetPlayerPos(playerid, zx, zy, zz);
SetPlayerPos(playerid, zx, zy, zz + 2.0);
}

if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{

for(new i = GetPlayerPoolSize() + 1; --i != -1;)
{
if(0 == IsPlayerConnected(i)) continue;
if(GetPlayerSurfingVehicleID(i) == vehicleid)
{
GetPlayerPos(i, zx, zy, zz);
SetPlayerPos(i, zx + 2.0, zy + 2.0, zz + 0.5);
}
if(GetPlayerVehicleID(i) == vehicleid || i == playerid) continue;
SetPlayerInterior(i, interiorid);
SetPlayerVirtualWorld(i, worldid);
}

SetVehiclePos(vehicleid, x, y, z);
SetVehicleZAngle(vehicleid, angle);
LinkVehicleToInterior(vehicleid, interiorid);
SetVehicleVirtualWorld(vehicleid, worldid);

PutPlayerInVehicle(playerid, vehicleid, 0);
SetPlayerVirtualWorld(playerid, worldid);
SetPlayerInterior(playerid, interiorid);

}
else
{
SetPlayerPos(playerid, x, y, z);
SetPlayerFacingAngle(playerid, angle);
SetPlayerVirtualWorld(playerid, worldid);
SetPlayerInterior(playerid, interiorid);
SetCameraBehindPlayer(playerid);
}
return 1;
}

Автор: Иван Бубнов

- - - Добавлено - - -

PS: Если игрок сидит в машине, и сидит на месте водителя, и если в транспорте есть другие игроки, то они будут тоже телепортированы.
PSS: Если на крыше авто кто-нибудь есть, он будет слапнут.
PSSS: Оформление темы украдена у Londlem