Sterne Vergeben

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 ich hab Grade mein befehl neu geschrieben das ein Polizist Sterne mit Grund Geben kann doch nun hab ich ihren wie das Problem wen ich /sterne [ID][Stern Anzahl][Grund] Eingebe das er den Von 1 Anfangen tut.
    wen ich danach aba noch mal den befehl eingebe Zählt er ganz normal weiter also wen ich /sterne 1 1 Test eingebe Zahlt er auch die Sterne nach oben weiter nur nach ein GMX macht er das ihren wie nicht, da fängt er wider bei eins an und Resetet die Andren.
     ocmd:sterne(playerid, params[]) // Sterne Geben
    {
    if(sInfo[playerid][sSpieler_fraktion] == 1 || sInfo[playerid][sSpieler_arbeit] == 1)
    {
    new sterne[6],string[128],grund[64],pID;
    if(sscanf(params,"uds[64]",pID,sterne,grund))return SendClientMessage(playerid,ROT,"[Error]/sterne [Spielername/ID][Sterne][Grund]");
    format(string,sizeof(string),"[Polizei]Du hast %d Sterne von %s erhalten Grund: %s",sterne,SpielerName(playerid),grund);
    if(IsPlayerConnected(pID))
    {
    if(sInfo[pID][sSpieler_wanteds] == 0)
    {
    sInfo[pID][sSpieler_wanteds] = 1;
    sInfo[pID][sSpieler_SternGrund] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,1);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 1)
    {

    sInfo[pID][sSpieler_wanteds] = 2;
    sInfo[pID][sSpieler_SternGrund2] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,2);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 2)
    {
    sInfo[pID][sSpieler_wanteds] = 3;
    sInfo[pID][sSpieler_SternGrund3] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,3);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 3)
    {
    sInfo[pID][sSpieler_wanteds] = 4;
    sInfo[pID][sSpieler_SternGrund4] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,4);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 4)
    {
    sInfo[pID][sSpieler_wanteds] = 5;
    sInfo[pID][sSpieler_SternGrund5] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,5);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 5)
    {
    sInfo[pID][sSpieler_wanteds] = 6;
    sInfo[pID][sSpieler_SternGrund6] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,6);
    SpielerSpeichern(pID);
    }else SendClientMessage(playerid,ROT,"Spieler Hat schon 6 Sterne.");
    }else SendClientMessage(playerid,ROT,"Spieler Nicht Onlien, Gib ihn Über das Control Panel Sterne.");
    }
    else
    {
    SendClientMessage(playerid, ROT, "Du Bist nicht Berechtigt den Befehl zu Nutzen!");
    }
    return 1;
    }


    Kann mir da wer helfen
    lg kifkat

  • Arbeitest du mit PVar?
    Ich denke schon,-m
    Mach unter jedes Spielerspeichern
    SetPVarInt


    Weißte... wenn man keine Ahnung hat, dann sollte man es sein lassen...
    Siehst du da PVars???
    Nein tust du nicht, aber weißte was ich da sehe? Variablen... der Rest erklärt sich dann von selbst.


    Edit:
    @kifkat
    Lädt er es denn dann auch richtig? Weil speichern bringt dir nichts, wenn es nicht geladen wird :D

  • So ein weiterer Versuch :D
    Soweit ich das jetzt verstanden hab, taucht das Problem nach dem GMX auf? Oder taucht es gerade dann nicht auf? Dein Beschreibung ist mir da etwas... naja.. kompliziert^^


    ich versuch es anders
    wen ich 4 Sterne oda weniger oda mehr habe und nach ein GMX soll ich neue bekommen resetet er sie und fängt neu an die Sterne zu vergeben
    //edit
    ja laden tut er sie Wunderbar



  • ocmd:sterne(playerid, params[]) // Sterne Geben
    {
    if(sInfo[playerid][sSpieler_fraktion] == 1 || sInfo[playerid][sSpieler_arbeit] == 1)
    {
    new sterne[6],string[128],grund[64],pID;
    if(sscanf(params,"uds[64]",pID,sterne,grund))return SendClientMessage(playerid,ROT,"[Error]/sterne [Spielername/ID][Sterne][Grund]");
    format(string,sizeof(string),"[Polizei]Du hast %d Sterne von %s erhalten Grund: %s",sterne,SpielerName(playerid),grund);
    if(IsPlayerConnected(pID))
    {
    if(sInfo[pID][sSpieler_wanteds] == 0)
    {
    sInfo[pID][sSpieler_wanteds] = 0;
    sInfo[pID][sSpieler_SternGrund] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,0);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 1)
    {

    sInfo[pID][sSpieler_wanteds] = 1;
    sInfo[pID][sSpieler_SternGrund2] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,1);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 2)
    {
    sInfo[pID][sSpieler_wanteds] = 2;
    sInfo[pID][sSpieler_SternGrund3] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,2);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 3)
    {
    sInfo[pID][sSpieler_wanteds] = 3;
    sInfo[pID][sSpieler_SternGrund4] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,3);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 4)
    {
    sInfo[pID][sSpieler_wanteds] = 4;
    sInfo[pID][sSpieler_SternGrund5] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,4);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 5)
    {
    sInfo[pID][sSpieler_wanteds] = 5;
    sInfo[pID][sSpieler_SternGrund6] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,5);
    SpielerSpeichern(pID);
    }
    else if(sInfo[pID][sSpieler_wanteds] == 6)
    {
    sInfo[pID][sSpieler_wanteds] = 6;
    sInfo[pID][sSpieler_SternGrund6] = grund;
    SendClientMessage(pID,ROT,string);
    SetPlayerWantedLevel(pID,6);
    SpielerSpeichern(pID);
    }else SendClientMessage(playerid,ROT,"Spieler Hat schon 6 Sterne.");
    }else SendClientMessage(playerid,ROT,"Spieler Nicht Onlien, Gib ihn Über das Control Panel Sterne.");
    }
    else
    {
    SendClientMessage(playerid, ROT, "Du Bist nicht Berechtigt den Befehl zu Nutzen!");
    }
    return 1;
    }



    Versuch so

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Mete
    ich weis zwar jetzt nichtw as das mit den Befehl zu tun hat da er sie laden tut aba naja
    SetPlayerWantedLevel (playerid,mysql_GetInt("accounts", "Sterne", "Name", SpielerInfo[playerid][pName]));
    DoNotDisturb
    ich will ein Funktionierendes System haben nicht eins was verbugt ist!
    du musst mir da jetzt aba eins Erklären wieso sollen die Cops den besser aufpassen wen der Befehl bugt?

  • Ich weiß aber du gibst den ja die Wanteds so


    SetPlayerWantedLevel (playerid,mysql_GetInt("accounts", "Sterne", "Name", SpielerInfo[playerid][pName]));


    mach es doch nebenbei so:


    sInfo[playerid][sSpieler_wanteds] = mysql_GetInt("accounts", "Sterne", "Name", SpielerInfo[playerid][pName]));


    dann lädst du den wert auch nebenbei und dein Problem dürfte behoben sein


    ((da ist zu 100% ein fehler drin in der Funktion musst du halt nur ausbessern aber als info reicht es ja aus^^))

  • @Merte
    wen ich das so laden lasse
    sInfo[playerid][sSpieler_wanteds] = mysql_GetInt("accounts", "Sterne", "Name", SpielerInfo[playerid][pName]));
    den lädt er sie erst garnicht :D
    wie auch? er weis ja den nicht Wofür die 3 in der Datenbank steht und was er mit machen muss
    wie gesagt laden tut er sie wie Gewollt nur im Befehl Spackt er rum
    beid en alten Befehl Klappe das alles auch.
    Nur ich musste den neu machen, da wir in unser User Panel was mit einbauen wollen wo die User sehen Können wann sie welschen Stern und warum sie in bekommne Haben sehen Können

  • guck mal du sagst den ja SetPlayerWantedLevel wenn du den im Befehl einen dazu gibtst, setzt du den wert weiter nach oben
    gut wenn du gmx machst wird er auf 0 zurückgesetzt, da er ja nicht weiß wo er stand fängt er mit 0 an wenn du jetzt dafür eine extra funktion machst, wird er nach den gmx den wert beim accountladen behalten


    und so wie ich es dir gerade Gepostet habe, würde er den wert wieder bekommen da du ja deine Abfrage so hast:


    if(sInfo[pID][sSpieler_wanteds] == 4)


    wenn du den auf 5 setzt machst du es ja so:


    sInfo[pID][sSpieler_wanteds] = 4;


    in den fall speicherst du die 4 mit getplayerwantedlevel ab.
    wenn du jetzt nebenbei den wert laden tust dann ist das Problem weg so habe ich das bei mir auch geregelt

  • Jetzt weis ich wie du das meintest :D
    und Klappt auch Hervorragend ich danke dir
    //edit
    wen ich nun mit ein Sterne online komme und gebe 6 Sterne den wirt in der Datenbank 7 eingetragen
    kann man das ihren wie so machen das er Maximal 6 eingetragen werden?
    so hab ich es derzeit drin sInfo[pID][sSpieler_wanteds] += sterne;
    //edit
    Hab eine Lösung gefunden
    danke noch mal das du Geholfen hast

    Einmal editiert, zuletzt von Kevin B. ()

  • Versuch das mal mit PVar's


    Ist zwar schon gelöst, aber dazu muss ich echt noch meinen Kommentar ablassen:
    Geh mal weg mit deinen PVars... PVars sind nicht die Welt, Enums gehen genauso und sind genauso einfach zu händeln... Er hat das Problem mit Enums, und nur weil er dann von seinem Problem flüchtet, indem er PVars benutzt, dann heißt das nicht, dass das Problem gelöst ist.
    Und so nebenbei, das sage ich ja oft genug: Wenn man keine Ahnung hat, dann sollte man einfach mal die Klappe halten, denn du hast ja ganz offensichtlich keine...