240 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| --UPDATE_BIND_TABLE UPDATE_BINDS UPDATE_BAR_TABLE UPDATE_BARS DELETE_SET LIST_SETS
 | |
| --[[
 | |
| UPDATE_BIND_TABLE saves current binds
 | |
| UPDATE_BINDS restores saved binds
 | |
| UPDATE_BAR_TABLE saves current bar layout also supports sets
 | |
| UPDATE_BARS restores bar layout; defaults to the "default" set
 | |
| DELETE_SET deletes a specified set
 | |
| LIST_SETS lists all sets
 | |
| DELETE and LIST only work for bar layouts
 | |
|  
 | |
|  
 | |
|  
 | |
| /run WeakAuras.ScanEvents("UPDATE_BINDS")
 | |
| /run WeakAuras.ScanEvents("UPDATE_BIND_TABLE")
 | |
|  
 | |
| ]]
 | |
| function(e, ...)
 | |
|     if InCombatLockdown() ~= 1 then
 | |
|         if e == "UPDATE_BIND_TABLE" then
 | |
|             if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
 | |
|             if not WeakAurasSaved.CustomTrash.BindTableTwo then WeakAurasSaved.CustomTrash.BindTableTwo = {} end
 | |
|             for i = 1, GetNumBindings() do
 | |
|                 local comm, bind, bind2 = GetBinding(i)
 | |
|                 if comm and bind2 and not WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
 | |
|                     print("Adding", comm, "with bind", bind2, "to bind table")
 | |
|                     WeakAurasSaved.CustomTrash.BindTableTwo[comm] = {}
 | |
|                     WeakAurasSaved.CustomTrash.BindTableTwo[comm].bind = bind2
 | |
|                     WeakAurasSaved.CustomTrash.BindTableTwo[comm].index = i
 | |
|                 end
 | |
|                 if comm and not bind2 and WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
 | |
|                     print("Removing", comm, "with no bind from the bind table")
 | |
|                     WeakAurasSaved.CustomTrash.BindTableTwo[comm] = nil
 | |
|                 end
 | |
|             end
 | |
|         elseif e == "UPDATE_BINDS" then
 | |
|             for k, v in pairs(WeakAurasSaved.CustomTrash.BindTableTwo) do
 | |
|                 local command, bind, bind2 = GetBinding(v.index)
 | |
|                 if bind2 ~= v.bind then
 | |
|                     --The key should be aura_env.keyBinds[command] but the key is bind2
 | |
|                     print("Key", command, "has bind", bind2, "but should have", v.bind)
 | |
|                     if bind2 then SetBinding(bind2) end
 | |
|                     if v.bind then SetBinding(v.bind, command) end
 | |
|                 end
 | |
|             end
 | |
|             SaveBindings(1)
 | |
|         elseif e == "UPDATE_BAR_TABLE" then
 | |
|             local arg2 = "default"
 | |
|             if ... then arg2 = ... end
 | |
|             if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
 | |
|             if not WeakAurasSaved.CustomTrash.BarTable then WeakAurasSaved.CustomTrash.BarTable = {} end
 | |
|             if not WeakAurasSaved.CustomTrash.BarTable[arg2] then WeakAurasSaved.CustomTrash.BarTable[arg2] = {} end
 | |
|             for i = 1, 72 do
 | |
|                 PickupAction(i)
 | |
|                 if GetCursorInfo() then
 | |
|                     local type = GetCursorInfo()
 | |
|                     local id, name = nil, nil
 | |
|                     if not type then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = nil end
 | |
|                     if type == "spell" then
 | |
|                         id = select(4, GetCursorInfo())
 | |
|                     elseif type == "mount" then
 | |
|                         id = select(2, GetCursorInfo())
 | |
|                     elseif type == "macro" then
 | |
|                         id = select(2, GetCursorInfo())
 | |
|                         name = select(1, GetMacroInfo(id))
 | |
