05.05.2018, 23:43
Eu como prefiro fazer meus prуprios sistemas, decidi fazer um sistema de casas, estava tudo Ok, ele carregava as casas certinho, mas quando fui fazer um comando para usar nas casas, tipo comprar, vender, ver informaзхes, etc... nгo consegui fazer com que ele verifiquei corretamente se o jogador estб em uma casa; fiz um comando de testes somente para verificar isto, antes de fazer os demais comandos, evitar atй de todos nгo funcionarem e eu ter que deleta-los, eu usei maneiras diferentes de verificar isto, mas nenhuma funcionou, vou mostrar as formas que usei:
Enum do sistema:
O que acontece й que somente 1 das casas carregadas й lida como verdadeira, se eu for em outra casa, diz que nгo estou em nenhuma casa, na maneira 1 ele sу da como verdadeira a primeira casa carregada, na maneira 2 sу funciona com a ultima casa carregada.
PHP Code:
// Maneira 1
CMD:teste(playerid)
{
for(new i = 0; i < MAX_CASAS; i++)
{
new Pasta[100];
format(Pasta, sizeof(Pasta), Casas, i);
if(DOF2_FileExists(Pasta))
{
if(!IsPlayerInRangeOfPoint(playerid, 1, DOF2_GetFloat(Pasta, "PosX"), DOF2_GetFloat(Pasta, "PosY"), DOF2_GetFloat(Pasta, "PosZ"))) return SendClientMessage(playerid, vermelho, "| ERRO | Vocк Nгo Estб Em Uma Casa!");
SendClientMessage(playerid, azul2, "Debug");
}
break;
}
return 1;
}
// Maneira 2
CMD:teste (playerid)
{
for(new i = 0; i < MAX_CASA; i++)
{
if(!IsPlayerInRangeOfPoint(playerid, 1, Casa[i][PosX], Casa[i][PosY], Casa[i][PosY)) return SendClientMessage(playerid, vermelho, "| ERRO | Vocк Nгo Estб Em Uma Casa");
SendClientMessage(playerid, azul2, "Debug");
break;
}
return 1;
}
// Tinha mais 2 maneiras, mas eu deletei porque nгo funcionaram.
PHP Code:
enum InfoCasa
{
bool:tDono,
cInfo,
cID,
nDono[MAX_PLAYER_NAME],
Float:PosX,
Float:PosY,
Float:PosZ,
cContas,
bool:cPorta,
cInt,
cWorld,
cLevel,
};
new Casa[MAX_CASAS][InfoCasa];