annotate core.lua @ 61:7e4ff99de252 v2.08a

Incremented TOC, silly me...
author Aaron@MATT-DAMON
date Sun, 21 Aug 2011 12:39:28 -0500
parents 962cafb5915d
children
rev   line source
Aaron@4 1 --[[--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))
Aaron@4 2
Aaron@4 3 RecipeProfit by -[@project-author@]-
Aaron@4 4
Aaron@4 5 Rev: @project-revision@
Aaron@4 6 Updated: @file-date-iso@
Aaron@4 7
Aaron@4 8 --))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))
Aaron@4 9
Aaron@22 10 URL:
Aaron@22 11 http://www.wrathguides.com/
Aaron@22 12
Aaron@22 13 License:
Aaron@22 14 This file is a part of "RecipeProfit for GatherMate."
Aaron@22 15
Aaron@22 16 This program is free software; you can redistribute it and/or
Aaron@22 17 modify it under the terms of the GNU General Public License
Aaron@22 18 as published by the Free Software Foundation, either version 3
Aaron@22 19 of the License, or (at your option) any later version.
Aaron@22 20
Aaron@22 21 This program is distributed in the hope that it will be useful,
Aaron@22 22 but WITHOUT ANY WARRANTY; without even the implied warranty of
Aaron@22 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Aaron@22 24 GNU General Public License for more details.
Aaron@22 25
Aaron@22 26 You should have received a copy of the GNU General Public License
killermonkey99@36 27 along with this program. If not, see <http://www.gnu.org/licenses/>.
Aaron@22 28
Aaron@22 29 Note:
Aaron@22 30 This program's source code is specifically designed to work with
Aaron@22 31 World of Warcraft's interpreted AddOn system.
Aaron@22 32
Aaron@22 33 You have an implicit license to use this program with these facilities
Aaron@22 34 since that is it's designated purpose as per:
Aaron@22 35 http://www.fsf.org/licensing/licenses/gpl-faq.html#InterpreterIncompat
Aaron@4 36
Aaron@4 37 --]]--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))--))
Aaron@4 38
Aaron@22 39
killermonkey99@36 40 local RecipeProfit = LibStub("AceAddon-3.0"):NewAddon("RecipeProfit", "AceEvent-3.0", "AceConsole-3.0", "AceTimer-3.0")
killermonkey99@36 41
killermonkey99@36 42 local GatherMate = LibStub("AceAddon-3.0"):GetAddon("GatherMate2")
killermonkey99@36 43
Aaron@0 44 local tabletest = {}
Aaron@16 45 local db = {}
Aaron@1 46 local safeRecipes = {}
Aaron@16 47 local ids = {}
Aaron@24 48 local nodeLookup = {}
Aaron@16 49
Aaron@17 50 local profile
Aaron@17 51
Aaron@0 52 RecipeProfit.db = db;
Aaron@0 53
Aaron@17 54 --[[ Forward Definitions (for local functions) ]]
Aaron@16 55 local get_faction_db,
Aaron@16 56 add_note,
Aaron@16 57 button_update,
Aaron@16 58 find_good_id,
Aaron@16 59 safe_cache_vendor,
Aaron@17 60 get_note_title,
Aaron@17 61 get_next_texture_id,
Aaron@17 62 set_node_constants,
Aaron@24 63 get_colored_note_name,
Aaron@17 64 inject_options;
Aaron@16 65
Aaron@17 66 --[[ Deep table inspection for debugging ]]
Aaron@0 67 function debugprint(val, indent)
Aaron@0 68 indent = indent or "";
Aaron@0 69 if not(type(val) == "table") then
Aaron@0 70 print("Not table: " .. val)
Aaron@0 71 return
Aaron@0 72 end
Aaron@0 73
Aaron@0 74 for k,v in pairs(val) do
Aaron@0 75 if(type(k) == "table" and type(v) == "table") then
Aaron@0 76 print(indent .. "table key: {")
Aaron@0 77 debugprint(k, indent .. " ")
Aaron@0 78 print(indent .. "} = {")
Aaron@0 79 debugprint(v, indent .. " ")
Aaron@0 80 print(indent .. "}")
Aaron@12 81 elseif(type(v) == "table") then
Aaron@0 82 print(indent .. k .. " = {")
Aaron@0 83 debugprint(v, indent .. " ")
Aaron@0 84 print(indent .. "}")
Aaron@0 85 else
Aaron@12 86 if(type(v) ~= "boolean") then
Aaron@12 87 print(indent .. k .. " = " .. v)
Aaron@12 88 else
Aaron@12 89 print(indent .. k .. " = " .. (v and "true" or "false"))
Aaron@12 90 end
Aaron@0 91 end
Aaron@0 92 end
Aaron@0 93 end
Aaron@8 94
Aaron@0 95 local options = {
Aaron@0 96 type = "group",
Aaron@0 97 name = "RecipeProfit", -- addon name to import from, don't localize
Aaron@0 98 handler = {},
Aaron@0 99 disabled = false,
Aaron@0 100 args = {
killermonkey99@36 101 heading = {
killermonkey99@36 102 order = 0,
killermonkey99@36 103 type = "description",
killermonkey99@36 104 name = "Thank you for using RecipeProfit for GatherMate!\n\n"..
killermonkey99@36 105 "RecipeProfit was recently updated to work with patch 4.0.x and GatherMate 2. If you find any bugs you can report them on curse.com or curseforge.com by contacting the author 'Yuffles'. "..
killermonkey99@36 106 "You can also email the author at killermonkey99".. --[[anti-spambot]] "@".."gmail.com (please try to put \"RecipeProfit\" in the subject!)\n\n"..
killermonkey99@36 107 "You can toggle the display of RecipeProfit nodes on the map and minimap by changing the options in the general GatherMate 2 menu.",
killermonkey99@36 108 width = "full",
killermonkey99@36 109 },
Aaron@0 110 }
Aaron@0 111 }
Aaron@0 112
killermonkey99@36 113 --maps wowhead IDs to localization independant map ids O_O
killermonkey99@36 114 local zidmap={[1]=27,[3]=17,[4]=19,[8]=38,[10]=34,[11]=40,[12]=30,[14]=4,
killermonkey99@36 115 [15]=141,[16]=181,[17]=11,[28]=22,[33]=37,[38]=35,[40]=39,[41]=32,[44]=36,
killermonkey99@36 116 [45]=16,[46]=29,[47]=26,[51]=28,[65]=488,[66]=496,[67]=495,[85]=20,
killermonkey99@36 117 [130]=21,[139]=23,[141]=41,[148]=42,[210]=492,[215]=9,[267]=24,[331]=43,
killermonkey99@36 118 [357]=121,[361]=182,[394]=490,[400]=61,[405]=101,[406]=81,[440]=161,
killermonkey99@36 119 [490]=201,[493]=241,[495]=491,[616]=606,[618]=281,[1377]=261,[1497]=382,
killermonkey99@36 120 [1519]=301,[1537]=341,[1637]=321,[1638]=362,[1657]=381,[3430]=462,
killermonkey99@36 121 [3433]=463,[3483]=465,[3487]=480,[3518]=477,[3519]=478,[3520]=473,
killermonkey99@36 122 [3521]=467,[3522]=475,[3523]=479,[3524]=464,[3525]=476,[3537]=486,
killermonkey99@36 123 [3557]=471,[3703]=481,[3711]=493,[4080]=499,[4197]=501,[4395]=504,
killermonkey99@36 124 [4709]=607,[4714]=545,[4720]=544,[4737]=605,[4755]=611,[4815]=610,
killermonkey99@36 125 [4922]=700,[5034]=720,[5042]=640,[5095]=708,[5144]=615,[5145]=614,
killermonkey99@36 126 [5146]=613,[5287]=673,[5339]=689,[5416]=737,[5630]=737,[5695]=772
killermonkey99@36 127 }
killermonkey99@36 128
Aaron@0 129 local defaults = {
Aaron@16 130 --submitting cached data not yet implemented
Aaron@16 131 location_cache = {},
killermonkey99@51 132 debugvars = {},
killermonkey99@51 133 blacklist = {},
Aaron@0 134 }
Aaron@0 135
Aaron@0 136 function RecipeProfit:OnInitialize()
killermonkey99@52 137 RECIPEPROFIT_profile = RECIPEPROFIT_profile or {};
Aaron@7 138
Aaron@1 139 for k, v in pairs(defaults) do
killermonkey99@52 140 RECIPEPROFIT_profile[k] = RECIPEPROFIT_profile[k] or v;
Aaron@1 141 end
Aaron@1 142
killermonkey99@52 143 profile = RECIPEPROFIT_profile;
killermonkey99@52 144
Aaron@12 145 self:RegisterChatCommand("recipeprofit", "ShowOptions")
Aaron@12 146 self:RegisterChatCommand("rp", "ShowOptions")
Aaron@12 147 self:RegisterChatCommand("profit", "ShowOptions")
Aaron@12 148
Aaron@0 149 db.profile = profile
Aaron@0 150 db.storage = {}
Aaron@0 151
Aaron@0 152 GatherMate:GetModule("Config"):RegisterModule("RecipeProfit", options)
Aaron@0 153 GatherMate:RegisterDBType("RecipeProfit", db.storage)
Aaron@8 154 GatherMate.db.profile.show["RecipeProfit"] = GatherMate.db.profile.show["RecipeProfit"] or "always"
Aaron@59 155 GatherMate.db.profile.cleanupRange["RecipeProfit"] = 0.0;
Aaron@59 156
Aaron@17 157 set_node_constants()
Aaron@17 158 inject_options()
Aaron@8 159
Aaron@0 160 GatherMate:GetModule("Config"):UpdateConfig()
killermonkey99@36 161 GatherMate:GetModule("Config"):SendMessage("GatherMate2ConfigChanged")
Aaron@24 162
Aaron@24 163 --[[ hook GetNameForNode for custom highlighting ]]
Aaron@24 164 local oldFunction = GatherMate.GetNameForNode
Aaron@24 165
Aaron@24 166 GatherMate.GetNameForNode = function(lself, type, nodeID)
Aaron@24 167 if(type == "RecipeProfit") then
Aaron@24 168 return get_colored_note_name(lself, nodeID)
Aaron@24 169 else
Aaron@24 170 return oldFunction(lself, type, nodeID)
Aaron@24 171 end
Aaron@24 172 end
Aaron@24 173
killermonkey99@36 174 --[[hook OnProfileChanged to fix cleanup database ]]
Aaron@26 175 local oldFunction2 = GatherMate.OnProfileChanged
Aaron@26 176
Aaron@26 177 GatherMate.OnProfileChanged = function(lself, ...)
Aaron@59 178 lself.db.profile.cleanupRange["RecipeProfit"] = lself.db.profile.cleanupRange["RecipeProfit"] or 0.0;
killermonkey99@36 179 lself.db.profile.show["RecipeProfit"] = lself.db.profile.show["RecipeProfit"] == "never" and "never" or "always";
Aaron@26 180 oldFunction2(lself, ...)
Aaron@26 181 end
Aaron@26 182
Aaron@0 183 end
Aaron@0 184
Aaron@17 185
Aaron@17 186 function RecipeProfit:OnEnable()
Aaron@17 187
Aaron@17 188 _G["MerchantPrevPageButton"]:HookScript("OnClick", self.UpdateButtons)
Aaron@17 189 _G["MerchantNextPageButton"]:HookScript("OnClick", self.UpdateButtons)
Aaron@17 190
Aaron@17 191 self:RegisterEvent("MERCHANT_SHOW", "UpdateButtons")
Aaron@17 192 self:RegisterEvent("MERCHANT_UPDATE", "UpdateButtons")
Aaron@17 193 self:RegisterEvent("BAG_UPDATE", "UpdateButtons")
Aaron@28 194
Aaron@17 195 RecipeProfit:DoMerge()
killermonkey99@45 196 if(GatherMate.db.profile.show["RecipeProfit"] ~= "always" and GatherMate.db.profile.show["RecipeProfit"] ~= "never") then
killermonkey99@45 197 GatherMate.db.profile.show["RecipeProfit"] = "always"
killermonkey99@45 198 GatherMate:GetModule("Config"):SendMessage("GatherMate2ConfigChanged")
killermonkey99@45 199 end
Aaron@17 200 end
Aaron@17 201
killermonkey99@51 202 --Forward Functions for command listing
killermonkey99@51 203 local set_var,
killermonkey99@51 204 get_var,
killermonkey99@51 205 show_help,
killermonkey99@51 206 blacklist_add,
killermonkey99@51 207 blacklist_show,
killermonkey99@51 208 blacklist_query
killermonkey99@51 209
killermonkey99@51 210 local commandList --Forward declaration of command list
killermonkey99@51 211
killermonkey99@51 212 function RecipeProfit:ParseCommands(input, level, list)
killermonkey99@51 213 args = {self:GetArgs(input, level)}
killermonkey99@51 214 arg0 = args[#args - 1]
killermonkey99@51 215
killermonkey99@51 216 if(not list[arg0]) then
killermonkey99@51 217 print("Error parsing command. Type /rp help for help with this command.")
killermonkey99@51 218 return
killermonkey99@51 219 end
killermonkey99@51 220
killermonkey99@51 221 if(type(list[arg0]) == "table") then
killermonkey99@51 222 self:ParseCommands(input, level + 1, list[arg0])
killermonkey99@51 223 else
killermonkey99@51 224 list[arg0](input)
killermonkey99@51 225 end
killermonkey99@51 226 end
killermonkey99@51 227
killermonkey99@51 228 function RecipeProfit:ShowOptions(input)
killermonkey99@51 229 if (input ~= "") then
killermonkey99@51 230 self:ParseCommands(input, 1, commandList)
killermonkey99@51 231 else
killermonkey99@51 232 InterfaceOptionsFrame_OpenToCategory("GatherMate 2")
killermonkey99@51 233 LibStub("AceConfigDialog-3.0"):SelectGroup("GatherMate 2", "RecipeProfit")
killermonkey99@51 234 end
Aaron@12 235 end
Aaron@12 236
Aaron@16 237 function RecipeProfit:UpdateButtons(event, ...)
Aaron@16 238 --print("UpdateButtons", event)
Aaron@28 239 if(WorldMapFrame:IsShown()) then
Aaron@28 240 local continent, zone = GetCurrentMapContinent(), GetCurrentMapZone()
Aaron@28 241 SetMapZoom(continent)
Aaron@28 242 SetMapZoom(continent, zone)
Aaron@28 243 else
Aaron@28 244 SetMapZoom(-1)
Aaron@28 245 end
Aaron@28 246
Aaron@28 247 GatherMate:GetModule("Display"):UpdateMaps()
Aaron@28 248
Aaron@16 249 if(not MerchantFrame:IsVisible()) then
Aaron@16 250 --print("UpdateButtons - (Event: ", event, ") - MerchantFrame not visible.");
Aaron@16 251 return;
Aaron@16 252 end
Aaron@16 253
Aaron@16 254 for i=1, MERCHANT_ITEMS_PER_PAGE, 1 do
Aaron@16 255 local buttonframe = _G["MerchantItem"..i];
Aaron@16 256 local index = (((MerchantFrame.page - 1) * MERCHANT_ITEMS_PER_PAGE) + i);
Aaron@16 257 --print(index)
Aaron@16 258 if index <= GetMerchantNumItems() then
Aaron@16 259 button_update(buttonframe)
Aaron@16 260 end
Aaron@16 261 end
Aaron@17 262 end
Aaron@16 263
Aaron@16 264 function RecipeProfit:DoMerge()
Aaron@16 265 ids = {}
killermonkey99@36 266 local alliance = get_faction_db();
Aaron@16 267
Aaron@16 268 GatherMate:ClearDB("RecipeProfit")
killermonkey99@36 269 for id, note in pairs(RECIPEPROFIT_database) do
killermonkey99@51 270 local blacklisted = false;
killermonkey99@51 271
killermonkey99@51 272 for _, v in pairs(RECIPEPROFIT_blacklist) do
killermonkey99@51 273 if(note.stock == -1 and not note.item:find("Recipe:")) then
killermonkey99@51 274 blacklisted = true;
killermonkey99@51 275 end
killermonkey99@51 276
killermonkey99@51 277 if(tonumber(v) == note.entry) then
killermonkey99@51 278 blacklisted = true;
killermonkey99@51 279 end
killermonkey99@51 280 end
killermonkey99@51 281
killermonkey99@51 282 if(not blacklisted) then
killermonkey99@51 283 if((note.a and alliance) or (note.h and not alliance)) then
killermonkey99@51 284 x, y = find_good_id(note.x, note.y)
killermonkey99@51 285 add_note(x, y, note)
killermonkey99@51 286 end
killermonkey99@36 287 end
Aaron@16 288 end
Aaron@16 289
Aaron@16 290 GatherMate:SendMessage("GatherMateDataImport")
killermonkey99@36 291 GatherMate:GetModule("Config"):SendMessage("GatherMate2ConfigChanged")
Aaron@16 292 end
Aaron@16 293
Aaron@16 294 function get_note_title(note, factionTag)
Aaron@16 295 if(not factionTag) then
Aaron@16 296 _, factionTag = get_faction_db();
Aaron@16 297 end
Aaron@16 298
Aaron@16 299 return note.item.." - ("..note.vendor.." ".. factionTag ..")";
Aaron@16 300 end
Aaron@16 301
Aaron@16 302 function add_note(x, y, note)
killermonkey99@36 303 local coords = GatherMate.mapData:EncodeLoc(x/100, y/100, 0)
killermonkey99@36 304 local zoneID = zidmap[note.map]
killermonkey99@51 305
killermonkey99@51 306 if(note["realmap"]) then
killermonkey99@51 307 zoneID = note.realmap
killermonkey99@51 308 end
killermonkey99@51 309
killermonkey99@36 310 if(not zoneID) then
killermonkey99@36 311 return
killermonkey99@36 312 end
Aaron@33 313
killermonkey99@36 314 local nodeID = GatherMate.nodeIDs["RecipeProfit"][get_note_title(note, "")]
killermonkey99@36 315 GatherMate:InjectNode(zoneID, coords, "RecipeProfit", nodeID)
Aaron@16 316 end
Aaron@16 317
Aaron@16 318 function get_faction_db()
killermonkey99@52 319 local factionAlliance = UnitFactionGroup("player") == "Alliance";
killermonkey99@36 320
Aaron@16 321 if(factionAlliance) then
killermonkey99@36 322 return true, ""
Aaron@16 323 else
killermonkey99@36 324 return false, ""
Aaron@16 325 end
Aaron@16 326 end
Aaron@16 327
Aaron@16 328 function safe_cache_vendor()
Aaron@16 329 if(not profile.location_cache[UnitName("NPC")]) then
Aaron@16 330 SetMapToCurrentZone()
Aaron@16 331 local pos = {}
Aaron@16 332 pos.x, pos.y = GetPlayerMapPosition("player")
killermonkey99@51 333 pos.map = GetCurrentMapAreaID();
Aaron@16 334 profile.location_cache[UnitName("NPC")] = pos
Aaron@16 335 end
Aaron@16 336 end
Aaron@15 337
Aaron@9 338 function button_update(self)
Aaron@9 339 local buttonName = _G[self:GetName().."Name"];
Aaron@9 340 local link = GetMerchantItemLink(_G[self:GetName().."ItemButton"]:GetID());
Aaron@9 341 if(not link) then
Aaron@9 342 return;
Aaron@9 343 end
Aaron@9 344
Aaron@9 345 local sName, sLink, iRarity, iLevel, iMinLevel, sType, sSubType, iStackCount = GetItemInfo(link)
Aaron@9 346
Aaron@16 347 if(sType == "Recipe" and safeRecipes[sName]) then
Aaron@16 348 safe_cache_vendor();
Aaron@9 349 SetItemButtonNameFrameVertexColor(self, 0, 0, 1.0);
Aaron@9 350 SetItemButtonSlotVertexColor(self, 0, 0, 0.5);
Aaron@9 351 buttonName:SetText("* " .. sName)
Aaron@28 352
Aaron@9 353 if(GetItemCount(link, true) == 0) then
Aaron@9 354 buttonName:SetTextColor(0,1,1);
Aaron@9 355 elseif(GetItemCount(link, true) < 5) then
Aaron@9 356 buttonName:SetTextColor(1,0,1);
Aaron@9 357 else
Aaron@9 358 buttonName:SetTextColor(1,0,0);
Aaron@9 359 end
Aaron@28 360
Aaron@9 361 else
Aaron@9 362 buttonName:SetTextColor(GameFontNormalSmall:GetTextColor());
Aaron@9 363 end
Aaron@9 364 end
Aaron@9 365
Aaron@16 366 function find_good_id(x, y)
Aaron@0 367 if ids[x.." "..y] then
Aaron@16 368 return find_good_id(x + .01, y)
Aaron@0 369 end
Aaron@0 370
Aaron@0 371 ids[x.." "..y] = true
Aaron@0 372 return x, y
Aaron@17 373 end
Aaron@17 374
Aaron@17 375 local lastNodeTextureId = 0;
Aaron@17 376
Aaron@17 377 function get_next_texture_id()
Aaron@17 378 lastNodeTextureId = lastNodeTextureId + 1;
Aaron@17 379 return lastNodeTextureId;
Aaron@17 380 end
Aaron@17 381
Aaron@17 382 function set_node_constants()
Aaron@17 383 GatherMate.nodeIDs["RecipeProfit"] = {}
Aaron@17 384 GatherMate.nodeTextures["RecipeProfit"] = {}
Aaron@17 385 GatherMate.nodeMinHarvest["RecipeProfit"] = {}
Aaron@17 386
Aaron@17 387 local nodes = GatherMate.nodeIDs["RecipeProfit"]
killermonkey99@36 388 for id, note in pairs(RECIPEPROFIT_database) do
Aaron@17 389 safeRecipes[note.item] = true;
Aaron@24 390 local id = get_next_texture_id();
killermonkey99@36 391
killermonkey99@36 392 nodes[get_note_title(note, "")] = id;
Aaron@24 393 nodeLookup[id] = note;
Aaron@17 394 end
Aaron@17 395
Aaron@17 396 for i = 1, lastNodeTextureId, 1 do
Aaron@17 397 GatherMate.nodeTextures["RecipeProfit"][i] = "Interface\\Icons\\INV_Scroll_05"
Aaron@17 398 end
Aaron@17 399
Aaron@17 400 GatherMate.reverseNodeIDs["RecipeProfit"] = GatherMate:CreateReversedTable(nodes)
Aaron@17 401 end
Aaron@17 402
Aaron@17 403 function inject_options()
killermonkey99@36 404 local acr = LibStub("AceConfigRegistry-3.0")
killermonkey99@36 405 acr:GetOptionsTable("GatherMate 2", "dialog", "RecipeProfit-1.0").args["showRecipeProfit"] = {
killermonkey99@36 406 order = 7,
Aaron@17 407 name = "Show RecipeProfit nodes.",
Aaron@17 408 desc = "Toggle showing nodes added by RecipeProfit.",
Aaron@17 409 type = "select",
Aaron@17 410 values = {
killermonkey99@36 411 always = "Always show",
killermonkey99@36 412 never = "Never show",
Aaron@17 413 },
Aaron@17 414 arg = "RecipeProfit",
Aaron@17 415 }
Aaron@17 416
killermonkey99@36 417 GatherMate:GetModule("Config"):SendMessage("GatherMate2ConfigChanged")
Aaron@17 418 end
Aaron@24 419
Aaron@24 420 function get_colored_note_name(self, nodeID)
Aaron@24 421 local text = self.reverseNodeIDs["RecipeProfit"][nodeID]
Aaron@24 422 local sName, sLink, iRarity, iLevel, iMinLevel, sType, sSubType, iStackCount = GetItemInfo(nodeLookup[nodeID].itementry)
Aaron@24 423
Aaron@24 424 if(not sLink) then
killermonkey99@36 425 RecipeProfit:ScheduleTimer("UpdateButtons", 3)
killermonkey99@36 426 return "|cFF000000(??) |cFF66DD66" .. text .. "|cFFFF0000 Please Wait (Querying Server)..."
Aaron@24 427 end
Aaron@24 428
Aaron@24 429 local count = GetItemCount(sLink, true)
Aaron@24 430 local prefix = "|cFF888888(" .. count .. ") |cFF66DD66"
Aaron@24 431
Aaron@24 432 if(count == 0) then
Aaron@24 433 prefix = "|cFF00FFFF(" .. count .. ") |cFF66DD66"
Aaron@24 434 elseif(count >= 5) then
Aaron@24 435 prefix = "|cFFFF0000(" .. count .. ") |cFF66DD66"
Aaron@24 436 end
Aaron@24 437
Aaron@24 438 return prefix .. text
Aaron@24 439 end
killermonkey99@51 440
killermonkey99@51 441
killermonkey99@51 442
killermonkey99@51 443
killermonkey99@51 444
killermonkey99@51 445
killermonkey99@51 446
killermonkey99@51 447
killermonkey99@51 448
killermonkey99@51 449 --[[ Debug Commands ]]
killermonkey99@51 450 --[[
killermonkey99@51 451 set_var,
killermonkey99@51 452 get_var,
killermonkey99@51 453 show_help,
killermonkey99@51 454 blacklist_add,
killermonkey99@51 455 blacklist_show
killermonkey99@51 456 --]]
killermonkey99@51 457
killermonkey99@51 458 function set_var(input)
killermonkey99@51 459 print("set_var")
killermonkey99@51 460 end
killermonkey99@51 461
killermonkey99@51 462 function get_var(input)
killermonkey99@51 463 print("get_var")
killermonkey99@51 464 end
killermonkey99@51 465
killermonkey99@51 466 function show_help(input)
killermonkey99@51 467 print("show_help")
killermonkey99@51 468 end
killermonkey99@51 469
killermonkey99@51 470 function blacklist_add(input)
killermonkey99@51 471 if(not profile["blacklist"]) then
killermonkey99@51 472 profile["blacklist"] = {}
killermonkey99@51 473 end
killermonkey99@51 474 _, _, val = RecipeProfit:GetArgs(input,3)
killermonkey99@51 475 table.insert(profile.blacklist, val)
killermonkey99@51 476 print("Added npc id \""..val.."\"to NPC blacklist.");
killermonkey99@51 477 end
killermonkey99@51 478
killermonkey99@51 479 function blacklist_show(input)
killermonkey99@51 480 if(not profile["blacklist"]) then
killermonkey99@51 481 profile["blacklist"] = {}
killermonkey99@51 482 end
killermonkey99@51 483
killermonkey99@51 484 for k,v in ipairs(profile.blacklist) do
killermonkey99@51 485 print(k..": "..v)
killermonkey99@51 486 end
killermonkey99@51 487 end
killermonkey99@51 488
killermonkey99@51 489 function blacklist_query(input)
killermonkey99@51 490 _, _, val = RecipeProfit:GetArgs(input,3)
killermonkey99@51 491 if(not val) then
killermonkey99@51 492 print("oops")
killermonkey99@51 493 return
killermonkey99@51 494 end
killermonkey99@51 495
killermonkey99@51 496 entries = {};
killermonkey99@51 497 for _,note in pairs(RECIPEPROFIT_database) do
killermonkey99@51 498 if(note.vendor:lower():find(val:lower()) and not entries[note.entry]) then
killermonkey99@51 499 entries[note.entry] = true;
killermonkey99@51 500 print(note.vendor.." (ID "..note.entry.."): "..note.x..", "..note.y)
killermonkey99@51 501 end
killermonkey99@51 502 end
killermonkey99@51 503 end
killermonkey99@51 504
killermonkey99@51 505 commandList = {
killermonkey99@51 506 set = set_var,
killermonkey99@51 507 get = get_var,
killermonkey99@51 508 help = show_help,
killermonkey99@51 509 blacklist = {
killermonkey99@51 510 query = blacklist_query,
killermonkey99@51 511 add = blacklist_add,
killermonkey99@51 512 show = blacklist_show
killermonkey99@51 513 }
killermonkey99@51 514 }
killermonkey99@51 515