[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
  • 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. ().
  • 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 ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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, "|"))

  • Also, ich möchte die Häuser Laden und wenn es ein haus mit der nicht gibt soll es Übersprungen werden und das nächste geladen werden.
    Hier der Code:

    stock LoadHaus()
    {
    new string[400],idx=0;
    for(new i; i<MAX_HAUS; i++)
    {
    mysql_fetch_row_format(data, "|"); // Ansonsten werden die Daten in "data" gespeichert
    mysql_free_result();
    sscanf(data, "p<|>ifffffffiis[24]iiii", // Die Daten werden den Variablen zugewiesen
    Haus[i][h_id],
    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_vw],
    Haus[i][h_int],
    Haus[i][h_besitzer],
    Haus[i][h_kosten],
    Haus[i][h_verkauf],
    Haus[i][h_isbiz],
    Haus[i][h_hid]);


    // Jetzt muss noch überprüft werden, ob das Haus ein Biz sein soll oder ein Haus UND ob es zum Verkauf steht
    if(Haus[i][h_isbiz] == 1)
    {
    if(Haus[i][h_verkauf] == 0)
    {
    Haus[i][h_id] = CreatePickup(1273, 1, Haus[i][h_posx], Haus[i][h_posy], Haus[i][h_posz], 0);
    format(string, sizeof string, "Haus: %d\nBesitzer: %s", i, Haus[i][h_besitzer]);
    Haus[i][label] = Create3DTextLabel(string, Grün, Haus[i][h_posx], Haus[i][h_posy], Haus[i][h_posz], 15.0, 0);
    }
    else
    {
    Haus[i][h_id] = CreatePickup(1273, 1, Haus[i][h_posx], Haus[i][h_posy], Haus[i][h_posz], 0);
    format(string, sizeof string, "Haus: %d\nZum Verkauf\nKosten: %d$", i, Haus[i][h_kosten]);
    Haus[i][label] = Create3DTextLabel(string, ROT, Haus[i][h_posx], Haus[i][h_posy], Haus[i][h_posz], 15.0, 0);
    }
    }
    else
    {
    if(Haus[i][h_verkauf] == 0)
    {
    Haus[i][h_id] = CreatePickup(1239, 1, Haus[i][h_posx], Haus[i][h_posy], Haus[i][h_posz], 0);
    format(string, sizeof string, "Biz: %s (%d)\nBesitzer: %s\nKosten: %d$", BizName[Haus[i][h_hid]], i, Haus[i][h_besitzer], Haus[i][h_kosten]);
    Haus[i][label] = Create3DTextLabel(string, Grün, Haus[i][h_posx], Haus[i][h_posy], Haus[i][h_posz], 15.0, 0);
    }
    else
    {
    Haus[i][h_id] = CreatePickup(1239, 1, Haus[i][h_posx], Haus[i][h_posy], Haus[i][h_posz], 0);
    format(string, sizeof string, "Biz: %s (%d)\nZum Verkauf\nKosten: %d$", BizName[Haus[i][h_hid]], i, Haus[i][h_kosten]);
    Haus[i][label] = Create3DTextLabel(string, ROT, Haus[i][h_posx], Haus[i][h_posy], Haus[i][h_posz], 15.0, 0);
    }
    }
    idx++;
    }
    printf("Es wurden %i Häuser geladen",idx);
    mysql_free_result();
    return 1;
    }