Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- DungeonLib, Dungeon Information System Library, Version 4.3
- Copyright 2019 Owsap Productions
- ]]
- dungeonLib = {}
- dungeonInfo = {}
- dungeonInfo.table = {
- --[[
- { -- metin2_map_devilcatacomb
- ["status"] = 0, -- Dungeon status [ 0 (Open), 1 (Running), 2 (Closed) ]
- ["type"] = 1, -- Dungeon type [ 0 (Unknown), 1 (Private), 2 (Global) ]
- ["organization"] = 1, -- Dungeon organization [ 0 (None), 1 (Party), 2 (Guild) ]
- ["level_limit"] = {75, 0}, -- Dungeon level limit [ min_level, max_level ] ({0, 0} = {1, 120} : no limit)
- ["party_member_limit"] = {1, 0}, -- Dungeon party members [ min_members, max_members ] ({0, 0} = {1, 8} : no limit)
- ["map_index"] = 216, -- Dungeon map index * important
- ["map_coords"] = {5917, 999}, -- Dungeon map coordinates [ x, y ]
- ["cooldown"] = 60*30, -- [ 0 (None) ] | Ex: 60 * 60 * 3 = 3 hours
- ["duration"] = 60*60*1, -- [ 0 (None) ] | Ex: 60 * 60 * 3 = 3 hours
- ["entrance_map_index"] = 65, -- Entrance map index
- ["strength_bonus"] = 63, -- Strength bonus id against dungeon monsters
- ["resistance_bonus"] = 35, -- Resistance bonus id against dungeon monsters
- ["required_item"] = {30319, 1}, -- Required dungeon item [ vnum, count]
- },
- ]]
- { -- metin2_map_deviltower1
- ["status"] = 0,
- ["type"] = 2,
- ["organization"] = 0,
- ["level_limit"] = {45, 0},
- ["party_member_limit"] = {0, 0},
- ["map_index"] = 66,
- ["map_coords"] = {5908, 1112},
- ["cooldown"] = 0,
- ["duration"] = 0,
- ["entrance_map_index"] = 65,
- ["strength_bonus"] = 22,
- ["resistance_bonus"] = 37,
- ["required_item"] = {0, 0},
- },
- { -- metin2_map_deviltower1
- ["status"] = 0,
- ["type"] = 2,
- ["organization"] = 0,
- ["level_limit"] = {45, 0},
- ["party_member_limit"] = {0, 0},
- ["map_index"] = 66,
- ["map_coords"] = {5908, 1112},
- ["cooldown"] = 0,
- ["duration"] = 0,
- ["entrance_map_index"] = 65,
- ["strength_bonus"] = 22,
- ["resistance_bonus"] = 37,
- ["required_item"] = {0, 0},
- },
- }
- dungeonInfo.map_name = {
- [0] = "Necunoscut",
- [64] = "Valea Seungryong",
- [65] = "Templul Hwang",
- [66] = "metin2_map_deviltower1",
- [216] = "Catacomba Diavolului",
- [302] = "Padurea Fermecata",
- [322] = "Masmorra Erebus",
- }
- dungeonInfo.bonus_name = {
- [0] = "Brak",
- [21] = "Silny przeciwko Diabły",
- [22] = "Silny przeciwko Nieumarłe",
- [63] = "Silny przeciwko Potworom",
- [35] = "Ogien",
- [37] = "Magia",
- [38] = "Wiatr",
- }
- function dungeonLib.update_ranking(dungeonID, rankingType)
- cmdchat(string.format("CleanDungeonRanking"))
- d.get_rank(dungeonID, rankingType)
- cmdchat(string.format("OpenDungeonRanking"))
- end
- function dungeonLib.update()
- local dungeonTable = dungeonInfo.table
- if table.getn(dungeonTable) == 0 then return end
- cmdchat(string.format("DungeonInfo %d", q.getcurrentquestindex()))
- cmdchat(string.format("CleanDungeonInfo"))
- for index in ipairs(dungeonTable) do
- -- Get indexed data from dungeon table
- dungeonStatus = dungeonTable[index]["status"] -- todo: (game.get_event_flag("dungeon") ~? 0:open | >0:closed/running )
- dungeonType = dungeonTable[index]["type"]
- dungeonOrganization = dungeonTable[index]["organization"]
- dungeonLevelMinLimit = dungeonTable[index]["level_limit"][1]
- dungeonLevelMaxLimit = dungeonTable[index]["level_limit"][2]
- dungeonPartyMemberMinLimit = dungeonTable[index]["party_member_limit"][1]
- dungeonPartyMemberMaxLimit = dungeonTable[index]["party_member_limit"][2]
- dungeonMapIndex = dungeonTable[index]["map_index"]
- dungeonMapCoordX = dungeonTable[index]["map_coords"][1]
- dungeonMapCoordY = dungeonTable[index]["map_coords"][2]
- dungeonCooldown = dungeonTable[index]["cooldown"]
- dungeonDuration = dungeonTable[index]["duration"]
- dungeonEntranceMapIndex = dungeonTable[index]["entrance_map_index"]
- dungeonStrengthBonus = dungeonTable[index]["strength_bonus"]
- dungeonResistanceBonus = dungeonTable[index]["resistance_bonus"]
- dungeonItemVnum = dungeonTable[index]["required_item"][1]
- dungeonItemCount = dungeonTable[index]["required_item"][2]
- -- Get dungeon rank from indexed dungeon
- if dungeonMapIndex > 0 then
- dungeonFinished = d.get_my_rank(dungeonMapIndex, 1) -- dungeonLib.get_rank(index, pc.get_name(), 1)
- dungeonFastestTime = d.get_my_rank(dungeonMapIndex, 2) -- dungeonLib.get_rank(index, pc.get_name(), 2)
- dungeonHighestDamage = d.get_my_rank(dungeonMapIndex, 3) -- dungeonLib.get_rank(index, pc.get_name(), 3)
- else
- dungeonFinished = 0
- dungeonFastestTime = 0
- dungeonHighestDamage = 0
- end
- -- Converts data to string
- dungeonStrengthBonusName = dungeonInfo.bonus_name[dungeonStrengthBonus]
- dungeonResistanceBonusName = dungeonInfo.bonus_name[dungeonResistanceBonus]
- -- Replace converted strings for client communication
- dungeonStrengthBonusName = string.gsub(dungeonStrengthBonusName, " ", "_")
- dungeonResistanceBonusName = string.gsub(dungeonResistanceBonusName, " ", "_")
- if dungeonLevelMinLimit <= 0 then dungeonLevelMinLimit = 1 end
- if dungeonLevelMaxLimit <= 0 then dungeonLevelMaxLimit = 120 end
- if dungeonPartyMemberMinLimit <= 0 then dungeonPartyMemberMinLimit = 1 end
- if dungeonPartyMemberMaxLimit <= 0 then dungeonPartyMemberMaxLimit = 8 end
- cmdchat(string.format("UpdateDungeonInfo %d %d %d %d %d %d %d %d %d %d %d %d %d %s %s %d %d %d %d %d",
- dungeonStatus,
- dungeonType,
- dungeonOrganization,
- dungeonLevelMinLimit,
- dungeonLevelMaxLimit,
- dungeonPartyMemberMinLimit,
- dungeonPartyMemberMaxLimit,
- dungeonMapIndex,
- dungeonMapCoordX,
- dungeonMapCoordY,
- dungeonCooldown,
- dungeonDuration,
- dungeonEntranceMapIndex,
- dungeonStrengthBonusName,
- dungeonResistanceBonusName,
- dungeonItemVnum,
- dungeonItemCount,
- dungeonFinished,
- dungeonFastestTime,
- dungeonHighestDamage
- ))
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement