[AJUDA] /VoteKick
#1

Seguinte, o sistema estб tudo certinho, mas quando vota e o jogador vai kickado (Ou nгo), a votaзгo continua... eu queria que quando ele fosse kickado (Ou nгo), para fechar a votaзгo!

Sistema:

pawn Код:
#include <a_samp>

//*COLOURS*//
#define VERDE 0x21DD00FF
#define Vermelho 0xE60000FF
#define ADMIN_Vermelho 0xFB0000FF
#define AMARELO 0xFFFF00FF
#define laranja 0xF97804FF
#define LIGHTVermelho 0xFF8080FF
#define LightBlue 0x00C2ECFF
#define PURPLE 0xB360FDFF
#define PLAYER_COLOR 0xFFFFFFFF
#define AZUL 0x1229FAFF
#define lightgreen 0x38FF06FF
#define DARKPINK 0xE100E1FF
#define darkgreen 0x008040FF
#define ANuNCIO 0x00CACAFB
#define COLOR_SYSTEM 0xEFEFF7AA
#define NICESKY 0x99FFFFAA
#define GRAY 0xCECECEFF
#define BRANCO 0xFFFFFFAA
#define CYAN 0x00FFFFAA
#define VOTETIME 10000
#define STRING 255
new VoteKick;
new Votes;
new Voted[MAX_PLAYERS];
new PlayerCount;

forward VoteTimer(giveplayerid);

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" Vote Kick Iniciado com sucesso.           ");
    print("                                        ");
    print("--------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    Voted[playerid] = 0;
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    Voted[playerid] = 0;
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{

    new cmd[128];
    new tmp[128];
    new idx;
    new giveplayerid;
    new giveplayer[MAX_PLAYER_NAME];
    new sendername[MAX_PLAYER_NAME];
    new string[STRING];
    cmd = strtok(cmdtext,idx);

    if(strcmp(cmd, "/votekick", true) == 0)
    {
        for (new i = 0; i < GetMaxPlayers(); i++)
        {
            if(IsPlayerConnected(i))
            {
                #if defined ADMINSONLNE
                if(IsPlayerAdmin(i))
                {
                    SendClientMessage(playerid,Vermelho,"| ERRO | Tem administrador(es) conectado(s), e vocк nгo pode iniciar uma votaзгo. Cheater? /Reportar");
                                    return 1;
                }
                #endif
                PlayerCount++;
            }
        }
        if(PlayerCount <= 3)
        {
            SendClientMessage(playerid, Vermelho, "| ERRO | Deve ter mais de 3 players conectados para iniciar uma votaзгo!");
            return 1;
        }
        new reason[256];
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, laranja, "Uso: /votekick [ID/Nick] [Motivo]");
            return 1;
        }
        if(VoteKick == 1)
        {
            SendClientMessage(playerid, Vermelho, "| ERRO | Jб existe uma votaзгo em andamento.");
            return 1;
        }
        if(IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк nгo pode iniciar uma votaзгo para kickar um administrador!");
            return 1;
        }
        giveplayerid = ReturnUser(tmp);
        if(giveplayerid != INVALID_PLAYER_ID)
        {
            GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
            GetPlayerName(playerid, sendername, sizeof(sendername));
            new length = strlen(cmdtext);
            while ((idx < length) && (cmdtext[idx] <= ' '))
            {
                idx++;
            }
            new offset = idx;
            while ((idx < length) && ((idx - offset) < (sizeof(reason) - 1)))
            {
                reason[idx - offset] = cmdtext[idx];
                idx++;
            }
            reason[idx - offset] = EOS;
            if(!strlen(reason))
            {
                SendClientMessage(playerid, laranja, "Uso: /votekick [ID/Nick] [Motivo]");
                if( GetPVarInt( playerid, "Tempo" ) > GetTickCount() ) return SendClientMessage( playerid, 0xFF0000AA, "| ERRO | Vocк sу pode criar uma votaзгo novamente em 4 minutos..." );
                SetPVarInt( playerid, "Tempo", GetTickCount() + 240000 );
                return 1;
            }
            else
            {

                format(string, sizeof(string), "| VOTE - KICK | O %s iniciou uma votaзгo para kickar o jogador %s. (Motivo: %s) | %d segundos restantes...", Name(playerid), Name(giveplayerid), reason, VOTETIME / 1000);
                print(string);
                SendClientMessageToAll(0xFF00FFAA, string);
                SendClientMessageToAll(0xFF00FFAA, "| VOTE - KICK | Para votar no kick desse jogador, digite /VotarK");
                Votes = 1;
                SetTimerEx("VoteTimer", VOTETIME, 0, "i", giveplayerid);
                VoteKick = 1;
            }
        }
        else if(giveplayerid == INVALID_PLAYER_ID)
        {
            format(string, sizeof(string), "%d nгo estб conectado.", giveplayerid);
            SendClientMessage(playerid, Vermelho, string);
        }
        return 1;
    }

    if(strcmp(cmd, "/VotarK", true) == 0)
    {
        if(Voted[playerid] == 1)
        {
            SendClientMessage(playerid, Vermelho, "| ERRO | Vocк jб votou!");
        }
        else
        {
            Voted[playerid] = 1;
            Votes++;
            format(string, sizeof(string), "| VOTE - KICK | %s votou no kick do jogador %s.", Name(playerid), Name(giveplayerid));
            SendClientMessageToAll(0xFF00FFAA, string);
        }
        return 1;
    }
    return 0;
}

