SA-MP Forums Archive
[Ajuda] Loop de verificaзгo de casas criadas - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Loop de verificaзгo de casas criadas (/showthread.php?tid=663787)



Loop de verificaзгo de casas criadas - zHellSync - 11.02.2019

Criei um FS basico com o que estou aprendendo.. tentei ate nao ter que vir aqui pedir ajuda mas como nao sou bom em loops e nao sei de tudo.. resolvi pedir ajuda..

Meu FS ele cria casas, carrega elas na inicializaзгo normalmente, porem na verificaзгo dos pickups que ta meu problema .. estou no pickup de entrada e uso /entrarcasa ele entra, ao usar /saircasa ele vai para casa com id maior (mais recente criado), poderia me ajudar a resolver?

Algumas info:
PHP код:
//comando para sair da casa
CMD:saircasa(playerid)
{
    for(new 
cMAX_CASASc++)
    {
        if(
IsPlayerInRangeOfPoint(playerid1.0hCasaInfo[c][hExitX], hCasaInfo[c][hExitY], hCasaInfo[c][hExitZ]) && hCasaInfo[c][zCasaID] == c)
        {
            
SetPlayerInterior(playerid0);
            
SetPlayerPos(playeridhCasaInfo[c][hEnterX], hCasaInfo[c][hEnterY], hCasaInfo[c][hEnterZ]);
            
SetPlayerVirtualWorld(playerid0);
        }
    }
    return 
1;

PHP код:
//comando para entrar na casa
CMD:entrarcasa(playerid)
{
    for(new 
cMAX_CASASc++)
    {
        if(
IsPlayerInRangeOfPoint(playerid1.0hCasaInfo[c][hEnterX], hCasaInfo[c][hEnterY], hCasaInfo[c][hEnterZ]))
        {
            
SetPlayerInterior(playeridhCasaInfo[c][hInt]);
            
SetPlayerPos(playeridhCasaInfo[c][hSpawnX], hCasaInfo[c][hSpawnY], hCasaInfo[c][hSpawnZ]);
            
SetPlayerVirtualWorld(playeridhCasaInfo[c][hVWDentro]);
        }
    }
    return 
1;




Re: Loop de verificaзгo de casas criadas - wearLy - 11.02.2019

Vocк pode criar uma variбvel global que salva o id da casa que o player estб dessa forma:

PHP код:
new hCasaEntrou[MAX_PLAYERS];
CMD:entrarcasa(playerid)
{
    for(new 
cMAX_CASASc++)
    {
        if(
IsPlayerInRangeOfPoint(playerid1.0hCasaInfo[c][hEnterX], hCasaInfo[c][hEnterY], hCasaInfo[c][hEnterZ]))
        {
            
SetPlayerInterior(playeridhCasaInfo[c][hInt]);
            
SetPlayerPos(playeridhCasaInfo[c][hSpawnX], hCasaInfo[c][hSpawnY], hCasaInfo[c][hSpawnZ]);
            
SetPlayerVirtualWorld(playeridhCasaInfo[c][hVWDentro]);
            
hCasaEntrou[playerid] = c;
        }
    }
    return 
true;
}
CMD:saircasa(playerid)
{
    new 
idcasa hCasaEntrou[playerid];
    
    if (
IsPlayerInRangeOfPoint(playerid1.0hCasaInfo[idcasa][hExitX], hCasaInfo[idcasa][hExitY], hCasaInfo[idcasa][hExitZ]))
    {
        
SetPlayerInterior(playerid0);
        
SetPlayerPos(playeridhCasaInfo[idcasa][hEnterX], hCasaInfo[idcasa][hEnterY], hCasaInfo[idcasa][hEnterZ]);
        
SetPlayerVirtualWorld(playerid0);
     }
    return 
true;




Re: Loop de verificaзгo de casas criadas - zHellSync - 11.02.2019

Quote:
Originally Posted by wearLy
Посмотреть сообщение
Vocк pode criar uma variбvel global que salva o id da casa que o player estб dessa forma:

PHP код:
new hCasaEntrou[MAX_PLAYERS];
CMD:entrarcasa(playerid)
{
    for(new 
cMAX_CASASc++)
    {
        if(
IsPlayerInRangeOfPoint(playerid1.0hCasaInfo[c][hEnterX], hCasaInfo[c][hEnterY], hCasaInfo[c][hEnterZ]))
        {
            
SetPlayerInterior(playeridhCasaInfo[c][hInt]);
            
SetPlayerPos(playeridhCasaInfo[c][hSpawnX], hCasaInfo[c][hSpawnY], hCasaInfo[c][hSpawnZ]);
            
SetPlayerVirtualWorld(playeridhCasaInfo[c][hVWDentro]);
            
hCasaEntrou[playerid] = c;
        }
    }
    return 
true;
}
CMD:saircasa(playerid)
{
    new 
idcasa hCasaEntrou[playerid];
    
    if (
IsPlayerInRangeOfPoint(playerid1.0hCasaInfo[idcasa][hExitX], hCasaInfo[idcasa][hExitY], hCasaInfo[idcasa][hExitZ]))
    {
        
SetPlayerInterior(playerid0);
        
SetPlayerPos(playeridhCasaInfo[idcasa][hEnterX], hCasaInfo[idcasa][hEnterY], hCasaInfo[idcasa][hEnterZ]);
        
SetPlayerVirtualWorld(playerid0);
     }
    return 
true;

Obrigado pela dica. ++rep


Re: Loop de verificaзгo de casas criadas - wearLy - 11.02.2019

PHP код:
hCasaEntrou[playerid] = c
Vocк precisa salvar o ID da casa que entrou ou seja vai usar o c (valor que estб no loop de verificaзгo), vocк estб salvando 0.


Re: Loop de verificaзгo de casas criadas - AutoMatic2 - 11.02.2019

Lembrando que existe casa id 0 entгo sempre usa o -1 pra sair e >= 0 para entrar

PHP код:
CMD:saircasa(playerid)
{
    for(new 
cMAX_CASASc++)
    {
        if(
hCasaEntrou[playerid] >= 0)
        {
            if(
IsPlayerInRangeOfPoint(playerid1.0hCasaInfo[c][hExitX], hCasaInfo[c][hExitY], hCasaInfo[c][hExitZ]) && hCasaInfo[c][zCasaID] == c)
            {
                
SetPlayerInterior(playerid0);
                
SetPlayerPos(playeridhCasaInfo[c][hEnterX], hCasaInfo[c][hEnterY], hCasaInfo[c][hEnterZ]);
                
SetPlayerVirtualWorld(playerid0);
                
hCasaEntrou[playerid] = -1;
            }
        }
    }
    return 
1;

Eu tenho fiz um sistema tipo esse, o entrar e sair e quase igual esse, mas o jeito de pegar o id e diferente.

Vo tentar fazer desse jeito com loop for O Meu funciona sem bugs. Porйm nгo tem muitos interiores fiz so de teste, tenho que continuar dps