lotrointerface.com
Search Downloads

LoTROInterface SVN SortPack

[/] [branches/] [Hazado/] [Main.lua] - Blame information for rev 32

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 Hazado-481
import "Turbine.UI";
2 Hazado-481
import "Turbine.Utils";
3 Hazado-481
import "Turbine.UI.Lotro";
4 Hazado-481
import "Turbine.Gameplay";
5 Hazado-481
import"JackdawPlugins.SortPack.functions";
6 Hazado-481
import"JackdawPlugins.SortPack.List";
7 Hazado-481
--[[
8 Hazado-481
--SortPack by MrJackdaw
9 Hazado-481
--*************************
10 Hazado-481
--What it does: Sorts the Backpacks
11 Hazado-481
--Updates:
12 Hazado-481
--Note:                                 My coding experience is all from looking at other peoples work and tinkering - so this is probably full of bad, wicked syntax. Forgive me! Chastise me! But don't hate me... *grin*
13 Hazado-481
 
14 Hazado-481
--TODO
15 Hazado-481
--On hold now till GetCategory actually DOES something! All of the other data is pretty useless too. So, until they sort it out, the 'value' list below helps sort it out, and after that it is alphabetical.]]--
16 Hazado-481
 
17 Hazado-481
--Define the 'Importance' list
18 Hazado-481
--This is in *reverse* order - more important items AT THE BOTTOM!
19 Hazado-481
mergetable(value,{
20 Hazado-481
trash,
21 Hazado-481
weapons,
22 Hazado-481
armour,
23 32 Hazado-481
questitems,
24 7 Hazado-481
recipe,
25 Hazado-481
crit,
26 Hazado-481
scholarmats,
27 Hazado-481
gem,
28 Hazado-481
wood,
29 Hazado-481
leather,
30 Hazado-481
ore,
31 Hazado-481
shard,
32 26 Hazado-481
reputationitems,
33 11 Hazado-481
skirmishbarter,
34 7 Hazado-481
tokens,
35 Hazado-481
travellingrations,
36 Hazado-481
itemadvfood,
37 Hazado-481
beer,
38 Hazado-481
woundresistfood,
39 Hazado-481
poisonresistfood,
40 Hazado-481
fearresistfood,
41 Hazado-481
diseaseresistfood,
42 Hazado-481
willfood,
43 Hazado-481
vitalityfood,
44 Hazado-481
mightfood,
45 Hazado-481
fatefood,
46 Hazado-481
agilityfood,
47 Hazado-481
incombatpowerfood,
48 Hazado-481
incombatmoralefood,
49 Hazado-481
dothealmoralefood,
50 Hazado-481
noncombatmoralefood,
51 Hazado-481
curative,
52 Hazado-481
potion,
53 Hazado-481
buff,
54 Hazado-481
misc,
55 Hazado-481
captain,
56 Hazado-481
woodworkingtools,
57 Hazado-481
tailortools,
58 Hazado-481
smithingtools,
59 Hazado-481
scholartools,
60 Hazado-481
prospectortools,
61 Hazado-481
jewellertools,
62 Hazado-481
forestertools,
63 Hazado-481
farmingtools,
64 Hazado-481
cookingtools,
65 Hazado-481
map})
66 Hazado-481
 
67 Hazado-481
--Register a slash command
68 Hazado-481
 
69 Hazado-481
shellCommand = Turbine.ShellCommand()
70 Hazado-481
function shellCommand:Execute(command, i)
71 Hazado-481
        sorting=true
72 Hazado-481
        SortPackNow()
73 Hazado-481
        sorting=false
74 Hazado-481
        --Now run a little proggy just to see if it actually did it's work!
75 Hazado-481
        --checker()
76 Hazado-481
        --temp()
77 Hazado-481
end
78 Hazado-481
Turbine.Shell.AddCommand('Sort', shellCommand)
79 Hazado-481
 
80 Hazado-481
 
81 Hazado-481
        local player = Turbine.Gameplay.LocalPlayer();  --Define player to be the player
82 Hazado-481
        local backpack = player:GetBackpack();                                  --Players backpack object
83 Hazado-481
        local size =backpack:GetSize()                                                          --How big it is
84 Hazado-481
        --Store the backpack contents seperately - just easier to understand later and lower server load (possibly)
85 Hazado-481
                local BackpackContents = {}
86 Hazado-481
        --Also create a "Virtual Backpack" - storing an image of the weights and id of each item - the id is its beginning slot location.
87 Hazado-481
                local VirtualBackpack={}
88 29 Hazado-481
 
