[Ajuda] Sistema de Casas.
#1

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:
PHP Code:
// Maneira 1
CMD:teste(playerid)
{
    for(new 
0MAX_CASASi++)
    {
        new 
Pasta[100];
        
format(Pastasizeof(Pasta), Casasi);
        if(
DOF2_FileExists(Pasta))
         {
             if(!
IsPlayerInRangeOfPoint(playerid1DOF2_GetFloat(Pasta"PosX"), DOF2_GetFloat(Pasta"PosY"), DOF2_GetFloat(Pasta"PosZ"))) return SendClientMessage(playeridvermelho"| ERRO | Vocк Nгo Estб Em Uma Casa!");
            
SendClientMessage(playeridazul2"Debug");
        }
        break;
    }
    return 
1;
}
// Maneira 2
CMD:teste (playerid)
{
    for(new 
0MAX_CASAi++)
    {
        if(!
IsPlayerInRangeOfPoint(playerid1Casa[i][PosX], Casa[i][PosY], Casa[i][PosY)) return SendClientMessage(playeridvermelho"| ERRO | Vocк Nгo Estб Em Uma Casa");
        
SendClientMessage(playeridazul2"Debug");
        break;
    }
    return 
1;
}
// Tinha mais 2 maneiras, mas eu deletei porque nгo funcionaram. 
Enum do sistema:
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]; 
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.
Reply
#2

PHP Code:
GetPlayerClosestHouse(playeridFloat:range 3.0)
{
    new 
id = -1;
    for (new 
0MAX_CASA++) 
    {
        if (
IsPlayerInRangeOfPoint(playeridrangeCasa[i][PosX], Casa[i][PosY], Casa[i][PosZ]))
        {
            
id i;
            break;
        }
    }
    return 
id;
}
CMD:teste(playerid

    new 
id GetPlayerClosestHouse(playerid);
    if (
id == -1)
        return print(
"| ERRO | Vocк Nгo Estб Em Uma Casa");
    print(
"Debug");
    return 
1

Reply
#3

Quote:
Originally Posted by 1sbedx
View Post
PHP Code:
GetPlayerClosestHouse(playeridFloat:range 3.0)
{
    new 
id = -1;
    for (new 
0MAX_CASA++) 
    {
        if (
IsPlayerInRangeOfPoint(playeridrangeCasa[i][PosX], Casa[i][PosY], Casa[i][PosZ]))
        {
            
id i;
            break;
        }
    }
    return 
id;
}
CMD:teste(playerid

    new 
id GetPlayerClosestHouse(playerid);
    if (
id == -1)
        return print(
"| ERRO | Vocк Nгo Estб Em Uma Casa");
    print(
"Debug");
    return 
1

Mesmo erro.
Reply
#4

Então o problema não está na verificação, talvez no carregamento das casas ou na criação.
Reply
#5

stock de carregas as casas:
PHP Code:
stock LoadCasas()
{
    for(new 
0MAX_CASASi++)
    {
        new 
str[256], Label[256], Status[20], PickPick2;
        
format(strsizeof(str), Casasi);
        if(
DOF2_FileExists(str))
        {
            new 
Casaid;
            
            
Casa[Casaid][tDono] = DOF2_GetBoolstr"tDono" );
            
format(Casa[Casaid][nDono], 24"%s"DOF2_GetString(str"nDono") );
            
Casa[Casaid][cInfo] = DOF2_GetInt str"cInfo" );
            
Casa[Casaid][cID] = DOF2_GetIntstr"cID" );
            
Casa[Casaid][PosX] = DOF2_GetFloatstr"PosX" );
            
Casa[Casaid][PosY] = DOF2_GetFloatstr"PosY" );
            
Casa[Casaid][PosZ] = DOF2_GetFloatstr"PosZ" );
            
Casa[Casaid][cContas] = DOF2_GetIntstr"cContas" );
            
Casa[Casaid][cPorta] = DOF2_GetBoolstr"cPorta" );
            
Casa[Casaid][cInt] = DOF2_GetIntstr"cInt" );
            
Casa[Casaid][cWorld] = DOF2_GetIntstr"cWorld" );
            
