Ir para conteúdo

[Systems] Bomberman


hsz

Posts Recomendados

Ajuda a montar map ?[/sup]

 

 

talkactions.xml

<talkaction words="z;Z" event="script" value="bomb.lua"/>

BOMB.lua

function getPlayersInRange(position, radiusx, radiusy)
       local creaturesList = {}
       for x = -radiusx, radiusx do
               for y = -radiusy, radiusy do
                       if not (x == 0 and y == 0) then
                               local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z})
                               if creature.type == 1 then
                                       table.insert(creaturesList, creature.uid)
                               end
                       end
               end
       end

       local creature = getTopCreature(position)
       if creature.type == 1 then
               if not(table.find(creaturesList, creature.uid)) then
                       table.insert(creaturesList, creature.uid)
               end
       end
   return creaturesList
end

function isPositionInArray(haystack, needle)
       for i = 1, #haystack do
               if haystack[i].x == needle.x and haystack[i].y == needle.y and haystack[i].z == needle.z then
                       return true
               end
       end
       return false
end

local t = {
       from = {x=490, y=495, z=9},
       to = {x=504, y=505, z=9},
       storage = {
               placed = 10001,
               max = 10002,
               radius = 10003
       },
       delay = 3000,
       bombID = 10570,
       effect = CONST_ME_FIREAREA,
       blockID = 9468,
       text = "BOOM!",
       temple = {x=498, y=541, z=9},
       exceptions = {
               {x=490, y=495, z=9},
               {x=491, y=495, z=9},
               {x=490, y=496, z=9},

               {x=503, y=495, z=9},
               {x=504, y=495, z=9},
               {x=504, y=496, z=9},

               {x=490, y=505, z=9},
               {x=491, y=505, z=9},
               {x=490, y=504, z=9},

               {x=503, y=505, z=9},
               {x=504, y=505, z=9},
               {x=504, y=504, z=9}
       }
}
function reset()
       local dummy = doCreateItem(10570, 1, {x=486,y=498,z=9})
       for x = t.from.x, t.to.x do
               for y = t.from.y, t.to.y do
                       local pos = {x=x,y=y,z=t.from.z}
                       local i1, i2, i3  = getTileItemById(pos, 8304).uid, getTileItemById(pos, 8306).uid, getTileItemById(pos, 8310).uid
                       if i1 > 0 then
                               doRemoveItem(i1)
                       end
                       if i2 > 0 then
                               doRemoveItem(i2)
                       end
                       if i3 > 0 then
                               doRemoveItem(i3)
                       end
                       if queryTileAddThing(dummy, pos, 4) == RETURNVALUE_NOERROR and not isPositionInArray(t.exceptions, pos) then
                               doCreateItem(t.blockID, 1, pos)
                       end
               end
       end
       doRemoveItem(dummy)
end

