Beiträge von Zeuto



    if(sInfo[playerid][eingeloggt]==0)return 1;


    Vielleicht liegt ja das Problem in dieser Abfrage, kann sein, dass diese Variable nicht richtig gesetzt wird.


    new query[128];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i,rang='%i' WHERE id='%i'",
    sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo,sInfo[playerid][db_id]);


    Versuch mal nur das Geld abzuspeichern und nicht die anderen Variablen. Vielleicht ist das Query einfach nur zu groß


    Ansonsten schau mal, was die mysql_log.txt sagt. Da stehen meistens auch hilfreiche Informationen

    Hmm, also ich persönlich habe nicht allzu viele Plugins getestet, aber von denen, die ich getestet habe, finde ich das R7 von BlueG am Besten.
    Falls du mit threaded Abfragen nicht umgehen kannst, dann das R6..

    Mit gettime() dem Spieler eine Zeit zuweisen, dass er bis dahin kein Enter mehr drückt.
    Dann wenn er Enter drückt, wird überprüft, ob die Zeit abgelaufen ist oder nicht, falls nicht, dann musst du einfach nur returnen und es passiert einfach nix.


    Die Alternative zum Timer :D

    Hayho,


    ich habe seit heute ein Problem, und zwar.


    Ich starte meinen Server --> Kein Problem!
    Ich gehe auf den Server --> Kein Problem!
    Ich starte den Server neu ---> Problem!


    Das Problem ist, dass der irgendwie den Server nur halb neustartet.. Alle Spieler werden laut dem Script auch gekickt, doch daraufhin sollte er den GMX-Befehl ausführen.
    Dieser führt er aber nicht aus. Dann mach ich den GMX-Befehl in der Konsole --> Aha, er hat was bemerkt, er startet den Server nun neu.
    So, als er fertig war, kommen plötzlich 10-20 PIEP-Sounds und in der Konsole steht was von:

    Zitat

    Out of memory <Needed 8164 bytes>

    Standardmäßig müsste da stehen: Number of vehicle models: 38, doch nun kommt nur Number of vehicle models: 4..


    Wenn ich den Server nun ein wenig laufen lasse, taucht dieser Piep-Sound in einem bestimmten Intervall wiederholend auf.


    Falls einer bis hierhin gelesen hat, bitte ich denjenigen um Hilfe. Ich weiß wirklich nicht weiter ;(


    MfG


    //UPDATE: Der Server wird nach dem Restart automatisch geschlossen?!

    hayho,


    das hier ist eher an die gerichtet, die sich mit MySQL auskennen.
    Und zwar folgendes Scriptteil:


    GivePlayerWeapon(playerid,24,100);
    new value = mysql_getint(db_handle,"waffenlager","24", "id", SpielerInfo[playerid][pFraktion])-1;
    mysql_setint(db_handle, "waffenlager","24", value, "id", SpielerInfo[playerid][pFraktion]);


    Ich bekomme zwar die Waffe, aber die Variable wird nicht um eins verringert. Ich habe als Standardwert 100 genommen, aber trotzdem bleibt es bei 100, wenn ich eine Waffe aus dem Waffenlager nehme..


    Hoffe jemand kann mir helfen.

    Jap


    //edit:
    Problem gelöst. Das Problem war, dass id 0 in der MySQL Datenbank nicht vorhanden war, also hat er den Wert NULL zurück gegeben. Der Code wurde abgebrochen und OnGameModeInit wurde weiter nicht ausgeführt. Das erklärt auch die fehlenden Objekte, trotzdem danke dir :)

    Hayho,


    ich habe heute angefangen an einem etwas anderen Fraktionsfahrzeugs-System zu tüfteln und ich habe da ein kleines Problem.
    Folgende Zeilen:


    for(new i=0; i<rows+1; i++)
    {
    new vid, Float:x, Float:y, Float:z, Float:rot, c1, c2, cfrak;
    vid = mysql_getint(db_handle,"frakcars","vid","id",i);
    x = mysql_getfloat(db_handle,"frakcars","x","id",i);
    y = mysql_getfloat(db_handle,"frakcars","y","id",i);
    z = mysql_getfloat(db_handle,"frakcars","z","id",i);
    rot = mysql_getfloat(db_handle,"frakcars","rot","id",i);
    c1 = mysql_getint(db_handle, "frakcars","c1","id",i);
    c2 = mysql_getint(db_handle, "frakcars","c2","id",i);
    cfrak = mysql_getint(db_handle, "frakcars","frak","id",i);
    new vehID = AddStaticVehicleEx(vid,x,y,z,rot,c1,c2,-1);
    }


    In diesem Zustand funktioniert alles einwandfrei, aber ich will ja noch das Fahrzeug einer Fraktion zuweisen, also füge ich folgende Zeile noch ein:
    CarFraktion[vehID] = cfrak;, also steht alles so da: for(new i=0; i<rows+1; i++)
    {
    new vid, Float:x, Float:y, Float:z, Float:rot, c1, c2, cfrak;
    vid = mysql_getint(db_handle,"frakcars","vid","id",i);
    x = mysql_getfloat(db_handle,"frakcars","x","id",i);
    y = mysql_getfloat(db_handle,"frakcars","y","id",i);
    z = mysql_getfloat(db_handle,"frakcars","z","id",i);
    rot = mysql_getfloat(db_handle,"frakcars","rot","id",i);
    c1 = mysql_getint(db_handle, "frakcars","c1","id",i);
    c2 = mysql_getint(db_handle, "frakcars","c2","id",i);
    cfrak = mysql_getint(db_handle, "frakcars","frak","id",i);
    new vehID = AddStaticVehicleEx(vid,x,y,z,rot,c1,c2,-1);
    CarFraktion[vehID] = cfrak;
    }


    Starte den Server und plötzlich steht da:

    Zitat

    Number of vehicle models: 0


    Kann mir da einer helfen?!

    gibt leider nur 1 zurück, wenn der query erfolgreich war und 0 wenn der gefailt hat. Ich will aber den Wert, der in der Tabelle steht, returnen..


    Habe ich bereits oben geschrieben, ich habe bereits mein Bestes gegeben, aber das klappt irgendwie nicht. Deswegen frage ich hier nach..

    Hayho.. Folgendes Script:


    stock mysql_getint(db, table[], field[], cfield[], cvalue)
    {
    new query[128], value;
    format(query,sizeof query,"SELECT %s FROM %s WHERE %s='%i'",field, table, cfield, cvalue);
    value = mysql_function_query(db, query, true, "MYSQL_GETINT","is",db,field);
    return value;
    }


    forward MYSQL_GETINT(db, field[]);
    public MYSQL_GETINT(db, field[])
    {
    new num_rows, num_fields;
    cache_get_data(num_rows,num_fields,db);
    if(num_rows==1)
    {
    new value = cache_get_field_content_int(0, field, db);
    return value;
    }
    return 0;
    }


    Ich dachte am Anfang das Ganze würde funktionieren, aber dieses value = mysql_function_query(db, query, true, "MYSQL_GETINT","is",db,field); gibt leider nur 1 zurück, wenn der query erfolgreich war und 0 wenn der gefailt hat. Ich will aber den Wert, der in der Tabelle steht, returnen..


    An die Profis hier: Wie würde das funktionieren?


    PS.: Ja, das ist selber gescriptet..

    Dieses cache_get_field_content bla bla muss in einem Callback sein der mysql_function_query aufruft..


    Bsp.:


    mysql_function_query(handle,query,true,"blabla","i",playerid);


    forward blabla(playerid);
    public blabla(playerid)
    {
    cache_get_field_content(...);
    }


    Cache heißt ja nur dass, was gespeichert wurde in einer bestimmten "Variable". Außerhalb dieses Callbacks kannst du kein cache_get_field_content benutzen.
    Denke das ist das Problem.. Korrigiert mich falls ich falsch liege, aber bei mir war das immer so..