Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,992
  • Joined

  • Last visited

  • Days Won

    183

Everything posted by Lord Henry

  1. Já tentou traduzir os erros e descobrir oq significam?
  2. Putz, que bosta hein.... Hahauahuahauah Sobre a sua dúvida de colocar 2 jogadores juntos sem dar conflito com outras duplas, a minha sugestão é que vc coloque os dois dentro de uma table e essa table dentro de uma table global. Exemplo marotamente maroto: local globalLixeiros = {} -- Onde as duplas ficam, dentro de suas tables. function criaDuplas (thePlayer, cmd, theDuplaName) -- Cria a table de cada dupla. if getPlayerFromPartialName (theDuplaName) and getPlayerFromPartialName (theDuplaName) ~= thePlayer then -- Se existe um jogador com o nick informado e esse jogador informado não é o mesmo que o jogador que executou o comando (evita fazer dupla com si mesmo), então: if getDupla (getPlayerFromPartialName (theDuplaName)) then -- Se o jogador que foi informado no comando já tem uma dupla, então: outputChatBox ("O jogador '"..theDuplaName.."' já está em uma dupla de lixeiros.", thePlayer, 255, 150, 0) -- Manda este aviso ao jogador que executou o comando. else -- Se o jogador informado não está em uma dupla de lixeiros ainda, então: local theDupla = {thePlayer, getPlayerFromPartialName (theDuplaName)} -- Cria a table da dupla, inserindo o jogador que executou o comando e o jogador que ele informou na mesma table dupla. table.insert (globalLixeiros, theDupla) -- Insere a table theDupla na table globalLixeiros. outputChatBox ("Você colocou '"..theDuplaName.."' como sua dupla de lixeiro.", thePlayer) -- Manda este output ao cara que executou o comando. end end end addCommandHandler ("dupla", criaDuplas) -- Uso do comando: /dupla NickDoSeuAmigo function getDupla (theLixeiro) -- Função que retorna a dupla do jogador informado. for i, dupla in ipairs (globalLixeiros) do -- Para cada dupla da table globalLixeiros, faça: if dupla[1] == theLixeiro then -- Se o jogador informado está como primeiro elemento desta dupla, então: return dupla[2] -- Retorna o segundo elemento desta dupla. elseif dupla[2] == theLixeiro then -- Se o jogador informado está como segundo elemento desta dupla, então: return dupla[1] -- Retorna o primeiro elemento desta dupla. end end end function qualquerCoisa (thePlayer, cmd) -- Função que manda um "Oi" para a dupla do jogador que usou o comando. if getDupla (thePlayer) then -- Se o jogador que executou o comando tiver uma dupla, então: outputChatBox (getPlayerName(thePlayer).."#FFFFFF: Oi!", getDupla (thePlayer), 255, 255, 255, true) -- Manda esse outputChatBox pro outro player da dupla. end end addCommandHandler ("eae", qualquerCoisa) function getPlayerFromPartialName(name) -- Função útil que pelo nome já sabe pra que serve. local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end A table deve ficar tipo isso: local globalLixeiros = { {playerElement01, playerElement02}, -- Dupla 1. {playerElement04, playerElement07}, -- Dupla 2. {playerElement05, playerElement08} -- Dupla 3. }
  3. function blockDead() if getElementHealth(localPlayer) <= 30 then -- ERRO: localPlayer nem sempre é quem está levando dano. Quem sempre está levando dano é o source. if not getElementData(localPlayer, "jobSAMU") then -- Se o player NÃO estiver trabalhando como SAMU, então: if not getElementData(localPlayer, "playerFallen") then -- Se o player NÃO estiver aguardando atendimento do SAMU, então: (ERRO) cancelEvent() -- Cancela o dano no player. ERRO: Vai cancelar o dano em jogadores saudáveis. Pois eles não estão trabalhando no SAMU e não estão aguardando atendimento do SAMU. E a verificação de vida nem sempre é deles. end end end end addEventHandler("onClientPlayerDamage", localPlayer, blockDead) Eu faria algo assim: function blockDead() if source == localPlayer then -- Se o elemento que tomou dano for o localPlayer, então: (Garante que essa função só funcionará no cliente do localPlayer que estiver tomando dano. Além de evitar que source seja outro tipo de elemento.) if getElementHealth (source) <= 30 then -- Se o jogador que tomou dano ficar com 30 ou menos de vida após o dano, então: if not getElementData (source, "jobSAMU") then -- Se o player que domou dano NÃO estiver trabalhando como SAMU, então: if getElementData (source, "playerFallen") then -- Se o player que tomou dano estiver SIM aguardando atendimento do SAMU, então: cancelEvent() -- Cancela o dano no player, fazendo com que a vida volte ao que estava antes desse dano. -- Se o jogador estiver com 45 de vida e o dano for de 15 ou mais, então ele não vai perder vida, pois ficaria com 30 ou menos. end end end end end addEventHandler("onClientPlayerDamage", localPlayer, blockDead) Obs: Não testei. E pelo que andei olhando no resto do código, tem outros erros também. Como por exemplo uma variável que não existe sendo usada em comparação.
  4. Putz, dai tu complica né mano. Vc baixa o resource e n entende nem a lógica dele? E dai como vc espera que a gente te ajude se vc não sabe nem como ele funciona? Quer que a gente faça tudo pra vc? Aliás se vc soubesse lógica de programação, vc já poderia descobrir o que está errado ali.
  5. GetAccount não funciona a partir de um playerElement. Somente a partir de uma string de accountName. Substitua por getPlayerAccount.
  6. Então vou explicar pra vc e dai vc arruma: function blockDead() if getElementHealth(localPlayer) <= 30 then -- Se o player estiver com 30 ou menos de vida, então: if not getElementData(localPlayer, "jobSAMU") then -- Se o player NÃO estiver com a data jobSAMU, então: if not getElementData(localPlayer, "playerFallen") then -- Se o player NÃO estiver com a data playerFallen, então: cancelEvent() -- Cancela o dano no player. end end end end addEventHandler("onClientPlayerDamage", localPlayer, blockDead)
  7. Ainda tenho mais 2 personagens pra distribuir. Quem quiser só me pedir o link via mensagem privada. Mas só passo pra quem for ativo no fórum e que ajuda a galera.
  8. Bem estranho isso. Aparentemente vc colocou algum objeto com textura modificada. A propósito, a imagem é esta:
  9. Ali na linha 21, me explique cada linha da função blockDead. function blockDead() if getElementHealth(localPlayer) <= 30 then -- COMENTÁRIO AQUI if not getElementData(localPlayer, "jobSAMU") then -- COMENTÁRIO AQUI if not getElementData(localPlayer, "playerFallen") then -- COMENTÁRIO AQUI cancelEvent() -- COMENTÁRIO AQUI end end end end addEventHandler("onClientPlayerDamage", localPlayer, blockDead)
  10. Isso acontece pois é necessário 2 funções separadas com um interpolateBetween em cada uma para poder fazer duas coisas simultâneas, uma do alpha e outra da cor. Se usar a mesma função para 2 coisas diferentes, os valores entrarão em conflito.
  11. function convertTime (ms) local min = math.floor (ms/60000) local sec = math.floor (ms/1000) return min, sec end
  12. Sua função convertTime está errada.
  13. Evite flood de tópicos. Aguarde seu outro tópico ser resolvido antes de criar outro.
  14. Favor não fazer spam de tópicos, mantenha-se no tópico anterior:
  15. É inviável ficar fazendo condição pra cada resolução.
  16. Não precisa. Ela simplesmente será false na primeira execução e depois será true. (not false = true) Ela foi definida na linha 8 como sendo sempre o oposto de seu valor atual. Ou seja, a cada execução ela alterna entre false e true.
  17. Olá. Já tentou redimensionar o texto pelo parâmetro scale dele?
  18. Assista esse vídeo antes de qualquer coisa:
  19. Pra criar um scripter, vc primeiro precisa ensinar alguém programação, dai ele pode se tornar um scripter. Pra criar um script, dai vc primeiro precisa aprender lógica de programação e algorítmos. Recomendo estas videoaulas: https://www.youtube.com/watch?v=M2Af7gkbbro&amp;list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV&amp;index=2&amp;t=20
  20. Cara, testei o código e está funcionando normal.
  21. Então nos mostre seu meta.xml. Não vi nenhum erro no código acima.
  22. Pelo que eu entendi, ele quer que o dono da base tenha o poder de selecionar um jogador (a partir de uma lista com os players que estão dentro do collider) e kická-lo do servidor. Na lista só aparecem os nomes dos players que estiverem dentro do collider. Ele não quer kickar direto ao colidir, quer kickar ao selecionar o player da lista.
  23. dxDrawText não pode estar dentro de um timer, ele precisa estar dentro de uma função com evento onClientRender. Exemplo juntando com o código do Danilin: local screenW, screenH = guiGetScreenSize() function getTimeLeft(timer) if isTimer(timer) then local ms = getTimerDetails(timer) local m = math.floor(ms/60000) local s = math.floor((ms-m*60000)/1000) if m < 10 then m = "0"..m end if s < 10 then s = "0"..s end return m..":"..s else return "Nenhum" end end local theTimer = setTimer (function() outputChatBox ("Tempo acabou.") end, 10000, 1) addEventHandler ("onClientRender", getRootElement(), function () dxDrawText("Tempo restante: "..getTimeLeft(theTimer), screenW * 0.3975, screenH * 0.4935, screenW * 0.6010, screenH * 0.5169, tocolor(255, 255, 255, 255), 1.00, "default" , "left", "top", false, false, false, true, false) end) Obs: Código testado.
×
×
  • Create New...