local function boom(pos, cid)
       local v = getTileItemById(pos, t.bombID).uid
       if isPlayer(cid) and isInRange(getThingPos(cid), t.from, t.to) then
               setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) - 1)
               doCreatureSay(cid, t.text, TALKTYPE_ORANGE_2, false, nil, pos)
               doSendMagicEffect(pos, t.effect)
               local c = getTopCreature(pos).uid
               if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then
                       doSendMagicEffect(pos, CONST_ME_GIFT_WRAPS)
                       doTeleportThing(c, t.temple)
                       doSendMagicEffect(t.temple, CONST_ME_MORTAREA)
                       local n1, n2 = getPlayerName(c), getPlayerName(cid)
                       doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING)
                       local a = getPlayersInRange({x=497, y=500, z=9}, 7, 5)
                       if #a < 2 then
                               doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING)
                               doPlayerAddLevel(a[1], 1)
                               doTeleportThing(a[1], t.temple)
                               doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED)
                               reset()
                               reset()
                       end
               else
                       local b = getTileItemById(pos, t.blockID).uid
                       if b > 0 then
                               doSendMagicEffect(pos, CONST_ME_BLOCKHIT)
                               doRemoveItem(b)
                               local r = math.random(10)
                               if r < 4 then
                                       doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos)
                               end
                       end
               end
               local N, E, W, S, l = 1, 1, 1, 1, getPlayerStorageValue(cid, t.storage.radius)
               function loopDir(dir)
                       local _pos = {x=pos.x+(dir=="E" and E or dir=="W" and -W or 0), y=pos.y+(dir=="N" and -N or dir=="S" and S or 0), z=pos.z}
                       if queryTileAddThing(v, _pos, 4) == RETURNVALUE_NOERROR or getTileItemById(_pos, t.blockID).uid > 0 then
                               doSendMagicEffect(_pos, t.effect)
                               local c = getTopCreature(_pos).uid
                               if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then
                                       doSendMagicEffect(_pos, CONST_ME_GIFT_WRAPS)
                                       doTeleportThing(c, t.temple)
                                       doSendMagicEffect(t.temple, CONST_ME_MORTAREA)
                                       local n1, n2 = getPlayerName(c), getPlayerName(cid)
                                       doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING)
                                       local a = getPlayersInRange({x=497, y=500, z=9}, 7, 5)
                                       if #a < 2 then
                                               doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING)
                                               doPlayerAddLevel(a[1], 1)
                                               doTeleportThing(a[1], t.temple)
                                               doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED)
                                               reset()
                                               reset()
                                               return "endgame"
                                       end
                               else
                                       local b = getTileItemById(_pos, t.blockID).uid
                                       if b > 0 then
                                               doSendMagicEffect(_pos, CONST_ME_BLOCKHIT)
                                               doRemoveItem(b)
                                               local r = math.random(10)
                                               if r < 4 then
                                                       doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos)
                                               end
                                               return false
                                       end
                               end
                       elseif queryTileAddThing(v, _pos, 4) == 3 then
                               return false
                       end
                       return true
               end
               while N <= l do
                       local q = loopDir("N")
                       if q == "endgame" then
                               return doRemoveItem(v, 1)
                       elseif not q then
                               break
                       else
                               N = N + 1
                       end
               end
               while E <= l do
                       local q = loopDir("E")
                       if q == "endgame" then
                               return doRemoveItem(v, 1)
                       elseif not q then
                               break
                       else
                               E = E + 1
                       end
               end
               while W <= l do
                       local q = loopDir("W")
                       if q == "endgame" then
                               return doRemoveItem(v, 1)
                       elseif not q then
                               break
                       else
                               W = W + 1
                       end
               end
               while S <= l do
                       local q = loopDir("S")
                       if q == "endgame" then
                               return doRemoveItem(v, 1)
                       elseif not q then
                               break
                       else
                               S = S + 1
                       end
               end
       end
       doRemoveItem(v, 1)
end
function onSay(cid, words, param, channel)
       if isInRange(getThingPos(cid), t.from, t.to) then
               setPlayerStorageValue(cid, t.storage.placed, math.max(getPlayerStorageValue(cid, t.storage.placed), 0))
               setPlayerStorageValue(cid, t.storage.max, math.max(getPlayerStorageValue(cid, t.storage.max), 1))
               setPlayerStorageValue(cid, t.storage.radius, math.max(getPlayerStorageValue(cid, t.storage.radius), 1))
               if getPlayerStorageValue(cid, t.storage.placed) < getPlayerStorageValue(cid, t.storage.max) then
                       doCreateItem(t.bombID, 1, getThingPos(cid))
                       addEvent(boom, t.delay, getThingPos(cid), cid)
                       setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) + 1)
               end
               return true
       end
end

 

lever.lua

 

function getPlayersInRange(position, radiusx, radiusy)
       local creaturesList = {}
       for x = -radiusx, radiusx do
               for y = -radiusy, radiusy do
                       if not (x == 0 and y == 0) then
                               local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z})
                               if creature.type == 1 then
                                       table.insert(creaturesList, creature.uid)
                               end
                       end
               end
       end

       local creature = getTopCreature(position)
       if creature.type == 1 then
               if not(table.find(creaturesList, creature.uid)) then
                       table.insert(creaturesList, creature.uid)
               end
       end
   return creaturesList
end

