[Off] Lуgica ?
#1

Se eu tenho um servidor, em que nгo existe nenhum comando que dб ao player, uma arma especifica, e que essa arma, й proibida no servidor, como eu posso fazer para que um player ( Cheater ) nгo Consiga usa-la ?

Pela minha lуgica, eu faria um Timer de 1 seg, Para verificar se o player ta com tal arma :

pawn Код:
OnPlayerSpawn :

SetTimer("Arma", 1000, true);
Perceba, que o Timer, estб sendo repetido a cada 1 segundo, sem parar ( true ).
e na Public :

pawn Код:
forward Arma(playerid);
public Arma(playerid)
{
    if (GetPlayerWeapon(playerid) == 38 || GetPlayerWeapon(playerid) == 39)
    {
        SendClientMessage(playerid, Cinza, "Vocк Foi Kikado Automбticamente Por Estar Usando uma Arma Proibida.");
        Kick(playerid);
    }
    return 1;
}
ifGetPlayerWeapon estaria verificando a arma que o player estб na mгo, a cada 1 segundo, de acordo com o timer.

caso ele estivesse, ele seria kikado.


Essa lуgica ta certa ?
Reply
#2

Lуgica? Estar, estб. Mas isso pode ser trabalhado mais adiante.
Reply
#3

sim mais em timer em timer resulta em lag.


edit№

mais vale lembrar exemplo se vocк usa o comando /minigun

ae se for desse modo ae da kick ae creio eu que uma variavel bool resolve.
Reply
#4

Lag Como Q.I ? do servidor ?
Reply
#5

Quote:
Originally Posted by Lucas-Fc
Посмотреть сообщение
Lag Como Q.I ? do servidor ?
sim sу esse timer ae nгo dб mais se for muitos timers sem parar de contar eu acho que da lag.

nгo posso afirmar nada mais eu acho que dб.
Reply
#6

Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_FIRE) {
        if(GetPlayerWeapon(player) == ID) {
            Ban(playerid);
        }
    }
    return 1;
}
Reply
#7

pawn Код:
#include <a_samp>

new AntArma[MAX_PLAYERS];


public OnFilterScriptInit(){
    SetTimer("Arma", 1000, true); //aqui chamando a public Arma em 1 em 1 segundo sem parar
    return 1;
}

public OnFilterScriptExit(){
    return 1;
}
public OnPlayerSpawn(playerid){
    AntArma[playerid] = true;
    return true;
}
public OnPlayerConnect(playerid){
    AntArma[playerid] = true;
    return true;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/teste", cmdtext, true) == 0)
    {
        AntArma[playerid] = 0; //aqui estarб em modo false evitanto que da kick se ele estiver em area exemplo /minigun
        GivePlayerWeapon(playerid,38,99999); //dando a arma para teste
        return true;
    }
    if (strcmp("/teste1", cmdtext, true) == 0)
    {
        AntArma[playerid] = 1; //aqui ele entrarб em modo true e no caso ele estarб com a arma minigun quando recebeu ao usar o comando /teste
        return true;
    }
    return false;
}

forward Arma(playerid);
public Arma(playerid)
{
    if(AntArma[playerid] == 1) //verifica em 1 em 1 segundo se ele esta em modo true se tiver
    { //se caso estiver em modo true e com as armas abaixo leva kick
        if (GetPlayerWeapon(playerid) == 38 || GetPlayerWeapon(playerid) == 39)
        {
            SendClientMessage(playerid, Cinza, "Vocк Foi Kikado Automбticamente Por Estar Usando uma Arma Proibida.");
            Kick(playerid);
        }
    }
    return 1;
}

o quк eu disse exemplo se quiser usar a minigun em certo local mais em outros nгo saca.

para ficar baum mesmo sem riscos de lag e melhor usar killtimer mais ae й sу pra tu vк o exemplo.
Reply
#8

Quote:
Originally Posted by riad12
Посмотреть сообщение
Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_FIRE) {
        if(GetPlayerWeapon(player) == ID) {
            Ban(playerid);
        }
    }
    return 1;
}
Realmente, й o melhor cуdigo.
Simples e ъtil.
Parabйns pela inteligкncia.
Reply
#9

Quote:
Originally Posted by Q.I
Посмотреть сообщение
pawn Код:
#include <a_samp>

new AntArma[MAX_PLAYERS];


public OnFilterScriptInit(){
    SetTimer("Arma", 1000, true); //aqui chamando a public Arma em 1 em 1 segundo sem parar
    return 1;
}

public OnFilterScriptExit(){
    return 1;
}
public OnPlayerSpawn(playerid){
    AntArma[playerid] = true;
    return true;
}
public OnPlayerConnect(playerid){
    AntArma[playerid] = true;
    return true;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/teste", cmdtext, true) == 0)
    {
        AntArma[playerid] = 0; //aqui estarб em modo false evitanto que da kick se ele estiver em area exemplo /minigun
        GivePlayerWeapon(playerid,38,99999); //dando a arma para teste
        return true;
    }
    if (strcmp("/teste1", cmdtext, true) == 0)
    {
        AntArma[playerid] = 1; //aqui ele entrarб em modo true e no caso ele estarб com a arma minigun quando recebeu ao usar o comando /teste
        return true;
    }
    return false;
}

forward Arma(playerid);
public Arma(playerid)
{
    if(AntArma[playerid] == 1) //verifica em 1 em 1 segundo se ele esta em modo true se tiver
    { //se caso estiver em modo true e com as armas abaixo leva kick
        if (GetPlayerWeapon(playerid) == 38 || GetPlayerWeapon(playerid) == 39)
        {
            SendClientMessage(playerid, Cinza, "Vocк Foi Kikado Automбticamente Por Estar Usando uma Arma Proibida.");
            Kick(playerid);
        }
    }
    return 1;
}

o quк eu disse exemplo se quiser usar a minigun em certo local mais em outros nгo saca.

para ficar baum mesmo sem riscos de lag e melhor usar killtimer mais ae й sу pra tu vк o exemplo.
Bom, Vejamos... Cуdigo ERRADO. Tal cуdigo apenas irar funcionar para o "ID" 0. Devido ao uso do "SetTimer". Outro grande erro, й deixa-lo operante atй que o servidor feche.

Enfim, a maneira mais eficiente foi postado pelo riad12.
Reply
#10

Quote:
Originally Posted by Lucas-Fc
Посмотреть сообщение
Realmente, й o melhor cуdigo.
Simples e ъtil.
Parabйns pela inteligкncia.
Valeu cara
Espero ter ajudado, abraзos!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)