Ir para conteúdo

[Spell] Change Corpse


digo1040

Posts Recomendados

Change Corpse

Eai pessoal, tava vendo alguns videos e encontrei um que falava sobre uma magia, change corpse, como procurei e não a encontrei resolvi fazer ela e ficou assim:

 

Versão Instant Spell:

 

Em spells/scripts crie um arquivo e coloque isso nele:

--< Digaao >--
local config = {
storage = 12456, -- storage que salva o delay da magia
time = 2 * 60, -- tempo que deve esperar para usar a magia em segundos
player = true, -- funciona com player true/false
monster = false, -- funciona com monstros true/false
npc = false, -- funciona com npc true/false
chance = 80, -- numero de 1 a 100 representando a chance de sucesso
}
function onCastSpell(cid, var)

local function doSend(pos1, pos2, num)
	doSendDistanceShoot(getCreaturePosition(pos1), getCreaturePosition(pos2), 4)
	doSendDistanceShoot(getCreaturePosition(pos2), getCreaturePosition(pos1), 4)
	if type(num) == "number" and num == 1 then
		if math.random(1, 100) <= config.chance then
			local pp1 = getCreaturePosition(pos1)
			local pp2 = getCreaturePosition(pos2)
			doTeleportThing(pos2, pp1)
			doTeleportThing(pos1, pp2)
		else
			doPlayerSendCancel(cid, "Opps que azar, tente denovo!")
		end
	end
	return true
end

local target = getCreatureTarget(cid)

if type(target) ~= "number" or target == 0 then
	doPlayerSendCancel(cid, "Você precisa selecionar alguma creature para fazer isso!")
	return false
end

	if (config.player == false and isPlayer(target)) or (isPlayer(target) and getPlayerAccess(target) > getPlayerAccess(cid)) or (config.monster == false and isMonster(target)) or (config.npc == false and isNpc(target)) then
	doPlayerSendCancel(cid, "Voce nao pode fazer isso com essa criatura!")
	return false
end

if getPlayerStorageValue(cid, config.storage) > os.time() then
	doPlayerSendCancel(cid, "Voce so pode utilizar essa magia a cada 2 minutos!")
			return false
else
	for i = 1, 7 do
		addEvent(doSend, i*250, cid, target, 0)
	end
	addEvent(doSend, 4*500, cid, target, 1)
	setPlayerStorageValue(cid, config.storage, os.time() + config.time)
end

return true
end

 

Tag XML no arquivo spells.xml:

<instant name="Change Corpse" words="change corpse" lvl="LEVEL PARA USAR A MAGIA" mana="MANA PARA USAR A MAGIA" aggressive="0" needtarget="1" exhaustion="1000" needlearn="0" event="script" value="nome do seu arquivo.lua">
<vocation id="1"/>
<vocation id="2"/>
<vocation id="3"/>
<vocation id="4"/>
<vocation id="5"/>
<vocation id="6"/>
<vocation id="7"/>
<vocation id="8"/>
</instant>

 

lvl => coloque o level minimo para usar a magia

mana => mana necessaria para utilizar a magia

needlearn => caso queira que precise aprender a magia coloque 1.

 

=> Caso queira utilizar palavras mágicas seguindo a lógica do global coloque: exeta sio ou exani sio <=

 

 

 

Versão Rune:

 

Em spells/scripts crie um arquivo e coloque isso nele:

--< Digaao >--
local config = {
	storage = 12456, -- storage que salva o delay da magia
	time = 2 * 60, -- tempo que deve esperar para usar a magia em segundos
	player = true, -- funciona com player true/false
	monster = false, -- funciona com monstros true/false
	npc = false, -- funciona com npc true/false
	chance = 80, -- numero de 1 a 100 representando a chance de sucesso
}
function onCastSpell(cid, var)

	local function doSend(pos1, pos2, num)
			doSendDistanceShoot(getCreaturePosition(pos1), getCreaturePosition(pos2), 4)
			doSendDistanceShoot(getCreaturePosition(pos2), getCreaturePosition(pos1), 4)
			if type(num) == "number" and num == 1 then
					if math.random(1, 100) <= config.chance then
							local pp1 = getCreaturePosition(pos1)
							local pp2 = getCreaturePosition(pos2)
							doTeleportThing(pos2, pp1)
							doTeleportThing(pos1, pp2)
					else
							doPlayerSendCancel(cid, "Opps que azar, tente denovo!")
					end
			end
			return true
	end

	local target = variantToNumber(var)

	if type(target) ~= "number" or target == 0 then
			doPlayerSendCancel(cid, "Você precisa selecionar alguma creature para fazer isso!")
			return false
	end

	if (config.player == false and isPlayer(target)) or (isPlayer(target) and getPlayerAccess(target) > getPlayerAccess(cid)) or (config.monster == false and isMonster(target)) or (config.npc == false and isNpc(target)) then
			doPlayerSendCancel(cid, "Voce nao pode fazer isso com essa criatura!")
			return false
	end

	if getPlayerStorageValue(cid, config.storage) > os.time() then
			doPlayerSendCancel(cid, "Voce so pode utilizar essa magia a cada 2 minutos!")
			return false
	else
			for i = 1, 7 do
					addEvent(doSend, i*250, cid, target, 0)
			end
			addEvent(doSend, 4*500, cid, target, 1)
			setPlayerStorageValue(cid, config.storage, os.time() + config.time)
	end

	return true