Casa[Casaid][cLevel] = DOF2_GetIntstr"cLevel" );

            if(
Casa[Casaid][cPorta] == true) { Status "{00E600}Aberta"; } else if(Casa[Casaid][cPorta] == false) { Status "{FF0000}Fechada"; }
            
format(Labelsizeof(Label), "{c0c0c0}Level %i\nCasa %i\n{FFAE00}Dono: {FFFFFF}%s\n{c0c0c0}Porta: %s"Casa[Casaid][cLevel], Casa[Casaid][cID], Casa[Casaid][nDono], Status);
            if(
Casa[Casaid][tDono] == true) { Pick2 19522; } else if(Casa[Casaid][tDono] == false) { Pick2 1273; }
            
CasaP[Casaid] = CreatePickup(Pick20Casa[Casaid][PosX], Casa[Casaid][PosY], Casa[Casaid][PosZ], 0);
            
Create3DTextLabel(Label, -1Casa[Casaid][PosX], Casa[Casaid][PosY], Casa[Casaid][PosZ], 15.000);
            if(
Casa[Casaid][tDono] == true) { Pick 32; } else if(Casa[Casaid][tDono] == false) { Pick 31; }
            
CreateDynamicMapIcon(Casa[Casaid][PosX], Casa[Casaid][PosY], Casa[Casaid][PosZ], Pick, -1, -1, -1, -1100.0);
        }
    }
    return 
1;

Reply
#6

PHP Code:
stock LoadCasas()
{
    for(new 
0MAX_CASASi++)
    {
        new 
str[256], Label[256], Status[20], PickPick2;
        
format(strsizeof(str), Casasi);
        if(
DOF2_FileExists(str))
        {
            
Casa[i][tDono] = DOF2_GetBoolstr"tDono" );
            
format(Casa[i][nDono], 24"%s"DOF2_GetString(str"nDono") );
            
Casa[i][cInfo] = DOF2_GetInt str"cInfo" );
            
Casa[i][cID] = DOF2_GetIntstr"cID" );
            
Casa[i][PosX] = DOF2_GetFloatstr"PosX" );
            
Casa[i][PosY] = DOF2_GetFloatstr"PosY" );
            
Casa[i][PosZ] = DOF2_GetFloatstr"PosZ" );
            
Casa[i][cContas] = DOF2_GetIntstr"cContas" );
            
Casa[i][cPorta] = DOF2_GetBoolstr"cPorta" );
            
Casa[i][cInt] = DOF2_GetIntstr"cInt" );
            
Casa[i][cWorld] = DOF2_GetIntstr"cWorld" );
            
Casa[i][cLevel] = DOF2_GetIntstr"cLevel" );
            if(
Casa[i][cPorta] == true) { Status "{00E600}Aberta"; } else if(Casa[i][cPorta] == false) { Status "{FF0000}Fechada"; }
            
format(Labelsizeof(Label), "{c0c0c0}Level %i\nCasa %i\n{FFAE00}Dono: {FFFFFF}%s\n{c0c0c0}Porta: %s"Casa[i][cLevel], Casa[i][cID], Casa[i][nDono], Status);
            if(
Casa[i][tDono] == true) { Pick2 19522; } else if(Casa[i][tDono] == false) { Pick2 1273; }
            
CasaP[i] = CreatePickup(Pick20Casa[i][PosX], Casa[i][PosY], Casa[i][PosZ], 0);
            
Create3DTextLabel(Label, -1Casa[i][PosX], Casa[i][PosY], Casa[i][PosZ], 15.000);
            if(
Casa[i][tDono] == true) { Pick 32; } else if(Casa[i][tDono] == false) { Pick 31; }
            
CreateDynamicMapIcon(Casa[i][PosX], Casa[i][PosY], Casa[i][PosZ], Pick, -1, -1, -1, -1100.0);
            
printf("Casa %i carregada."i);
        }
    }
    return 
1;

Reply
#7

Opa, verdade, eu tinha colocado o new Casaid; para ver se nгo iria bugar ao carregar o sistema, pois antes estava bugando ao carregar... valeu mano!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)