annotate core.lua @ 57:da134cff9c31 v2.07

TOC fix
author Aaron Bregger
date Wed, 26 Jan 2011 10:23:22 -0600
parents 993b57631e81
children 962cafb5915d
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@0 155
Aaron@17 156 set_node_constants()
Aaron@17 157 inject_options()
Aaron@8 158
Aaron@0 159 GatherMate:GetModule("Config"):UpdateConfig()
killermonkey99@36 160 GatherMate:GetModule("Config"):SendMessage("GatherMate2ConfigChanged")
Aaron@24 161
Aaron@24 162 --[[ hook GetNameForNode for custom highlighting ]]
Aaron@24 163 local oldFunction = GatherMate.GetNameForNode
Aaron@24 164
Aaron@24 165 GatherMate.GetNameForNode = function(lself, type, nodeID)
Aaron@24 166 if(type == "RecipeProfit") then
Aaron@24 167 return get_colored_note_name(lself, nodeID)
Aaron@24 168 else
Aaron@24 169 return oldFunction(lself, type, nodeID)
Aaron@24 170 end
Aaron@24 171 end
Aaron@24 172
killermonkey99@36 173 --[[hook OnProfileChanged to fix cleanup database ]]
Aaron@26 174 local oldFunction2 = GatherMate.OnProfileChanged
Aaron@26 175
Aaron@26 176 GatherMate.OnProfileChanged = function(lself, ...)
Aaron@26 177 lself.db.profile.cleanupRange["RecipeProfit"] = lself.db.profile.cleanupRange["RecipeProfit"] or 15
killermonkey99@36 178 lself.db.profile.show["RecipeProfit"] = lself.db.profile.show["RecipeProfit"] == "never" and "never" or "always";
Aaron@26 179 oldFunction2(lself, ...)
Aaron@26 180 end
Aaron@26 181
Aaron@0 182 end
Aaron@0 183
Aaron@17 184
Aaron@17 185 function RecipeProfit:OnEnable()
Aaron@17 186
Aaron@17 187 _G["MerchantPrevPageButton"]:HookScript("OnClick", self.UpdateButtons)
Aaron@17 188 _G["MerchantNextPageButton"]:HookScript("OnClick", self.UpdateButtons)
Aaron@17 189
Aaron@17 190 self:RegisterEvent("MERCHANT_SHOW", "UpdateButtons")
Aaron@17 191 self:RegisterEvent("MERCHANT_UPDATE", "UpdateButtons")
Aaron@17 192 self:RegisterEvent("BAG_UPDATE", "UpdateButtons")
Aaron@28 193
Aaron@17 194 RecipeProfit:DoMerge()
killermonkey99@45 195 if(GatherMate.db.profile.show["RecipeProfit"] ~= "always" and GatherMate.db.profile.show["RecipeProfit"] ~= "never") then
killermonkey99@45 196 GatherMate.db.profile.show["RecipeProfit"] = "always"
killermonkey99@45 197 GatherMate:GetModule("Config"):SendMessage("GatherMate2ConfigChanged")
killermonkey99@45 198 end
Aaron@17 199 end
Aaron@17 200
killermonkey99@51 201 --Forward Functions for command listing
killermonkey99@51 202 local set_var,
killermonkey99@51 203 get_var,
killermonkey99@51 204 show_help,
killermonkey99@51 205 blacklist_add,
killermonkey99@51 206 blacklist_show,
killermonkey99@51 207 blacklist_query
killermonkey99@51 208
killermonkey99@51 209 local commandList --Forward declaration of command list
killermonkey99@51 210
killermonkey99@51 211 function RecipeProfit:ParseCommands(input, level, list)
killermonkey99@51 212 args = {self:GetArgs(input, level)}
killermonkey99@51 213 arg0 = args[#args - 1]
killermonkey99@51 214
killermonkey99@51 215 if(not list[arg0]) then
killermonkey99@51 216 print("Error parsing command. Type /rp help for help with this command.")
killermonkey99@51 217 return
killermonkey99@51 218 end
killermonkey99@51 219
killermonkey99@51 220 if(type(list[arg0]) == "table") then
killermonkey99@51 221 self:ParseCommands(input, level + 1, list[arg0])
killermonkey99@51 222 else
killermonkey99@51 223 list[arg0](input)
killermonkey99@51 224 end
killermonkey99@51 225 end
killermonkey99@51 226
killermonkey99@51 227 function RecipeProfit:ShowOptions(input)
killermonkey99@51 228 if (input ~= "") then
killermonkey99@51 229 self:ParseCommands(input, 1, commandList)
killermonkey99@51 230 else
killermonkey99@51 231 InterfaceOptionsFrame_OpenToCategory("GatherMate 2")
killermonkey99@51 232 LibStub("AceConfigDialog-3.0"):SelectGroup("GatherMate 2", "RecipeProfit")
killermonkey99@51 233 end
Aaron@12 234 end
Aaron@12 235
Aaron@16 236 function RecipeProfit:UpdateButtons(event, ...)
Aaron@16 237 --print("UpdateButtons", event)
Aaron@28 238 if(WorldMapFrame:IsShown()) then
Aaron@28 239 local continent, zone = GetCurrentMapContinent(), GetCurrentMapZone()
Aaron@28 240 SetMapZoom(continent)
Aaron@28 241 SetMapZoom(continent, zone)
Aaron@28 242 else
Aaron@28 243 SetMapZoom(-1)
Aaron@28 244 end
Aaron@28 245
Aaron@28 246 GatherMate:GetModule("Display"):UpdateMaps()
Aaron@28 247
Aaron@16 248 if(not MerchantFrame:IsVisible()) then
Aaron@16 249 --print("UpdateButtons - (Event: ", event, ") - MerchantFrame not visible.");
Aaron@16 250 return;
Aaron@16 251 end
Aaron@16 252
Aaron@16 253 for i=1, MERCHANT_ITEMS_PER_PAGE, 1 do
Aaron@16 254 local buttonframe = _G["MerchantItem"..i];
Aaron@16 255 local index = (((MerchantFrame.page - 1) * MERCHANT_ITEMS_PER_PAGE) + i);
Aaron@16 256 --print(index)
Aaron@16 257 if index <= GetMerchantNumItems() then
Aaron@16 258 button_update(buttonframe)
Aaron@16 259 end
Aaron@16 260 end
Aaron@17 261 end
Aaron@16 262
Aaron@16 263 function RecipeProfit:DoMerge()
Aaron@16 264 ids = {}
killermonkey99@36 265 local alliance = get_faction_db();
Aaron@16 266
Aaron@16 267 GatherMate:ClearDB("RecipeProfit")
killermonkey99@36 268 for id, note in pairs(RECIPEPROFIT_database) do
killermonkey99@51 269 local blacklisted = false;
killermonkey99@51 270
killermonkey99@51 271 for _, v in pairs(RECIPEPROFIT_blacklist) do
killermonkey99@51 272 if(note.stock == -1 and not note.item:find("Recipe:")) then
killermonkey99@51 273 blacklisted = true;
killermonkey99@51 274 end
killermonkey99@51 275
killermonkey99@51 276 if(tonumber(v) == note.entry) then
killermonkey99@51 277 blacklisted = true;
killermonkey99@51 278 end
killermonkey99@51 279 end
killermonkey99@51 280
killermonkey99@51 281 if(not blacklisted) then
killermonkey99@51 282 if((note.a and alliance) or (note.h and not alliance)) then
killermonkey99@51 283 x, y = find_good_id(note.x, note.y)
killermonkey99@51 284 add_note(x, y, note)
killermonkey99@51 285 end
killermonkey99@36 286 end
Aaron@16 287 end
Aaron@16 288
Aaron@16 289 GatherMate:SendMessage("GatherMateDataImport")
killermonkey99@36 290 GatherMate:GetModule("Config"):SendMessage("GatherMate2ConfigChanged")
Aaron@16 291 end
Aaron@16 292
Aaron@16 293 function get_note_title(note, factionTag)
Aaron@16 294 if(not factionTag) then
Aaron@16 295 _, factionTag = get_faction_db();
Aaron@16 296 end
Aaron@16 297
Aaron@16 298 return note.item.." - ("..note.vendor.." ".. factionTag ..")";
Aaron@16 299 end
Aaron@16 300
Aaron@16 301 function add_note(x, y, note)
killermonkey99@36 302 local coords = GatherMate.mapData:EncodeLoc(x/100, y/100, 0)
killermonkey99@36 303 local zoneID = zidmap[note.map]
killermonkey99@51 304
killermonkey99@51 305 if(note["realmap"]) then
killermonkey99@51 306 zoneID = note.realmap
killermonkey99@51 307 end
killermonkey99@51 308
killermonkey99@36 309 if(not zoneID) then
killermonkey99@36 310 return
killermonkey99@36 311 end
Aaron@33 312
killermonkey99@36 313 local nodeID = GatherMate.nodeIDs["RecipeProfit"][get_note_title(note, "")]
killermonkey99@36 314 GatherMate:InjectNode(zoneID, coords, "RecipeProfit", nodeID)
Aaron@16 315 end
Aaron@16 316
Aaron@16 317 function get_faction_db()
killermonkey99@52 318 local factionAlliance = UnitFactionGroup("player") == "Alliance";
killermonkey99@36 319
Aaron@16 320 if(factionAlliance) then
killermonkey99@36 321 return true, ""
Aaron@16 322 else
killermonkey99@36 323 return false, ""
Aaron@16 324 end
Aaron@16 325 end
Aaron@16 326
Aaron@16 327 function safe_cache_vendor()
Aaron@16 328 if(not profile.location_cache[UnitName("NPC")]) then
Aaron@16 329 SetMapToCurrentZone()
Aaron@16 330 local pos = {}
Aaron@16 331 pos.x, pos.y = GetPlayerMapPosition("player")
killermonkey99@51 332 pos.map = GetCurrentMapAreaID();
Aaron@16 333 profile.location_cache[UnitName("NPC")] = pos
Aaron@16 334 end
Aaron@16 335 end
Aaron@15 336
Aaron@9 337 function button_update(self)
Aaron@9 338 local buttonName = _G[self:GetName().."Name"];
Aaron@9 339 local link = GetMerchantItemLink(_G[self:GetName().."ItemButton"]:GetID());
Aaron@9 340 if(not link) then
Aaron@9 341 return;
Aaron@9 342 end
Aaron@9 343
Aaron@9 344 local sName, sLink, iRarity, iLevel, iMinLevel, sType, sSubType, iStackCount = GetItemInfo(link)
Aaron@9 345
Aaron@16 346 if(sType == "Recipe" and safeRecipes[sName]) then
Aaron@16 347 safe_cache_vendor();
Aaron@9 348 SetItemButtonNameFrameVertexColor(self, 0, 0, 1.0);
Aaron@9 349 SetItemButtonSlotVertexColor(self, 0, 0, 0.5);
Aaron@9 350 buttonName:SetText("* " .. sName)
Aaron@28 351
Aaron@9 352 if(GetItemCount(link, true) == 0) then
Aaron@9 353 buttonName:SetTextColor(0,1,1);
Aaron@9 354 elseif(GetItemCount(link, true) < 5) then
Aaron@9 355 buttonName:SetTextColor(1,0,1);
Aaron@9 356 else
Aaron@9 357 buttonName:SetTextColor(1,0,0);
Aaron@9 358 end
Aaron@28 359
Aaron@9 360 else
Aaron@9 361 buttonName:SetTextColor(GameFontNormalSmall:GetTextColor());
Aaron@9 362 end
Aaron@9 363 end
Aaron@9 364
Aaron@16 365 function find_good_id(x, y)
Aaron@0 366 if ids[x.." "..y] then
Aaron@16 367 return find_good_id(x + .01, y)
Aaron@0 368 end
Aaron@0 369
Aaron@0 370 ids[x.." "..y] = true
Aaron@0 371 return x, y
Aaron@17 372 end
Aaron@17 373
Aaron@17 374 local lastNodeTextureId = 0;
Aaron@17 375
Aaron@17 376 function get_next_texture_id()
Aaron@17 377 lastNodeTextureId = lastNodeTextureId + 1;
Aaron@17 378 return lastNodeTextureId;
Aaron@17 379 end
Aaron@17 380
Aaron@17 381 function set_node_constants()
Aaron@17 382 GatherMate.nodeIDs["RecipeProfit"] = {}
Aaron@17 383 GatherMate.nodeTextures["RecipeProfit"] = {}
Aaron@17 384 GatherMate.nodeMinHarvest["RecipeProfit"] = {}
Aaron@17 385
Aaron@17 386 local nodes = GatherMate.nodeIDs["RecipeProfit"]
killermonkey99@36 387 for id, note in pairs(RECIPEPROFIT_database) do
Aaron@17 388 safeRecipes[note.item] = true;
Aaron@24 389 local id = get_next_texture_id();
killermonkey99@36 390
killermonkey99@36 391 nodes[get_note_title(note, "")] = id;
Aaron@24 392 nodeLookup[id] = note;
Aaron@17 393 end
Aaron@17 394
Aaron@17 395 for i = 1, lastNodeTextureId, 1 do
Aaron@17 396 GatherMate.nodeTextures["RecipeProfit"][i] = "Interface\\Icons\\INV_Scroll_05"
Aaron@17 397 end
Aaron@17 398
Aaron@17 399 GatherMate.reverseNodeIDs["RecipeProfit"] = GatherMate:CreateReversedTable(nodes)
Aaron@17 400 end
Aaron@17 401
Aaron@17 402 function inject_options()
killermonkey99@36 403 local acr = LibStub("AceConfigRegistry-3.0")
killermonkey99@36 404 acr:GetOptionsTable("GatherMate 2", "dialog", "RecipeProfit-1.0").args["showRecipeProfit"] = {
killermonkey99@36 405 order = 7,
Aaron@17 406 name = "Show RecipeProfit nodes.",
Aaron@17 407 desc = "Toggle showing nodes added by RecipeProfit.",
Aaron@17 408 type = "select",
Aaron@17 409 values = {
killermonkey99@36 410 always = "Always show",
killermonkey99@36 411 never = "Never show",
Aaron@17 412 },
Aaron@17 413 arg = "RecipeProfit",
Aaron@17 414 }
Aaron@17 415
killermonkey99@36 416 GatherMate:GetModule("Config"):SendMessage("GatherMate2ConfigChanged")
Aaron@17 417 end
Aaron@24 418
Aaron@24 419 function get_colored_note_name(self, nodeID)
Aaron@24 420 local text = self.reverseNodeIDs["RecipeProfit"][nodeID]
Aaron@24 421 local sName, sLink, iRarity, iLevel, iMinLevel, sType, sSubType, iStackCount = GetItemInfo(nodeLookup[nodeID].itementry)
Aaron@24 422
Aaron@24 423 if(not sLink) then
killermonkey99@36 424 RecipeProfit:ScheduleTimer("UpdateButtons", 3)
killermonkey99@36 425 return "|cFF000000(??) |cFF66DD66" .. text .. "|cFFFF0000 Please Wait (Querying Server)..."
Aaron@24 426 end
Aaron@24 427
Aaron@24 428 local count = GetItemCount(sLink, true)
Aaron@24 429 local prefix = "|cFF888888(" .. count .. ") |cFF66DD66"
Aaron@24 430
Aaron@24 431 if(count == 0) then
Aaron@24 432 prefix = "|cFF00FFFF(" .. count .. ") |cFF66DD66"
Aaron@24 433 elseif(count >= 5) then
Aaron@24 434 prefix = "|cFFFF0000(" .. count .. ") |cFF66DD66"
Aaron@24 435 end
Aaron@24 436
Aaron@24 437 return prefix .. text
Aaron@24 438 end
killermonkey99@51 439
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 --[[ Debug Commands ]]
killermonkey99@51 449 --[[
killermonkey99@51 450 set_var,
killermonkey99@51 451 get_var,
killermonkey99@51 452 show_help,
killermonkey99@51 453 blacklist_add,
killermonkey99@51 454 blacklist_show
killermonkey99@51 455 --]]
killermonkey99@51 456
killermonkey99@51 457 function set_var(input)
killermonkey99@51 458 print("set_var")
killermonkey99@51 459 end
killermonkey99@51 460
killermonkey99@51 461 function get_var(input)
killermonkey99@51 462 print("get_var")
killermonkey99@51 463 end
killermonkey99@51 464
killermonkey99@51 465 function show_help(input)
killermonkey99@51 466 print("show_help")
killermonkey99@51 467 end
killermonkey99@51 468
killermonkey99@51 469 function blacklist_add(input)
killermonkey99@51 470 if(not profile["blacklist"]) then
killermonkey99@51 471 profile["blacklist"] = {}
killermonkey99@51 472 end
killermonkey99@51 473 _, _, val = RecipeProfit:GetArgs(input,3)
killermonkey99@51 474 table.insert(profile.blacklist, val)
killermonkey99@51 475 print("Added npc id \""..val.."\"to NPC blacklist.");
killermonkey99@51 476 end
killermonkey99@51 477
killermonkey99@51 478 function blacklist_show(input)
killermonkey99@51 479 if(not profile["blacklist"]) then
killermonkey99@51 480 profile["blacklist"] = {}
killermonkey99@51 481 end
killermonkey99@51 482
killermonkey99@51 483 for k,v in ipairs(profile.blacklist) do
killermonkey99@51 484 print(k..": "..v)
killermonkey99@51 485 end
killermonkey99@51 486 end
killermonkey99@51 487
killermonkey99@51 488 function blacklist_query(input)
killermonkey99@51 489 _, _, val = RecipeProfit:GetArgs(input,3)
killermonkey99@51 490 if(not val) then
killermonkey99@51 491 print("oops")
killermonkey99@51 492 return
killermonkey99@51 493 end
killermonkey99@51 494
killermonkey99@51 495 entries = {};
killermonkey99@51 496 for _,note in pairs(RECIPEPROFIT_database) do
killermonkey99@51 497 if(note.vendor:lower():find(val:lower()) and not entries[note.entry]) then
killermonkey99@51 498 entries[note.entry] = true;
killermonkey99@51 499 print(note.vendor.." (ID "..note.entry.."): "..note.x..", "..note.y)
killermonkey99@51 500 end
killermonkey99@51 501 end
killermonkey99@51 502 end
killermonkey99@51 503
killermonkey99@51 504 commandList = {
killermonkey99@51 505 set = set_var,
killermonkey99@51 506 get = get_var,
killermonkey99@51 507 help = show_help,
killermonkey99@51 508 blacklist = {
killermonkey99@51 509 query = blacklist_query,
killermonkey99@51 510 add = blacklist_add,
killermonkey99@51 511 show = blacklist_show
killermonkey99@51 512 }
killermonkey99@51 513 }
killermonkey99@51 514