Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="UTF-8"?>
- <mod name="Arena Svargrond"
- version="1.0" author="Tommy" contact="tommycrusher@gmail.com" enabled="yes">
- <config name="arenaFunctions"><![CDATA[
- KickPosition = {x=32312, y=31148, z=7} --if the player leave the arena or time is over, where he go.
- RewardsRoom = {x=32312, y=31134, z=6} --rewards room position.
- arenaRoomMaxTime = 240 --max time for each room 240 = 4 min.
- OpenDoorsID = 5125 --if you change doors item ids, change me =D
- TimeStor = 42350 --here will be saved the time.
- myArenaLevel = 45450 --here will be saved the arena level.
- talkNPC = 45451 --Storage to check if the player have paid to the npc and can enter to the arena.
- RewardsStor = {42361, 42371, 42381} --Storage for greenshore, scrapper, warlord.
- isIN = 42352 --to check if the player is in the arena.
- myRoom = 46000 --here will be saved the current room.
- MonStor = 47000 --here will be saved the monster uid.
- DoorsActID = 42357 --Doors near the npc.
- LeavePortals = 42321 --The action id of the portal to leave the rooms (south portals).
- GobletTiles = {42360, 42370, 42380} --Action ids of the tiles for Bronze, Silver and Gold Goblets.
- Cancel = {
- --message when use door and have not paid to the npc.
- [1] = "You have not paid NPC yet.",
- --message when leave arena.
- [2] = "You have been kicked!",
- --message when the player can't get the reward.
- [3] = "You can\'t get this item",
- --message when already got any reward.
- [4] = "It is empty.",
- --when try to open a reward door and haven't completed the level.
- [5] = "You have not finished this arena level.",
- --NPC answer if the player completed all arena levels.
- [6] = "You already did all the arena levels.",
- --message when time is over
- [7] = "The time is over.",
- --message when you can go to the next room, LoL >_> this is not a cancel btw.
- [8] = "You can go to the next room.",
- --when try to go to the next room and not killed the monster yet.
- [9] = "Kill the monster first",
- --when try to go to the next room but there is a player yet...this text will be PLAYERNAME + this text
- [10] = "is in the room yet."
- }
- Completed = {
- [1] = "Congatulations! you have completed the arena in",
- --HERE WILL BE THE ARENA NAME.
- [2] = "difficulty! Now go and take your reward."}
- --then the message will be "Congatulations! you have completed the arena in greenshore/scrapper/warlord difficulty! Now go and take your reward."
- Arena = {
- --greenshore
- [0] = {
- Cost = 10000,
- LevelName = 'greenshore',
- LevelNeeded = 30,
- Goblet = 5807
- },
- --scrapper
- [1] = {
- Cost = 50000,
- LevelName = 'scrapper',
- LevelNeeded = 50,
- Goblet = 5806
- },
- --warlord
- [2] = {
- Cost = 100000,
- LevelName = 'warlord',
- LevelNeeded = 80,
- Goblet = 5805
- }
- }
- Rewards = {
- --greenshore
- --present with items.
- [42361] = {
- Stor = RewardsStor[1],
- Cont = 1990,
- items = {7372, 6569, 6574, 2114},
- count = {1, 10, 1, 1}
- },
- --blacksteel sword.
- [42362] = {
- Stor = RewardsStor[1],
- Cont = nil,
- item = 7406
- },
- --headchopper.
- [42363] = {
- Stor = RewardsStor[1],
- Cont = nil,
- item = 7380
- },
- --orcish maul.
- [42364] = {
- Stor = RewardsStor[1],
- Cont = nil,
- item = 7392
- },
- --backpack with items.
- [42365] = {
- Stor = RewardsStor[1],
- Cont = 7342,
- items = {7365, 7364},
- count = {100, 100}
- },
- --scrapper
- --present with items.
- [42371] = {
- Stor = RewardsStor[2],
- Cont = 1990,
- items = {7372, 6569, 6574, 7183},
- count = {1, 10, 1, 1}
- },
- --mystic blade.
- [42372] = {
- Stor = RewardsStor[2],
- Cont = nil,
- item = 7384
- },
- --heroic axe.
- [42373] = {
- Stor = RewardsStor[2],
- Cont = nil,
- item = 7389
- },
- --cranial basher
- [42374] = {
- Stor = RewardsStor[2],
- Cont = nil,
- item = 7415
- },
- --backpack with items.
- [42375] = {
- Stor = RewardsStor[2],
- Cont = 7342,
- items = {7365, 2547, 2547, 2311, 2304},
- count = {100, 100, 100, 50, 50}
- },
- --warlord
- --present with items.
- [42381] = {
- Stor = RewardsStor[3],
- Cont = 1990,
- items = {7372, 6569, 6574, 6568},
- count = {1, 10, 1, 1}
- },
- --justice seeker
- [42382] = {
- Stor = RewardsStor[3],
- Cont = nil,
- item = 7390
- },
- --royal axe.
- [42383] = {
- Stor = RewardsStor[3],
- Cont = nil,
- item = 7434
- },
- --blessed sceptre.
- [42384] = {
- Stor = RewardsStor[3],
- Cont = nil,
- item = 7429
- },
- --backpack with items.
- [42385] = {
- Stor = RewardsStor[3],
- Cont = 7342,
- items = {2273, 2268, 7443, 7440, 6529},
- count = {50, 50, 1, 1, 100}
- }
- }
- arena_monsters = {
- --greenshore -scrapper --warlord
- [45300] = "Frostfur", [45310] = "Avalanche", [45320] = "Webster",
- [45301] = "Bloodpaw", [45311] = "Kreebosh the Exile", [45321] = "Darakan the Executioner",
- [45302] = "Bovinus", [45312] = "The Dark Dancer", [45322] = "Norgle Glacierbeard",
- [45303] = "Achad", [45313] = "The Hag", [45323] = "The Pit Lord",
- [45304] = "Colerian The Barbarian", [45314] = "Slim", [45324] = "Svoren the Mad",
- [45305] = "The Hairy One", [45315] = "Grimgor Guteater", [45325] = "The Masked Marauder",
- [45306] = "Axeitus Headbanger", [45316] = "Drasilla", [45326] = "Gnorre Chyllson",
- [45307] = "Rocky", [45317] = "Spirit of Earth", [45327] = "Fallen Mooh'tah Master Ghar",
- [45308] = "Cursed Gladiator", [45318] = "Spirit of Water", [45328] = "Deathbringer",
- [45309] = "Orcus the Cruel", [45319] = "Spirit of Fire", [45329] = "The Obliverator"}
- Checking = false
- RoomsACT = {42301, 42302, 42303, 42304, 42305, 42306, 42307, 42308, 42309}
- Goblets = {
- [42360] = {Id=Arena[0].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[0].LevelName.." difficulty."},
- [42370] = {Id=Arena[1].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[1].LevelName.." difficulty."},
- [42380] = {Id=Arena[2].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[2].LevelName.." difficulty."}}
- RewardsDoors = {[42366] = 1, [42376] = 2, [42386] = 3}
- ArenaAdding = {[0] = 3000, [1] = 3010, [2] = 3020}
- function myArenaLevelIs(cid)
- Stor = getPlayerStorageValue(cid, myArenaLevel)
- if Stor == -1 then
- setPlayerStorageValue(cid, myArenaLevel, 0)
- Stor = 0
- elseif Stor == 3 then Stor = 2
- end
- return {
- RC = Arena[Stor].Cost,
- LN = Arena[Stor].LevelName,
- RLV = Arena[Stor].LevelNeeded,
- LV = getPlayerStorageValue(cid, myArenaLevel)
- }
- end
- function getDirectionMove(cid, itempos)
- --function by Nahruto
- p = getCreaturePosition(cid)
- i = itempos
- if p.x > i.x then
- if p.y > i.y then
- ret = NORTHWEST
- elseif p.y < i.y then
- ret = SOUTHWEST
- else
- ret = WEST
- end
- elseif p.x < i.x then
- if p.y > i.y then
- ret = NORTHEAST
- elseif p.y < i.y then
- ret = SOUTHEAST
- else
- ret = EAST
- end
- else
- if p.y > i.y then
- ret = NORTH
- elseif p.y < i.y then
- ret = SOUTH
- else
- ret = nil
- end
- end
- return ret
- end
- function LeaveArena(cid)
- for i = 45300, 45329 do
- setPlayerStorageValue(cid, i, 0)
- end
- if isCreature(getPlayerStorageValue(cid, MonStor)) == TRUE then
- doRemoveCreature(getPlayerStorageValue(cid, MonStor))
- end
- setGlobalStorageValue(getPlayerStorageValue(cid, myRoom), 0)
- doPlayerSendTextMessage(cid, 22, Cancel[2])
- doTeleportThing(cid, KickPosition, FALSE)
- setPlayerStorageValue(cid, TimeStor, 0)
- setPlayerStorageValue(cid, isIN, 0)
- end
- function CheckRooms()
- addEvent(CheckRooms, 1000)
- for i = 42300, 42309 do
- local Player = getGlobalStorageValue(i)
- if isPlayer(Player) == TRUE then
- local PlayerTime = getPlayerStorageValue(Player, TimeStor)
- if PlayerTime <= os.time() then
- doTeleportThing(Player, KickPosition, FALSE)
- setPlayerStorageValue(Player, TimeStor, 0)
- setGlobalStorageValue(i, 0)
- doPlayerSendTextMessage(Player,21, Cancel[7])
- if isCreature(getPlayerStorageValue(Player, MonStor)) == TRUE then
- doRemoveCreature(getPlayerStorageValue(Player, MonStor))
- end
- elseif PlayerTime - 10 <= os.time() then
- doPlayerSendTextMessage(Player, MESSAGE_EVENT_DEFAULT, "you have "..PlayerTime - os.time().." seconds left.!")
- end
- else
- setGlobalStorageValue(i, 0)
- end
- end
- end
- function getArenaMonsterIdByName(name)
- for i = 45300, 45329 do
- if tostring(arena_monsters[i]) == string.lower(tostring(name)) then
- return i
- end
- end
- return false
- end]]></config>
- <event type="login" name="arenaRegister" event="script"><![CDATA[
- domodlib('arenaFunctions')
- function onLogin(cid)
- registerCreatureEvent(cid, "PlayerArena")
- registerCreatureEvent(cid, "ArenaKill")
- return true
- end]]></event>
- <event type="death" name="PlayerArena" event="script"><![CDATA[
- domodlib('arenaFunctions')
- function onDeath(cid, corpse, deathList)
- if getPlayerStorageValue(cid, isIN) == 1 then
- I = 0
- for i = 45300, 45329 do
- if getPlayerStorageValue(cid, i) == 1 then
- I = i
- end
- end
- GlobalStor = I - ArenaAdding[myArenaLevelIs(cid).LV]
- setGlobalStorageValue(GlobalStor, 0)
- setPlayerStorageValue(cid, isIN, 0)
- if isCreature(getPlayerStorageValue(cid, MonStor)) then
- doRemoveCreature(getPlayerStorageValue(cid, MonStor))
- end
- end
- return true
- end
- ]]></event>
- <event type="kill" name="ArenaKill" event="script"><![CDATA[
- domodlib('arenaFunctions')
- function onKill(cid, target, lastHit)
- if getPlayerStorageValue(cid, isIN) == 1 then
- local Room = getArenaMonsterIdByName(getCreatureName(target))
- if Room ~= 0 then
- setPlayerStorageValue(cid, Room, 1)
- doPlayerSendTextMessage(cid, 22, Cancel[8])
- end
- end
- return true
- end]]></event>
- <action fromaid="42357" toaid="42386" event="script"><![CDATA[
- domodlib('arenaFunctions')
- function onUse(cid, item, fromPosition, itemEx, toPosition)
- local myMove = getDirectionMove(cid, fromPosition)
- if myMove == nil then
- return FALSE
- end
- local Reward = Rewards[item.actionid]
- if Reward then
- if getPlayerStorageValue(cid, Reward.Stor) ~= 1 then
- local reward = nil
- if Reward.Cont ~= nil then
- reward = doCreateItemEx(Reward.Cont, 1)
- for i = 1, #Reward.items do
- doAddContainerItem(reward, Reward.items[i], Reward.count[i])
- end
- else
- reward = doCreateItemEx(Reward.item, 1)
- end
- if reward ~= nil then
- if doPlayerAddItemEx(cid, reward, FALSE) == RETURNVALUE_NOERROR then
- doPlayerSendTextMessage(cid, 22,'You have found a '..getItemNameById(getThing(reward).itemid)..'.')
- setPlayerStorageValue(cid, Reward.Stor, 1)
- else
- doPlayerSendTextMessage(cid, 22, Cancel[3])
- end
- end
- else
- doPlayerSendTextMessage(cid, 22, Cancel[4])
- end
- elseif RewardsDoors[item.actionid] then
- if myArenaLevelIs(cid).LV >= RewardsDoors[item.actionid] then
- doTransformItem(item.uid, OpenDoorsID)
- doMoveCreature(cid, myMove)
- else
- doPlayerSendTextMessage(cid, 22, Cancel[5])
- end
- elseif item.actionid == DoorsActID and getPlayerStorageValue(cid, talkNPC) == 1 then
- doTransformItem(item.uid, OpenDoorsID)
- doMoveCreature(cid, myMove)
- else
- doPlayerSendTextMessage(cid, 22, Cancel[1])
- end
- return TRUE
- end]]></action>
- <movevent type="StepIn" fromaid="42300" toaid="42380" event="script"><![CDATA[
- domodlib('arenaFunctions')
- function onStepIn(cid, item, position, fromPosition)
- local ArenaRoom = item.actionid
- if item.actionid == LeavePortals then
- LeaveArena(cid)
- elseif isInArray(GobletTiles, item.actionid) == TRUE then
- local gobletPos = getThingPos(item.uid)
- if getPlayerStorageValue(cid, item.actionid) ~= 1 then
- setPlayerStorageValue(cid, item.actionid, 1)
- local Goblet = doCreateItemEx(Goblets[item.actionid].Id, 1)
- doItemSetAttribute(Goblet, "description", ""..Goblets[item.actionid].txt.."\nAwarded to "..getCreatureName(cid)..".")
- gobletPos.y = gobletPos.y - 1
- doTileAddItemEx(gobletPos, Goblet)
- end
- doTransformItem(item.uid, item.itemid - 1)
- elseif isInArray(RoomsACT, ArenaRoom) == TRUE or ArenaRoom == 42300 then
- if Checking == FALSE then Checking = TRUE CheckRooms() end
- local myLevelArena = myArenaLevelIs(cid).LV
- if ArenaAdding[myLevelArena] then
- Mons = ArenaRoom + ArenaAdding[myLevelArena]
- end
- if getGlobalStorageValue(ArenaRoom) == 0 then
- if isCreature(getPlayerStorageValue(cid, MonStor)) == FALSE then
- if ArenaRoom == 42300 and getPlayerStorageValue(cid, talkNPC) == 1 then
- setPlayerStorageValue(cid, talkNPC, 0)
- setPlayerStorageValue(cid, isIN, 1)
- P = 1
- elseif ArenaRoom ~= 42300 and getPlayerStorageValue(cid, isIN) == 1 then
- P = 1
- else
- P = nil
- end
- if P ~= nil then
- local SpawnPos = getThingPos(ArenaRoom)
- doTeleportThing(cid, SpawnPos, FALSE)
- SpawnPos.x = SpawnPos.x - 1
- SpawnPos.y = SpawnPos.y - 1
- local Monster = doSummonCreature(arena_monsters[Mons], SpawnPos)
- setGlobalStorageValue(ArenaRoom, cid)
- setGlobalStorageValue(ArenaRoom - 1, 0)
- setPlayerStorageValue(cid, TimeStor, os.time()+arenaRoomMaxTime)
- setPlayerStorageValue(cid, MonStor, Monster)
- setPlayerStorageValue(cid, myRoom, ArenaRoom)
- else
- LeaveArena(cid)
- end
- else
- doTeleportThing(cid, fromPosition, TRUE)
- doPlayerSendTextMessage(cid, 22, Cancel[9])
- end
- else
- doTeleportThing(cid, fromPosition, TRUE)
- doPlayerSendTextMessage(cid, 22, ""..getCreatureName(getGlobalStorageValue(cid, ArenaRoom)).." "..Cancel[10].."")
- end
- elseif ArenaRoom == 42310 then
- if isCreature(getPlayerStorageValue(cid, MonStor)) == FALSE then
- doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,""..Completed[1].." "..myArenaLevelIs(cid).LN.." "..Completed[2].."")
- setPlayerStorageValue(cid, myArenaLevel, getPlayerStorageValue(cid, myArenaLevel) + 1)
- setGlobalStorageValue(ArenaRoom - 1, 0)
- setPlayerStorageValue(cid, TimeStor, 0)
- setPlayerStorageValue(cid, isIN, 0)
- doTeleportThing(cid, RewardsRoom, TRUE)
- else
- doTeleportThing(cid, fromPosition, TRUE)
- doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE,'Najpierw zabij potwora!')
- end
- end
- return TRUE
- end]]></movevent>
- <movevent type="StepOut" fromaid="42357" toaid="42387" event="script"><![CDATA[
- domodlib('arenaFunctions')
- function onStepOut(cid, item, position, fromPosition)
- if item.actionid == DoorsActID or RewardsDoors[item.actionid] then
- doTransformItem(item.uid, item.itemid + 1)
- elseif isInArray(GobletTiles, item.actionid) == TRUE then
- doTransformItem(item.uid, item.itemid + 1)
- end
- return TRUE
- end]]></movevent>
- </mod>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement