.Dev Posted December 1, 2019 Share Posted December 1, 2019 Olá pessoal, gostaria de uma ajuda, estou começando a programar para MTA e queria fazer um Script de trabalho com as seguintes funcionalidades: O cliente iria solicitar o Trabalho, eu pegaria a posição dele, e mandaria um aviso para todas as pessoas que estão naquele trabalho, por exemplo a policia, então o policial iria apertar uma tecla definida para aceitar o chamado ou negar o chamado. A minha duvida é como vou pegar essa tecla sem inutilizar ela para o jogador, alguém poderia me dizer quais os nomes das funções que poderia me ajudar, que o resto eu olho na wiki e faço os testes. Desde já obrigado. Link to comment
Other Languages Moderators Lord Henry Posted December 1, 2019 Other Languages Moderators Share Posted December 1, 2019 AddCommandHandler - Adicionar um comando pro jogador chamar tal profissional. BindKey - Binda uma tecla a uma função, para fazer o profissional aceitar ou negar o chamado. Pode ser uma tecla pra aceitar e outra pra negar. Se as profissões estão separadas por ACL Group GetPlayersInACLGroup - Função útil que pega todos os jogadores que estão em determinada ACL Group. Se as profissões estão separadas em times GetPlayersInTeam - Pega todos os jogadores que estão em determinado time. Se as profissões estão separadas por elementData GetElementsByType - Pega todos os elementos do tipo específico. (use o tipo "player" para pegar todos os players conectados no servidor) For - Faz um loop que passa entre cada jogador, GetElementData - Verifica se tal elemento possui a elementData daquela profissão específica. (no caso o elemento é um jogador) OutputChatBox - Manda o texto para o jogador específico ou pra todo mundo. 1 Link to comment
.Dev Posted December 1, 2019 Author Share Posted December 1, 2019 5 hours ago, Lord Henry said: AddCommandHandler - Adicionar um comando pro jogador chamar tal profissional. BindKey - Binda uma tecla a uma função, para fazer o profissional aceitar ou negar o chamado. Pode ser uma tecla pra aceitar e outra pra negar. Se as profissões estão separadas por ACL Group GetPlayersInACLGroup - Função útil que pega todos os jogadores que estão em determinada ACL Group. Se as profissões estão separadas em times GetPlayersInTeam - Pega todos os jogadores que estão em determinado time. Se as profissões estão separadas por elementData GetElementsByType - Pega todos os elementos do tipo específico. (use o tipo "player" para pegar todos os players conectados no servidor) For - Faz um loop que passa entre cada jogador, GetElementData - Verifica se tal elemento possui a elementData daquela profissão específica. (no caso o elemento é um jogador) OutputChatBox - Manda o texto para o jogador específico ou pra todo mundo. Obrigado Henry, mas tenho mais uma duvida, seria necessário triggar um event para que o jogador aceitasse o Job, ou posso só passar as funções normais com o o bindKey? Porque na minha cabeça eu tinha que fazer um evento para iniciar o trabalho, depois as keys para iniciar o evento de trabalho, e uma para negar, funciona dessa forma ou apenas as funções aceitar/negar e o commandHadle daria conta? Link to comment
DNL291 Posted December 2, 2019 Share Posted December 2, 2019 O job de quem irá aceitar o trabalho já está pronto? Se não tiver comece por aí, se você pensar lá na frente sem ter feito antes a base, vai ficar bem confuso pra você. A lógica de aceitar um job funciona assim: O jogador interage pelo lado cliente, caso seja por meio de uma interface, e faz o trigger para o lado server. Se não envolver interfaces, esses passos podem ser feitos server-side. A sua lógica de 'ativar uma bind para aceitar um trabalho' não irá funcionar se mais pessoas pedirem um trabalho ao mesmo tempo, então você vai precisar de um meio de deixar o jogador escolher qual trabalho ele deseja fazer. A cada pedido de trabalho, adicione na tabela esse pedido. Se o jogador que executar o trabalho tiver que escolher, envie a tabela ao cliente com os serviços listados nela e retorne ao lado server o serviço escolhido para o jogador que pediu. Link to comment
.Dev Posted December 2, 2019 Author Share Posted December 2, 2019 1 hour ago, DNL291 said: O job de quem irá aceitar o trabalho já está pronto? Se não tiver comece por aí, se você pensar lá na frente sem ter feito antes a base, vai ficar bem confuso pra você. A lógica de aceitar um job funciona assim: O jogador interage pelo lado cliente, caso seja por meio de uma interface, e faz o trigger para o lado server. Se não envolver interfaces, esses passos podem ser feitos server-side. A sua lógica de 'ativar uma bind para aceitar um trabalho' não irá funcionar se mais pessoas pedirem um trabalho ao mesmo tempo, então você vai precisar de um meio de deixar o jogador escolher qual trabalho ele deseja fazer. A cada pedido de trabalho, adicione na tabela esse pedido. Se o jogador que executar o trabalho tiver que escolher, envie a tabela ao cliente com os serviços listados nela e retorne ao lado server o serviço escolhido para o jogador que pediu. Entendi DNL, eu fiz tudo server side, mas vou usar interface grafica do lado client, minha ideia pra evitar que mais pessoas aceitem o trabalho, seria verificar uma tabela com quem já aceitou e nomear o primeiro, e setar o blip e etc. Assim apenas uma pessoa poderia aceitar um pedido por vez, no caso uma VTR de policia, mas vou usar a base pra todos os trabalho, mecanicos, taxi e etc. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now