Ir para conteúdo

Featured Replies

Resolvido por roriscrave

Ir para solução
  • Respostas 14
  • Visualizações 2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @Gustavo Ntos boa pergunta, a maioria dos membros sempre pedem coisas com porcentagem, mais a questão é que algumas coisas são possíveis e outras não, a sua por exemplo: Pega o Hp do Player/Monst

  • function onCastSpell(cid, var) local effect = 10 -- efeito da magia local target = getCreatureTarget(cid) local Hp = (getCreatureHealth(target))*0.2 if isCreature(target) then doCreatureAddHealth(ta

Posted Images

Postado

@Gustavo Ntos boa pergunta, a maioria dos membros sempre pedem coisas com porcentagem, mais a questão é que algumas coisas são possíveis e outras não, a sua por exemplo:

Pega o Hp do Player/Monstro e mandar a spell retorna um dano de 20% sobre o total de hp que o target tem, precisaria de uma mudança na source, uma puta de uma mudança! 

Resumindo: A menos que você seja um programador para fazer isso, se contenta no last hit mesmo.

Outra coisa bem comum que outros membros pedem, é algum script que quem tirou tanto porcento do hp do target, ganha tal coisa, quem tirou 20% ganha tal coisa, e assim por diante.

Consultei um colega que entende da questão, sobre contar nas task para quem deu 40% de dano no monstro e a resposta dele sobre isso foi a seguinte:

Spoiler

não tem como eu verificar quem tirou 40% da vida do monstro via Lua. Ele só executa os callbacks onKill e onDeath pra quem deu o last hit OU pra quem tirou mais dano. Teria que mudar isso na source pra ele retornar todo mundo que bateu no monstro e retornar também o damage map (um vetor de quanto cada pessoa tirou de life do monstro) e aí com esses dados você poderia ver quem tirou mais de 40% da vida do monstro e contar a task pra ele.

 

outra explicação que ele me deu foi essa:

Spoiler

pra eu "tirar na sorte" eu precisaria da lista de pessoas que atacou o monstro e eu não tenho isso. Não tenho e não tenho como gerar. Na source ela existe, então eu precisaria arrumar uma forma de passar esse vetor chamado damagemap na source pra Lua e aí rodar todo o vetor

function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified)
for player, dano in ipairs(damagemap) do
 if isPlayer(player) and dano >= getCreatureMaxHealth(cid) * 0.4 then
    -- conta o player como se tivesse feito a task
end
end
return true
end


se  vc executar isso ele vai dar erro pq damagemap não existe... vc precisaria modificar na source a função onDeath pra ele rodar usando os seguintes parametros:

function onDeath(cid, corpse, damagemap)
 aí quando vc fazer o for de damagemap ele verificaria todo o vetor de quem matou e nesse caso eu to pensando num vetor que seria mais ou menos assim:

damagemap = {
[uid player 1] = quanto de dano ele tirou,
[uid player 2] = quanto ele tirou,
:
:
}

PORÉM, como isso não está implementado, não é possível. 

 

Postado

@KotZletY na verdade não precisa de nenhuma mudança na source para a spell retirar 20% do hp.... basta ele botar a função no script:

 

local Hp = getCreatureHealth(cid)*0.2 -- salva o valor de 20% da vida do jogador
doCreatureAddHealth(cid, -health) -- remove o valor de 20% da vida do jogador

basta ele saber usar e montar o script

Editado por roriscrave (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo