[ajuda] /assaltar aceitando flood
#1

Bom.. O sistema funciona, sу que ele esta aceitando flood. gostaria de adicionar um tempo para evitar o flood...


PHP код:
new Assaltou[MAX_PLAYERS];
    if(!
strcmp(cmd"/assaltar"true))
    {
        
        
Assaltou[playerid] = gettime() + 55;
        
tmp strtok(cmdtextidx);
        if(!
strlen(tmp)) return SendClientMessage(playerid, -1"USO: /assaltar [ID]");
        new 
id strval(tmp);
        if(
Assaltou[playerid] < gettime()) return SendClientMessage(playerid, -1,  "Vocк usou este comando recentemente. Aguarde algum tempo para usб-lo novamente.");
        new 
Float:Pos[3];
        
GetPlayerPos(idPos[0], Pos[1], Pos[2]);
        if(
IsPlayerInRangeOfPoint(playerid5.0Pos[0], Pos[1], Pos[2]))
        {
            new 
money GetPlayerMoneyEx(id);
            
GivePlayerMoneyEx(id, -money 10);
            
GivePlayerMoneyEx(playeridmoney/10);
            
WantedPoints[playerid] = 10;
            
SetPlayerCriminal(playerid,255"Artigo 157, Roubo a mгo armada!");
            
SendClientMessage(playerid0xFFFF00FF"Vocк assaltou alguem ! Agora corrra !");
            
SendClientMessage(id0xFFFF00FF"Vocк foi assaltado !");
        }
        else return 
SendClientMessage(playerid0xFF0000FF"Vocк estб longe do jogador.");
        return 
1;
    } 
Reply
#2

mude estб linha

pawn Код:
if(Assaltou[playerid] > gettime())
Reply
#3

