Postado Janeiro 7, 2015 10 anos Bom dia/tarde/noite galera, vim aqui fazer um pedido de runa que funciona assim: -Você clica na runa e joga no alvo, aí de repente o alvo aparece na frente do caster da magia, soltando um efeito nos dois locais, de onde ele saiu e pra onde ele foi. PS: Preciso muito que seja uma runa, porque é pro meu server com base do OTNaruto e lá toda spell é por runa... Brigadão galera, Abraços Ajudei ? Foda-se Não ajudei ? Rep -
Postado Janeiro 7, 2015 10 anos Solução Er, sou meio newbie quanto a runas. Como exatamente elas funcionam? São actions? No código delas, é necessário setar o exhaust/remover o item, ou isso já é configurado na tag da mesma? Se puder me explicar (: (ps: um exemplo de script também seria de grande ajuda) Pra todo caso, fiz uma action básica que cumpre seus requisitos. Se quiser, você pode adaptá-la para o formato de um código de runa. local function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onUse(cid, item, fromPosition, item2, toPosition) local effect = xxx --Efeito. local exh = xxx --Exhaust, em segundos. if isCreature(item2.uid) and not isNpc(item2.uid) then if getPlayerStorageValue(cid, 1870) > os.time() then local msg = "Wait %d seconds to use this rune again." return doPlayerSendCancel(cid, msg:format(getPlayerStorageValue(cid, 1870) - os.time())) end local positions = { [0] = {x = getThingPos(cid).x, y = getThingPos(cid).y - 1, z = getThingPos(cid).z}, [1] = {x = getThingPos(cid).x + 1, y = getThingPos(cid).y, z = getThingPos(cid).z}, [2] = {x = getThingPos(cid).x, y = getThingPos(cid).y + 1, z = getThingPos(cid).z}, [3] = {x = getThingPos(cid).x - 1, y = getThingPos(cid).y, z = getThingPos(cid).z}, } local lookdir = getCreatureLookDirection(cid) local newPosition = positions[lookdir] if not isWalkable(newPosition) then newPosition = getClosestFreeTile(cid, getThingPos(cid)) end if newPosition then doTeleportThing(item2.uid, newPosition) doSendMagicEffect(newPosition, effect) doSendMagicEffect(toPosition, effect) setPlayerStorageValue(cid, 1870, os.time() + exh) else return doPlayerSendCancel(cid, "Couldn't execute the rune.") end else return doPlayerSendCancel(cid, "Use this rune only on creatures.") end return true end Editado Janeiro 8, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Janeiro 8, 2015 10 anos Autor É impressão minha ou no seu script não é possível usar isso em monsters ? Aqui está o exemplo, esse é um Spell de Naruto, então não sei se já viu isso em algum lugar. local temp = { exhausted = 2, } local confg = { chakra = 5, } function onUse(cid, item, fromPosition, itemEx, toPosition) if not isCreature(cid) then return true end local level = getPlayerLevel(cid) local jutsuDmg = 12 local skill_factor = math.ceil((jutsuSkill_factor(cid, 1) + level)/2) local dmg = - math.max(1, math.ceil(((skill_factor*0.5) * jutsuDmg)*0.30)) -----[Restrições]----- if getPlayerVocation(cid) ~= 5 then return true end if impossibleUse(cid) then return true end if checkDoing(cid) then return true end -----[Restrições]----- if isPlayer(cid) then removeChakraLife(cid, - confg.chakra) addEvent(doCreatureSay, 100, cid, "Katon:", TALKTYPE_MONSTER) addEvent(doCreatureSay, 300, cid, "Endan no Jutsu!", TALKTYPE_MONSTER) stopNow(cid, 800) addEvent(actionMove, 0, cid, 385, 200) addEvent(actionMove, 300, cid, 386, 300) addEvent(doSendDistanceShoot, 300, getCreaturePosition(cid), toPosition, 27) addEvent(doAreaCombatHealth, 400, cid, COMBAT_FIREDAMAGE, toPosition, 0, dmg, dmg, 5) setPlayerStorageValue(cid, sto_jutsu[1], os.time() + temp.exhausted) end return true end Abraços. Ajudei ? Foda-se Não ajudei ? Rep -
Postado Janeiro 8, 2015 10 anos Exatamente, coloquei pra usar só em players. My bad. Logo edito meu comentário removendo essa condição. Pronto, editei. Agora você pode usar a runa em criaturas em geral (com exceção de NPCs). E, como suspeitei, as runas são actions. Basta, então, criar um arquivo com extensão .lua em data/actions/scripts e colocar meu código. A tag, suponho que você saiba fazer. Caso contrário, informe aqui. Já sobre as charges da runa, provavelmente são configuradas em items.xml. Editado Janeiro 8, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Janeiro 8, 2015 10 anos Autor Não precisa de mais nada, script funcionando COMPLETAMENTE Excepcional REP ++ Ajudei ? Foda-se Não ajudei ? Rep -
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.