Sanitäter Fraktion

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
  • Hey leute ich habe ein total problem..
    Irgendwie wird wegen der Sanitäter Fraktion Account-Daten überschrieben.
    Das bedeutet:
    Jemand ist in der Fraktion, loggt sich aus und ein neuer User loggt sich ein, und hat den Account des Sanitäters.
    Erst hatte ich das Problem bei dem normalen Spawn gesucht jedoch hatte ich das Gründlich gesucht und es war richtig. Dann haben wir es sogemacht, das wir die Fraktion gesperrt haben.
    Bis jetzt haben wir keinen Fehler.
    Jetzt haben wir einen Neuen Leader, und es Funktioniert wieder nicht. Also lag es nicht nur an dem Alten leader, sondern meiner Meinung nach an der Fraktion.




    Hier ist mal der Code:


    if(MedicCall < 999) {
    if(IsPlayerConnected(MedicCall))
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(MedicCall, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* %s hat den Anruf von %s entgegengenommen.",sendername,giveplayer);
    SendFamilyMessage(10, COLOR_LIGHTBLUE, string);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Du hast 120 Sekunden Zeit.");
    format(string, sizeof(string), "* Taxifahrer %s hat ihren Anruf entgegengenommen und wird bald bei ihnen eintreffen.",sendername);
    SendClientMessage(MedicCall, COLOR_LIGHTBLUE, string);
    MedicCallTime[playerid] = 1;
    MedicCall = 999;
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Niemand hat ein Taxi angefordert!");
    return 1;
    }
    }
    }
    else if(strcmp(x_job,"Polizei",true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
    {
    if(OnDuty[playerid] == 1)
    {
    if(MedicCallTime[playerid] > 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast bereits einen Notruf entgegengenommen!");
    return 1;
    }
    if(MedicCall < 999)
    {
    if(IsPlayerConnected(MedicCall))
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(MedicCall, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* %s hat den Anruf von %s entgegengenommen.",sendername,giveplayer);
    SendRadioMessage(1, COLOR_LIGHTBLUE, string);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Du hast 120 Sekunden Zeit.");
    format(string, sizeof(string), "* Polizist %s hat ihren Anruf entgegengenommen und wird bald bei ihnen eintreffen.",sendername);
    SendClientMessage(MedicCall, COLOR_LIGHTBLUE, string);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(MedicCall, X, Y, Z);
    SetPlayerCheckpoint(playerid, X, Y, Z, 5);
    MedicCallTime[playerid] = 1;
    MedicCall = 999;
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Niemand hat einen Streifenwagen angefordert!");
    return 1;
    }
    }
    }
    }
    else if(strcmp(x_job,"medic",true) == 0)
    {
    if(PlayerInfo[playerid][pMember] == 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    if(MedicCallTime[playerid] > 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast bereits einen Notruf entgegengenommen!");
    return 1;
    }
    if(MedicCall < 999)
    {
    if(IsPlayerConnected(MedicCall))
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(MedicCall, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* %s hat den Anruf von %s entgegengenommen.",sendername,giveplayer);
    SendRadioMessage(4, COLOR_LIGHTBLUE, string);
    //SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Du hast 120 Sekunden Zeit.");
    format(string, sizeof(string), "* Sanitäter %s hat ihren Anruf entgegengenommen und wird bald bei ihnen eintreffen.",sendername);
    SendClientMessage(MedicCall, COLOR_LIGHTBLUE, string);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(MedicCall, X, Y, Z);
    SetPlayerCheckpoint(playerid, X, Y, Z, 5);
    MedicCallTime[playerid] = 0;
    MedicCall = 999;
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Niemand hat einen Sanitäter angefordert!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein Sanitäter!");
    return 1;
    }
    }
    http://pastebin.com/aRpTQ0JV


    Das Taxi darüber habe ich einfach nur mit reingenommen damit ihr den Übergang seht



    Ich hoffe ihr könnt mir helfen.


    Mfg
    CaRaDoN

    3 Mal editiert, zuletzt von seegras () aus folgendem Grund: Quelltext in Beitrag editiert - wozu haben wir schliesslich [pwn][/pwn]

  • Es könnte daran liegen, dass eine oder mehrere Variablen beim Logout bzw. bei OnPlayerDisconnect nicht (korrekt) zurückgesetzt werden.
    Am besten du prüfst das mal, idealerweise indem du den Code debuggst.
    [ SCRIPTING ] Debugnachrichten


    Es ist häufig die Ursache solcher komplexen Probleme, dass einfach ein oder mehrere Werte nicht (korrekt) zurückgesetzt werden, sei es durch ein return an der falschen Stelle, oder wegen der Sprengung eines Arrays (zu großer Index, oder negativer Index).

  • Hey,
    Danke für deine Antwort.


    Ich werde mich da dann wohl nochmal in ruhe ran setzen müssen^^.


    Aber das müsste doch dann bei allen oder bei mehreren Fraktionen sein oder?



    Das Problem ist, ich hab das Script nicht so selbst gemacht sondern von unserem Alten scripter Bekommen da er keine Zeit mehr hat und ich muss mich da erstmal reindenken^^

  • Es kann durchaus sein, dass es bei allen Fraktionen so ist, muss aber nicht sein.
    Du kannst es ja mit zwei verschiedenen Fraktionen testen, dann weißt du es gleich.


    Generell ist bei beiden Varianten das Debuggen die beste Möglichkeit um die Fehlerstelle zu finden und im besten Fall auch sofort zu beheben.

  • äh nene ist nur bei Sanitäter das weis ich soweit.. Dafür haben wir es lange genug getestet aber wir haben es halt nicht von den Fraktionen abgeleitet.
    Aber jetzt haben wir die Sanis lang genug raus.

  • Dann ist das Debuggen etwas schwieriger, denn du kannst es nur mit der einen Fraktion testen und musst die Werte genau beachten.


    Am besten du debuggst es mal und meldest dich dann nochmal, entweder für Nachfragen oder wenn du es geschafft hast.