Teleport Lag Check

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Beitrag von Manyula ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Also, ich schicke euch mal die ganze Funktion.
    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);
    }
    GivePlayerMoneyEx(playerid, -intDistance);
    SetPlayerPos(playerid, PedX, PedY, PedZ);
    SetPlayerFacingAngle(playerid, PedA);
    SetVehiclePos(GetPlayerVehicleID(playerid), VehX, VehY, VehZ);
    SetVehicleZAngle(GetPlayerVehicleID(playerid), VehA);
    PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0);
    SetPlayerVirtualWorld(playerid, worldid);
    SetPlayerInterior(playerid, interiorid);
    SetCameraBehindPlayer(playerid);
    UpdateMSG(playerid, cmdtext);

    //Lag Check
    new Float:pos[4],
    Float:zpos[4];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    GetPlayerFacingAngle(playerid, pos[3]);
    GetVehiclePos(GetPlayerVehicleID(playerid), zpos[0], zpos[1], zpos[2]);
    GetVehicleZAngle(GetPlayerVehicleID(playerid), zpos[3]);
    if((pos[0] != PedX && pos[1] != PedY && pos[2] != PedZ && pos[3] != PedA) || (zpos[0] != PedX && zpos[1] != PedY && zpos[2] != PedZ && zpos[3] != PedA))
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    SetPlayerPos(playerid, PedX, PedY, PedZ);
    SetPlayerFacingAngle(playerid, PedA);
    }
    else
    {
    SetVehiclePos(GetPlayerVehicleID(playerid), VehX, VehY, VehZ);
    SetVehicleZAngle(GetPlayerVehicleID(playerid), VehA);
    PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0);
    }
    }
    }
    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;
    }


    Das ist eine ganz normale Teleportfunktion mit allerlei Schnickschnack. Manchmal, wenn ich mich teleportieren möchte, werden mir die Teleportkosten zwar abgezogen, aber die Position des Spielers wird nicht gesetzt (siehe Zeilen 17-20) - wahrscheinlich durch Lag. Deswegen möchte ich eine Art "Lag Check" machen (siehe Zeilen 27-47) um nach dem ersten SetPlayerPos zu prüfen, ob die Position des Spielers tatsächlich anders ist.