deadx2

Untitled

Aug 7th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.96 KB | None | 0 0
  1. --[[
  2.    
  3.     ## Achievementsystem v1.0 ~ Shang ##
  4.     ####################################
  5.    
  6.     To set level achievements syntax = achievements['Level'] = {{level, points}, {level, points}}
  7.     To set played time achievements syntax = achievements['PlayedTime'] = {{time, points}, {time, points}}
  8.     To set pvp kills achievements syntax = achievements['Pvp'] = {{kills, points}, {kills, points}}
  9.     To set mobs, bosses and metinstones achievements syntax =
  10.        
  11.         achievements['Mobs']['MIDX'] = {
  12.             [map_idx_from_mob] = {mob_vnums}
  13.         }
  14.         achievements['Mobs'][mob_vnum] = {{kills, points}, {kills, points}}
  15.        
  16.         achievements['Bosses']['MIDX'] = {
  17.             [map_idx_from_boss] = {boss_vnums}
  18.         }
  19.         achievements['Bosses'][boss_vnum] = {{kills, points}, {kills, points}}
  20.        
  21.         achievements['Metins']['MIDX'] = {
  22.             [map_idx_from_metinstone] = {metinstone_vnums}
  23.         }      
  24.         achievements['Metins'][metinstone_vnum] = {{kills, points}, {kills, points}}
  25.    
  26.     example:
  27. ]]
  28.  
  29. achievements = {}
  30. achievements['Level'] = {{5, 10}, {10, 20}, {20, 40}, {30, 60}, {110, 80}, {120, 130}, {127, 180}}
  31. achievements['Mobs'] = {}
  32. achievements['Mobs']['MIDX'] = {
  33.     [1] = {101, 102},
  34.     [21] = {101, 102, 103},
  35.     [41] = {101, 102, 104},
  36. }
  37. achievements['Mobs'][101] = {{10, 5}, {15, 10}, {20, 15}, {25, 20}, {30, 25}}
  38. achievements['Mobs'][102] = {{29, 29}}
  39. achievements['Mobs'][103] = {{88, 88}, {1337, 1000}}
  40. achievements['Mobs'][104] = {{99, 99}, {2674, 2000}}
  41. achievements['Mobs2'] = {}
  42. achievements['Mobs2']['MIDX'] = {
  43.     [1] = {1091, 1093},
  44. }
  45. achievements['Mobs2'][1091] = {{10, 5}, {15, 10}, {20, 15}, {25, 20}, {30, 25}}
  46. achievements['Mobs2'][1093] = {{10, 5}, {15, 10}, {20, 15}, {25, 20}, {30, 25}}
  47. achievements['Mobs3'] = {}
  48. achievements['Mobs3']['MIDX'] = {
  49.     [1] = {5191, 5192},
  50. }
  51. achievements['Mobs3'][5191] = {{10, 5}, {15, 10}, {20, 15}, {25, 20}, {30, 25}}
  52. achievements['Mobs3'][5192] = {{10, 5}, {15, 10}, {20, 15}, {25, 20}, {30, 25}}
  53. achievements['Metins'] = {}
  54. achievements['Metins']['MIDX'] = {
  55.     [1] = {9001},
  56.     [21] = {9001},
  57.     [41] = {9001},
  58. }
  59. achievements['Metins'][9001] = {{2, 10}, {5, 15}}
  60. achievements['Bosses'] = {}
  61. achievements['Bosses']['MIDX'] = {
  62.     [1] = {691},
  63.     [21] = {691},
  64.     [41] = {691},
  65. }
  66. achievements['Bosses'][691] = {{5, 50}, {10, 100}}
  67. achievements['PlayedTime'] = {{500, 50}, {2000, 200}, {5000, 500}, {10000, 1000}, {17500, 3000}, {25000, 5000}, {40000, 8000}, {50000, 10000}}
  68. achievements['Pvp'] = {{2, 300}, {5, 600}, {8, 900}, {10, 1200}, {1750, 1500}, {2000, 1800}, {2650, 2200}, {3000, 2600}, {4250, 3200}, {5000, 4000}}
  69.  
  70. function achievements.getf(flag)
  71.     return pc.getf("achievements", flag)
  72. end
  73.  
  74. function achievements.setf(flag, value)
  75.     pc.setf("achievements", flag, value)
  76. end
  77.  
  78. function achievements.load_achievements()
  79.     local levels,mobs,bosses,metins,played_time,pvp = achievements['Level'],achievements['Mobs'],achievements['Mobs2'],achievements['Mobs3'],achievements['Bosses'],achievements['Metins'],achievements['PlayedTime']--,achievements['Pvp']
  80.     if achievements['Mobs']['MIDX'][pc.get_map_index()] ~= nil then
  81.         for index, value in pairs(achievements['Mobs']['MIDX'][pc.get_map_index()]) do local mobInfoTab = achievements.getAchievementInfo(value, 'Mobs') if mobInfoTab ~= nil then for i = 1, table.getn(mobInfoTab) do cmdchat(string.format("ACHIEVEMENTS SET_ACHIEVEMENT#2#%d#%d#%d#%d", achievements.getf(string.format("mob_kills_%d", value)), mobInfoTab[i][1], mobInfoTab[i][2], value)) end end end
  82.     end
  83.     if achievements['Mobs2']['MIDX'][pc.get_map_index()] ~= nil then
  84.         for index, value in pairs(achievements['Mobs2']['MIDX'][pc.get_map_index()]) do local mobInfoTab2 = achievements.getAchievementInfo(value, 'Mobs2') if mobInfoTab2 ~= nil then for i = 1, table.getn(mobInfoTab2) do cmdchat(string.format("ACHIEVEMENTS SET_ACHIEVEMENT#7#%d#%d#%d#%d", achievements.getf(string.format("mob2_kills_%d", value)), mobInfoTab2[i][1], mobInfoTab2[i][2], value)) end end end
  85.     end
  86.     if achievements['Mobs3']['MIDX'][pc.get_map_index()] ~= nil then
  87.         for index, value in pairs(achievements['Mobs3']['MIDX'][pc.get_map_index()]) do local mobInfoTab3 = achievements.getAchievementInfo(value, 'Mobs3') if mobInfoTab3 ~= nil then for i = 1, table.getn(mobInfoTab3) do cmdchat(string.format("ACHIEVEMENTS SET_ACHIEVEMENT#6#%d#%d#%d#%d", achievements.getf(string.format("mob3_kills_%d", value)), mobInfoTab3[i][1], mobInfoTab3[i][2], value)) end end end
  88.     end
  89.     if achievements['Bosses']['MIDX'][pc.get_map_index()] ~= nil then
  90.         for index, value in pairs(achievements['Bosses']['MIDX'][pc.get_map_index()]) do local bossInfoTab = achievements.getAchievementInfo(value, 'Bosses') if bossInfoTab ~= nil then for i = 1, table.getn(bossInfoTab) do cmdchat(string.format("ACHIEVEMENTS SET_ACHIEVEMENT#3#%d#%d#%d#%d", achievements.getf(string.format("boss_kills_%d", value)), bossInfoTab[i][1], bossInfoTab[i][2], value)) end end end
  91.     end
  92.     if achievements['Metins']['MIDX'][pc.get_map_index()] ~= nil then
  93.         for index, value in pairs(achievements['Metins']['MIDX'][pc.get_map_index()]) do local metinInfoTab = achievements.getAchievementInfo(value, 'Metins') if metinInfoTab ~= nil then for i = 1, table.getn(metinInfoTab) do cmdchat(string.format("ACHIEVEMENTS SET_ACHIEVEMENT#4#%d#%d#%d#%d", achievements.getf(string.format("metin_kills_%d", value)), metinInfoTab[i][1], metinInfoTab[i][2], value)) end end end
  94.     end
  95.     for i = 1, table.getn(levels) do
  96.         cmdchat(string.format("ACHIEVEMENTS SET_ACHIEVEMENT#1#%d#%d#%d#%d", pc.get_level(), levels[i][1], levels[i][2], 0))
  97.     end
  98.     for i = 1, table.getn(played_time) do
  99.         cmdchat(string.format("ACHIEVEMENTS SET_ACHIEVEMENT#5#%d#%d#%d#%d", pc.get_playtime(), played_time[i][1], played_time[i][2], 0))
  100.     end
  101. --  for i = 1, table.getn(pvp) do
  102. --      cmdchat(string.format("ACHIEVEMENTS SET_ACHIEVEMENT#6#%d#%d#%d#%d", achievements.getf("pc_kills"), pvp[i][1], pvp[i][2], 0))
  103. --  end
  104.     achievements.get_ap()
  105. end
  106.  
  107. function achievements.create_categorys()
  108.     for i = 1,7 do
  109.         cmdchat("ACHIEVEMENTS SET_CATEGORY#"..i)
  110.     end
  111. end
  112.  
  113. function achievements.getAchievementInfo(race, tab)
  114.     if achievements[tab][race] ~= nil then
  115.         return achievements[tab][race]
  116.     else
  117.         return {}
  118.     end
  119. end
  120.  
  121. function achievements.get_next_achievement(flag, tab)
  122.     local n = achievements.getf(flag)
  123.     return achievements[tab][n] or 0
  124. end
  125.  
  126. function achievements.get_ap()
  127. --  local c,info = mysql_direct_query("SELECT punkty_osiagniec FROM player.player WHERE name = '"..pc.get_name().."' LIMIT 1;")
  128.     cmdchat("ACHIEVEMENTS SET_AP#"..AchivmentAllPoints())
  129.     return AchivmentAllPoints()
  130. end
  131.  
  132. function achievements.get_only_ap()
  133.     local c,info = mysql_direct_query("SELECT punkty_osiagniec FROM player.player WHERE name = '"..pc.get_name().."' LIMIT 1;")
  134.     cmdchat("ACHIEVEMENTS SET_AP#"..info[1].punkty_osiagniec)
  135.     return info[1].punkty_osiagniec or 0
  136. end
  137.  
  138. function achievements.set_ap(points)
  139.     mysql_direct_query("UPDATE player.player SET punkty_osiagniec = punkty_osiagniec + "..points.." WHERE name = '"..pc.get_name().."';")
  140.     achievements.get_ap()
  141. end
  142.  
  143. function achievements.check_if_first()
  144.     if achievements.getf("first_login") == 0 then
  145.         local categorys = {"level", "pvp", "time", "first_login"}
  146.         for i = 1, table.getn(categorys) do
  147.             achievements.setf(categorys[i], 1)
  148.         end
  149.         io.open(get_locale_base_path()..'/quest/Achievementsystem/'..pc.get_player_id()..'.txt', 'w')
  150.     end
  151. end
  152.  
  153. function achievements.set_finished(category, value, points, mobVnum)
  154.     local file_path = io.open(get_locale_base_path()..'/quest/Achievementsystem/'..pc.get_player_id()..'.txt', 'a+')
  155.     file_path:write(string.format('%d,%d,%d,%d\n', category, value, points, mobVnum))
  156.     file_path:close()
  157.     cmdchat('ACHIEVEMENTS SET_FINISHED#'..category..'#'..value..'#'..points..'#'..mobVnum)
  158.     achievements.load_last_finished_achievements()
  159. end
  160.  
  161. function achievements.load_last_finished_achievements()
  162.     cmdchat('ACHIEVEMENTS CLEAR_LAST_FINISHED#')
  163.     local file_path = get_locale_base_path()..'/quest/Achievementsystem/'..pc.get_player_id()..'.txt'
  164.     for line in io.lines(file_path, 'r') do
  165.         cmdchat('ACHIEVEMENTS SET_LAST_FINISHED#'..line)
  166.     end
  167.     cmdchat('ACHIEVEMENTS REFRESH_LAST_FINISHED#')
  168. end
  169.  
  170. function achievements.load_achievementshop_items()
  171.     local c,items = mysql_direct_query("SELECT * FROM account.achievementshop_items;")
  172.     if c > 0 then
  173.         for i = 1,c do
  174.             cmdchat('ACHIEVEMENTS SET_ACHIEVEMENTSHOP_ITEM#'..items[i].category..'#'..items[i].id..'#'..items[i].vnum..'#'..items[i].price)
  175.         end
  176.     end
  177. end
  178.  
  179. function achievements.set_achievementshop_categories()
  180.     for i = 1,5 do
  181.         cmdchat('ACHIEVEMENTS SET_ACHIEVEMENTSHOP_CATEGORY#'..i)
  182.     end
  183. end
  184.  
  185. function achievements.buy_achievementshop_item(item_id, amount)
  186.     local c,itemInfo = mysql_direct_query("SELECT * FROM account.achievementshop_items WHERE id = "..item_id..";")
  187.     if c > 0 then
  188.         local price = tonumber(itemInfo[1].price)
  189.         if amount > 1 then price = price*amount end
  190.         if achievements.get_ap() < price then syschat('No tienes suficientes puntos de logro.') return end
  191.         pc.give_item2_select(tonumber(itemInfo[1].vnum), amount)
  192.         achievements.unset_ap(price)
  193.     end
  194. end
  195.  
  196. function achievements.unset_ap(points)
  197.     mysql_direct_query("UPDATE player.player SET punkty_osiagniec = punkty_osiagniec - "..points.." WHERE name = '"..pc.get_name().."';")
  198.     achievements.get_ap()
  199. end
Add Comment
Please, Sign In to add comment