Ir para conteúdo
  • 0

[Pedido] Buff Mudar de voc


Jefferson14789

Pergunta

Pessoal estava procurando, e até tentei fazer um buff que mudasse a vocação do personagem, e voltasse a anterior quando o buff acabar, e se conseguirem tbm que ele aumente a quantidade de hp e mp. mas so em mudar a vocação pra mim tá ótimo icon_lol.gif


Buff que uso:


tfs 0.3.6



local outfit = {lookType = 399} -- Roupa que ira transformar no caso seu corpo ficara em choque

local tempo = 12000 * 1000 -- Tempo, nesse caso esta 60 segundos Lembrando que 1000 = 1 segundo


local ml = 5 -- quantos ira aumentar o skill de ML

local skillfist = 10 -- quantos ira aumentar o skill de Fist

local skillsword = 0 -- quantos ira aumentar o skill de Sword

local skillaxe = 0 -- quantos ira aumentar o skill de Axe

local skillclub = 0 -- quantos ira aumentar o skill de Club

local skilldistance = 0 -- quantos ira aumentar o skill de Distance

local skillshield = 10 -- quantos ira aumentar o skill de Shield

local health = 0 -- A cada 1 segundo quantos aumentar de vida

local mana = 55

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_EFFECT, 42)

setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)


local condition = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(condition, CONDITION_PARAM_TICKS, tempo)

setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml)

setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist)

setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword)

setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe)

setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub)

setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance)

setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield)

setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit)

setCombatCondition(combat, condition)


local condition = createConditionObject(CONDITION_HASTE)

setConditionParam(condition, CONDITION_PARAM_SPEED, 100)

setConditionParam(condition, CONDITION_PARAM_TICKS, tempo)

setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)

setCombatCondition(combat, condition)


local condition = createConditionObject(CONDITION_REGENERATION)

setConditionParam(condition, CONDITION_PARAM_SUBID, 1)

setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)

setConditionParam(condition, CONDITION_PARAM_TICKS, tempo)

setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)

setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)

setConditionParam(condition, CONDITION_PARAM_MANAGAIN, mana)

setConditionParam(condition, CONDITION_PARAM_MANATICKS, 1000)


setCombatCondition(combat, condition)


local sys = createConditionObject(CONDITION_OUTFIT)

setConditionParam(sys, CONDITION_PARAM_TICKS, tempo)

addOutfitCondition(sys, outfit)

setCombatCondition(combat, sys)


function onCastSpell(cid, var)

return doCombat(cid, combat, var)

end

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Não entendi se você queria que criasse uma spell só para alterar a vida, a voc e a mana ou se queria que alterasse essa spell sua colocando isto, enfim, eu alterei esta sua spell do jeito que você solocitou:

 

Vá em data\lib abra o arquivo 000-constant.lua e acreste esta linha:

voc_stor = STORAGE_USADA

No lugar de STORAGE_USADA você colocará a storage que a spell usará. Ex: 30001

 

A sua spell ficará assim:

local outfit = {lookType = 399} -- Roupa que ira transformar no caso seu corpo ficara em choque
local tempo = 2 * 1000 -- Tempo, nesse caso esta 60 segundos Lembrando que 1000 = 1 segundo
local voc = VOC_ID
 
local ml = 5 -- quantos ira aumentar o skill de ML
local skillfist = 10 -- quantos ira aumentar o skill de Fist
local skillsword = 0 -- quantos ira aumentar o skill de Sword
local skillaxe = 0 -- quantos ira aumentar o skill de Axe
local skillclub = 0 -- quantos ira aumentar o skill de Club
local skilldistance = 0 -- quantos ira aumentar o skill de Distance
local skillshield = 10 -- quantos ira aumentar o skill de Shield
local health = 0 -- A cada 1 segundo quantos aumentar de vida
local mana = 55
local combat = createCombatObject()
local mhealth = VIDA_AUMENTADA
local mmana = MANA_AUMENTADA
setCombatParam(combat, COMBAT_PARAM_EFFECT, 42)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
 
local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield)
setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTH, mhealth)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXMANA, mmana)
setCombatCondition(combat, condition)
 
local condition = createConditionObject(CONDITION_HASTE)
setConditionParam(condition, CONDITION_PARAM_SPEED, 100)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setCombatCondition(combat, condition)
 
local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setConditionParam(condition, CONDITION_PARAM_MANAGAIN, mana)
setConditionParam(condition, CONDITION_PARAM_MANATICKS, 1000)

 
setCombatCondition(combat, condition)
 
local sys = createConditionObject(CONDITION_OUTFIT)
setConditionParam(sys, CONDITION_PARAM_TICKS, tempo)
addOutfitCondition(sys, outfit)
setCombatCondition(combat, sys)
 
function onCastSpell(cid, var)
	registerCreatureEvent(cid, "stordeath")
	setPlayerStorageValue(cid, voc_stor, getPlayerVocation(cid))
	doPlayerSetVocation(cid, voc)
	addEvent(doPlayerSetVocation,tempo,cid,getPlayerStorageValue(cid, voc_stor))
	addEvent(setPlayerStorageValue,tempo,cid,voc_stor,0)
	return doCombat(cid, combat, var)
end

Aonde está local voc = VOC_ID, no lugar do VOC_ID você coloca o id da voc em que vai se transformar. Em local mhealth = VIDA_AUMENTADA você coloca o quanto irá aumentar a vida máxima de quem usar a spell e para a mana você faz o mesmo em local mmana = MANA_AUMENTADA.

 

Como não existe uma condition de spell para vocation fiz de outra forma e para o caso do player morrer tive que fazer um creaturescript de ondeath que chamei de stordeath.lua:

function onDeath(cid, corpse, deathList)
	local i = getPlayerStorageValue(cid, voc_stor)
	if i > 0 then
		doPlayerSetVocation(cid, i)
		setPlayerStorageValue(cid, voc_stor, 0)
	end
	return true
end

No creaturescripts.xml coloque esta linha antes de </creaturescripts>:

<event type="death" name="stordeath" event="script" value="stordeath.lua"/>
Editado por Antharaz
Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa reviver o topico mas alguma alma bondosa poderia adcionar um cooldown nessa magia ? Exemplo 30 Segundos. apenas apos esperar 30 segundos poderia utilizar novamente.

 

Tentei de varias formas com varios codes para adcionar o cooldown nessa magia mas sempre acaba bugando o script todo

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...