Wanteds Speichern sich nicht

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 Com,


    ich bin an meinem Selfmade Script drann aber die Wtds speichern sich igrnedwie nicht...


    Hoffe ihr könnt mir helfen...


    Das ist mein code:


    forward SpielerSpeichern(playerid);
    public SpielerSpeichern(playerid)


    dini_IntSet(Datei,"wantedpunkte",0);


    forward SpielerLaden(playerid);
    public SpielerLaden(playerid)


    SInfo[playerid][wantedpunkte] = dini_Int(Datei,"wantedpunkte");


    dcmd_su(playerid,params[])
    {


    new frak = SInfo[playerid][Fraktion];
    new pID,amount,reason[128];
    if(sscanf(params,"uds",pID,amount,reason))return SendClientMessage(playerid,ROT,"Benutzung: /suspect [ID] [Wanteds] [Grund]");
    if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid,Rot,"Der Spieler ist nicht Online.");
    SetPlayerWantedLevel(pID,GetPlayerWantedLevel(pID)+amount);
    if(frak == 1 || frak == 2 || frak == 3)
    {
    format(str,sizeof(str),"[Info] Verbrecher %s hat von %s %d Wanted bekommen! Grund: %s",SpielerName(pID),SpielerName(playerid),amount,reason);
    SendClientMessage(playerid,Lila,str);
    format(str,sizeof(str),"Beamter %s hat dir %d Wanteds gegeben. Grund: %s",SpielerName(playerid),amount,reason);
    SendClientMessage(pID,Blau,str);
    SpielerSpeichern(pID);
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Cop!");
    return 1;
    }
    return 1;
    }


    Hoffe mir kann wer helfen


    Mfg


    Moritz

  • dini_IntSet(Datei,"wantedpunkte",0);


    Wenn ich mich nicht irre, speichert es immer "0" ab.
    Somit wird beim Laden auch immer 0 ausgelesen.


    Versuch mal das:


    dini_IntSet(Datei,"wantedpunkte",GetPlayerWantedLevel(playerid));
    oder, je nachdem, wie deine Wantedvergabe genau aufgebaut ist:
    dini_IntSet(Datei,"wantedpunkte",SInfo[playerid][wantedpunkte]);


    Aus deinem Code kann ich den Zusammenhang von GetPlayerWantedLevel(playerid) und SInfo[playerid][wantedpunkte] leider nicht ganz nachvollziehen.
    Trotzdem hoffe ich, dass ich dir helfen konnte.

    Berlin - Tel Aviv - Moskau

  • In meinen Scriptfiles stehen sie noch aber die Sterne selber sind nun weg


    //Edit wenn ich relogge sind sie weg und in den files stehen sie noch wenn ich mir neue gebe sind sie weg und die neuen da ^^

  • Hilft dir das:



    public SpielerLaden(playerid)
    {
    SInfo[playerid][wantedpunkte] = dini_Int(Datei,"wantedpunkte");
    SetPlayerWantedLevel(playerid,SInfo[playerid][wantedpunkte]);
    return 1;
    }

    ?


    Wenn die Anzahl jedoch über 6 hinausgeht, werden trotzdem nur 6 angezeigt (mehr sind standartgemäß nicht möglich)

    Berlin - Tel Aviv - Moskau

  • Ich weiss es geht danke, es gibt aber noch ein zweites Problem


    Das /arrest also ich lande bei /arrest nirgendwo!


    dcmd_arrest(playerid,params[])
    {
    new frak = SInfo[playerid][Fraktion];
    new pID,price,time;
    if(frak == 1 || frak == 2 || frak == 3)
    {
    if(sscanf(params,"uii",pID, price, time))
    {
    SendClientMessage(playerid,Rot,"Benutze: /arrest [playerid][preis][zeit]");
    }
    else
    {
    format(str,sizeof(str),"Verbrecher %s wurde von %s für %d Minute/n eingesperrt",SpielerName(pID),SpielerName(playerid),time);
    SendClientMessageToAll(Lila,str);
    format(str,sizeof(str),"Du wurdest für %d Minute/n eingesperrt",time);
    SendClientMessage(pID,Rot,str);
    SInfo[pID][zeiteingesperrt] = time;
    SInfo[pID][wantedpunkte] = 0;
    SInfo[pID][pGeld] -= price;
    SInfo[playerid][pGeld] += price;
    SpielerSpeichern(pID);
    SpielerLaden(pID);
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist doch kein Cop!");
    }
    return 1;
    }


    wie machen das ich wo lange und erst nach der zeit wieder da lande wo ich die positionen eingebe?


    spielspeichern


    dini_IntSet(Datei,"zeiteingesperrt",SInfo[playerid][zeiteingesperrt]);


    Laden:


    SInfo[playerid][zeiteingesperrt] = dini_Int(Datei,"zeiteingesperrt");


    Komme bei der sache ebenfalls nicht weiter

  • Etwas müde, jedoch versuch mal das:


    dcmd_arrest(playerid,params[])
    {
    new frak = SInfo[playerid][Fraktion];
    new pID,price,time;
    if(frak == 1 || frak == 2 || frak == 3)
    {
    if(sscanf(params,"uii",pID, price, time))
    {
    SendClientMessage(playerid,Rot,"Benutze: /arrest [playerid][preis][zeit]");
    }
    else
    {
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Rot,"Spieler nicht online!");
    format(str,sizeof(str),"Verbrecher %s wurde von %s für %d Minute/n eingesperrt",SpielerName(pID),SpielerName(playerid),time);
    SendClientMessageToAll(Lila,str);
    format(str,sizeof(str),"Du wurdest für %d Minute/n eingesperrt",time);
    SendClientMessage(pID,Rot,str);
    SInfo[pID][zeiteingesperrt] = time;
    SInfo[pID][wantedpunkte] = 0;
    SInfo[pID][pGeld] -= price;
    SInfo[playerid][pGeld] += price;
    SpielerSpeichern(pID);
    SpielerLaden(pID);
    SetPlayerPos(...);
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist doch kein Cop!");
    }
    return 1;
    }


    Falls du es nicht hast, benötigst du:
    1x Timer, der alle Spieler abfragt, ob sie im Knast sind und jeweils 1 Minute abziehen.


    forward OnMinute();


    public OnGameModeInit()
    {
    SetTimer("OnMinute",60000,1);
    return 1;
    }


    public OnMinute()
    {
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    if(SInfo[i][zeiteingesperrt] > 0)
    {
    // 1 Minute weniger
    SInfo[i][zeiteingesperrt]--;
    }
    if(SInfo[i][zeiteingesperrt] == 0)
    {
    //Befreit
    SetPlayerPos(...);
    }
    }
    }
    return 1;
    }


    EDIT: Sorry, Textformation spinnt und Schreibfehler

    Berlin - Tel Aviv - Moskau

  • Dann wirkt "OnMinute" nicht, da IsPlayerConnected nicht zutrifft und er nicht auf dem Server ist.



    Somit bleibt die Zeit auf die Zahl gesetzt, mit der er zuletzt online war.



    (Geht mit 5 Minuten offline, kommt nach 8 Stunden wieder online, muss trotzdem noch 5 Minuten im Knast sitzen)

    Berlin - Tel Aviv - Moskau

  • also wenn er off geht ist er nach dem login wieder im knast richtig?

  • Kriege nach dem /arrest die wtds weg aber die wanteds kommen nach dem relogg und ich spawne normal am spawn


    Wer kann weiterhelfen?

    2 Mal editiert, zuletzt von S_T_R_A_T_O ()