Beiträge von J0a9

    Hallo Jeffry,


    also in den Serverlogs steht wenn ich den Server verlasse:

    [13:55:01] SAVE: J0a9 Account hat gespeichert!
    [13:55:01] [part] J0a9 has left the server (12:1)


    und das steht in den mysql Logs:

    [13:59:00] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "PayDay", data: "0"
    [13:59:00] [DEBUG] cache_get_field_content_int - connection handle: 1
    [13:59:00] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "PayDayHead", data: "0"
    [13:59:00] [DEBUG] mysql_tquery - connection handle: 1


    Lg
    J0a9

    Guten Abend Breadfish-Community,


    ich benötige etwas Hilfe bei dem PayDay Zeit zum speichern, davor habe ich auch hier nach ähnliche Beiträge gesucht aber nichts passendes gefunden,,,


    Zunächst ist mein PayDay System so aufgebaut:


    dies steht unter meinem Player Enum:

    pPlayMinutes


    steht unter OnPlayerConnect:

    PlayerInfo[playerid][pPlayMinutes] = 0;
    [pwn]


    steht unter /stats:
    [pwn]
    format(string4, sizeof string4, " PayDay\t\t\t[in %d Minuten]", 60-PlayerInfo[targetid][pPlayMinutes]);


    wenn man connected und die Daten geladen werden:

    PlayerInfo[playerid][pPlayMinutes] = cache_get_field_content_int(0,"PlayMinutes",dbhandle);


    wenn man den Server verlässt wird das so gespeichert:

    format(query,sizeof(query),"UPDATE accounts SET PlayMinutes='%d', GesamtMinutes='%d', Respect='%d' WHERE id='%i'",
    PlayerInfo[playerid][pPlayMinutes],PlayerInfo[playerid][pGesamtMinutes],PlayerInfo[playerid][pExp],PlayerInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");


    ein kleiner Ausschnitt aus dem Timer vom PayDay:

    if(PlayerInfo[i][pPlayMinutes] <= 59)
    {
    PlayerInfo[i][pPlayMinutes]++;
    }
    if(PlayerInfo[i][pPlayMinutes] >= 60)
    {
    PlayerInfo[i][pPlayMinutes] = 0;
    ...



    Nun folgendes verstehe ich nicht, s wird immer eine "0" gespeichert in der Datenbank,
    wenn ich aber Manuell dies in der DDatenbank z.B. auf "35" setze ist nach 35 Minuten PayDay.


    Ich bin gerade noch neu was mit MySQL betrifft und habe daher nicht so viel Ahunug...


    Hat jemand eine Idee oder weiß was ich falsch gemacht habe?



    Vielen Dank im Vorraus :)


    Lg
    J0a9

    Guten Tag Breadfish-Community,


    ich bräuchte eure Hilfe, denn ich habe versucht das /tv System einzubauen aber es funktioniert nicht...


    Es funktioniert wenn ich die Spieler ID angebe aber ich sehe dann nur den Spieler sein Name und sein Leben ansonsten bin ich gefreezt und sehe mich selbst
    und das ist der Punkt wo ich nicht weiterkomme!
    Warum sehe ich mich selber und nicht den angegeben Spieler?


    Hier der Scriptcode:



    if(strcmp(cmd, "/tv", true) == 0 || strcmp(cmd, "/recon", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] > 0 || PlayerInfo[playerid][pSupporter] > 0)
    {
    if(WatchingTV[playerid] < 1)
    {
    GetPlayerPos(playerid, Unspec[playerid][Coords][0],Unspec[playerid][Coords][1],Unspec[playerid][Coords][2]);
    }
    }
    if(Spectate[playerid] == 255 && PlayerInfo[playerid][pLocal] != 255 || Spectate[playerid] == 255 && PlayerInfo[playerid][pAdmin] > 0)
    {
    GetPlayerPos(playerid, Unspec[playerid][sPx], Unspec[playerid][sPy], Unspec[playerid][sPz]);
    Unspec[playerid][sPint] = PlayerInfo[playerid][pInt];
    Unspec[playerid][sLocal] = PlayerInfo[playerid][pLocal];
    PlayerInfo[playerid][pLocal] = 255;
    gTeam[playerid] = 0;
    }
    tmp = strtok(cmdtext, idx);
    if(strcmp("off", tmp, true, strlen(tmp)) == 0)
    {
    if(WatchingTV[playerid] > 0)
    {
    WatchingTV[playerid] = 0;
    Spectate[playerid] = 253;
    GameTextForPlayer(playerid, "~w~ TV~n~~r~ Aus", 5000, 6);
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Mit dem Befehl schaltest du den Fernseher aus [Einschalten mit /tv [ID]!");
    return 1;
    }
    }
    if(PlayerInfo[playerid][pAdmin] > 0 || PlayerInfo[playerid][pSupporter] > 0)
    {
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    Spectate[playerid] = giveplayerid;
    new Float:health;
    GetPlayerHealth(Spectate[playerid], health);
    GetPlayerName(Spectate[playerid], giveplayer, sizeof(giveplayer));
    new cash = GetPlayerMoney(Spectate[playerid]);
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    format(string, sizeof(string), "Recon: (%d) %s $%d H:%.0f",Spectate[playerid],giveplayer,cash,health);
    }
    else
    {
    format(string, sizeof(string), "UAV: (%d) %s",Spectate[playerid],giveplayer);
    }
    SendClientMessage(playerid, COLOR_GREEN, string);
    WatchingTV[playerid] = 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, "Ziel ist nicht verfügbar.");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, "Du bist nicht befugt!");
    return 1;
    }
    }
    return 1;
    }


    Ich hoffe ihr könnt mir helfen :)


    Vielen Dank im Vorraus!


    Lg
    J0a9

    Hallo


    @BlackAce: Ok vielen Dank werde ich gleich versuchen, ich habe jetzr die unnötigen Removes die manchmal doch doppelt waren oder die manchmal nnötig waren gelöscht, sodass ich jetzt wenigere Removes habe.
    Trotzdem versuche ich das mit dem Timer wobei glaub ein String nach dem Login die weiteren Remove's senden zu lassen sollte eventuell auch gehen.


    Ich bedanke mich für eure Hilfe, ich teste jetzt jede Möglichkeit aus :D


    Lg
    J0a9

    Guten Abend Breadfish-Community,


    ich habe folgendes Problem und zwar wenn ich neue RemoveBuildingforPlayer hinzufüge, compile und dann hochlade auf meinem Server und restarte kann ich mich nicht mehr einloggen!
    Wenn ich diese Entferne vom Script und neu hochlade kann ich mich einwandfrei einloggen.


    Das Problem ist, wenn ich meine Map einfüge und auch Remove's dabei habe dann sehe ich nur diue Objecte und keine Remove's...


    Ich vermute es liegt eventuell am Streamer wobei ich mir wiederrum nicht sicher bin, dass der Streamer auch für RemoveBuildingForPlayer zuständig ist...


    Hat jemand eine Idee woran es liegen könnte? Wiegesagt jedesmal wenn ich neue Remove's einfüge funktioniert der Login nicht mehr -.-


    Vielen Dank im Vorraus!


    Lg
    J0a9

    Hallo Jeffry,




    aaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhh Funktioniert!!!!


    Vielen vielen Dank für deine Geduld und Hilfe und auch all den anderen die mir geholfen haben :D


    Ich hab einfach nicht ganz aufgepasst beim lesen des Serverloges aber jetzt habe ich etwas neues dazu gelernt was mit MySQL Speichern betrifft :D


    Lg
    Joa9

    Hey,


    so habs jetzt erneut getestet, dies wurde in den Serverlogs ausgeschrieben:



    [22:08:58] query: UPDATE accounts SET Level='4', Geld='984', Muted='0', Bank='0', Kredit='0' ,KreditDauer='0', Kills='0', Deaths='0', Materials='7' WHERE id=''
    [22:08:58] SAVE: Joa955 Account hat gespeichert!
    [22:08:58] [part] Joa955 has left the server (2:1


    Ich habe jetzt auch das Komma hingetahn funktioniert immer noch nich -.-


    Lg
    J0a9

    Hallo Jeffry,


    so ich hab es getestet und dies wurde im Serverlog ausgeschrieben:



    [20:28:47] savePlayer aufgerufen
    [20:28:47] query: UPDATE accounts SET Level='4', Geld='984', Muted='0', Bank='0', Kredit='0' KreditDauer='0', Kills='0', Deaths='0', Materials='7' WHERE id=''
    [20:28:47] SAVE: Joa955 Account hat gespeichert!
    [20:28:47] [part] Joa955 has left the server (2:1)


    Wenn ich aber in der Datenbank per PHPMyAdmin nachschaue hat sich nichts geändert...


    Lg
    Joa9

    Hallo Jeffry,


    so hab die Schleife rausgenommen und auch das mit (Bank) gefixt.
    Auch bei GamemodeInit habe ich den Timer herausgenommen aber es speichert immer noch nicht!


    Ich verstehe es nicht wenn ich bei /setstat das mache speichert er es sofort ein aber wenn ich ohne /setstat was aufm Server mache und normal geld erarbeite oder ausgebe wird dies nicht gespeichert aber ich meine jetzt nicht nur das Geld abspeichern sondern generell den Account.


    Ich weiß echt nicht warum bzw woran es liegt...


    Lg
    J0a9

    Hallo Jeffry,


    ich habe es jetzt auch mit der MySQL Debug Funktion ausprobiert.
    Derzeitig bekomme ich diesen Fehler:



    [01:00:41] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(Bank) VALUES ('100') WHERE id='2'' at line 1

    habe auch nachgeschaut im Script habe aber nicht die Zeile gefunden wo dieser Fehler steht...


    Außer dem Timer ist ja auch das wenn man den Server verlässt das dann auch gespeichert werden soll, meinst du ich soll unter OnPlayerDisconnect ohne "IsPlayerConnected" nehmen?


    Lg
    J0a9

    Hallo Breadfish-Community,


    ich benötige Hilfe was mit MySQL zu tun hat :D


    Da ich mein Script von Dini auf MySQL am umschreiben bin komme ich mit einer Funktion irgendwie nicht zurecht, diese wäre die Account Speicherung Funktion!


    Ich habe mir sämtliche Tutorials, Threads auf Forun angeschaut aber diese Funktioniert kein Stück!


    Bei Gamemodeinit das es jede 15 Minuten Speichern soll:

    SetTimer("savePlayer", 900000, 1);//Jede 15 Minuten werden Spielerdaten gespeichert!


    Hier soll dies abgespeichert werden:

    forward savePlayer(playerid);
    public savePlayer(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    new query[2050], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName, sizeof(pName));
    format(query,sizeof(query),"UPDATE accounts SET Level='%d', Geld='%d', Muted='%d', Bank='%d', Kredit='%d' KreditDauer='%d', Kills='%d', Deaths='%d', Materials='%d' WHERE id='%i'",
    PlayerInfo[playerid][pLevel],GetPlayerMoney(playerid),PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pAccount],PlayerInfo[playerid][pPlayerKredit],PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pMats],PlayerInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");


    printf("SAVE: %s Account hat gespeichert!",pName);
    }
    return 1;
    }


    Falls der Spieler Disconnecten sollte dann soll sein Account auch gespeichert werden:

    Function OnPlayerDisconnect(playerid, reason)
    {
    if(IsPlayerConnected(playerid))
    {
    savePlayer(playerid);
    }


    Mein Problem ist folgendes, das wenn ich neues Level habe und auf meinem Bankkonto Geld drauf geladen habe und Geld von der Hand bezahlt hab und dann den Server verlasse
    steht zwar in den Serverlog das die Accounts vollständig gespeichert worden sind aber wenn ich nachschaue in der Datenbank dann wurde nichts gespeichert -.-


    Ich benötige Hilfe, da ich irgendwie verwirrt bin und nicht weiß was ich falsch gemacht habe!


    Vielen Dank für eure im Vorraus!!!


    Lg
    J0a9