Ich bin jetzt durcheinander.
Soll jetzt alles was MAX_BIZ] hatte wieder rückgängig machen oder ist sizeof(bInfo) doch richtig.
Ich habe bewusst die Interior XYZ Pos nicht in der Datenbank gespeichert damit ich einfacher alles ändern kann weil es am Anfang bequemer ist.
Was soll ich jetzt genau tun um es dynamisch zu machen?
Was soll weg fallen, welche Variable soll dazu kommen usw.
enum bizinfo{
db_bid,
biztype,
biztype2,
bwaren,
bbesitzer[24],
bbizkasse,
beintritt,
Float:bX,
Float:bY,
Float:bZ,
bInterior,
bopentime,
bmaxwaren,
bizbefehl
};
//weiter unten
new bInfo[MAX_BIZ][bizinfo];
Alles anzeigen
enum bizinteriors{
Name[35],
Interior,
Welt,
Biztype,
Float:IX,Float:IY,Float:IZ// Exit Position
}
static const BizInts[][bizinteriors]={
{"Dummy",0,0,0,0.0,0.0,0.0},
{"24/7",17,1,1,/*InteriorPos*/-25.884498,-185.868988,1003.546873}
};
Alles anzeigen
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
// Biz
if(GetPVarInt(playerid,"InBiz")!=-1)
{
new b=GetPVarInt(playerid,"InBiz");
new bi=bInfo[b][bInterior];
if(IsPlayerInRangeOfPoint(playerid,3.0,BizInts[bi][IX],BizInts[bi][IY],BizInts[bi][IZ]))
{
SetPlayerPos(playerid,bInfo[b][bX],bInfo[b][bY],bInfo[b][bZ]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetPVarInt(playerid,"InBiz",-1);
return 1;
}
}
else
{
for(new b;b<sizeof(bInfo);b++)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,bInfo[b][bX],bInfo[b][bY],bInfo[b][bZ]))
{
if(bInfo[b][biztype]==3)return SendClientMessage(playerid,-1,"Diesen BizTyp kannst du nicht betreten!");
new bi=bInfo[b][bInterior];
if(bi==0) return SendClientMessage(playerid,-1,"Das Biz hat kein Interior");
SetPlayerPos(playerid,BizInts[bi][IX],BizInts[bi][IY],BizInts[bi][IZ]);
SetPlayerInterior(playerid,BizInts[bi][Interior]);
SetPlayerVirtualWorld(playerid,BizInts[bi][Welt]);
SetPVarInt(playerid,"InBiz",b);
new string[250];
format(string,sizeof(string),"Binfo Interior: %d | BizInfo Y: %f | BizInfo Interior: %d",bi,BizInts[bi][IY],BizInts[bi][Interior]);
printf(string);
return 1;
}
}
}
}
return 1;
}
Alles anzeigen
stock IsAtBiz(playerid)
{
for(new b;b<sizeof(bInfo);b++)
{
if(!IsPlayerInRangeOfPoint(playerid,5.0,bInfo[b][bX],bInfo[b][bY],bInfo[b][bZ])) continue;
return b;
}
return 0;
}