Hallo,
ich habe mit einem ziemlich komischen Problem zu tun, dessen Ursache mir völlig unklar ist und das total willkürlich auftritt. Es passiert beim Teleportieren in einem Auto.
Wenn ich mich im Auto mal teleportiere, dann klappt das in der Regel zu 90%. Allerdings kommt es gelegentlich vor, dass der Teleport nicht durchgeführt wird, sprich: Die Position wird nicht gesetzt, aber das Geld wird abgezogen (siehe ab Zeile 21).
Das hier ist die Funktion zum Teleportieren. Das spart mir unter den eigentlichen CMDs Unmengen an Zeilen.
stock AddTeleport(playerid, cmdtext[], Float:PedX, Float:PedY, Float:PedZ, Float:PedA, Float:VehX, Float:VehY, Float:VehZ, Float:VehA, bool:buffer, bool:spawnprotect, worldid = 0, interiorid = 0)
{
if(PlayerActionForbidden(playerid)) return 1;
if(IsPlayerInDownState[playerid]) return SendLanguageMessage(playerid, C_RED, "»WARNUNG« Bitte warte, bis du wieder respawnst.", "»WARNING« Please wait until you respawn.");
if(buffer) if(BufferCMD(playerid)) return 1;
new Float:distance = (GetPlayerDistanceFromPoint(playerid, PedX, PedY, PedZ) / 10);
new intDistance = floatround(distance, floatround_round);
if(GetPlayerMoney(playerid) >= intDistance)
{
if(spawnprotect == true)
{
SavePlayerHPandAP(playerid);
SetSpawnProtection(playerid);
}
if(!IsPlayerInAnyVehicle(playerid))
{
SetPlayerPos(playerid, PedX, PedY, PedZ);
SetPlayerFacingAngle(playerid, PedA);
}
else if(IsPlayerInAnyVehicle(playerid))
{
SetPlayerPos(playerid, PedX, PedY, PedZ);
SetVehiclePos(GetPlayerVehicleID(playerid), VehX, VehY, VehZ);
SetVehicleZAngle(GetPlayerVehicleID(playerid), VehA);
PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0);
}
GivePlayerMoneyEx(playerid, -intDistance);
SetPlayerVirtualWorld(playerid, worldid);
SetPlayerInterior(playerid, interiorid);
SetCameraBehindPlayer(playerid);
UpdateMSG(playerid, cmdtext);
}
else
{
new stringDE[64],
stringEN[64];
format(stringDE, sizeof(stringDE), "»WARNUNG« Du hast nicht genug Geld! "#C_DARK_RED_E"(%d$)", intDistance);
format(stringEN, sizeof(stringEN), "»WARNING« You don't have enough money! "#C_DARK_RED_E"(%d$)", intDistance);
SendLanguageMessage(playerid, C_RED, stringDE, stringEN);
}
return 1;
}
Ein Beispiel für einen Teleport wäre dann das hier.
COMMAND:ls(playerid, params[])
{
AddTeleport(playerid, "/ls", 2492.7268, -1668.3849, 13.3438, WEST, 2492.7268, -1668.3849, 13.3438, WEST, true, true, 0, 0);
return 1;
}
Ich hoffe, jemand kann mir helfen!