Ir para conteúdo
  • 0

[Resolvido] Knight spell ! Rep++


wizav01

Pergunta

boa rapeize, alguem pode ajudar, como faço uma spell, que ela sejá apenas para o knight, ou vocation 4 - 8...
eu não quero escrever ela e ativar, quero que ela seja propria do personagem sem escrever nada sem ativar...

bom seguinte, quando o knight tiver com vida menor que 30% do total da vida dele... ele ganha + 20 de skill, axe sword e club... tem como alguém ajudar ? 

lembrando, eu não quero ativar ela igual utito tempo, e não quero que tenha um tempo determinado, quero que seja do personagem... ta com -30% de life ele ganha skill... 
agradeço desde já !

Editado por wizav01
Mudança de plano
Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 1
--<event type="statschange" name="SpellBuff" event="script" value="spellbuff.lua"/>--
--<event type="login" name="RegisterBuff" event="script" value="spellbuff.lua"/>--

local vocations = {4, 8} -- ID das vocations que receberao o buff
local percentageToActive = 0.30 -- 30%
local bonusSkill = 20 -- Quantidade de skill que o buff vai dar

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, bonusSkill)
setConditionParam(condition, CONDITION_PARAM_SUBID, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)

function onStatsChange(cid, attacker, type, combat, value)
	local health_now, health_max = getCreatureHealth(cid), getCreatureMaxHealth(cid)
	if (type == STATSCHANGE_HEALTHGAIN) then
		if (health_now + value) > math.ceil(health_max * percentageToActive) then
			doRemoveCondition(cid, CONDITION_ATTRIBUTES, 10)
		end
	elseif (type == STATSCHANGE_HEALTHLOSS)	then
		if (health_now - value) > 0 and (health_now - value) < math.ceil(health_max * percentageToActive) then
			doAddCondition(cid, condition)
		end	
	end
	return true
end

function onLogin(cid)
	if isInArray(vocations, getPlayerVocation(cid)) then
		registerCreatureEvent(cid, "SpellBuff")
	end
	return true
end

 

Editado por Woox
Link para o comentário
Compartilhar em outros sites

  • 0
17 horas atrás, Woox disse:

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 20)
setConditionParam(condition, CONDITION_PARAM_SUBID, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)

function onStatsChange(cid, attacker, type, combat, value)
	local health_now, health_max = getCreatureHealth(cid), getCreatureMaxHealth(cid)
	if (type == STATSCHANGE_HEALTHGAIN) then
		if (health_now + value) > math.ceil(health_max * 0.30) then
			doRemoveCondition(cid, CONDITION_ATTRIBUTES, 10)
		end
	elseif (type == STATSCHANGE_HEALTHLOSS)	then
        if (health_now - value) > 0 and (health_now - value) < math.ceil(health_max * 0.30) then
			doAddCondition(cid, condition)
        end	
	end
	return true
end

 

Aonde colocamos ela? globalevents? tem que registar no login?

como colocar pra enquanto o personagem ficar com 30% de hp ela ficar ativa?
se caso ele healar e ficar com + de 30% de hp essa "passiva" acabe?

Editado por diarmaint
Link para o comentário
Compartilhar em outros sites

  • 0
47 minutos atrás, diarmaint disse:

Aonde colocamos ela? globalevents? tem que registar no login?

como colocar pra enquanto o personagem ficar com 30% de hp ela ficar ativa?
se caso ele healar e ficar com + de 30% de hp essa "passiva" acabe?

Tinha postado tarde, tava cansado pra explicar, é creaturescript. Editei o script e deixei esses dados configuráveis e já vai com login pra registrar, o buff já está funcionando desta maneira, ativa com -30% de life, acima disso é desativado.

Link para o comentário
Compartilhar em outros sites

  • 0
8 minutos atrás, Woox disse:

Tinha postado tarde, tava cansado pra explicar, é creaturescript. Editei o script e deixei esses dados configuráveis e já vai com login pra registrar, o buff já está funcionando desta maneira, ativa com -30% de life, acima disso é desativado.

o que mais eu poderia usar no lugar desse 

setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 20)

para outras vocações?

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, diarmaint disse:

o que mais eu poderia usar no lugar desse 


setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, 20)

para outras vocações?

