Beiträge von Jeffry

    if(strlen(input) < 2 || strlen(input) > 64) return SendClientMessage(playerid,COLOR_GRAD2,"Benutze: /sup [Text] Achtung! Maximale Länge: 64 Zeichen");


    "cmd" Bezieht sich nur auf den Befehl, in deinem Fall steht da also "/sup" drin.

    ein schniekes Makro:

    Das ist es wirklich, war mir so gar nicht bekannt, dass der trotz den 6 angegebenen Parametern alle weiteren im letzten Parameter mitzieht (%5 oben), sodass es auch mit mehreren Platzhaltern geht. Man lernt nie aus.


    Allerdings rate ich dazu, das so abzuändern:
    #define lformat(%0,%1,%2,%3,%4,%5,%6); \
    switch(PlayerInfo[%0][language]) \
    { \
    case 0,1: format(%1,%2,%3,%6);\
    case 2: format(%1,%2,%4,%6);\
    case 3: format(%1,%2,%5,%6);\
    }


    Sonst geht der Code nämlich bei mehrdimensionalen Arrays auf die Bretter.


    Nutzung wäre dann:
    lformat(playerid, string, sizeof(string), "Welcome %s!", "Willkommen %s!", "Benvenuto %s!", name);
    print(string);

    Nein, da arbeitest du ja über den Cache, und eine explizite Speicherung des Results ist nicht mehr notwendig.
    Vom Vorgehen:
    mysql_pquery(/*Query und Callback angeben*/);
    public deinCallback()
    {
    //Hier den Cache auslesen
    }


    Oder (nur bedingt nutzen)
    mysql_query(/*Query*/);
    //Hier direkt den Cache auslesen

    Das kannst du so machen:
    ocmd:setpint(playerid,params[])
    {
    new pID, intID;
    if(strlen(params) > 0 && IsNumeric(params)) //Steht nur eine Zahl in den Params? Dann nutze playerid.
    {
    pID = playerid;
    intID = strval(params);
    }
    else if(sscanf(params,"ui",pID,intID)) return SendClientMessage(playerid, -1,"Benutze: /setpint ID InteriorID");
    SetPlayerInterior(pID, intID);
    return 1;
    }


    Zusammen mit dieser Funktion:
    stock IsNumeric(str[])
    {
    if(!strlen(str)) return 0;
    for(new i = 0, j = strlen(str); i < j; i++) if(str[i] > '9' || str[i] < '0') return 0;
    return 1;
    }

    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);
    Zu
    if(ReturnPlayerID(name) != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}%s [%s] - {00FF00}Online\n", str, name, fname);
    else format(str, sizeof(str), "%s{FFFFFF}%s [%s] - {FF0000}Offline\n", str, name, fname);

    mysql_query("SELECT "#Tabelle_Spieler", Leader FROM Name WHERE Rang = 10;");
    zu:
    mysql_query("SELECT Name, Leader FROM "#Tabelle_Spieler" WHERE Rang = 10;");


    Sofern in Spalte "Leader" die ID der Fraktion steht. Ansonsten passe das entsprechend an.

    Nach dem was du willst, dürfte es so aussehen:
    stock LoadHaus()
    {
    new string[400],idx=0;
    for(new i; i<MAX_HAUS; i++)
    {
    format(string, sizeof(string), "SELECT * FROM haus_tabelle WHERE id = '%d'", i); //"haus_tabelle" bitte anpassen, wie die Tabelle bei dir heißt!!
    mysql_query(string);
    mysql_store_result();
    if(!mysql_num_rows())
    {
    mysql_free_result();
    continue;
    }
    mysql_fetch_row_format(string, "|"); // Ansonsten werden die Daten in "data" gespeichert
    mysql_free_result();
    sscanf(string, "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);
    return 1;
    }
    Das "haus_tabelle" bitte entsprechend deiner Tabelle anpassen.

    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;

    Ändere
    if(Parkkralle[newcar] == 1 || PlayerCar[playerid][newcar][Kralle] == 1)
    zu:
    if(Parkkralle[newcar] == 1)


    Wenn Parkkralle mit der vehicleid 1 ist, dann sollte das entsprechende PlayerCar ebenfalls auf 1 stehen, daher macht eine doppelte Prüfung keinen Sinn.
    Der Fehler tritt auf, weil du mit der vehicleid (newcar) in das Array gehst, welches für die 3 PlayerCars steht (0 bis 2), das geht nicht.