multiplicaзгo com verificaзхes de posiзхes de jogadores -
zHellSync - 24.02.2019
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 i, p = MAX_PLAYERS; i < p; i++)
{
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
x += floatsin(-a, degrees) * DistanciaDisparo[i][0];
y += floatcos(-a, degrees) * DistanciaDisparo[i][0];
if(IsPlayerInRangeOfPoint(i, 0.5, x, y, z))
{
if(playerid != i)
{
new Float:phealth;
GetPlayerHealth(i, phealth);
SetPlayerHealth(i, phealth-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
Re: multiplicaзгo com verificaзхes de posiзхes de jogadores -
ipsLuan - 24.02.2019
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(a >= 0.1 && a <= 2.0)
{
//estб entre 0.1 e 2.0
}
Re: multiplicaзгo com verificaзхes de posiзхes de jogadores -
zHellSync - 24.02.2019
Quote:
Originally Posted by ipsLuan
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(a >= 0.1 && a <= 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
Re: multiplicaзгo com verificaзхes de posiзхes de jogadores -
ipsLuan - 24.02.2019
Use loop entгo.
Re: multiplicaзгo com verificaзхes de posiзхes de jogadores -
zHellSync - 24.02.2019
Loop ja esta sendo usado. sem nenhum efeito. nгo tenho total conhecimento para identificar erros, mas agradeзo.
Re: multiplicaзгo com verificaзхes de posiзхes de jogadores -
GranadaGamer - 24.02.2019
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
Re: multiplicaзгo com verificaзхes de posiзхes de jogadores -
zHellSync - 25.02.2019
Quote:
Originally Posted by Eiss
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.