Portal SAMP
[Pedido] alguem teria um anti explodir carros - 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: [Pedido] alguem teria um anti explodir carros (/showthread.php?tid=3045)



alguem teria um anti explodir carros - DM110 - 02/12/2022

tem xiter explodindo carros e matando players teria alguma forma de detectar ou um anti xit simples pra isso ??


RE: alguem teria um anti explodir carros - zBreno - 03/12/2022

https://github.com/NexiusTailer/Nex-AC


RE: alguem teria um anti explodir carros - Carlos Victor - 03/12/2022

Eu fiz um com o que eu sei do cheater, a explicação está no código abaixo.

Não recomendo que pune o jogador, pode acontecer de ter falso-positivo, em qualquer anti-cheater é recomendável que você deixe-o numa lista de suspeitos.

OBS: Não testei com o cheater em si, portanto criei um comando que replica o que o cheater faz nos veículos e funcionou.
Código:
/*

        Como funciona o cheater?
        - O cheater pega a posição do veículo mais próximo(ou um especificado), em questão de millisegundos coloca o jogador nesse veículo, seta a vida do veículo
        e retorna o jogador para a posição antes de setar ele no veículo, isso tudo em um intervalo de tempo muito baixo, menor que 1 segundos.


        Então, é necessário que um timer rápido e eficiente seja ativo. (Em até 1s funciona, testei.)


        Nessa base, eu manipulo apenas variáveis, eu recomendo que não execute punições administrativas diretamente, e que retorne mensagens de suspeitos, qualquer anti-cheater
        pode retornar falos-positivo e jogadores podem se prejudicar sendo inocentes.        
*/

#include <a_samp>

new
    oldVehicleOwner[MAX_VEHICLES],
    Float:vehicleHealth[MAX_VEHICLES];

main(){}

public OnGameModeInit()
{    
    SetTimer("OnVehicleUpdate", 1000, true);
    return 1;
}

forward OnVehicleUpdate();
public OnVehicleUpdate()
{
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
        if(IsValidVehicle(i))
        {
            static
                Float:vehHealth;

            GetVehicleHealth(i, vehHealth);

            if(vehHealth <= 0 && vehHealth < vehicleHealth[i])
            {
                Kick(oldVehicleOwner[i]); // Não faça isso, apenas demonstrei. Pode acontecer falso-positivo
                SetVehicleHealth(i, vehicleHealth[i]);
            }

            GetVehicleHealth(i, vehicleHealth[i]);
        }
    }
    return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(IsValidVehicle(vehicleid))
    {
        oldVehicleOwner[vehicleid] = playerid;
    }
    return 1;
}



RE: alguem teria um anti explodir carros - Rcon2014 - 08/12/2022

Desculpa irmão, coloquei seu código e me dá esse erro, o que pode ser?

pwn(48240) : error 017: undefined symbol "IsValidVehicle"

pwn(48261) : error 017: undefined symbol "IsValidVehicle"


RE: alguem teria um anti explodir carros - White_Blue - 08/12/2022

(08/12/2022 13:02)Rcon2014 Escreveu: Desculpa irmão, coloquei seu código e me dá esse erro, o que pode ser?

pwn(48240) : error 017: undefined symbol "IsValidVehicle"

pwn(48261) : error 017: undefined symbol "IsValidVehicle"

Código PHP:
#if !defined IsValidVehicle
    native IsValidVehicle(vehicleid);
#endif 

Coloque isto no topo de seu gamemoode.