end

 

No spell.xml coloque isso:

<rune name="Change Corpse" id="ID DA RUNA" allowfaruse="1" charges="10" lvl="24" maglv="3" exhaustion="1000" needtarget="1" event="script" value="nome do seu script.lua"/>

ID DA RUNA => coloque o id da runa

 

Caso queira que o player possa criar a runa no spell.xml coloque também isso:

<conjure name="Change Corpse" words="PALAVRAS MAGICAS" lvl="28" mana="430" soul="3" prem="1" reagentId="2260" conjureId="ID DA RUNA" conjureCount="4" exhaustion="1000" needlearn="0" event="function" value="conjureRune">
<vocation id="1"/>
<vocation id="5"/>
</conjure>

PALAVRAS MAGICAS => Para deixar as magias semelhantes as do global recomendo utilizar: adani sio.

ID DA RUNA => Coloque o item id da runa.

 

 

 

 

Bom vamos as configs da magia:

storage => devido a natureza da magia recomendo que ela tenha um delay proprio (cd), entao coloque uma storage que ficara salvo esse delay.

time => defina o tempo em segundos do delay, para nao ter delay coloque 0.

player/monster/npc => voce define em quais creatures o char pode usar a magia, recomendo deixar somente os players como true; pois eles poderiam usá-la para entrar em alguma sala que tenha somente um npc, ou trocar de posição com um trainer.

chance => é a chance da magia ter sucesso (0-100) para funcionar todas as vezes coloque 100.

 

Bom é isso, espero que gostem positivo.gif

 

Segue o video com a chance corpse:

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

@ Drdrake9

Nem havia percebido, vlw

 

@ Lolksky

Coloquei a versão instant spell e rune da mágia :D

 

Pow o RUNE tem algo errado, eu uso a rune 1 vez vai de boa, ai eu vo usa depois fala que só posso usar dps de X minutos, só que passam os minutos e aparece a msm msg e não usa... e outra, mesmo eu usando a runa no player SEM funcionar, as changes gastam.

Link para o comentário
Compartilhar em outros sites

Bom, mudei os return, com isso não vai gastar charges quando nao troca, a menos que "quebre" conforme a chance de nao funcionar. Quanto o delay, está funcionando corretamente, verifica o time que voce colocou :D

Link para o comentário
Compartilhar em outros sites

Bom, mudei os return, com isso não vai gastar charges quando nao troca, a menos que "quebre" conforme a chance de nao funcionar. Quanto o delay, está funcionando corretamente, verifica o time que voce colocou :D

 

O Delay ta certinho agora, mas continua gastando rune mesmo quando está entre intervalo de poder usar denovo... coloquei 100% de chance de dar certo, com intervalo de 3 minutos, mas nesse intervalo eu uso e a runa gasta ;s

Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...

Digaoo, coloquei essa magia no meu ot 8.4, e da erro ao mecher quando coloco para nao usar em monsters e npcs, para a magia funcionar preciso deixar para monstros e npcs, isso acontece pq esse script decta por acess, certo?

Exemplo: monsters nao tem acess, porem no meu ot 8.4 os players tem acess 0, ou seja para funcionar teria que ser tutor, como eu coloco para player ter acess 1 ???

 

Se puder ajudar.....

E se mostrar como eu coloco esse tipo de delay eu outras magias agrdeco!

Link para o comentário
Compartilhar em outros sites

Bom, na verdade ele só verifica o o access quando for player, mudei essa parte do access, talves ela tenha dado conflito, se continuar o erro, poste ele. Não precisa editar o access dos players ;D

 

Nesse delay é salvo em uma storage quando o player pode utilizar a magia novamente (os.time() + segundos), quando o player usar a magia ele verifica se já é essa data.

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 3 weeks later...

Aqui nõa funciona não da erro nem nada simplestemente vo usa não vai essa tag onde adiciono em attack spells,summon spells ou oq??

 

O primeiro codigo eh o script em lua, voce deve salvá-lo dentro da pasta scripts.

O segundo codigo é a tag xml, vc deve colocá-lo (ou colocá-los se voce for fazer por runa) dentro do arquivo spells.xml. Editando as informações em letras maiusculas e alterando o nome do arquivo.

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
×
×
  • Criar Novo...