Beiträge von Simon

    Okay das wird bei Selects gemacht...


    Wie sieht das aus wenn ich Update, Insert, Delete etc benutze.. kann ich dort einfach im public kein code benutzen da nach dem query nichts weiter genutzt wird?


    Beispiel:


    Vorher:
    mysql_query("Update Tabelle SET spalte = Wert Where Spalte = Wert");


    Nachher:
    enum
    {
    result_Update
    }


    mysql_query("Update Tabelle SET spalte = Wert Where Spalte = Wert", result_Update, -1, connection);


    public OnMysqlQuery(resultid, spareid, MySQL:handle)
    {
    if(resultid == result_Update) {}
    else if () {}
    return 1;
    }

    Schönen Guten Abend.


    Ich verwende das Mysql plugin von Strickenkid.
    Dort gibt es auch die sogenannten Threaded Querys..


    Nun habe ich versucht das anzuwenden jedoch gab das ne menge Fehler.


    Mir würde einfach ein Anwendungsbeispiel reichen und eine kleine Information bei welchen Querys ich diese nutzen sollte.



    Lieben Gruß

    Dann ist meine Frage: Wie geht das mit Threaded Querys?


    Weil ich brauche ja Update komme um die SQL Befehle ja nicht umzu und genauso muss ich auch in der schleife diesen Query ausführen.


    //edit: oder reicht es etwa wenn ich einfach irgenteine id als resultid eintrage das Public hinzufüge und einfach leer lasse?

    Das wäre auch eine Option über die man nachdenken könnte.


    Spezieller wird es aber nun da 100% Lags bei meiner Speicherung der Fraktionen entstehen was gut nachzuvollziehen ist.
    Es werden nicht nur insgesamt (bisher) 18 Fraktionen mit sämtlichen Daten gespeichert (mysql) sondern pro 18 Fraktionen nochmal 11 Namen der Ränge (Rang 0 - 10) und anschließend nochmal Fraktionsfahrzeuge (über 400).


    Das es da kurz hängt kann ich gut verstehen...


    public FrakUpdate()
    {
    new Query[500];
    for(new i = 0; i < sizeof Fraktionen; i++)
    {
    mysql_real_escape_string(Fraktionen[i][Frakname], Fraktionen[i][Frakname]);
    format(Query,sizeof(Query),"UPDATE `Fraktionen` SET `Kasse` = '%f', `Mats` = '%d', `Drogen` = '%d', `MaxMember` = '%d', `Respekt` = '%d', `Muebersicht` = '%d', `Buendnis` = '%d', `BMinuten` = '%d', `BStunden` = '%d', `BTage` = '%d', `Grundgehalt` = '%d', `Rangbonus` = '%d', `MaxRangs` = '%d', `Bizzes` = '%d', `kAbgehoben` = '%d' WHERE `Frakname` = '%s'",
    Fraktionen[i][Kasse], Fraktionen[i][Mats], Fraktionen[i][Drogen], Fraktionen[i][MaxMember], Fraktionen[i][Respekt], (Fraktionen[i][Muebersicht]) ? 1:0, Fraktionen[i][Buendnis], Fraktionen[i][BMinuten], Fraktionen[i][BStunden], Fraktionen[i][BTage], Fraktionen[i][Grundgehalt], Fraktionen[i][Rangbonus], Fraktionen[i][MaxRangs], Fraktionen[i][Bizzes], Fraktionen[i][kAbgehoben], Fraktionen[i][Frakname]);
    mysql_query(Query);


    for(new j = 0; j < 11; j++)
    {
    new rstr[10];
    format(rstr,sizeof(rstr),"Rang %d", j);
    mysql_real_escape_string(rstr, rstr);
    mysql_real_escape_string(Rangnamen[i][j], Rangnamen[i][j]);
    format(Query,sizeof(Query),"UPDATE `Fraktion_Raenge` SET `%s` = '%s' WHERE `Frakname` = '%s'", rstr, Rangnamen[i][j], Fraktionen[i][Frakname]);
    mysql_query(Query);
    }
    }
    for(new i = 0; i < sizeof Frakcars; i++)
    {
    format(Query,sizeof(Query),"UPDATE `Fraktion_Fahrzeuge` SET");
    if(Frakcars[i][created])
    {
    new Float:vhp;
    GetVehicleHealth(Frakauto[i],vhp);
    format(Frakcars[i][Nummernschild],30,"%s",vInfo[Frakauto[i]][Nummernschild]);
    format(Query,sizeof(Query),"%s `vHP` = '%f', `vTank` = '%d',",Query, vhp, vInfo[Frakauto[i]][vTank]);
    }
    mysql_real_escape_string(Frakcars[i][CName],Frakcars[i][CName]);
    mysql_real_escape_string(Frakcars[i][Nummernschild],Frakcars[i][Nummernschild]);
    format(Query,sizeof(Query),"%s `Zerstoert` = '%d', `Rang` = '%d', `Tempomat` = '%d', `created` = '%d', `Nummernschild` = '%s', `posx` = '%f', `posy` = '%f', `posz` = '%f', `posa` = '%f' WHERE `CName` = '%s' AND `fID` = '%d' AND `cID` = '%d'",
    Query, Frakcars[i][Zerstoert], Frakcars[i][Rang], (Frakcars[i][Tempomat]) ? 1:0, (Frakcars[i][created]) ? 1:0, Frakcars[i][Nummernschild], Frakcars[i][posx], Frakcars[i][posy], Frakcars[i][posz], Frakcars[i][posa], Frakcars[i][CName], Frakcars[i][Frakid], Frakcars[i][Frakcarid]);
    mysql_query(Query);
    }
    return 1;
    }

    Da du hier ein String als Parameter verwendest, musst du 2 Strings und nicht 2 Integer oder Floats vergleichen.
    Dazu gibt es eine eigene Funktion:
    if(!strcmp(String1, String2, true)) //Dies bedeutet das String1 und String2 gleich sind.

    Ich habe mir mal die Standard Lizenz gekauft und finde das Programm auch recht gut gemacht und würde es auch in Zukunft sehr gerne benutzen, nur crash das Programm öfters und ich habe keine Lust jedesmal neu anzufangen was zu scripten


    Wenn dies behoben ist und die ganzen Funktionen freigeschaltet sind, sollte es aufjedenfall ein Klasse Programm sein.

    SendClientMessage(playerid,0xFFFFFFFF,"Du bist in der Deagle Arena - /Deagelnexit um sie zu verlassen"i);
    zu
    SendClientMessage(playerid,0xFFFFFFFF,"Du bist in der Deagle Arena - /Deagelnexit um sie zu verlassen");

    Du kannst die ID nicht zuweisen.


    Ich kann dir was basteln, da kannst du die Botid festlegen und mit einer funktion wie IsBot(playerid, Botid) abfragen ob die playerid Bot nr 0-x ist.

    wenn du willst das sie in einer bestimmten reihenfolge connecten, musst du das halt kontrolliert machen. das heißt jeder spieler der mit einer eigentlich belegten id connected sofort kicken und erst dann den nächsten bot connecten, wenn der vorherige vernünftig connected ist.


    Beispiel du hast 5 Bots:
    public OnPlayerConnect(playerid)
    {
    if(!IsPlayerNPC(playerid))
    {
    if(playerid >= 0 && playerid <=4) Kick(playerid); //die soll belegt sein
    }
    else
    {
    //Hier abfragen ob Bot 1 mit id 0 connected ist, wenn ja aber mit falscher id kicken und neu connecten lassen, wenn ja dann nächsten bot connecten lassen.
    //dann abfragen ob 2. Bot mit id 1 conncted ist, usw...
    }
    return 1;
    }


    Du kannst aber auch einfach sowas machen:
    if(IsPlayerNPC(playerid))
    Und wenn du den genauen Bot haben willst den Namen abfragen vom Bot.