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 ![]()
Segue o video com a chance corpse:










