Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ae galera, ta ai pra vocês um produto que ja EXISTIA NA INTERNET.

92953467.png

Em talkactions.xml

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

Em talkactions/scripts crie 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.x == needle.x and haystack.y == needle.y and haystack.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© and isInRange(getThingPos©, 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©, getPlayerName(cid)

doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex© == 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© and isInRange(getThingPos©, 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©, getPlayerName(cid)

doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex© == 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

Em talkactions/scripts crie 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).uid

players = 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 then

setPlayerStorageValue(players, storage.placed, 0)

setPlayerStorageValue(players, storage.max, 1)

setPlayerStorageValue(players, storage.radius, 1)

doSendMagicEffect(t, CONST_ME_TELEPORT)

doTeleportThing(players, n)

doSendMagicEffect(n, CONST_ME_TELEPORT)

end

end

doTransformItem(item.uid, item.itemid + 1)

return true

end

Em items.xml modifique os items listados abaixo do jeito que estão:

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

Em movements/scripts crie 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

Crie outro arquivo 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

Em movements.xml coloque:

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

Download do Mapa

Link para o post
Compartilhar em outros sites

foi eu que fiz, fail kkkkkkk /\

-----------------------------------

Nunca brinquei nesse evento ai, deve ser bem legal ^^ rep.

16/11/2014

23/11/2014

 

RIP AnneMotta 21/01/2012 - 15/01/2014

Liga das lendas: DIAMOND É A META

6qpqBbJ.png

Link para o post
Compartilhar em outros sites

Po Mano Ensina Como Configura O Event E Talz Pq Assim Fica Fácil Só Pega O Evento Joga No Tópico

AGUARDANDO !

Link para o post
Compartilhar em outros sites

Esse sistema não é o meu não... O meu criei do 0 a pedido de um cliente, que bom que já tem um sistema parecido, mais não vem falar que é o meu e que já tinha na internet e eu coloquei pra vender. Até porque eu nunca peguei nada pronto e vendi, quando não crio do 0 sempre faço minhas atualizações e implemento coisas novas antes de botar a venda. Então arruma teu tópico porque você não pode falar oque não sabe.

JhonBot

O melhor bot para PXG

 

 

Link para o post
Compartilhar em outros sites
  • 3 months later...
Visitante
Este tópico está impedido de receber novos posts.
  • 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