[Ajuda] Loop de verificaзгo de casas criadas
#1

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;

Reply
#2

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;

Reply
#3

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
Reply
#4

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.
Reply
#5

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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)