Frage

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
  • hi


    ich hab ne Frage und zwar, wollte ich mal fragen, ob es möglich ist, mit nem Timer eine Variable in einer Spielerfile zu ändern.
    also man macht nen CMD wo zB Variable a=1 ist und dann startet man nen Timer, der dann die Variable a zB wieder auf 0 setzt. Geht das wenn der Spieler offline ist?

  • jop das geht beispiel


    forward Timer(playerid);



    enum SInfo
    {
    Hallo,
    }
    new SpielerInfo[playerid][SInfo];



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/cmd", cmdtext, true, 4) == 0)
    {
    SpielerInfo[playerid][Hallo] = 1;
    SetTimer("Timer",500,1);//währen 5 sekunden
    return 1;
    }
    return 0;
    }



    public Timer(playerid)
    {
    SpielerInfo[playerid][Hallo] = 0;
    return 1;
    }

    RFT

  • Ehm damit ändert man aber kein Wert in einer Datei, wie er es oben wollte. Damit änderst du die Variable einer "playerid" (das ist kein bestimmter Spieler, sondern einfach der, der drauf kommt).
    Wenn du einen Wert in einer Datei ändern willst, musst du die Datei öffnen, den entsprechenden Wert ändern und die Datei wieder schliessen. Das machst du gleich, wie dus auch beim Login eines Spielers machst. Da überprüfst du auch, ob die Datei des Spielers existiert und lest alle Werte aus...

  • Beispiel:
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    SetTimerEx("Timer",5000,0,"dss",0,"a",name);
    //-----------------
    public Timer(wert,wertin[],name[21]) {
    format(name,sizeof(name),"%s.ini",name);
    if(fexist(name)) {
    dini_IntSet(name,wertin,wert); }
    return 1;
    }
    //----------------
    forward Timer(wert,wertin[],name[21]);

  • hab beide ausprobiert


    €dit: so is der code im moment: forward timebanupdate(wert,wertin[],oname[21]);


    dcmd_timeban(playerid, params[])
    {
    if(PlayerData[playerid][Level] >= 2)
    {
    new opfer,time,reason[128],oname[MAX_PLAYER_NAME];
    if(sscanf(params,"uds",opfer,time,reason)) return SendClientMessage(playerid, COLOR_SYSTEM, "Usage: /timeban [playerid] [hours] [reason]");
    GetPlayerName(opfer,oname,sizeof(oname));
    format(string,sizeof(string),"/fAdmin/Users/%s.ini",oname);
    dini_IntSet(string,"Timeban",time);
    SetTimerEx("timebanupdate",time*60,0,"dss",0,"a",oname);
    return 1;
    }
    else return SendClientMessage(playerid,COLOR_RED,"Admins only!");
    }


    public timebanupdate(wert,wertin[],oname[21])
    {
    format(oname,sizeof(oname),"/fAdmin/Users/%s.ini",oname);
    if(fexist(oname))
    {
    dini_IntSet(oname,"Timeban",0);
    }
    return 1;
    }
    weiss niemand, wieso das nicht klappt?

    2 Mal editiert, zuletzt von Flo_White ()