Advertisement
Guest User

HUD Monitor My Hunting v1.0.2

a guest
Mar 23rd, 2014
3,295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 10.16 KB | None | 0 0
  1.    
  2.  
  3.     -- [[ INIT START ]] --
  4.         --
  5.         --                       88                                                                
  6.         --                       ""                                                ,d              
  7.         --                                                                         88              
  8.         --            ,adPPYba,  88  8b,dPPYba,  88,dPYba,,adPYba,   ,adPPYYba,  MM88MMM  ,adPPYba,
  9.         --            I8[    ""  88  88P'   "Y8  88P'   "88"    "8a  ""     `Y8    88    a8P_____88
  10.         --             `"Y8ba,   88  88          88      88      88  ,adPPPPP88    88    8PP"""""""
  11.         --            aa    ]8I  88  88          88      88      88  88,    ,88    88,   "8b,   ,aa
  12.         --   Author:  `"YbbdP"'  88  88          88      88      88  `"8bbdP"Y8    "Y888  `"Ybbd8"'
  13.         --  
  14.         --   Monitor My Hunting!
  15.         --
  16.         --   Version: 1.0.2
  17.         --   Created: 7.09.2012
  18.         --   Last update: 23.03.2014
  19.         --
  20.        
  21.         MONITOR_MY_HUNTING = MONITOR_MY_HUNTING or {
  22.             SCRIPT_NAME = "Monitor My Hunting",
  23.             SCRIPT_VERSION = "1.0",
  24.            
  25.             CLEARED_STATS = false,
  26.             INITIALIZED = false,
  27.         }
  28.      
  29.         MONITOR_MY_HUNTING.SHOW_ALL_ITEMS = false
  30.         MONITOR_MY_HUNTING.ITEMS_LIST = {
  31.             {NAME = "gold coin", VALUE = 1},
  32.             {NAME = "platinum coin", VALUE = 100},
  33.         }
  34.      
  35.         MONITOR_MY_HUNTING.SHOW_ALL_SUPPLIES = true
  36.         MONITOR_MY_HUNTING.SUPPLIES_LIST = {
  37.             {NAME = "mana potion", PRICE = 50},
  38.         }
  39.        
  40.         -- [[ DO NOT CHANGE ANYTHING BELOW THIS LINE. ]] --
  41.        
  42.         MONITOR_MY_HUNTING.TEMP_ITEMS_LIST = MONITOR_MY_HUNTING.TEMP_ITEMS_LIST or {}
  43.         MONITOR_MY_HUNTING.TEMP_SUPPLIES_LIST = MONITOR_MY_HUNTING.TEMP_SUPPLIES_LIST or {}
  44.         MONITOR_MY_HUNTING.COLORS = MONITOR_MY_HUNTING.COLORS or {
  45.             BLACK = rgbcolor(1, 1, 1),
  46.             ORANGE = rgbcolor(255, 165, 0),
  47.             BLUE = rgbcolor(30, 144, 255),
  48.             CORNSILK = rgbcolor(205, 200, 177),
  49.             WHITE = rgbcolor(255, 255, 255),
  50.             GREEN = rgbcolor(107, 142, 35),
  51.             RED = rgbcolor(178, 34, 34),
  52.         }
  53.        
  54.         local function CreateMessageObject(MESSAGE_DATA)
  55.             if (type(MESSAGE_DATA) ~= "userdata") then
  56.                 return setmetatable({__data = {TYPE = -1, TIME_STAMP = -1, SENDER_NAME = "", SENDER_LEVEL = -1, CONTENT = ""}}, MessageMetaTable)
  57.             else
  58.                 return setmetatable({__data = {TYPE = MESSAGE_DATA.type, TIME_STAMP = Misc.ConvertToSeconds(string.sub(MESSAGE_DATA.text, 1, 5)), SENDER_NAME = MESSAGE_DATA.sender, SENDER_LEVEL = tonumber((tostring(string.match(MESSAGE_DATA.text, ".+ (%b[]): .+")):gsub("[^%d]", ""))) or 0, CONTENT = string.sub(MESSAGE_DATA.text, 7)}}, MessageMetaTable)
  59.             end
  60.         end
  61.        
  62.         local function addtextshadow(DISPLAY_TEXT, X_OFFSET, Y_OFFSET, FONT_COLOR)
  63.             setfontcolor(MONITOR_MY_HUNTING.COLORS.BLACK)
  64.             addtext(DISPLAY_TEXT, X_OFFSET + 1, Y_OFFSET + 1)
  65.             setfontcolor(FONT_COLOR)
  66.             addtext(DISPLAY_TEXT, X_OFFSET, Y_OFFSET)
  67.         end
  68.     -- [[ INIT END ]] --
  69.      
  70.     if (not Stats.Update()) then
  71.         local SERVER_LOG_MESSAGES = getnewmessages("Server Log")
  72.         local SERVER_LOG_MESSAGES_COUNT = SERVER_LOG_MESSAGES.count - 1
  73.        
  74.         for INDEX = 0, SERVER_LOG_MESSAGES_COUNT do
  75.             local MESSAGE_OBJECT = CreateMessageObject(SERVER_LOG_MESSAGES[SERVER_LOG_MESSAGES_COUNT - INDEX])
  76.            
  77.             if (MESSAGE_OBJECT:Type() == 20 and MESSAGE_OBJECT:Content():lower():match("^loot of")) then
  78.                 local LOOT_INFO = Message.ParseLootMessage(MESSAGE_OBJECT, true)
  79.      
  80.                 if (#LOOT_INFO.NAME > 0) then
  81.                     Stats.__data.MONSTERS_KILLED[LOOT_INFO.NAME] = (Stats.__data.MONSTERS_KILLED[LOOT_INFO.NAME] or 0) + 1
  82.                    
  83.                     for _, LOOT_ITEM in ipairs(LOOT_INFO.ITEMS) do
  84.                         if (Stats.__data.ITEMS_LOOTED[LOOT_ITEM.ID]) then
  85.                             Stats.__data.ITEMS_LOOTED[LOOT_ITEM.ID].QUANTITY = Stats.__data.ITEMS_LOOTED[LOOT_ITEM.ID].QUANTITY + LOOT_ITEM.QUANTITY
  86.                         else
  87.                             Stats.__data.ITEMS_LOOTED[LOOT_ITEM.ID] = {ID = LOOT_ITEM.ID, NAME = LOOT_ITEM.NAME, QUANTITY = LOOT_ITEM.QUANTITY, VALUE = Item.GetValue(LOOT_ITEM.ID)}
  88.                         end
  89.                     end
  90.                 end
  91.             end
  92.         end
  93.     end
  94.      
  95.     local RESET_ITEMS_AND_SUPPLIES = #MONITOR_MY_HUNTING.ITEMS_LIST ~= #MONITOR_MY_HUNTING.TEMP_ITEMS_LIST or #MONITOR_MY_HUNTING.SUPPLIES_LIST ~= #MONITOR_MY_HUNTING.TEMP_SUPPLIES_LIST
  96.      
  97.     if (not RESET_ITEMS_AND_SUPPLIES) then
  98.         for INDEX, LOOT_ITEM in ipairs(MONITOR_MY_HUNTING.ITEMS_LIST) do
  99.             if (LOOT_ITEM.NAME ~= MONITOR_MY_HUNTING.TEMP_ITEMS_LIST[INDEX].NAME or LOOT_ITEM.VALUE ~= MONITOR_MY_HUNTING.TEMP_ITEMS_LIST[INDEX].VALUE) then
  100.                 RESET_ITEMS_AND_SUPPLIES = true
  101.                 break
  102.             end
  103.         end
  104.     end
  105.      
  106.     if (not RESET_ITEMS_AND_SUPPLIES) then
  107.         for INDEX, SUPPLY_ITEM in ipairs(MONITOR_MY_HUNTING.SUPPLIES_LIST) do
  108.             if (SUPPLY_ITEM.NAME ~= MONITOR_MY_HUNTING.TEMP_SUPPLIES_LIST[INDEX].NAME or SUPPLY_ITEM.PRICE ~= MONITOR_MY_HUNTING.TEMP_SUPPLIES_LIST[INDEX].PRICE) then
  109.                 RESET_ITEMS_AND_SUPPLIES = true
  110.                 break
  111.             end
  112.         end
  113.     end
  114.      
  115.     if (not MONITOR_MY_HUNTING.INITIALIZED or RESET_ITEMS_AND_SUPPLIES) then
  116.         if (not MONITOR_MY_HUNTING.CLEARED_STATS) then
  117.             Stats.Clear(CLEAR_STATS_ALL)
  118.             Stats.Update()
  119.            
  120.             MONITOR_MY_HUNTING.CLEARED_STATS = true
  121.         end
  122.        
  123.         MONITOR_MY_HUNTING.TEMP_ITEMS_LIST, MONITOR_MY_HUNTING.TEMP_SUPPLIES_LIST = {}, {}
  124.            
  125.         for _, LOOT_ITEM in ipairs(MONITOR_MY_HUNTING.ITEMS_LIST) do
  126.             local LOOT_ITEM_ID = Item.GetID(type(LOOT_ITEM.NAME) ~= "table" and LOOT_ITEM.NAME or unpack(LOOT_ITEM.NAME))
  127.            
  128.             Stats.AddItemsLooted(LOOT_ITEM_ID, 0, LOOT_ITEM.VALUE)
  129.             table.insert(MONITOR_MY_HUNTING.TEMP_ITEMS_LIST, {ID = LOOT_ITEM_ID, NAME = LOOT_ITEM.NAME, VALUE = LOOT_ITEM.VALUE})
  130.         end
  131.          
  132.         for _, SUPPLY_ITEM in ipairs(MONITOR_MY_HUNTING.SUPPLIES_LIST) do
  133.             local SUPPLY_ITEM_ID = Item.GetID(type(SUPPLY_ITEM.NAME) ~= "table" and SUPPLY_ITEM.NAME or unpack(SUPPLY_ITEM.NAME))
  134.            
  135.             Stats.AddSuppliesUsed(SUPPLY_ITEM_ID, 0, SUPPLY_ITEM.PRICE)
  136.             table.insert(MONITOR_MY_HUNTING.TEMP_SUPPLIES_LIST, {ID = SUPPLY_ITEM_ID, NAME = SUPPLY_ITEM.NAME, PRICE = SUPPLY_ITEM.PRICE})
  137.         end
  138.        
  139.         MONITOR_MY_HUNTING.INITIALIZED = true
  140.     end
  141.      
  142.     setposition(Client.ClientWindow().right - 434, Client.WorldWindow().top + 5)
  143.      
  144.     local Y_POSITION, INDEX, ITEMS_LOOTED_WORTH, SUPPLIES_USED_WORTH = 30, 0, 0, 0
  145.      
  146.     addtextshadow(sprintf("%s v%s", MONITOR_MY_HUNTING.SCRIPT_NAME:upper(), MONITOR_MY_HUNTING.SCRIPT_VERSION), 10, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.ORANGE)
  147.      
  148.     Y_POSITION = Y_POSITION + 20
  149.      
  150.     addtextshadow("ITEMS LOOTED", 10, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.BLUE)
  151.      
  152.     Y_POSITION = Y_POSITION + 20
  153.      
  154.     for _, LOOT_ITEM in pairs(Stats.GetItemsLooted()) do
  155.         if ((MONITOR_MY_HUNTING.SHOW_ALL_ITEMS or table.find(MONITOR_MY_HUNTING.TEMP_ITEMS_LIST, LOOT_ITEM.ID, "ID")) and LOOT_ITEM.QUANTITY > 0) then
  156.         addtextshadow(((#LOOT_ITEM.NAME > 17 and sprintf("%s...", string.match(string.sub(LOOT_ITEM.NAME, 1, 17), "(.-)%s?$"))) or LOOT_ITEM.NAME):ucwords(), 10, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.CORNSILK)
  157.         addtextshadow(sprintf("%s (%sK)", Misc.FormatNumber(LOOT_ITEM.QUANTITY), tostring(math.floor(LOOT_ITEM.VALUE * LOOT_ITEM.QUANTITY / 100) / 10)), 140, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.WHITE)
  158.      
  159.         INDEX, ITEMS_LOOTED_WORTH = INDEX + 1, ITEMS_LOOTED_WORTH + (LOOT_ITEM.VALUE * LOOT_ITEM.QUANTITY)
  160.         end
  161.     end
  162.      
  163.     addtextshadow("Total:", 10, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.WHITE)
  164.     addtextshadow(sprintf("%s GPs", Misc.FormatNumber(ITEMS_LOOTED_WORTH)), 10 + 35, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.ORANGE)
  165.      
  166.     Y_POSITION = Y_POSITION + 20
  167.      
  168.     addtextshadow("SUPPLIES USED", 10, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.BLUE)
  169.      
  170.     Y_POSITION = Y_POSITION + 20
  171.      
  172.     for _, SUPPLY_ITEM in pairs(Stats.GetSuppliesUsed()) do
  173.         if ((MONITOR_MY_HUNTING.SHOW_ALL_SUPPLIES or table.find(MONITOR_MY_HUNTING.TEMP_SUPPLIES_LIST, SUPPLY_ITEM.ID, "ID")) and SUPPLY_ITEM.QUANTITY > 0) then
  174.             addtextshadow(((#SUPPLY_ITEM.NAME > 17 and sprintf("%s...", string.match(string.sub(SUPPLY_ITEM.NAME, 1, 17), "(.-)%s?$"))) or SUPPLY_ITEM.NAME):ucwords(), 10, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.CORNSILK)
  175.             addtextshadow(sprintf("%s (%sK)", Misc.FormatNumber(SUPPLY_ITEM.QUANTITY), tostring(math.floor(SUPPLY_ITEM.PRICE * SUPPLY_ITEM.QUANTITY / 100) / 10)), 140, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.WHITE)
  176.      
  177.             INDEX, SUPPLIES_USED_WORTH = INDEX + 1, SUPPLIES_USED_WORTH + (SUPPLY_ITEM.PRICE * SUPPLY_ITEM.QUANTITY)
  178.         end
  179.     end
  180.      
  181.     addtextshadow("Total:", 10, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.WHITE)
  182.     addtextshadow(sprintf("%s GPs", Misc.FormatNumber(SUPPLIES_USED_WORTH)), 10 + 35, Y_POSITION + (INDEX * 16), MONITOR_MY_HUNTING.COLORS.ORANGE)
  183.      
  184.     Y_POSITION = Y_POSITION + 20
  185.      
  186.     addtextshadow(sprintf("%s: %s GPs (%s K/H)", ((ITEMS_LOOTED_WORTH >= SUPPLIES_USED_WORTH and ("PROFIT")) or ("WASTE")), Misc.FormatNumber(ITEMS_LOOTED_WORTH - SUPPLIES_USED_WORTH), tostring(math.floor(((ITEMS_LOOTED_WORTH - SUPPLIES_USED_WORTH) * 3600) / (System.HuntingTime() / 1000) / 100) / 10)), 10, Y_POSITION + (INDEX * 16), ITEMS_LOOTED_WORTH >= SUPPLIES_USED_WORTH and MONITOR_MY_HUNTING.COLORS.GREEN or MONITOR_MY_HUNTING.COLORS.RED)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement