Ir para conteúdo

Investigação: [Actions] Gemas Of Power


IrapuanPuan

Posts Recomendados

A idéia é o seguinte:

Quando a pessoa utilizar um dos itens do portal gem, criará um efeito em sua frente e todos os jogadores que entrarem serão teleportados para um local pré-determinado.

 

na pasta data/actions, coloque isso no arquivo actions.xml:

    <action itemid="2156" script="gems.lua"/>
   <action itemid="2158" script="gems.lua"/>
   <action itemid="2155" script="gems.lua"/>
   <action itemid="2153" script="gems.lua"/>

 

depois, na pasta data/actions/script, crie um arquivo lua novo, renomeie para gems.lua, e coloque isso dentro:

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, [2153] = 41, [2158] = 37, [2155] = 45},
 vezes = 15,
 mana = 300, 
 soul = 30,
 actionID = {[2156] = 3001, [2153] = 3002, [2158] = 3003, [2155] = 3004},
 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

 

logo apos em data/movements, coloque isso no arquivo movements.xml:

    <movevent event="StepIn" actionid="3001" script="gems.lua"/>
   <movevent event="StepIn" actionid="3002" script="gems.lua"/>
   <movevent event="StepIn" actionid="3003" script="gems.lua"/>
   <movevent event="StepIn" actionid="3004" script="gems.lua"/>

 

logo após entre na pasta data/movements/scripts, crie um arquivo lua novo, renomeie para gems.lua, e coloque isso dentro

local area = {
[color="#800080"][3001] = {x=152,y=100,z=7},
[3002] = {x=292,y=218,z=6},
[3003] = {x=593,y=297,z=5},
[3004] = {x=578,y=796,z=8}[/color]
}
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

 

Ali aquela parte roxa, é o lugar que ira ser teletransportado.

 

continuando...

abra data/spells/spells.xml, e coloque isso lá:

 

    <conjure name="Red Gem" words="exeta gam flam" lvl="20" mana="20" prem="0" conjureId="2156" exhaustion="1000" needlearn="0" function="conjureItem">
       <vocation name="Sorcerer"/>
       <vocation name="Master Sorcerer"/>
       <vocation name="Druid"/>
       <vocation name="Elder Druid"/>
       <vocation name="Paladin"/>
       <vocation name="Royal Paladin"/>
       <vocation name="Knight"/>
       <vocation name="Elite Knight"/>
   </conjure>

   <conjure name="Blue Gem" words="exeta gam frigo" lvl="20" mana="20" prem="0" conjureId="2158" exhaustion="1000" needlearn="0" function="conjureItem">
       <vocation name="Sorcerer"/>
       <vocation name="Master Sorcerer"/>
       <vocation name="Druid"/>
       <vocation name="Elder Druid"/>
       <vocation name="Paladin"/>
       <vocation name="Royal Paladin"/>
       <vocation name="Knight"/>
       <vocation name="Elite Knight"/>
   </conjure>

   <conjure name="Green Gem" words="exeta gam pox" lvl="20" mana="20" prem="0" conjureId="2155" exhaustion="1000" needlearn="0" function="conjureItem">
       <vocation name="Sorcerer"/>
       <vocation name="Master Sorcerer"/>
       <vocation name="Druid"/>
       <vocation name="Elder Druid"/>
       <vocation name="Paladin"/>
       <vocation name="Royal Paladin"/>
       <vocation name="Knight"/>
       <vocation name="Elite Knight"/>
   </conjure>

   <conjure name="Purple Gem" words="exeta gam vis" lvl="20" mana="20" prem="0" conjureId="2153" exhaustion="1000" needlearn="0" function="conjureItem">
       <vocation name="Sorcerer"/>
       <vocation name="Master Sorcerer"/>
       <vocation name="Druid"/>
       <vocation name="Elder Druid"/>
       <vocation name="Paladin"/>
       <vocation name="Royal Paladin"/>
       <vocation name="Knight"/>
       <vocation name="Elite Knight"/>
   </conjure>

 

Gostou? Use minha FanBar!

Créditos: 5% Pivigu (outro fórum) / ele botou no outro fórum todo errado, nada a ver, faltando partes...

95% Mim, SirAvatar, Readaptei, corrigi os bugs, coloquei o que faltava, e postei no xtibia...

Beijo Nas Mulheres e um Abraço nos Homens, flw!

PS: QUALQUER BUG EU CORRIJO DPS, QUE AGR EU VOU ESTUDAR PARA A PROVA FINAL QUE EU FIQUEI :D

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...