PT-BR/Scripts do Cliente: Difference between revisions
No edit summary |
No edit summary |
||
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
Scripts do Cliente são roteiros que rodam no computador do jogador. Isso significa que o MTA tem acesso a mais informações a respeito do que se passa no mundo dele, mas não no mundo dos outros que estão conectados no mesmo servidor. | |||
Isso é muito útil para que elementos, principalmente visuais (shaders, objetos e GUI), sejam criados e manipulados corretamente. | |||
Por | ==Como isso funciona?== | ||
Scripts do Cliente segum a mesma lógica de programação dos roteiros executados no servidor. É possível fazer uma comunicação entre os dois com o sistema de eventos nativo do MTA. Porém, é obrigatório que eles estejam em arquivos diferentes para evitar confusão na hora de distingui-los. Além disso, como qualquer outro componente do recurso, eles são definidos no meta.xml ao inserir uma etiqueta <script> e <type>. | |||
Por exemplo: | |||
'''meta.xml''' | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<meta> | <meta> | ||
<script src=" | <script src="c_gui.lua" type="client" /> | ||
< | <script src="s_gui.lua" type="server" /> | ||
</meta> | </meta> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Se você desejar ativar um evento no cliente a partir do servidor, é preciso primeiramente registrar o evento no cliente usando [[addEvent]]. Após disso vincularemos um <i>handler</i> para indicar o que pode ativar o evento e qual função será executada. Agora no script do servidor, é possível chamar este evento usando [[triggerClientEvent]]. A mesma coisa pode ser feita na ordem inversa: chamar um evento no servidor a partir do cliente usando [[triggerServerEvent]]. | |||
''' | Vamos imaginar um exemplo bem prático. Imagine que criamos um mini jogo em que os jogadores precisam encontrar o mágico chamado Oscar. Ele está perdido com um saco de dinheiro como recompensa pra quem encontrá-lo no mapa de San Andreas. Assim que algum jogador avista-lo e se aproximar dele, um montante será adicionado no seu inventário. E é ai que nós usamos o [[triggerClientEvent]] para que o servidor possa pedir que o script do cliente mande uma mensagem (e o dinheiro) caso esse perceber que o jogador se aproximou de Oscar. A seguir, um exemplo: | ||
'''Script do Cliente:''' | |||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function | function RecompensadeOscar ( tempo ) | ||
outputChatBox( "Parabéns, você encontrou o Oscar em " .. tempo .. " segundos!" ) | |||
end | end | ||
addEvent( "aoEncontrarOscar", true ) | |||
addEvent(" | addEventHandler( "aoEncontrarOscar", getRootElement(), RecompensadeOscar ) | ||
addEventHandler(" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Script do Servidor:''' | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
triggerClientEvent ( | triggerClientEvent ( algumJogador, "aoEncontrarOscar", getRootElement(), 4800 ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[en:Client side scripts]] | |||
[[es:Scripts de Cliente]] | |||
[[it:Script client-side]] | |||
[[ru:Client side scripts]] | [[ru:Client side scripts]] | ||
Latest revision as of 16:34, 11 December 2013
Scripts do Cliente são roteiros que rodam no computador do jogador. Isso significa que o MTA tem acesso a mais informações a respeito do que se passa no mundo dele, mas não no mundo dos outros que estão conectados no mesmo servidor.
Isso é muito útil para que elementos, principalmente visuais (shaders, objetos e GUI), sejam criados e manipulados corretamente.
Como isso funciona?
Scripts do Cliente segum a mesma lógica de programação dos roteiros executados no servidor. É possível fazer uma comunicação entre os dois com o sistema de eventos nativo do MTA. Porém, é obrigatório que eles estejam em arquivos diferentes para evitar confusão na hora de distingui-los. Além disso, como qualquer outro componente do recurso, eles são definidos no meta.xml ao inserir uma etiqueta <script> e <type>.
Por exemplo:
meta.xml
<meta> <script src="c_gui.lua" type="client" /> <script src="s_gui.lua" type="server" /> </meta>
Se você desejar ativar um evento no cliente a partir do servidor, é preciso primeiramente registrar o evento no cliente usando addEvent. Após disso vincularemos um handler para indicar o que pode ativar o evento e qual função será executada. Agora no script do servidor, é possível chamar este evento usando triggerClientEvent. A mesma coisa pode ser feita na ordem inversa: chamar um evento no servidor a partir do cliente usando triggerServerEvent.
Vamos imaginar um exemplo bem prático. Imagine que criamos um mini jogo em que os jogadores precisam encontrar o mágico chamado Oscar. Ele está perdido com um saco de dinheiro como recompensa pra quem encontrá-lo no mapa de San Andreas. Assim que algum jogador avista-lo e se aproximar dele, um montante será adicionado no seu inventário. E é ai que nós usamos o triggerClientEvent para que o servidor possa pedir que o script do cliente mande uma mensagem (e o dinheiro) caso esse perceber que o jogador se aproximou de Oscar. A seguir, um exemplo:
Script do Cliente:
function RecompensadeOscar ( tempo ) outputChatBox( "Parabéns, você encontrou o Oscar em " .. tempo .. " segundos!" ) end addEvent( "aoEncontrarOscar", true ) addEventHandler( "aoEncontrarOscar", getRootElement(), RecompensadeOscar )
Script do Servidor:
triggerClientEvent ( algumJogador, "aoEncontrarOscar", getRootElement(), 4800 )