Hey, ich habe da ein Problem mit meinen Businesssystem. Wen ich eins erstelle wird es im Chat angezeigt aber es wird kein Pickup und kein Text erstellt. Ich kann es auch nicht bearbeiten oder so mit den befehl /editbizz er zeigt immer an es ist keins in der nähe. Es wird zwar in der Datenbank gespeichert aber ohne koordinaten. Ich finde auch keinen Fehler, ich hoffe mir kann hier jemand helfen.
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[240];
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()
{
new rows, fields, content[64];
cache_get_data(rows, fields);
if(rows)
{
while(AktuelleBizz<rows)
{
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, 4, content);
BizzInfo[AktuelleBizz][bEntranceX] = floatstr(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 8, content);
BizzInfo[AktuelleBizz][bBuyPrice] = strval(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 9, content);
BizzInfo[AktuelleBizz][bTill] = strval(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 10, content);
BizzInfo[AktuelleBizz][bProducts] = strval(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 11, content);
BizzInfo[AktuelleBizz][bMaxProducts] = strval(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 12, content);
BizzInfo[AktuelleBizz][bPriceProd] = strval(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 13, content);
BizzInfo[AktuelleBizz][bKasse] = strval(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 5, content);
BizzInfo[AktuelleBizz][bEntranceY] = floatstr(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 6, content);
BizzInfo[AktuelleBizz][bEntranceZ] = floatstr(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 7, content);
BizzInfo[AktuelleBizz][bLevelNeeded] = strval(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 14, content);
BizzInfo[AktuelleBizz][bProds] = strval(content);
strdel(content,0,sizeof(content));
cache_get_row(AktuelleBizz, 15, content);
format(BizzInfo[AktuelleBizz][bOwner2], MAX_PLAYER_NAME, "%s", content);
strdel(content,0,sizeof(content));
CreateBizzOnMap(BizzInfo[AktuelleBizz][bID]);
AktuelleBizz ++;
}
}
printf("<-| [BIZZSYSTEM] Es wurden %i Businesse geladen.", rows);
UpdateTS();
return 1;
}
stock CreateBizzOnMap(h)
{
new labelText[340];
DestroyDynamic3DTextLabel(BizzInfo[h][blabel]);
DestroyDynamicPickup(BizzInfo[h][bPickup]);
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);
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 ;
Und das steht in der Server log.
[15:22:18] [debug] Run time error 6: "Invalid instruction"
[15:22:18] [debug] Unknown opcode 0xc00 at address 0x00000057
[15:22:18] [debug] AMX backtrace:
[15:22:18] [debug] #0 00000057 in public cmd_createbizz () from Selfmade.amx
[15:22:18] [debug] #1 native CallLocalFunction () from samp-server.exe
[15:22:18] [debug] #2 00002878 in public OnPlayerCommandText (21, 11497984) from Selfmade.amx