Business System bugt rum

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
  • Hey, ich habe bei meinem Business System ein paar komische Bugs. Wen ich ein Biz kaufe wird es perfekt in der Datenbank gespeichert aber es wird ein anderes Aktueliesiert also der Name geändert etc. Es werden aber alle Businesse problemlos geladen nur die Bugen dann rum. Wen ich bei einem Business also stehe und es kaufe oder so wird es perfekt in der Datenbank gespeichert aber das Business was in der Datenbank darüber ist wird dann Bearbeitet vom Server also das Icon ändert sich und der Name und so. Oder wen ich es lösche es wird aus der Datenbank gelöscht auf dem Server bleiben die Icons da. Also die ganzen Businesse vertauschen sich glaube ich immer das ist schwer zu erklären.


    mysql_function_query(Handle, "SELECT * FROM `businesse`", true,"LoadBizzSystem", "", "");


    command(editbizz, playerid, params[])
    {
    #pragma unused params
    new string[128], Usage[65], Wert;
    if(SpielerInfo[playerid][pAdminlevel] < 3)
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Administrator oder dein Administratorenlevel ist zu niedrig!");
    if(GetPVarInt(playerid, "Adminduty") == 0)
    return SendClientMessage(playerid, COLOR_RED, "Du musst erst als Admin im Einsatz sein um diesen Befehl nutzen zu können!");
    if(sscanf(params, "s[65]d",Usage,Wert))
    {
    SendClientMessage(playerid, COLOR_WHITE, "Befehl: /editbizz [Option] [Wert]");
    SendClientMessage(playerid, COLOR_YELLOW, "Verfügbare Optionen: Preis, Level, Produkte, ProduktPreis, ImBesitz, Kasse, Lieferstatus");
    return 1;
    }
    new h = ReturnBizzID(playerid);
    if(h == -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Business!");
    return 1;
    }
    if(strcmp(Usage, "Preis", true) == 0)
    {
    format(string, sizeof(string), "Du hast den Preis des Business %d(%s) auf %d gesetzt!",h,BizzInfo[h][bName],Wert);
    SendClientMessage(playerid, COLOR_WHITE, string);
    BizzInfo[h][bBuyPrice] = Wert;
    UpdateBizz(h);
    return 1;
    }
    if(strcmp(Usage, "Level", true) == 0)
    {
    format(string, sizeof(string), "Du hast das Level des Business %d(%s) auf %d gesetzt!",h,BizzInfo[h][bName],Wert);
    SendClientMessage(playerid, COLOR_WHITE, string);
    BizzInfo[h][bLevelNeeded] = Wert;
    UpdateBizz(h);
    return 1;
    }
    if(strcmp(Usage, "Produkte", true) == 0)
    {
    format(string, sizeof(string), "Du hast die Produkte des Business %d(%s) auf %d gesetzt!",h,BizzInfo[h][bName],Wert);
    SendClientMessage(playerid, COLOR_WHITE, string);
    BizzInfo[h][bProducts] = Wert;
    UpdateBizz(h);
    return 1;
    }
    if(strcmp(Usage, "Till", true) == 0)
    {
    format(string, sizeof(string), "Du hast die 'Till' des Business %d(%s) auf %d gesetzt!",h,BizzInfo[h][bName],Wert);
    SendClientMessage(playerid, COLOR_WHITE, string);
    BizzInfo[h][bTill] = Wert;
    UpdateBizz(h);
    UpdateTS();
    return 1;
    }
    if(strcmp(Usage, "ProduktPreis", true) == 0)
    {
    format(string, sizeof(string), "Du hast den Produkt Preis des Business %d(%s) auf %d gesetzt!",h,BizzInfo[h][bName],Wert);
    SendClientMessage(playerid, COLOR_WHITE, string);
    BizzInfo[h][bPriceProd] = Wert;
    UpdateBizz(h);
    return 1;
    }
    if(strcmp(Usage, "ImBesitz", true) == 0)
    {
    if(Wert > 1 || Wert < 0)
    return SendClientMessage(playerid,COLOR_RED,"Im Besitz = 1 | Nicht im Besitz = 0!");
    format(string, sizeof(string), "Du hast den Im Besitz Wertes des Business %d(%s) auf %d gesetzt!",h,BizzInfo[h][bName],Wert);
    SendClientMessage(playerid, COLOR_WHITE, string);
    BizzInfo[h][bOwned] = Wert;
    UpdateBizz(h);
    return 1;
    }
    if(strcmp(Usage, "Kasse", true) == 0)
    {
    format(string, sizeof(string), "Du hast die Kasse des Business %d(%s) auf %d gesetzt!",h,BizzInfo[h][bName],Wert);
    SendClientMessage(playerid, COLOR_WHITE, string);
    BizzInfo[h][bKasse] = Wert;
    UpdateBizz(h);
    return 1;
    }
    if(strcmp(Usage, "Lieferstatus", true) == 0)
    {
    format(string, sizeof(string), "Du hast den Lieferstatus des Business %d(%s) auf %d gesetzt!",h,BizzInfo[h][bName],Wert);
    SendClientMessage(playerid, COLOR_WHITE, string);
    BizzInfo[h][bProds] = Wert;
    UpdateBizz(h);
    return 1;
    }
    return 1;
    }
    command(asellbizz, playerid, params[])
    {
    #pragma unused params
    new string[128];
    if(SpielerInfo[playerid][pAdminlevel] < 3)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist kein Administrator oder dein Administratorenlevel ist zu niedrig!");
    return 1;
    }
    if(GetPVarInt(playerid, "Adminduty") == 0)
    {
    SendClientMessage(playerid, COLOR_RED, "Du musst erst als Administrator im Einsatz um diesen Befehl nutzen zu können!");
    return 1;
    }
    new b = ReturnBizzID(playerid);
    if(b == -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Business!");
    return 1;
    }
    BizzInfo[b][bOwned] = 0;
    format(BizzInfo[b][bOwner], MAX_PLAYER_NAME, "Frei");
    format(BizzInfo[b][bOwner2], MAX_PLAYER_NAME, "Keiner");
    format(string, sizeof(string), "UPDATE `businesse` SET `bowner` = '%s',`bowner2` = '%s' WHERE `bid` = '%i'", BizzInfo[b][bOwner],BizzInfo[b][bOwner2], b);
    mysql_function_query(Handle, string, false, "SendQuery", "");
    BizzInfo[b][bTill] = 0;
    BizzInfo[b][bProducts] = 1000;
    BizzInfo[b][bMaxProducts] = 2000;
    BizzInfo[b][bPriceProd] = 41;
    BizzInfo[b][bKasse] = 15000;
    BizzInfo[b][bProds] = 0;
    UpdateBizz(b);
    SendClientMessage(playerid,COLOR_RED,"Das Business wurde administrativ verkauft!");
    return 1;
    }
    command(deletebizz, playerid, params[])
    {
    #pragma unused params
    new query[128],str[128];
    if(SpielerInfo[playerid][pAdminlevel] < 5)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist kein Administrator oder dein Administratorenlevel ist zu niedrig!");
    return 1;
    }
    if(GetPVarInt(playerid, "Adminduty") == 0)
    {
    SendClientMessage(playerid, COLOR_RED, "Du musst erst als Administrator im Einsatz um diesen Befehl nutzen zu können!");
    return 1;
    }
    new h = ReturnBizzID(playerid);
    if(h == -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Business!");
    return 1;
    }
    format(query, sizeof(query), "DELETE FROM `businesse` WHERE `bid` = %d",h);
    mysql_function_query(Handle, query, false, "SendQuery","");
    mysql_free_result();
    DestroyDynamic3DTextLabel(BizzInfo[h][blabel]);
    DestroyDynamicPickup(BizzInfo[h][bPickup]);
    format(str,sizeof(str),"Business (%d)(%s) wurde erfolgreich gelöscht!",h,BizzInfo[h][bName]);
    SendClientMessage(playerid,COLOR_WHITE,str);
    return 1;
    }
    command(createbusiness, playerid, params[])
    {
    #pragma unused params
    return cmd_createbizz(playerid, params);
    }
    command(createbizz, playerid, params[])
    {
    if(SpielerInfo[playerid][pAdminlevel] >= 5)
    {
    new preis,level,name[64],Float:x, Float:y, Float:z;
    if(GetPVarInt(playerid, "Adminduty") == 0)
    return SendClientMessage(playerid, COLOR_RED, "Du musst erst als Administrator im Einsatz um diesen Befehl nutzen zu können!");
    if(sscanf(params, "s[64]ii", name,preis,level))
    return SendClientMessage(playerid, COLOR_WHITE, "Befehl: /createbizz [Name] [Preis] [Level]");
    if(strlen(name) > 64)
    return SendClientMessage(playerid, COLOR_RED,"Der eingebene Name ist zu lang (Max. 64 Zeichen)!");
    if(preis < 0)
    return SendClientMessage(playerid, COLOR_RED, "Sie müssen einen Preis für das Business wählen, welcher über 0 liegt.");
    if(level < 0)
    return SendClientMessage(playerid, COLOR_RED, "Sie müssen ein Level für das Business wählen, welcher über 0 liegt.");
    if(AktuelleBizz == MAX_BIZZ)
    {
    printf("Error: Die maximale Menge an Businessen [%d] wurde erreicht!",MAX_BIZZ);
    return 1;
    }
    SendClientMessage(playerid,COLOR_WHITE,"Neues Business wurde erfolgreich erstellt!");
    GetPlayerPos(playerid, x, y, z);
    CreateNewBizz(x,y,z,name,preis,level);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein Administrator oder dein Administratorenlevel ist zu niedrig!");
    }
    return 1;
    }



    stock CreateNewBizz(Float:x,Float:y,Float:z,name[],level,preis)
    {
    new query[400];
    AktuelleBizz ++;
    mysql_format(Handle, query, "INSERT INTO `businesse` (bid,bowned,bname,bowner,bowner2,bbx,bby,bbz,blevel,bpreis,btill,bproducts,bmaxproducts,bpriceprod,bkasse) VALUES ('%d','0','%s', 'Frei', 'Keiner', '0.0', '0.0', '0.0', '%i', '%i', '0', '1500', '2000', '95', '20000')",
    AktuelleBizz,name,level,preis);
    mysql_function_query(Handle, query, true, "OnBizzCreate","ifffiis",AktuelleBizz,x,y,z,level,preis,name);
    return AktuelleBizz;
    }

    forward OnBizzCreate(id,Float:x,Float:y,Float:z,level,preis,name[]);
    public OnBizzCreate(id,Float:x,Float:y,Float:z,level,preis,name[])
    {
    BizzInfo[id][bID] = mysql_insert_id();
    BizzInfo[BizzInfo[id][bID]][bOwned] = 0;
    format(BizzInfo[BizzInfo[id][bID]][bName], 64, name);
    format(BizzInfo[BizzInfo[id][bID]][bOwner], MAX_PLAYER_NAME, "Frei");
    format(BizzInfo[BizzInfo[id][bID]][bOwner2], MAX_PLAYER_NAME, "Keiner");
    BizzInfo[BizzInfo[id][bID]][bEntranceX] = x;
    BizzInfo[BizzInfo[id][bID]][bEntranceY] = y;
    BizzInfo[BizzInfo[id][bID]][bEntranceZ] = z;
    BizzInfo[BizzInfo[id][bID]][bLevelNeeded] = preis;
    BizzInfo[BizzInfo[id][bID]][bBuyPrice] = level;
    BizzInfo[BizzInfo[id][bID]][bTill] = 0;
    BizzInfo[BizzInfo[id][bID]][bProducts] = 1500;
    BizzInfo[BizzInfo[id][bID]][bMaxProducts] = 2000;
    BizzInfo[BizzInfo[id][bID]][bPriceProd] = 41;
    BizzInfo[BizzInfo[id][bID]][bKasse] = 15000;
    UpdateBizz(BizzInfo[id][bID]);
    CreateBizzOnMap(BizzInfo[id][bID]);
    return 1;
    }


    forward LoadBizzSystem();
    public LoadBizzSystem()
    {
    printf("LoadBizzSystem aufgerufen.");
    new rows, fields, content[64];
    cache_get_data(rows, fields);
    printf("rows: %d", rows);
    if(rows)
    {
    while(AktuelleBizz<rows)
    {
    printf("AktuelleBizz: %d", AktuelleBizz);
    cache_get_row(AktuelleBizz, 0, content);
    BizzInfo[AktuelleBizz][bID] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 1, content);
    BizzInfo[AktuelleBizz][bOwned] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 2, content);
    format(BizzInfo[AktuelleBizz][bName], 64, "%s", content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 3, content);
    format(BizzInfo[AktuelleBizz][bOwner], MAX_PLAYER_NAME, "%s", content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 5, content);
    BizzInfo[AktuelleBizz][bEntranceX] = floatstr(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 9, content);
    BizzInfo[AktuelleBizz][bBuyPrice] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 10, content);
    BizzInfo[AktuelleBizz][bTill] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 11, content);
    BizzInfo[AktuelleBizz][bProducts] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 12, content);
    BizzInfo[AktuelleBizz][bMaxProducts] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 13, content);
    BizzInfo[AktuelleBizz][bPriceProd] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 14, content);
    BizzInfo[AktuelleBizz][bKasse] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 6, content);
    BizzInfo[AktuelleBizz][bEntranceY] = floatstr(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 7, content);
    BizzInfo[AktuelleBizz][bEntranceZ] = floatstr(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 8, content);
    BizzInfo[AktuelleBizz][bLevelNeeded] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 15, content);
    BizzInfo[AktuelleBizz][bProds] = strval(content);
    strdel(content,0,sizeof(content));
    cache_get_row(AktuelleBizz, 4, content);
    format(BizzInfo[AktuelleBizz][bOwner2], MAX_PLAYER_NAME, "%s", content);
    strdel(content,0,sizeof(content));


    printf("Daten ausgelesen: Name: %s", BizzInfo[AktuelleBizz][bName]);
    //CreateBizzOnMap(BizzInfo[AktuelleBizz][bID]);
    CreateBizzOnMap(AktuelleBizz);
    AktuelleBizz ++;
    }
    }
    printf("<-| [BIZZSYSTEM] Es wurden %i Businesse geladen.", rows);
    UpdateTS();
    return 1;
    }


    stock CreateBizzOnMap(h)
    {
    printf("CreateBizzOnMap: %d", h);
    new labelText[340];
    printf("Lösche: %d und %d", _:BizzInfo[h][blabel], BizzInfo[h][bPickup]);
    DestroyDynamic3DTextLabel(BizzInfo[h][blabel]);
    DestroyDynamicPickup(BizzInfo[h][bPickup]);
    printf("Owned: %d", BizzInfo[h][bOwned]);
    printf("Pos: %f / %f / %f", BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ]-0.7);
    if(BizzInfo[h][bOwned] == 0)
    {
    BizzInfo[h][bPickup] = CreateDynamicPickup(19470, 14, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ]-0.7, -1);
    format(labelText, sizeof(labelText), "{FFFFFF}- {FFFF00}%s (%d){FFFFFF} steht zum Verkauf! -{FFFFFF}\n{FFFFFF}Preis: {FFFF00}%i Euro\n{FFFFFF}Level: {FFFF00}%i\n{FFFF00}/buybusiness {FFFFFF}um es zu kaufen!",BizzInfo[h][bName],h,BizzInfo[h][bBuyPrice],BizzInfo[h][bLevelNeeded]);
    }
    if(BizzInfo[h][bOwned] == 1)
    {
    BizzInfo[h][bPickup] = CreateDynamicPickup(1272, 14, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ], -1);
    format(labelText, sizeof(labelText), "{FFFFFF}- {FFFF00}%s (%d){FFFFFF}-\nim Besitz von %s\n2ter Besitzer : %s!", BizzInfo[h][bName],h,BizzInfo[h][bOwner],BizzInfo[h][bOwner2]);
    }
    BizzInfo[h][blabel] = CreateDynamic3DTextLabel(labelText, COLOR_WHITE, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY]-0.02, BizzInfo[h][bEntranceZ]+0.7, 10);
    printf("Erstellt: %d und %d", _:BizzInfo[h][blabel], BizzInfo[h][bPickup]);
    printf("labelText: %s", labelText);
    return 1;
    }



    stock UpdateBizz(h)
    {
    new labelText[340],query[420];
    DestroyDynamic3DTextLabel(BizzInfo[h][blabel]);
    DestroyDynamicPickup(BizzInfo[h][bPickup]);
    format(query, sizeof(query),
    "UPDATE `businesse` SET bowned = %i,bbx = %.3f,bby = %.3f,bbz = %.3f,blevel = %i,bpreis = %i,btill = %i,bproducts = %i,bmaxproducts = %i,bpriceprod = %i,bkasse = %i,bprods = %i WHERE `bid` = %d",
    BizzInfo[h][bOwned],BizzInfo[h][bEntranceX],BizzInfo[h][bEntranceY],BizzInfo[h][bEntranceZ],BizzInfo[h][bLevelNeeded],BizzInfo[h][bBuyPrice],BizzInfo[h][bTill],BizzInfo[h][bProducts],BizzInfo[h][bMaxProducts],BizzInfo[h][bPriceProd],BizzInfo[h][bKasse],BizzInfo[h][bProds],h);
    mysql_function_query(Handle, query, false, "SendQuery","");
    if(BizzInfo[h][bOwned] == 0)
    {
    BizzInfo[h][bPickup] = CreateDynamicPickup(19470, 14, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ]-0.7, -1);
    format(labelText, sizeof(labelText), "{FFFFFF}- {FFFF00}%s {FFFFFF}steht zum Verkauf! -{FFFFFF}\n{FFFFFF}Preis: {FFFF00}%i Euro\n{FFFFFF}Level: {FFFF00}%i\n{FFFF00}/buybusiness {FFFFFF}um es zu kaufen!", BizzInfo[h][bName],BizzInfo[h][bBuyPrice],BizzInfo[h][bLevelNeeded]);
    }
    if(BizzInfo[h][bOwned] == 1)
    {
    BizzInfo[h][bPickup] = CreateDynamicPickup(1272, 14, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ], -1);
    format(labelText, sizeof(labelText), "{FFFFFF}- {FFFF00}%s {FFFFFF}-\nim Besitz von %s\n2ter Besitzer : %s!", BizzInfo[h][bName],BizzInfo[h][bOwner],BizzInfo[h][bOwner2]);
    }
    BizzInfo[h][blabel] = CreateDynamic3DTextLabel(labelText, COLOR_WHITE, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY]-0.02, BizzInfo[h][bEntranceZ]+0.7, 10);
    return 1;
    }

    CREATE TABLE IF NOT EXISTS `businesse` (
    `bid` int(11) NOT NULL AUTO_INCREMENT,
    `bowned` int(2) NOT NULL,
    `bname` varchar(36) NOT NULL,
    `bowner` varchar(36) NOT NULL,
    `bowner2` varchar(36) NOT NULL,
    `bbx` double NOT NULL,
    `bby` double NOT NULL,
    `bbz` double NOT NULL,
    `blevel` int(2) NOT NULL,
    `bpreis` int(11) NOT NULL,
    `btill` int(11) NOT NULL,
    `bproducts` int(11) NOT NULL,
    `bmaxproducts` int(11) NOT NULL,
    `bpriceprod` int(11) NOT NULL,
    `bkasse` int(11) NOT NULL,
    `bprods` int(2) NOT NULL,
    PRIMARY KEY (`bid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=45 ;

  • Bei UpdateBizz:


    format(query, sizeof(query),
    "UPDATE `businesse` SET bowned = %i,bbx = %.3f,bby = %.3f,bbz = %.3f,blevel = %i,bpreis = %i,btill = %i,bproducts = %i,bmaxproducts = %i,bpriceprod = %i,bkasse = %i,bprods = %i WHERE `bid` = %d",
    BizzInfo[h][bOwned],BizzInfo[h][bEntranceX],BizzInfo[h][bEntranceY],BizzInfo[h][bEntranceZ],BizzInfo[h][bLevelNeeded],BizzInfo[h][bBuyPrice],BizzInfo[h][bTill],BizzInfo[h][bProducts],BizzInfo[h][bMaxProducts],BizzInfo[h][bPriceProd],BizzInfo[h][bKasse],BizzInfo[h][bProds],h);
    zu:
    format(query, sizeof(query),
    "UPDATE `businesse` SET bowned = %i,bbx = %.3f,bby = %.3f,bbz = %.3f,blevel = %i,bpreis = %i,btill = %i,bproducts = %i,bmaxproducts = %i,bpriceprod = %i,bkasse = %i,bprods = %i WHERE `bid` = %d",
    BizzInfo[h][bOwned],BizzInfo[h][bEntranceX],BizzInfo[h][bEntranceY],BizzInfo[h][bEntranceZ],BizzInfo[h][bLevelNeeded],BizzInfo[h][bBuyPrice],BizzInfo[h][bTill],BizzInfo[h][bProducts],BizzInfo[h][bMaxProducts],BizzInfo[h][bPriceProd],BizzInfo[h][bKasse],BizzInfo[h][bProds],BizzInfo[h][bID]);

  • Es geht immer noch nicht. Was mir aber auch aufgefallen ist das es in der Datenbank mit id 1 anfängt eigentlich sollte es doch mit id 0 oder? Ich sehe grade in der Datenbank das ich habe ja das Business mit der id 11 gekauft. Das da unter Owner mein Name eingetragen wurde aber bei dem Business mit der id 12 wurde unter Owned eine 1 eingetragen.

  • command(buybusiness, playerid, params[])
    {
    new string[128];
    new h = ReturnBizzID(playerid);
    if(h == -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Business!");
    return 1;
    }
    if(h != -1)
    {
    if(BizzInfo[h][bOwned] == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"Das Business wure schon verkauft!");
    return 1;
    }
    if(SpielerInfo[playerid][pPersonalausweis] == 0)
    {
    SendClientMessage(playerid, COLOR_RED, "Du benötigst einen Personalausweis um dieses Business kaufen zu können!");
    return 1;
    }
    if(SpielerInfo[playerid][pLevel] < BizzInfo[h][bLevelNeeded])
    {
    format(string, sizeof(string), "Du musst mind. Level %d sein um dieses Business kaufen zu können!", BizzInfo[h][bLevelNeeded]);
    SendClientMessage(playerid, COLOR_RED, string);
    return 1;
    }
    if(SpielerInfo[playerid][pBizz] != -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast bereits ein Business!");
    return 1;
    }
    if(GetPlayerEuros(playerid) <= BizzInfo[h][bBuyPrice])
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht genügend Geld!");
    return 1;
    }
    if(GetPlayerEuros(playerid) >= BizzInfo[h][bBuyPrice])
    {
    SpielerInfo[playerid][pBizz] = h;
    BizzInfo[h][bOwned] = 1;
    BizzInfo[h][bProds] = 0;
    strmid(BizzInfo[h][bOwner], GetRoleplayName(playerid), 0, strlen(GetRoleplayName(playerid)), MAX_PLAYER_NAME);
    GivePlayerEuro(playerid,-BizzInfo[h][bBuyPrice]);
    SendClientMessage(playerid, COLOR_WHITE, "{00FF15}Herzlichen Glückwunsch! {FFFFFF}zu deinem neuen Business!");
    SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}Tippe /bizzhelp um die neuen Businessbefehle einzusehen!");
    PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0);
    format(string, sizeof(string), "UPDATE `businesse` SET `bowner` = '%s' WHERE `bid` = '%i'", BizzInfo[h][bOwner], h);
    mysql_function_query(Handle, string, false, "SendQuery", "");
    UpdateBizz(h);
    if(Errungenschaften[playerid][eBizz] == 0)
    {
    Errungenschaften[playerid][eBizz] = 1;
    ShowErrungenschaft(playerid,"Reich und Fame!","Kaufe dein erstes ~n~Unternehmen!","ld_grav:bee2",125);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du hast nicht genügend Geld!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Business!");
    return 1;
    }
    return 1;
    }

  • format(string, sizeof(string), "UPDATE `businesse` SET `bowner` = '%s' WHERE `bid` = '%i'", BizzInfo[h][bOwner], h);
    zu:
    format(string, sizeof(string), "UPDATE `businesse` SET `bowner` = '%s' WHERE `bid` = '%i'", BizzInfo[h][bOwner], BizzInfo[h][bID]);


    Das gleiche beim Verkauf.

  • Leider geht es immer noch nicht. Aber was ich auch komisch finde ist. Es fängt in der Datenbank mit der ID 1 an aber in der sql datei unter Insert Into fängt es mit der ID 0 an. Wen ich /buybusiness mache und noch nicht das erreichte Level habe steht da ich brauche das Level 9 obwohl ich 7 brauche. Er lädt dann immer das nächste Business ihrgenwie. Er hat jetzt aber dem Business mit der ID 12 unter Owned eine 1 und unter dem Namen steht mein Name. Aber ich stante am Business mit der id 11 und habe /buybusiness gemacht.

  • Du hast da öfters den Index und die ID vertauscht.
    Auch beim Erstellen. Ändere das zu:
    stock CreateNewBizz(Float:x,Float:y,Float:z,name[],level,preis)
    {
    new query[400];
    mysql_format(Handle, query, "INSERT INTO `businesse` (bowned,bname,bowner,bowner2,bbx,bby,bbz,blevel,bpreis,btill,bproducts,bmaxproducts,bpriceprod,bkasse) VALUES ('0','%s', 'Frei', 'Keiner', '0.0', '0.0', '0.0', '%i', '%i', '0', '1500', '2000', '95', '20000')",
    name,level,preis);
    mysql_function_query(Handle, query, true, "OnBizzCreate","ifffiis",AktuelleBizz,x,y,z,level,preis,name);
    AktuelleBizz ++;
    return AktuelleBizz-1;
    }


    forward OnBizzCreate(id,Float:x,Float:y,Float:z,level,preis,name[]);
    public OnBizzCreate(id,Float:x,Float:y,Float:z,level,preis,name[])
    {
    BizzInfo[id][bID] = mysql_insert_id();
    BizzInfo[id][bOwned] = 0;
    format(BizzInfo[id][bName], 64, name);
    format(BizzInfo[id][bOwner], MAX_PLAYER_NAME, "Frei");
    format(BizzInfo[id][bOwner2], MAX_PLAYER_NAME, "Keiner");
    BizzInfo[id][bEntranceX] = x;
    BizzInfo[id][bEntranceY] = y;
    BizzInfo[id][bEntranceZ] = z;
    BizzInfo[id][bLevelNeeded] = preis;
    BizzInfo[id][bBuyPrice] = level;
    BizzInfo[id][bTill] = 0;
    BizzInfo[id][bProducts] = 1500;
    BizzInfo[id][bMaxProducts] = 2000;
    BizzInfo[id][bPriceProd] = 41;
    BizzInfo[id][bKasse] = 15000;
    UpdateBizz(id);
    CreateBizzOnMap(id);
    return 1;
    }


    Dann zum Problem: Woran erkennst du, dass du dich an der ID 11 befindest? Kannst du den Code posten, der dir anzeigt, dass du ID 11 gekauft hast?
    Mit welcher Zahl er anfängt ist eigentlich egal, da du den AUTO_INCREMENT an hast, da kann er auch mit 1234 anfangen.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Ich erkenne das weil ich das in der Datenbank nach gucken kann. Weil ich ja weiß wie das Business heißt und wen ich dann in der Datenbank in der zeile nach gucke steht da dann die ID. Und im Business Label steht auch die ID.


    format(labelText, sizeof(labelText), "{FFFFFF}- {FFFF00}%s (Hier steht immer die ID bei){FFFFFF}steht zum Verkauf! -{FFFFFF}\n{FFFFFF}Preis: {FFFF00}%i Euro\n{FFFFFF}Level: {FFFF00}%i\n{FFFF00}/buybusiness {FFFFFF}um es zu kaufen!", BizzInfo[h][bName],BizzInfo[h][bBuyPrice],BizzInfo[h][bLevelNeeded]);

  • Schreibe das hier so, da hab ich gerade gesehen, dass die Indezes auch alle falsch waren:
    forward OnBizzCreate(id,Float:x,Float:y,Float:z,level,preis,name[]);
    public OnBizzCreate(id,Float:x,Float:y,Float:z,level,preis,name[])
    {
    BizzInfo[id][bID] = mysql_insert_id();
    BizzInfo[id][bOwned] = 0;
    format(BizzInfo[id][bName], 64, name);
    format(BizzInfo[id][bOwner], MAX_PLAYER_NAME, "Frei");
    format(BizzInfo[id][bOwner2], MAX_PLAYER_NAME, "Keiner");
    BizzInfo[id][bEntranceX] = x;
    BizzInfo[id][bEntranceY] = y;
    BizzInfo[id][bEntranceZ] = z;
    BizzInfo[id][bLevelNeeded] = preis;
    BizzInfo[id][bBuyPrice] = level;
    BizzInfo[id][bTill] = 0;
    BizzInfo[id][bProducts] = 1500;
    BizzInfo[id][bMaxProducts] = 2000;
    BizzInfo[id][bPriceProd] = 41;
    BizzInfo[id][bKasse] = 15000;
    UpdateBizz(id);
    CreateBizzOnMap(id);
    return 1;
    }


    Dann poste bitte nochmal den aktuellen Befehl um das Haus zu kaufen.

  • Meinst du nicht Business?


    Okay hier ist der Haus kauf Befehl


    command(buyhouse, playerid, params[])
    {
    new string[128];
    if(IsPlayerConnected(playerid))
    {
    new h = ReturnHouseID(playerid);
    if(h == -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Haus!");
    return 1;
    }
    if(SpielerInfo[playerid][pPersonalausweis] == 0)
    {
    SendClientMessage(playerid, COLOR_RED, "Du benötigst einen Personalausweis um dieses Haus kaufen zu können!");
    return 1;
    }
    if(SpielerInfo[playerid][pLevel] < HausInfo[h][hLevel])
    {
    format(string, sizeof(string), "Du musst mind. Level %d sein um dieses Haus kaufen zu können!", HausInfo[h][hLevel]);
    SendClientMessage(playerid, COLOR_RED, string);
    return 1;
    }
    if(HausInfo[h][hOwned] != 0)
    {
    SendClientMessage(playerid,COLOR_RED,"Das Haus wurde schon verkauft!");
    return 1;
    }
    if(SpielerInfo[playerid][pHaus] != -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast bereits ein Haus!");
    return 1;
    }
    if(GetPlayerEuros(playerid) >= HausInfo[h][hPreis])
    {
    if(SpielerInfo[playerid][pMieter] > 0)
    {
    SpielerInfo[playerid][pMieter] = 0;
    new bouse = ReturnHouseID(playerid);
    if(bouse != -1)
    {
    if(HausInfo[bouse][hMieter] > 0)
    {
    HausInfo[bouse][hMieter] --;
    }
    }
    }
    SpielerInfo[playerid][pHaus] = h;
    HausInfo[h][hOwned] = 1;
    format(HausInfo[h][hBesitzer], MAX_PLAYER_NAME, GetRoleplayName(playerid));
    UpdateHouse(h);
    GivePlayerEuro(playerid,-HausInfo[h][hPreis]);
    SendClientMessage(playerid, COLOR_WHITE, "{00FF15}Herzlichen Glückwunsch! {FFFFFF}zu deinem neuen Haus!");
    SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}Tippe /haushelp um die neuen Hausbefehle einzusehen!");
    PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0);
    if(Errungenschaften[playerid][eHaus] == 0)
    {
    Errungenschaften[playerid][eHaus] = 1;
    ShowErrungenschaft(playerid,"Neues Standbein!","Kaufe dein erstes ~n~Haus!","ld_grav:bee2",125);
    }
    format(string, sizeof(string), "UPDATE `houses` SET `hbesitzer` = '%s' WHERE `hID` = '%i'", SpielerInfo[playerid][pRoleplayName], h);
    mysql_function_query(Handle, string, false, "SendQuery", "");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du hast nicht genügend Geld!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Haus!");
    return 1;
    }
    }


    Und der Business kauf befehl:

    command(buybusiness, playerid, params[])
    {
    new string[128];
    new h = ReturnBizzID(playerid);
    if(h == -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Business!");
    return 1;
    }
    if(h != -1)
    {
    if(BizzInfo[h][bOwned] == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"Das Business wure schon verkauft!");
    return 1;
    }
    if(SpielerInfo[playerid][pPersonalausweis] == 0)
    {
    SendClientMessage(playerid, COLOR_RED, "Du benötigst einen Personalausweis um dieses Business kaufen zu können!");
    return 1;
    }
    if(SpielerInfo[playerid][pLevel] < BizzInfo[h][bLevelNeeded])
    {
    format(string, sizeof(string), "Du musst mind. Level %d sein um dieses Business kaufen zu können!", BizzInfo[h][bLevelNeeded]);
    SendClientMessage(playerid, COLOR_RED, string);
    return 1;
    }
    if(SpielerInfo[playerid][pBizz] != -1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast bereits ein Business!");
    return 1;
    }
    if(GetPlayerEuros(playerid) <= BizzInfo[h][bBuyPrice])
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht genügend Geld!");
    return 1;
    }
    if(GetPlayerEuros(playerid) >= BizzInfo[h][bBuyPrice])
    {
    SpielerInfo[playerid][pBizz] = h;
    BizzInfo[h][bOwned] = 1;
    BizzInfo[h][bProds] = 0;
    strmid(BizzInfo[h][bOwner], GetRoleplayName(playerid), 0, strlen(GetRoleplayName(playerid)), MAX_PLAYER_NAME);
    GivePlayerEuro(playerid,-BizzInfo[h][bBuyPrice]);
    SendClientMessage(playerid, COLOR_WHITE, "{00FF15}Herzlichen Glückwunsch! {FFFFFF}zu deinem neuen Business!");
    SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}Tippe /bizzhelp um die neuen Businessbefehle einzusehen!");
    PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0);
    //format(string, sizeof(string), "UPDATE `businesse` SET `bowner` = '%s' WHERE `bid` = '%i'", BizzInfo[h][bOwner], h);
    format(string, sizeof(string), "UPDATE `businesse` SET `bowner` = '%s' WHERE `bid` = '%i'", BizzInfo[h][bOwner], BizzInfo[h][bID]);
    mysql_function_query(Handle, string, false, "SendQuery", "");
    UpdateBizz(h);
    if(Errungenschaften[playerid][eBizz] == 0)
    {
    Errungenschaften[playerid][eBizz] = 1;
    ShowErrungenschaft(playerid,"Reich und Fame!","Kaufe dein erstes ~n~Unternehmen!","ld_grav:bee2",125);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du hast nicht genügend Geld!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe von einem Business!");
    return 1;
    }
    return 1;
    }

  • Ja, Business war gemeint.


    Ändere mal dort:
    format(string, sizeof(string), "UPDATE `businesse` SET `bowner` = '%s' WHERE `bid` = '%i'", BizzInfo[h][bOwner], BizzInfo[h][bID]);
    zu:
    format(string, sizeof(string), "UPDATE `businesse` SET `bowner` = '%s' WHERE `bid` = '%i'", BizzInfo[h][bOwner], BizzInfo[h][bID]);
    printf("query: %s", string);
    printf("ID %d (%s) kauft Business %s mit der DB_ID %d", playerid, BizzInfo[h][bOwner], BizzInfo[h][bName], BizzInfo[h][bID]);


    Was steht dann im Server Log, wenn du das Business kaufst?


    Schicke dazu bitte einen Screenshot der Daten aus der Datenbank vor und nach dem Kauf.

  • So. Ich hatte wieder den gleichen Fehler. Und zwar ich stante bei der ID 11 also der Tankstelle-4 und er kauft das Business mit der ID 12. Aso und wen ich bei dem Business mit der ID 11 stehe kann ich aber auch ganz normal die befehle ausführen wie /bizzmenu und so.


    query: UPDATE `businesse` SET `bowner` = 'Justin_Smith' WHERE `bid` = '12'
    [18:59:35] ID 49 (Justin_Smith) kauft Business [Hawkins GmBh] mit der DB_ID 12


    Vor dem kauf:



    Nach dem kauf:


  • stock ReturnBizzID(playerid)
    {
    for(new i=0;i<MAX_BIZZ;i++)
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,1.5,BizzInfo[i][bEntranceX],BizzInfo[i][bEntranceY],BizzInfo[i][bEntranceZ]))
    return BizzInfo[i][bID];
    }
    }
    return -1;
    }



    stock ReturnBizzID2(playerid)
    {
    for(new i=0;i<MAX_BIZZ;i++)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,7.5,BizzInfo[i][bEntranceX],BizzInfo[i][bEntranceY],BizzInfo[i][bEntranceZ]))
    return BizzInfo[i][bID];
    }
    }
    return -1;
    }