# Dicas Source: https://docs.heyyshop.com.br/hints Fique por dentro de algumas dicas gerais na utilização dos sistemas ou sobre alguns procedimentos recomendados. Durante a utilização de nossos produtos, alguns procedimentos podem te ajudar a receber um melhor e mais rápido suporte, evitar problemas ou até mesmo trazer uma melhor jogabilidade para seus jogadores. Segue abaixo uma lista de procedimentos, dicas e outras recomendações que vão te ajudar a manter seu servidor e nossos produtos rodando da melhor forma possível! # 1. Reportar erros ou bugs Após uma instalação, atualização ou até mesmo o uso comum dos nossos produtos, você pode se deparar com alguma mensagem de erro em alguns lugares: * Console do cliente (F8); * Console do servidor (txAdmin ou mesmo aquele CMD aberto na sua VPS); * Na própria interface, no canto superior direito. Algumas mensagens são mais importantes do que outras, mas o procedimento é padrão em todos os casos. Para receber um suporte rápido e eficaz, ao entrar em contato, forneça as seguintes informações: * Quando o erro aconteceu (se tiver essa informação); * Como o error aconteceu (se tiver essa informação); * Os arquivos do script (TODOS ELES, não apenas o que está com erro ou aquele apareceu na mensagem); * Um print do erro no console do servidor, se houver (não é do F8); * Um print do erro no console do cliente (F8), se houver; * Qual a sua base (por exemplo, Creative v5, Network, Extended etc.) # 2. Servidor de Testes/Desenvolvimento Recomendamos que você utilize um servidor de testes para a realização da instalação, atualização ou correção de erros nos scripts. Desencorajamos a realização desses processos em servidores em produção (com jogadores), pois, muitas vezes, será necessário reiniciar os scripts (o que pode atrapalhar a jogabilidade de seus jogadores) ou até mesmo podem ocorrer erros (deixando algum sistema do servidor indisponível ou problemático). # 3. Realizando atualizações Após o lançamento do script, é normal que ocorram várias atualizações (nem sempre com a mesma frequência), que melhoram o funcionamento do script, adicionam funções ou, até mesmo, que modificam funções já existentes. Quando essas atualizações são lançadas, nossos scripts são atualizados automaticamente, sem precisar de nenhuma ação sua. Entretanto, em alguns casos, principalmente quando há a adição de novas configurações ou até mesmo a modificação de alguma já existente, nossa equipe irá anunciar a atualização nos canais de download de cada produto, reenviando o script **COMPLETO** (com **TODOS** os arquivos atualizados) e fornecendo instruções, informando o que foi mudado e quais arquivos deverão ser atualizados manualmente. Uma observação relevante é que: sempre vamos mencionar o cargo Cliente, para te notificar, quando uma atualização obrigatória ou importante for realizada. **O que é uma atualização obrigatória?** É uma atualização que, se não for feita, pode gerar mal funcionamento do produto ou causar erros, por exemplo. Elas precisam ser feitas o mais rápido possível, para que, quando os arquivos principais do script sejam atualizados pelo atualizador automático e o script/servidor for reiniciado, as modificações que precisam ser realizadas manualmente já tenham sido realizadas por você, garantindo que ele continue funcionando de forma correta. É importante que, **ANTES DE REALIZAR A ATUALIZAÇÃO**: * Faça um backup do seu banco de dados; * Faça um backup dos arquivos atuais do script (que estão rodando e funcionando na sua base); Para a realização da **ATUALIZAÇÃO**: * Caso solicite que um terceiro faça-a por você (um programador, sócio ou até um amigo, por exemplo), forneça o passo a passo dado por nossa equipe; * Siga as instruções a risca (não pule ou ignore qualquer tópico ou passo a passo fornecido); * Caso tenha alguma dúvida, entre imediatamente em contato conosco através do Discord, isso ajudará a evitar erros e acidentes; Caso a atualização seja feita da forma incorreta, substituindo os arquivos de configurações ao invés de apenas adicionar/alterar o que foi adicionado/alterado/solicitado, é possível que isso resulte na perda de todas as alterações feitas para o script funcionar corretamente no seu servidor/base. Nesse caso, você precisará solicitar que nossa equipe realize a reinstalação completa do script, caso não haja backup, que seguirá nossos termos de instalação (ou seja, pode te gerar custos). # Eventos Source: https://docs.heyyshop.com.br/products/heyy_blipsystem/api/events Integre nosso produto com outros scripts de seu servidor, deixando tudo muito mais legal e com sua cara. ## Server-side ### blipsystem:registerPlayer Esse evento pode ser disparado para adicionar um jogador ao sistema de *blipsystem*, ou atualizá-lo, caso já esteja nele. Esse evento normalmente é utilizado ao entrar em serviço. **Parâmetros:** * source: `integer` * role: `string` * true caso queira iniciar a contagem de horas, e false caso queira finalizá-la. * canSeeRoles: `string[]` * Lista de grupos que o jogador pode exergar no mapa. * Exemplo: Caso a lista seja **Policia** e **Hospital** o jogador poderá enxergar em seu mapa qualquer pessoa que estiver registrada com ***role*** de **Policia** ou **Hospital**. Qualquer outra pessoa registrada com outro ***role*** não será vista. * options * name: `string` * Nome do blip no mapa. * sprite: `integer` * Ícone do blip no mapa. Veja a [lista completa](https://docs.fivem.net/docs/game-references/blips/#blips). * color: `integer` * Cor do blip no mapa. Veja a [lista completa](https://docs.fivem.net/docs/game-references/blips/#blip-colors). * showHeading: `boolean` * Se o blip exibirá para que lado o jogador está olhando. * showVehicle: `boolean` * Se o ícone do blip será influenciado pelo veículo que o jogador está utilizando. **Exemplo de uso:** ```lua theme={null} TriggerEvent( "blipsystem:registerPlayer", source, "Policia", { "Policia", "Hospital" }, { name = "Policial", sprite = 63, color = 3, showHeading = true, showVehicle = true, } ) ``` ### blipsystem:unregisterPlayer Esse evento pode ser disparado para remover um jogador do sistema de *blipsystem*. Esse evento normalmente é utilizado ao sair de serviço. **Parâmetros:** * source: `integer` **Exemplo de uso:** ```lua theme={null} TriggerEvent("blipsystem:unregisterPlayer", source) ``` # Eventos Source: https://docs.heyyshop.com.br/products/heyy_hospital/api/events Integre nosso produto com outros scripts de seu servidor, deixando tudo muito mais legal e com sua cara. ## Client-side ### heyy\_hospital:openUI Ao disparar esse evento o tablet será aberto, caso o jogador tenha permissão para isso. **Exemplo de uso:** ```lua theme={null} -- client-side TriggerEvent("heyy_hospital:openUI") -- server-side TriggerClientEvent("heyy_hospital:openUI", source) ``` ### heyy\_hospital:onTabletOpen > Esse evento é exclusivamente de leitura, dispará-lo não fará nenhum evento dentro do script. Esse evento é disparado toda vez que o tablet é aberto. Um exemplo básico de uso (que é utilizado por nós) é remover arma da mão do jogador para que a animação fique correta, por exemplo. **Exemplo de uso:** ```lua theme={null} AddEventHandler("heyy_hospital:onTabletOpen", function() -- seu código end) ``` ### heyy\_hospital:closeUI Ao disparar esse evento o tablet é fechado. **Exemplo de uso:** ```lua theme={null} -- client-side TriggerEvent("heyy_hospital:closeUI") -- server-side TriggerClientEvent("heyy_hospital:closeUI", source) ``` ## Server-side ### heyy\_hospital:setOnDuty Esse evento pode ser disparado para iniciar ou finalizar a contagem de horas em serviço. Ele normalmente é utilizado ao entrar/sair de serviço. **Parâmetros:** * user\_id: `integer` * status: `boolean` * true caso queira iniciar a contagem de horas, e false caso queira finalizá-la. **Exemplo de uso:** ```lua theme={null} TriggerEvent("heyy_hospital:setOnDuty", user_id, status) ``` # Exports Source: https://docs.heyyshop.com.br/products/heyy_hospital/api/exports Integre nosso produto com outros scripts de seu servidor, deixando tudo muito mais legal e com sua cara. ## Client-side ### isUiOpen Retorna se a interface está ou não aberta. **Exemplo de uso:** ```lua theme={null} local isOpen = exports.heyy_hospital:isUiOpen() ``` ## Server-side ### getPlayerData Retorna a informação `key` do jogador especificado. **Parâmetros:** * user\_id: `integer` * key: `string` * A informação que você deseja obter **Retorna:** * data: `string` **Exemplo de uso:** ```lua theme={null} local value = exports.heyy_hospital:getPlayerData(user_id, "exemplo") ``` ### setPlayerData Define o valor da informação `key` para o jogador especificado. **Parâmetros:** * user\_id: `integer` * key: `string` * A informação que você deseja atualizar * value: `string` * O novo valor para essa informação **Exemplo de uso:** ```lua theme={null} exports.heyy_hospital:setPlayerData(user_id, "exemplo", "novo_valor") ``` # Statebags Source: https://docs.heyyshop.com.br/products/heyy_hospital/api/statebags Integre nosso produto com outros scripts de seu servidor, deixando tudo muito mais legal e com sua cara. Os *state bags* são utilizados para sincronizar informações entre clientes e o servidor. Para saber mais detalhes e como utilizar, você pode [ler mais sobre os StateBags aqui](https://docs.fivem.net/docs/scripting-manual/networking/state-bags/). ## Resumo | Statebag | Tipo | Descrição | | -------- | ------- | ---------------------------------- | | plaster | boolean | Se o jogador está engessado ou não | ## Lista completa ### plaster Pode ser utilizado para verificar se o jogador está preso. **Exemplo de uso:** ```lua theme={null} -- client-side if LocalPlayer.state.plaster then -- seu código end -- server-side if Player(source).state.plaster then -- seu código end ``` # Apresentação Source: https://docs.heyyshop.com.br/products/heyy_hospital/features Conheça nosso Tablet Policial e as funções que vão diferenciar seu servidor de outros que seus jogadores já jogaram! Nosso tablet conta com diversas funções para fazer a vida dos policiais do seu servidor mais fácil, além de um roleplay mais imersivo e completo para os outros jogadores. Veja nosso vídeo demonstrativo!