Ir para conteúdo
  • Cadastre-se

Posts Recomendados

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!

divisor.png

Nome: Portal WoE

Autor: Doughell (eu)

Versão testada: 8.6+

Comentário: --

divisor.png

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"/>

divisor.png2 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

divisor.png-- 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! divisor.png Agora em movements.xml adicione:

<movevent event="StepIn" actionid="3001" script="recall.lua"/>

divisor.png 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. divisor.png 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>


divisor.png

É isso ai galera, qualquer dúvida postem ou dêem sujestões!

Editado 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!

EU VOLTEI GAROTAS!

31/12/2011

Atenciosamente,

Guilherme Salviati.

Link para o post
Compartilhar em outros sites
  • Administrador

Poh cara, to gostando muito do seus scripts, você é muito criativo... (:

Reputado!

TibiaKing Team- KingTópicos
www.tibiaking.com

Link para o post
Compartilhar em outros sites

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! ;D

E-mail para contato: [email protected]

Quer ter um fórum mais organizado? Cumpra as regras!

EU VOLTEI GAROTAS!

31/12/2011

Atenciosamente,

Guilherme Salviati.

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo