PT-BR/Scripts do Cliente

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 )