--[[ Plan is 1) Divide map into sectors by 10 or 20 ++ 2) Give sight of neraby sectors ++ 3) Evaluate each sector by # herb 4) Generate path by looking 2 or 3 steps ahead 5) Convert to vectors for distance (i + j) 6) Rework entire distance and angle calculation 7) Rework CD resets by using timers instead of current method (first verify if timers are efficient) Point to master array within sector arrays by herb ID (1 to 200) for cd instead of sector arrays HerbSniffer = {"hyp" = 0, "CD" = 0, "NoCD" = 200} ]] --EVERY FRAME TRIGGER function() local function range (val, min, max, max2) val = 1 - (((max - val) / (max - min)) * max2) return val end local playerX = GetPlayerMapPosition("player") or 0 local playerY = select(2, GetPlayerMapPosition("player")) or 0 playerX, playerY = playerX * 100, playerY * 100 local playerSector = ceil(playerX / aura_env.gridSize) + (floor(playerY / aura_env.gridSize) * (100 / aura_env.gridSize)) local visibleSectors = {} print("Grid count", ((100 / aura_env.gridSize) ^ 2)) print("Player is at sector", playerSector) print("") --Can see current sector visibleSectors[#visibleSectors + 1] = playerSector --If the player has a sector to the right of them it is also visible if playerSector % 10 > 0 then visibleSectors[#visibleSectors + 1] = playerSector + 1 print("Right sector visible", visibleSectors[#visibleSectors]) end --If the player has a sector to the left of them it is also visible if (playerSector - 1) % 10 > 0 then visibleSectors[#visibleSectors + 1] = playerSector - 1 print("Left sector visible", visibleSectors[#visibleSectors]) end --If the player has a sector above them if (playerSector - (100 / aura_env.gridSize)) > (100 / aura_env.gridSize) then visibleSectors[#visibleSectors + 1] = playerSector - (100 / aura_env.gridSize) print("Above sector visible", visibleSectors[#visibleSectors]) end --If the player has a sector below them if (playerSector + (100 / aura_env.gridSize)) < ((100 / aura_env.gridSize) ^ 2) - (100 - aura_env.gridSize) then visibleSectors[#visibleSectors + 1] = playerSector + (100 / aura_env.gridSize) print("Below sector visible", visibleSectors[#visibleSectors]) end --for k,v in pairs(visibleSectors) do -- print(k,v) -- -- for k2,v2 in ipairs(aura_env.zonedHerbs[v]) do -- -- --print(k2,v2.X, v2.Y) -- -- end --end print("") local playerFace = GetPlayerFacing() or 0 --print(playerFace) local playerAngle = math.floor(playerFace * 100) playerAngle = range(playerAngle, 0, 630, 360) - 1 playerAngle = - playerAngle playerAngle = playerAngle - 90 while playerAngle < 0 do playerAngle = playerAngle + 360 end --print(playerAngle) return true end --RESET_COUNTER function() WeakAurasSaved.HerbSniffer.CD = 0 WeakAurasSaved.HerbSniffer.NoCD = 200 end --ANIMATION function() return - aura_env.angle end --INIT aura_env.herbs = { [1] = { ["X"] = 52.4, ["Y"] = 48.2, ["CD"] = 0 }, [2] = { ["X"] = 54.4, ["Y"] = 48.23, ["CD"] = 0 }, [3] = { ["X"] = 59.18, ["Y"] = 50.54, ["CD"] = 0 }, [4] = { ["X"] = 58.96, ["Y"] = 46.15, ["CD"] = 0 }, [5] = { ["X"] = 54.91, ["Y"] = 46.5, ["CD"] = 0 }, [6] = { ["X"] = 54.55, ["Y"] = 47.26, ["CD"] = 0 }, [7] = { ["X"] = 61.05, ["Y"] = 50.74, ["CD"] = 0 }, [8] = { ["X"] = 62.89, ["Y"] = 52.74, ["CD"] = 0 }, [9] = { ["X"] = 63.77, ["Y"] = 54.93, ["CD"] = 0 }, [10] = { ["X"] = 70.23, ["Y"] = 63.85, ["CD"] = 0 }, [11] = { ["X"] = 67.49, ["Y"] = 59.77, ["CD"] = 0 }, [12] = { ["X"] = 66.18, ["Y"] = 57.51, ["CD"] = 0 }, [13] = { ["X"] = 64.22, ["Y"] = 52.52, ["CD"] = 0 }, [14] = { ["X"] = 60.07, ["Y"] = 49.38, ["CD"] = 0 }, [15] = { ["X"] = 55.96, ["Y"] = 45.39, ["CD"] = 0 }, [16] = { ["X"] = 22.27, ["Y"] = 58.65, ["CD"] = 0 }, [17] = { ["X"] = 22.86, ["Y"] = 54.7, ["CD"] = 0 }, [18] = { ["X"] = 23.04, ["Y"] = 53.17, ["CD"] = 0 }, [19] = { ["X"] = 23.12, ["Y"] = 53.84, ["CD"] = 0 }, [20] = { ["X"] = 24.63, ["Y"] = 51.23, ["CD"] = 0 }, [21] = { ["X"] = 27.43, ["Y"] = 41.62, ["CD"] = 0 }, [22] = { ["X"] = 24.7, ["Y"] = 39.47, ["CD"] = 0 }, [23] = { ["X"] = 23.73, ["Y"] = 39.94, ["CD"] = 0 }, [24] = { ["X"] = 18.41, ["Y"] = 47.7, ["CD"] = 0 }, [25] = { ["X"] = 19.13, ["Y"] = 45.07, ["CD"] = 0 }, [26] = { ["X"] = 18.87, ["Y"] = 43.64, ["CD"] = 0 }, [27] = { ["X"] = 17.04, ["Y"] = 43.5, ["CD"] = 0 }, [28] = { ["X"] = 15.28, ["Y"] = 42.46, ["CD"] = 0 }, [29] = { ["X"] = 15.58, ["Y"] = 39.75, ["CD"] = 0 }, [30] = { ["X"] = 16.94, ["Y"] = 39.28, ["CD"] = 0 }, [31] = { ["X"] = 17.3, ["Y"] = 39.97, ["CD"] = 0 }, [32] = { ["X"] = 18.19, ["Y"] = 40.52, ["CD"] = 0 }, [33] = { ["X"] = 19.77, ["Y"] = 43.53, ["CD"] = 0 }, [34] = { ["X"] = 19.81, ["Y"] = 42.84, ["CD"] = 0 }, [35] = { ["X"] = 23.16, ["Y"] = 43.34, ["CD"] = 0 }, [36] = { ["X"] = 26.86, ["Y"] = 40.75, ["CD"] = 0 }, [37] = { ["X"] = 27.44, ["Y"] = 41.95, ["CD"] = 0 }, [38] = { ["X"] = 27.32, ["Y"] = 45.11, ["CD"] = 0 }, [39] = { ["X"] = 28.79, ["Y"] = 47.29, ["CD"] = 0 }, [40] = { ["X"] = 31.11, ["Y"] = 47.49, ["CD"] = 0 }, [41] = { ["X"] = 31.52, ["Y"] = 49.9, ["CD"] = 0 }, [42] = { ["X"] = 31.61, ["Y"] = 54.38, ["CD"] = 0 }, [43] = { ["X"] = 33.61, ["Y"] = 54.24, ["CD"] = 0 }, [44] = { ["X"] = 34.03, ["Y"] = 53.09, ["CD"] = 0 }, [45] = { ["X"] = 37.9, ["Y"] = 48.99, ["CD"] = 0 }, [46] = { ["X"] = 39.05, ["Y"] = 51.47, ["CD"] = 0 }, [47] = { ["X"] = 40.39, ["Y"] = 48.64, ["CD"] = 0 }, [48] = { ["X"] = 40.77, ["Y"] = 48.19, ["CD"] = 0 }, [49] = { ["X"] = 44.14, ["Y"] = 50.24, ["CD"] = 0 }, [50] = { ["X"] = 56.5, ["Y"] = 45.1, ["CD"] = 0 }, [51] = { ["X"] = 59.76, ["Y"] = 42.14, ["CD"] = 0 }, [52] = { ["X"] = 58.33, ["Y"] = 41.44, ["CD"] = 0 }, [53] = { ["X"] = 58.51, ["Y"] = 43.04, ["CD"] = 0 }, [54] = { ["X"] = 59.12, ["Y"] = 47.83, ["CD"] = 0 }, [55] = { ["X"] = 35.44, ["Y"] = 37.57, ["CD"] = 0 }, [56] = { ["X"] = 34.72, ["Y"] = 37.99, ["CD"] = 0 }, [57] = { ["X"] = 33.97, ["Y"] = 37.32, ["CD"] = 0 }, [58] = { ["X"] = 20.39, ["Y"] = 51.41, ["CD"] = 0 }, [59] = { ["X"] = 19.48, ["Y"] = 49.62, ["CD"] = 0 }, [60] = { ["X"] = 20.86, ["Y"] = 49.17, ["CD"] = 0 }, [61] = { ["X"] = 21.24, ["Y"] = 48.51, ["CD"] = 0 }, [62] = { ["X"] = 21.67, ["Y"] = 46.84, ["CD"] = 0 }, [63] = { ["X"] = 20.77, ["Y"] = 46.4, ["CD"] = 0 }, [64] = { ["X"] = 20.68, ["Y"] = 45.54, ["CD"] = 0 }, [65] = { ["X"] = 23.78, ["Y"] = 46.23, ["CD"] = 0 }, [66] = { ["X"] = 23.67, ["Y"] = 45.78, ["CD"] = 0 }, [67] = { ["X"] = 24.7, ["Y"] = 44.5, ["CD"] = 0 }, [68] = { ["X"] = 24.36, ["Y"] = 42.97, ["CD"] = 0 }, [69] = { ["X"] = 25.12, ["Y"] = 42.57, ["CD"] = 0 }, [70] = { ["X"] = 25.27, ["Y"] = 41.14, ["CD"] = 0 }, [71] = { ["X"] = 25.49, ["Y"] = 38.68, ["CD"] = 0 }, [72] = { ["X"] = 26.48, ["Y"] = 37.83, ["CD"] = 0 }, [73] = { ["X"] = 28.26, ["Y"] = 37.27, ["CD"] = 0 }, [74] = { ["X"] = 31.6, ["Y"] = 36.18, ["CD"] = 0 }, [75] = { ["X"] = 32.77, ["Y"] = 37.25, ["CD"] = 0 }, [76] = { ["X"] = 33.51, ["Y"] = 35.46, ["CD"] = 0 }, [77] = { ["X"] = 32.97, ["Y"] = 39.24, ["CD"] = 0 }, [78] = { ["X"] = 32.76, ["Y"] = 40.68, ["CD"] = 0 }, [79] = { ["X"] = 30.18, ["Y"] = 46.7, ["CD"] = 0 }, [80] = { ["X"] = 29.81, ["Y"] = 47.95, ["CD"] = 0 }, [81] = { ["X"] = 27.61, ["Y"] = 50.45, ["CD"] = 0 }, [82] = { ["X"] = 27.86, ["Y"] = 53.57, ["CD"] = 0 }, [83] = { ["X"] = 27.06, ["Y"] = 53.26, ["CD"] = 0 }, [84] = { ["X"] = 26.08, ["Y"] = 53.85, ["CD"] = 0 }, [85] = { ["X"] = 25.37, ["Y"] = 54.48, ["CD"] = 0 }, [86] = { ["X"] = 25.15, ["Y"] = 56.59, ["CD"] = 0 }, [87] = { ["X"] = 24.5, ["Y"] = 55.55, ["CD"] = 0 }, [88] = { ["X"] = 22.73, ["Y"] = 55.49, ["CD"] = 0 }, [89] = { ["X"] = 21.64, ["Y"] = 56.04, ["CD"] = 0 }, [90] = { ["X"] = 20.89, ["Y"] = 52.45, ["CD"] = 0 }, [91] = { ["X"] = 21.6, ["Y"] = 48.93, ["CD"] = 0 }, [92] = { ["X"] = 22.78, ["Y"] = 47, ["CD"] = 0 }, [93] = { ["X"] = 23.67, ["Y"] = 47.17, ["CD"] = 0 }, [94] = { ["X"] = 28.81, ["Y"] = 49.54, ["CD"] = 0 }, [95] = { ["X"] = 27.63, ["Y"] = 49.1, ["CD"] = 0 }, [96] = { ["X"] = 28.12, ["Y"] = 47.43, ["CD"] = 0 }, [97] = { ["X"] = 29.6, ["Y"] = 45.44, ["CD"] = 0 }, [98] = { ["X"] = 31.08, ["Y"] = 44.93, ["CD"] = 0 }, [99] = { ["X"] = 32.12, ["Y"] = 45.11, ["CD"] = 0 }, [100] = { ["X"] = 32.86, ["Y"] = 44.32, ["CD"] = 0 }, [101] = { ["X"] = 35.29, ["Y"] = 50.54, ["CD"] = 0 }, [102] = { ["X"] = 31.72, ["Y"] = 11.15, ["CD"] = 0 }, [103] = { ["X"] = 35.36, ["Y"] = 11.62, ["CD"] = 0 }, [104] = { ["X"] = 38.72, ["Y"] = 14.9, ["CD"] = 0 }, [105] = { ["X"] = 39.7, ["Y"] = 14.87, ["CD"] = 0 }, [106] = { ["X"] = 28.23, ["Y"] = 19.56, ["CD"] = 0 }, [107] = { ["X"] = 24.39, ["Y"] = 25.74, ["CD"] = 0 }, [108] = { ["X"] = 26.2, ["Y"] = 27.16, ["CD"] = 0 }, [109] = { ["X"] = 28.07, ["Y"] = 29.18, ["CD"] = 0 }, [110] = { ["X"] = 28.8, ["Y"] = 38.56, ["CD"] = 0 }, [111] = { ["X"] = 30.55, ["Y"] = 37.63, ["CD"] = 0 }, [112] = { ["X"] = 34.55, ["Y"] = 42.86, ["CD"] = 0 }, [113] = { ["X"] = 33.84, ["Y"] = 50.23, ["CD"] = 0 }, [114] = { ["X"] = 35.52, ["Y"] = 51.77, ["CD"] = 0 }, [115] = { ["X"] = 35.33, ["Y"] = 58.01, ["CD"] = 0 }, [116] = { ["X"] = 38.64, ["Y"] = 62.53, ["CD"] = 0 }, [117] = { ["X"] = 40.41, ["Y"] = 73, ["CD"] = 0 }, [118] = { ["X"] = 41.04, ["Y"] = 81.46, ["CD"] = 0 }, [119] = { ["X"] = 41.17, ["Y"] = 83.21, ["CD"] = 0 }, [120] = { ["X"] = 70.07, ["Y"] = 61.17, ["CD"] = 0 }, [121] = { ["X"] = 69.26, ["Y"] = 62.64, ["CD"] = 0 }, [122] = { ["X"] = 68.31, ["Y"] = 58.27, ["CD"] = 0 }, [123] = { ["X"] = 66.58, ["Y"] = 55.69, ["CD"] = 0 }, [124] = { ["X"] = 66.13, ["Y"] = 53.94, ["CD"] = 0 }, [125] = { ["X"] = 65.37, ["Y"] = 48.57, ["CD"] = 0 }, [126] = { ["X"] = 65.11, ["Y"] = 50.4, ["CD"] = 0 }, [127] = { ["X"] = 62.57, ["Y"] = 50.61, ["CD"] = 0 }, [128] = { ["X"] = 65.12, ["Y"] = 38.6, ["CD"] = 0 }, [129] = { ["X"] = 62.25, ["Y"] = 45.8, ["CD"] = 0 }, [130] = { ["X"] = 60.11, ["Y"] = 46.19, ["CD"] = 0 }, [131] = { ["X"] = 58.62, ["Y"] = 49.54, ["CD"] = 0 }, [132] = { ["X"] = 56.22, ["Y"] = 48.62, ["CD"] = 0 }, [133] = { ["X"] = 47.37, ["Y"] = 55.17, ["CD"] = 0 }, [134] = { ["X"] = 41.33, ["Y"] = 72.02, ["CD"] = 0 }, [135] = { ["X"] = 38.71, ["Y"] = 60.97, ["CD"] = 0 }, [136] = { ["X"] = 36.71, ["Y"] = 59.7, ["CD"] = 0 }, [137] = { ["X"] = 39.76, ["Y"] = 57.54, ["CD"] = 0 }, [138] = { ["X"] = 42.32, ["Y"] = 49.6, ["CD"] = 0 }, [139] = { ["X"] = 49.52, ["Y"] = 47.44, ["CD"] = 0 }, [140] = { ["X"] = 49.79, ["Y"] = 40.3, ["CD"] = 0 }, [141] = { ["X"] = 48.78, ["Y"] = 42.77, ["CD"] = 0 }, [142] = { ["X"] = 46.87, ["Y"] = 39.44, ["CD"] = 0 }, [143] = { ["X"] = 36.65, ["Y"] = 42.98, ["CD"] = 0 }, [144] = { ["X"] = 29.53, ["Y"] = 46.51, ["CD"] = 0 }, [145] = { ["X"] = 28.25, ["Y"] = 46.15, ["CD"] = 0 }, [146] = { ["X"] = 25.63, ["Y"] = 52.48, ["CD"] = 0 }, [147] = { ["X"] = 27.12, ["Y"] = 69.02, ["CD"] = 0 }, [148] = { ["X"] = 23.49, ["Y"] = 61.88, ["CD"] = 0 }, [149] = { ["X"] = 26.37, ["Y"] = 46.84, ["CD"] = 0 }, [150] = { ["X"] = 28.77, ["Y"] = 41.26, ["CD"] = 0 }, [151] = { ["X"] = 28.94, ["Y"] = 43.58, ["CD"] = 0 }, [152] = { ["X"] = 30.97, ["Y"] = 39.66, ["CD"] = 0 }, [153] = { ["X"] = 34.05, ["Y"] = 38.76, ["CD"] = 0 }, [154] = { ["X"] = 34.52, ["Y"] = 44.14, ["CD"] = 0 }, [155] = { ["X"] = 36.22, ["Y"] = 41.74, ["CD"] = 0 }, [156] = { ["X"] = 39.85, ["Y"] = 39.65, ["CD"] = 0 }, [157] = { ["X"] = 47.15, ["Y"] = 41.25, ["CD"] = 0 }, [158] = { ["X"] = 40.72, ["Y"] = 40.06, ["CD"] = 0 }, [159] = { ["X"] = 44.52, ["Y"] = 39.66, ["CD"] = 0 }, [160] = { ["X"] = 41.5, ["Y"] = 38.6, ["CD"] = 0 }, [161] = { ["X"] = 44.86, ["Y"] = 35.75, ["CD"] = 0 }, [162] = { ["X"] = 44.63, ["Y"] = 33.2, ["CD"] = 0 }, [163] = { ["X"] = 47.33, ["Y"] = 28.88, ["CD"] = 0 }, [164] = { ["X"] = 32.03, ["Y"] = 34.06, ["CD"] = 0 }, [165] = { ["X"] = 27.66, ["Y"] = 36, ["CD"] = 0 }, [166] = { ["X"] = 27.58, ["Y"] = 44.62, ["CD"] = 0 }, [167] = { ["X"] = 25.91, ["Y"] = 44.49, ["CD"] = 0 }, [168] = { ["X"] = 26.84, ["Y"] = 48.81, ["CD"] = 0 }, [169] = { ["X"] = 22.94, ["Y"] = 55.55, ["CD"] = 0 }, [170] = { ["X"] = 19.91, ["Y"] = 54.45, ["CD"] = 0 }, [171] = { ["X"] = 21.16, ["Y"] = 53.32, ["CD"] = 0 }, [172] = { ["X"] = 22.64, ["Y"] = 50.19, ["CD"] = 0 }, [173] = { ["X"] = 24.23, ["Y"] = 33.84, ["CD"] = 0 }, [174] = { ["X"] = 30.34, ["Y"] = 33.68, ["CD"] = 0 }, [175] = { ["X"] = 30.66, ["Y"] = 33.03, ["CD"] = 0 }, [176] = { ["X"] = 39.58, ["Y"] = 16.08, ["CD"] = 0 }, [177] = { ["X"] = 39.3, ["Y"] = 14.48, ["CD"] = 0 }, [178] = { ["X"] = 34.8, ["Y"] = 10.58, ["CD"] = 0 }, [179] = { ["X"] = 30.29, ["Y"] = 8.71, ["CD"] = 0 }, [180] = { ["X"] = 30.67, ["Y"] = 12.65, ["CD"] = 0 }, [181] = { ["X"] = 31.53, ["Y"] = 14.5, ["CD"] = 0 }, [182] = { ["X"] = 31.63, ["Y"] = 16.56, ["CD"] = 0 }, [183] = { ["X"] = 33.53, ["Y"] = 20.08, ["CD"] = 0 }, [184] = { ["X"] = 34.88, ["Y"] = 19.76, ["CD"] = 0 }, [185] = { ["X"] = 35.59, ["Y"] = 18.08, ["CD"] = 0 }, [186] = { ["X"] = 43.46, ["Y"] = 27.48, ["CD"] = 0 }, [187] = { ["X"] = 42.73, ["Y"] = 27.39, ["CD"] = 0 }, [188] = { ["X"] = 41.23, ["Y"] = 25.46, ["CD"] = 0 }, [189] = { ["X"] = 39.47, ["Y"] = 24.45, ["CD"] = 0 }, [190] = { ["X"] = 38.39, ["Y"] = 26.94, ["CD"] = 0 }, [191] = { ["X"] = 37.32, ["Y"] = 26.91, ["CD"] = 0 }, [192] = { ["X"] = 36.21, ["Y"] = 30.36, ["CD"] = 0 }, [193] = { ["X"] = 27.01, ["Y"] = 29.36, ["CD"] = 0 }, [194] = { ["X"] = 27.04, ["Y"] = 31.9, ["CD"] = 0 }, [195] = { ["X"] = 17.98, ["Y"] = 42.91, ["CD"] = 0 }, [196] = { ["X"] = 15.82, ["Y"] = 43.16, ["CD"] = 0 }, [197] = { ["X"] = 15.74, ["Y"] = 38.61, ["CD"] = 0 }, [198] = { ["X"] = 16.66, ["Y"] = 36.19, ["CD"] = 0 }, [199] = { ["X"] = 21.23, ["Y"] = 20.19, ["CD"] = 0 }, [200] = { ["X"] = 22.84, ["Y"] = 19.42, ["CD"] = 0 } } local function printTable(table) for k,v in pairs(table) do print(k,v) if type(v) == "table" then print(k, "is a table"); printTable(v) end end end --Array.Sector.Global coords aura_env.zonedHerbs = {} aura_env.gridSize = 5 for k,v in ipairs(aura_env.herbs) do local herbSector = ceil(v.X / aura_env.gridSize) + (floor(v.Y / aura_env.gridSize) * (100 / aura_env.gridSize)) if not aura_env.zonedHerbs[herbSector] then aura_env.zonedHerbs[herbSector] = {} end aura_env.zonedHerbs[herbSector][#aura_env.zonedHerbs[herbSector] + 1] = k end --zonedHerbs[sectors][herbs].coords --printTable(aura_env.zonedHerbs) aura_env.cooldown = 600 aura_env.wipeDistance = 50 aura_env.angle = 0 aura_env.hyp = 0 aura_env.GetClosestHerb = function() aura_env.minID = { ["X"] = 0, ["Y"] = 0, ["D"] = 1000, ["ID"] = 0 } local pX = GetPlayerMapPosition("player") or 0 local pY = select(2, GetPlayerMapPosition("player")) or 0 pX, pY = pX * 100, pY * 100 for k,v in ipairs(aura_env.herbs) do local hX, hY, cd = aura_env.herbs[k]["X"], aura_env.herbs[k]["Y"], aura_env.herbs[k]["CD"] if cd == 0 then local X, Y = pX - hX, pY - hY local hyp = math.sqrt((math.abs(X^2)) + (math.abs(Y^2))) if hyp < aura_env.minID["D"] then aura_env.minID["X"] = hX aura_env.minID["Y"] = hY aura_env.minID["D"] = hyp aura_env.minID["ID"] = k end end end return aura_env.minID["ID"] end