Ir para conteúdo
  • Cadastre-se

(Resolvido)Spell Troca Voc


Ir para solução Resolvido por KotZletY,

Posts Recomendados

Olá, gostaria de fazer um Pedido !

 

Que consiste em : Adcionar a função de alterar a vocação do personagem por um determinado Xtempo, e apos terminar o Xtempo, voltar a vocação original.

 

Script Base :

--Spell Method by Night Wolf

local config = {
tempo = 30, --- tempo que vai durar a spell (em segundos)
-- Skills --
ml = 30, -- quantos ira aumentar o skill de ML
skillfist = 30, -- quantos ira aumentar o skill de Fist
skillsword = 0, -- quantos ira aumentar o skill de Sword
skillaxe = 0, -- quantos ira aumentar o skill de Axe
skillclub = 0, -- quantos ira aumentar o skill de Club
skilldistance = 0, -- quantos ira aumentar o skill de Distance
skillshield = 0, -- quantos ira aumentar o skill de Shield
-- //Skills --
outfit = 612, --- outfit que o player ira ter
storage = 15674, -- storage que salva o cooldown
cooldown = 60, -- tempo em segundos de 1 uso e outro
efeito = 5 -- efeito que sai ao castar a spell
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, config.efeito)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, config.ml)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, config.skillfist)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, config.skillsword)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, config.skillaxe)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, config.skillclub)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, config.skilldistance)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, config.skillshield)
setConditionParam(condition, CONDITION_PARAM_OUTFIT, config.outfit)
setConditionParam(condition, CONDITION_PARAM_SPEED, 500)
setCombatCondition(combat, condition)


function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then
	setPlayerStorageValue(cid, config.storage, os.time() + config.cooldown)
		local outfit = getCreatureOutfit(cid)
		outfit.lookType = config.outfit
		doSetCreatureOutfit(cid, outfit, config.tempo * 1000)
		doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "Your spell is in cooldown.")
		return false
	end
return true
end

TFS 0.4

Editado por r0bert0lol (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
--Spell Method by Night Wolf

local config = {
tempo = 30, --- tempo que vai durar a spell (em segundos)
-- Skills --
ml = 30, -- quantos ira aumentar o skill de ML
skillfist = 30, -- quantos ira aumentar o skill de Fist
skillsword = 0, -- quantos ira aumentar o skill de Sword
skillaxe = 0, -- quantos ira aumentar o skill de Axe
skillclub = 0, -- quantos ira aumentar o skill de Club
skilldistance = 0, -- quantos ira aumentar o skill de Distance
skillshield = 0, -- quantos ira aumentar o skill de Shield
-- //Skills --
outfit = 612, --- outfit que o player ira ter
storage = 15674, -- storage que salva o cooldown
cooldown = 60, -- tempo em segundos de 1 uso e outro
efeito = 5 -- efeito que sai ao castar a spell
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, config.efeito)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, config.ml)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, config.skillfist)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, config.skillsword)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, config.skillaxe)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, config.skillclub)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, config.skilldistance)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, config.skillshield)
setConditionParam(condition, CONDITION_PARAM_OUTFIT, config.outfit)
setConditionParam(condition, CONDITION_PARAM_SPEED, 500)
setCombatCondition(combat, condition)


function onCastSpell(cid, var)

t = {}
local voc = 60 -- Segundos para a vocation voltar ao normal , lembrando que se o player ficar off durante esse tempo vai dar erro

	if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then
	setPlayerStorageValue(cid, config.storage, os.time() + config.cooldown)
		local outfit = getCreatureOutfit(cid)
		outfit.lookType = config.outfit
		doSetCreatureOutfit(cid, outfit, config.tempo * 1000)
		table.insert(t, getPlayerVocation(cid))
		addEvent(doPlayerSetVocation, voc * 1000, cid, t[1])
		doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "Your spell is in cooldown.")
		return false
	end
return true
end

 

Link para o post
Compartilhar em outros sites

Muito bom Storm,funcionou !  agora para ficar perfeito e atender todas as necessidades será que voce conseguiria 

 

adcionar uma função CreatureEvent que salva a vocação original do player em uma storage e se caso o player morra

 

ele nasce com a vocação salva pela storage, no caso a original ? @Sttorm 

Editado por r0bert0lol (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução
Spoiler

--Spell Method by Night Wolf

local config = {
tempo = 30, --- tempo que vai durar a spell (em segundos)
-- Skills --
ml = 30, -- quantos ira aumentar o skill de ML
skillfist = 30, -- quantos ira aumentar o skill de Fist
skillsword = 0, -- quantos ira aumentar o skill de Sword
skillaxe = 0, -- quantos ira aumentar o skill de Axe
skillclub = 0, -- quantos ira aumentar o skill de Club
skilldistance = 0, -- quantos ira aumentar o skill de Distance
skillshield = 0, -- quantos ira aumentar o skill de Shield
-- //Skills --
outfit = 612, --- outfit que o player ira ter
storage = 15674, -- storage que salva o cooldown
cooldown = 60, -- tempo em segundos de 1 uso e outro
efeito = 5, -- efeito que sai ao castar a spell
storage2 = 41225, -- Storage que salva a vocação
newvoc = 34 -- ID da nova vocação!
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, config.efeito)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, config.ml)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, config.skillfist)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, config.skillsword)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, config.skillaxe)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, config.skillclub)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, config.skilldistance)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, config.skillshield)
setConditionParam(condition, CONDITION_PARAM_OUTFIT, config.outfit)
setConditionParam(condition, CONDITION_PARAM_SPEED, 500)
setCombatCondition(combat, condition)


function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then
	setPlayerStorageValue(cid, config.storage, os.time() + config.cooldown)
		local outfit = getCreatureOutfit(cid)
		outfit.lookType = config.outfit
		doSetCreatureOutfit(cid, outfit, config.tempo * 1000)
		doCreatureSetStorage(cid, config.storage2, getPlayerVocation(cid))
		doPlayerSetVocation(cid, config.newvoc)
		addEvent(function()
			local cid = cid
			if isPlayer(cid) then
				doPlayerSetVocation(cid, getCreatureStorage(cid, config.storage2))
			end
		end, config.tempo*1000)
		doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "Your spell is in cooldown.")
		return false
	end
return true
end

 

 

Coloque isso no seu login.lua para caso o player morra antes de terminar o cooldown:

local storage_spell = 234234 -- 234234 é a mesma storage2 da spell.
if getCreatureStorage(cid, storage_spell) ~= -1 then
  doPlayerSetVocation(cid, getCreatureStorage(cid, storage_spell)) 
end

.Coloque isso antes do primeiro registerCreatureEvent.

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo