lotrointerface.com
Search Downloads

LoTROInterface SVN SortPack

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 45 Hazado-481
import "Turbine";
2 7 Hazado-481
import "Turbine.UI";
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 42 Hazado-481
rings,
22 Hazado-481
pocket,
23 Hazado-481
necklace,
24 Hazado-481
earrings,
25 Hazado-481
bracelets,
26 Hazado-481
heavyshoulder,
27 Hazado-481
mediumshoulder,
28 Hazado-481
lightshoulder,
29 Hazado-481
heavyleg,
30 Hazado-481
mediumleg,
31 Hazado-481
lightleg,
32 Hazado-481
heavyhead,
33 Hazado-481
mediumhead,
34 Hazado-481
lighthead,
35 Hazado-481
heavyhand,
36 Hazado-481
mediumhand,
37 Hazado-481
lighthand,
38 Hazado-481
heavyfeet,
39 Hazado-481
mediumfeet,
40 Hazado-481
lightfeet,
41 Hazado-481
heavychest,
42 Hazado-481
mediumchest,
43 Hazado-481
lightchest,
44 41 Hazado-481
cloaks,
45 42 Hazado-481
heavyshield,
46 Hazado-481
wardenshield,
47 Hazado-481
shield,
48 41 Hazado-481
thrownweapons,
49 Hazado-481
twohandedswords,
50 Hazado-481
onehandedswords,
51 Hazado-481
staffs,
52 Hazado-481
spears,
53 Hazado-481
runestones,
54 Hazado-481
onehandedmaces,
55 38 Hazado-481
javelins,
56 41 Hazado-481
twohandedhammers,
57 Hazado-481
onehandedhammers,
58 38 Hazado-481
halberds,
59 Hazado-481
daggers,
60 Hazado-481
crossbows,
61 41 Hazado-481
twohandedclubs,
62 Hazado-481
onehandedclubs,
63 38 Hazado-481
bows,
64 Hazado-481
twohandedaxes,
65 Hazado-481
onehandedaxes,
66 42 Hazado-481
dye,
67 Hazado-481
miscdevices,
68 32 Hazado-481
questitems,
69 7 Hazado-481
recipe,
70 Hazado-481
crit,
71 Hazado-481
scholarmats,
72 Hazado-481
gem,
73 Hazado-481
wood,
74 Hazado-481
leather,
75 Hazado-481
ore,
76 Hazado-481
shard,
77 42 Hazado-481
deconstructables,
78 26 Hazado-481
reputationitems,
79 11 Hazado-481
skirmishbarter,
80 7 Hazado-481
tokens,
81 Hazado-481
travellingrations,
82 Hazado-481
itemadvfood,
83 Hazado-481
beer,
84 Hazado-481
woundresistfood,
85 Hazado-481
poisonresistfood,
86 Hazado-481
fearresistfood,
87 Hazado-481
diseaseresistfood,
88 Hazado-481
willfood,
89 Hazado-481
vitalityfood,
90 Hazado-481
mightfood,
91 Hazado-481
fatefood,
92 Hazado-481
agilityfood,
93 Hazado-481
incombatpowerfood,
94 Hazado-481
incombatmoralefood,
95 Hazado-481
dothealmoralefood,
96 Hazado-481
noncombatmoralefood,
97 Hazado-481
curative,
98 Hazado-481
potion,
99 Hazado-481
buff,
100 42 Hazado-481
keys,
101 7 Hazado-481
misc,
102 Hazado-481
captain,
103 Hazado-481
woodworkingtools,
104 Hazado-481
tailortools,
105 Hazado-481
smithingtools,
106 Hazado-481
scholartools,
107 Hazado-481
prospectortools,
108 Hazado-481
jewellertools,
109 Hazado-481
forestertools,
110 Hazado-481
farmingtools,
111 Hazado-481
cookingtools,
112 Hazado-481
map})
113 Hazado-481
 
114 Hazado-481
--Register a slash command
115 Hazado-481
 
116 Hazado-481
shellCommand = Turbine.ShellCommand()
117 Hazado-481
function shellCommand:Execute(command, i)
118 Hazado-481
        sorting=true
119 Hazado-481
        SortPackNow()
120 Hazado-481
        sorting=false
121 Hazado-481
        --Now run a little proggy just to see if it actually did it's work!
122 Hazado-481
        --checker()
123 Hazado-481
        --temp()
124 Hazado-481
end
125 Hazado-481
Turbine.Shell.AddCommand('Sort', shellCommand)
126 Hazado-481
 
127 Hazado-481
 
128 45 Hazado-481
        local player = Turbine.Gameplay.LocalPlayer.GetInstance();      --Define player to be the player
129 7 Hazado-481
        local backpack = player:GetBackpack();                                  --Players backpack object
