arthasdk

AutoLevelUP Queue 1.3

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