Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --^^^^^^^^^^^^^^^^ArthasDK's AutoLevelUP Queue v1.3^^^^^^^^^^^^^^^^
- -- Put Abilities in the Queue Using the Shift Menu/Sprite/Chat so 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 moveKey=string.byte('M')
- local firstTimeadd444= true
- local SpriteTable={nil,nil,nil,nil}
- local iconUnderSprite={nil,nil,nil,nil}
- local SpriteVisible={false,false,false,false}
- local SpriteWorkDone={false,false,false,false}
- local x,y=0,0
- local uiSettings = {}
- 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("useMenu", "Use Menu Mode", SCRIPT_PARAM_ONOFF, false)
- ArthasDKMenu:addParam("useSprite", "Use Sprite Mode", SCRIPT_PARAM_ONOFF, true)
- ArthasDKMenu:addParam("add444", "Always level R when possible", SCRIPT_PARAM_ONOFF, false)
- if ArthasDKMenu.useMenu then
- 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
- end
- ArthasDKMenu:addParam("resetQueue", "Reset The Queue", SCRIPT_PARAM_ONKEYDOWN, false, string.byte('L'))
- 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
- insertSkilltoQueue(queue,4,3)
- firstTimeadd444=false
- end
- loadSprites()
- if file_exists(tostring(LIB_PATH.."arthasdkui.cfg")) then
- uiSettings = assert(loadfile(tostring(LIB_PATH.."arthasdkui.cfg")))()
- x,y = uiSettings.x, uiSettings.y
- end
- end
- function writeConfig()
- local file = io.open(tostring(LIB_PATH.."arthasdkui.cfg"), "w")
- if file then
- file:write(tostring("return { x = "..tostring(x)..", y = "..tostring(y).."}"))
- file:close()
- end
- end
- function loadSprites()
- local size = "32"
- if file_exists(LIB_PATH.."../../Sprites/SidasUI/"..myHero:GetSpellData(_Q).name:lower().."_"..size.."_result.dds") then
- SpriteTable[1] = createSprite("/SidasUI/"..myHero:GetSpellData(_Q).name:lower().."_"..size.."_result.dds")
- else
- SpriteTable[1] = createSprite("/SidasUI/UI_game_spell_description_Unknow_result.dds")
- end
- if file_exists(LIB_PATH.."../../Sprites/SidasUI/"..myHero:GetSpellData(_W).name:lower().."_"..size.."_result.dds") then
- SpriteTable[2] = createSprite("/SidasUI/"..myHero:GetSpellData(_W).name:lower().."_"..size.."_result.dds")
- else
- SpriteTable[2] = createSprite("/SidasUI/UI_game_spell_description_Unknow_result.dds")
- end
- if file_exists(LIB_PATH.."../../Sprites/SidasUI/"..myHero:GetSpellData(_E).name:lower().."_"..size.."_result.dds") then
- SpriteTable[3] = createSprite("/SidasUI/"..myHero:GetSpellData(_E).name:lower().."_"..size.."_result.dds")
- else
- SpriteTable[3] = createSprite("/SidasUI/UI_game_spell_description_Unknow_result.dds")
- end
- if file_exists(LIB_PATH.."../../Sprites/SidasUI/"..myHero:GetSpellData(_R).name:lower().."_"..size.."_result.dds") then
- SpriteTable[4] = createSprite("/SidasUI/"..myHero:GetSpellData(_R).name:lower().."_"..size.."_result.dds")
- else
- SpriteTable[4] = createSprite("/SidasUI/UI_game_spell_description_Unknow_result.dds")
- end
- end
- function OnWndMsg(msg,key)
- if msg == WM_LBUTTONDOWN then --and IsKeyDown(16) then
- if iconUnderSprite[1] then insertSkilltoQueue(queue,1,1)
- elseif iconUnderSprite[2] then insertSkilltoQueue(queue,2,1)
- elseif iconUnderSprite[3] then insertSkilltoQueue(queue,3,1)
- elseif iconUnderSprite[4] then insertSkilltoQueue(queue,4,1)
- end
- end
- if msg == WM_RBUTTONDOWN then --and IsKeyDown(17) then
- if iconUnderSprite[1] then insertSkilltoQueue(queue,1,5)
- elseif iconUnderSprite[2] then insertSkilltoQueue(queue,2,5)
- elseif iconUnderSprite[3] then insertSkilltoQueue(queue,3,5)
- elseif iconUnderSprite[4] then insertSkilltoQueue(queue,4,3)
- end
- end
- if key==moveKey then
- x,y = GetCursorPos().x,GetCursorPos().y
- writeConfig()
- end
- 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 insertSkilltoQueue(Table,item,numberOfTimes)
- if Table and item>=1 and item <=4 and numberOfTimes>0 then
- if numberOfTimes >1 and tonumber (spellcounts[item]) >0 then
- numberOfTimes = spellcounts[item]
- for i =1,numberOfTimes,1 do
- table.insert(queue,item)
- spellcounts[item]= tonumber(spellcounts[item])-1
- end
- if spellcounts[item] ==0 and ArthasDKMenu.useSprite then
- SpriteWorkDone[item]=true
- end
- end
- if numberOfTimes ==1 and tonumber (spellcounts[item]) >0 then
- table.insert(queue,item)
- spellcounts[item]= tonumber(spellcounts[item])-1
- if spellcounts[item] ==0 and ArthasDKMenu.useSprite then
- SpriteWorkDone[item]=true
- end
- elseif numberOfTimes ==1 and tonumber (spellcounts[item]) ==0 then
- numberOfTimes=0
- end
- local tempString=""
- if item==1 then tempString="Q"
- elseif item==2 then tempString="W"
- elseif item==3 then tempString="E"
- else tempString="R" end
- if ArthasDKMenu.add444== true and item ==4 then
- elseif numberOfTimes>0 then PrintChat("Pushed "..tempString.."x"..tostring(numberOfTimes).."!")
- end
- end
- end
- function OnSendChat(text)
- if text == ".4" or text==".R" or text ==".r" then
- BlockChat()
- insertSkilltoQueue(queue,4,1)
- elseif text == ".3" or text==".E" or text ==".e" then
- BlockChat()
- insertSkilltoQueue(queue,3,1)
- elseif text == ".2" or text==".W" or text ==".w" then
- BlockChat()
- insertSkilltoQueue(queue,2,1)
- elseif text == ".1" or text==".q" or text ==".Q" then
- BlockChat()
- insertSkilltoQueue(queue,1,1)
- elseif text == "!1" or text=="!q" or text =="!Q" then
- BlockChat()
- insertSkilltoQueue(queue,1,5)
- elseif text == "!2" or text=="!w" or text =="!W" then
- BlockChat()
- insertSkilltoQueue(queue,2,5)
- elseif text == "!3" or text=="!E" or text =="!E" then
- BlockChat()
- insertSkilltoQueue(queue,3,5)
- elseif text == "!4" or text=="!r" or text =="!R" then
- BlockChat()
- insertSkilltoQueue(queue,4,3)
- end
- end
- function OnTick()
- if ArthasDKMenu.useSprite== true then
- for i=1,4,1 do
- iconUnderSprite[i] = SpriteTable[i] and CursorIsUnder(x+40*(i-1)+2*(i-1),y, 32, 32) and SpriteVisible[i]
- end
- end
- 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
- insertSkilltoQueue(queue,4,3)
- end
- ArthasDKMenu.resetQueue= false
- end
- if ArthasDKMenu.add444== true and firstTimeadd444 == true then
- spellcounts[4]=3-player:GetSpellData(SPELL_4).level
- for j=1,3,1 do
- for i=1,#queue,1 do
- if queue[i]==4 then
- table.remove(queue,i)
- j=j+1
- end
- end
- end
- local noOfTimes=spellcounts[4]
- for i=1,noOfTimes,1 do
- table.insert(queue,1,4)
- spellcounts[4]= tonumber(spellcounts[4])-1
- end
- SpriteWorkDone[4]=true
- firstTimeadd444= false
- elseif ArthasDKMenu.add444== false and firstTimeadd444== false then
- for j=1,3,1 do
- for i=1,#queue,1 do
- if queue[i]==4 then
- table.remove(queue,i)
- j=j+1
- end
- end
- end
- spellcounts[4]=3-player:GetSpellData(SPELL_4).level
- SpriteWorkDone[4]=false
- firstTimeadd444= true
- end
- if ArthasDKMenu.addQ ==true then
- insertSkilltoQueue(queue,1,1)
- ArthasDKMenu.addQ = false
- end
- if ArthasDKMenu.addW ==true then
- insertSkilltoQueue(queue,2,1)
- ArthasDKMenu.addW = false
- end
- if ArthasDKMenu.addE ==true then
- insertSkilltoQueue(queue,3,1)
- ArthasDKMenu.addE = false
- end
- if ArthasDKMenu.addR ==true and ArthasDKMenu.add444== false then
- insertSkilltoQueue(queue,4,1)
- ArthasDKMenu.addR = false
- end
- if ArthasDKMenu.addQPriority ==true then
- insertSkilltoQueue(queue,1,5)
- ArthasDKMenu.addQPriority = false
- end
- if ArthasDKMenu.addWPriority ==true then
- insertSkilltoQueue(queue,2,5)
- ArthasDKMenu.addWPriority = false
- end
- if ArthasDKMenu.addEPriority ==true then
- insertSkilltoQueue(queue,3,5)
- ArthasDKMenu.addEPriority = false
- end
- if ArthasDKMenu.addRPriority ==true and ArthasDKMenu.add444== false then
- insertSkilltoQueue(queue,4,3)
- 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
- if ArthasDKMenu.useSprite then
- for i=1,4,1 do
- if SpriteTable[i] and SpriteWorkDone[i]==false then
- SpriteTable[i]:Draw(x+40*(i-1)+2*(i-1),y,0xFF)
- SpriteVisible[i]= true
- end
- if SpriteTable[i] and SpriteWorkDone[i]==true then
- SpriteTable[i]:Release()
- SpriteVisible[i]= false
- end
- end
- end
- SC__OnDraw()
- end
Advertisement
Add Comment
Please, Sign In to add comment