Jump to content

DNL291

Retired Staff
  • Posts

    3,875
  • Joined

  • Days Won

    67

Everything posted by DNL291

  1. local variables aren't accessible outside the function. Also, replace 'root' with 'resourceRoot' in event "onClientResourceStart".
  2. DNL291

    Help-me

    Tell us what's wrong with your script. Type /debugscript 3 and see what the debug shows.
  3. function onClick(button, state) if (button == "left") and (state == "up") then -- check if dx-rectangle is showing here if isMouseInPosition( x, y, width, height ) then outputChatBox ( "On rectangle click!" ) end end end addEventHandler( "onClientClick", root, onClick ) isMouseInPosition: https://wiki.multitheftauto.com/wiki/IsMouseInPosition
  4. Você quer dizer quando você cria um veículo e warpa nele usando o admin né? Eu tinha falado do teste que fiz sobre o evento onClientColShapeHit ser chamado quando cria um elemento já dentro dele. Quanto a esse problema de não chamar o evento quando warpa no veículo, acho que não é simples de se resolver, mas você pode fazer um código dentro do "onClientRender" e o evento onClientVehicleEnter com mais alguns outros meios para saber se o jogador entrou no veículo normalmente ou se foi com warp. Ou editar o admin e adicionar um evento pra esta acão. Bem que o MTA já podia ter feito algo pra isso, tipo chamar onClientVehicleEnter quando a função warpPedIntoVehicle é usada. No entanto, pode ser que tenha outro jeito mais simples de detectar isso, pois estou meio por fora do MTA ultimamente.
  5. Sim, é resourceRoot, não tinha lembrado que é só pra colshape do script Então, eu testei dando um veículo pelo painel admin; criei o elemento de colisão, adicionei o evento com a saída no chat e funcionou (usei setDevelopmentMode() + showcol pra ver a colshape).
  6. Eu fiz um teste com uma Colshape no servidor e realmente o "onClientColShapeHit" também é acionado quando cria o elemento (o veículo, no caso) dentro dele. Nesse caso, é só usar os eventos onClientColShapeHit/Leave que deve funcionar; e ao mesmo tempo vai ser bem melhor em questão de performance. A propósito, o código do @Banex têm resourceRoot nos eventos, isso quer dizer que só é chamado para os elementos do próprio resource, então lembre-se de trocar por root.
  7. Aqui no fórum tem alguns tópicos relacionados a esse mesmo erro - CL25, veja se este soluciona seu problema:
  8. Você poderia fazer assim, 1º passo: ter o controle de todos elementos dentro da colshape. Adicione na tabela os elementos que colidirem e remova quando sair da colshape (onClientColShapeHit/Leave). Aí vem aquele porém que você citou, e a solução é com "onClientRender". Acho que a melhor alternativa é usar getElementsWithinColShape mas ao mesmo tempo não seria muito bom pra performance dar loop na tabela a cada frame - só que é a única solução, o quão negativo deve ser, isso eu não sei porque depende do volume de jogadores/veículos no servidor e requer um teste pra saber mais precisamente se vale a pena. Talvez também tenham outras formas lidar com os outros veículos criados, por exemplo, um evento que é chamado quando cria um veículo por meio de um painel. Não entendi muito bem o uso dessas tabela no código, fora isso, vejo algumas coisas que precisam de otimização. Você está usando setElementCollidableWith mesmo quando não há necessidade, te recomendo usar uma verificação antes: if isElementCollidableWith( theElement, withElement ) then setElementCollidableWith( theElement, withElement, bool ) end O que você tá fazendo é quase o mesmo que isto: addEventHandler( "onClientRender", root, function() setElementCollidableWith( localPlayer, elem, false ) end ) Outro conselho também, sempre use variáveis locais sempre que puder. Também, muitos dizem que usar pairs é pouca coisa mais rápido pra executar do que ipairs (deve ser uma diferença realmente baixa).
  9. getControl por algum motivo retorna o valor booleano false que por sua vez causa esse erro quando usado em guiSetText.
  10. Use uma verificação pra saber se o elemento-GUI existe: function setControlNumber(...) local args = {...} local num = table.remove(args) if getControl(unpack(args)) then guiSetText(getControl(unpack(args)), tostring(num)) end end
  11. createMarker 'onClientMarkerHit' guiSetVisible showCursor
  12. Type /debugscript 3 and make sure there's no errors with your code. Also, please show your code here so we can see what's wrong.
  13. Se você usa o resource scores, você pode salvar na conta usando getElementData(player, "deaths") e getElementData(player, "kills"); você vai precisar destas funções e eventos: addEventHandler "onPlayerQuit" "onPlayerLogout" getElementData setAccountData "onPlayerLogin" getAccountData setElementData
  14. Devia ser isso mesmo que o Raynner disse, porque você usou getElementsByType um tempo antes (1 hora) de quando a função do setTimer deveria executar, e o recomendado é usar no mesmo momento da execução. Sobre o outro problema, lá no onClientMarkerHit, coloque uma condição hitElement == localPlayer, parece que por algum motivo, esse evento é acionado pra todos jogadores se me lembro bem.
  15. Os argumentos em setPedStat estão errados e o uso de isGuestAccount não é necessário.
  16. Ninguém vai descobrir porque não abre se você não dar informações. O que acontece quando você abre o jogo?
  17. Use addEventHandler + "onClientRender" when player hits the marker in order to keep the text visible. And removeEventHandler when player leaves the mark or when player opens the window.
  18. Como não conheço muito bem como o gamemode DayZ funciona, não sei como essa parte do setElementData deve funcionar. De qualquer forma, mostre o código aqui se puder.
  19. If you don't want it to work with marker, then just remove it from the code and all codes related to the marker as well.
  20. bindKey( "h", "down", function() if isElement(ammugui) and guiGetVisible(ammugui) then destroyElement( ammugui ) showCursor( false ) elseif not isElement(ammugui) then startSale() end end ) Try that.
  21. Vender scripts/resources não é ilegal só pelo fato de uma textura ou algo pertencer a eles, acho até a palavra 'ilegal' muito forte pra definir isso. Porém, pode depender do que vender, por exemplo texturas modificadas, bem, eu não gostaria de ver alguma coisa que eu fiz, ser modificada e vendida. Por outro lado, não faria sentido proibir a venda em um todo, porque não teria falta de ética em vender um script seu que nada mais faz alterações relacionadas ao servidor. Quanto à Rockstar Games, pessoalmente nunca fiquei sabendo de nenhuma reclamação ou proibição relacionada a isso, na verdade, eles nunca se importaram muito com o Mod MTA.
  22. Assim: local playerHealth = nil addEvent( "onClientPlayerHealthChange" ) addEventHandler( "onClientResourceStart", resourceRoot, function () playerHealth = getElementHealth(localPlayer) setTimer( function() addEventHandler( "onClientRender", root, detectHPChangeOnRender ) end, 500, 1 ) end ) function detectHPChangeOnRender() local currentHealth = getElementHealth(localPlayer) if (playerHealth ~= currentHealth) then -- playerHealth = currentHealth triggerEvent( "onClientPlayerHealthChange", localPlayer ) end end
  23. O que não está funcionando? A linha 2 parece correta, na função setTimer source retornará nil. Faça isto na função setTimer: setTimer( function(player) setPedAnimation(player, nil) end, 2000, 1, source)
×
×
  • Create New...