SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 05/05/2018, 11:43 PM   #1
AllanSG
Big Clucker
 
AllanSG's Avatar
 
Join Date: Jun 2017
Location: Porto Alegre - RS
Posts: 158
Reputation: 6
Default Sistema de Casas.

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.
__________________


"Não sou do tipo de pessoa que corre atrás de ninguém. Mas se eu correr, é porque a pessoa significa muito pra mim."

AllanSG is offline   Reply With Quote
Old 06/05/2018, 12:01 AM   #2
1sbedx
Huge Clucker
 
Join Date: Dec 2015
Posts: 358
Reputation: 49
Default Re: Sistema de Casas.

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

1sbedx is offline   Reply With Quote
Old 06/05/2018, 02:41 AM   #3
AllanSG
Big Clucker
 
AllanSG's Avatar
 
Join Date: Jun 2017
Location: Porto Alegre - RS
Posts: 158
Reputation: 6
Default Re: Sistema de Casas.

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.
__________________


"Não sou do tipo de pessoa que corre atrás de ninguém. Mas se eu correr, é porque a pessoa significa muito pra mim."

AllanSG is offline   Reply With Quote
Old 06/05/2018, 02:45 AM   #4
1sbedx
Huge Clucker
 
Join Date: Dec 2015
Posts: 358
Reputation: 49
Default Re: Sistema de Casas.

Então o problema não está na verificação, talvez no carregamento das casas ou na criação.
1sbedx is offline   Reply With Quote
Old 06/05/2018, 03:03 AM   #5
AllanSG
Big Clucker
 
AllanSG's Avatar
 
Join Date: Jun 2017
Location: Porto Alegre - RS
Posts: 158
Reputation: 6
Default Re: Sistema de Casas.

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;

__________________


"Não sou do tipo de pessoa que corre atrás de ninguém. Mas se eu correr, é porque a pessoa significa muito pra mim."

AllanSG is offline   Reply With Quote
Old 06/05/2018, 03:08 AM   #6
1sbedx
Huge Clucker
 
Join Date: Dec 2015
Posts: 358
Reputation: 49
Default Re: Sistema de 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))
        {
            
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;

1sbedx is offline   Reply With Quote
Old 06/05/2018, 03:51 AM   #7
AllanSG
Big Clucker
 
AllanSG's Avatar
 
Join Date: Jun 2017
Location: Porto Alegre - RS
Posts: 158
Reputation: 6
Default Re: Sistema de Casas.

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!
__________________


"Não sou do tipo de pessoa que corre atrás de ninguém. Mas se eu correr, é porque a pessoa significa muito pra mim."

AllanSG is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[FilterScript] Sistema de Casas * C-Casas * 2018 Cleyson Lançamentos/Releases 5 05/05/2018 09:44 AM
[Pedido] Sistema de Casas Vinicin Português/Portuguese 2 29/11/2013 12:30 AM
[Pedido] Sistema de Casas dirt2 Português/Portuguese 2 03/03/2013 02:36 PM


All times are GMT. The time now is 01:51 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.