Statistik Update mit Payday system

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 zusammen


    ich bin so amateur von der Selbsteinschätzung ich weiss auch wie Timer etc funktionieren aber weiter komme ich nicht


    Nun zu den Fakten


    Ich habe versucht ein PayDay System zu erstellen wo Rechts vom Bild ingame die Statistik 1mal pro sek geupdatet wird nun leider schmiert der Server nach 60Sek nachdem ich mich eingeloggt habe ab und restartet sich


    Testen könnt ihr das ingame


    der crahsdetect error


    [13:09:22] Crash caused by gamemodes/XYZ.amx, see stack trace below
    [13:09:22] Stack trace (most recent call first):
    [13:09:22] TextDrawShowForAll (native) on line 1 in C:\Users\CYZ\Desktop\new\Pawnfox\PawnStuff\include\float.inc
    [13:09:22] operator+(Float:,_:) (entry point)



    Server.marsrl.de


    nun der Code zu dem System vlt findet ihr fehler


    Teil PaydaysInfo[playerid][exp] = cache_get_field_content_int(0,"PEXP",dbhandle);
    sInfo[playerid][paydayzeit] = cache_get_field_content_int(0,"PZEIT",dbhandle);

    SetTimer("PayDay",1000*60*60,1);//60min
    sInfo[playerid][tidpayday] = SetTimerEx("ZeitUpdatePayDay",1000*60,true,"i",playerid);




    public PayDay(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(sInfo[playerid][eingeloggt]==1)
    {
    SendClientMessage(playerid,CL_HROT,"-------------------Statistik-----------------");
    new year,month,day,a_level,string[299],ueberschrift[128];
    getdate(year,month,day);

    switch(sInfo[playerid][alevel])
    {
    case 0://User
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag User.");
    return 1;
    }
    case 1:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag VIP/Premium.");
    return 1;
    }
    case 2:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Supporter.");
    return 1;
    }
    case 3:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Moderator.");
    return 1;
    }
    case 4:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Super Moderator.");
    return 1;
    }
    case 5:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Admin.");
    return 1;
    }
    case 6:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Server Manager.");
    return 1;
    }
    case 7://stelvProjektleitung
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag stelv. Projektleitung.");
    return 1;
    }
    case 8://Projektleitung
    {
    new string1[128];


    SendClientMessage(playerid,CL_WHITE,"Info: Du hast Zahltag Projektleitung.");
    sInfo[playerid][geld] = GetPlayerMoney(playerid);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,sInfo[playerid][geld]);
    GivePlayerMoney(playerid,15200);
    a_level = sInfo [playerid][alevel];
    SendClientMessage(playerid,CL_KNALLROT,"Muss noch überarbeitet werden sInfo[i][geld] zu sInfo[i][bankgeld])");
    format(ueberschrift,sizeof(ueberschrift),"Zahltag von %s ",SpielerName(playerid));

    format(string,sizeof(string),"Dein Payday vom %i.%i.%i.\nName: %s Team-Rang: %s \nLevel: %i \nTeam-Gehalt: 15200% Alter Kontostand: %i$ ",day,month,year,SpielerName(playerid),a_rang[a_level],sInfo[playerid][level],sInfo[playerid][geld]);
    //SendClientMessage(playerid,CL_HROT,string);



    sInfo[playerid][geld] = GetPlayerMoney(playerid);
    format(string1,sizeof(string1),"\nNeuer Kontostand: %i",sInfo[playerid][geld]);
    //SendClientMessage(i,CL_HGRÜN,string1);
    SCM(playerid,CL_HGRÜN,string);
    SCM(playerid,CL_HGRÜN,string1);
    strcat(string,string1);
    SCM(playerid,CL_HGRÜN,string);
    //in string gespeichert



    SCM(playerid,CL_HROT,"-------------------Statistik-----------------");
    return 1;
    }
    }
    return 1;
    }
    return 1;
    }
    return 1;

    }
    public ZeitUpdatePayDay(playerid)
    {
    //if(IsPlayerConnected(playerid))return 1;
    if(sInfo[playerid][paydayzeit]>=60)
    {
    sInfo[playerid][paydayzeit] = 0;
    sInfo[playerid][exp]=sInfo[playerid][exp]+1;
    SCM(playerid,CL_GELB,"Du hast Payday! Dein erfahrung im Spiel steigt um 1Punkt.");
    PayDay(playerid);
    if(sInfo[playerid][exp]==3)
    {
    new slevel,str[128];
    slevel = GetPlayerScore(playerid);
    slevel = slevel+1;
    SetPlayerScore(playerid,slevel);
    format(str,sizeof(str),"Dein Level ist auf %i angestiegen.Lasse dir deinen Payday im Dialog per /showpayday anzeigen.",slevel);
    SCM(playerid,CL_GELB,str);
    sInfo[playerid][exp] = 0;
    sInfo[playerid][paydaycheck]=1;
    return 1;
    }
    return 1;
    }
    sInfo[playerid][paydayzeit]=sInfo[playerid][paydayzeit]+1;
    return 1;
    }


    Statistik das was rechts ist

    public Statistikupdate(playerid)
    {
    new str[128];
    sInfo[playerid][geld]=GetPlayerMoney(playerid);
    sInfo[playerid][level]=GetPlayerScore(playerid);
    format(str,sizeof(str),"~n~Level: %i~n~Geld: %i$~n~Kontostand: %i$~n~Payday: %i/60 Minuten~n~Exp Level: %i/%i",sInfo[playerid][level],sInfo[playerid][geld],sInfo[playerid][bankgeld],sInfo[playerid][paydayzeit],sInfo[playerid][exp],sInfo[playerid][nexp]);
    TextDrawSetString(Statistik1, str);
    TextDrawShowForPlayer(playerid,Statistiken);
    Statistikupdate(playerid);
    print("update statistik");
    return 1;
    }
    stock loadstat(playerid)
    {
    new str[128];

    format(str,sizeof(str),"~n~Level: %i~n~Geld: %i$~n~Kontostand: %i$~n~Payday: X/60 Minuten~n~",sInfo[playerid][level],sInfo[playerid][geld],sInfo[playerid][bankgeld]);
    Statistik1 = TextDrawCreate(495 ,113.8 ,str);
    TextDrawLetterSize(Statistik1,0.3,1.3);
    TextDrawColor(Statistik1 , CL_DGRÜN);
    TextDrawFont(Statistik1 , 1);
    TextDrawSetOutline(Statistik1 , true);
    TextDrawSetProportional(Statistik1 , true);
    TextDrawSetShadow(Statistik1 , 1);
    TextDrawShowForPlayer(playerid,Statistik1);
    SetTimerEx("Statistikupdate",500,1,"i",playerid);
    return 1;
    }
    stock Statistik(playerid)
    {
    Statistiken = TextDrawCreate(495 ,113.8 ,"Statistiken");
    TextDrawFont(Statistiken , 1);
    TextDrawLetterSize(Statistiken , 0.5, 1.5);
    TextDrawColor(Statistiken , CL_GELB);
    TextDrawSetOutline(Statistiken , true);
    TextDrawSetProportional(Statistiken , true);
    TextDrawSetShadow(Statistiken , 1);
    TextDrawShowForPlayer(playerid,Statistiken);
    return 1;
    }


    //Statistik
    Statistik(playerid);
    SetTimer("Statistikupdate",1000,false);
    loadstat(playerid);


    falls ihr fragen habt bitte melden


    MFG Jane

  • Dein PayDay public ist falsch du nutzt playerid obwohl du nur set timer nutzt ergo das funktioniert nur mit ID 0 da variabeln in pawn den wert 0 standart mäßig zugeweisen bekommen. Und mach aus deinen Globalen Textdraws PlayerTextDraws

  • ^^was wie? auf der basis etwas durch worte umzusetzen bin ich absolut eine 0


    kannst du mir zeigen was ich ändern soll?


    so?SetTimerEx("PayDay",1000*60*60,1,"i",playerid);//60min


    der PayDay public aber was muss noch gemacht werden?

  • ok sieht jetzt so aus
    noch ein problem es funktioniert kein einziger befehl

    public PayDay()
    {
    for(new playerid = 0; playerid <MAX_PLAYERS; playerid++)

    {
    if(IsPlayerConnected(playerid))

    {
    if(sInfo[playerid][eingeloggt]==1)
    {
    SendClientMessage(playerid,CL_HROT,"-------------------Statistik-----------------");
    new year,month,day,a_level,string[299],ueberschrift[128];
    getdate(year,month,day);

    switch(sInfo[playerid][alevel])
    {
    case 0://User
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag User.");
    return 1;
    }
    case 1:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag VIP/Premium.");
    return 1;
    }
    case 2:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Supporter.");
    return 1;
    }
    case 3:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Moderator.");
    return 1;
    }
    case 4:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Super Moderator.");
    return 1;
    }
    case 5:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Admin.");
    return 1;
    }
    case 6:
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag Server Manager.");
    return 1;
    }
    case 7://stelvProjektleitung
    {
    SendClientMessage(playerid,-1,"Du hast Zahltag stelv. Projektleitung.");
    return 1;
    }
    case 8://Projektleitung
    {
    new string1[128];


    SendClientMessage(playerid,CL_WHITE,"Info: Du hast Zahltag Projektleitung.");
    sInfo[playerid][geld] = GetPlayerMoney(playerid);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,sInfo[playerid][geld]);
    GivePlayerMoney(playerid,15200);
    a_level = sInfo [playerid][alevel];
    SendClientMessage(playerid,CL_KNALLROT,"Muss noch überarbeitet werden sInfo[i][geld] zu sInfo[i][bankgeld])");
    format(ueberschrift,sizeof(ueberschrift),"Zahltag von %s ",SpielerName(playerid));

    format(string,sizeof(string),"Dein Payday vom %i.%i.%i.\nName: %s Team-Rang: %s \nLevel: %i \nTeam-Gehalt: 15200% Alter Kontostand: %i$ ",day,month,year,SpielerName(playerid),a_rang[a_level],sInfo[playerid][level],sInfo[playerid][geld]);
    //SendClientMessage(playerid,CL_HROT,string);



    sInfo[playerid][geld] = GetPlayerMoney(playerid);
    format(string1,sizeof(string1),"\nNeuer Kontostand: %i",sInfo[playerid][geld]);
    //SendClientMessage(i,CL_HGRÜN,string1);
    SCM(playerid,CL_HGRÜN,string);
    SCM(playerid,CL_HGRÜN,string1);
    strcat(string,string1);
    SCM(playerid,CL_HGRÜN,string);
    //in string gespeichert



    SCM(playerid,CL_HROT,"-------------------Statistik-----------------");
    return 1;
    }
    }
    return 1;

    }


    }
    return 1;
    }
    return 1;

    }



    EDIT ich mache das ganze system NEU

    2 Mal editiert, zuletzt von Jane ()