local t, n, storage = {
       {x=496, y=537, z=9},
       {x=497, y=537, z=9},
       {x=498, y=537, z=9},
       {x=499, y=537, z=9}
}, {
       {x=490, y=495, z=9},
       {x=504, y=505, z=9},
       {x=504, y=495, z=9},
       {x=490, y=505, z=9}
}, {
       placed = 10001,
       max = 10002,
       radius = 10003
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
       if item.itemid == 1946 then
               return doTransformItem(item.uid, item.itemid - 1)
       end

       local v = getPlayersInRange({x=497, y=500, z=9}, 7, 5)
       if #v > 0 then
               return doPlayerSendCancel(cid, "Please wait for the current match to end.")
       end

       local players = {}
       for i = 1, #t do
               local v = getTopCreature(t[i]).uid 
               players[i] = isPlayer(v) and v or nil
       end

       if #players < 2 then
               return doPlayerSendCancel(cid, "You need at least 2 players to enter.")
       end

       local first = players[1] and 1 or players[2] and 2 or players[3] and 3 or players[4] and 4
       for i = 1, 4 do
               if players[i] then
                       setPlayerStorageValue(players[i], storage.placed, 0)
                       setPlayerStorageValue(players[i], storage.max, 1)
                       setPlayerStorageValue(players[i], storage.radius, 1)
                       doSendMagicEffect(t[i], CONST_ME_TELEPORT)
                       doTeleportThing(players[i], n[i])
                       doSendMagicEffect(n[i], CONST_ME_TELEPORT)
               end
       end

       doTransformItem(item.uid, item.itemid + 1)
       return true
end

 

Items.xml

 

     <item id="2195" name="boots of haste">
               <attribute key="weight" value="750" />
               <attribute key="slotType" value="feet" />
               <attribute key="speed" value="40" />
               <attribute key="showattributes" value="1" />
               <attribute key="showduration" value="1" />
               <attribute key="decayTo" value="0" />
               <attribute key="duration" value="30" />
       </item>
...
       <item id="8304" name="eternal flames">
               <attribute key="moveable" value="0" />
       </item>
...
       <item id="8306" name="pure energy">
               <attribute key="moveable" value="0" />
       </item>
...
       <item id="8310" name="neutral matter">
               <attribute key="moveable" value="0" />
       </item>
...
       <item id="10570" article="a" name="war crystal">
               <attribute key="moveable" value="0" />
       </item>

 

movements.xml

 

 <movevent type="StepIn" itemid="10764" event="script" value="bombtiles.lua"/>
       <movevent type="AddItem" itemid="10764" tileitem="1" event="script" value="bombtiles.lua"/>
       <movevent type="StepIn" itemid="8304" event="script" value="powerups.lua"/>
       <movevent type="StepIn" itemid="8306" event="script" value="powerups.lua"/>
       <movevent type="StepIn" itemid="8310" event="script" value="powerups.lua"/>

 

bombtiles.lua

 

function onStepIn(cid, item, pos, fromPos)
       if math.abs(pos.x - fromPos.x) == math.abs(pos.y - fromPos.y) then
               if item.actionid == 100 then
                       doItemSetAttribute(item.uid, "aid", 0)
               else
                       doItemSetAttribute(getTileItemById(fromPos, 10764).uid, "aid", 100)
                       doTeleportThing(cid, fromPos, false)
               end
       end
end

function onAddItem(moveItem, tileItem, position, cid)
       if not isInArray({8304, 8306, 8310, 9468, 10570}, moveItem.itemid) then
               doRemoveItem(moveItem.uid)
       end
end

 

powerups.lua

 

local t = {
       from = {x=490, y=495, z=9},
       to = {x=504, y=505, z=9},
       storage = {
               max = 10002,
               radius = 10003
       }
}
function onStepIn(cid, item, pos, fromPos)
       if isInRange(pos, t.from, t.to) then
               if item.itemid == 8304 then
                       local n = getPlayerStorageValue(cid, t.storage.max)
                       if n < 3 then
                               setPlayerStorageValue(cid, t.storage.max, n + 1)
                               doRemoveItem(item.uid)
                               doSendMagicEffect(pos, CONST_ME_FIREATTACK)
                       end
               elseif item.itemid == 8306 then
                       local n = getPlayerSlotItem(cid, CONST_SLOT_FEET)
                       if n.itemid ~= 2195 then
                               doPlayerAddItem(cid, 2050, 1)
                               doPlayerAddItem(cid, 2050, 1)
                               doPlayerAddItem(cid, 2050, 1)
                               doDecayItem(doPlayerAddItem(cid, 2195, 1))
                               doPlayerRemoveItem(cid, 2050, 1)
                               doPlayerRemoveItem(cid, 2050, 1)
                               doPlayerRemoveItem(cid, 2050, 1)
                               doRemoveItem(item.uid)
                               doSendMagicEffect(pos, CONST_ME_ENERGYHIT)
                       end
               elseif item.itemid == 8310 then
                       local n = getPlayerStorageValue(cid, t.storage.radius)
                       if n < 4 then
                               setPlayerStorageValue(cid, t.storage.radius, n + 1)
                               doRemoveItem(item.uid)
                               doSendMagicEffect(pos, CONST_ME_GROUNDSHAKER)
                       end
               end
       end
end

 

RETIRADO DE http://otland.net/f81/bomberman-73864/

 

AJUDA A MONTA O MAP POR FAVOR POSTE EM BAIXO O MAP COM AS COODENADAS cerTAS

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

Para criar o mapa é só fazer uma área com extrema dificuldade para jogarem...

Seria uma arena muito legal...

 

Coloque as coordenadas do mapa para editar no script

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

  • 6 months later...
  • 4 months later...

Eae galerinha to montando uma coisa legal e nova Client bomber man

 

WTB

 

World Tibia Bomber Man

 

Vai ser um mapa gigantesco com bixos para matar com bombas e também chefes igual bosses em tibia daw to produzindo o client caso queiram ajudar tem vagas sim...

 

Email:gabriel-mucho-loko@hotmail.com

 

Temos;

System bomber man

Sprites

Client

Bixos

Estrategias em mente

Roupas (addons irados)

e muita diversão

questes

Link para o comentário
Compartilhar em outros sites

  • 5 months later...
  • 1 month later...

cara oque seria essas coordenas?

 

 

local t = {

from = {x=490, y=495, z=9},

to = {x=504, y=505, z=9},

storage = {

placed = 10001,

max = 10002,

radius = 10003

},

delay = 3000,

bombID = 10570,

effect = CONST_ME_FIREAREA,

blockID = 9468,

text = "BOOM!",

temple = {x=498, y=541, z=9},

exceptions = {

{x=490, y=495, z=9},

{x=491, y=495, z=9},

{x=490, y=496, z=9},

 

{x=503, y=495, z=9},

{x=504, y=495, z=9},

{x=504, y=496, z=9},

 

{x=490, y=505, z=9},

{x=491, y=505, z=9},

{x=490, y=504, z=9},

 

{x=503, y=505, z=9},

{x=504, y=505, z=9},

{x=504, y=504, z=9}

}

}

Link para o comentário
Compartilhar em outros sites

  • 6 years later...
  • 3 years later...
Em 01/01/2011 em 14:26, hsz disse:

Ajuda a montar map ?[/sup]

 

 

talkactions.xml

 

<talkaction words="z;Z" event="script" value="bomb.lua"/>
 

 

BOMB.lua

 

function getPlayersInRange(position, radiusx, radiusy)
       local creaturesList = {}
       for x = -radiusx, radiusx do
               for y = -radiusy, radiusy do
                       if not (x == 0 and y == 0) then
                               local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z})
                               if creature.type == 1 then
                                       table.insert(creaturesList, creature.uid)
                               end
                       end
               end
       end

       local creature = getTopCreature(position)
       if creature.type == 1 then
               if not(table.find(creaturesList, creature.uid)) then
                       table.insert(creaturesList, creature.uid)
               end
       end
   return creaturesList