|                     elseif type == "item" then
 | |
|                         id = select(2, GetCursorInfo())
 | |
|                     elseif type == "equipmentset" then
 | |
|                         name = select(2, GetCursorInfo())
 | |
|                     end --elseif end
 | |
|                     if not WeakAurasSaved.CustomTrash.BarTable[arg2][i] then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = {} end
 | |
|                     if id ~= WeakAurasSaved.CustomTrash.BarTable[arg2][i].id or type ~= WeakAurasSaved.CustomTrash.BarTable[arg2][i].type then
 | |
|                         WeakAurasSaved.CustomTrash.BarTable[arg2][i].type = type
 | |
|                         WeakAurasSaved.CustomTrash.BarTable[arg2][i].id = id
 | |
|                         WeakAurasSaved.CustomTrash.BarTable[arg2][i].name = name
 | |
|                         if not name then
 | |
|                             print("Adding", type, "by id", id, "on slot", i, "to the table")
 | |
|                         elseif name then
 | |
|                             print("Adding", type, "by id", id, "and name", name, "on slot", i, "to the table")
 | |
|                         end
 | |
|                     end
 | |
|                 end
 | |
|                 PickupAction(i)
 | |
|             end
 | |
|         elseif e == "UPDATE_BARS" then
 | |
|             local arg2 = "default"
 | |
|             if ... then arg2 = ... end
 | |
|             for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable[arg2]) do
 | |
|                 if v.type == "spell" then
 | |
|                     if GetCursorInfo() then ClearCursor() end
 | |
|                     PickupAction(k)
 | |
|                     if GetCursorInfo() then
 | |
|                         local id = select(4, GetCursorInfo())
 | |
|                         if id ~= v.id then
 | |
|                             ClearCursor()
 | |
|                             PickupSpell(v.id)
 | |
|                             PickupAction(k)
 | |
|                             ClearCursor()
 | |
|                         end
 | |
|                         PickupAction(k)
 | |
|                     else
 | |
|                         ClearCursor()
 | |
|                         PickupSpell(v.id)
 | |
|                         PickupAction(k)
 | |
|                         ClearCursor()
 | |
|                     end
 | |
|                 elseif v.type == "mount" then
 | |
|                     local mid, mindex
 | |
|                     --Looking for mount in mount journal
 | |
|                     for i = 1, C_MountJournal.GetNumMounts() do
 | |
|                         mid = select(12, C_MountJournal.GetDisplayedMountInfo(i))
 | |
|                         local ishave = select(11, C_MountJournal.GetDisplayedMountInfo(i))
 | |
|                         if mid == v.id then
 | |
|                             mindex = i
 | |
|                             break
 | |
|                         end
 | |
|                         if ishave == false then
 | |
|                             break
 | |
|                         end
 | |
|                     end
 | |
|                     
 | |
|                     --Checking what's on the bar
 | |
|                     if GetCursorInfo() then ClearCursor() end
 | |
|                     PickupAction(k)
 | |
|                     if GetCursorInfo() then
 | |
|                         local id = select(2, GetCursorInfo())
 | |
|                         if id ~= v.id and mindex then
 | |
|                             ClearCursor()
 | |
|                             C_MountJournal.Pickup(mindex)
 | |
|                             PickupAction(k)
 | |
|                             ClearCursor()
 | |
|                         end
 | |
|                         PickupAction(k)
 | |
|                     elseif not GetCursorInfo() and mindex then
 | |
|                         ClearCursor()
 | |
|                         C_MountJournal.Pickup(mindex)
 | |
|                         PickupAction(k)
 | |
|                         ClearCursor()
 | |
|                     end
 | |
|                 elseif v.type == "macro" then
 | |
|                     if GetCursorInfo() then ClearCursor() end
 | |
|                     PickupAction(k)
 | |
|                     if GetCursorInfo() then
 | |
|                         local id = select(2, GetCursorInfo())
 | |
