Jump to content

Script para Jobs


Recommended Posts

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
  • 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
  • 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.
  • Thanks 1
Link to comment
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
  • 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

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
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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...