#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;
}
Eu aconselharia vocк a remover estes char's, pois sу irгo trabalhar para 125 jogadores e o valor que pode ser atribuнdo a elas й menor.(0 - 255)
Tirando isso, o code parece limpo e funcional, um dica, adicionar uma funзгo random e trabalhar com a distвncia percorrida do jogador. |
um dica, adicionar uma funзгo random e trabalhar com a distвncia percorrida do jogador.
|