/stats Befehl und savePlayer(playerid) funkt 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
  • Hallo zusammen, ich benutze den /stats Befehl auf einem anderen Server und auch das savePlayer(playerid) benutze ich auf einem anderen Server, beide laufen dort.


    Doch jetzt fange ich einen neuen Server an mit mehr Dingen als auf meinem alten, auch mehr MySQL speicherungen, die auslesung funktioniert, nur das speichern nicht. und auch der stats befehl funkt nicht es kommt immer das dies kein gültiger Befehl ist. Hier der Code:


    Der /stats Befehl



    ocmd:stats(playerid,params[])
    {
    new geschlecht = sInfo[playerid][sGeschlecht];
    new statsgeschlecht[20];
    new alter = sInfo[playerid][sAlter];
    new level = sInfo[playerid][sLevel];
    new spawn = sInfo[playerid][sSpawn];
    new statsspawn[24];
    new spawnenergie = sInfo[playerid][sSpawnenergie];
    new nummer = sInfo[playerid][sNummer];
    new warns = sInfo[playerid][sWarns];
    new account = sInfo[playerid][sAccount];
    new statsaccount[14];
    new verheiratet = sInfo[playerid][sVerheiratet];
    new statsverheiratet[14];
    new spielzeit = sInfo[playerid][sSpielzeit];
    new lotto = sInfo[playerid][sLotto];
    new job = sInfo[playerid][sJob];
    new fraktionssperre = sInfo[playerid][sFraktionssperre];
    new statsfraktionssperre[22];
    new fische = sInfo[playerid][sFische];
    new groessterfisch = sInfo[playerid][sGroessterfisch];
    new gefaengniszeit = sInfo[playerid][sGefaengniszeit];
    new verbrechen = sInfo[playerid][sVerbrechen];
    new wantedtode = sInfo[playerid][sWantedtode];
    new krankheit = sInfo[playerid][sKrankheit];
    new kills = sInfo[playerid][sKills];
    new tode = sInfo[playerid][sTode];
    new respekt = sInfo[playerid][sRespekt];
    new wanted = sInfo[playerid][sWanted];
    new trunkenheit = sInfo[playerid][sTrunkenheit];
    new drogen = sInfo[playerid][sDrogen];
    new mats = sInfo[playerid][sMats];
    new savedrogen = sInfo[playerid][sSaveDrogen];
    new savemats = sInfo[playerid][sSaveMats];
    new rank = sInfo[playerid][sRank];
    new money = sInfo[playerid][sMoney];
    new bankmoney = sInfo[playerid][sBankmoney];
    new fraktion = sInfo[playerid][sFraktion];
    new nextlevel = level*4000;
    new nextrespekt = level*4;
    new Float:health;
    GetPlayerHealth(playerid,health);
    new text[1000], text2[1000], text3[1000], text4[1000], text5[1000], text6[128];
    if(geschlecht == 1)(statsgeschlecht = "Männlich");
    else if(geschlecht == 2)(statsgeschlecht = "Weiblich");
    if(spawn == 1)(statsspawn = "Los Santos");
    else if(spawn == 2)(statsspawn = "San Fierro");
    else if(spawn == 3)(statsspawn = "Las Venturas");
    if(account == 0)(statsaccount = "Normal");
    else if(account == 1)(statsaccount = "Premium");
    else if(account == 2)(statsaccount = "Donator");
    if(verheiratet == 0)(statsverheiratet = "Niemand");
    else if(verheiratet == 1)(statsverheiratet = "Ja");
    if(fraktionssperre == 0)(statsfraktionssperre = "Deaktiviert");
    else if(fraktionssperre == 1)(statsfraktionssperre = "Aktiviert");
    format(text6,sizeof(text6),"Stats von %s",SpielerName(playerid));
    format(text,sizeof(text),"Level:[%d] Geschlecht:[%s] Alter:[%d] Spawn:[%s] Spawnenergie:[%d.0] Bargeld:[$%d] Bank:[$%d] Tel.:[%d] Warns:[%d]",level,statsgeschlecht,alter,statsspawn,spawnenergie,money,bankmoney,nummer,warns);
    format(text2,sizeof(text2),"Accounttyp:[%s] Verheiratet mit:[%s] Spielzeit:[%d] LottoNr:[%d] Beruf:[%d] Fraktionssperre:[%s]",statsaccount,statsverheiratet,spielzeit,lotto,job,statsfraktionssperre);
    format(text3,sizeof(text3),"Fische:[%d] Grösster Fisch:[%d] Verbrechen:[%d] Gefängniszeit:[%d] WantedTode:[%d] Krankheit:[%d]",fische,groessterfisch,verbrechen,gefaengniszeit,wantedtode,krankheit);
    format(text4,sizeof(text4),"Kills:[%d] Tode:[%d] Nächstes Level:[$%d] Respekt:[%d/%d] WantedLevel:[%d] Health:[%d.0] Trunkenheitslevel:[%d]",kills,tode,nextlevel,respekt,nextrespekt,wanted,health,trunkenheit);
    format(text5,sizeof(text5),"Drogen:[%d] Materialien:[%d] SaveDrogen:[%d] SaveMaterialien:[%d] Fraktion/Gang:[%d] Rank:[%d]",drogen,mats,savedrogen,savemats,fraktion,rank);
    SendClientMessage(playerid,COLOR_YELLOW,"___________________________");
    SendClientMessage(playerid,COLOR_WHITE,text6);
    SendClientMessage(playerid,COLOR_WHITE,text);
    SendClientMessage(playerid,COLOR_WHITE,text2);
    SendClientMessage(playerid,COLOR_WHITE,text3);
    SendClientMessage(playerid,COLOR_WHITE,text4);
    SendClientMessage(playerid,COLOR_WHITE,text5);
    return 1;
    }



    Das Speichern:

    savePlayer(playerid)
    {
    if(sInfo[playerid][sLoginfo] == 0) return 1;
    new query[1024];
    new query2[1024];
    new query3[1024];
    new query4[1024];
    new query5[1024];
    format(query,sizeof(query),"UPDATE user SET geschlecht='%i',alter='%i',level='%i',spawnenergie='%i',nummer='%i',warns='%i',account='%i',onlinetime='%i',lotto='%i' WHERE id='%i'",sInfo[playerid][sGeschlecht],sInfo[playerid][sAlter],sInfo[playerid][sLevel],sInfo[playerid][sSpawnenergie],sInfo[playerid][sNummer],sInfo[playerid][sWarns],sInfo[playerid][sAccount],sInfo[playerid][sSpielzeit],sInfo[playerid][sLotto],sInfo[playerid][sID]);
    format(query2,sizeof(query2),"UPDATE user SET job='%i',fraktionssperre='%i',fische='%i',groessterfisch='%i',gefaengniszeit='%i',verbrechen='%i',wantedtode='%i',krankheit='%i',kills='%i' WHERE id='%i'",sInfo[playerid][sJob],sInfo[playerid][sFraktionssperre],sInfo[playerid][sFische],sInfo[playerid][sGroessterfisch],sInfo[playerid][sGefaengniszeit],sInfo[playerid][sVerbrechen],sInfo[playerid][sWantedtode],sInfo[playerid][sKrankheit],sInfo[playerid][sKills],sInfo[playerid][sID]);
    format(query3,sizeof(query3),"UPDATE user SET tode='%i',respekt='%i',wantedlevel='%i',trunkenheit='%i',drogen='%i',mats='%i',savedrogen='%i',savemats='%i',rank='%i' WHERE id='%i'",sInfo[playerid][sTode],sInfo[playerid][sRespekt],sInfo[playerid][sWanted],sInfo[playerid][sTrunkenheit],sInfo[playerid][sDrogen],sInfo[playerid][sMats],sInfo[playerid][sSaveDrogen],sInfo[playerid][sSaveMats],sInfo[playerid][sRank],sInfo[playerid][sID]);
    format(query4,sizeof(query4),"UPDATE user SET adminlevel='%i',money='%i',bankmoney='%i',skin='%i',fraktion='%i',first='%i',fsauto='%i',fslkw='%i',fsmotorrad='%i' WHERE id='%i'",sInfo[playerid][sAdminlevel],sInfo[playerid][sMoney],sInfo[playerid][sBankmoney],sInfo[playerid][sSkin],sInfo[playerid][sFraktion],sInfo[playerid][sFirst],sInfo[playerid][sFsauto],sInfo[playerid][sFslkw],sInfo[playerid][sFsmotorrad],sInfo[playerid][sID]);
    format(query5,sizeof(query5),"UPDATE user SET autopkt='%i',lkwpkt='%i',bikepkt='%i' WHERE id='%i'",sInfo[playerid][sAutopkt],sInfo[playerid][sLkwpkt],sInfo[playerid][sBikepkt],sInfo[playerid][sID]);
    mysql_function_query(dbhandle,query,false,"","");
    mysql_function_query(dbhandle,query2,false,"","");
    mysql_function_query(dbhandle,query3,false,"","");
    mysql_function_query(dbhandle,query4,false,"","");
    mysql_function_query(dbhandle,query5,false,"","");
    sInfo[playerid][sGeschlecht] = 0;
    sInfo[playerid][sAlter] = 0;
    sInfo[playerid][sLevel] = 0;
    sInfo[playerid][sSpawn] = 0;
    sInfo[playerid][sSpawnenergie] = 0;
    sInfo[playerid][sLoginfo] = 0;
    sInfo[playerid][sNummer] = 0;
    sInfo[playerid][sWarns] = 0;
    sInfo[playerid][sAccount] = 0;
    sInfo[playerid][sVerheiratet] = 0;
    sInfo[playerid][sSpielzeit] = 0;
    sInfo[playerid][sLotto] = 0;
    sInfo[playerid][sJob] = 0;
    sInfo[playerid][sFraktionssperre] = 0;
    sInfo[playerid][sFische] = 0;
    sInfo[playerid][sGroessterfisch] = 0;
    sInfo[playerid][sGefaengniszeit] = 0;
    sInfo[playerid][sVerbrechen] = 0;
    sInfo[playerid][sWantedtode] = 0;
    sInfo[playerid][sKrankheit] = 0;
    sInfo[playerid][sKills] = 0;
    sInfo[playerid][sTode] = 0;
    sInfo[playerid][sRespekt] = 0;
    sInfo[playerid][sWanted] = 0;
    sInfo[playerid][sTrunkenheit] = 0;
    sInfo[playerid][sDrogen] = 0;
    sInfo[playerid][sMats] = 0;
    sInfo[playerid][sSaveDrogen] = 0;
    sInfo[playerid][sSaveMats] = 0;
    sInfo[playerid][sRank] = 0;
    sInfo[playerid][sAdminlevel] = 0;
    sInfo[playerid][sMoney] = 0;
    sInfo[playerid][sBankmoney] = 0;
    sInfo[playerid][sSkin] = 0;
    sInfo[playerid][sID] = 0;
    sInfo[playerid][sAond] = 0;
    sInfo[playerid][sFraktion] = 0;
    sInfo[playerid][sFirst] = 0;
    sInfo[playerid][sFsauto] = 0;
    sInfo[playerid][sFslkw] = 0;
    sInfo[playerid][sFsmotorrad] = 0;
    sInfo[playerid][sAutopkt] = 0;
    sInfo[playerid][sLkwpkt] = 0;
    sInfo[playerid][sBikepkt] = 0;
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    printf("pID:%i | Reason: %i",playerid,reason);


    savePlayer(playerid);


    new text[128];
    format(text,sizeof(text),"* %s hat den Server verlassen. (Ausgeloggt)",SpielerName(playerid));
    SendClientMessageToAll(COLOR_LOG,text);
    return 1;
    }


    Kann mir da jemand weiterhelfen? Ich verzweifle nächstens :D



    LG Black

  • Hast du in deinem Compiler eine mehrzeilige Meldung mit vielen Zahlen?


    Code
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    Header size:           4484 bytes
    Code size:            84924 bytes
    Data size:           160892 bytes
    Stack/heap size:      16384 bytes; estimated max. usage=5331 cells (21324 bytes)
    Total requirements:  266684 bytes
  • Ok, das liegt daran, dass du sehr sorglos mit deinen Variablen und deren Array Größe umgehst (1000!). Damit solltest du sparsamer umgehen.


    Schreibe mal das hier unter die Includes:
    #pragma dynamic 100000


    Erhöhe die Zahl, falls die Meldung nicht weg geht.


    Und zum Beispiel in deinem Befehl reicht es, eine Variable mit der Größe 145 anzulegen, und immer format und SendClientMessage abwechselnd zu machen. 145, weil SendClientMessage nicht mehr anzeigen kann.