- Dołączył
- Luty 12, 2010
- Posty
- 171
- Liczba reakcji
- 1
Jak wiadomo istnieje skrypt mini gry Bomberman oto on:
TalkAction Bomberman - Oryginalny temat .
Problem polega na tym ?e nie wiem gdzie, co, czego i jak wrzuci? oraz gdzie co mam edytowa? .
Chodzi o takie informacje jak :
-Pozycje graczy przed gr?
-Pozycja graczy po wej?ciu do gry
-Pozycja graczy wygranych
-Pozycja graczy przegranych
-Nagroda o ile jaka? jest
-Komendy bo wystawiania bomb
TalkAction Bomberman - Oryginalny temat .
talkactions.xmlbomb.lua<talkaction words="z;Z" event="script" value="bomb.lua"/>lever.luaKod: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
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
items.xml
powerups.lua<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>bombtiles.lualocal 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
endmovements.xmlKod: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 endKod:<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"/>
Problem polega na tym ?e nie wiem gdzie, co, czego i jak wrzuci? oraz gdzie co mam edytowa? .
Chodzi o takie informacje jak :
-Pozycje graczy przed gr?
-Pozycja graczy po wej?ciu do gry
-Pozycja graczy wygranych
-Pozycja graczy przegranych
-Nagroda o ile jaka? jest
-Komendy bo wystawiania bomb

nSay