Postado Outubro 13, 2011 13 anos Olá a todos! Estou aqui novamente para mostrar um de meus novos scripts, o Portal. Mais afinal, se perguntam: Qual é a utilidade? Muitos possuem evento como o WoE, ou Castle War, e afinal são belos scripts! Mas com esta talkactions será possível deixar esses eventos bem mais, vamos dizer "legais" rs. No Ragnarok, possui algo na magia do clã que seria o "recall" algo assim, aonde todos os players aparecem no Castelo, a talkaction tem a mesma utilidade. Chega de enrolação, e vamos direto ao script! Nome: Portal WoE Autor: Doughell (eu) Versão testada: 8.6+ Comentário: -- Portal WoE Crie um arquivo em otserv/actions/scripts chamdo woe.lua e adicione isso em arquivo: local mensagens = { ['blocked'] = "Você não pode usar esse item.", ['pzed'] = "Você não pode usar esse item em protection zone.", ['usingInCreature'] = "Você não pode usar esse item.", ['alreadUsing'] = "Você já está usando um elemental gate.", ['noMana'] = "Você não tem mana points suficientes para usar esse item.", ['noSoul'] = "Você não tem soul points suficientes para usar esse item." } local config = { dist = 1, intervalo = 750, efeito = {[2156] = 6}, vezes = 15, mana = 300, soul = 30, actionID = {[2156] = 3001}, storage = 3001 } function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = getThingPos(cid) local dir = getPlayerLookDir(cid) local p = {math.fmod(dir,2)*(-(dir-2)),(dir-1)*(dir-1-(dir-1)*math.abs(dir-2))} local newPos = {x=pos.x+(p[1])*config.dist,y=pos.y+(p[2])*config.dist,z=pos.z} newPos.stackpos = 0 local aid = getThingFromPos(newPos).actionid -- Verificar Erros if getCreatureMana(cid) < config.mana then doPlayerSendCancel(cid, mensagens['noMana']) return FALSE end if getPlayerSoul(cid) < config.soul then doPlayerSendCancel(cid, mensagens['noSoul']) return FALSE end if isCreature(getTopCreature(newPos).uid) == 1 and getPlayerAccess(cid) < 2 then doPlayerSendCancel(cid, mensagens['usingInCreature']) return FALSE end if isWalkable(newPos) == FALSE and getPlayerAccess(cid) < 2 then doPlayerSendCancel(cid, mensagens['blocked']) return FALSE end if (getTilePzInfo(newPos) == TRUE or getTilePzInfo(getThingPos(cid)) == TRUE) and getPlayerAccess(cid) < 2 then doPlayerSendCancel(cid, mensagens['pzed']) return FALSE end if getPlayerStorageValue(cid, config.storage) > 0 and getPlayerAccess(cid) < 2 then doPlayerSendCancel(cid, mensagens['alreadUsing']) return FALSE end doCreatureAddMana(cid, config.mana * (-1)) doPlayerAddSpentMana(cid, config.mana * (-1)) doPlayerAddSoul(cid, config.soul * (-1)) doRemoveItem(item.uid) if doTileQueryAdd(cid, newPos) == 1 then setPlayerStorageValue(cid, config.storage, 1) doSetItemActionId(getThingFromPos(newPos).uid, config.actionID[item.itemid]) doLoopEffect(cid, newPos, aid, config.efeito[item.itemid], 1) end return TRUE end function doLoopEffect(cid, pos, aid, effect, times) doSendMagicEffect(pos, effect) times = times + 1 if times < config.vezes then addEvent(doLoopEffect, config.intervalo, cid, pos, aid, effect, times) else doSetItemActionId(getThingFromPos(pos).uid, aid) setPlayerStorageValue(cid, config.storage, 0) end end function isWalkable(pos) -- Version by Pivigu local thing = getTileThingByPos({x=pos.x, y=pos.y, z=pos.z, stackpos = 0}) local points = 0 if thing.uid ~= 0 and hasProperty(thing.uid, 3) == FALSE and hasProperty(thing.uid, 7) == FALSE then for i = 1, 2 do thing = getTileThingByPos({x=pos.x, y=pos.y, z=pos.z, stackpos = i}) if thing.uid == 0 or (hasProperty(thing.uid, 3) == FALSE and hasProperty(thing.uid, 7) == FALSE) then points = points + 1 end end end if points > 1 then return TRUE end return FALSE end Agora em actions.xml adicione: <action itemid="2156" script="woe.lua"/> 2 parte do Script WoE Crie um arquivo em otserv/movements/scripts chamado recall.lua e adicione isso em seu arquivo: local area = { [3001] = {x=699,y=699,z=7}, } function onStepIn(cid, item, position, fromPosition) if isPlayer(cid) == TRUE then doSendMagicEffect(position, CONST_ME_POFF) doTeleportThing(cid, area[item.actionid], FALSE) doSendMagicEffect(area[item.actionid], CONST_ME_TELEPORT) end return TRUE end -- Explicação do Script local area = { [3001] = {x=152,y=100,z=7} Esta e a posição do começo do castelo, a posição tem que se determinado não da pra escolher na hora! Agora em movements.xml adicione: <movevent event="StepIn" actionid="3001" script="recall.lua"/> Comentário: Como no Ragnarok é o sumo-sacerdote que possui a magia recall da guild, no caso agora apenas os elders druids e master sorcerers que poderma utilizar a magia recall. Adicione em spells.xml: <conjure name="Recall Guild" words="recall" lvl="20" mana="20" prem="0" conjureId="2156" exhaustion="6500" needlearn="0" function="conjureItem"> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> É isso ai galera, qualquer dúvida postem ou dêem sujestões! Editado Outubro 13, 2011 13 anos por Matheus (veja o histórico de edições) E-mail para contato: [email protected] Quer ter um fórum mais organizado? Cumpra as regras! Regras do forum. EU VOLTEI GAROTAS! 31/12/2011 Atenciosamente, Guilherme Salviati.
Postado Outubro 13, 2011 13 anos Administrador Poh cara, to gostando muito do seus scripts, você é muito criativo... (: Reputado! TibiaKing Team- KingTópicos www.tibiaking.com
Postado Outubro 13, 2011 13 anos Com certeza, irei ver seus outros rapaz, irei te observar ;p Muito bom tu aqui na área, (:
Postado Outubro 13, 2011 13 anos Autor Muito obrigado Matheus e Ferlations, e Ferlations estava vendo aquele seu desenho de ORC cara você é 10! Hehe, o que não gostei muito foi o logo do otPokémon mais nada que um pouco de tempo aperfeiçoe! E Matheus, obrigado por acompanhar em meus scripts! E-mail para contato: [email protected] Quer ter um fórum mais organizado? Cumpra as regras! Regras do forum. EU VOLTEI GAROTAS! 31/12/2011 Atenciosamente, Guilherme Salviati.
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.