Portal SAMP
[Ajuda] Anti Cheat Weapons.. alguem pode me ajudar?? - 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] Anti Cheat Weapons.. alguem pode me ajudar?? (/showthread.php?tid=380)



Anti Cheat Weapons.. alguem pode me ajudar?? - Gustavo P - 24/11/2020

Eu fiz um aqui, porem está kickando a galera que não usa, é mais quando a munição acaba/joga arma no chão, porem eu ja estou resetando as variaveis, sera que é pq o meu timer é de 1 segundos e está rapido de mais? (tem bastante coisa nele até) ou sera que estou fazendo errado? alguem pode mandar um? :| 

Vou mandar quando o player atira, que acredito que seja aqui o problema

[font=Consolas, "Courier New", monospace]public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ )
{
    new slot;

    slot = CheckSlotWeapon(weaponid);
    WeaponData[playerid][slot][Ammo]--;

    if(WeaponData[playerid][slot][Ammo] <= 0)
    {
        WeaponData[playerid][slot][WeaponID] = 0;
        WeaponData[playerid][slot][Ammo] = 0;
    }
}[/font]


[font=Consolas, "Courier New", monospace]stock CheckSlotWeapon(arma)
{
    new slot;

    switch(arma)
    {
        case 1: slot = 0;
        case 2..9: slot = 1;
        case 22..24: slot = 2;
        case 25..27: slot = 3;
        case 28,29,32: slot = 4;
        case 30,31: slot = 5;
        case 33,34: slot = 6;
        case 35..38: slot = 7;
        case 16..18,39: slot = 8;
        case 41..43: slot = 9;
        case 10..15: slot = 10;
        case 44..46: slot = 11;
        case 40: slot = 12;
    }
    return slot;
}[/font]



//No timer, sera q é aqui o problema? fiquei meio confuso na hora de fazer
[font=Consolas, "Courier New", monospace][font=Consolas, "Courier New", monospace]if(GetPlayerWeapon(playerid) != 0 && PlayerInfo[playerid][pArena] == false)
        {
            for(new i = 0; i < MAX_WEAPONS; i++)
            {
                if(GetPlayerWeapon(playerid) == WeaponData[playerid][i][WeaponID])
                {
                    achou[playerid] = true;
                    break;
                }
            }
        }
        else
            achou[playerid] = true;

        if(achou[playerid] == false && GetPlayerWeapon(playerid) != 0 && DeleyCheat[playerid] == false)
            return OnPlayerHacking(playerid, PLAYER_WEAPON_HACK);[/font]


[/font]



RE: Anti Cheat Weapons.. alguem pode me ajudar?? - xbruno1000x - 24/11/2020

Se você quer um Anti-Weapon Hack, não entendi pra que tantas coisas... basta usar um timer fazendo check com GetPlayerWeapon.
Exemplo:
Código:
    if(!PlayerInfo[playerid][pArena]) //confere se o player está na arena
    {
        switch(GetPlayerWeapon(playerid))
        {
            case 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 8, 9, 16, 26, 27, 35, 36, 37, 38, 39, 40, 42, 44, 45, 18: //id das armas aqui.
            {
                if(!Player[playerid][pAdmin]) //adicione cargos com exceção ao weapon hack aqui
                {
                    Kick(playerid);
                }
            }
        }
    }



RE: Anti Cheat Weapons.. alguem pode me ajudar?? - Gustavo P - 25/11/2020

(24/11/2020 23:57)xbruno1000x Escreveu: Se você quer um Anti-Weapon Hack, não entendi pra que tantas coisas... basta usar um timer fazendo check com GetPlayerWeapon.
Exemplo:
Código:
    if(!PlayerInfo[playerid][pArena]) //confere se o player está na arena
    {
        switch(GetPlayerWeapon(playerid))
        {
            case 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 8, 9, 16, 26, 27, 35, 36, 37, 38, 39, 40, 42, 44, 45, 18: //id das armas aqui.
            {
                if(!Player[playerid][pAdmin]) //adicione cargos com exceção ao weapon hack aqui
                {
                    Kick(playerid);
                }
            }
        }
    }

Entendi, mas desse jeito ai não serve, pq não quero cargos com exceção e normalmente se faz, se o cara não é de org kick, se nao é adm kick, pq eles tbm podem usar, e eu pretendo colocar um anti cheat de munição, então tinha que ser por variavel mesmo.


RE: Anti Cheat Weapons.. alguem pode me ajudar?? - xbruno1000x - 25/11/2020

(25/11/2020 20:28)Gustavo P Escreveu:
(24/11/2020 23:57)xbruno1000x Escreveu: Se você quer um Anti-Weapon Hack, não entendi pra que tantas coisas... basta usar um timer fazendo check com GetPlayerWeapon.
Exemplo:
Código:
    if(!PlayerInfo[playerid][pArena]) //confere se o player está na arena
    {
        switch(GetPlayerWeapon(playerid))
        {
            case 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 8, 9, 16, 26, 27, 35, 36, 37, 38, 39, 40, 42, 44, 45, 18: //id das armas aqui.
            {
                Kick(playerid);
            }
        }
    }

Entendi, mas desse jeito ai não serve, pq não quero cargos com exceção e normalmente se faz, se o cara não é de org kick, se nao é adm kick, pq eles tbm podem usar, e eu pretendo colocar um anti cheat de munição, então tinha que ser por variavel mesmo.

Basta remover a parte do código que adiciona uma exceção... você pode usar GetPlayerAmmo para verificar munição.


RE: Anti Cheat Weapons.. alguem pode me ajudar?? - Gustavo P - 26/11/2020

(25/11/2020 22:46)xbruno1000x Escreveu:
(25/11/2020 20:28)Gustavo P Escreveu:
(24/11/2020 23:57)xbruno1000x Escreveu: Se você quer um Anti-Weapon Hack, não entendi pra que tantas coisas... basta usar um timer fazendo check com GetPlayerWeapon.
Exemplo:
Código:
    if(!PlayerInfo[playerid][pArena]) //confere se o player está na arena
    {
        switch(GetPlayerWeapon(playerid))
        {
            case 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 8, 9, 16, 26, 27, 35, 36, 37, 38, 39, 40, 42, 44, 45, 18: //id das armas aqui.
            {
                Kick(playerid);
            }
        }
    }

Entendi, mas desse jeito ai não serve, pq não quero cargos com exceção e normalmente se faz, se o cara não é de org kick, se nao é adm kick, pq eles tbm podem usar, e eu pretendo colocar um anti cheat de munição, então tinha que ser por variavel mesmo.

Basta remover a parte do código que adiciona uma exceção... você pode usar GetPlayerAmmo para verificar munição.
Siim, mas no meu caso nao teria como checar so pelo id, eu fiz com um loop, e com variavel, mas por algum motivo, kika pessoas inocentes, coloquei deley de 1 segundos para testa