[AJUDA]Sistema de Preso Otimizado
#1

Olб, tehno um sistema de preso que vocк prender o player e bota /presos aparece os players que estгo presos e o tempo restante, mais sу que se o player Morre ou Sai e Entra denovo ele ta fora da Cadeia, gostaria de tirar mudar isto para se ele morrer ou sair do server e entrar denovo ele volte pra cadeia e termine o tempo restante que ainda lhe falta.

Meu sistema й este ;d

Forward's
pawn Код:
forward DiminSecondsJailed(playerid);
           forward Unjail(giveplayerid, cmdtext[]);
New
pawn Код:
new SecondsJailed[MAX_PLAYERS];
Comando
pawn Код:
if(strcmp(cmd, "/prender", true) == 0)
        {
                new tmpp[256];
                new playername;
                tmp = strtok(cmdtext, idx);
                tmpp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                        SendClientMessage(playerid, COLOR_GREEN, "Uso correto: /prender [id do player] [segundos");
                        return 1;
                }
                giveplayerid = strval(tmp);
                GetPlayerName(playerid, sendername, sizeof(sendername));
                GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                new Second = strval(tmpp);
                if(logado[playerid] == 1)
                {
                if(PlayerInfo[playerid][BOPE] >= 2 || PlayerInfo[playerid][EX] >= 2 || PlayerInfo[playerid][PMRJ] >= 2)
                    {
                                SecondsJailed[playerid] = Second;
                                SetTimerEx("DiminSecondsJailed", 1000, false, "i", playerid);
                                format(string, sizeof(string), "O Oficial %s prendeu o jogador %s por %d segundo(s)", sendername,giveplayer,Second);
                                SendClientMessageToAll(COLOR_YELLOW, string);
                                SendClientMessage(playerid, COLOR_YELLOW, string);
                                format(string, sizeof(string), "~g~Preso por: ~n~~r~%s.", sendername);
                                GameTextForPlayer(giveplayerid, string, 1000, 1);
                                SetPlayerInterior(giveplayerid, 6);
                                SetPlayerPos(giveplayerid, 264.6288,77.5742,1001.0391);
                                SetPlayerArmour(giveplayerid, 0);
                                TogglePlayerControllable(giveplayerid, 1);
                                ResetPlayerWeapons(giveplayerid);
                                SetTimerEx("Unjail", Second*1000, 0, "i", giveplayerid);
                                format(file,sizeof(file),"%s.ini",playername);
                                dini_Create(file);
                                dini_IntSet(file,"Preso", 1);
                                PlayerInfo[giveplayerid][Preso] = dini_Int(file,"Preso");
                        }
                        else
                        {
                            SendClientMessage(playerid, COLOR_CYAN, "Vocк nгo й um OFICIAL!");
                        }
                }
                else
                {
                    SendClientMessage(playerid, COLOR_CYAN, "Vocк tem que estar logado para usar este comando!");
                }
                return 1;
        }
pawn Код:
if(!strcmp(cmdtext, "/presos", true))
        {
            SendClientMessage(playerid, 0x00FF00FF, "|_____[PRESOS ONLINE]_____|");
                new count=0;
                new tmpp[256];
                tmp = strtok(cmdtext, idx);
                tmpp = strtok(cmdtext, idx);
                for(new i=0; i<MAX_PLAYERS; i++)
                {
                if(IsPlayerConnected(i))
                {
                    if(logado[i] == 1)
                    {
                                        if(PlayerInfo[i][Preso] >= 1)
                                        {
                                                new str[256];
                                                new pname[24];
                                                GetPlayerName(i, pname, 24);
                                                format(str, 256, "PRESO - %s - [Tempo Restante: %d Segundos] ", pname, SecondsJailed);
                                                SendClientMessage(playerid, 0xC0C0C0FF, str);
                                                count++;
                                        }
                                }
                        }
                }
                if(count == 0)
                {
                SendClientMessage(playerid, COLOR_CYAN, "Nenhum Preso Online !");
                }
                return 1;
        }

Public Unjail
pawn Код:
public Unjail(giveplayerid, cmdtext[])
{
                new idx;
                new cmd[256];
                cmd = strtok(cmdtext, idx);
                new tmpp[256];
                new tmp[256];
                tmp = strtok(cmdtext, idx);
                tmpp = strtok(cmdtext, idx);
                new giveplayer[MAX_PLAYER_NAME], playername, playerid;
                GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                SetPlayerInterior(giveplayerid,0);
                SetPlayerPos(giveplayerid,1546.2803,-1675.6632,13.5620);
                TogglePlayerControllable(giveplayerid,1);
                GameTextForPlayer(giveplayerid, "Solto da Cadeia", 1000,1);
                format(file,sizeof(file),"%s.ini",playername);
                dini_Create(file);
                dini_IntSet(file,"Preso", 0);
                PlayerInfo[giveplayerid][Preso] = dini_Int(file,"Preso");
                SecondsJailed[playerid] --;
}
Reply
#2

Olб Nake01,

aqui estб, veja se funciona como deseja:

pawn Код:
public OnPlayerSpawn(playerid)
{
    static _name[24];, _file[29];
    GetPlayerName(playerid, _name, sizeof(_name));
    format(_file, sizeof(_file), "%s.ini", _name);
    if(dini_Int(_file, "Preso") == 1)
    {
        SetPlayerInterior(giveplayerid, 6);
        SetPlayerPos(giveplayerid, 264.6288,77.5742,1001.0391);
        SetPlayerArmour(giveplayerid, 0);
        TogglePlayerControllable(giveplayerid, 1);
        ResetPlayerWeapons(giveplayerid);
        SetTimerEx("Unjail", Second*1000, 0, "i", giveplayerid);
        SendClientMessage(playerid, 0xFF0000AA, "Vocк continua preso...");
    }
    return 1;
}

Atenciosamente,
Falcon.
Reply
#3

Funciono ;d mais quando o player disconecta ele nгo volta pra cadeia... '-'
Reply
#4

Entгo nгo funcionou =x

Pelo oque eu entendi assim que o player vai preso, й setado na conta dele:

pawn Код:
dini_IntSet(file,"Preso", 1);
Entгo no meu cуdigo ele verifica se ele estб preso...caso esteja ele volta para a cadeia..
Veja se realmente estб salvando isto na conta do player.


Atenciosamente,
Falcon.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)