Beiträge von Jeffry

    Doch, nur ist dein String irgendwann zu lang für den Compiler.
    Dann musst du es so machen:
    CMD:wshop(playerid,params[])
    {
    new string[512];
    format(string, sizeof(string), "Weapon\tPrice\tAmmo\n\
    {FF0000}Silenced 9mm\t{00FF00}$600\t{FFFF00}100\n\
    {FF0000}Desert Eagle\t{00FF00}$1000\t{FFFF00}100\n\
    {FF0000}Shotgun\t{00FF00}$1000\t{FFFF00}100\n\
    {FF0000}Sawnoff Shotgun\t{00FF00}$1000\t{FFFF00}100\n");


    format(string, sizeof(string), "%s\
    {FF0000}Combat Shotgun\t{00FF00}$2500\t{FFFF00}100\n\
    {FF0000}Uzi\t{00FF00}$1500\t{FFFF00}100\n\
    {FF0000}Mp5\t{00FF00}$700\t{FFFF00}100\n\
    {FF0000}AK-47\t{00FF00}$1250\t{FFFF00}100\n\
    {FF0000}M4\t{00FF00}$1750\t{FFFF00}100\n\
    {FF0000}Tec-9\t{00FF00}$1000\t{FFFF00}100", string);


    format(string, sizeof(string), "%s\
    Hier mehr...\
    ", string);


    ShowPlayerDialog(playerid, DIALOG_WSHOP, DIALOG_STYLE_TABLIST_HEADERS, "Buy Weapon", string, "Select", "Cancel");


    return 1;
    }

    (Achja... mir ist vorhin aufgefallen das ich in der Datenbank 16 Gangzones habe und geladen werden aber bloß 15...)

    Erhöhe die Anzahl der Gangzones im Array um eines, da du bei 1 anfängst, anstatt bei 0 (also 17 rein schreiben).



    Zur Farbe:
    Bei welcher Zonen-ID war die Farbe falsch? Welche Farbe hatte sie, und welche Farbe sollte sie haben?
    Wenn es bei zwei oder mehreren so ist, dann nenne bitte alle, vielleicht lässt sich da ein Muster erkennen.

    Ok, das ist schonmal gut.


    Wenn du das hier:
    printf("CreateTunedCar: Typ: %d", Carlist[playerid][CarKey1][Typ]);
    if(IsPlayerConnected(playerid) && Carlist[playerid][CarKey1][Typ] != -1)
    {
    printf("Model: %d", Kaufliste[Carlist[playerid][CarKey1][Typ]][Modelid]);


    änderst zu:
    printf("CreateTunedCar: Typ: %d", Carlist[playerid][CarKey1][Typ]);
    printf("CreateTunedCar: Kaufliste0: %d", Kaufliste[0][Modelid]);
    printf("CreateTunedCar: Kaufliste10: %d", Kaufliste[10][Modelid]);
    if(IsPlayerConnected(playerid) && Carlist[playerid][CarKey1][Typ] != -1)
    {
    printf("Model: %d", Kaufliste[Carlist[playerid][CarKey1][Typ]][Modelid]);


    Was wird dann geprintet?

    Keine gute Praxis nur weil es noch nicht so ist.

    Eine Vorsorge macht nur dann Sinn, wenn man sie auch verwenden wird, was man hier nicht sagen kann, das wäre reine Spekulation, und daher lasse ich die Systeme der Leute so, wie sie sie selbst aufgebaut haben. Ich miete mir auch keine 10TB an Webspace, nur weil ich sie vielleicht mal brauchen könnte. Man kann die Dinge immernoch ändern, wenn es benötigt wird.
    Der Code, so wie er ist, funktioniert mit beiden Varianten, daher tut eine Diskussion dafüber für mich nichts zur Sache und hilft auch nicht zur Problemlösung, im Gegenteil.




    Zum Problem:
    Lass dir das Query mal printen und poste dann was geprintet wird, wenn die Speicherung aufgerufen wird.

    So dürfte es passen:
    else if(IsPlayerInRangeOfPoint(playerid, 0.2,1411.1259,-1484.6494,106.6032) )//Sprunk Machine
    {
    if(gettime() < Waitingtime[playerid]) return 1;
    if(GetPlayerMoney(playerid) >= 1) // 1 $ required.
    {
    new Float:angle;
    GetPlayerFacingAngle(playerid, angle);
    if(angle < 90 && angle > 70)
    {
    Waitingtime[playerid] = gettime() + WaitingtimeInterval;
    ApplyAnimation(playerid,"VENDING","VEND_Use",4.1,0,0,0,0,0);
    SetTimerEx("Animation",2600, false, "playerid", playerid);
    //ApplyAnimation(playerid,"VENDING","VEND_Drink_P",1.4,0,1,1,0,1200,1);
    //ApplyAnimation(playerid,"VENDING"," VEND_Eat_P ",1.4,0,1,1,0,1200,1);
    PlayerPlaySound(playerid,42600,0,0,0);
    GivePlayerMoney(playerid,-1);
    new Float:health;
    GetPlayerHealth(playerid,health);
    health += 33.3;
    if(health > 100.0) health = 100.0;
    SetPlayerHealth(playerid,health);
    }
    }
    }

    Ich würde die o.g. Änderung Jeffry wieder rückgängig machen und beim Speichern für die Spalte ID nicht h nehmen sondern die ID im h index.

    Das kann er machen, in seinem Fall spielt es aber keine Rolle, zumindest noch nicht, da er alle Zeilen lückenlos gefüllt hat. Bleibt das so, ist es egal (je nach dem wie es geplant ist).


    Falls nicht, dann muss er einiges ändern:
    format(query,sizeof(query),"%s WHERE id='%i'",query,h);
    zu:
    format(query,sizeof(query),"%s WHERE id='%i'",query,HouseInfo[h][h_ID]);



    Beim Laden natürlich die Änderung wieder zurück zu:
    HouseInfo[i][h_ID] = cache_get_field_content_int(i, "id");



    Bei der Erstellung:
    HouseInfo[i][h_ID] = i;
    entfernen, und bei mysql_pquery ein Callback aufrufen lassen, mit "i" als Parameter.
    In dem Callback muss dann cache_insert_id() der h_ID zugewiesen werden.


    http://wiki.sa-mp.com/wiki/MySQL/R33#cache_insert_id




    Zwecks dem Problem:
    Lasse dir das Query der Speicherung mal mit einem Print ausgeben, und poste dann die Ausgabe, sowie den MySQL Log dazu.

    Ok, ändere beim Laden:
    HouseInfo[i][h_ID] = cache_get_field_content_int(i, "id");
    zu:
    HouseInfo[i][h_ID] = i;


    Sonst könnte es vorkommen, dass es mal nicht passt.


    Zwecks dem Problem:



    herausfinde dass er bei dem Befehl die richtige ID des Hauses herausbekommt aber eine falsche bei dem stock SaveHouses() wiedergibt.

    Wie genau findest du das heraus, kannst du das erklären, bzw. zeigen, welche Werte ausgegeben werden, und welche ausgegeben werden sollten (vor allem die ID)?

    Was wird dir so ausgegeben?
    public GangZonesLoad(id)
    {
    new rows, field;
    cache_get_data(rows, field);
    if(!rows)return 1;
    cache_get_row(0, 1, gwInfo[id][f_gebiet]);
    printf("Gangzoneid: %i = %s",id,gwInfo[id][f_gebiet]);
    gwInfo[id][besitzer] = cache_get_row_int(0, 2);
    gwInfo[id][minx] = cache_get_row_float(0, 3);
    gwInfo[id][miny] = cache_get_row_float(0, 4);
    gwInfo[id][maxx] = cache_get_row_float(0, 5);
    gwInfo[id][maxy] = cache_get_row_float(0, 6);
    gwInfo[id][running] = cache_get_row_int(0, 9);
    gwInfo[id][punkteAngreifer] = cache_get_row_int(0, 7);
    gwInfo[id][punkteVerteidiger] = cache_get_row_int(0, 8);
    gwInfo[id][angreifer] = cache_get_row_int(0, 13);
    gwInfo[id][RemainingHour] = cache_get_row_int(0, 10);
    gwInfo[id][RemainingMin] = cache_get_row_int(0, 11);
    gwInfo[id][RemainingSec] = cache_get_row_int(0, 12);
    printf("Besitzer des Gebiets %d ist: %d", id, gwInfo[id][besitzer]);
    CreateGangZones(id);
    return 1;
    }


    Welches Gebiet ist das Gebiet, mit der falschen Farbe?