Azt Define-vel nemtudod megoldani, mivel annak az értékét nemtudod változtatni. Itt mindenféle esetben változó szükséges, PVar vagy Int, de az alap int változó ajánlott.
new currentHouse[MAX_PLAYERS];
Aztán ezt, egy parancsnál megváltoztatod.
CMD:enter(playerid)
{
for(new i = 0; i < MAX_HOUSE; i++}
{
if(IsPlayerInRangeOfPoint(playerid,2.0,houseInfo[i][hEnterX],houseInfo[i][hEnterY],houseInfo[i][hEnterZ])
{
currentHouse[playerid] = houseInfo[i][hID];
SetPlayerPos(playerid,houseInfo[i][hExitX],houseInfo[i][hExitY],houseInfo[i][hExitZ]);
SetPlayerVirtualWorld(playerid,houseInfo[i][hVirtual]);
SetPlayerInterior(playerid,houseInfo[i][hInterior]);
}
}
return 1;
}
Aztán meg egy másik paranccsal lekérdezed.
CMD:hazinfo(playerid)
{
new string[128]; format(string,sizeof(string),\"A ház azonosítója, amelyben jelenleg tartózkodol: %d\",currentHouse[playerid]);
SendClientMessage(playerid,-1,string);
return 1;
}
Aztán ha kilép a házból megváltoztatod az értékét, vagy ha Disconnectel.
CMD:exit(playerid)
{
for(new i = 0; i < MAX_HOUSE; i++}
{
if(IsPlayerInRangeOfPoint(playerid,2.0,houseInfo[i][hExitX],houseInfo[i][hExitY],houseInfo[i][hExitZ])
{
currentHouse[playerid] = -1; // vagy (0), attól függ, hogy honnan kezdődnek a ház ID-k.
SetPlayerPos(playerid,houseInfo[i][hEnterX],houseInfo[i][hEnterY],houseInfo[i][hEnterZ]);
SetPlayerVirtualWorld(playerid,0);
SetPlayerInterior(playerid,0);
}
}
return 1;
}
public OnPlayerDisconnect(playerid,reason)
{
// Reset player variables
currentHouse[playerid] = -1; // vagy (0), mint már említettem
return 1;
}
Azért kell nullázni, vagy beállítani más értéket, mivel hogyha lecsatlakozik, az Ő ID-jén lévő változókat, aki felcsatlakozik azzal az ID-vel ő fogja megkapni.
És ha mondjuk a pénzt mented le így, akkor az előző játékos pénzét, megkapja az aki felcsatlakozik
Remélem tudtam segíteni