CONDITION_PARAM_STAT_MAGICLEVEL
CONDITION_PARAM_SKILL_FIST
CONDITION_PARAM_SKILL_CLUB
CONDITION_PARAM_SKILL_SWORD
CONDITION_PARAM_SKILL_AXE
CONDITION_PARAM_SKILL_DISTANCE
CONDITION_PARAM_SKILL_SHIELD

 

Editado por Woox
Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, Woox disse:

CONDITION_PARAM_SKILL_FIST
CONDITION_PARAM_SKILL_CLUB
CONDITION_PARAM_SKILL_SWORD
CONDITION_PARAM_SKILL_AXE
CONDITION_PARAM_SKILL_DISTANCE
CONDITION_PARAM_SKILL_SHIELD

 

Algo além de skills? tipo almento de dano ?

increasemagicpercent

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, diarmaint disse:

Algo além de skills? tipo almento de dano ?


increasemagicpercent

 

Não nesse caso, você pode encontrar os skills e stats que podem ser alterados na lib 000-constant.lua do seu servidor.

Link para o comentário
Compartilhar em outros sites

  • 0
18 horas atrás, Woox disse:

--<event type="statschange" name="SpellBuff" event="script" value="spellbuff.lua"/>--
--<event type="login" name="RegisterBuff" event="script" value="registerbuff.lua"/>--

local vocations = {4, 8} -- ID das vocations que receberao o buff
local percentageToActive = 0.30 -- 30%
local bonusSkill = 20 -- Quantidade de skill que o buff vai dar

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_SKILL_MELEE, bonusSkill)
setConditionParam(condition, CONDITION_PARAM_SUBID, 10)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)

function onStatsChange(cid, attacker, type, combat, value)
	local health_now, health_max = getCreatureHealth(cid), getCreatureMaxHealth(cid)
	if (type == STATSCHANGE_HEALTHGAIN) then
		if (health_now + value) > math.ceil(health_max * percentageToActive) then
			doRemoveCondition(cid, CONDITION_ATTRIBUTES, 10)
		end
	elseif (type == STATSCHANGE_HEALTHLOSS)	then
		if (health_now - value) > 0 and (health_now - value) < math.ceil(health_max * percentageToActive) then
			doAddCondition(cid, condition)
		end	
	end
	return true
end

function onLogin(cid)
	if isInArray(vocations, getPlayerVocation(cid)) then
		registerCreatureEvent(cid, "SpellBuff")
	end
end

 

Então vou deixar o xml como 

spellbuff.lua

dai eu mudei a vocação e pronto, to usando 0.4 e não aconteceu nada..

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, diarmaint disse:

Então vou deixar o xml como 


spellbuff.lua

dai eu mudei a vocação e pronto, to usando 0.4 e não aconteceu nada..

Deixei as tags as serem usadas no XML nas primeiras linhas do script. Você provavelmente configurou algo errado, o script está funcional.

Link para o comentário
Compartilhar em outros sites

  • 0
Em 21/03/2019 em 04:13, Woox disse:

Deixei as tags as serem usadas no XML nas primeiras linhas do script. Você provavelmente configurou algo errado, o script está funcional.

Desculpa pela burrice, pensei que as tags eram pra ficar dentro do script, igual vc postou. rsrs

EDIT.

@Woox deixei as tags assim

<event type="statschange" name="SpellBuff" event="script" value="diarmaint/passiva.lua"/>
<event type="login" name="RegisterBuff" event="script" value="diarmaint/passiva.lua"/>

Não dá nenhum erro no console mas o personagem não loga, fica conectando..

e fica registrado no console

[20:4:41.940] Diarmaint has logged in.
[20:4:41.943] Diarmaint has logged out.

 

Editado por diarmaint
Link para o comentário
Compartilhar em outros sites

  • 0
Em 21/03/2019 em 11:52, diarmaint disse:

Desculpa pela burrice, pensei que as tags eram pra ficar dentro do script, igual vc postou. rsrs

EDIT.

@Woox deixei as tags assim


<event type="statschange" name="SpellBuff" event="script" value="diarmaint/passiva.lua"/>
<event type="login" name="RegisterBuff" event="script" value="diarmaint/passiva.lua"/>

Não dá nenhum erro no console mas o personagem não loga, fica conectando..

e fica registrado no console


[20:4:41.940] Diarmaint has logged in.
[20:4:41.943] Diarmaint has logged out.

 

Tinha esquecido 1 return true no login, editei o código de novo, testa ai.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...