[FilterScript] Dormir
#1

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*
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;
}
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
Reply


Messages In This Thread
Dormir - by FeelLikeASir_ - 19.08.2012, 19:47
Re: Dormir - by Ed_Agr - 19.08.2012, 19:51
Re: Dormir - by DrTHE - 19.08.2012, 20:00
Re: Dormir - by GReeN_WOoD - 19.08.2012, 20:02
Re: Dormir - by paulor - 19.08.2012, 20:07
Re: Dormir - by Kuddy - 19.08.2012, 20:46
Re: Dormir - by leonardo1434 - 19.08.2012, 21:21
Re: Dormir - by ipsBruno - 20.08.2012, 02:05
Re: Dormir - by Tony_Rodrigues - 21.08.2012, 21:14
Re: Dormir - by FeelLikeASir_ - 24.08.2012, 20:06

Forum Jump:


Users browsing this thread: 2 Guest(s)