27/03/2022 18:12
(Esta mensagem foi modificada pela última vez a: 27/03/2022 18:14 por xbruno1000x.)
Para detectar se o player está na água, use a stock abaixo:
Logo, o código ficará:
Para detectar o chão, crie uma if antes dessa usando o mapandreas. Utilizando MapAndreas_FindAverageZ você encontra a coordenada do chão, logo se a coordenada Z do player for maior do que o valor retornado pelo mapandreas, ele está voando.
A minha solução é aproveitando seu código, mas creio que existam jeitos mais fáceis de detectar se o player está andando, como pegar a animação dele.
Código:
stock IsPlayerInWater(playerid)
{
new Float:Z;// não mude para static
GetPlayerPos(playerid,Z,Z,Z);
if(Z < 0.7) switch(GetPlayerAnimationIndex(playerid)) { case 1543,1538,1539: return 1; }
if(GetPlayerDistanceFromPoint(playerid,-965,2438,42) <= 700 && Z < 45)return 1;
new Float:water_places[][] =
{
{
25.0, 2313.0, -1417.0, 23.0},
{
15.0, 1280.0, -773.0, 1082.0},
{
15.0, 1279.0, -804.0, 86.0},
{
20.0, 1094.0, -674.0, 111.0},
{
26.0, 194.0, -1232.0, 76.0},
{
25.0, 2583.0, 2385.0, 15.0},
{
25.0, 225.0, -1187.0, 73.0},
{
50.0, 1973.0, -1198.0, 17.0},
{
140.0, 1923.0, 1592.0, 10.0}
};
for(new t=0; t < sizeof water_places; t++)
if(GetPlayerDistanceFromPoint(playerid,water_places[t][1],water_places[t][2],water_places[t][3]) <= water_places[t][0]) return 1;
return 0;
}
Logo, o código ficará:
Código:
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && IsPlayerRunning(playerid) && !IsPlayerInWater(playerid))
Para detectar o chão, crie uma if antes dessa usando o mapandreas. Utilizando MapAndreas_FindAverageZ você encontra a coordenada do chão, logo se a coordenada Z do player for maior do que o valor retornado pelo mapandreas, ele está voando.
A minha solução é aproveitando seu código, mas creio que existam jeitos mais fáceis de detectar se o player está andando, como pegar a animação dele.
Discente de Sistemas de Informação no Centro Federal de Ensino Tecnológico(CEFET/RJ)
Programador SA-MP desde 2012
Programador SA-MP desde 2012
Não envie dúvidas por inbox, crie um tópico. Sua dúvida pode ser a dúvida de outro alguém, e seu tópico ajudará outras pessoas no futuro.