[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • ich würde gerne meine /admin - Liste nach Rang sortieren, doch habe absolut keine Ahnung wie ich anfangen soll.

    Zwei Möglichkeiten:


    1.
    Eine Schleife durch alle Ränge machen, und dann für alle Spieler jeweils prüfen ob der Spieler den Rang hat, wenn ja, ausgeben.


    2.
    Die Ränge der Spieler jeweils zwischenspeichern und in ein Array sortieren.


    Von der Einfachkeit her würde ich dir die erste Version empfehlen. Von der Performance ist wahrscheinlich die zweite Variante besser, das spielt bei einem solchen Befehl aber keine Rolle, da das nicht mal Millisekunden aus macht, sofern du keine 10000 Ränge hast.


    Poste deinen Befehl, falls du Hilfe am Code brauchst.

  • Beitrag von SlashQ ()

    Dieser Beitrag wurde von dennismitzwein aus folgendem Grund gelöscht: falscher Ort dafür ().
  • Beitrag von datgame ()

    Dieser Beitrag wurde von dennismitzwein gelöscht ().
  • Moin,


    ich definiere immer eine neue Variable und weise dieser einen Wert zu und versuche diese dann per SendClientMessage auszugeben kriege aber den Errorcode 35 (error 035: argument type mismatch (argument 2))



    Bsp:

    new lvl = SpielerInfo[playerid][pLevel];
    SendClientMessage(playerid, Rot, lvl);


  • Hey ich habe eine Kleine frage unswa wollte ich abfragen ob der Spieler schon 3 Autos hat aber weiß nicht wie ?
    Kann mir jemand ein Denkstoß geben ?
    So wird ja nur abgefragt ob überhaupt eins erstellt ist.

  • if(cache_get_row_count() == 0)
    zu:
    if(cache_get_row_count() >= 3)


    Beachte, dass dies so aber nicht klappen wird. Wenn du mysql_pquery nutzt, musst du die Cache Abfrage in einem Callback (neues public) machen.
    Ansonsten ändere
    mysql_pquery(dbhandle, query);
    zu:
    mysql_query(dbhandle, query);


    Dies hebelt allerdings den Performancegewinn der neuen Plugins aus und sollte daher nur bedingt genutzt werden.

  • Hey vielen dank aber ich habe ein Neues Problem beim Laden wird das Fahrzeug Unendlich Oft erstellt aber wieso ?



  • Zum einen darf die Schleife nur durch die Anzahl der Zeilen gehen, anstatt durch die gesamte Array-Größe und zum anderen musst du überall die Cache-Zeile "i" anstatt "0" auslesen.
    forward LoadCars(playerid);
    public LoadCars(playerid)
    {
    new rows = cache_get_row_count();
    if(rows == 0) return 1;
    printf("1");
    for(new i = 0; i < rows; i++)
    {
    if(cInfo[i][c_vID] != 0) continue;
    cache_get_field_content(i, "c_besitzer", cInfo[i][c_besitzer], dbhandle, 32);
    cInfo[i][c_model] = cache_get_field_content_int(i, "c_model", dbhandle);
    cInfo[i][c_x] = cache_get_field_content_float(i, "c_x", dbhandle);
    cInfo[i][c_y] = cache_get_field_content_float(i, "c_y", dbhandle);
    cInfo[i][c_z] = cache_get_field_content_float(i, "c_z", dbhandle);
    cInfo[i][c_r] = cache_get_field_content_float(i, "c_r", dbhandle);
    cInfo[i][c_color1] = cache_get_field_content_int(i, "c_color1", dbhandle);
    cInfo[i][c_color2] = cache_get_field_content_int(i, "c_color2", dbhandle);
    cInfo[i][c_vID] = CreateVehicle(cInfo[i][c_model],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][c_color1],cInfo[i][c_color2],0);
    }
    return 1;
    }

  • Beitrag von reaL. ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Selbst gelöst. ().
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hi, wie kann ich herrausfinden ob die haus id bereits Exisiert und wenn ja wie kann ich diese überspringen?
    Hier ist schon mal mein Angefangener Code:

    stock SaveHaus()
    {
    for(new i; i<MAX_HAUS; i++) // Die Schleife beginnt und geht alle Hausids durch
    {
    format(bfl, sizeof bfl, "UPDATE "#Tabelle_Haus" SET `h_posx` = %f, `h_posy` = %f, `h_posz` = %f, `h_intx` = %f, `h_inty` = %f, `h_intz` = %f, `h_inta` = %f, `h_int` = %f, `h_besitzer` = '%s', `h_vw` = %d, `h_kosten` = %d, `h_verkauf` = %d, `h_hid` = %d, `h_isbiz` = %d WHERE h_id = %d", // Das Haus wird nun geupdated
    Haus[i][h_posx],
    Haus[i][h_posy],
    Haus[i][h_posz],
    Haus[i][h_intx],
    Haus[i][h_inty],
    Haus[i][h_intz],
    Haus[i][h_inta],
    Haus[i][h_int],
    Haus[i][h_besitzer],
    Haus[i][h_vw],
    Haus[i][h_kosten],
    Haus[i][h_verkauf],
    Haus[i][h_hid],
    Haus[i][h_isbiz],
    i);
    mysql_query(bfl);
    print(">>>>>>>>>>><<<<<<<<<<<<");
    print("______________________");
    print(bfl);
    print("______________________");
    print(">>>>>>>>>>><<<<<<<<<<<<");
    mysql_free_result();
    }
    return 1;
    }



    @Jeffry

    Einmal editiert, zuletzt von SlashQ ()

  • Ahh, ok!
    Dann kannst du es so machen:
    if(Haus[i][h_posx] != 0.0 || Haus[i][h_posy] != 0.0 || Haus[i][h_posz] != 0.0) continue;


    Alternativ füge im enum eine Variable "h_exists" dazu, und setze die beim erstellen des Hauses auf true und beim löschen auf false.
    bool:h_exists,
    Dann kannst du es so machen:
    if(Haus[i][h_exists]) continue;

  • Danke @Jeffry nun zu einem anderen Befehl :)


    Ich möchte denn Leader auslesen lasen aber es kommen Fehler :/
    Der Befehl:

    CMD:leader(playerid,params[])
    {
    mysql_query("SELECT accounts, Fraktion FROM Name WHERE raenge = 10;");
    mysql_store_result();
    new rows = mysql_num_rows();
    if(!rows) return SendClientMessage(playerid, 0xFF0000FF, "Error: Etwas ist schief gegangen.");
    new str[512], row[64], name[32], frak, fname[32];
    while(mysql_fetch_row(row, "|"))
    {
    sscanf(row, "p<|>sd", name, frak);
    switch(frak)
    {
    case 1:{fname = "Regierung";}
    case 2:{fname = "SAPD";}
    }
    if(ReturnPlayerID(name) != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}%d [%s] - {00FF00}Online\n", str, name, fname);
    else format(str, sizeof(str), "%s{FFFFFF}%d [%s] - {FF0000}Offline\n", str, name, fname);
    }
    ShowPlayerDialog(playerid, DIALOG_SONSTIGES, DIALOG_STYLE_MSGBOX, "Online-List", str, "Ok");
    return 1;
    }



    Der Fehler Code

    C:\Users\Basti\Desktop\Selfmade\gamemodes\Selfmade.pwn(10012) : error 035: argument type mismatch (argument 3)
    C:\Users\Basti\Desktop\Selfmade\gamemodes\Selfmade.pwn(10023) : warning 217: loose indentation
    C:\Users\Basti\Desktop\Selfmade\gamemodes\Selfmade.pwn(10023) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    1 Error.


    Der Error ist in dieser Zeile :
    while(mysql_fetch_row(row, "|"))