Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,980
  • Joined

  • Last visited

  • Days Won

    181

Everything posted by Lord Henry

  1. Na verdade é bem simples por meio de código. Vc só precisa saber o ID do objeto e informar uma coordenada bem próxima ao objeto, não precisa ser exatamente no centro do objeto. Para descobrir o ID de um objeto que não é selecionável, dai é algo mais complexo que exige ferramentas externas. Para isso, vamos no site http://dev.prineside.com e clicamos no botão Model Search by Map Position. Após selecionada a posição no mapa, ele vai mostrar todos os objetos (selecionáveis e não selecionáveis) em um raio de 500 metros, em ordem dos mais próximos para os mais distantes. Na lista que aparecer, encontre o objeto que você deseja remover e anote o ID desse objeto. Descobrimos o ID do objeto, e agora? Agora já passou a parte mais difícil, o resto é programar um script básico de remoção de objetos por ID. Para isso vamos usar a função RemoveWorldModel. Essa função é bem simples de se usar, basta informar o ID do objeto a ser removido, o raio cuja remoção será aplicada e as coordenadas do ponto onde vai começar a remoção. Você precisa restaurar o objeto quando o script for desligado, para isso use RestoreWorldModel. O script funciona tanto em server-side quanto em client-side, mas em geral utiliza-se server-side. O Script deve ficar como esse: function removeBagulho() removeWorldModel(5681, 15, 1911.3, -1776.25, 13.38) -- Remove o objeto do lava-jato próximo ao posto de LS quando o resource é iniciado. end addEventHandler("onResourceStart", resourceRoot, removeBagulho) function restauraBagulho() restoreWorldModel(5681, 15, 1911.3, -1776.25, 13.38) -- Restaura o objeto quando o resource é desativado. end addEventHandler("onResourceStop", resourceRoot, restauraBagulho) Esse script vc adiciona junto com o resource do seu mapa. Você pode optar por deixar isso em um script separado ou deixar junto com algum script que vc já tenha no seu mapa por exemplo scripts de portões, server-side. Vlw, flw. Deixe seu LIKE se ajudou você. Dúvidas comente abaixo. Obs: Nem todos os objetos podem ser removidos com essa função, por exemplo aquelas plantas do deserto que se você bater com veículo elas podem quebrar. Isso ocorre pois elas são geradas no mapa, não possuem posição fixa. Outras plantas geradas também não podem ser removidas, mesmo se forem selecionáveis. Tanto que se você tentar procurar o ID dessas árvores seguindo os passos acima, vai perceber que o site não encontra essas árvores na pesquisa do mapa. Para remover essas plantas, utilize isso: setWorldSpecialPropertyEnabled("randomfoliage", false)
  2. Na verdade é bem simples por meio de código. Vc só precisa saber o ID do objeto e informar uma coordenada bem próxima ao objeto, não precisa ser exatamente no centro do objeto. Para descobrir o ID de um objeto que não é selecionável, dai é algo mais complexo que exige ferramentas externas. Para isso, vamos no site http://dev.prineside.com e clicamos no botão Model Search by Map Position. Após selecionada a posição no mapa (no seu caso eu fiz no X= 1941, Y= -1744), ele vai mostrar todos os objetos (selecionáveis e não selecionáveis) em um raio de 500 metros, em ordem dos mais próximos para os mais distantes. O objeto em questão é difícil de ser detectado, pois seu modelo é microscópico. Mas se procurar com cuidado, vai perceber que o que estamos procurando é o ID 5681. Descobrimos o ID do objeto, e agora? Agora já passou a parte mais difícil, o resto é programar um script básico de remoção de objetos por ID. Para isso vamos usar a função RemoveWorldModel. Essa função é bem simples de se usar, basta informar o ID do objeto a ser removido (5681), o raio cuja remoção será aplicada (15 metros já serve) e as coordenadas do ponto onde vai começar a remoção (no seu caso: 1911.3, -1776.25, 13.38) Não podemos nos esquecer de restaurar o objeto quando o mapa for desligado, para isso usamos RestoreWorldModel. Esqueci de mencionar que o script funciona tanto em server-side quanto em client-side, mas no seu caso faça apenas server-side. O script deve ficar assim: Esse script vc adiciona junto com o resource do seu mapa. Você pode optar por deixar isso em um script separado ou deixar junto com algum script que vc já tenha no seu mapa, server-side. Vlw, flw. Deixa um Rep+ ae.
  3. @#banana, se não conseguir por meio da seleção. Nos avise.
  4. Dê uma olhada no seu vídeo, comentei no comentário do @#banana. https://www.youtube.com/watch?v=nrcWsKKUSW0
  5. Ah esqueça oq eu disse...eu estava olhando na tabela de accounts...em vez de olhar na userdata. Ele não cria novas colunas, ele cria novas linhas.
  6. Interessante, vc poderia me passar o IP para eu dar uma olhada?
  7. Vc tem acesso ao bando de dados do internal.db? Saberia me informar se ele cria mais uma coluna com esses novos dados?
  8. Sim, existem 2 jeitos de desligar o servidor, um jeito é com segurança e o outro é forçando o encerramento (inseguro). O jeito inseguro é fechando o Console clicando no X da janela dele, sem dar comandos. Isso força o servidor a encerrar e podem haver perdas de dados não salvos. O jeito seguro é dando shutdown motivo no console ou dando /shutdown motivo in-game. setAccountData salva no internal.db?
  9. Vc nunca perdeu veículos comprados lá depois de reiniciar o servidor?
  10. Quando a seleção não funciona, somente por meio de scripts para remover.
  11. Sim, a ideia é ser idêntico ao sistema do SAMP, que upa 1 level a cada 1 hora, independente do level atual do jogador. (Exceto se for VIP, que dai upa a cada 30 minutos.)
  12. Por acaso o oficial salva mesmo após reiniciar o servidor?
  13. É pra 5. (1 exp a cada 12 minutos, quando completa 1 hora (5 exp) upa um level)
  14. Olá, estou tentando criar uma rotação circular no meu objeto. Para fazer isso, ele deve rotacionar em Z usando o Easing "SineCurve". (exemplo 20º) Até aí tudo certo... Mas o problema ocorre quando eu coloco outra rotação nos demais parâmetros, pois ele coloca "SineCurve" em todas as rotações informadas do moveObject, só que eu preciso que ele faça na rotação X com o Easing "CosineCurve", pois se usar o "SineCurve" no X também, ele rotaciona numa diagonal apenas. Imagem para ilustrar meu problema: Obs: Na luz já consigo fazer isso, pois ela tem uma espécie de "lookAt" porque ela aponta para uma coordenada em vez de ser rotacionada, já no objeto isso não é possível... Obs2: Colocar a rotação X em um moveObject separado não funciona, pois cancela o moveObject anterior deste objeto. Obs3: Anexar o objeto a outro não resolve, uma vez que moveObject não funciona em objetos-filho. Traduzindo tudo acima: Preciso que o objeto faça um "lookAt" em um ponto que irá se movimentar circularmente.
  15. Quando eu coloco "?" significa uma pergunta. Sim era isso que eu queria. O jogador informar as coordenadas que ele quer direto ao dar o comando.
  16. E se eu quiser ir para uma posição informada pelo jogador? /tp 512.76 234.54 14.5
  17. Concordo, só que eu não sabia que existia o getPedWalkingStyle, depois que ele mencionou dai mudei pra esse:
  18. Hum não sabia desse getPedWalkingStyle, então assim fica tranquilo: addCommandHandler ("bebado", function (source) if (getPedWalkingStyle (source) == 126) then setPedWalkingStyle (source, 0) toggleControl (player, "sprint", true) else setPedWalkingStyle (source, 126) toggleControl (source, "sprint", false) end end) Dessa forma ele vai setar estilo de bêbado independente de seu estilo atual.
  19. Esse jeito acima não vai dar certo. A variável isDrunk será aplicada ao script em si e não aos jogadores. Dessa forma, se um jogador der o comando /bebado e a variável ficar true, dai essa variável será true para todo mundo. Eu faria desse jeito assim: function onJoin (source) setElementData (source,"drunk.Status", false) -- Todo jogador que entra no server recebe status de bêbado como false por padrão. end addEventHandler ("onPlayerJoin", getRootElement(), onJoin) function drunkPlayer (source) if getElementData (source,"drunk.Status") == false then -- Se o jogador estiver com status de bêbado como false, faz o seguinte: setPedWalkingStyle (source, 126) -- Coloca estilo de andar bêbado. toggleControl (source, "sprint", false) -- Desativa a função de correr, podendo somente andar na velocidade normal ou caminhar. setElementData (source, "drunk.Status", true) -- Coloca o status de bêbado desse jogador como true. else -- Se o jogador não possuir status de bêbado como false, faz o seguinte: setPedWalkingStyle (source, 0) -- Coloca estilo de andar normal. toggleControl (source, "sprint", true) -- Ativa a função de correr. setElementData (source, "drunk.Status", false) -- Coloca o status de bêbado desse jogador como false. end end addCommandHandler ("bebado", drunkPlayer) -- Executa essa função ao usar o comando /bebado.
  20. É porque o tempo deve começar a contar quando o jogador entra no server e salva esse tempo quando ele sai do server. Porém, ele deve acumular o tempo que já estava salvo anteriormente para continuar contando dali em diante. Ex: O jogador jogou 1 hora, 47 minutos e 23 segundos até deslogar. Quando ele deslogou esse tempo deve ter sido salvo na database. Quando ele logar novamente, o tempo dele deve carregar os 01:47:23 e continuar contando dali em diante.
×
×
  • Create New...