89 Hazado-481
function SortPackNow()
90 Hazado-481
        if sorting~=true then Turbine.Shell.WriteLine("Already sorting - gotcha ya nasty bug!") return end
91 Hazado-481
 
92 7 Hazado-481
        --Retrieve backpack contents
93 Hazado-481
                for i = 1, size do
94 Hazado-481
                        item = backpack:GetItem(i);
95 Hazado-481
                        BackpackContents[i]={}
96 Hazado-481
                        if item == nil then
97 Hazado-481
                                --Empty slots have no name, quality, category etc
98 Hazado-481
                                BackpackContents[i].Name=0
99 Hazado-481
                                BackpackContents[i].Category=0
100 Hazado-481
                                BackpackContents[i].Durability=0
101 Hazado-481
                                BackpackContents[i].Quality=0
102 Hazado-481
                                BackpackContents[i].WearState=0
103 Hazado-481
                        else
104 Hazado-481
                                --Turbine.Shell.WriteLine(item:GetName());
105 Hazado-481
                                BackpackContents[i].Name=item:GetName()
106 Hazado-481
                                BackpackContents[i].Category=item:GetCategory()
107 Hazado-481
                                BackpackContents[i].Durability=item:GetDurability()
108 Hazado-481
                                BackpackContents[i].Quality=item:GetQuality()
109 Hazado-481
                                BackpackContents[i].WearState=item:GetWearState()
110 Hazado-481
                        end
111 Hazado-481
 
112 Hazado-481
                        --Calculate the weight
113 Hazado-481
                                local Weight = 0
114 Hazado-481
                                Weight=SearchTable(value,BackpackContents[i].Name)*100                                                  --First scan the Name using the value table
115 Hazado-481
                                Weight=Weight+90-string.byte(BackpackContents[i].Name)                                                          --Finally, all things being equal, alphabetical. A=65 by the way so (90-) is there for a reason!
116 Hazado-481
                                if item==nil then Weight = -100 end
117 Hazado-481
                        --Build a "virtual" backpack. This stores the weights etc and is sorted later before being copied to the real backpack
118 Hazado-481
                        VirtualBackpack[i]={Weight=Weight,id=i}
119 Hazado-481
                end
120 Hazado-481
 
121 Hazado-481
        --Sort VirtualBackpack by weight. This is a simple sort from http://www.lua.org/pil/6.html
122 Hazado-481
        table.sort(VirtualBackpack, function (a,b) return (a.Weight > b.Weight) end)
123 Hazado-481
        --
124 Hazado-481
        --Now, map the virtual backpack to the real backpack
125 Hazado-481
        for i = 1, size do
126 29 Hazado-481
                count=0
127 26 Hazado-481
                swop(i,VirtualBackpack[i].id)
128 7 Hazado-481
        end
129 Hazado-481
 
130 Hazado-481
        --Save a copy
131 Hazado-481
        Turbine.PluginData.Save( Turbine.DataScope.Character, "PackInfo",BackpackContents)
132 Hazado-481
end
133 Hazado-481
 
134 26 Hazado-481
function swop (i,j)
135 Hazado-481
                        local jitem=backpack:GetItem(j) --Source item
136 Hazado-481
                        local iitem=backpack:GetItem(i) --Target slot
137 7 Hazado-481
 
138 26 Hazado-481
                        if jitem~=nil then
139 Hazado-481
                                if iitem~=nil then
140 29 Hazado-481
                                        if jitem:GetName()~=iitem:GetName() then
141 26 Hazado-481
                                                --Turbine.Shell.WriteLine("Swopping  "..jitem:GetName().." does not equal "..iitem:GetName())
142 Hazado-481
                                                backpack:PerformItemDrop(jitem,i, false)
143 29 Hazado-481
                                                --backpack:PerformItemDrop(iitem,j,false)
144 26 Hazado-481
                                        end-- Perform the change ONLY IF THE ITEMS ARE NOT THE SAME.
145 Hazado-481
                                else
146 Hazado-481
                                        --Turbine.Shell.WriteLine("Swopping  "..jitem:GetName().." with blank slot")
147 29 Hazado-481
                                        backpack:PerformItemDrop(jitem,i, false) --iitem is empty - perform the placement!
148 26 Hazado-481
                                end
149 Hazado-481
                        end
150 Hazado-481
 
151 Hazado-481
end
152 Hazado-481
 
153 7 Hazado-481
Turbine.Shell.WriteLine("SortPack loaded - type /sort to run")

All times are GMT -5. The time now is 01:17 AM.


Our Network
EQInterface | EQ2Interface | Minion | WoWInterface | ESOUI | LoTROInterface | MMOUI | Swtorui