|
[/] [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.
|
|