Asa@69
|
1 if not ArkInventoryRules then
|
Asa@69
|
2 return
|
Asa@69
|
3 end
|
Asa@69
|
4
|
Asa@69
|
5 local ItemAuditor = select(2, ...)
|
Asa@69
|
6 local ArkInventory = ItemAuditor:NewModule("ArkInventory")
|
Asa@69
|
7
|
Asa@69
|
8 function ArkInventory:OnEnable( )
|
Asa@69
|
9 ItemAuditor:Print('Registering with ArkInventory')
|
Asa@69
|
10 ArkInventoryRules.Register(self, "itemauditor", ArkInventory.Execute)
|
Asa@69
|
11 end
|
Asa@69
|
12
|
Asa@69
|
13 function ArkInventory.Execute( ... )
|
Asa@69
|
14
|
Asa@69
|
15 -- always check for the hyperlink and that it's an actual item, not a spell (pet/mount)
|
Asa@69
|
16 if not ArkInventoryRules.Item.h or ArkInventoryRules.Item.class ~= "item" then
|
Asa@69
|
17 return false
|
Asa@69
|
18 end
|
Asa@69
|
19
|
Asa@69
|
20 local fn = "test" -- your rule name, needs to be set so that error messages are readable
|
Asa@69
|
21
|
Asa@69
|
22 local ac = select( '#', ... )
|
Asa@69
|
23
|
Asa@69
|
24 -- if you need at least 1 argument, this is how you check, if you dont need or care then you can remove this part
|
Asa@69
|
25 if ac == 0 then
|
Asa@69
|
26 error( string.format( ArkInventory.Localise["RULE_FAILED_ARGUMENT_NONE_SPECIFIED"], fn ), 0 )
|
Asa@69
|
27 end
|
Asa@69
|
28
|
Asa@69
|
29 for ax = 1, ac do -- loop through the supplied ... arguments
|
Asa@69
|
30
|
Asa@69
|
31 local arg = select( ax, ... ) -- select the argument were going to work with
|
Asa@69
|
32
|
Asa@69
|
33 -- this code checks item quality, either as text or as a number
|
Asa@69
|
34 -- your best bet is to check the existing system rules to find one thats close to what you need an modify it to suit your needs
|
Asa@69
|
35 -- all you have to do is ensure that you return true (matched your criteria) or false (failed to match)
|
Asa@69
|
36
|
Asa@69
|
37 if type( arg ) == "string" then
|
Asa@69
|
38 local link = ArkInventoryRules.Item.h
|
Asa@69
|
39
|
Asa@69
|
40 local itemName = GetItemInfo(link)
|
Asa@69
|
41
|
Asa@69
|
42 if string.lower( strtrim( arg ) ) == 'profitable' then
|
Asa@69
|
43
|
Asa@69
|
44 local investedTotal, investedPerItem, count = ItemAuditor:GetItemCost(link)
|
Asa@69
|
45
|
Asa@69
|
46 if investedTotal > 0 then
|
Asa@69
|
47 local ap = ItemAuditor:GetAuctionPrice(link)
|
Asa@69
|
48 local keep = 1 - ItemAuditor:GetAHCut()
|
Asa@69
|
49
|
Asa@69
|
50 if ap ~= nil then
|
Asa@69
|
51
|
Asa@69
|
52 if ap > ceil(investedPerItem/keep) then
|
Asa@69
|
53 return true
|
Asa@69
|
54 end
|
Asa@69
|
55 end
|
Asa@69
|
56 end
|
Asa@69
|
57 return false
|
Asa@69
|
58 elseif string.lower( strtrim( arg ) ) == 'qa' then
|
Asa@69
|
59 if ItemAuditor:IsQAEnabled() then
|
Asa@69
|
60 local groupName = QAAPI:GetItemGroup(link)
|
Asa@69
|
61 if groupName then
|
Asa@69
|
62 return true
|
Asa@69
|
63 end
|
Asa@69
|
64 end
|
Asa@69
|
65 return false
|
Asa@69
|
66 end
|
Asa@69
|
67
|
Asa@69
|
68 else
|
Asa@69
|
69
|
Asa@69
|
70 error( string.format( ArkInventory.Localise["RULE_FAILED_ARGUMENT_IS_INVALID"], fn, ax, string.format( "%s or %s", ArkInventory.Localise["STRING"], ArkInventory.Localise["NUMBER"] ) ), 0 )
|
Asa@69
|
71
|
Asa@69
|
72 end
|
Asa@69
|
73
|
Asa@69
|
74 end
|
Asa@69
|
75
|
Asa@69
|
76 return false
|
Asa@69
|
77
|
Asa@69
|
78 end
|
Asa@69
|
79
|