-
Posts
3,992 -
Joined
-
Last visited
-
Days Won
183
Everything posted by Lord Henry
-
Já tentou traduzir os erros e descobrir oq significam?
-
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. }
-
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.
-
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.
-
GetAccount não funciona a partir de um playerElement. Somente a partir de uma string de accountName. Substitua por getPlayerAccount.
-
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)
-
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.
-
Bem estranho isso. Aparentemente vc colocou algum objeto com textura modificada. A propósito, a imagem é esta:
-
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)
-
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.
-
function convertTime (ms) local min = math.floor (ms/60000) local sec = math.floor (ms/1000) return min, sec end
-
Sua função convertTime está errada.
-
Evite flood de tópicos. Aguarde seu outro tópico ser resolvido antes de criar outro.
-
Favor não fazer spam de tópicos, mantenha-se no tópico anterior:
-
É inviável ficar fazendo condição pra cada resolução.
-
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.
-
Olá. Já tentou redimensionar o texto pelo parâmetro scale dele?
-
Assista esse vídeo antes de qualquer coisa:
-
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&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV&index=2&t=20
-
Cara, testei o código e está funcionando normal.
-
Então nos mostre seu meta.xml. Não vi nenhum erro no código acima.
-
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.
-
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.