Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,006
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. Estude essas funções: createMarker onMarkerHit getElementType destroyElement Se vc não consegue criar um script a partir das funções, então vc precisa estudar lógica de programação. Recomendo este tutorial: https://www.youtube.com/watch?v=M2Af7gkbbro&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV&index=2&t=20 Infelizmente não posso te dar código pronto se vc não souber lógica de programação, pois vc apenas vai dar Ctrl+C e Ctrl+V sem aprender nada. E da próxima vez não faça Spam no fórum com este mesmo tópico. Regras do fórum:
  2. Eu criaria um carrinho RC indestrutível e invisível anexado no porta-malas e dai colocaria o player nesse carrinho. O carrinho irá acompanhar a rotação da viatura.
  3. Cara, isso é fácil resolver. Pelo menos da pra fazer igual aquela print que vc mandou como objetivo. Só fazer o retângulo roxo mais fino e mais em baixo. Se não é isso que vc quer, então ninguém sabe oq vc quer. local sx, sy = guiGetScreenSize() local x = sx/1366 local y = sy/768 function DNL_Hud() for _, component in ipairs( components ) do setPlayerHudComponentVisible( component, false ) end dxDrawRectangle(x*835, y*40, x*521, y*34, tocolor(32, 32, 33), false) -- Background dxDrawRectangle(x*835, y*75, x*521, y*6, tocolor(150, 16, 148), false) -- linha roxa dxDrawLine(x*835, y*74, x*1356, y*74, tocolor(0, 0, 0), x*2, false) -- linha horizontal dxDrawLine(x*998, y*73, x*998, y*40, tocolor(0, 0, 0), x*1, false) -- linha vertical 1 dxDrawLine(x*1170, y*73, x*1170, y*40, tocolor(0, 0, 0), x*1, false) -- linha vertical 2 end addEventHandler ("onClientRender", root, DNL_Hud)
  4. Eu faria por variável. Se tal variável for 1, dai deixa a primeira skin selecionada, senão se for 2, deixa a segunda selecionada e assim por diante. Quando vc apertar pra baixo, aumenta essa variável em +1, fazendo a seleção ir pra próxima skin. Na função que faz os dxDraw do painel, coloque as condições que verificam o valor da variável. Dai dependo desse valor, faz dxDraw de seleção na skin específica.
  5. Isso não é bug. É normal acontecer isso. Experimente bater seu veículo e depois setar a vida dele em 1000 sem usar a função fixVehicle. Ele vai ficar com a vida cheia mas vai continuar amassado. O mesmo acontece se vc cancelar o dano no veículo sem blindá-lo com setVehicleDamageProof. Vai amassar normalmente mas não vai diminuir a vida.
  6. Sim, isso se faz com bindKey. Vc anexa a função que faz a seleção ir pra baixo na tecla "arrow_d".
  7. Já tentou bindKey? Dai vc anexa a função que aconteceria se você clicasse. Em vez de vc usar onClientClick, vc usa a tecla bindada para chamar tal função.
  8. Também não entendi oq vc quer fazer. Você quer fazer a navegação do seu menu DX pelas setas do teclado em vez de clicar, é isso?
  9. Ah, por isso então. Na sua linha 14 ele está dando nil pois ele está tentando pegar a variável local da outra função, mas por ser local ela não existe fora de seu escopo. Faça Kits ser local também na linha 14. local Kits = tonumber(getElementData(localPlayer, "Kit")) or 0
  10. Mas ele está considerando Kits como nil. No entanto a condição nil or 0 deveria resultar em 0. Testei aqui e ele está funcionando normal. Mesmo sem a data, ele considera como 0. function DeltaSCRFix () if getPedOccupiedVehicle(localPlayer) then Kits = tonumber(getElementData(localPlayer, "Kit")) or 0 print ("Kits = "..tostring(Kits)) if Kits > 0 then setElementData(localPlayer, "Kit", Kits -1) outputChatBox ("╔═════════════════════════════════════════════════╗", 200, 50, 0) outputChatBox ("INFO: #FFFFFFVocê usou seu Kit de Reparo com Sucesso.", 200, 50, 0, true) outputChatBox ("INFO: #FFFFFFVocê agora tem mais "..Kits.." usos.", 200, 50, 0, true) outputChatBox ("╚═════════════════════════════════════════════════╝", 200, 50, 0) end end end addCommandHandler ("seguro", DeltaSCRFix) O que provavelmente está acontecendo é que vc está anulando a variável global Kits em outra parte do código. Pois vc não está usando variável local.
  11. Bem estranho... Era pra Kits ser igual a 0 em caso de falha do tonumber...
  12. onPlayerLogin - Carrega os dados da conta dele com getAccountData. onPlayerLogout - Salva os dados na conta dele com setAccountData. Mas essas funções são server-side, vc precisará de triggers.
  13. Nesse caso ele estava entrando no else pois getPedOccupiedVehicle não retorna true se existir um veículo, ele retorna o próprio veículo. Logo aquela primeira condição sempre seria false.
  14. Tente assim: function DeltaSCRFix () if getPedOccupiedVehicle(localPlayer) then outputChatBox ("╔═════════════════════════════════════════════════╗", 200, 50, 0) outputChatBox ("ERRO: #FFFFFFVocê usou seu Kit de Reparo com Sucesso", 200, 50, 0, true) outputChatBox ("╚═════════════════════════════════════════════════╝", 200, 50, 0) else outputChatBox ("╔═════════════════════════════════════════════════╗", 200, 50, 0) outputChatBox ("ERRO: #FFFFFFVocê precisa estar em um veículo para usar o Seguro", 200, 50, 0, true) outputChatBox ("╚═════════════════════════════════════════════════╝", 200, 50, 0) end end addCommandHandler ("seguro", DeltaSCRFix)
  15. Nunca se usa localPlayer como parâmetro de função. Ele é uma variável nativa do client.
  16. Existe um resource nativo no MTA que faz o player "dropar" os itens ao morrer chamado "deathpickups". E dai os itens ficam com os pickups no chão e o player que passar por ali pode pegar. Mas se vc quer mesmo criar um próprio, que não seja com pickups. Vc vai precisar de: onPlayerWasted addCommandHandler getPlayerMoney setPlayerMoney getPedWeapon giveWeapon Se você for usar um painel pra ver os itens do jogador: guiCreateWindow guiCreateGridList guiGridListAddColumn guiGridListAddRow guiCreateButton guiGridListGetSelectedItem guiGridListGetItemText onClientGUIClick Se você for mostrar os itens do jogador no chat: outputChatBox
  17. Caso queira saber mais sobre operadores relacionais, leia na documentação LUA em português: http://www.lua.org/manual/5.1/pt/manual.html#2.5.2
  18. Prosseguindo com o off-post... Não considero minha mensagem como backseat moderation pois eu apenas mencionei como ter uma conduta que considero melhor nesses casos. Em nenhum momento eu falei que EU ia punir alguém ou que tal conduta é contra as regras. Considero mais uma sugestão de conduta do que uma repreensão. Infelizmente isso varia de acordo com a interpretação de quem leu. Se dar sugestões de conduta é algo que só pode ser feito pela moderação, dai peço desculpas. Além disso, por não haver violação de regras, considero inválido denunciar a mensagem para alguém da moderação e também não acho grave o suficiente para tal ação. No entanto eu optei pela sugestão pois o uso excessivo do "Quote" é muito comum no fórum e incomoda bastante quando a mensagem repetida é muito grande, ocasionando Spam.
  19. I was trying to use the function getTrainTrack, but this function is only available from version 1.6 onwards, but actually we are on version 1.5.6 and this function still doesn't exist. I read the build information and this function was created in 2015. Why is it not available? If the function was removed, I think the wiki page should advise this.
  20. Eu fiz algo parecido anexando um createColSphere no trem. Dai quando o vagão colidir nesse colShape, anexa nele.
  21. @gustavorn não precisa citar o texto do autor do post se só tem a sua resposta.
×
×
  • Create New...