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: