17.04.2014, 07:26
(
Последний раз редактировалось Bruno13; 17.04.2014 в 08:13.
)
Introduзгo
Primeiramente boa madrugada a todos. Estб certo que jб vimos diversos sistemas de incкndio e semelhantes, mas eu nunca vi um sistema de alarme de incкndio, e entгo tive a ideia de criar um.
Й bem simples, o player aciona o alarme teclando F no local onde se encontra o acionador e logo envia uma mensagem a todos dizendo que o alarme foi acionado e toca um alarme em Audio Stream a todos que estгo perto do local, e pode ser acionado novamente dentro de 1min e 50seg...Eu adicionei por enquanto apenas no Departamento de Policia, mas vocк pode adicionar quantos quiser sem problemas.
Adicionando Alarmes
Funзхes das CallBack's & Stock's:
- Antes de comeзar, й necessбrio entender qual a funзгo de cada callback e stock em que irбs mexer.
> OnFilterScriptInit: "Esta Callback й chamada quando o FilterScript й carregado", ou seja, serб aqui que serгo inserido os objetos e label's, para que quando carregar o FilterScript, os mesmos jб sejam criados.
> OnPlayerKeyStateChange: "Esta callback й chamada quando o estado de qualquer tecla suportado й alterado (pressionada / liberada)", ou seja, ela й chamada logo que teclar alguma tecla, e se essa tecla tiver uma funзгo dentro da callback, a mesma serб exercida.
> TocarAlarme: Esta Stock tem a principal funзгo: acionar o alarme. Ela terб a funзгo de enviar a mensagem avisando que foi acionado um alarme e identificar qual alarme foi acionado, e logo setar o Audio Stream no alarme identificado.
> LocalAlarme: Nesta Stock, estб a funзгo de identificar qual o nome dado ao local que foi acionado o alarme de incкndio, para que possa ser usada na Stock acima.
Passo 1:
- Para vocк adicionar outros alarmes, antes de tudo vocк deve criar os objetos no lugar que escolher, que tendem em ser dois: o acionador e o sino. O objeto "acionador" serб por onde o player irб acionar o alarme, teclando F, e o "sino" serб o local no qual ira setar o Audio Stream. Vocк tambйm poderб adicionar uma label indicando que aquele й o alarme de incкndio. Tudo isso na callback "OnFilterScriptInit".
Passo 2:
Na CallBack "OnPlayerKeyStateChange", encontrara no FilterScript jб o alarme do DP, poderбs copiar e colar, apenas trocando os valores dentro das funзхes.
Passo 3:
Agora na Stock "TocarAlarme", deve inserir apenas onde serб setado o Audio Stream. No FilterScript encontrarб jб uma funзгo, que poderб copiar a alterar os valores.
Passo 4(Final):
Por fim, na Stock "LocalAlarme", encontrarб jб uma funзгo feita, que й do DP, e entгo deverб adicionar abaixo dela como do modo baixo.
Imagens
Esse й o famoso objeto "acionador" e sua label: http://i.imgur.com/TcoqnRv.jpg
Esse й o nem tanto famoso mas muito importante, objeto "sino": http://i.imgur.com/8wo7iYn.png
Acionando o alarme: http://i.imgur.com/d8Nl2Cf.png
Tempo para usar novamente: http://i.imgur.com/BQoklQZ.png
Fim
Entгo й isso pessoal, й um simples FilterScript e um simples tutorial de como utiliza-lo. Espero que nгo achem um exagero por um mini FilterScript que se nгo fosse pelas variadas funзхes entrariam em "cуdigos ъteis", porйm, й sempre bom fazer uma grande explicaзгo, assim teremos como resultado melhores aprendizagens.
Obrigado a todos, por isso й hoje! Abraзos.
Crйditos: > Wiki SA-MP pela explicaзгo detalhada de funзхes.
> Bruno_13 pelo desenvolvimento do projeto.
@EDIT
Esqueci do download (putz ta foda haha)
DONWLOAD: Pastebin: http://pastebin.com/nCvMtx2C
MediaFire: https://www.mediafire.com/?tqmbpycjon8ch24
Primeiramente boa madrugada a todos. Estб certo que jб vimos diversos sistemas de incкndio e semelhantes, mas eu nunca vi um sistema de alarme de incкndio, e entгo tive a ideia de criar um.
Й bem simples, o player aciona o alarme teclando F no local onde se encontra o acionador e logo envia uma mensagem a todos dizendo que o alarme foi acionado e toca um alarme em Audio Stream a todos que estгo perto do local, e pode ser acionado novamente dentro de 1min e 50seg...Eu adicionei por enquanto apenas no Departamento de Policia, mas vocк pode adicionar quantos quiser sem problemas.
Adicionando Alarmes
Funзхes das CallBack's & Stock's:
- Antes de comeзar, й necessбrio entender qual a funзгo de cada callback e stock em que irбs mexer.
> OnFilterScriptInit: "Esta Callback й chamada quando o FilterScript й carregado", ou seja, serб aqui que serгo inserido os objetos e label's, para que quando carregar o FilterScript, os mesmos jб sejam criados.
> OnPlayerKeyStateChange: "Esta callback й chamada quando o estado de qualquer tecla suportado й alterado (pressionada / liberada)", ou seja, ela й chamada logo que teclar alguma tecla, e se essa tecla tiver uma funзгo dentro da callback, a mesma serб exercida.
> TocarAlarme: Esta Stock tem a principal funзгo: acionar o alarme. Ela terб a funзгo de enviar a mensagem avisando que foi acionado um alarme e identificar qual alarme foi acionado, e logo setar o Audio Stream no alarme identificado.
> LocalAlarme: Nesta Stock, estб a funзгo de identificar qual o nome dado ao local que foi acionado o alarme de incкndio, para que possa ser usada na Stock acima.
Passo 1:
- Para vocк adicionar outros alarmes, antes de tudo vocк deve criar os objetos no lugar que escolher, que tendem em ser dois: o acionador e o sino. O objeto "acionador" serб por onde o player irб acionar o alarme, teclando F, e o "sino" serб o local no qual ira setar o Audio Stream. Vocк tambйm poderб adicionar uma label indicando que aquele й o alarme de incкndio. Tudo isso na callback "OnFilterScriptInit".
Passo 2:
Na CallBack "OnPlayerKeyStateChange", encontrara no FilterScript jб o alarme do DP, poderбs copiar e colar, apenas trocando os valores dentro das funзхes.
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 1.0, POS DO OBJETO ACIONADOR))//Coordenada do Objeto Acionador
{
SetPlayerPos(playerid, POS EM FRENTE AO ACIONADOR);//Parte da Animaзгo: Seta o player bem em frente ao acionador
SetPlayerFacingAngle(playerid, ANGULO EM FRENTE AO ACIONADOR);//Parte da Animaзгo: Angulo bem reto em frente ao acionador
ApplyAnimation(playerid, "CRIB","CRIB_Use_Switch",4.1,0,0,0,0,0);//Animaзгo
SetTimerEx("pararanim", 2000, false, "i", playerid);//Tempo para parar a animaзгo
TocarAlarme(playerid);//Chamar a stock para acionar
return 1;
}
Agora na Stock "TocarAlarme", deve inserir apenas onde serб setado o Audio Stream. No FilterScript encontrarб jб uma funзгo, que poderб copiar a alterar os valores.
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 5.0, POS DO OBJETO ACIONADOR))//Coordenada do Objeto Acionador
{
PlayAudioStreamForPlayer( i, "http://dc660.4shared.com/img/3475447006/1d3b9f0e/dlink__2Fdownload_2FSVBnU5WN_3Ftsid_3D20140417-063222-ba90b09c_26lgfp_3D1000_26dsid_3D2xuhu6.705dada847fa2bbbc0ac646e88905cea_26sbsr_3Dbc10f7f78d0971420d45b616c56dad25361500be27de10cd/preview.mp3", POS DO OBJETO SINO, 50, 1);//Coordenada do Objeto Sino, que serб setado o Audio Stream para todos que estejam prуximos a 50M do objeto.
}
Por fim, na Stock "LocalAlarme", encontrarб jб uma funзгo feita, que й do DP, e entгo deverб adicionar abaixo dela como do modo baixo.
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 5.0, 244.9254, 78.6766, 1004.2170)) { text = "Departamento de Policia"; }//Local do DP
else if((IsPlayerInRangeOfPoint(5.0, playerid, POS DO OBJETO ACIONADOR)) { text = "Nome do Local (Ex: Prefeitura)"; }//Novo Local
Esse й o famoso objeto "acionador" e sua label: http://i.imgur.com/TcoqnRv.jpg
Esse й o nem tanto famoso mas muito importante, objeto "sino": http://i.imgur.com/8wo7iYn.png
Acionando o alarme: http://i.imgur.com/d8Nl2Cf.png
Tempo para usar novamente: http://i.imgur.com/BQoklQZ.png
Fim
Entгo й isso pessoal, й um simples FilterScript e um simples tutorial de como utiliza-lo. Espero que nгo achem um exagero por um mini FilterScript que se nгo fosse pelas variadas funзхes entrariam em "cуdigos ъteis", porйm, й sempre bom fazer uma grande explicaзгo, assim teremos como resultado melhores aprendizagens.
Obrigado a todos, por isso й hoje! Abraзos.
Crйditos: > Wiki SA-MP pela explicaзгo detalhada de funзхes.
> Bruno_13 pelo desenvolvimento do projeto.
@EDIT
Esqueci do download (putz ta foda haha)
DONWLOAD: Pastebin: http://pastebin.com/nCvMtx2C
MediaFire: https://www.mediafire.com/?tqmbpycjon8ch24