[Ajuda] Dъvida em relaзгo a esta lуgica
#1

Eu estou tentando elaborar um comando especнfico para fazer checagem se hб pessoas em um determinado RAIO, que й mais ou menos assim:

pawn Код:
for(new i = 0; i < sizeof(BizzInfo); i++)
{
    for(new a; a < GetMaxPlayers(); a++)
    {
        if(IsPlayerInRangeOfPoint(a, 3.0, BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]))
        {
            // Cуdigo cortado
        }
    }
}
Queria identificar se essa lуgica, de uma funзгo se aplicaria caso UM PLAYER use o comando e o pessoal AO REDOR seja afetado pelo mesmo, digamos assim e se ela estб correta.
Reply
#2

1-Use foreach ao invйs de GetMaxPlayers
2-Nгo iguale uma variбvel a 0 na hora da criaзгo, o valor padrгo de uma variбvel do tipo inteiro quando vocк a cria, jб й 0.
3-Verifique se o a nгo й o playerid
4-Caso queira interromper o loop e todo o cуdigo processado dentro da funзгo, use return, mas tenta explicar melhor o que vocк estб tentando fazer...
Reply
#3

Sу quero saber se a lуgica de checagem de pessoas em determinada posiзгo й correta. Independente se somente UMA PESSOA aciona a funзгo.

Por exemplo, eu digito /invadir e todos que estгo perto de mim tambйm entrarem no local de invasгo.
Reply
#4

a funзгo vai ser chamada a todos que estiverem perto de vocк, sу que eu acho melhor ser usado assim:

PHP код:
GetPlayerPos(playerid,Cords[0],Cords[1],Cords[2]);
    for(new 
0GetMaxPlayers(); != x; ++i)
    {
        if(
IsPlayerInRangeOfPoint(i,30,Cords[0],Cords[1],Cords[2]))
        {
            
// Cуdigo cortado
        
}
    }

Reply
#5

Quote:
Originally Posted by iTakelot
Посмотреть сообщение
a funзгo vai ser chamada a todos que estiverem perto de vocк, sу que eu acho melhor ser usado assim:

PHP код:
GetPlayerPos(playerid,Cords[0],Cords[1],Cords[2]);
    for(new 
0GetMaxPlayers(); != x; ++i)
    {
        if(
IsPlayerInRangeOfPoint(i,30,Cords[0],Cords[1],Cords[2]))
        {
            
// Cуdigo cortado
        
}
    }

Vai dar warning, o radius tem q ser em float e nгo em int.

Код:
static Float:Coords[3];
GetPlayerPos(playerid, Coords[0], Coords[1], Coords[2]);
foreach(new i : Player)
{
	if(i == playerid || !IsPlayerInRangeOfPoint(i, 30.0, Coords[0], Coords[1], Coords[2])) continue;//pula o player caso ele seja o prуprio player ou nгo esteja num raio de 30 metros...
        //aqui vocк faz o que quer com o grupo de pessoas que estгo dentro do raio de 30.0 e nгo sгo o prуprio player...
}
Reply
#6

Quote:
Originally Posted by ipsLeon
Посмотреть сообщение
1-Use foreach ao invйs de GetMaxPlayers
2-Nгo iguale uma variбvel a 0 na hora da criaзгo, o valor padrгo de uma variбvel do tipo inteiro quando vocк a cria, jб й 0.
3-Verifique se o a nгo й o playerid
4-Caso queira interromper o loop e todo o cуdigo processado dentro da funзгo, use return, mas tenta explicar melhor o que vocк estб tentando fazer...
Correзгo, use foreah ao invйs de Loop comun(for)
Reply
#7

Quote:
Originally Posted by ipsLeon
Посмотреть сообщение
Vai dar warning, o radius tem q ser em float e nгo em int.
Na verdade nгo darб warning, atй porque uma vez que passar um nъmero inteiro para um parвmetro flutuante, automaticamente este int serб passado para float
Reply
#8

Deus do cйu, eu nгo estou preocupado se vou usar Foreach ou Loop, a ъnica coisa que eu quero й que responda.

A MINHA LУGICA ESTБ CERTA?
Reply
#9

Sim estб certa
Reply
#10

Revivendo este tуpico para tirar uma dъvida.

Como eu faзo uma contagem com os players A PARTIR do momento que eles se movem para tal destino (seguindo o exemplo do meu cуdigo)?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)