Ir para conteúdo
  • Cadastre-se

(Resolvido)PISO QUE DA DANO ALEATORIO


Ir para solução Resolvido por Storm,

Posts Recomendados

Galera estou com um problema, eu estou com uma script que ela da x porcento de dano ao pisar em cima do piso, gostaria de saber como faço esse dano ficar aleatorio

Por exemplo

Gostaria que eu conseguisse colocar os dano nas pessoas

Por exemplo:

Pisou e tirou 50% de vida, pisou e tirou 60%, pisou e tirou 20% 

No caso acho que seria o math.random mais infelizmente não consegui.

Aqui esta o script que estou usando

function onStepIn(cid, item, position, fromPosition)
local percent = 30
if not isPlayer(cid) then 
return true
end
local hp = (percent*getCreatureMaxHealth(cid)
doSendMagicEffect(getThingPos(cid),6)
doSendAnimatedText(getCreaturePosition(cid), "- "..hp, TEXTCOLOR_LIGHTBLUE)
doCreatureAddHealth(cid, -hp)
return true
end

 

Editado por Gnius (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local percent = {min = 10, max = 60} -- entre 10% a 60% de dano.

function onStepIn(cid, item, position, fromPosition)
  if not isPlayer(cid) then 
    return true
  end

  local damage = math.ceil((math.random(percent.min, percent.max) * 0.01) * getCreatureMaxHealth(cid))

  doSendMagicEffect(getThingPos(cid), 6)
  doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
  doCreatureAddHealth(cid, - damage)

  return true
end

 

Link para o post
Compartilhar em outros sites
8 horas atrás, Lyu disse:

local percent = {min = 10, max = 60} -- entre 10% a 60% de dano.

function onStepIn(cid, item, position, fromPosition)
  if not isPlayer(cid) then 
    return true
  end

  local damage = math.ceil((math.random(percent.min, percent.max) * 0.01) * getCreatureMaxHealth(cid))

  doSendMagicEffect(getThingPos(cid), 6)
  doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
  doCreatureAddHealth(cid, - damage)

  return true
end

 

 

Muito bom, mais eu queria que eu colocasse os dano, e não fosse entre 10% a 60%

por exemplo

Eu gostaria que ele tomasse apenas 10% ou 20% então ele tomaria só um desses dois dano e não um dano entre 10% a 20%
Teria como?
Mas mesmo assim ja dei rep+

Editado por Gnius (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Gnius Não deu pra entender muito bem, então fiz desse jeito aqui

local danos = { 
    -- Configure aqui
    -- Deverá ser sempre uma sequencia com virgula na penultima, podendo ser adicionada quantas quiser.
    -- A script basicamente sorteia um valor dessa tabela e retorna em DANO ao player
    [1] = 50000,
    [2] = 60000,
    [3] = 70000
    
}

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then 
        return true
    end
    
    local damage = danos[math.random(1, #danos)]
    
    doSendMagicEffect(getThingPos(cid), 6)
    doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
    doCreatureAddHealth(cid, - damage)
    return true
end

 

Link para o post
Compartilhar em outros sites
6 minutos atrás, Sttorm disse:

@Gnius Não deu pra entender muito bem, então fiz desse jeito aqui


local danos = { 
    -- Configure aqui
    -- Deverá ser sempre uma sequencia com virgula na penultima, podendo ser adicionada quantas quiser.
    -- A script basicamente sorteia um valor dessa tabela e retorna em DANO ao player
    [1] = 50000,
    [2] = 60000,
    [3] = 70000
    
}

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then 
        return true
    end
    
    local damage = danos[math.random(1, #danos)]
    
    doSendMagicEffect(getThingPos(cid), 6)
    doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
    doCreatureAddHealth(cid, - damage)
    return true
end

 

 

Quase perfeito, mas a vida não esta em %, assim alguns seria prejudicado por ter menas vida.
Teria como por em porcento? 

Editado por Gnius (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Gnius Tenta assim então

local danos = {10, 20, 30} -- em %

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then 
        return true
    end
    
    local dmg = danos[math.random(1, #danos)]
    local damage = math.ceil((dmg * 0.01) * getCreatureMaxHealth(cid))
    
    doSendMagicEffect(getThingPos(cid), 6)
    doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
    doCreatureAddHealth(cid, - damage)
    return true
end

 

Link para o post
Compartilhar em outros sites

 

22 minutos atrás, Sttorm disse:

@Gnius Tenta assim então


local danos = {10, 20, 30} -- em %

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then 
        return true
    end
    
    local dmg = danos[math.random(1, #danos)]
    local damage = math.ceil((dmg * 0.01) * getCreatureMaxHealth(cid))
    
    doSendMagicEffect(getThingPos(cid), 6)
    doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
    doCreatureAddHealth(cid, - damage)
    return true
end

 

 

Agora sim esta perfeito, obrigado <3
Mais sem querer ser chato, teria como por pra aparecer x efeito a cada % usado?
Por exemplo:

Ele tirou 20% ira aparecer x effect

Ele tirou 10% ira aparecer x effect

Cada effect para cada porcento

Editado por Gnius (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Tenta assim bródi

 

Instruções em vermelho:

-- {Fator de Porcentagem, efeito} conforme o cód sugerido pelo Sttorm, bem otimizado por ele :D
local danos = { {0.1, 3}, {0.2, 6}, {0.3, 5}} 

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then 
        return true
    end
    
    local dmg = danos[math.random(1, #danos)]
    local damage = dmg[1] * getCreatureMaxHealth(cid) -- Calculo otimizado com apenas 1 multiplicação, otimizado por mim :D
    
    doSendMagicEffect(getThingPos(cid), dmg[2])
    doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
    doCreatureAddHealth(cid, - damage)
    return true
end

 

Editado por dirso
otimização do cálculo de dano e fator % (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@Gnius 

local danos = { {10, 3}, {20, 6}, {30, 5}} -- {Porcentagem, effect} 

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then 
        return true
    end
    
    local dmg = danos[math.random(1, #danos)]
    local damage = math.ceil((tonumber(dmg[1])* 0.01) * getCreatureMaxHealth(cid))
    
    doSendMagicEffect(getThingPos(cid), dmg[2])
    doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
    doCreatureAddHealth(cid, - damage)
    return true
end

 

Link para o post
Compartilhar em outros sites
1 hora atrás, Sttorm disse:

@Gnius 


local danos = { {10, 3}, {20, 6}, {30, 5}} -- {Porcentagem, effect} 

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then 
        return true
    end
    
    local dmg = danos[math.random(1, #danos)]
    local damage = math.ceil((tonumber(dmg[1])* 0.01) * getCreatureMaxHealth(cid))
    
    doSendMagicEffect(getThingPos(cid), dmg[2])
    doSendAnimatedText(getThingPos(cid), '- ' .. damage, TEXTCOLOR_LIGHTBLUE)
    doCreatureAddHealth(cid, - damage)
    return true
end

 

 

Funcionou perfeitamente, obrigado <3

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo