Advertisement
Guest User

Untitled

a guest
Dec 8th, 2024
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.74 KB | None | 0 0
  1. --[[
  2. DungeonLib, Dungeon Information System Library, Version 4.3
  3. Copyright 2019 Owsap Productions
  4. ]]
  5.  
  6. dungeonLib = {}
  7. dungeonInfo = {}
  8. dungeonInfo.table = {
  9. --[[
  10. { -- metin2_map_devilcatacomb
  11. ["status"] = 0, -- Dungeon status [ 0 (Open), 1 (Running), 2 (Closed) ]
  12. ["type"] = 1, -- Dungeon type [ 0 (Unknown), 1 (Private), 2 (Global) ]
  13. ["organization"] = 1, -- Dungeon organization [ 0 (None), 1 (Party), 2 (Guild) ]
  14. ["level_limit"] = {75, 0}, -- Dungeon level limit [ min_level, max_level ] ({0, 0} = {1, 120} : no limit)
  15. ["party_member_limit"] = {1, 0}, -- Dungeon party members [ min_members, max_members ] ({0, 0} = {1, 8} : no limit)
  16. ["map_index"] = 216, -- Dungeon map index * important
  17. ["map_coords"] = {5917, 999}, -- Dungeon map coordinates [ x, y ]
  18. ["cooldown"] = 60*30, -- [ 0 (None) ] | Ex: 60 * 60 * 3 = 3 hours
  19. ["duration"] = 60*60*1, -- [ 0 (None) ] | Ex: 60 * 60 * 3 = 3 hours
  20. ["entrance_map_index"] = 65, -- Entrance map index
  21. ["strength_bonus"] = 63, -- Strength bonus id against dungeon monsters
  22. ["resistance_bonus"] = 35, -- Resistance bonus id against dungeon monsters
  23. ["required_item"] = {30319, 1}, -- Required dungeon item [ vnum, count]
  24. },
  25. ]]
  26. { -- metin2_map_deviltower1
  27. ["status"] = 0,
  28. ["type"] = 2,
  29. ["organization"] = 0,
  30. ["level_limit"] = {45, 0},
  31. ["party_member_limit"] = {0, 0},
  32. ["map_index"] = 66,
  33. ["map_coords"] = {5908, 1112},
  34. ["cooldown"] = 0,
  35. ["duration"] = 0,
  36. ["entrance_map_index"] = 65,
  37. ["strength_bonus"] = 22,
  38. ["resistance_bonus"] = 37,
  39. ["required_item"] = {0, 0},
  40. },
  41. { -- metin2_map_deviltower1
  42. ["status"] = 0,
  43. ["type"] = 2,
  44. ["organization"] = 0,
  45. ["level_limit"] = {45, 0},
  46. ["party_member_limit"] = {0, 0},
  47. ["map_index"] = 66,
  48. ["map_coords"] = {5908, 1112},
  49. ["cooldown"] = 0,
  50. ["duration"] = 0,
  51. ["entrance_map_index"] = 65,
  52. ["strength_bonus"] = 22,
  53. ["resistance_bonus"] = 37,
  54. ["required_item"] = {0, 0},
  55. },
  56. }
  57.  
  58. dungeonInfo.map_name = {
  59. [0] = "Necunoscut",
  60. [64] = "Valea Seungryong",
  61. [65] = "Templul Hwang",
  62. [66] = "metin2_map_deviltower1",
  63. [216] = "Catacomba Diavolului",
  64. [302] = "Padurea Fermecata",
  65. [322] = "Masmorra Erebus",
  66. }
  67.  
  68. dungeonInfo.bonus_name = {
  69. [0] = "Brak",
  70. [21] = "Silny przeciwko Diabły",
  71. [22] = "Silny przeciwko Nieumarłe",
  72. [63] = "Silny przeciwko Potworom",
  73. [35] = "Ogien",
  74. [37] = "Magia",
  75. [38] = "Wiatr",
  76. }
  77.  
  78. function dungeonLib.update_ranking(dungeonID, rankingType)
  79. cmdchat(string.format("CleanDungeonRanking"))
  80. d.get_rank(dungeonID, rankingType)
  81. cmdchat(string.format("OpenDungeonRanking"))
  82. end
  83.  
  84. function dungeonLib.update()
  85. local dungeonTable = dungeonInfo.table
  86.  
  87. if table.getn(dungeonTable) == 0 then return end
  88.  
  89. cmdchat(string.format("DungeonInfo %d", q.getcurrentquestindex()))
  90. cmdchat(string.format("CleanDungeonInfo"))
  91.  
  92. for index in ipairs(dungeonTable) do
  93. -- Get indexed data from dungeon table
  94. dungeonStatus = dungeonTable[index]["status"] -- todo: (game.get_event_flag("dungeon") ~? 0:open | >0:closed/running )
  95. dungeonType = dungeonTable[index]["type"]
  96. dungeonOrganization = dungeonTable[index]["organization"]
  97. dungeonLevelMinLimit = dungeonTable[index]["level_limit"][1]
  98. dungeonLevelMaxLimit = dungeonTable[index]["level_limit"][2]
  99. dungeonPartyMemberMinLimit = dungeonTable[index]["party_member_limit"][1]
  100. dungeonPartyMemberMaxLimit = dungeonTable[index]["party_member_limit"][2]
  101. dungeonMapIndex = dungeonTable[index]["map_index"]
  102. dungeonMapCoordX = dungeonTable[index]["map_coords"][1]
  103. dungeonMapCoordY = dungeonTable[index]["map_coords"][2]
  104. dungeonCooldown = dungeonTable[index]["cooldown"]
  105. dungeonDuration = dungeonTable[index]["duration"]
  106. dungeonEntranceMapIndex = dungeonTable[index]["entrance_map_index"]
  107. dungeonStrengthBonus = dungeonTable[index]["strength_bonus"]
  108. dungeonResistanceBonus = dungeonTable[index]["resistance_bonus"]
  109. dungeonItemVnum = dungeonTable[index]["required_item"][1]
  110. dungeonItemCount = dungeonTable[index]["required_item"][2]
  111.  
  112. -- Get dungeon rank from indexed dungeon
  113. if dungeonMapIndex > 0 then
  114. dungeonFinished = d.get_my_rank(dungeonMapIndex, 1) -- dungeonLib.get_rank(index, pc.get_name(), 1)
  115. dungeonFastestTime = d.get_my_rank(dungeonMapIndex, 2) -- dungeonLib.get_rank(index, pc.get_name(), 2)
  116. dungeonHighestDamage = d.get_my_rank(dungeonMapIndex, 3) -- dungeonLib.get_rank(index, pc.get_name(), 3)
  117. else
  118. dungeonFinished = 0
  119. dungeonFastestTime = 0
  120. dungeonHighestDamage = 0
  121. end
  122.  
  123. -- Converts data to string
  124. dungeonStrengthBonusName = dungeonInfo.bonus_name[dungeonStrengthBonus]
  125. dungeonResistanceBonusName = dungeonInfo.bonus_name[dungeonResistanceBonus]
  126.  
  127. -- Replace converted strings for client communication
  128. dungeonStrengthBonusName = string.gsub(dungeonStrengthBonusName, " ", "_")
  129. dungeonResistanceBonusName = string.gsub(dungeonResistanceBonusName, " ", "_")
  130.  
  131. if dungeonLevelMinLimit <= 0 then dungeonLevelMinLimit = 1 end
  132. if dungeonLevelMaxLimit <= 0 then dungeonLevelMaxLimit = 120 end
  133. if dungeonPartyMemberMinLimit <= 0 then dungeonPartyMemberMinLimit = 1 end
  134. if dungeonPartyMemberMaxLimit <= 0 then dungeonPartyMemberMaxLimit = 8 end
  135.  
  136. cmdchat(string.format("UpdateDungeonInfo %d %d %d %d %d %d %d %d %d %d %d %d %d %s %s %d %d %d %d %d",
  137. dungeonStatus,
  138. dungeonType,
  139. dungeonOrganization,
  140. dungeonLevelMinLimit,
  141. dungeonLevelMaxLimit,
  142. dungeonPartyMemberMinLimit,
  143. dungeonPartyMemberMaxLimit,
  144. dungeonMapIndex,
  145. dungeonMapCoordX,
  146. dungeonMapCoordY,
  147. dungeonCooldown,
  148. dungeonDuration,
  149. dungeonEntranceMapIndex,
  150. dungeonStrengthBonusName,
  151. dungeonResistanceBonusName,
  152. dungeonItemVnum,
  153. dungeonItemCount,
  154. dungeonFinished,
  155. dungeonFastestTime,
  156. dungeonHighestDamage
  157. ))
  158. end
  159. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement