Ir para conteúdo

Dive System (Super Básico)


victormoaz

Posts Recomendados

Olá,

Existem vários sistemas de dive por Talkaction, eu sinceramente acho fraco o rpg quando se usa Talkaction. Assim resolvi fazer por Action.

 

Primeiramente vou explicar como é:

O sistema nada mais é do que fazer com que o player que precisa estar surfando possa ir para baixo d'agua.

No caso do meu script, o player precisa estar surfando e portando um determinado item (mascara de oxigenio).

 

Segue o Script:

 

Salve em um bloco de notas na pasta data/actions/scripts o script abaixo com o nome mascara.lua

 

 

 

 

local mascara = 12624

 

local pos = {x=0,y=0,z=0}

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

pos = getCreaturePosition(cid)

 

pos.z = pos.z + 1

 

if getPlayerStorageValue(cid, 17000) >= 1 then

doPlayerSendCancel(cid, "You need surf to dive.")

return true

end

 

if getPlayerItemCount(cid, mascara) < 1 then

doPlayerSendCancel(cid, "You need a mask to dive.")

return true

end

 

doTeleportThing(cid,pos)

 

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end

 

local checkpos = fromPosition

checkpos.stackpos = 0

 

if isInArray(waters, getTileInfo(checkpos).itemid) then

 

if getPlayerStorageValue(cid, 63215) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 then

 

doSendMagicEffecte(fromPosition, direffects[getCreatureLookDir(cid) + 1])

 

end

 

end

 

if not isInArray(waters, getTileInfo(getThingPos(cid)).itemid) then

 

if getPlayerStorageValue(cid, 17000) >= 1 then return true end

if getPlayerStorageValue(cid, 63215) <= 0 then return true end

 

doRemoveCondition(cid, CONDITION_OUTFIT)

setPlayerStorageValue(cid, 63215, -1)

 

local item = getPlayerSlotItem(cid, 8)

local pokemon = getItemAttribute(item.uid, "poke")

local x = pokes[pokemon]

 

if not x then return true end

 

if getItemAttribute(item.uid, "nick") then

doCreatureSay(cid, getItemAttribute(item.uid, "nick")..", I'm tired of surfing!", 1)

else

doCreatureSay(cid, getItemAttribute(item.uid, "poke")..", I'm tired of surfing!", 1)

end

 

doSummonMonster(cid, pokemon)

 

local pk = getCreatureSummons(cid)[1]

 

if not isCreature(pk) then

pk = doCreateMonster(pokemon, backupPos)

if not isCreature(pk) then

doPlayerSendCancel(cid, "You can't stop surfing here.")

doTeleportThing(cid, fromPosition, false)

return true

end

doConvinceCreature(cid, pk)

end

 

doChangeSpeed(pk, getCreatureSpeed(cid))

doChangeSpeed(cid, -getCreatureSpeed(cid))

doChangeSpeed(cid, PlayerSpeed)

 

doTeleportThing(pk, fromPosition, false)

doTeleportThing(pk, getThingPos(cid), true)

doCreatureSetLookDir(pk, getCreatureLookDir(cid))

 

adjustStatus(pk, item.uid, true, false, true)

 

end

 

return true

end

 

 

 

explicando:

De vermelho é o id do item (mascara de oxigenio) que o player precisa ter na bag para poder dar dive.

 

 

 

 

No arquivo data/actions/Actions.xml adicione a seguinte tag.

 

 

<action itemid="8632" event="script" value="mascara.lua"/>

 

 

 

explicando:

O numero na cor verde é o id do item (redemunho), o qual deve ser colocado no mapa na água acima do local onde é undewater.

 

 

O Sistema funciona assim: Estando em Surf e com a Mascara de Oxigenio, basta dar use no Redemonho que será teleportado para a waypoint do script (cave).

obs.: É necessário que adicione uma escada ou espaço para rope, para que o player volte para a água (saindo do dive).

IMAGEM:

 

 

mjv574.jpg

 

 

 

 

 

 

Creditos:

BobStriker - 100%

 

Fiz o script do 0 (zero) e muito rápido.

Pode estar bem simples, mas é funcional.

Duvidas e Sugestões, Comentem.

att.

Editado por BobStriker
Link para o comentário
Compartilhar em outros sites

  • 8 months later...
×
×
  • Criar Novo...