Ir para conteúdo

Featured Replies

Postado

Seguinte, eu consegui fazer isso pra armas melee. Vou recapitular oq eu fiz antes de colocar minhas dúvidas: 

 

Adicionei scripts="melee.lua" em todas as armas melee em data/weapons/weapons.xml

Quote

    <melee id="2454" level="65" unproperly="1" function="default" script="melee.lua"> 

 

Criei um arquivo melee.lua em data/weapons/scripts e coloquei (baseado nas spells): 

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
combat:setParameter(COMBAT_PARAM_USECHARGES, true)

function onGetFormulaValues(player, skill, attack, factor)
	local min = (skill * 1.28) + (attack * 1.12)
	local max = (skill * 1.92) + (attack * 1.68)
	return -min, -max
end

combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onUseWeapon(player, var)
	return combat:execute(player, var)
end

 

E funciona perfeitamente, mas essa fórmula que eu calculei é uma alteração baseada na fórmula para offensive stance. Tem também a balanced stance (75% do dano) e defensive stance (50%). Minhas dúvidas: 

 

1. Como adiciono as stances na fórmula?

2. Do jeito que eu fiz precisaria adicionar script="melee.lua" em toda arma nova. Como eu faço pra, no lugar disso, substituir a fórmula padrão? Em outras palavras, fazer com que toda arma melee, mesmo as adicionadas depois, funcionem pela mesma fórmula?

3. Tem como fazer isso pra wands também? Todas as wands dando o mesmo dano por fórmula (não fixo), mudando apenas o elemento dela? 

EDIT: 4: O que é o function="default" no weapons.xml? Quais outros comandos são úteis pra essa linha?

 

Agradeço qualquer ajuda. Se interessa alguém, tô finalizando uma série de alterações pra deixar o Tibia no estilo hack'n'slash. Tá excelente, vou postar dia desses.

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

Postado

1) se não me enganou postaram no git oficial do tfs um pr para uma função de pegar a stance por Lua, ai voce só colocar if player:getStance() == 1 pra controlar

2) Voce pode fazer ele registrar não pra um id mas pra todos os itens com determinada propriedade, mas isso requer alteração na source. Contudo, se vc realmente vai mudar a fórmula de tudo, é muito mais vantajoso alterar em weapons.cpp as fórmulas direto do que utilizar scripts pra isso.

3) voce pode alterar a formula das wands tanto por script quanto por source.

4) function default é uma atribuição que voce coloca pra definir que a função daquela tag é a padrão (registrar um script), existem outros tipos de function pré definidas na source que você pode escolher sem ter q modificar nada. Um exemplo melhor disso é encontrado nas talkactions, lá alem de default você tem functions como attr e reload que são controladas diretamente pela source e você não vai achar nenhum script vinculados à ela. Outro exemplo é o exiva. Agora pra weapons eu desconheço quais são os outros functions existentes, mas posso verificar pra você na source, se quiser

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
6 hours ago, xWhiteWolf said:

1) se não me enganou postaram no git oficial do tfs um pr para uma função de pegar a stance por Lua, ai voce só colocar if player:getStance() == 1 pra controlar

2) Voce pode fazer ele registrar não pra um id mas pra todos os itens com determinada propriedade, mas isso requer alteração na source. Contudo, se vc realmente vai mudar a fórmula de tudo, é muito mais vantajoso alterar em weapons.cpp as fórmulas direto do que utilizar scripts pra isso.

3) voce pode alterar a formula das wands tanto por script quanto por source.

4) function default é uma atribuição que voce coloca pra definir que a função daquela tag é a padrão (registrar um script), existem outros tipos de function pré definidas na source que você pode escolher sem ter q modificar nada. Um exemplo melhor disso é encontrado nas talkactions, lá alem de default você tem functions como attr e reload que são controladas diretamente pela source e você não vai achar nenhum script vinculados à ela. Outro exemplo é o exiva. Agora pra weapons eu desconheço quais são os outros functions existentes, mas posso verificar pra você na source, se quiser

 

Weapons.cpp parece melhor mesmo. Não conhecia esse. Como eu faço com intervalos do tipo: 

function onGetFormulaValues(player, skill, attack, factor)
	local min = (player:getLevel() * 0.1) + (skill * 0.96) + (attack * 0.48)
	local max = (player:getLevel() * 0.1) + (skill * 1.44) + (attack * 0.72)
	return -min, -max
end

^ Para hits normais de knight. E para wands: 

function onGetFormulaValues(player, level, maglevel)
	local min = (level / 10) + (maglevel * 0.46) + 8
	local max = (level / 10) + (maglevel * 0.69) + 12
	return -min, -max
end

Pra wands daí seria bom manter o sistema original de colocar type="" no weapons.xml pra especificar o tipo de dano.

Postado

no weapons.cpp vc configura a formula pra melee, distance e pra wands. Só fuçar lá, achar as funções que definem dano e alterar elas pro q vc quiser.. claro q vc nao vai botar player:getLevel(), vc precisa usar as funções próprias da source, e não as de Lua.

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
9 horas atrás, xWhiteWolf disse:

1) se não me enganou postaram no git oficial do tfs um pr para uma função de pegar a stance por Lua, ai voce só colocar if player:getStance() == 1 pra controlar

2) Voce pode fazer ele registrar não pra um id mas pra todos os itens com determinada propriedade, mas isso requer alteração na source. Contudo, se vc realmente vai mudar a fórmula de tudo, é muito mais vantajoso alterar em weapons.cpp as fórmulas direto do que utilizar scripts pra isso.

3) voce pode alterar a formula das wands tanto por script quanto por source.

4) function default é uma atribuição que voce coloca pra definir que a função daquela tag é a padrão (registrar um script), existem outros tipos de function pré definidas na source que você pode escolher sem ter q modificar nada. Um exemplo melhor disso é encontrado nas talkactions, lá alem de default você tem functions como attr e reload que são controladas diretamente pela source e você não vai achar nenhum script vinculados à ela. Outro exemplo é o exiva. Agora pra weapons eu desconheço quais são os outros functions existentes, mas posso verificar pra você na source, se quiser

tem algo assim das stances para tfs 0.4? ontem procurei no lua functions não achei ;s

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

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.7k

Informação Importante

Confirmação de Termo