Ir para conteúdo

Featured Replies

Postado

tHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.pngtHmgbaG.png

AMULETO WHOHOOO

 

 

 

É um amuleto que, quando está equipado, nega x% do dano provido de monstros.

 

(data/creaturescripts/scripts/amulet.lua

http://pastebin.com/w5wzaXyL(revisão - recomendado)

http://pastebin.com/LW3Z34v9 (versão inicial)

 

(data/creaturescripts/scripts/login.lua)

Adicione esta linha:
registerCreatureEvent(cid, "Amulet")
 

(data/creaturescripts/creaturescripts.xml)

Adicione esta linha:
<event type="statschange" name="Amulet" event="script" value="amulet.lua"/>
 
E pronto!
No script a variável "porcentagem" possui o valor 40 como padrão, que é a porcentagem do dano que será BLOQUEADA. Ou seja, receberá ainda 60% do dano
Na variável pt_br = false, troque false por true para que a mensagem seja exibida em português
 

 

obs. o ID do amuleto é o 2218

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

koe

  • Respostas 10
  • Visualizações 1.2k
  • Created
  • Última resposta

Top Posters In This Topic

Postado

só tem um problema, o parametro 'value' desse callback (statschange) é o valor do dano bruto que será recebido (já com as defesas descontadas) e quando vc faz outro combat, ele irá novamente descontar as defesas e o dano já ficará menor por conta disso. 

Suponha que eu tome 300 de dano mas esteja com uma ótima defesa, irei tomar apenas 100 de dano. O value terá 100 como valor, ao fazer outro combat com 100 de dano eu irei tomar apenas 34 por conta das defesas. NOTE que eu nem utilizei a porcentagem, se não o dano ficaria extremamente inferior.

Agora com a porcentagem:
digamos que minha defesa me faz tomar apenas 1/3 do dano (não sei quanto é ao certo, precisaria fazer testes pois isso varia de cada TFS), se eu tomo 300, o value será 100. Agora eu multiplico por 0.4 e irei tomar só 40 de dano mas daí vc faz outro combat pra esse 40 e com os descontos de defesa eu tomo só 14 de dano ao invés de 60. Pra arrumar isso você tem que ver o quão mais fraco está o dano através de prints e verificando quanto ele diz no print e quanto ele realmente remove na vida, e aí achar uma constante pra multiplicar esse valor e tornar ele correto.

Outra coisa, sugiro trocar essas linhas:

doPlayerSendTextMessage(cid,MESSAGE_STATUS_DEFAULT,"Protegeu ".. (100 - porcentagem).."% de "..value.." ("..blocked..")")
doPlayerSendCancel(cid,"Protegeu "..(100 - porcentagem).."% de "..value.." ("..blocked..")")

Porque você mesmo disse que se tiver 40 ele protege 60 ;]

Alias, faça o teste, veja se o blocked que aparece na mensagem é o quanto você perde de life!

Por ultimo, essa linha está errada:
 

doAreaCombatHealth(attacker, combat, getCreaturePosition(cid), 0, -blocked, -blocked, -1)

 

o correto seria:

doAreaCombatHealth(attacker, combat, getCreaturePosition(cid), {1}, -blocked, -blocked, 255)

pois o parametro area necessita de uma área (um array). E o efeito -1 não existe, se você quer instruir que o combat não deve ter efeitos você tem que usar o CONST_ME_NONE que é representado pelo último dígito de informação do byte (255)

Mas eu sugiro que você use target combat e não area combat, 

doTargetCombatHealth(cid, target, type, min, max, effect)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

@xWhiteWolf, olá, obrigado pela resposta ^^

Sobre essa parada de defesa, ela só funciona contra o ataque físico dos bichos (o dano "elemental" não é descontado na armadura, só no absorbPercentElement). Pensando nisso, criei um monstro com dano físico fixo de 100. Com o amuleto protegendo 40%, o dano era fixo de 60 (sem defesa alguma). Adicionei um demon helmet. Dano médio: 55. Adicionei um demon shield. Dano médio: 48. Adicionei uma demon armor. Dano médio: 40. Adicionei uma demon legs. Dano médio: 30. Dá pra concluir que sua primeira teoria não é aplicada realmente, pois o dano não ficou extremamente baixo (considerando que era apenas 100 de dano e era um demon set)

Portanto, acho que não há problema nessa parte.

 

Sobre as linhas de texto: removi a doPlayerSendTextMessage e pus a linha do doPlayerSendCancel abaixo da linha do doTargetCombatHealth para que a mensagem seja exibida ao invés da mensagem padrão do tfs

 

Sobre o doAreaCombatHealth: ("o correto seria"?!?! Mas a minha linha já funciona o_O). O parâmetro não precisa de uma área em array, dá pra usar 0 para que fique somente em um SQM, ou 1 para que fique um círculo de 9, e assim por diante

Além disso, o -1 significa que efeito nenhum será mostrado, deixando apenas o efeito do melee ou das magias que já seriam mostrados normalmente, pra ficar algo natural e não um efeito aparecendo toda hora que você perde 1 de hp. (E funciona)

 

(/\ tudo baseado no tfs 0.4)

--- // ---

 

De qualquer forma, modifiquei um pouco o script, acho que ficou melhor

(aceito que ponham do pastebin pra cá com identação, pois não sei como hehe)

koe

Postado

agora ficou bem melhor, nice script bwt. 
Só lembrando que aqui

doTargetCombatHealth(attacker, cid, combat, -new_dmg, -new_dmg, -1)

 

tinha que ser

doTargetCombatHealth(attacker, cid, combat, -new_dmg, -new_dmg, 255)

-1 não existe então você tá simplesmente causando um erro na sua função, por isso some o efeito. No seu tfs pode não dar nada mas em outros tem grande chance de dar erros. 255 é o efeito invisivel padrão, melhor prevenir doque remediar haha

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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