Ha így a teleportokat az OnGameModeInit() alá akarod rakni, akkor az jó hülye megoldás, mert mindent tárolni kell és ciklussal kikeresni, hogy egyezik-e a parancs. ( Bár meglehet másképp is, de akkor is pazarlós módszer ).
Én simán ZCMD-vel használom az összes teleportomat, mindegy teleport \"egy sor\".
Ittvan rá a stock függvényen, próbáld meg ezt átalakítani.
CMD:aa(playerid, params[])
{
NormalTeleEx(playerid, \"Elhagyatott Reptér\", \"aa\", 415.1741, 2524.0662, 16.3035, 88.6967);
return 1;
}
Függvény:
stock NormalTeleEx(playerid, const Message[], const TeleName[], Float:x, Float:y, Float:z, Float:ang = 0.0, interior = 0, worldid = 0)
{
if(NoTele(playerid)) return ShowWelcome(playerid, \"~r~Jelenleg nem telézhetz~w~!\");
new
bool:Boolval,
bool:ChangeWorld = (!GetPVarType(playerid, \"ClearWorld\"));
if(DM_ZONE_WORLD < GetPlayerVirtualWorld(playerid) < DM_ZONE_WORLD + 24)
{
cmd_exitdm(playerid, \"295375\");
}
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
{
Boolval = true;
}
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
vID = GetPlayerVehicleID(playerid);
SetVehiclePos(vID, x, y, z + 1.5);
if(!GetPVarType(playerid, \"Invis\"))
{
LinkVehicleToInterior(vID, interior);
}
SetVehicleZAngle(vID, ang);
if(ChangeWorld) SetVehicleVirtualWorld(vID, worldid);
foreach(Player, i)
{
if(i == playerid) continue;
if(GetPlayerVehicleID(i) == vID)
{
SetPlayerVirtualWorld(i, worldid);
SetPlayerInterior(i, interior);
}
}
}
else
{
DeletePVar(playerid, \"Falled\");
SetPlayerPos(playerid, x, y, z + 1.5);
SetPlayerFacingAngle(playerid, Float:ang);
}
if(Boolval)
{
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
Boolval = false;
}
SetCameraBehindPlayer(playerid);
ShowWelcome(playerid, Message, false);
if(ChangeWorld) SetPlayerVirtualWorld(playerid, worldid);
SetPlayerInterior(playerid, interior);
format(i_str, sizeof(i_str), \"~b~~h~%s(~w~%d~b~~h~) ~>~~>~~>~ ~w~(/%s~w~)\", pName(playerid), playerid, FixGameString(TeleName));
if(TeleTDShowed != -1)
{
KillTimer(TeleTDShowed);
TextDrawHideForAll(Tele0);
}
TextDrawSetString(Tele0, i_str);
TextDrawShowForAll(Tele0);
TeleTDShowed = SetTimer(\"HideTeleTD\", 3000, false);
return PlayerPlaySound(playerid, 1085);
}
Nekem ez a megoldásom:
stock PlayerTeleport(playerid,Float:x,Float:y,Float:z,Cmd[],Message[])
{
SetPlayerPos(playerid,x,y,z);
new stR[200];
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(stR,sizeof(stR),\"%s elteleportált ide: %s [ /%s ]\", pName, Message, Cmd);
SendClientMessageToAll( -1, stR);
GameTextForPlayer(playerid, Message, 1500, 1);
PlayerPlaySound(playerid, 1085, x, y, z);
return 1;
}
Használata:
[pawn]
CMD:ls(playerid)
{
PlayerTeleport(playerid, 1, 2, 3, \"ls\",\"Los Santos\");
}[/pawn]