Spielstunden in Score

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
  • Hast du ein Login/Register System? Wenn nicht dann Arbeite mit dini. Ist ganz einfach :)

  • ja hab ein Login/Register


    das von MrMonat


    stock Register(playerid,key[])
    {


    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    GivePlayerMoney(playerid, 20000);
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SendClientMessage(playerid,BLAU,"Erfolgreich registriert.");
    SetPlayerScore(playerid,0);
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Falsches Passwort.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }
    }


    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    SetPVarInt(playerid,"Autoschein",dini_Int(Spielerdatei,"Autoschein"));
    pInfo[playerid][Bank] = dini_Int(Spielerdatei, "Bank");
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"Autoschein",GetPVarInt(playerid,"Autoschein"));
    dini_IntSet(Spielerdatei,"Motorradschein",GetPVarInt(playerid,"Motorradschein"));
    dini_IntSet(Spielerdatei,"Bank",pInfo[playerid][Bank]);
    }
    return 1;
    }

  • Lesen Bildet oO


    -> SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    hast du schon

  • [ SCRIPTING ] Timer


    hier steht was zu timern drine, dann noch SetPlayerScore(playerid,GetPlayerScore(playerid)+1); zum erhöhen der score um 1

  • Erstmal dort oben:
    forward score();//Den public für timer


    Danach bei ongamemode init damit er gleich beim Server start Passiert:
    // Don't use these lines if it's a filterscript
    SetTimer("score",1000*60*60,true);
    //Score ist der name den wir oben definiert haben!
    //1000*60*60 Das sind 60 Minuten kannst auch 10 Machen wie du willst!
    //true fals es sich wieder holen soll!


    Und danach ein public um dies auszuführen:
    public score(playerid)
    {
    SetPlayerScore(playerid,GetPlayerScore(playerid)+1);
    SendClientMessage(playerid,0xFFFFFFFF,"Dein Level würde erhöht");
    return 1;
    }


    Ich hoffe ich konnte dir helfen.




    MFG K44n

    Ich Scripte nicht mehr!
    Signatur zuletzt Aktualiesiert:11.07.2012





    MFG K44n

  • forward score(playerid);


    // Unter OnPlayerConnect:
    SetTimerEx("score",1000*60*60,true,"i",playerid);


    // Weiter unten:
    public score(playerid)
    {
    SetPlayerScore(playerid,GetPlayerScore(playerid)+1);
    SendClientMessage(playerid,0xFFFFFFFF,"Dein Level würde erhöht");
    return 1;
    }
    So ist das richtig. Bei dem Code von K44N ist playerid in der Deklaration nicht angegeben, und wird auch nirgends in den Timer übergeben, weshalb das nicht funktionieren kann.


    edit K44n: Die Überlegung stimmt schon fast, allerdings muss der Timer bei OnPlayerConnect starten und mit SetTimerEx gearbeitet werden, damit die Playerid übergeben werden kann. Der Error kommt daher, dass sich "forward score();" und "public score(playerid)" unterscheiden. Nämlich weil der Public einen Parameter hat, der beim Forwarden nicht beschrieben wurde.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Playerid ist ein Integer, bzw. eine Zahl. Das i steht dann soz. für das "Format" der Variable (ob String, Integer, Float, ...) die übergeben wird, wie ich das jetzt erklären würde.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger