Gostei da sua ideia, mas me diz: poderia fazer ela dar esse hit controlado em monstros e o hit normal em players?
Digo isso pra nao ter que fazer uma formula que subtraia a defesa do player atacado.
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

Gostei da sua ideia, mas me diz: poderia fazer ela dar esse hit controlado em monstros e o hit normal em players?
Digo isso pra nao ter que fazer uma formula que subtraia a defesa do player atacado.
É porque Wand, Livro e Rod não conta ML na hora de atacar.. Por isso queria o calculo do ML e Skill e Level.
Ex: Wand, Rod e Livro teria a formula Level * ML. Axe, Sword, Club e Crossbow teria a formula Level * Skill.
Se deixar padrão as wand não vão contar o ML que seria o certo já que é mage.
Editado Dezembro 4 por iagionp
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

Entendi, mas testa ai o que eu fiz pra armas corpo-a-corpo so pra gente ter uma base:
@EDIT - tava com um erro mas arrumei, testa ai.
local id_da_arma = 4322 -- id da SWORD
local dano = 100,1000 -- dano minimo e maximo
function onCombat(cid, target)
local formula = getPlayerLevel(cid) * getPlayerSkillLevel(cid,2)
if getPlayerSlotItem(cid,5).itemid == id_da_arma or getPlayerSlotItem(cid,6).itemid == id_da_arma then
if isMonster(target) then
if combat == COMBAT_PHYSICALDAMAGE then
doCreatureAddHealth(target, -math.random(dano))
return false
end
end
elseif isPlayer(cid) and combat == COMBAT_PHYSICALDAMAGE then
doCreatureAddHealth(target, -formula)
return false
end
return true
end
Editado Dezembro 4 por amoeba13
Não funcionou.. Bateu 2100 no monstro! =/
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

Não funcionou.. Bateu 2100 no monstro! =/
Testou esse ultimo que eu editei?
@EDIT - Esqueci de avisar que eh em creaturescripts que vc tem que por isso.
TAG
registerCreatureEvent(cid, "AttackMonster")
Editado Dezembro 4 por amoeba13
Testei agora novamente, mais continuo do mesmo jeito. Coloquei no creaturescript e não deu nenhum erro, também coloquei no login o registro.
No monstro bate até 2k e pouco. =/
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

to testando mil coisas aqui, se der certo eu posto
info
Grupo: Campones
Registrado: 31/08/13
Posts: 93
Reputação: +17
Char no Tibia: Evarin Thin

troca essa tag do login.lua
registerCreatureEvent(cid, "AttackMonster")
por essa(nao sei se vai funcionar)
registerCreatureEvent(target, "AttackMonster")
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

A funcao q eu usei ta errada, teria q ser a onStatsChange. Dai do jeito que o Zaruss falou eh registerCreatureEvent(attacker, "AttackMonster")
To tentando aqui ainda...
info
Grupo: Barão
Registrado: 05/10/12
Posts: 245
Reputação: +36

amoeba usa onTarget que vai funcionar ^^
Estou no aguardo para! ^^
info
Grupo: Marquês
Registrado: 16/06/07
Posts: 1.2k
Reputação: +377
Gênero: Masculino
Char no Tibia: Nenhum

amoeba usa onTarget que vai funcionar ^^
A funcao q eu usei ta errada, teria q ser a onStatsChange. Dai do jeito que o Zaruss falou eh registerCreatureEvent(attacker, "AttackMonster")
To tentando aqui ainda...
Jovens padawans, pelo que eu entendi, fica muito mais fácil fazer usando weapons:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) function getCombatFormulas(cid, lv, maglv) local formula_min = -((lv*2 + maglv*10) * 0.2) local formula_max = -((lv*2 + maglv*10) * 0.5) return formula_min, formula_max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getCombatFormulas") function onUseWeapon(cid) local target = getCreatureTarget(cid) if isMonster(target) then doSendDistanceShoot(getThingPos(cid), getThingPos(target), CONST_ANI_ENERGY) doTargetCombatHealth(cid, target, COMBAT_ENERGYDAMAGE, -200, -800, CONST_ME_ENERGYHIT) return true end local var = numberToVariant(getCreatureTarget(cid)) return doCombat(cid, combat, var) end
E registra no weapons.xml:
<wand id="id da wand" level="level para usar" mana="mana que gasta com cada hit" event="script" value="wandtry.lua"> <vocation id="1"/> <vocation id="5"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="10" showInDescription="0"/> </wand>
Aí é só mudar o script pra usar a fórmula que você quiser e ajeitar as tags pra suas necessidades. Então é só felicidade.
No caso, isso é uma rod ou wand que dá dano de energy, adapte pro que você preferir.
Ah, salva esse código em weapons/scripts como wandtry.lua
amoeba usa onTarget que vai funcionar ^^
A funcao q eu usei ta errada, teria q ser a onStatsChange. Dai do jeito que o Zaruss falou eh registerCreatureEvent(attacker, "AttackMonster")
To tentando aqui ainda...
Jovens padawans, pelo que eu entendi, fica muito mais fácil fazer usando weapons:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) function getCombatFormulas(cid, lv, maglv) local formula_min = -((lv*2 + maglv*10) * 0.2) local formula_max = -((lv*2 + maglv*10) * 0.5) return formula_min, formula_max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getCombatFormulas") function onUseWeapon(cid) local target = getCreatureTarget(cid) if isMonster(target) then doSendDistanceShoot(getThingPos(cid), getThingPos(target), CONST_ANI_ENERGY) doTargetCombatHealth(cid, target, COMBAT_ENERGYDAMAGE, -200, -800, CONST_ME_ENERGYHIT) return true end local var = numberToVariant(getCreatureTarget(cid)) return doCombat(cid, combat, var) end
E registra no weapons.xml:
<wand id="id da wand" level="level para usar" mana="mana que gasta com cada hit" event="script" value="wandtry.lua"> <vocation id="1"/> <vocation id="5"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="10" showInDescription="0"/> </wand>Aí é só mudar o script pra usar a fórmula que você quiser e ajeitar as tags pra suas necessidades. Então é só felicidade.
No caso, isso é uma rod ou wand que dá dano de energy, adapte pro que você preferir.
Ah, salva esse código em weapons/scripts como wandtry.lua
Perfeito cara, exatamente o que eu queria...
Contando Level * ML para mages e Level * Skill para físicos.. Você é o cara, rep+ para você e outro para o amoeba13 por tentar fazer. Valeu pela atenção e muito obrigado!
info
Grupo: Campones
Registrado: 03/01/11
Posts: 34
Reputação: +2
Char no Tibia: Sem Char
Galera alguém sabe como colocar uma condição na arma para quando o player atacar um monstro hitar no máximo 800 e se atacar player o hite é calculado pelo Level e ML, dai o hite iria ser mais que 9k.
Ex: Player com a arma editada ataca outro player a arma calula o Level e ML como se fosse uma skill para tirar o dano aproximado de 9000, mais se o player ataca um monstro o dano será apenas 800 ou calcular com o Level e ML mais o hite seria próximo a 800.
Tem como fazer uma arma assim? Seria tipo uma arma PVP, que serviria mais para x1 ou WAR do que UPA.
Alguém teria ideia de como fazer se for possível? Agradeço!