|                         local name = select(1, GetMacroInfo(id))
 | |
|                         if id ~= v.id or name ~= v.name then
 | |
|                             ClearCursor()
 | |
|                             PickupMacro(v.id)
 | |
|                             PickupAction(k)
 | |
|                             ClearCursor()
 | |
|                         end
 | |
|                         PickupAction(k)
 | |
|                     else
 | |
|                         ClearCursor()
 | |
|                         local name = GetMacroInfo(v.id)
 | |
|                         if name == v.name then
 | |
|                             PickupMacro(v.id)
 | |
|                             PickupAction(k)
 | |
|                             ClearCursor()
 | |
|                         end
 | |
|                     end
 | |
|                 elseif v.type == "equipmentset" then
 | |
|                     if GetCursorInfo() then ClearCursor() end
 | |
|                     local eqindex
 | |
|                     for i = 1, GetNumEquipmentSets() do
 | |
|                         local nam = GetEquipmentSetInfo(i)
 | |
|                         if nam == v.name then
 | |
|                             eqindex = i
 | |
|                             break
 | |
|                         end
 | |
|                     end
 | |
|                     if eqindex then
 | |
|                         PickupAction(k)
 | |
|                         if GetCursorInfo() then
 | |
|                             local name = select(2, GetCursorInfo())
 | |
|                             if name ~= v.name then
 | |
|                                 ClearCursor()
 | |
|                                 PickupEquipmentSet(eqindex)
 | |
|                                 PickupAction(k)
 | |
|                                 ClearCursor()
 | |
|                             end
 | |
|                             PickupAction(k)
 | |
|                         else
 | |
|                             ClearCursor()
 | |
|                             PickupEquipmentSet(eqindex)
 | |
|                             PickupAction(k)
 | |
|                             ClearCursor()
 | |
|                         end
 | |
|                     end
 | |
|                 elseif v.type == "item" then
 | |
|                     if GetCursorInfo() then ClearCursor() end
 | |
|                     local ios, jos
 | |
|                     for i = 0, 4 do
 | |
|                         for j = 1, GetContainerNumSlots(i) do
 | |
|                             local link = select(7, GetContainerItemInfo(i, j))
 | |
|                             if link then
 | |
|                                 local id = link:match("item:(%d+):")
 | |
|                                 if id then
 | |
|                                     id = tonumber(id)
 | |
|                                     if id == v.id then
 | |
|                                         ios = i
 | |
|                                         jos = j
 | |
|                                         break
 | |
|                                     end
 | |
|                                 end
 | |
|                             end
 | |
|                         end
 | |
|                     end
 | |
|                     if ios and jos then
 | |
|                         PickupAction(k)
 | |
|                         if GetCursorInfo() then
 | |
|                             local id = select(2, GetCursorInfo())
 | |
|                             if id ~= v.id then
 | |
|                                 ClearCursor()
 | |
|                                 PickupContainerItem(ios, jos)
 | |
|                                 PickupAction(k)
 | |
|                                 ClearCursor()
 | |
|                             end
 | |
|                             PickupAction(k)
 | |
|                         else
 | |
|                             ClearCursor()
 | |
|                             PickupContainerItem(ios, jos)
 | |
|                             PickupAction(k)
 | |
|                             ClearCursor()
 | |
|                         end
 | |
|                     end
 | |
|                 end --elseif end
 | |
|             end
 | |
|         elseif e == "DELETE_SET" then
 | |
|             local arg2 = ...
 | |
|             if arg2 and WeakAurasSaved.CustomTrash.BarTable[arg2] then
 | |
|                 WeakAurasSaved.CustomTrash.BarTable[arg2] = nil
 | |
|             end
 | |
|         elseif e == "LIST_SETS" then
 | |
|             for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable) do
 | |
|                 print(k)
 | |
|             end
 | |
|         end --elseif end
 | |
|     end
 | |
| end
 |