[Ajuda] Salvar tempo restante ^o^
#1

Bom galera, nгo gosto muito de pedir ajuda, mas os Scripts que encontrei relacionados a isto nгo possuem esta funзгo para eu estudar e aplica no meu GM..

Seguinte... Eu estou a criar um RPG, estou indo bem atй, porйm, estou com um probleminha .-. Preciso fazer com que quando o player deslogar, se ele estiver na cadeia de Administrador ou no Hospital salve quanto tempo falta, ou seja, supondo que eu fui preso na Cadeia de Administradores por 9 minutos, passaram-se 3, gostaria que quando o Player voltasse sу tivesse de pagar estes 6 minutos que faltavam... Enfim, segue o comando /prender..

Код:
CMD:prender(playerid,params[])
{
	if(PlayerInfo[playerid][pLevelAdmin] < 1)    return SendClientMessage(playerid,CorErro,"Vocк nгo tem permissгo para isso!");
	if(PlayerInfo[playerid][pJogando] == 1)		return SendClientMessage(playerid,CorErro,"Vocк nгo estб trabalhando!");
	new id,reason[100];
	if (!IsPlayerConnected(id))		return SendClientMessage(playerid,CorErroNeutro,"O jogador nгo estб conectado");
	if(sscanf(params,"dds",id,time,reason)) 	return	SendClientMessage(playerid,CorErroNeutro,"USE: /prender [ID] [TEMPO] [MOTIVO]");
	if(Jailed[id] == 0)
	{
		format(String, sizeof(String), "O Administrado %s prendeu %s por %d minutos. Motivo: %s", GetPlayerNameEx(playerid), GetPlayerNameEx(id), time, reason);
		SendClientMessageToAll(VermelhoEscuro, String);
		SetPlayerInterior(id, 0);
		SetPlayerVirtualWorld(id, 0);
		SetPlayerFacingAngle(id, 360.0);
		SetPlayerPos(id, 2746.3000500,-2452.1001000,526.7999900);
		SetPlayerHealth(id, 99999.0);
		ResetPlayerWeapons(id);
		JailTimer[id] = SetTimerEx("Unjail",time*60000, false, "i", id);
	}
	return 1;
}
Eu criei um SetTimerEx .. Aqui ele:

Код:
forward Unjail(playerid);
public Unjail(playerid)
{
	SendClientMessage(playerid, CorSucesso, "Vocк pagou sua Dнvida. Vocк foi liberado.");
        format(String, sizeof(String), "Seja um Player~g~ melhor !");
        GameTextForPlayer(playerid, String, 3000, 1);
   	SetPlayerInterior(playerid, 0);
	SetPlayerVirtualWorld(playerid, 0);
	SpawnPlayer(playerid);
	SetPlayerHealth(playerid, 100);
        return 1;
}
Tenho tudo pronto, sу nгo sei como fazer para pegar o tempo restante para o SetTimerEx terminar...

Enfim, se alguйm puder me ajudar... Ficarei muito grato !

Abraзo.

Att.
Reply
#2

UP .-. Alguйm poderia me ajudar ? Sу me guiar, pois estou desorientado, deem-me uma dica e basta, me viro u.u' Muito grato !
Reply
#3

Crie um timer quando o jogador Spawnar, salvando se ele estб na prisao ou nao, tambйm contando os minutos.

Caso precise de ajuda com o mesmo, diga abaixo.
Reply
#4

Nгo entendi muito bem Biel, vou criar um timer quando ele Spawnar para saber se ele estб na prisгo ? Nгo sei se especifiquei bem, mas eu quero que, se ele foi preso por 15 minutos por exemplo, e ele der /q faltando ainda 8 minutos, salvar estes 8 minutos, para ele cumprir quando logar na prуxima vez.. Enfim, obrigado de qualquer forma !
Reply
#5

pawn Код:
// Topo do GM

new Preso[MAX_PLAYERS];
new TempoPreso[MAX_PLAYERS];
new Nome[MAX_PLAYER_NAME];

new Fala[128];

stock PlayerName(playerid)
{
    GetPlayerName(playerid,Nome,sizeof(Nome));
    return Nome;
}

forward SairPrisao();

public SairPrisao()
{
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(Preso[i] == 1 && TempoPreso[i] >= 1)
            {
                TempoPreso[i]--;
            }
            else
            {
                Preso[i] = 0;
                TempoPreso[i] = 0;
               
                SetPlayerInterior(i,0);
                SetPlayerVirtualWorld(i,0);
               
                SpawnPlayer(i);
               
                SetPlayerHealth(i,100);
               
                format(Fala,sizeof(Fala),"Presos/%s.ini",PlayerName(i);
               
                DOF2_RemoveFile(Fala);
            }
        }
    }
}

// OnGameModeInit

SetTimer("SairPrisao",1000,1);

// OnPlayerDisconnect

if(Preso[playerid] == 1 && TempoPreso[playerid] >= 1)
{
    format(Fala,sizeof(Fala),"Presos/%s.ini",PlayerName(playerid));

    if(!DOF2_FileExists(Fala))
    {
        DOF2_CreateFile(Fala);
    }
    DOF2_SetInt(Fala,"Preso",Preso[playerid]);
    DOF2_SetInt(Fala,"TempoPreso",TempoPreso[playerid]);
}
Preso[playerid] = 0;
TempoPreso[playerid] = 0;

// OnPlayerConnect

format(Fala,sizeof(Fala),"Presos/%s.ini",PlayerName(playerid));

if(!DOF2_FileExists(Fala))
{
    Preso[playerid] = DOF2_GetInt(Fala,"Preso");
    TempoPreso[playerid] = DOF2_GetInt(Fala,"TempoPreso");
}

// OnPlayerSpawn

if(Preso[playerid] == 1 && TempoPreso[playerid] >= 1)
{
    // Funcoes da prisao
    return 1;
}

// Cmd prender

Preso[playerid] = 1;
TempoPreso[playerid] = time;
Reply
#6

Vou testar aqui Biel, muito obrigado de qualquer forma

@Edit.

Consegui, tive de fazer algumas alteraзхes, diminui um pouco o cуdigo e foi. Muito Obrigado Biel ! Nгo tinha pensado em fazer desta maneira !

Forte abraзo.

Att. ShadoW
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)