arthasdk

AutoLevelUP Queue 1.3f

Jan 23rd, 2013
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.30 KB | None | 0 0
  1. --^^^^^^^^^^^^^^^^ArthasDK's AutoLevelUP Queue v1.3f^^^^^^^^^^^^^^^^
  2. --   Put Abilities in the Queue Using the Shift Menu/Sprite/Chat so enjoy
  3. --              May bug but should not i tested it a lot.
  4. --^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  5. --if myHero.charName == "Udyr" or myHero.charName == "Khazix" then PrintChat("Sorry, Auto Levelup Queue does not work with that champion!") return end
  6.  
  7. local queue={}
  8. local spellcounts={5,5,5,3}
  9. local beforeLevelUp={0,0,0,0}
  10. local afterLevelUp={0,0,0,0}
  11. local levelUpRequired= false
  12. local popFromQueue= false
  13. local needToDelete =-1
  14. local moveKey=string.byte('M')
  15. local firstTimeadd444= true
  16.  
  17. local SpriteTable={nil,nil,nil,nil}
  18. local iconUnderSprite={nil,nil,nil,nil}
  19. local SpriteVisible={false,false,false,false}
  20. local SpriteWorkDone={false,false,false,false}
  21. local x_autoLevelQ,y_autoLevelQ=0,0
  22. local uiSettings = {}
  23.  
  24. function FillSpellCounts()
  25.     spellcounts[1]=5-player:GetSpellData(SPELL_1).level
  26.     spellcounts[2]=5-player:GetSpellData(SPELL_2).level
  27.     spellcounts[3]=5-player:GetSpellData(SPELL_3).level
  28.     spellcounts[4]=3-player:GetSpellData(SPELL_4).level
  29. end
  30.  
  31. function OnLoad()
  32.     FillSpellCounts()
  33.     replaceTable(beforeLevelUp,1,player:GetSpellData(SPELL_1).level )
  34.     replaceTable(beforeLevelUp,2,player:GetSpellData(SPELL_2).level )  
  35.     replaceTable(beforeLevelUp,3,player:GetSpellData(SPELL_3).level )  
  36.     replaceTable(beforeLevelUp,4,player:GetSpellData(SPELL_4).level )
  37.     ArthasDKMenu = scriptConfig("Auto Level Queue", "ArthasDK AutoLevelQueue")
  38.     ArthasDKMenu:addParam("showQueue", "Show/Hide Queue", SCRIPT_PARAM_ONOFF, true)
  39.     ArthasDKMenu:addParam("showMessages", "Show/Hide Chat Messages", SCRIPT_PARAM_ONOFF, true)
  40.     ArthasDKMenu:addParam("useMenu", "Use Menu Mode", SCRIPT_PARAM_ONOFF, false)
  41.     ArthasDKMenu:addParam("useSprite", "Use Sprite Mode", SCRIPT_PARAM_ONOFF, true)
  42.     ArthasDKMenu:addParam("add444", "Always level R when possible", SCRIPT_PARAM_ONOFF, false)
  43.     if ArthasDKMenu.useMenu then
  44.         ArthasDKMenu:addParam("addQ", "Add 'Q' to Queue", SCRIPT_PARAM_ONOFF, false)
  45.         ArthasDKMenu:addParam("addW", "Add 'W' to Queue", SCRIPT_PARAM_ONOFF, false)
  46.         ArthasDKMenu:addParam("addE", "Add 'E' to Queue", SCRIPT_PARAM_ONOFF, false)
  47.         if ArthasDKMenu.add444== false then ArthasDKMenu:addParam("addR", "Add 'R' to Queue", SCRIPT_PARAM_ONOFF, false) end
  48.         ArthasDKMenu:addParam("addQPriority", "Add 'Q's in Priority", SCRIPT_PARAM_ONOFF, false)
  49.         ArthasDKMenu:addParam("addWPriority", "Add 'W's in Priority", SCRIPT_PARAM_ONOFF, false)
  50.         ArthasDKMenu:addParam("addEPriority", "Add 'E's in Priority", SCRIPT_PARAM_ONOFF, false)
  51.         if ArthasDKMenu.add444== false then ArthasDKMenu:addParam("addRPriority", "Add 'R's in Priority", SCRIPT_PARAM_ONOFF, false) end
  52.     end
  53.     ArthasDKMenu:addParam("resetQueue", "Reset The Queue", SCRIPT_PARAM_ONOFF, false)
  54.     ArthasDKMenu.addQPriority = false
  55.     ArthasDKMenu.addWPriority = false
  56.     ArthasDKMenu.addEPriority = false
  57.     ArthasDKMenu.addRPriority = false
  58.     ArthasDKMenu.addQ = false
  59.     ArthasDKMenu.addW = false
  60.     ArthasDKMenu.addE = false
  61.     ArthasDKMenu.addR = false
  62.     ArthasDKMenu.resetQueue= false
  63.     if ArthasDKMenu.add444== true then
  64.         insertSkilltoQueue(queue,4,3)
  65.         firstTimeadd444=false  
  66.     end
  67.    
  68.     loadSprites()
  69.     if file_exists(tostring(LIB_PATH.."arthasdkui.cfg")) then
  70.         uiSettings = assert(loadfile(tostring(LIB_PATH.."arthasdkui.cfg")))()
  71.         x_autoLevelQ,y_autoLevelQ = uiSettings.x, uiSettings.y
  72.     end
  73.     if ArthasDKMenu.useSprite then
  74.         for i=1,4,1 do
  75.             if spellcounts[i] ==0 then
  76.             SpriteWorkDone[i]= true
  77.             end
  78.         end
  79.     end
  80.     PrintChat(">> Loaded AutoSkillLevelUp Queue v1.3e by ArthasDK")
  81. end
  82.  
  83. function writeConfig()
  84.     local file = io.open(tostring(LIB_PATH.."arthasdkui.cfg"), "w")
  85.     if file then
  86.         file:write(tostring("return { x = "..tostring(x_autoLevelQ)..", y = "..tostring(y_autoLevelQ).."}"))
  87.         file:close()
  88.     end
  89. end
  90.  
  91. function loadSprites()
  92.     local size = "32"
  93.     SpriteTable[1] = GetSprite (("/SidasUI/"..myHero:GetSpellData(_Q).name:lower().."_"..size.."_result.dds"),("Q_default.dds"))
  94.     SpriteTable[2] = GetSprite (("/SidasUI/"..myHero:GetSpellData(_W).name:lower().."_"..size.."_result.dds"),("W_default.dds"))
  95.     SpriteTable[3] = GetSprite (("/SidasUI/"..myHero:GetSpellData(_E).name:lower().."_"..size.."_result.dds"),("E_default.dds"))
  96.     SpriteTable[4] = GetSprite (("/SidasUI/"..myHero:GetSpellData(_R).name:lower().."_"..size.."_result.dds"),("R_default.dds"))
  97. end
  98.  
  99. function OnWndMsg(msg,key) 
  100.     if msg == WM_LBUTTONDOWN then --and IsKeyDown(16) then
  101.         if iconUnderSprite[1] then          insertSkilltoQueue(queue,1,1)
  102.         elseif iconUnderSprite[2] then      insertSkilltoQueue(queue,2,1)
  103.         elseif iconUnderSprite[3] then      insertSkilltoQueue(queue,3,1)
  104.         elseif iconUnderSprite[4] then      insertSkilltoQueue(queue,4,1)
  105.         end
  106.     end
  107.        
  108.     if msg == WM_RBUTTONDOWN then --and IsKeyDown(17) then
  109.         if iconUnderSprite[1] then          insertSkilltoQueue(queue,1,5)
  110.         elseif iconUnderSprite[2] then      insertSkilltoQueue(queue,2,5)
  111.         elseif iconUnderSprite[3] then      insertSkilltoQueue(queue,3,5)
  112.         elseif iconUnderSprite[4] then      insertSkilltoQueue(queue,4,3)
  113.         end
  114.     end
  115.    
  116.     if IsKeyDown(moveKey) and IsKeyDown(16)  then
  117.         x_autoLevelQ,y_autoLevelQ = GetCursorPos().x,GetCursorPos().y
  118.         writeConfig()
  119.     end
  120.     --SC__OnWndMsg(msg,key)
  121. end
  122.  
  123. function replaceTable(Table,i,value)
  124.     if i <= #Table then
  125.         table.remove(Table,i)
  126.         table.insert(Table,i,value)
  127.     end
  128. end
  129.  
  130. function rightShift(Table,pos)
  131.     for i=pos,#Table-1,1 do
  132.         Table[i]=Table[i+1]
  133.     end
  134.     Table[#Table]=0
  135. end
  136.  
  137. function FindFirstOccurenceOf(Table,item)
  138.     for i=1,#Table,1 do
  139.         if Table[i]==item then return i end
  140.     end
  141.     return -1
  142. end
  143.  
  144. function insertSkilltoQueue(Table,item,numberOfTimes)
  145.     FillSpellCounts()
  146.     if Table and item>=1 and item <=4 and numberOfTimes>0 then
  147.         if numberOfTimes >1 and tonumber (spellcounts[item]) >0 then
  148.             numberOfTimes = spellcounts[item]
  149.             for i =1,numberOfTimes,1 do
  150.                 table.insert(queue,item)  
  151.                 spellcounts[item]= tonumber(spellcounts[item])-1
  152.             end
  153.             if spellcounts[item] ==0 and ArthasDKMenu.useSprite then
  154.                 SpriteWorkDone[item]=true
  155.             end
  156.         end
  157.        
  158.         if numberOfTimes ==1 and tonumber (spellcounts[item]) >0 then
  159.             table.insert(queue,item)  
  160.             spellcounts[item]= tonumber(spellcounts[item])-1
  161.             if spellcounts[item] ==0 and ArthasDKMenu.useSprite then
  162.                 SpriteWorkDone[item]=true
  163.             end
  164.         elseif numberOfTimes ==1 and tonumber (spellcounts[item]) ==0 then
  165.             numberOfTimes=0
  166.         end
  167.        
  168.         local tempString=""
  169.         if item==1 then tempString="Q"
  170.         elseif item==2 then tempString="W"
  171.         elseif item==3 then tempString="E"
  172.         else tempString="R" end
  173.         if ArthasDKMenu.add444== true and item ==4 then
  174.         elseif numberOfTimes>0 and ArthasDKMenu.showMessages ==true then    PrintChat("Pushed "..tempString.."x"..tostring(numberOfTimes).."!")
  175.         end
  176.     end
  177. end
  178.  
  179.  
  180.  
  181. function OnSendChat(text)
  182.         if text == ".4" or text==".R" or text ==".r" then
  183.                 BlockChat()
  184.                 insertSkilltoQueue(queue,4,1)
  185.         elseif text == ".3" or text==".E" or text ==".e" then
  186.                 BlockChat()
  187.                 insertSkilltoQueue(queue,3,1)
  188.         elseif text == ".2" or text==".W" or text ==".w" then
  189.                 BlockChat()
  190.                 insertSkilltoQueue(queue,2,1)
  191.         elseif text == ".1" or text==".q" or text ==".Q" then
  192.                 BlockChat()
  193.                 insertSkilltoQueue(queue,1,1)
  194.         elseif text == "!1" or text=="!q" or text =="!Q" then
  195.                 BlockChat()
  196.                 insertSkilltoQueue(queue,1,5)
  197.         elseif text == "!2" or text=="!w" or text =="!W" then
  198.                 BlockChat()
  199.                 insertSkilltoQueue(queue,2,5)
  200.         elseif text == "!3" or text=="!E" or text =="!E" then
  201.                 BlockChat()
  202.                 insertSkilltoQueue(queue,3,5)
  203.         elseif text == "!4" or text=="!r" or text =="!R" then
  204.                 BlockChat()
  205.                 insertSkilltoQueue(queue,4,3)
  206.         end
  207. end
  208.  
  209. function OnTick()
  210.     if ArthasDKMenu.useSprite== true then
  211.         for i=1,4,1 do
  212.             iconUnderSprite[i] = SpriteTable[i] and CursorIsUnder(x_autoLevelQ+40*(i-1)+2*(i-1),y_autoLevelQ, 32, 32) and SpriteVisible[i] 
  213.         end
  214.     end
  215.    
  216.     if ArthasDKMenu.resetQueue== true then
  217.         for i=1,#queue,1 do
  218.             table.remove (queue)
  219.         end
  220.         FillSpellCounts()
  221.         if ArthasDKMenu.showMessages ==true then PrintChat("Cleared the Queue") end
  222.         if ArthasDKMenu.add444== true then
  223.             insertSkilltoQueue(queue,4,3)  
  224.         end
  225.         if ArthasDKMenu.useSprite then
  226.             for i=1,4,1 do
  227.                 if spellcounts[i]>0 then
  228.                 SpriteWorkDone[i]=false
  229.                 end
  230.             end
  231.         end    
  232.         ArthasDKMenu.resetQueue= false
  233.     end
  234.    
  235.     if ArthasDKMenu.add444== true and firstTimeadd444 == true then
  236.         spellcounts[4]=3-player:GetSpellData(SPELL_4).level
  237.         for j=1,3,1 do
  238.             for i=1,#queue,1 do
  239.                 if queue[i]==4 then
  240.                     table.remove(queue,i)
  241.                     j=j+1
  242.                 end
  243.             end
  244.         end
  245.         local noOfTimes=spellcounts[4]
  246.         for i=1,noOfTimes,1 do
  247.             table.insert(queue,1,4)
  248.             spellcounts[4]= tonumber(spellcounts[4])-1
  249.         end
  250.         SpriteWorkDone[4]=true
  251.         firstTimeadd444= false
  252.     elseif ArthasDKMenu.add444== false and firstTimeadd444== false then
  253.         for j=1,3,1 do
  254.             for i=1,#queue,1 do
  255.                 if queue[i]==4 then
  256.                     table.remove(queue,i)
  257.                     j=j+1
  258.                 end
  259.             end
  260.         end
  261.         spellcounts[4]=3-player:GetSpellData(SPELL_4).level
  262.         SpriteWorkDone[4]=false
  263.         firstTimeadd444= true
  264.     end
  265.    
  266.     if ArthasDKMenu.addQ ==true then
  267.         insertSkilltoQueue(queue,1,1)
  268.         ArthasDKMenu.addQ = false
  269.     end
  270.    
  271.     if ArthasDKMenu.addW ==true then
  272.         insertSkilltoQueue(queue,2,1)
  273.         ArthasDKMenu.addW = false
  274.     end
  275.    
  276.     if ArthasDKMenu.addE ==true then
  277.         insertSkilltoQueue(queue,3,1)
  278.         ArthasDKMenu.addE = false
  279.     end
  280.    
  281.     if ArthasDKMenu.addR ==true and ArthasDKMenu.add444== false then
  282.         insertSkilltoQueue(queue,4,1)
  283.         ArthasDKMenu.addR = false
  284.     end
  285.    
  286.     if ArthasDKMenu.addQPriority ==true then
  287.         insertSkilltoQueue(queue,1,5)
  288.         ArthasDKMenu.addQPriority = false
  289.     end
  290.    
  291.     if ArthasDKMenu.addWPriority ==true then
  292.         insertSkilltoQueue(queue,2,5)
  293.         ArthasDKMenu.addWPriority = false
  294.     end
  295.    
  296.     if ArthasDKMenu.addEPriority ==true then
  297.         insertSkilltoQueue(queue,3,5)
  298.         ArthasDKMenu.addEPriority = false
  299.     end
  300.    
  301.     if ArthasDKMenu.addRPriority ==true and ArthasDKMenu.add444== false then
  302.         insertSkilltoQueue(queue,4,3)
  303.         ArthasDKMenu.addRPriority = false
  304.     end
  305.  
  306.  
  307.     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
  308.         levelUpRequired = true
  309.     elseif player:GetSpellData(SPELL_1).level + player:GetSpellData(SPELL_2).level + player:GetSpellData(SPELL_3).level + player:GetSpellData(SPELL_4).level < player.level + 1 and #queue>0 and myHero.charName== "Jayce" then
  310.         levelUpRequired = true
  311.     end
  312.    
  313.     if levelUpRequired== true then
  314.         for i=1,#queue,1 do
  315.             LevelSpell(tonumber(queue[i])-1)
  316.         end
  317.         popFromQueue= true
  318.         levelUpRequired=false
  319.     end
  320.    
  321.     if popFromQueue== true then
  322.         replaceTable(afterLevelUp,1,player:GetSpellData(SPELL_1).level )
  323.         replaceTable(afterLevelUp,2,player:GetSpellData(SPELL_2).level )   
  324.         replaceTable(afterLevelUp,3,player:GetSpellData(SPELL_3).level )   
  325.         replaceTable(afterLevelUp,4,player:GetSpellData(SPELL_4).level )
  326.         for i=1,4,1 do
  327.             if beforeLevelUp[i]~=afterLevelUp[i] then
  328.                 needToDelete=i
  329.             end
  330.         end
  331.     end
  332.    
  333.     if needToDelete>0 then
  334.         if ArthasDKMenu.showMessages ==true then PrintChat("Leveled UP : Ability"..tostring(tonumber(needToDelete))) end
  335.         local index=FindFirstOccurenceOf(queue,needToDelete)
  336.         rightShift(queue,index)
  337.         replaceTable(beforeLevelUp,1,player:GetSpellData(SPELL_1).level )
  338.         replaceTable(beforeLevelUp,2,player:GetSpellData(SPELL_2).level )  
  339.         replaceTable(beforeLevelUp,3,player:GetSpellData(SPELL_3).level )  
  340.         replaceTable(beforeLevelUp,4,player:GetSpellData(SPELL_4).level )
  341.         popFromQueue=false
  342.         needToDelete=-1
  343.     end
  344. end
  345.  
  346.  
  347.  
  348. function PrintTable(Table)
  349.     local String=""
  350.     for i=1,#Table do
  351.         if Table[i] ~= 0 then
  352.             if ArthasDKMenu.add444== false then
  353.                 String=String..tostring(Table[i]).." "
  354.             end
  355.             if Table[i] ~= 4 and ArthasDKMenu.add444== true then
  356.                 String=String..tostring(Table[i]).." "
  357.             end
  358.         end
  359.     end
  360.     return String
  361. end
  362.  
  363. function noOfNonZeroElements(Table)
  364.     local result=0
  365.     if #Table == 0 then return 0 end
  366.     if ArthasDKMenu.add444 == false then
  367.         for i=1,#Table do
  368.             if Table[i] ~= 0 then result=result+1 end
  369.         end
  370.     else
  371.         for i=1,#Table do
  372.             if Table[i] ~= 0 and Table[i] ~=4 then result=result+1 end
  373.         end
  374.     end
  375.     return result
  376. end
  377.  
  378. function OnDraw()
  379.     if ArthasDKMenu.showQueue == true and noOfNonZeroElements(queue) < 1 and  player.level < 18 then DrawText("Please insert atleast one element in the Queue.", 25, 0, 25, 0xFF00ff00) end
  380.     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
  381.     if ArthasDKMenu.showQueue == true and player.level == 18 then DrawText("All Done :)!! ty for using", 25, 0, 0, 0xFF00ff00) end
  382.     if ArthasDKMenu.useSprite then
  383.         for i=1,4,1 do
  384.             if SpriteTable[i] and SpriteWorkDone[i]==false then
  385.                 SpriteTable[i]:Draw(x_autoLevelQ+40*(i-1)+2*(i-1),y_autoLevelQ,0xFF)
  386.                 SpriteVisible[i]= true
  387.             end
  388.             if SpriteTable[i] and SpriteWorkDone[i]==true then
  389.                 --SpriteTable[i]:Release()
  390.                 SpriteVisible[i]= false
  391.             end
  392.         end
  393.     end
  394.     --SC__OnDraw()
  395. end
Advertisement
Add Comment
Please, Sign In to add comment