Beiträge von Jadeclon

    Hab aber eigentlich die Datenbank schon mit sizeof(HouseInfo) gefüllt & die IDs haben sich ja sowieso automatisch inkrementiert.
    Deswegen auch bei /addhouse die abfrage:

    Code
    if(HouseInfo[i][hEnterx] == 0.000000)
    Code
    /*for(new i = 0; i < sizeof(HouseInfo); i++)
    	{
    		new query[256];
    		mysql_format(handle, query, sizeof(query), "INSERT INTO property (hLevel) VALUES ('3')");
    		mysql_pquery(handle, query);
    	}*/

    Ich hab da stattdessen ein break; hin gemacht: https://pastebin.com/KEZtSLnp
    Du meintest ja:

    Wobei es die bessere Variante wäre, ein Haus immer dann direkt zu speichern, wenn eine Änderung passiert, so oft ändert sich an den Häusern ja nichts.
    Dann hättest du auch kein Problem, wenn der Server mittendrin abstürzt, ohne OnGameModeExit aufzurufen.

    Deswegen soll er bei /addhouse nur das Haus speichern das erstellt wurde, er speichert aber alle Häuser mit den Werten des neu erstellten Hauses.

    Hmm wüsste nicht woran, müsste eigentlich daran liegen


    Mit dem Laden der Daten hats ja nichts zu tun oder? Unter OnGameModeInit hab ich:


    Code
    new query[200];
    	mysql_format(handle, query, sizeof(query), "SELECT * FROM property");
    	mysql_pquery(handle, query, "LoadPropertys");


    Und das speichern? Ist wahrscheinlich auch nicht so effizient oder? Wüsste aber nicht wie ich´s nur 1x abschicken könnte.
    Das hab ich unter OnGameModeExit:

    Wie regel ich das dann im Callback? Weil im Moment krieg ich für jeden Schleifendurchgang nur die Werte der ersten Zeile.


    Code
    new query[200];
    	mysql_format(handle, query, sizeof(query), "SELECT * FROM property");
    	mysql_pquery(handle, query, "LoadPropertys");


    Habs jetzt so gelöst, kann nur schlecht einschätzen wie groß die query sein muss... schlimm wenn die bisschen überdimensional groß is?^^

    Code
    for(new i = 1; i < sizeof(HouseInfo); i++)
    	{
    		new query[2000];
    		mysql_format(handle, query, sizeof(query), "SELECT * FROM property WHERE id = '%d'", i);
    		mysql_pquery(handle, query, "LoadPropertys", "d", i);
    	}


    @Jeffry Weißt du warum er nichts zurück gibt? Steht unter OnGameModeInit. Das print gibt weder die [hID] , noch [hEnterx] aus.

    @Jeffry Funktioniert.


    Code
    format(string2, sizeof(string2), "%.1f% |  %f",collected[playerid], collected[playerid]);
    SendClientMessage(playerid, F_Gray, string2);

    So hab ich "1.0 | 1.000000" bekommen, aber egal ob ich collected[playerid] == 1.0 oder collected[playerid] == 1.000000 abgefragt hab, hat beides nicht gefunkt.

    Ich addiere immer nur 0.1


    Habs mit if(collected[playerid] >= 0.9 && collected[playerid] <= 1.0) , dann schlägt er allerdings schon bei 0.9 an.
    Mit floatround gehts auch nicht, da er dann bei 0.5 schon anschlägt.

    Wie hab eine Float, wenn ich diese so ausgebe:


    Code
    format(string2, sizeof(string2), "%.1f%",collected[playerid]);
    					SendClientMessage(playerid, F_Gray, string2);

    kommt "1.0" raus. Wie frage ich ab wann die Float bei 1.0 ist? Hab schon vieles ausprobiert, auch Strings vergleichen, aber funktioniert alles nicht...



    Code
    if(strcmp(string2, "1.0", true) == 0)

    Wie speicher ich die Daten am besten wenn ich sehr viele Spieler Var's habe?



    Code
    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d' WHERE id = '%d'",
    		PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][p_id]);

    Denn in einem String kann man ja nicht einfach in der nächsten Zeile weiter schreiben...