arthasdk

ArthasDK's AutoLevelUP Queue v1.3g

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