Dъvida em relaзгo a esta lуgica -
pWesley - 19.08.2015
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.
Re: Dъvida em relaзгo a esta lуgica -
n0minal - 19.08.2015
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...
Re: Dъvida em relaзгo a esta lуgica -
pWesley - 19.08.2015
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.
Re: Dъvida em relaзгo a esta lуgica -
iTakelot - 19.08.2015
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 i = 0, x = GetMaxPlayers(); i != x; ++i)
{
if(IsPlayerInRangeOfPoint(i,30,Cords[0],Cords[1],Cords[2]))
{
// Cуdigo cortado
}
}
}
Re: Dъvida em relaзгo a esta lуgica -
n0minal - 19.08.2015
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 i = 0, x = GetMaxPlayers(); i != 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...
}
Re: Dъvida em relaзгo a esta lуgica -
Dayvison_ - 19.08.2015
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)
Re: Dъvida em relaзгo a esta lуgica -
Bruno13 - 19.08.2015
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
Re: Dъvida em relaзгo a esta lуgica -
pWesley - 19.08.2015
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?
Re: Dъvida em relaзгo a esta lуgica -
Dayvison_ - 19.08.2015
Sim estб certa
Re: Dъvida em relaзгo a esta lуgica -
pWesley - 26.08.2015
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)?