end

function isPositionInArray(haystack, needle)
       for i = 1, #haystack do
               if haystack[i].x == needle.x and haystack[i].y == needle.y and haystack[i].z == needle.z then
                       return true
               end
       end
       return false
end

local t = {
       from = {x=490, y=495, z=9},
       to = {x=504, y=505, z=9},
       storage = {
               placed = 10001,
               max = 10002,
               radius = 10003
       },
       delay = 3000,
       bombID = 10570,
       effect = CONST_ME_FIREAREA,
       blockID = 9468,
       text = "BOOM!",
       temple = {x=498, y=541, z=9},
       exceptions = {
               {x=490, y=495, z=9},
               {x=491, y=495, z=9},
               {x=490, y=496, z=9},

               {x=503, y=495, z=9},
               {x=504, y=495, z=9},
               {x=504, y=496, z=9},

               {x=490, y=505, z=9},
               {x=491, y=505, z=9},
               {x=490, y=504, z=9},

               {x=503, y=505, z=9},
               {x=504, y=505, z=9},
               {x=504, y=504, z=9}
       }
}
function reset()
       local dummy = doCreateItem(10570, 1, {x=486,y=498,z=9})
       for x = t.from.x, t.to.x do
               for y = t.from.y, t.to.y do
                       local pos = {x=x,y=y,z=t.from.z}
                       local i1, i2, i3  = getTileItemById(pos, 8304).uid, getTileItemById(pos, 8306).uid, getTileItemById(pos, 8310).uid
                       if i1 > 0 then
                               doRemoveItem(i1)
                       end
                       if i2 > 0 then
                               doRemoveItem(i2)
                       end
                       if i3 > 0 then
                               doRemoveItem(i3)
                       end
                       if queryTileAddThing(dummy, pos, 4) == RETURNVALUE_NOERROR and not isPositionInArray(t.exceptions, pos) then
                               doCreateItem(t.blockID, 1, pos)
                       end
               end
       end
       doRemoveItem(dummy)