public VoteTimer(giveplayerid)
{
    new string[STRING];
    new TempPlayerCount = PlayerCount;
    TempPlayerCount /= 2;
    if(Votes > TempPlayerCount)
    {
        format(string, sizeof(string), "| VOTE - KICK | O jogador %s foi kickado por receber a maioria de votos!", Name(giveplayerid));
        SendClientMessageToAll(0xC0C0C0AA, string);
        SendClientMessage(giveplayerid, Vermelho, "| VOTE - KICK | Vocк foi kickado por receber a maioria de votos!");
        Kick(giveplayerid);
        VoteKick = 0;
    }
    else
    {
        format(string, sizeof(string), "| VOTE - KICK | O jogador %s nгo foi kickado por receber poucos votos!", Name(giveplayerid));
        SendClientMessageToAll(0xC0C0C0AA, string);
        SendClientMessage(giveplayerid, Vermelho, "| VOTE - KICK | Vocк nгo foi kickado por receber poucos votos!");
        VoteKick = 0;
    }
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
        Voted[i] = 0;
    }
    Votes = 0;
    VoteKick = 0;
    return 1;
}



stock Name(playerid)
{
    new plname[24];
    GetPlayerName(playerid, plname, sizeof(plname));
    return plname;
}
stock strtok(const string[], &index,seperator=' ')
{
    new length = strlen(string);
    new offset = index;
    new result[128];
    while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }

    result[index - offset] = EOS;
    if ((index < length) && (string[index] == seperator))
    {
        index++;
    }
    return result;
}
stock IsNumeric(const string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
    if (string[i] > '9' || string[i] < '0')
    return 0;
    return 1;
}

ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
    new pos = 0;
    while (text[pos] < 0x21)
    {
        if (text[pos] == 0) return INVALID_PLAYER_ID;
        pos++;
    }
    new userid = INVALID_PLAYER_ID;
    if (IsNumeric(text[pos]))
    {
        userid = strval(text[pos]);
        if (userid >=0 && userid < MAX_PLAYERS)
        {
            if(!IsPlayerConnected(userid))
                userid = INVALID_PLAYER_ID;
            else return userid;
        }
    }
    new len = strlen(text[pos]);
    new count = 0;
    new pname[MAX_PLAYER_NAME];
    for (new i = 0; i < GetMaxPlayers(); i++)
    {
        if (IsPlayerConnected(i))
        {
            GetPlayerName(i, pname, sizeof (pname));
            if (strcmp(pname, text[pos], true, len) == 0)
            {
                if (len == strlen(pname)) return i;
                else
                {
                    count++;
                    userid = i;
                }
            }
        }
    }
    if (count != 1)
    {
        if (playerid != INVALID_PLAYER_ID)
        {
            if (count) SendClientMessage(playerid, COLOR_SYSTEM, "| ERRO | Existem vбrios usuбrios, digite o nome do jogador completo.");
            else SendClientMessage(playerid, COLOR_SYSTEM, "* Nick invбlido.");
        }
        userid = INVALID_PLAYER_ID;
    }
    return userid;
}
Obrigado!
Reply
#2

Vocк fez esse FS?
Reply
#3

Quote:
Originally Posted by Viniborn
Посмотреть сообщение
Vocк fez esse FS?
Nгo.
Reply
#4

Hmm.
Achei grande demais pra uma coisa que й atй simples.
Reply
#5

Entгo, alguйm vai me ajudar? ._.
Reply
#6

Farei um sistema de votekick rapidinho
Reply
#7

Allanrokeiro# posso pegar esse FS?
Reply
#8

Quote:
Originally Posted by Mteck
Посмотреть сообщение
Allanrokeiro# posso pegar esse FS?
Sim, a vontade, e esse FS й pъblico, rs.
Reply
#9

obrigado

#edit@

o pawno ta parando de funcionar, coloquei no gm o votekick e ta parando de funcionar
Reply
#10

Tenta outras includes, ou jб pega a versгo do 0.3c.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)