Teleport verbieten

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
  • COMMAND:ls(playerid, params[])
    {
    if(PlayerActionForbidden(playerid)) return 1;
    if(GetPlayerMoney(playerid) >= 3000)
    {
    new stringDE[128],
    stringEN[128],
    pName[MAX_PLAYER_NAME],
    pVehicle = GetPlayerVehicleID(playerid),
    Float:VehicleAngle;
    GetPlayerName(playerid, pName, sizeof(pName));
    format(stringDE, sizeof(stringDE), "»TELEPORTINFO« {%06x}%s "#C_GOLD_E"hat sich nach Los Santos teleportiert! (/LS)", GetPlayerColor(playerid) >>> 8, pName);
    format(stringEN, sizeof(stringEN), "»TELEPORTINFO« {%06x}%s "#C_GOLD_E"has teleported to Los Santos! (/LS)", GetPlayerColor(playerid) >>> 8, pName);
    SendLanguageMessageToAll(C_GOLD, stringDE, stringEN);
    SetPlayerPos(playerid, 2492.7268, -1668.3849, 13.3438);
    SetPlayerFacingAngle(playerid, WEST);
    SetVehiclePos(pVehicle, 2492.7268, -1668.3849, 13.3438);
    GetVehicleZAngle(playerid, VehicleAngle);
    SetVehicleZAngle(playerid, VehicleAngle);
    PutPlayerInVehicle(playerid, pVehicle, 0);
    GivePlayerMoneyEx(playerid, -3000);
    SavePlayerHPandAP(playerid);
    SetSpawnProtection(playerid);
    }
    else SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du hast nicht genug Geld!", "»WARNING« You don't have enough money!");
    return 1;
    }


    stock PlayerActionForbidden(playerid)
    {
    if(IsPlayerAFK[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du bist AFK. Du kannst keine Aktion durchführen. Melde dich mit /back zurück!", "»WARNING« You are AFK. You can't take any action. Use /back to come back!");
    if(IsPlayerInDM[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du bist schon im DM! Benutze /cancel um das DM zu verlassen!", "»WARNING« You are already in a DM! Use /cancel to exit the DM!");
    if(!UseTeleports[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du kannst im Moment keine Teleports nutzen! (Kampf/Skin Selection/DM-Arena)", "»WARNING« Currently, you can't use teleports! (Fight/Skin Selection/DM-Arena)");
    return 0;
    }


    Es geht hauptsächlich um die stock Funktion. Wenn ein Spieler Schaden nimmt, dann wird die Client Message gesendet (soweit so gut), doch er kann sich noch teleportieren, was er nicht können soll. Errors oder Warnings krieg ich keine, es scheint also ein Logikfehler zu sein.


    Danke schon mal für eure Hilfe!

  • if(PlayerActionForbidden(playerid)) return 1;


    zu:
    if(!PlayerActionForbidden(playerid)) return 1;



    ODER eben:
    stock PlayerActionForbidden(playerid)
    {
    if(IsPlayerAFK[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du bist AFK. Du kannst keine Aktion durchführen. Melde dich mit /back zurück!", "»WARNING« You are AFK. You can't take any action. Use /back to come back!");
    if(IsPlayerInDM[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du bist schon im DM! Benutze /cancel um das DM zu verlassen!", "»WARNING« You are already in a DM! Use /cancel to exit the DM!");
    if(!UseTeleports[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du kannst im Moment keine Teleports nutzen! (Kampf/Skin Selection/DM-Arena)", "»WARNING« Currently, you can't use teleports! (Fight/Skin Selection/DM-Arena)");
    return 1; //1 hier
    }

  • Achso, du gibst da auch nichts zurück, hab ich übersehen.


    stock PlayerActionForbidden(playerid)
    {
    if(IsPlayerAFK[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du bist AFK. Du kannst keine Aktion durchführen. Melde dich mit /back zurück!", "»WARNING« You are AFK. You can't take any action. Use /back to come back!"), return 1;
    if(IsPlayerInDM[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du bist schon im DM! Benutze /cancel um das DM zu verlassen!", "»WARNING« You are already in a DM! Use /cancel to exit the DM!"), return 1;
    if(!UseTeleports[playerid]) SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du kannst im Moment keine Teleports nutzen! (Kampf/Skin Selection/DM-Arena)", "»WARNING« Currently, you can't use teleports! (Fight/Skin Selection/DM-Arena)"), return 1;
    return 0;
    }


    Und:
    if(PlayerActionForbidden(playerid)) return 1;

  • Das ist ja schon mein Ausgangspunkt.^^
    In der stock Funktion ein "return 0;" und im CMD ein "return 1;".
    Ich hab irgendwie das Gefühl, dass es was mit der if-Abfrage zu tun hat...


    EDIT: Sorry, hab das "return 1;" übersehen. Jetzt klappt es, vielen Dank!

    Einmal editiert, zuletzt von Manyula ()