Portal SAMP
[Ajuda] Detectar andando - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Detectar andando (/showthread.php?tid=2237)



Detectar andando - Hatiro - 27/03/2022

Bem quero detectar quando o player está andando no chão tem uns meio como
Código:
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && IsPlayerRunning(playerid))
só que mesmo que eu esteja caindo/nadando vai pegar quero apenas quando eu estiver andando no chão alguém sabe como posso fazer?  Confused


RE: Detectar andando - xbruno1000x - 27/03/2022

Para detectar se o player está na água, use a stock abaixo:

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.


RE: Detectar andando - Hatiro - 27/03/2022

Obrigado, bruno por responder, consegui uma solução diferente precisava detectar se ele não tivesse caindo e, estivesse movimentando no chão.