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 ;