Ir para conteúdo
  • 0

Arma que só ataca Player


iagonp

Pergunta

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!

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

É 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 por iagionp
Link para o comentário
Compartilhar em outros sites

  • 0

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 por amoeba13
Link para o comentário
Compartilhar em outros sites

  • 0

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

 

<event type="combat" name="AttackMonster" script="SeuSCRIPT.lua"/>
E tem que registar no login.lua
registerCreatureEvent(cid, "AttackMonster")
Editado por amoeba13
Link para o comentário
Compartilhar em outros sites

  • 0

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. =/

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

 

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!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...