end

local function boom(pos, cid)
       local v = getTileItemById(pos, t.bombID).uid
       if isPlayer(cid) and isInRange(getThingPos(cid), t.from, t.to) then
               setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) - 1)
               doCreatureSay(cid, t.text, TALKTYPE_ORANGE_2, false, nil, pos)
               doSendMagicEffect(pos, t.effect)
               local c = getTopCreature(pos).uid
               if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then
                       doSendMagicEffect(pos, CONST_ME_GIFT_WRAPS)
                       doTeleportThing(c, t.temple)
                       doSendMagicEffect(t.temple, CONST_ME_MORTAREA)
                       local n1, n2 = getPlayerName(c), getPlayerName(cid)
                       doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING)
                       local a = getPlayersInRange({x=497, y=500, z=9}, 7, 5)
                       if #a < 2 then
                               doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING)
                               doPlayerAddLevel(a[1], 1)
                               doTeleportThing(a[1], t.temple)
                               doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED)
                               reset()
                               reset()
                       end
               else
                       local b = getTileItemById(pos, t.blockID).uid
                       if b > 0 then
                               doSendMagicEffect(pos, CONST_ME_BLOCKHIT)
                               doRemoveItem(b)
                               local r = math.random(10)
                               if r < 4 then
                                       doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos)
                               end
                       end
               end
               local N, E, W, S, l = 1, 1, 1, 1, getPlayerStorageValue(cid, t.storage.radius)
               function loopDir(dir)
                       local _pos = {x=pos.x+(dir=="E" and E or dir=="W" and -W or 0), y=pos.y+(dir=="N" and -N or dir=="S" and S or 0), z=pos.z}
                       if queryTileAddThing(v, _pos, 4) == RETURNVALUE_NOERROR or getTileItemById(_pos, t.blockID).uid > 0 then
                               doSendMagicEffect(_pos, t.effect)
                               local c = getTopCreature(_pos).uid
                               if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then
                                       doSendMagicEffect(_pos, CONST_ME_GIFT_WRAPS)
                                       doTeleportThing(c, t.temple)
                                       doSendMagicEffect(t.temple, CONST_ME_MORTAREA)
                                       local n1, n2 = getPlayerName(c), getPlayerName(cid)
                                       doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING)
                                       local a = getPlayersInRange({x=497, y=500, z=9}, 7, 5)
                                       if #a < 2 then
                                               doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING)
                                               doPlayerAddLevel(a[1], 1)
                                               doTeleportThing(a[1], t.temple)
                                               doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED)
                                               reset()
                                               reset()
                                               return "endgame"
                                       end
                               else
                                       local b = getTileItemById(_pos, t.blockID).uid
                                       if b > 0 then
                                               doSendMagicEffect(_pos, CONST_ME_BLOCKHIT)
                                               doRemoveItem(b)
                                               local r = math.random(10)
                                               if r < 4 then
                                                       doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos)
                                               end
                                               return false
                                       end
                               end
                       elseif queryTileAddThing(v, _pos, 4) == 3 then
                               return false
                       end
                       return true
               end
               while N <= l do
                       local q = loopDir("N")
                       if q == "endgame" then
                               return doRemoveItem(v, 1)
                       elseif not q then
                               break
                       else
                               N = N + 1
                       end
               end
               while E <= l do
                       local q = loopDir("E")
                       if q == "endgame" then
                               return doRemoveItem(v, 1)
                       elseif not q then
                               break
                       else
                               E = E + 1
                       end
               end
               while W <= l do
                       local q = loopDir("W")
                       if q == "endgame" then
                               return doRemoveItem(v, 1)
                       elseif not q then
                               break
                       else
                               W = W + 1
                       end
               end
               while S <= l do
                       local q = loopDir("S")
                       if q == "endgame" then
                               return doRemoveItem(v, 1)
                       elseif not q then
                               break
                       else
                               S = S + 1
                       end
               end
       end
       doRemoveItem(v, 1)
