--^^^^^^^^^^^^^^^^ArthasDK's AutoLevelUP Queue v1.2a^^^^^^^^^^^^^^^^
-- Put Abilities in the Queue Using the Shift Menu and enjoy
-- May bug but should not i tested it a lot.
--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if myHero.charName == "Udyr" or myHero.charName == "Khazix" then PrintChat("Sorry, Auto Levelup Queue does not work with that champion!") return end
require "AllClass"
local queue={}
local spellcounts={5,5,5,3}
local beforeLevelUp={0,0,0,0}
local afterLevelUp={0,0,0,0}
local levelUpRequired= false
local popFromQueue= false
local needToDelete =-1
local resetKey=string.byte('L')
function OnLoad()
spellcounts[1]=5-player:GetSpellData(SPELL_1).level
spellcounts[2]=5-player:GetSpellData(SPELL_2).level
spellcounts[3]=5-player:GetSpellData(SPELL_3).level
spellcounts[4]=3-player:GetSpellData(SPELL_4).level
PrintChat(">> Loaded AutoSkillLevelUp Queue by ArthasDK")
replaceTable(beforeLevelUp,1,player:GetSpellData(SPELL_1).level )
replaceTable(beforeLevelUp,2,player:GetSpellData(SPELL_2).level )
replaceTable(beforeLevelUp,3,player:GetSpellData(SPELL_3).level )
replaceTable(beforeLevelUp,4,player:GetSpellData(SPELL_4).level )
ArthasDKMenu = scriptConfig("Auto Level Queue", "ArthasDK AutoLevelQueue")
ArthasDKMenu:addParam("showQueue", "Show Queue", SCRIPT_PARAM_ONOFF, true)
ArthasDKMenu:addParam("add444", "Always level R when possible", SCRIPT_PARAM_ONOFF, false)
ArthasDKMenu:addParam("addQ", "Add 'Q' to Queue", SCRIPT_PARAM_ONOFF, false)
ArthasDKMenu:addParam("addW", "Add 'W' to Queue", SCRIPT_PARAM_ONOFF, false)
ArthasDKMenu:addParam("addE", "Add 'E' to Queue", SCRIPT_PARAM_ONOFF, false)
if ArthasDKMenu.add444== false then ArthasDKMenu:addParam("addR", "Add 'R' to Queue", SCRIPT_PARAM_ONOFF, false) end
ArthasDKMenu:addParam("addQPriority", "Add 'Q's in Priority", SCRIPT_PARAM_ONOFF, false)
ArthasDKMenu:addParam("addWPriority", "Add 'W's in Priority", SCRIPT_PARAM_ONOFF, false)
ArthasDKMenu:addParam("addEPriority", "Add 'E's in Priority", SCRIPT_PARAM_ONOFF, false)
if ArthasDKMenu.add444== false then ArthasDKMenu:addParam("addRPriority", "Add 'R's in Priority", SCRIPT_PARAM_ONOFF, false) end
ArthasDKMenu:addParam("resetQueue", "Reset The Queue", SCRIPT_PARAM_ONKEYDOWN, false, resetKey)
ArthasDKMenu.addQPriority = false
ArthasDKMenu.addWPriority = false
ArthasDKMenu.addEPriority = false
ArthasDKMenu.addRPriority = false
ArthasDKMenu.addQ = false
ArthasDKMenu.addW = false
ArthasDKMenu.addE = false
ArthasDKMenu.addR = false
ArthasDKMenu.resetQueue= false
if ArthasDKMenu.add444== true then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
end
end
function OnWndMsg(msg,key)
SC__OnWndMsg(msg,key)
end
function replaceTable(Table,i,value)
if i <= #Table then
table.remove(Table,i)
table.insert(Table,i,value)
end
end
function rightShift(Table,pos)
for i=pos,#Table-1,1 do
Table[i]=Table[i+1]
end
Table[#Table]=0
end
function FindFirstOccurenceOf(Table,item)
for i=1,#Table,1 do
if Table[i]==item then return i end
end
return -1
end
function OnSendChat(text)
if text == ".4" or text==".R" or text ==".r" then
BlockChat()
if tonumber(spellcounts[4])> 0 then
table.insert(queue,4)
PrintChat("Pushed R!")
spellcounts[4]= tonumber(spellcounts[4])-1
end
elseif text == ".3" or text==".E" or text ==".e" then
BlockChat()
if tonumber(spellcounts[3])> 0 then
table.insert(queue,3)
PrintChat("Pushed E!")
spellcounts[3]= tonumber(spellcounts[3])-1
end
elseif text == ".2" or text==".W" or text ==".w" then
BlockChat()
if tonumber(spellcounts[2])> 0 then
table.insert(queue,2)
PrintChat("Pushed W!")
spellcounts[2]= tonumber(spellcounts[2])-1
end
elseif text == ".1" or text==".q" or text ==".Q" then
BlockChat()
if tonumber(spellcounts[1])> 0 then
table.insert(queue,1)
PrintChat("Pushed Q!")
spellcounts[1]= tonumber(spellcounts[1])-1
end
elseif text == "!1" or text=="!q" or text =="!Q" then
BlockChat()
local count= tonumber(spellcounts[1])
for i =1,count,1 do
table.insert(queue,1)
spellcounts[1]= tonumber(spellcounts[1])-1
end
PrintChat("Pushed Qx"..tostring(count).."!")
elseif text == "!2" or text=="!w" or text =="!W" then
BlockChat()
local count= tonumber(spellcounts[2])
for i =1,count,1 do
table.insert(queue,2)
spellcounts[2]= tonumber(spellcounts[2])-1
end
PrintChat("Pushed Wx"..tostring(count).."!")
elseif text == "!3" or text=="!E" or text =="!E" then
BlockChat()
local count= tonumber(spellcounts[3])
for i =1,count,1 do
table.insert(queue,3)
spellcounts[3]= tonumber(spellcounts[3])-1
end
PrintChat("Pushed Ex"..tostring(count).."!")
elseif text == "!4" or text=="!r" or text =="!R" then
BlockChat()
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
PrintChat("Pushed Rx"..tostring(count).."!")
end
end
function OnTick()
if ArthasDKMenu.resetQueue== true then
for i=1,#queue,1 do
table.remove (queue)
end
spellcounts[1]=5-player:GetSpellData(SPELL_1).level
spellcounts[2]=5-player:GetSpellData(SPELL_2).level
spellcounts[3]=5-player:GetSpellData(SPELL_3).level
spellcounts[4]=3-player:GetSpellData(SPELL_4).level
PrintChat("Cleared the Queue")
if ArthasDKMenu.add444== true then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
end
ArthasDKMenu.resetQueue= false
end
if ArthasDKMenu.addQ ==true then
if ArthasDKMenu.add444== true then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
end
if tonumber(spellcounts[1])> 0 then
table.insert(queue,1)
PrintChat("Pushed Q!")
spellcounts[1]= tonumber(spellcounts[1])-1
end
ArthasDKMenu.addQ = false
end
if ArthasDKMenu.addW ==true then
if ArthasDKMenu.add444== true then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
end
if tonumber(spellcounts[2])> 0 then
table.insert(queue,2)
PrintChat("Pushed W!")
spellcounts[2]= tonumber(spellcounts[2])-1
end
ArthasDKMenu.addW = false
end
if ArthasDKMenu.addE ==true then
if ArthasDKMenu.add444== true then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
end
if tonumber(spellcounts[3])> 0 then
table.insert(queue,3)
PrintChat("Pushed E!")
spellcounts[3]= tonumber(spellcounts[3])-1
end
ArthasDKMenu.addE = false
end
if ArthasDKMenu.addR ==true and ArthasDKMenu.add444== false then
if tonumber(spellcounts[4])> 0 then
table.insert(queue,4)
PrintChat("Pushed R!")
spellcounts[4]= tonumber(spellcounts[4])-1
end
ArthasDKMenu.addR = false
end
if ArthasDKMenu.addQPriority ==true then
if ArthasDKMenu.add444== true then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
end
local count= tonumber(spellcounts[1])
for i =1,count,1 do
table.insert(queue,1)
spellcounts[1]= tonumber(spellcounts[1])-1
end
PrintChat("Pushed Qx"..tostring(count).."!")
ArthasDKMenu.addQPriority = false
end
if ArthasDKMenu.addWPriority ==true then
if ArthasDKMenu.add444== true then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
end
local count= tonumber(spellcounts[2])
for i =1,count,1 do
table.insert(queue,2)
spellcounts[2]= tonumber(spellcounts[2])-1
end
PrintChat("Pushed Wx"..tostring(count).."!")
ArthasDKMenu.addWPriority = false
end
if ArthasDKMenu.addEPriority ==true then
if ArthasDKMenu.add444== true then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
end
local count= tonumber(spellcounts[3])
for i =1,count,1 do
table.insert(queue,3)
spellcounts[3]= tonumber(spellcounts[3])-1
end
PrintChat("Pushed Ex"..tostring(count).."!")
ArthasDKMenu.addEPriority = false
end
if ArthasDKMenu.addRPriority ==true and ArthasDKMenu.add444== false then
local count= tonumber(spellcounts[4])
for i =1,count,1 do
table.insert(queue,4)
spellcounts[4]= tonumber(spellcounts[4])-1
end
PrintChat("Pushed Rx"..tostring(count).."!")
ArthasDKMenu.addRPriority = false
end
if player:GetSpellData(SPELL_1).level + player:GetSpellData(SPELL_2).level + player:GetSpellData(SPELL_3).level + player:GetSpellData(SPELL_4).level < player.level and #queue>0 then
levelUpRequired = true
end
if levelUpRequired== true then
for i=1,#queue,1 do
LevelSpell(tonumber(queue[i])-1)
end
popFromQueue= true
levelUpRequired=false
end
if popFromQueue== true then
replaceTable(afterLevelUp,1,player:GetSpellData(SPELL_1).level )
replaceTable(afterLevelUp,2,player:GetSpellData(SPELL_2).level )
replaceTable(afterLevelUp,3,player:GetSpellData(SPELL_3).level )
replaceTable(afterLevelUp,4,player:GetSpellData(SPELL_4).level )
for i=1,4,1 do
if beforeLevelUp[i]~=afterLevelUp[i] then
needToDelete=i
end
end
end
if needToDelete>0 then
PrintChat("Leveled UP : Ability"..tostring(tonumber(needToDelete)))
local index=FindFirstOccurenceOf(queue,needToDelete)
rightShift(queue,index)
replaceTable(beforeLevelUp,1,player:GetSpellData(SPELL_1).level )
replaceTable(beforeLevelUp,2,player:GetSpellData(SPELL_2).level )
replaceTable(beforeLevelUp,3,player:GetSpellData(SPELL_3).level )
replaceTable(beforeLevelUp,4,player:GetSpellData(SPELL_4).level )
popFromQueue=false
needToDelete=-1
end
end
function PrintTable(Table)
local String=""
for i=1,#Table do
if Table[i] ~= 0 then
if ArthasDKMenu.add444== false then
String=String..tostring(Table[i]).." "
end
if Table[i] ~= 4 and ArthasDKMenu.add444== true then
String=String..tostring(Table[i]).." "
end
end
end
return String
end
function noOfNonZeroElements(Table)
local result=0
if #Table == 0 then return 0 end
for i=1,#Table do
if Table[i] ~= 0 then result=result+1 end
end
return result
end
function OnDraw()
if ArthasDKMenu.showQueue == true and noOfNonZeroElements(queue) < 1 then DrawText("Please insert atleast one element in the Queue.", 25, 0, 25, 0xFF00ff00) end
if ArthasDKMenu.showQueue == true and noOfNonZeroElements(queue)>0 and player.level < 18 then DrawText("Printing the Contents of queue :"..PrintTable(queue), 25, 0, 0, 0xFF00ff00) end
if ArthasDKMenu.showQueue == true and player.level == 18 then DrawText("All Done :)!! ty for using", 25, 0, 0, 0xFF00ff00) end
SC__OnDraw()
end
Comments