no topo:
PHP код:
new bool:liberar[MAX_PLAYERS
PHP код:
if(!strcmp(cmd"/assaltar"true))
    {
        if (
liberar[playerid] == true) return SendClientMessage(playerid,-1,"Aguarde 20 segundos para reutilizar o comando");
        
tmp strtok(cmdtextidx);
        if(!
strlen(tmp)) return SendClientMessage(playerid, -1"USO: /assaltar [ID]");
        new 
id strval(tmp);
        new 
Float:Pos[3];
        
GetPlayerPos(idPos[0], Pos[1], Pos[2]);
        if(
IsPlayerInRangeOfPoint(playerid5.0Pos[0], Pos[1], Pos[2])")"
        
{
            new 
money GetPlayerMoney(id);
            
GivePlayerMoney(id, -money/10);
            
GivePlayerMoney(playeridmoney/10);
            
SendClientMessage(playerid0xFFFF00FF"Vocк assaltou alguem ! Agora corrra !");
            
SendClientMessage(id0xFFFF00FF"Vocк foi assaltado !");
            
SetTimerEx("tempo",20000/*tempo que desejar , aqui esta 20seg*/,false,"i",playerid);
            
liberar[playerid] = true;
        }
        else return 
SendClientMessage(playerid0xFF0000FF"Vocк estб longe do jogador.");
        return 
1;
    } 
No Final do GAMEMODE:

PHP код:
foward tempo(playerid);
public 
tempo(playeridliberar[playerid] = false
Reply
#4

Quote:
Originally Posted by Dark.Angel
Посмотреть сообщение
no topo:
PHP код:
new bool:liberar[MAX_PLAYERS
PHP код:
if(!strcmp(cmd"/assaltar"true))
    {
        if (
liberar[playerid] == true) return SendClientMessage(playerid,-1,"Aguarde 20 segundos para reutilizar o comando");
        
tmp strtok(cmdtextidx);
        if(!
strlen(tmp)) return SendClientMessage(playerid, -1"USO: /assaltar [ID]");
        new 
id strval(tmp);
        new 
Float:Pos[3];
        
GetPlayerPos(idPos[0], Pos[1], Pos[2]);
        if(
IsPlayerInRangeOfPoint(playerid5.0Pos[0], Pos[1], Pos[2])")"
        
{
            new 
money GetPlayerMoney(id);
            
GivePlayerMoney(id, -money/10);
            
GivePlayerMoney(playeridmoney/10);
            
SendClientMessage(playerid0xFFFF00FF"Vocк assaltou alguem ! Agora corrra !");
            
SendClientMessage(id0xFFFF00FF"Vocк foi assaltado !");
            
SetTimerEx("tempo",20000/*tempo que desejar , aqui esta 20seg*/,false,"i",playerid);
            
liberar[playerid] = true;
        }
        else return 
SendClientMessage(playerid0xFF0000FF"Vocк estб longe do jogador.");
        return 
1;
    } 
No Final do GAMEMODE:

PHP код:
foward tempo(playerid);
public 
tempo(playeridliberar[playerid] = false
nгo tem necessнdade alguma de usar um timer nisso.
Reply
#5

Pra que usar timer? Sу vai dar lag no servidor. Use ticks que sгo bem mais rapidos.
Reply
#6

Quote:
Originally Posted by [S]trong
Посмотреть сообщение
mude estб linha

pawn Код:
if(Assaltou[playerid] > gettime())
Ao modificar a linha acontece outro erro:

Dou o comando /assaltar id e ele me retorna:
/assaltar id

como se eu estivesse inserindo um numero incorreto...
estou tenstando aqui na maquina mesm entre dois PCs o player 2 que no caso tem a ID 1.

/assaltar 1

retorno:

uso: /assaltar id
Reply
#7

pawn Код:
if(!strcmp(cmd, "/assaltar", true))
    {
        Assaltou[playerid] = gettime() + 55;
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, -1, "USO: /assaltar [playername/id]");
        new id = ReturnUser(tmp);
        if(Assaltou[playerid] > gettime()) return SendClientMessage(playerid, -1,  "Vocк usou este comando recentemente. Aguarde algum tempo para usб-lo novamente.");
        new Float:Pos[3];
        GetPlayerPos(id, Pos[0], Pos[1], Pos[2]);
        if(!IsPlayerInRangeOfPoint(playerid,5.0,Pos[0],Pos[1],Pos[2]))
            return SendClientMessage(playerid,-1,"(erro) chegue mais perto.");
        else
        {
            new money = GetPlayerMoneyEx(id);
            GivePlayerMoneyEx(id, -money / 10);
            GivePlayerMoneyEx(playerid, money/10);
            WantedPoints[playerid] = 10;
            SetPlayerCriminal(playerid,255, "Artigo 157, Roubo a mгo armada!");
            SendClientMessage(playerid, 0xFFFF00FF, "Vocк assaltou alguem ! Agora corrra !");
            SendClientMessage(id, 0xFFFF00FF, "Vocк foi assaltado !");
        }
        return 1;
    }
Reply
#8

Quote:
Originally Posted by [S]trong
Посмотреть сообщение
pawn Код:
if(!strcmp(cmd, "/assaltar", true))
    {
        Assaltou[playerid] = gettime() + 55;
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, -1, "USO: /assaltar [playername/id]");
        new id = ReturnUser(tmp);
        if(Assaltou[playerid] > gettime()) return SendClientMessage(playerid, -1,  "Vocк usou este comando recentemente. Aguarde algum tempo para usб-lo novamente.");
        new Float:Pos[3];
        GetPlayerPos(id, Pos[0], Pos[1], Pos[2]);
        if(!IsPlayerInRangeOfPoint(playerid,5.0,Pos[0],Pos[1],Pos[2]))
            return SendClientMessage(playerid,-1,"(erro) chegue mais perto.");
        else
        {
            new money = GetPlayerMoneyEx(id);
            GivePlayerMoneyEx(id, -money / 10);
            GivePlayerMoneyEx(playerid, money/10);
            WantedPoints[playerid] = 10;
            SetPlayerCriminal(playerid,255, "Artigo 157, Roubo a mгo armada!");
            SendClientMessage(playerid, 0xFFFF00FF, "Vocк assaltou alguem ! Agora corrra !");
            SendClientMessage(id, 0xFFFF00FF, "Vocк foi assaltado !");
        }
        return 1;
    }
Agora ele da a mensagem
PHP код:
"Vocк usou este comando recentemente. Aguarde algum tempo para usб-lo novamente." 
mesmo sendo a primeira vez que eu digito...
Reply
#9

Quote:
Originally Posted by candango
Посмотреть сообщение
Agora ele da a mensagem
PHP код:
"Vocк usou este comando recentemente. Aguarde algum tempo para usб-lo novamente." 
mesmo sendo a primeira vez que eu digito...
Arrumei pra vocк, isto deve resolver o seu problema .


Sу para informar, o nъmero 55 que estб nesta linha:


pawn Код:
Assaltou[playerid] = gettime() + 55;

Й o nъmero de segundos que devem se passar (apуs a vez anterior) para poder usar o comando de novo .


Aqui estб :


pawn Код:
if(!strcmp(cmd, "/assaltar", true))
    {
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, -1, "USO: /assaltar [playername/id]");
        new id = ReturnUser(tmp);
        if(Assaltou[playerid] > gettime()) return SendClientMessage(playerid, -1,  "Vocк usou este comando recentemente. Aguarde algum tempo para usб-lo novamente.");
        new Float:Pos[3];
        Assaltou[playerid] = gettime() + 55;
        GetPlayerPos(id, Pos[0], Pos[1], Pos[2]);
        if(!IsPlayerInRangeOfPoint(playerid,5.0,Pos[0],Pos[1],Pos[2])) return SendClientMessage(playerid,-1,"(erro) chegue mais perto.");
        new money = GetPlayerMoneyEx(id);
        GivePlayerMoneyEx(id, -money / 10);
        GivePlayerMoneyEx(playerid, money/10);
        WantedPoints[playerid] = 10;
        SetPlayerCriminal(playerid,255, "Artigo 157, Roubo a mгo armada!");
        SendClientMessage(playerid, 0xFFFF00FF, "Vocк assaltou alguem ! Agora corrra !");
        SendClientMessage(id, 0xFFFF00FF, "Vocк foi assaltado !");
        return 1;
    }

Espero ter ajudado .
Reply
#10

Ф espera й? modestia sua... ajudou sim e bastante, agradeзo a paciencia de todos, em especial para o rjjj que matou a charada.

STAR for ALL
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)