end
function onSay(cid, words, param, channel)
       if isInRange(getThingPos(cid), t.from, t.to) then
               setPlayerStorageValue(cid, t.storage.placed, math.max(getPlayerStorageValue(cid, t.storage.placed), 0))
               setPlayerStorageValue(cid, t.storage.max, math.max(getPlayerStorageValue(cid, t.storage.max), 1))
               setPlayerStorageValue(cid, t.storage.radius, math.max(getPlayerStorageValue(cid, t.storage.radius), 1))
               if getPlayerStorageValue(cid, t.storage.placed) < getPlayerStorageValue(cid, t.storage.max) then
                       doCreateItem(t.bombID, 1, getThingPos(cid))
                       addEvent(boom, t.delay, getThingPos(cid), cid)
                       setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) + 1)
               end
               return true
       end
end
 

 

 

lever.lua

 

 

function getPlayersInRange(position, radiusx, radiusy)
       local creaturesList = {}
       for x = -radiusx, radiusx do
               for y = -radiusy, radiusy do
                       if not (x == 0 and y == 0) then
                               local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z})
                               if creature.type == 1 then
                                       table.insert(creaturesList, creature.uid)
                               end
                       end
               end
       end

       local creature = getTopCreature(position)
       if creature.type == 1 then
               if not(table.find(creaturesList, creature.uid)) then
                       table.insert(creaturesList, creature.uid)
               end
       end
   return creaturesList
end

