19.08.2012, 19:47
(
Последний раз редактировалось FeelLikeASir_; 25.08.2012 в 03:50.
)
Resolvi criar esse sistema de dormir com progressbar, pois acho que ainda nгo existe ;d.
Tem 3 estбgios. No primeiro vocк й avisado(liberado para dormir), no segundo vocк jб fica tonto, no terceiro vocк desmaia.
*Le cуdigo*
Agradecimentos a Flбvio toribio: include Progress bar | ipsBruno: Efeito animaзгo.
Notas
- Vocк deve definir TEMPO_AUMENTAR, TEMPO_ACORDAR a seu gosto.
- A progressBar se localize acima do radar.
Download ProgressBar.inc
http://pastebin.com/SBdyNnSj
Tem 3 estбgios. No primeiro vocк й avisado(liberado para dormir), no segundo vocк jб fica tonto, no terceiro vocк desmaia.
*Le cуdigo*
pawn Код:
#include a_samp
#include zcmd
#include progress
#define TEMPO_ACORDAR 20000 //tempo para acordar, (em milisegundos.)
#define TEMPO_AUMENTAR 20000 //tempo para aumentar o sono.
new
Sono [MAX_PLAYERS char],
bool: Dormindo[MAX_PLAYERS char],
Bar: SonoBar[MAX_PLAYERS char]
;
public OnFilterScriptInit() {
SetTimer("Aumentar", TEMPO_AUMENTAR, true);
return true;
}
public OnFilterScriptExit() {
for(new i; i < MAX_PLAYERS; ++i) {
DestroyProgressBar(SonoBar{i});
}
return true;
}
public OnPlayerCommandReceived(playerid, cmdtext[]) {
if(Dormindo{playerid})
return SendClientMessage(playerid, -1, "Vocк nгo pode usar comandos dormindo"), false;
return true;
}
public OnPlayerConnect(playerid) {
Sono{playerid} = 0;
SonoBar{playerid} = CreateProgressBar(65.00, 317.00, 55.50, 3.20, 16777202, 100.0);
return true;
}
public OnPlayerSpawn(playerid) {
ShowProgressBarForPlayer(playerid, SonoBar{playerid});
SetProgressBarValue(SonoBar{playerid}, Sono{playerid});
UpdateProgressBar(SonoBar{playerid}, playerid);
return true;
}
public OnPlayerDeath(playerid, killerid, reason) {
HideProgressBarForPlayer(playerid, SonoBar{playerid});
return true;
}
public OnPlayerDisconnect(playerid) {
DestroyProgressBar(SonoBar{playerid});
return true;
}
CMD:dormir(playerid) {
if(Sono{playerid} < 50)
return SendClientMessage(playerid, -1, "Vocк nгo estб com muito sono ainda.");
Efeito(playerid);
SendClientMessage(playerid, -1, "Vocк comeзou a dormir...ZzzZzz");
SetTimerEx("Acordar", TEMPO_ACORDAR, false, "i", playerid);
Dormindo{playerid} = true;
HideProgressBarForPlayer(playerid, SonoBar{playerid});
return true;
}
forward Aumentar();
public Aumentar() {
for(new i; i < MAX_PLAYERS; ++i) {
Sono{i} ++;
SetProgressBarValue(SonoBar{i}, Sono{i});
UpdateProgressBar(SonoBar{i}, i);
switch(Sono{i}) {
case 50: {
SendClientMessage(i, -1, "Vocк jб pode dormir");
}
case 80: {
SendClientMessage(i, -1, "Vocк jб estб bastante cansado, vб dormir");
SetPlayerDrunkLevel(i, 10000);
}
case 100: {
SendClientMessage(i, -1," Seu corpo nгo aguentou muito tempo acordado, vocк desmaiou");
Efeito(i);
SetTimerEx("Acordar", TEMPO_ACORDAR, false, "i", i);
Sono{i} = 0;
HideProgressBarForPlayer(i, SonoBar{i});
}
}
}
return true;
}
forward Acordar(playerid);
public Acordar(playerid) {
SendClientMessage(playerid, -1, "Vocк despertou! |_O_|");
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid, true);
SetPlayerDrunkLevel(playerid, 0);
Dormindo{playerid} = false;
Sono{playerid} = 0;
ShowProgressBarForPlayer(playerid, SonoBar{playerid});
return true;
}
Efeito(playerid) {
TogglePlayerControllable(playerid, false);
static Float:px, Float:py, Float:pz;
GetPlayerPos(playerid, px, py, pz);
SetPlayerCameraPos(playerid, px +2, py+2, pz+2.5);
SetPlayerCameraLookAt(playerid, px, py, pz);
ApplyAnimation(playerid,"CRACK","crckdeth4",4.0,0,0,0,1,0);
ClearAnimations(playerid);
return true;
}
Notas
- Vocк deve definir TEMPO_AUMENTAR, TEMPO_ACORDAR a seu gosto.
- A progressBar se localize acima do radar.
Download ProgressBar.inc
http://pastebin.com/SBdyNnSj