Hallo Community!
Habe ein kleines Problem, der /enter Befehl klappt nicht mehr so ganz wie er sollte.
Sobald der Spieler an ein Marker ist der in bdInfo fest gelegt ist soll er in ein Business Interior gelangen, dies klappt aber nicht ganz.
Sobald 'IsPlayerInRangeOfPoint' kommt beendet er das ganze.
#define MAX_SHOP 6
new bdInfo[MAX_SHOP][buildingsEnum] = {
{"Bürger Shot Nord",1559,1199.2811,-918.6648,43.1191}, // BSE1
{"Bürger Shot West",1559,810.9824,-1616.2720,13.5469}, // BSE2
{"Bürger Shot Nord",1559,1872.7986,2071.6619,11.0625}, // BSE3
{"Bürger Shot Nord-West",1559,2472.3940,2034.2115,11.0625}, // BSE4
{"Bürger Shot West",1559,2169.9138,2795.8726,10.8203} // BSE5
};
ocmd:enter(playerid,params[])
{
if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
new string[128];
for(new i=0; i<sizeof(bsInfo); i++)
{
new tmp_i = MAX_SHOP;
print("DEBUG: Aufgerufen");
if(!bsInfo[i][db_id])continue;
print("bsInfo[i][db_id]");
if(bsInfo[i][ib_x]==0.0)continue;
print("bsInfo[i][ib_x] >0.0");
if(!IsPlayerInRangeOfPoint(playerid, 2, bdInfo[tmp_i][bd_x], bdInfo[tmp_i][bd_y],bdInfo[tmp_i][bd_z]))continue;
printf("IsPlayerInRangeOfPoint(playerid, 2, bdInfo[%i][bd_x], bdInfo[%i][bd_y],bdInfo[%i][bd_z]",tmp_i,tmp_i,tmp_i);
format(string,128,"{C8C8C8}Sie können das Geschäft nicht betreten. {E90000}(Lager leer)");
if(bsInfo[i][b_prods] <1)return SCM(playerid,COLOR_GRAU,string);
SetPlayerPos(playerid,bsInfo[i][ib_x],bsInfo[i][ib_y],bsInfo[i][ib_z]);
print("SetPlayerPos");
SetPlayerInterior(playerid,bsInfo[i][b_interior]);
print("SetPlayerInterior");
SetPlayerVirtualWorld(playerid,i);
SetPVarInt(playerid,"tmp_ID",tmp_i);
printf("x='%f' | y='%f' | z='%f'",bdInfo[tmp_i][bd_x], bdInfo[tmp_i][bd_y],bdInfo[tmp_i][bd_z]);
return 1;
}
for(new i=0; i<sizeof(hInfo); i++)
{
if(!hInfo[i][db_id])continue;
if(hInfo[i][i_x] == 0.0)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
if(hInfo[i][h_lock] == 1)
{
if(!strcmp(hInfo[i][h_besitzer],SpielerName(playerid),true))
{
SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
SetPlayerInterior(playerid,hInfo[i][h_interior]);
SetPlayerVirtualWorld(playerid,i);
return 1;
}
return GameTextForPlayer(playerid,"~r~Abgeschlossen",1000,1);
}
else if(hInfo[i][h_lock] == 0)
{
SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
SetPlayerInterior(playerid,hInfo[i][h_interior]);
SetPlayerVirtualWorld(playerid,i);
}
return 1;
}
return 1;
}
ocmd:exit(playerid,params[])
{
if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
for(new i=0; i<sizeof(bsInfo); i++)
{
new tmp_i = GetPVarInt(playerid,"tmp_ID");
if(GetPlayerVirtualWorld(playerid)!=i)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,bsInfo[i][ib_x],bsInfo[i][ib_y],bsInfo[i][ib_z]))continue;
SetPlayerPos(playerid,bdInfo[tmp_i][bd_x],bdInfo[tmp_i][bd_y],bdInfo[tmp_i][bd_z]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
return 1;
}
for(new i=0; i<sizeof(hInfo); i++)
{
if(GetPlayerVirtualWorld(playerid)!=i)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]))continue;
SetPlayerPos(playerid,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
return 1;
}
return 1;
}
Debugg:
[21:16:39] DEBUG: Aufgerufen
[21:16:39] bsInfo[i][db_id]
[21:16:39] DEBUG: Aufgerufen
[21:16:39] bsInfo[i][db_id]
[21:16:39] DEBUG: Aufgerufen
[21:16:39] bsInfo[i][db_id]
[21:16:39] DEBUG: Aufgerufen
[21:16:39] bsInfo[i][db_id]
[21:16:39] DEBUG: Aufgerufen
[21:16:39] bsInfo[i][db_id]
[21:16:39] bsInfo[i][ib_x] >0.0
[21:16:43] DEBUG: Aufgerufen
[21:16:43] bsInfo[i][db_id]
[21:16:43] DEBUG: Aufgerufen
[21:16:43] bsInfo[i][db_id]
[21:16:43] DEBUG: Aufgerufen
[21:16:43] bsInfo[i][db_id]
[21:16:43] DEBUG: Aufgerufen
[21:16:43] bsInfo[i][db_id]
[21:16:43] DEBUG: Aufgerufen
[21:16:43] bsInfo[i][db_id]
[21:16:43] bsInfo[i][ib_x] >0.0
Alles anzeigen