local t, n, storage = {
       {x=496, y=537, z=9},
       {x=497, y=537, z=9},
       {x=498, y=537, z=9},
       {x=499, y=537, z=9}
}, {
       {x=490, y=495, z=9},
       {x=504, y=505, z=9},
       {x=504, y=495, z=9},
       {x=490, y=505, z=9}
}, {
       placed = 10001,
       max = 10002,
       radius = 10003
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
       if item.itemid == 1946 then
               return doTransformItem(item.uid, item.itemid - 1)
       end

       local v = getPlayersInRange({x=497, y=500, z=9}, 7, 5)
       if #v > 0 then
               return doPlayerSendCancel(cid, "Please wait for the current match to end.")
       end

       local players = {}
       for i = 1, #t do
               local v = getTopCreature(t[i]).uid 
               players[i] = isPlayer(v) and v or nil
       end

       if #players < 2 then
               return doPlayerSendCancel(cid, "You need at least 2 players to enter.")
       end

       local first = players[1] and 1 or players[2] and 2 or players[3] and 3 or players[4] and 4
       for i = 1, 4 do
               if players[i] then
                       setPlayerStorageValue(players[i], storage.placed, 0)
                       setPlayerStorageValue(players[i], storage.max, 1)
                       setPlayerStorageValue(players[i], storage.radius, 1)
                       doSendMagicEffect(t[i], CONST_ME_TELEPORT)
                       doTeleportThing(players[i], n[i])
                       doSendMagicEffect(n[i], CONST_ME_TELEPORT)
               end
       end

       doTransformItem(item.uid, item.itemid + 1)
       return true
end
 

 

 

Items.xml

 

 

     <item id="2195" name="boots of haste">
               <attribute key="weight" value="750" />
               <attribute key="slotType" value="feet" />
               <attribute key="speed" value="40" />
               <attribute key="showattributes" value="1" />
               <attribute key="showduration" value="1" />
               <attribute key="decayTo" value="0" />
               <attribute key="duration" value="30" />
       </item>
...
       <item id="8304" name="eternal flames">
               <attribute key="moveable" value="0" />
       </item>
...
       <item id="8306" name="pure energy">
               <attribute key="moveable" value="0" />
       </item>
...
       <item id="8310" name="neutral matter">
               <attribute key="moveable" value="0" />
       </item>
...
       <item id="10570" article="a" name="war crystal">
               <attribute key="moveable" value="0" />
       </item>
 

 

 

movements.xml

 

 

 <movevent type="StepIn" itemid="10764" event="script" value="bombtiles.lua"/>
       <movevent type="AddItem" itemid="10764" tileitem="1" event="script" value="bombtiles.lua"/>
       <movevent type="StepIn" itemid="8304" event="script" value="powerups.lua"/>
       <movevent type="StepIn" itemid="8306" event="script" value="powerups.lua"/>
       <movevent type="StepIn" itemid="8310" event="script" value="powerups.lua"/>
 

 

 

bombtiles.lua

 

 

function onStepIn(cid, item, pos, fromPos)
       if math.abs(pos.x - fromPos.x) == math.abs(pos.y - fromPos.y) then
               if item.actionid == 100 then
                       doItemSetAttribute(item.uid, "aid", 0)
               else
                       doItemSetAttribute(getTileItemById(fromPos, 10764).uid, "aid", 100)
                       doTeleportThing(cid, fromPos, false)
               end
       end
end

function onAddItem(moveItem, tileItem, position, cid)
       if not isInArray({8304, 8306, 8310, 9468, 10570}, moveItem.itemid) then
               doRemoveItem(moveItem.uid)
       end
end
 

 

 

powerups.lua

 

 

local t = {
       from = {x=490, y=495, z=9},
       to = {x=504, y=505, z=9},
       storage = {
               max = 10002,
               radius = 10003
       }
}
function onStepIn(cid, item, pos, fromPos)
       if isInRange(pos, t.from, t.to) then
               if item.itemid == 8304 then
                       local n = getPlayerStorageValue(cid, t.storage.max)
                       if n < 3 then
                               setPlayerStorageValue(cid, t.storage.max, n + 1)
                               doRemoveItem(item.uid)
                               doSendMagicEffect(pos, CONST_ME_FIREATTACK)
                       end
               elseif item.itemid == 8306 then
                       local n = getPlayerSlotItem(cid, CONST_SLOT_FEET)
                       if n.itemid ~= 2195 then
                               doPlayerAddItem(cid, 2050, 1)
                               doPlayerAddItem(cid, 2050, 1)
                               doPlayerAddItem(cid, 2050, 1)
                               doDecayItem(doPlayerAddItem(cid, 2195, 1))
                               doPlayerRemoveItem(cid, 2050, 1)
                               doPlayerRemoveItem(cid, 2050, 1)
                               doPlayerRemoveItem(cid, 2050, 1)
                               doRemoveItem(item.uid)
                               doSendMagicEffect(pos, CONST_ME_ENERGYHIT)
                       end
               elseif item.itemid == 8310 then
                       local n = getPlayerStorageValue(cid, t.storage.radius)
                       if n < 4 then
                               setPlayerStorageValue(cid, t.storage.radius, n + 1)
                               doRemoveItem(item.uid)
                               doSendMagicEffect(pos, CONST_ME_GROUNDSHAKER)
                       end
               end
       end
end
 

 

 

RETIRADO DE http://otland.net/f81/bomberman-73864/

 

AJUDA A MONTA O MAP POR FAVOR POSTE EM BAIXO O MAP COM AS COODENADAS cerTAS

queria saber onde que eu encontro as spr para o evento, tipo parede, piso, bomba etc. se alguem tiver e me passar!!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...