PayDay System || Problem

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
  • Hallo Community,
    ich brauche bei einem PayDay System einen Rat:
    Mein PayDay System soll so aussehen :
    Wenn Spieler in keiner Fraktion sind, sollen sie nur das Geld von Ihrem Job kriegen(wenn sie einen machen).
    Wenn Spieler in einer FRaktion sind, sollen sie davon Gehalt kriegen (Den ich selber pro Fraktion definieren kann).
    Sie Sollen Pro PayDay(alle 60min) einen "Respektpunkt" dazu bekommen und ab einer bestimmten anzahl von Respektpunken(das sich bei jedem level erhöt) sollten sie automatisch ein Level up kommen.
    Und wenn man ein Haus hat, soll davon auch das Geld abgezogen werden.


    Das Problem, ich weiß garnicht, wie ich damit anfangen soll und wie ich das am besten anstelle.
    P.S ich arbeit mit mySQL anstatt mit Dini.
    P.S Wenn ihr eins Kennt, nehme ich auch gerne Filterscripts


    MfG CreshyHD

  • Du hast doch ein Konzept, ich frage mich wieso du nicht weißt, wie du anfangen sollst.
    Ich helfe dir ein wenig auf die Sprünge:


    Als erstes kannst du einen Timer erstellen, der jede Minute wiederholt wird und die Paydayzeit bei jedem um 1 "erhöht". Bei 60 kannst du dann bei dem Spieler einen Payday durchführen. Dort kommt dann alles rein, was du da oben geschrieben hast. Die Rechnung und die Abfragen.


    Das sollte schonmal ein guter Anfang sein. Der Rest kommt eigentlich von selbst.

    Mit freundlichen Grüßen
    Zeuto

  • Du erstellst in deinem SpielerEnum eine neue Variable pPayday und die Variable pPaydaytimer. Wenn er sich erfolgreich eingeloggt hat startest du einen Timer der die Variable jede minute um 1 erhöht. Wenn er 60 erricht hat sezt du sie wieder auf 0 und gibts im geld usw. Bei Onplayerdissconnect stoppst du den Timer und speicherst die paydaytime in Mysql. Fertig

  • Du legst in deiner mysql tabelle eine neue spalte an mit dem namen "payday" und liest diese beim connecten aus. Dann erstellst du einen Timer und zwar so:
    DeineVariable [playerid][pPaydaytimer] = SetTimerEx ("Payday", 1000*60, true, "d", playerid);


    Dann erstellst du den Public mit dem forward


    forward Payday (playerid);
    public Payday (playerid)
    {
    DeineVariable [playerid][pPayday]++;
    if (DeineVariable [playerid][pPayday] == 60)
    {
    /*payday geben */
    DeineVariable [playerid][pPayday] = 0;
    }
    return 1;
    }


    Und bei Onplayerdissconnect


    KillTimer (DeineVariable [playerid][pPaydaytimer]);

  • Zuerst musst du die Variablen definieren, da ich nicht weiß, wie du das in deinem Script machst, habe ich das nun so gemacht:


    new pPayday[MAX_PLAYERS]; //Das Geld, das er verdient hat
    new pPaydayTime[MAX_PLAYERS]; //Die Zeit, die vergangen ist
    Dann musst du für den Timer das public forwarden:
    forward payday_Timer(); //Das Public forwarden
    In OngameModeInit musst du nun den Timer auch starten:
    public OnGameModeInit()
    {
    SetTimer("payday_Timer", 1000*60, true); //1000*60 = 1 Minute
    }

    So und nun kommt der Payday an sich:
    public payday_Timer()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(SpielerInfo[playerid][pEingeloggt] == 1) //Eingeloggt Abfrage bitte anpassen
    {
    pPaydayTime[i]++;
    if(pPaydayTime[i] == 60)
    {
    //Payday Beispiel:
    GivePlayerMoney(pPayday[i]);
    pPayday[i] = 0;
    pPaydayTime[i] = 0;
    }
    }
    }
    }


    Das Ganze hab ich auf die Schnelle gemacht. Kann sein, dass dort jetzt Fehler sind, aber so grob muss es funktionieren.
    Den Rest musst du dir nun selber erarbeiten, bspw. das Speichern der Zeit und wie viel Geld der Spieler schon erarbeitet hat.


    //edit entweder die Version von HydranT, bei jedem Connect, oder einfach standartmäßig den Timer schon vom Serverstart starten, dann nimmst du mein Beispiel.

    Mit freundlichen Grüßen
    Zeuto