Schon selber behoben ich habe einfach das mit der Virtual World nach dem übetragen auslesen und erst alles eintragen lassen.
Nun habe ich noch eine frage: Wieso bekomme ich hier eine tag mismatch error:
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10,0,0);
Haus System Fehler
- CaZe
- Geschlossen
- Erledigt
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
-
-
Ok!
Mache die 10 zu 10.0.
Und h_label muss im enum den Text3D Tag haben. -
Beitrag von CaZe ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Jeffry erstmal danke für die großartige und gute Hilfe.
Jetzt habe ich allerdings noch soweit ich es bemerke 1 Problem:
Wenn ich das Haus lösche wird das PickUp nicht gelöscht ebenso beim Serverrestart auch nicht.Löschebefehl
ocmd:hdelete(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
if(!IsPlayerAdminRank(playerid,4))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
for(new i=0;i<MAX_HOUSES;i++)
{
if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ]))
{
HouseInfo[i][h_enterX] = 0;
HouseInfo[i][h_enterY] = 0;
HouseInfo[i][h_enterZ] = 0;
HouseInfo[i][h_exitX] = 0;
HouseInfo[i][h_exitY] = 0;
HouseInfo[i][h_exitZ] = 0;
HouseInfo[i][h_int] = 0;
format(HouseInfo[i][h_owner], 24, "");
HouseInfo[i][h_buyprice] = 0;
HouseInfo[i][h_rentprice] = 0;
HouseInfo[i][h_bought] = 0;
HouseInfo[i][h_rentable] = 0;
HouseInfo[i][h_locked] = 0;
HouseInfo[i][h_money] = 0;
HouseInfo[i][h_type] = 0;
HouseInfo[i][h_vw] =0 ;
DestroyPickup(HouseInfo[i][h_pick]);
Delete3DTextLabel(HouseInfo[i][h_label]);
new query[512];
format(query,sizeof(query),"DELETE FROM houses WHERE id='%i'",i);
mysql_pquery(Handle,query);
return SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have delete the House.");
}
}
return 1;
}
public OnGameModeExit()
{
for(new h=0;h<MAX_HOUSES;h++)
{
DestroyPickup(HouseInfo[h][h_pick]);
Delete3DTextLabel(HouseInfo[h][h_label]);
}
return 1;
}
Wie Das PickUp deklariert wird:
ocmd:buyhouse(playerid,params[])
{
new query[256];
for(new h=0;h<MAX_HOUSES;h++)
{
if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ]))
{
if(HouseInfo[h][h_buyprice] <= GetPlayerMoney(playerid))
{
if(HouseInfo[h][h_bought] == 0)
{
if(SpielerInfo[playerid][pHouseOwned] == 0)
{
SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}Congratulations. You bought the House.");
format(query,sizeof(query),"UPDATE houses SET Owner='%s',Bought='1' WHERE id='%i'",getPlayerName(playerid),h);
mysql_pquery(Handle,query);
format(HouseInfo[h][h_owner],24,getPlayerName(playerid));
GivePlayerMoney(playerid,-HouseInfo[h][h_buyprice]/2);
DestroyPickup(HouseInfo[h][h_pick]);
Delete3DTextLabel(HouseInfo[h][h_label]);
SpielerInfo[playerid][pHouseOwned] = 1;
if(HouseInfo[h][h_type] == 1)
{
new str[148];
format(str,sizeof(str),"This Apartment is already bought.\nType /rent to rent a room in this Apartment.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
else if(HouseInfo[h][h_type] == 2)
{
new str[128];
format(str,sizeof(str),"This House is already bought.\nType /rent to rent a room in this House.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
else if(HouseInfo[h][h_type] == 3)
{
new str[128];
format(str,sizeof(str),"This Villa is already bought.\nType /rent to rent a room in this Villa.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
}
}
}
}
}
return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not close to any House,the House is bought or you don't have enough money.");
}Wie Das PickUp deklariert wird: forward LoadHouses_Data();
public LoadHouses_Data()
{
new rows;
rows = cache_num_rows();
for(new i=0;i<rows;i++)
{
HouseInfo[i][h_ID] = cache_get_field_content_int(i, "id");
cache_get_field_content(i,"Owner",HouseInfo[i][h_owner],Handle,24);
HouseInfo[i][h_enterX] = cache_get_field_content_float(i, "EnterPosX");
HouseInfo[i][h_enterY] = cache_get_field_content_float(i, "EnterPosY");
HouseInfo[i][h_enterZ] = cache_get_field_content_float(i, "EnterPosZ");
HouseInfo[i][h_exitX] = cache_get_field_content_float(i, "ExitPosX");
HouseInfo[i][h_exitY] = cache_get_field_content_float(i, "ExitPosY");
HouseInfo[i][h_exitZ] = cache_get_field_content_float(i, "ExitPosZ");
HouseInfo[i][h_int] = cache_get_field_content_int(i, "Interior");
HouseInfo[i][h_vw] = cache_get_field_content_int(i, "VirtualWorld");
HouseInfo[i][h_buyprice] = cache_get_field_content_int(i, "BuyPrice");
HouseInfo[i][h_rentprice] = cache_get_field_content_int(i, "RentPrice");
HouseInfo[i][h_bought] = cache_get_field_content_int(i, "Bought");
HouseInfo[i][h_rentable] = cache_get_field_content_int(i, "RentAble");
HouseInfo[i][h_locked] = cache_get_field_content_int(i, "IsLocked");
HouseInfo[i][h_money] = cache_get_field_content_int(i, "Money");
HouseInfo[i][h_type] = cache_get_field_content_int(i, "Type");
for(new h=0;h<MAX_HOUSES;h++)
{
if(HouseInfo[h][h_type] == 1)
{
if(HouseInfo[h][h_bought] == 0)
{
new str[128];
format(str,sizeof(str),"This Apartment has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[h][h_buyprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
CreatePickup(1274,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
else
{
new str[148];
format(str,sizeof(str),"This Apartment is already bought.\nType /rent to rent a room in this Apartment.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
}
else if(HouseInfo[h][h_type] == 2)
{
if(HouseInfo[h][h_bought] == 0)
{
new str[128];
format(str,sizeof(str),"This House has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[h][h_buyprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1274,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
else
{
new str[148];
format(str,sizeof(str),"This House is already bought.\nType /rent to rent a room in this House.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
}
else if(HouseInfo[h][h_type] == 3)
{
if(HouseInfo[h][h_bought] == 0)
{
new str[128];
format(str,sizeof(str),"This Villa has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[h][h_buyprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1274,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
else
{
new str[148];
format(str,sizeof(str),"This Villa is already bought.\nType /rent to rent a room in this Villa.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
}
}
}
return 1;
}
Btw:
Beim /buyhouse Befehl wird alles gelöscht wie es soll. -
In Zeile 34 von LoadHouses_Data() hast du vor CreatePickup die Variable vergessen.
-
Jetzt wird nur das Label & Pickup entfernt wenn es ein Apartment ist.
Erstell Befehl
ocmd:hcreate(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
if(!IsPlayerAdminRank(playerid,4))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
new inter,price,type;
if(sscanf(params,"iii",inter,type,price))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}Use /hcreate [Interior ID] [Type] [BuyPrice]"),
SendClientMessage(playerid,Grau,"[Types]: 1: Apartment, 2: House, 3: Villa");
if(type < 1 || type > 3)return SendClientMessage(playerid,Rot,"Error: Something's wrong with the Type");
for(new i=0;i<MAX_HOUSES;i++)
{
if(strlen(HouseInfo[i][h_owner]))continue;
{
new query[512];
new Float:pos[3];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
HouseInfo[i][h_enterX] = pos[0];
HouseInfo[i][h_enterY] = pos[1];
HouseInfo[i][h_enterZ] = pos[2];
new count, tmp;
for(new j=0; j<sizeof(HouseInfo); j++) if(HouseInfo[j][h_int] == inter && HouseInfo[j][h_type] == type) count++;
printf("count: %d", count);
for(new j=0; j<sizeof(InteriorInfo); j++)
{
printf("%d == %d | %d == %d", InteriorInfo[j][int_ID], inter, InteriorInfo[j][int_type], type);
if(InteriorInfo[j][int_ID] == inter && InteriorInfo[j][int_type] == type)
{
printf("%d == %d", tmp, count);
if(tmp == count)
{
printf("Nutze InteriorInfo %d", j);
HouseInfo[i][h_exitX] = InteriorInfo[j][int_exitX];
HouseInfo[i][h_exitY] = InteriorInfo[j][int_exitY];
HouseInfo[i][h_exitZ] = InteriorInfo[j][int_exitZ];
}
tmp++;
}
}
HouseInfo[i][h_int] = inter;
format(HouseInfo[i][h_owner], 24, "");
HouseInfo[i][h_buyprice] = price;
HouseInfo[i][h_rentprice] = 100;
HouseInfo[i][h_bought] = 0;
HouseInfo[i][h_rentable] = 0;
HouseInfo[i][h_locked] = 1;
HouseInfo[i][h_money] = 0;
HouseInfo[i][h_type] = type;
format(query,sizeof(query),"INSERT INTO Houses (id,Owner,EnterPosX,EnterPosY,EnterPosZ,ExitPosX,ExitPosY,ExitPosZ,Interior,BuyPrice,RentPrice,Bought,RentAble,IsLocked,Money,Type) VALUES ('%i','%s','%f','%f','%f','%f','%f','%f','%i','%i','%i','%i','%i','%i','%i','%i')",
i,HouseInfo[i][h_owner],HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ],HouseInfo[i][h_exitX],HouseInfo[i][h_exitY],HouseInfo[i][h_exitZ],HouseInfo[i][h_int],HouseInfo[i][h_buyprice],HouseInfo[i][h_rentprice],HouseInfo[i][h_bought],HouseInfo[i][h_rentable],HouseInfo[i][h_locked],HouseInfo[i][h_money],HouseInfo[i][h_type]);
mysql_pquery(Handle,query);
HouseInfo[i][h_vw] = cache_get_field_content_int(i,"VirtualWorld");
if(HouseInfo[i][h_type] == 1)
{
new str[128];
format(str,sizeof(str),"This Apartment has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[i][h_buyprice]);
HouseInfo[i][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ],10,0,0);
HouseInfo[i][h_pick] = CreatePickup(1274,0,HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ],0);
}
else if(HouseInfo[i][h_type] == 2)
{
new str[128];
format(str,sizeof(str),"This House has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[i][h_buyprice]);
HouseInfo[i][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ],10,0,0);
HouseInfo[i][h_pick] = CreatePickup(1274,0,HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ],0);
}
else if(HouseInfo[i][h_type] == 3)
{
new str[128];
format(str,sizeof(str),"This Villa has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[i][h_buyprice]);
HouseInfo[i][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ],10,0,0);
HouseInfo[i][h_pick] = CreatePickup(1274,0,HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ],0);
}
return 1;
}
}
return 1;
}
Häuser Laden
stock LoadHouses()
{
mysql_pquery(Handle, "SELECT * FROM houses ORDER BY ID ASC","LoadHouses_Data");
return 1;
}Häuser Laden forward LoadHouses_Data();
public LoadHouses_Data()
{
new rows;
rows = cache_num_rows();
for(new i=0;i<rows;i++)
{
HouseInfo[i][h_ID] = cache_get_field_content_int(i, "id");
cache_get_field_content(i,"Owner",HouseInfo[i][h_owner],Handle,24);
HouseInfo[i][h_enterX] = cache_get_field_content_float(i, "EnterPosX");
HouseInfo[i][h_enterY] = cache_get_field_content_float(i, "EnterPosY");
HouseInfo[i][h_enterZ] = cache_get_field_content_float(i, "EnterPosZ");
HouseInfo[i][h_exitX] = cache_get_field_content_float(i, "ExitPosX");
HouseInfo[i][h_exitY] = cache_get_field_content_float(i, "ExitPosY");
HouseInfo[i][h_exitZ] = cache_get_field_content_float(i, "ExitPosZ");
HouseInfo[i][h_int] = cache_get_field_content_int(i, "Interior");
HouseInfo[i][h_vw] = cache_get_field_content_int(i, "VirtualWorld");
HouseInfo[i][h_buyprice] = cache_get_field_content_int(i, "BuyPrice");
HouseInfo[i][h_rentprice] = cache_get_field_content_int(i, "RentPrice");
HouseInfo[i][h_bought] = cache_get_field_content_int(i, "Bought");
HouseInfo[i][h_rentable] = cache_get_field_content_int(i, "RentAble");
HouseInfo[i][h_locked] = cache_get_field_content_int(i, "IsLocked");
HouseInfo[i][h_money] = cache_get_field_content_int(i, "Money");
HouseInfo[i][h_type] = cache_get_field_content_int(i, "Type");
for(new h=0;h<MAX_HOUSES;h++)
{
if(HouseInfo[h][h_type] == 1)
{
if(HouseInfo[h][h_bought] == 0)
{
new str[128];
format(str,sizeof(str),"This Apartment has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[h][h_buyprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1274,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
else
{
new str[148];
format(str,sizeof(str),"This Apartment is already bought.\nType /rent to rent a room in this Apartment.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
}
else if(HouseInfo[h][h_type] == 2)
{
if(HouseInfo[h][h_bought] == 0)
{
new str[128];
format(str,sizeof(str),"This House has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[h][h_buyprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1274,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
else
{
new str[148];
format(str,sizeof(str),"This House is already bought.\nType /rent to rent a room in this House.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
}
else if(HouseInfo[h][h_type] == 3)
{
if(HouseInfo[h][h_bought] == 0)
{
new str[128];
format(str,sizeof(str),"This Villa has NO Owner.Type /buyhouse to buy it.\nPrice: %i$",HouseInfo[h][h_buyprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1274,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
else
{
new str[148];
format(str,sizeof(str),"This Villa is already bought.\nType /rent to rent a room in this Villa.\nOwner: %s\nRent Price: %i$",HouseInfo[h][h_owner],HouseInfo[h][h_rentprice]);
HouseInfo[h][h_label] = Create3DTextLabel(str,Weiß,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],10.0,0,0);
HouseInfo[h][h_pick] = CreatePickup(1273,0,HouseInfo[h][h_enterX],HouseInfo[h][h_enterY],HouseInfo[h][h_enterZ],0);
}
}
}
}
return 1;
}
Häuser löschen:
ocmd:hdelete(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
if(!IsPlayerAdminRank(playerid,4))return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not allowed to use this Command.");
for(new i=0;i<MAX_HOUSES;i++)
{
if(IsPlayerInRangeOfPoint(playerid,2,HouseInfo[i][h_enterX],HouseInfo[i][h_enterY],HouseInfo[i][h_enterZ]))
{
/*SpielerInfo[GetPlayerID(HouseInfo[i][h_owner])[pOwnHouse] = 0;
new str[128];
format(str,sizeof(str),"[SInfo] {FFFFFF}%s has deleted your House.",getPlayerName(playerid));
SendClientMessage(GetPlayerID(HouseInfo[i][h_owner]),Rot,str);*/
HouseInfo[i][h_enterX] = 0;
HouseInfo[i][h_enterY] = 0;
HouseInfo[i][h_enterZ] = 0;
HouseInfo[i][h_exitX] = 0;
HouseInfo[i][h_exitY] = 0;
HouseInfo[i][h_exitZ] = 0;
HouseInfo[i][h_int] = 0;
format(HouseInfo[i][h_owner], 24, "");
HouseInfo[i][h_buyprice] = 0;
HouseInfo[i][h_rentprice] = 0;
HouseInfo[i][h_bought] = 0;
HouseInfo[i][h_rentable] = 0;
HouseInfo[i][h_locked] = 0;
HouseInfo[i][h_money] = 0;
HouseInfo[i][h_type] = 0;
HouseInfo[i][h_vw] =0 ;
DestroyPickup(HouseInfo[i][h_pick]);
Delete3DTextLabel(HouseInfo[i][h_label]);
new query[512];
format(query,sizeof(query),"DELETE FROM houses WHERE id='%i'",i);
mysql_pquery(Handle,query);
return SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have deleted the House.");
}
}
return 1;
}
Label &amp;amp; PickUp beim Restart löschen
public OnGameModeExit()
{
SaveHouses();
for(new h=0;h<MAX_HOUSES;h++)
{
DestroyPickup(HouseInfo[h][h_pick]);
Delete3DTextLabel(HouseInfo[h][h_label]);
}
return 1;
}
-
Ich sehe da kein Problem.
Kann es sein, dass du das Pickup/Label mehrmals an gleicher Stelle erstellt hast und es somit nicht siehst, dass das Pickup/Label entfernt wurde?
-
Okay Jeffry: Ich habe das Problem gefunden weiß aber natürlich nicht wie ich es beheben soll:
Beim erstellen des Hauses wird die ID nicht hochgezählt, sondern bleibt immer 0 dato, lösche ich 2 verschiedene Häuser per ID und weil die ID jeweils gleich ist werden zwar beide Einträge aus der DB gelöscht aber es bleibt jedoch 1 PickUp & Label rest da da, diese ja nicht mehr zu einem Haus gehört. -
Ok.
Im Befehl:
format(HouseInfo[i][h_owner], 24, "");
zu:
format(HouseInfo[i][h_owner], 24, "-");
Muss halt was drin stehen, da du danach ja abfragst, ob das Haus existiert. -
Jetzt kommt wieder der Fehler wenn ich ein 2tes Haus eintragen möchte er die ExitPositions nicht mehr aus dem Enum lädt und beim 2ten Mal löschen nur das Label löscht.
//EDIT::
Das mit den Exit Positionen passiert nur wenn 2x die gleiche Interior ID sowie der gleiche Type erstellt wird. -
-
Hast du die Debug Nachrichten noch drin? Wenn ja, poste die bitte. Wenn nicht, mach sie wieder rein und poste sie dann.
Inwiefern das mit dem Löschen aber zusammenhängt kann ich mir nicht erklären. -
Hier die Debug Nachrichten(Original)
Ich habe lediglich 2x hintereinander exakt das gleiche Haus erstellt.Code
Alles anzeigen[15:13:22] count: 0 [15:13:22] 1 == 12 | 1 == 3 [15:13:22] 2 == 12 | 1 == 3 [15:13:22] 8 == 12 | 2 == 3 [15:13:22] 3 == 12 | 2 == 3 [15:13:22] 12 == 12 | 3 == 3 [15:13:22] 0 == 0 [15:13:22] Nutze InteriorInfo 4 [15:13:22] 5 == 12 | 3 == 3 [15:13:26] count: 1 [15:13:26] 1 == 12 | 1 == 3 [15:13:26] 2 == 12 | 1 == 3 [15:13:26] 8 == 12 | 2 == 3 [15:13:26] 3 == 12 | 2 == 3 [15:13:26] 12 == 12 | 3 == 3 [15:13:26] 0 == 1 [15:13:26] 5 == 12 | 3 == 3
//EDIT::
Btw. die PickUps die "anscheinend" noch da sind werden trotzdem gelöscht aber noch für die jenigen angezeigt, in deren Reichweite das PickUp gestreamed wurde. Also da ist das eigentlich egal. -
Problem 1:
Das geht nicht, wenn du in deinem Daten-Array keine zweite Datenreihe für dieses Interior mit diesem Typ hast.Zwecks den Pickups: Gut, das kann ein Problem vom Streamer sein, das weiß ich nicht. Wenn es aber eigentlich richtig gelöscht wird ist es ja in Ordnung.
-
Wie meinst du das? Blicke da gerade nicht richtig durch.
-
new InteriorInfo[][interEnum] =
{
//Apartments
{12,444.646911,508.239044,1001.419494,1},
{1,244.411987,305.032989,999.148437,1},
{2,271.884979,306.631988,999.148437,1},
{2,1523.509887,-47.821197,1002.130981,1},
{},
//Houses
{8,2807.619873,-1171.899902,1025.570312,2},
{3,2496.049804,-1695.238159,1014.742187,2},
{5,318.564971,1118.209960,1083.882812,2},
{5,2350.339843,-1181.649902,1027.976562,2},
{1,2527.654052,-1679.388305,1015.498596,2},
//Villas
{12,2324.419921,-1145.568359,1050.710083,3},
{5,1267.663208,-781.323242,1091.906250,3}
};Du hast 12 und 3 eingegeben, es gibt aber nur eine Zeile (die vorletzte) die 12 und 3 hat, eine zweite gibt es nicht => Fehler.
Am besten du lässt dir beim Erstellen, wenn keine Zeile gefunden wird, einen Fehler ausgeben. -
Hm, wenn ich das jetzt richtig verstehe darf ich keine Haus mit dem exakt gleichen Type sowie Interior erstellen oder wie sieht das aus?
-
Doch, aber nur wenn du es in dem Array mit zwei unterschiedlichen Koordinaten eingetragen hast, bzw. mit zwei Zeilen.
Wo wäre sonst der Sinn? Dann hättest du zwei mal das exakt gleiche Haus an der gleichen Stelle. -
In dem Array sind ja nur die Positionen des Interiors angegeben, also wo man hingeportert wird wenn man das Haus betritt.
Die Eingangs-Positionen sind ja da wo das PickUp etc. erstellt wird und dies wird ja per GetPlayerPos ermittelt. -
Aber wo ist dann der Sinn, dass manche Kombinationen doppelt existieren?
{2,271.884979,306.631988,999.148437,1},
{2,1523.509887,-47.821197,1002.130981,1},
Zwei mal 2|1. -
//EDIT::
enum interEnum
{
int_ID,
Float:int_exitX,
Float:int_exitY,
Float:int_exitZ,
Float:int_exitA,
int_type
};new InteriorInfo[][interEnum] =
{
//Apartments
{1,244.411987,305.032989,999.148437,265.2689,1},
/*Little edit*/{2,267.1509,304.9328,999.1484,265.6090,1},
//Houses
{8,2807.7825,-1174.4812,1025.5703,3.5707,2},
{3,2495.9944,-1692.4015,1014.7422,182.3604,2},
//Muss gemapped werden{5,2352.3496,-1180.6302,1027.9766,92.6137,2},
//Vielleicht Mappen{1,2524.4817,-1679.3834,1015.4986,267.9829,2},
//Villas
{12,2324.4504,-1149.1239,1050.7101,5.4272,3},
{5,1261.4669,-785.3972,1091.9063,268.5041,3}
};die Zahlen am Ende sind der Type, also ob es ein Apartment,Haus oder eine Villa ist.
//EDIT2::
Btw. exitA ist die Rotation die ich selber gesetzt habe -