Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- __________________________________________________
- | |
- | | / |
- | |/ ____________ |
- | [ FS ] | \ - Lanterna |v1.0 | 0.3e | |
- | ¯¯¯¯¯¯¯¯¯¯¯¯ |
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- Criado e desenvolvido by Kon_BR || Twist (http://forum.sa-mp.com/member.php?u=158736)
- -
- # Links úteis #
- Tópico Progress Bar - http://forum.sa-mp.com/showthread.php?t=113443
- - */
- #include <a_samp>
- // ========== ## Ajustes (Como bem queira.) ## ==========
- // ~~> Nivel da escuridão, altere como bem achar melhor. ("kBaixa", "kMedia"(Default) ou "kAlta")
- #define NivelEscuridao kMedia
- // ~~> Defina o tempo em segundo em segundo em que gasta a lanterna (Default : 3000(de 3 em 3s))
- #define TempoGastarLanterna 3000
- // ~~> Defina o tempo em segundo em segundo para recarregar a lanterna (Default : 7000(de 7 em 7s))
- #define TempoRecarregarLanterna 7000
- // ========== Includes ==========
- #include ProgressBar
- // ========== Variavéis ==========
- // ~~> Textdraws
- new Text: TextdrawVisao[MAX_PLAYERS];
- // ~~> Geral
- new bool:LanternaAtivada[MAX_PLAYERS];
- new bool:LanternaPifada[MAX_PLAYERS];
- new PlayerBar:BarraBateriaLanterna[MAX_PLAYERS]; // Barra de carga da lanterna. (Progress Bar)
- new VezesQueLigouOuDesligouLanterna[MAX_PLAYERS];
- // ~~> Timers
- new TimerRecarregarLanterna[MAX_PLAYERS];
- new TimerGastarLanterna[MAX_PLAYERS];
- new TimerDelayLanterna[MAX_PLAYERS];
- // ========== Defines ==========
- // ~~> Definimos os niveis da escuridão (Hex Colours) da Textdraw, aconselho a não mexer.
- #define kBaixa 0x00000067
- #define kMedia 0x0000009A
- #define kAlta 0x000000CD
- /* ~~> Definimos as claridades da lanterna quando está com muita carga e com pouca carga.
- - Aconselho a não mexer, mas caso queira aumentar/diminuir é só usar os dois ultimos numeros da Hex Colour (11 e 05 no caso) */
- #define LuzLanternaMaxima 0xffffff18
- #define LuzLanternaMinima 0xffffff08
- // ========== Forwards ==========
- forward GastarLanterna(playerid);
- forward RecarregarLanterna(playerid);
- forward DelayLigarEDesligarLanterna(playerid);
- // # Inicio #
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" ");
- print(" FS - kLanterna v1.0 - by Kon_BR ");
- print(" Loaded ! ");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- // ~~> Criar a Progress Bar da bateria da lanterna.
- BarraBateriaLanterna[playerid] = CreatePlayerProgressBar(playerid,550.0, 425.0, _, _, 0xFFFF00FF, 100.0);
- // ========== Textdraws ==========
- // ~~> Textdraw lanterna (Luz ambiente (Escuro ou claro(lanterna))
- TextdrawVisao[playerid] = TextDrawCreate(-20.000000,2.000000,"X");
- TextDrawLetterSize(TextdrawVisao[playerid],1.000000,52.200000);
- TextDrawTextSize(TextdrawVisao[playerid],660.000000,22.000000);
- TextDrawUseBox(TextdrawVisao[playerid],1);
- TextDrawBoxColor(TextdrawVisao[playerid],NivelEscuridao);
- // ========== Valores de variaveis ==========
- LanternaAtivada[playerid] = false;
- LanternaAtivada[playerid] = false;
- VezesQueLigouOuDesligouLanterna[playerid] = 0;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- // ~~> Mostrar a visão escura (Textdraw)
- TextDrawShowForPlayer(playerid,TextdrawVisao[playerid]);
- // ~~> Mostrar e setar o valor da Progress bar
- SetPlayerProgressBarValue(playerid, PlayerBar:BarraBateriaLanterna[playerid], 100.0);
- ShowPlayerProgressBar(playerid, PlayerBar:BarraBateriaLanterna[playerid]);
- // ~~> Esconder o nick em cima da skin dos outros players (Lanterna desativada)
- kEsconderNickDeTodos(playerid);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- // ~~> Ao player morrer, esconder a barra da bateria da lanterna. (Ela é restaurada após spawn)
- HidePlayerProgressBar(playerid, PlayerBar:BarraBateriaLanterna[playerid]);
- // ~~> Caso a lanterna esteja ativada, desativá-lá. E também destruir timers para não carregar ou gastar quando morre.
- KillTimer(TimerRecarregarLanterna[playerid]);
- KillTimer(TimerGastarLanterna[playerid]);
- if(LanternaAtivada[playerid] == true)
- {
- LanternaAtivada[playerid] = false;
- PlayerPlaySound(playerid,1058,0,0,0);
- kTextDrawSetBoxColor(playerid,TextdrawVisao[playerid],NivelEscuridao);
- kEsconderNickDeTodos(playerid);
- }
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- // ~~> Ligar/Desligar lanterna (Tecla N(Default)) | Caso queira alterar, à vontade. (http://wiki.sa-mp.com/wiki/GetPlayerKeys)
- if(newkeys & KEY_NO)
- {
- // ~~> Caso o player fique ligando e desligando a lanterna feito um bobão, ela irá pifar :b
- if(VezesQueLigouOuDesligouLanterna[playerid] == 0)
- {
- TimerDelayLanterna[playerid] = SetTimerEx("DelayLigarEDesligarLanterna",3000,false,"d",playerid);
- }
- VezesQueLigouOuDesligouLanterna[playerid]++;
- if(VezesQueLigouOuDesligouLanterna[playerid] == 5)
- {
- KillTimer(TimerRecarregarLanterna[playerid]);
- KillTimer(TimerGastarLanterna[playerid]);
- KillTimer(TimerDelayLanterna[playerid]);
- LanternaAtivada[playerid] = false;
- LanternaPifada[playerid] = true;
- PlayerPlaySound(playerid,1085,0,0,0);
- kTextDrawSetBoxColor(playerid,TextdrawVisao[playerid],NivelEscuridao);
- kEsconderNickDeTodos(playerid);
- SetPlayerProgressBarValue(playerid, PlayerBar:BarraBateriaLanterna[playerid], 0.0);
- SetPlayerProgressBarColor(playerid, PlayerBar:BarraBateriaLanterna[playerid], 0x808080FF);
- UpdatePlayerProgressBar(playerid, PlayerBar:BarraBateriaLanterna[playerid]);
- return 1;
- }
- if(LanternaAtivada[playerid] == false && LanternaPifada[playerid] == false && GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) > 0.0)
- {
- TimerGastarLanterna[playerid] = SetTimerEx("GastarLanterna",TempoGastarLanterna,true,"d",playerid);
- KillTimer(TimerRecarregarLanterna[playerid]);
- LanternaAtivada[playerid] = true;
- PlayerPlaySound(playerid,1056,0,0,0);
- kMostrarNickDeTodos(playerid); // Função (stock) para mostrar o nick em cima da skin das pessoas ao seu redor
- if(GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) > 10.0)
- {
- kTextDrawSetBoxColor(playerid,TextdrawVisao[playerid],LuzLanternaMaxima);
- }
- if(GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) <= 10.0)
- {
- kTextDrawSetBoxColor(playerid,TextdrawVisao[playerid],LuzLanternaMaxima);
- }
- return 1;
- }
- if(LanternaAtivada[playerid] == true && LanternaPifada[playerid] == false)
- {
- LanternaAtivada[playerid] = false;
- PlayerPlaySound(playerid,1058,0,0,0);
- KillTimer(TimerGastarLanterna[playerid]);
- TimerRecarregarLanterna[playerid] = SetTimerEx("RecarregarLanterna",TempoRecarregarLanterna,true,"d",playerid);
- kTextDrawSetBoxColor(playerid,TextdrawVisao[playerid],NivelEscuridao);
- kEsconderNickDeTodos(playerid); // Função (stock) para esconder o nick em cima da skin das pessoas ao seu redor
- return 1;
- }
- }
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- // ========== Outras publics (Chamadas por timers) ==========
- // ~~> Gastar lanterna (caso esteja ativada)
- public GastarLanterna(playerid)
- {
- if(GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) <= 0.0)
- {
- KillTimer(TimerGastarLanterna[playerid]);
- SetPlayerProgressBarValue(playerid, PlayerBar:BarraBateriaLanterna[playerid], 0.0);
- TimerRecarregarLanterna[playerid] = SetTimerEx("RecarregarLanterna",TempoRecarregarLanterna,true,"d",playerid);
- kTextDrawSetBoxColor(playerid,TextdrawVisao[playerid],NivelEscuridao);
- LanternaAtivada[playerid] = false;
- kEsconderNickDeTodos(playerid); // Função (stock) para esconder o nick em cima da skin das pessoas ao seu redor
- return 1;
- }
- if(GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) <= 10.0)
- {
- kTextDrawSetBoxColor(playerid,TextdrawVisao[playerid],LuzLanternaMinima);
- SetPlayerProgressBarColor(playerid, PlayerBar:BarraBateriaLanterna[playerid], 0xFF0000FF);
- UpdatePlayerProgressBar(playerid, PlayerBar:BarraBateriaLanterna[playerid]);
- }
- SetPlayerProgressBarValue(playerid, PlayerBar:BarraBateriaLanterna[playerid], GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) - 3.0);
- UpdatePlayerProgressBar(playerid, PlayerBar:BarraBateriaLanterna[playerid]);
- return 1;
- }
- // ~~> Recarregar lanterna (caso esteja desativada)
- public RecarregarLanterna(playerid)
- {
- if(GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) >= 100.0) return KillTimer(TimerRecarregarLanterna[playerid]), SetPlayerProgressBarValue(playerid, PlayerBar:BarraBateriaLanterna[playerid], 100.0);
- if(GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) > 10.0)
- {
- SetPlayerProgressBarColor(playerid, PlayerBar:BarraBateriaLanterna[playerid], 0xFFFF00FF);
- UpdatePlayerProgressBar(playerid, PlayerBar:BarraBateriaLanterna[playerid]);
- }
- SetPlayerProgressBarValue(playerid, PlayerBar:BarraBateriaLanterna[playerid], GetPlayerProgressBarValue(playerid,PlayerBar:BarraBateriaLanterna[playerid]) + 4.0);
- UpdatePlayerProgressBar(playerid, PlayerBar:BarraBateriaLanterna[playerid]);
- return 1;
- }
- // ~~> Tempo delay para ligar e desligar a lanterna (caso contrario ela pifa :D)
- public DelayLigarEDesligarLanterna(playerid)
- {
- VezesQueLigouOuDesligouLanterna[playerid] = 0;
- return 1;
- }
- // ========== Stocks ==========
- // ~~> Esconder o nick em cima da skin de todos caso o player em questão esteja com a lanterna desativada.
- stock kEsconderNickDeTodos(playerid)
- {
- for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(playerid, i, false);
- return 1;
- }
- // ~~> Mostrar o nick em cima da skin de todos caso o player em questão esteja com a lanterna ativada.
- stock kMostrarNickDeTodos(playerid)
- {
- for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(playerid, i, true);
- return 1;
- }
- // ~~> Modo "minimizado" de mudar a cor e atualizar a textdraw da visão.
- stock kTextDrawSetBoxColor(playerid,Text:text, color)
- {
- TextDrawBoxColor(Text:text,color);
- TextDrawShowForPlayer(playerid,Text:text);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement