Salvar tempo restante ^o^ -
[THs]ShadoW - 09.06.2013
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.
Re: Salvar tempo restante ^o^ -
[THs]ShadoW - 12.06.2013
UP .-. Alguйm poderia me ajudar ? Sу me guiar, pois estou desorientado, deem-me uma dica e basta, me viro u.u' Muito grato !
Re: Salvar tempo restante ^o^ -
BielCOP - 12.06.2013
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.
Re: Salvar tempo restante ^o^ -
[THs]ShadoW - 12.06.2013
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 !
Re: Salvar tempo restante ^o^ -
BielCOP - 13.06.2013
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;
Re: Salvar tempo restante ^o^ -
[THs]ShadoW - 13.06.2013
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