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
Group: Conde
Joined: 29/04/09
Posts: 904
Reputation: +389
Tibia Character: 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.
Edited Dezembro 4 by iagionp
info
Group: Conde
Joined: 29/04/09
Posts: 904
Reputation: +389
Tibia Character: 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
Edited Dezembro 4 by amoeba13
Não funcionou.. Bateu 2100 no monstro! =/
info
Group: Conde
Joined: 29/04/09
Posts: 904
Reputation: +389
Tibia Character: 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")
Edited Dezembro 4 by 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
Group: Conde
Joined: 29/04/09
Posts: 904
Reputation: +389
Tibia Character: Jabuti Selvagem

to testando mil coisas aqui, se der certo eu posto
info
Group: Campones
Joined: 31/08/13
Posts: 93
Reputation: +17
Tibia Character: Evarin Thin

troca essa tag do login.lua
registerCreatureEvent(cid, "AttackMonster")
por essa(nao sei se vai funcionar)
registerCreatureEvent(target, "AttackMonster")
info
Group: Conde
Joined: 29/04/09
Posts: 904
Reputation: +389
Tibia Character: 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
Group: Barão
Joined: 05/10/12
Posts: 245
Reputation: +36

amoeba usa onTarget que vai funcionar ^^
Estou no aguardo para! ^^
info
Group: Marquês
Joined: 16/06/07
Posts: 1.2k
Reputation: +377
Gender: Masculino
Tibia Character: 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
Group: Campones
Joined: 03/01/11
Posts: 34
Reputation: +2
Tibia Character: 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!