PT-BR/Scripts do Cliente
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 )