[Ajuda] multiplicaзгo com verificaзхes de posiзхes de jogadores
#1

Alguem me ajuda! estou querendo fazer um loop para verificar a distancia onde o jogador estar, calculada com angulo de visгo e entгo retirar 5.0 de vida do jogador caso esteja entre a distancia.

eu coloquei o codigo na public OnPlayerKeyStateChange
na KEY_FIRE.

PHP Code:
for(new iMAX_PLAYERSpi++)
{
    new 
Float:xFloat:yFloat:zFloat:a;
    
GetPlayerPos(playeridxyz);
    
GetPlayerFacingAngle(playerida);
    
+= floatsin(-adegrees) * DistanciaDisparo[i][0];
    
+= floatcos(-adegrees) * DistanciaDisparo[i][0];
    if(
IsPlayerInRangeOfPoint(i0.5xyz))
    {
        if(
playerid != i)
        {
            new 
Float:phealth;
            
GetPlayerHealth(iphealth);
            
SetPlayerHealth(iphealth-5.0);
        }
        else
        {
        }
    }

estas as pre-definidas para colocar no loop e verificar se o jogador estar entre elas, (NAO REMOVERA A VIDA DE QUEM APERTAR)

PHP Code:
new Float:DistanciaDisparo[20][1] =
{
    {
0.1},
    {
0.2},
    {
0.3},
    {
0.4},
    {
0.5},
    {
0.6},
    {
0.7},
    {
0.8},
    {
0.9},
    {
1.0},
    {
1.1},
    {
1.2},
    {
1.3},
    {
1.4},
    {
1.5},
    {
1.6},
    {
1.7},
    {
1.8},
    {
1.9},
    {
2.0}
}; 
OBS: ao realizar este calculo (EXEMPLO)
Code:
x += floatsin(-a, degrees) * 1.0;
y += floatcos(-a, degrees) * 1.0;
й recebida em X e Y um metro a frente.. entao de forma resumida, quero que ele comece a verificar de 0.1 a 2.0.. o restante, deixe comigo.. obrigado
Reply
#2

Nгo й tudo que й possнvel fazer no SA-MP.
Nгo estou entendendo o que vocк quer fazer.
Mas, como vocк quer verificar algo, й sу usar if.

PHP Code:
if(>= 0.1 && <= 2.0
{
    
//estб entre 0.1 e 2.0

Reply
#3

Quote:
Originally Posted by ipsLuan
View Post
Nгo й tudo que й possнvel fazer no SA-MP.
Nгo estou entendendo o que vocк quer fazer.
Mas, como vocк quer verificar algo, й sу usar if.

PHP Code:
if(>= 0.1 && <= 2.0
{
    
//estб entre 0.1 e 2.0

Й.. estou tentando fazer um loop que faзa com que IsPlayerInRangePoint pegue calculos apartir da float DistanciaDisparo, pois da maneira que fiz, ele nгo esta calculando novamente x, y para puxar da float como [i] uma da lista

EDIT:

Neste exemplo que citei
Code:
x += floatsin(-a, degrees) * 1.0;
y += floatcos(-a, degrees) * 1.0;
pode ver que fez o calculo com "1.0" quero que no loop ele verifique todas da lista DistanciaDisparo
Reply
#4

Use loop entгo.
Reply
#5

Loop ja esta sendo usado. sem nenhum efeito. nгo tenho total conhecimento para identificar erros, mas agradeзo.
Reply
#6

Code:
if(IsPlayerInRangeOfPoint(i, 0.5, x, y, z)) 
    { 
        if(playerid != i) 
        { 
            new Float:phealth; 
            GetPlayerHealth(i, phealth); 
            SetPlayerHealth(i, phealth-5.0); 
        } 
        else 
        { 
        } 
    }
Cara nгo sei se estou certo ou se estou moscando, mas tava pensando aqui pela logica, vocк verifica se "i" estб em tal ponto, verifica os players "i", e no if voce usa se for diferente de "i", mas pela minha logica, para chegar na parte do if todos devem ser "i", pq senao nao passariam do IsPlayerRangeOfPoint, nao sei se deu pra entender muito ae kk
Reply
#7

Quote:
Originally Posted by Eiss
View Post
Tente dessa forma.

pawn Code:
static Float:DistanciaDisparo[] =  {
    0.1,
    0.2,
    0.3,
    0.4,
    0.5,
    0.6,
    0.7,
    0.8,
    0.9,
    1.0,
    1.1,
    1.2,
    1.3,
    1.4,
    1.5,
    1.6,
    1.7,
    1.8,
    1.9,
    2.0
};


// -
//
// -

new
    Float: x,
    Float: y,
    Float: z,
    Float: a;


GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);

for (new i = 0; i < MAX_PLAYERS; i++) {
       
    if(playerid == i) {
        continue;
    }

    for (new j = 0; j < sizeof(DistanciaDisparo); j++) {
        x += (DistanciaDisparo[j] * floatsin(-a, degrees));
        y += (DistanciaDisparo[j] * floatcos(-a, degrees));

        if(IsPlayerInRangeOfPoint(i, 0.5, x, y, z)) {
            new
                Float: health;

            GetPlayerHealth(i, health);
            SetPlayerHealth(i, health - 5.0);
        }
    }
}
Obrigado a todos, mas em especial a vocк. estudarei as funзхes usadas para que futuramente possa desenvolver novos sistemas com o que foi feito.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)