130 Hazado-481
        local size =backpack:GetSize()                                                          --How big it is
131 Hazado-481
        --Store the backpack contents seperately - just easier to understand later and lower server load (possibly)
132 Hazado-481
                local BackpackContents = {}
133 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.
134 Hazado-481
                local VirtualBackpack={}
135 29 Hazado-481
 
136 Hazado-481
function SortPackNow()
137 Hazado-481
        if sorting~=true then Turbine.Shell.WriteLine("Already sorting - gotcha ya nasty bug!") return end
138 Hazado-481
 
139 7 Hazado-481
        --Retrieve backpack contents
140 Hazado-481
                for i = 1, size do
141 Hazado-481
                        item = backpack:GetItem(i);
142 Hazado-481
                        BackpackContents[i]={}
143 Hazado-481
                        if item == nil then
144 Hazado-481
                                --Empty slots have no name, quality, category etc
145 Hazado-481
                                BackpackContents[i].Name=0
146 Hazado-481
                                BackpackContents[i].Category=0
147 Hazado-481
                                BackpackContents[i].Durability=0
148 Hazado-481
                                BackpackContents[i].Quality=0
149 Hazado-481
                                BackpackContents[i].WearState=0
150 Hazado-481
                        else
151 Hazado-481
                                --Turbine.Shell.WriteLine(item:GetName());
152 Hazado-481
                                BackpackContents[i].Name=item:GetName()
153 Hazado-481
                                BackpackContents[i].Category=item:GetCategory()
154 Hazado-481
                                BackpackContents[i].Durability=item:GetDurability()
155 Hazado-481
                                BackpackContents[i].Quality=item:GetQuality()
156 Hazado-481
                                BackpackContents[i].WearState=item:GetWearState()
157 Hazado-481
                        end
158 Hazado-481
 
159 Hazado-481
                        --Calculate the weight
160 Hazado-481
                                local Weight = 0
161 Hazado-481
                                Weight=SearchTable(value,BackpackContents[i].Name)*100                                                  --First scan the Name using the value table
162 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!
163 Hazado-481
                                if item==nil then Weight = -100 end
164 Hazado-481
                        --Build a "virtual" backpack. This stores the weights etc and is sorted later before being copied to the real backpack
165 Hazado-481
                        VirtualBackpack[i]={Weight=Weight,id=i}
166 Hazado-481
                end
167 Hazado-481
 
168 Hazado-481
        --Sort VirtualBackpack by weight. This is a simple sort from http://www.lua.org/pil/6.html
169 Hazado-481
        table.sort(VirtualBackpack, function (a,b) return (a.Weight > b.Weight) end)
170 Hazado-481
        --
171 Hazado-481
        --Now, map the virtual backpack to the real backpack
172 Hazado-481
        for i = 1, size do
173 29 Hazado-481
                count=0
174 26 Hazado-481
                swop(i,VirtualBackpack[i].id)
175 7 Hazado-481
        end
176 Hazado-481
 
177 Hazado-481
        --Save a copy
178 Hazado-481
        Turbine.PluginData.Save( Turbine.DataScope.Character, "PackInfo",BackpackContents)
179 Hazado-481
end
180 Hazado-481
 
181 26 Hazado-481
function swop (i,j)
182 Hazado-481
                        local jitem=backpack:GetItem(j) --Source item
183 Hazado-481
                        local iitem=backpack:GetItem(i) --Target slot
184 7 Hazado-481
 
185 26 Hazado-481
                        if jitem~=nil then
186 Hazado-481
                                if iitem~=nil then
187 29 Hazado-481
                                        if jitem:GetName()~=iitem:GetName() then
188 26 Hazado-481
                                                --Turbine.Shell.WriteLine("Swopping  "..jitem:GetName().." does not equal "..iitem:GetName())
189 Hazado-481
                                                backpack:PerformItemDrop(jitem,i, false)
190 29 Hazado-481
                                                --backpack:PerformItemDrop(iitem,j,false)
191 26 Hazado-481
                                        end-- Perform the change ONLY IF THE ITEMS ARE NOT THE SAME.
192 Hazado-481
                                else
193 Hazado-481
                                        --Turbine.Shell.WriteLine("Swopping  "..jitem:GetName().." with blank slot")
194 29 Hazado-481
                                        backpack:PerformItemDrop(jitem,i, false) --iitem is empty - perform the placement!
195 26 Hazado-481
                                end
196 Hazado-481
                        end
197 Hazado-481
 
198 Hazado-481
end
199 Hazado-481
 
200 7 Hazado-481
Turbine.Shell.WriteLine("SortPack loaded - type /sort to run")

All times are GMT -5. The time now is 07:57 AM.


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