Postado Janeiro 14, 2021 4 anos Este é um post popular. E aí, pessoal! Esses dias eu estava na vibe Harry Potter e antes de dormir acabei tendo a ideia de fazer uma spell inspirada na magia Piertotum Locomotor. Criei ela, e decidi compartilhar com vocês auhauah Funcionamento: Dois golems serão invocados e aprisionarão o inimigo com pedras durante um certo período. (R.I.P qualidade) Vamos ao código (deixei alguns comentários explicando, mas está bem fácil de compreender o funcionamento, se tiver alguma dúvida pode comentar no tópico). Primeiro, crie um arquivo.lua, e cole o script dentro: Spoiler local config = { creatures = { [1] = "Stone Golem", [2] = "Stone Golem", }, item = 1285, -- ID das Pedras. time = 3, -- Duração das pedras (Segundos). effectSummons = 68, -- Efeito que aparecerá nas pedras/summons. castOnMonsters = true, -- False para não funcionar em monstros, e True para funcionar. message = "Now you're free to go.", -- Fala dos summons ao serem removidos no final da execução. messageCancel = "You already have summons.", messageFail = "It's not possible to cast this spell on monsters." } local function doCheckSummons(cid, effect, check) local summons = getCreatureSummons(cid) for _, pid in ipairs(summons) do if check == true then doSendMagicEffect(getThingPos(pid), effect) doCreatureSay(pid, config.message, TALKTYPE_MONSTER) doRemoveCreature(pid) elseif check == false then doSendMagicEffect(getThingPos(pid), effect) end end end function onCastSpell(cid, var) local target = getCreatureTarget(cid) local pid = getThingPos(target) local summons = getCreatureSummons(cid) local aroundArea = { [1] = {x = pid.x - 1, y = pid.y - 1, z = pid.z}, -- Diagonal superior esquerda [2] = {x = pid.x, y = pid.y - 1, z = pid.z}, -- Norte [3] = {x = pid.x + 1, y = pid.y - 1, z = pid.z}, -- Diagonal superior direita [4] = {x = pid.x + 1, y = pid.y, z = pid.z}, -- Leste [5] = {x = pid.x + 1, y = pid.y + 1, z = pid.z}, -- Diagonal inferior direita [6] = {x = pid.x, y = pid.y + 1, z = pid.z}, -- Sul [7] = {x = pid.x - 1, y = pid.y + 1, z = pid.z}, -- Diagonal inferior esquerda [8] = {x = pid.x - 1, y = pid.y, z = pid.z} -- Oeste } if (isMonster(target)) and (config.castOnMonsters == false) then doPlayerSendCancel(cid, config.messageFail) return false end if #summons <= 0 then for v, k in pairs(aroundArea) do if (not getTileInfo(k).house) and (not getTilePzInfo(k)) and (isWalkable(k)) and (not isPlayer(getTopCreature(k).uid)) then doSendMagicEffect(k, config.effectSummons) doCreateItem(config.item, 1, k) addEvent(function() local checkItem = getTileItemById(k, config.item).uid if checkItem >= 1 then doSendMagicEffect(k, config.effectSummons) doRemoveItem(getTileItemById(k, config.item).uid) end end, config.time * 1000 ) end end for v, k in pairs(config.creatures) do local closestTile = getClosestFreeTile(target, pid, true, false) if closestTile then local mob = doSummonCreature(config.creatures[v], closestTile) doConvinceCreature(cid, mob) doCheckSummons(cid, config.effectSummons, false) end end addEvent(function() if isPlayer(cid) then doCheckSummons(cid, config.effectSummons, true) end end, config.time * 1000) else doPlayerSendCancel(cid, config.messageFail) return false end return true end Feito isso, no arquivo spells.xml recomendo que deixem o parâmetro (needtarget="1"). Exemplo de tag: <instant name="Piertotum Locomotor" words="Piertotum Locomotor" lvl="200" mana="1000" needtarget="1" prem="0" exhaustion="10000" groups="1,1500" icon="87" needlearn="0" event="script" value="hogwarts/piertotum locomotor.lua"> <vocation id="1"/> <vocation id="2"/> </instant>
Postado Janeiro 15, 2021 4 anos TEM UM ERROR AI Editado Janeiro 15, 2021 4 anos por Fabi Marzan (veja o histórico de edições)
Postado Janeiro 15, 2021 4 anos Autor Como você editou o script ? Manda aí (coloca o código em um spoiler), que dou uma olhada
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.