SHOW:
|
|
- or go back to the newest paste.
1 | - | local items = { -- множитель, название руды, забираем руду, dmg, отдаём слиток, dmg, название слитка, ore_dictionary |
1 | + | local items = { -- множитель, название руды, забираем руду, dmg, отдаём слиток, dmg, название слитка, ore_dictionary |
2 | - | {"2","Золотая руда","minecraft:gold_ore","0","minecraft:gold_ingot","0","Золотой слиток","ingotGold"}, |
2 | + | {"2","Золотая руда","minecraft:gold_ore","0","minecraft:gold_ingot","0","Золотой слиток","ingotGold"}, |
3 | - | {"2","Железная руда","minecraft:iron_ore","0","minecraft:iron_ingot","0","Железный слиток","ingotIron"}, |
3 | + | {"2","Железная руда","minecraft:iron_ore","0","minecraft:iron_ingot","0","Железный слиток","ingotIron"}, |
4 | - | {"2","IC2 Медная руда","IC2:blockOreCopper","0","IC2:itemIngot","0","Медный слиток","ingotCopper"}, |
4 | + | {"2","IC2 Медная руда","IC2:blockOreCopper","0","IC2:itemIngot","0","Медный слиток","ingotCopper"}, |
5 | - | {"2","IC2 Оловянная руда","IC2:blockOreTin","0","IC2:itemIngot","1","Оловяный слиток","ingotTin"}, |
5 | + | {"2","IC2 Оловянная руда","IC2:blockOreTin","0","IC2:itemIngot","1","Оловяный слиток","ingotTin"}, |
6 | - | {"10","Лазуритовая руда","minecraft:lapis_ore","0","minecraft:dye","4","Лазурит","dye"}, |
6 | + | {"10","Лазуритовая руда","minecraft:lapis_ore","0","minecraft:dye","4","Лазурит","dye"}, |
7 | - | {"5","Красная руда","minecraft:redstone_ore","0","minecraft:redstone","0","Красная пыль","dustRedstone"}, |
7 | + | {"5","Красная руда","minecraft:redstone_ore","0","minecraft:redstone","0","Красная пыль","dustRedstone"}, |
8 | - | {"4","Адская Оловянная руда","NetherOres:tile.netherores.ore.0","7","IC2:itemIngot","1","Оловянный слиток","ingotTin"}, |
8 | + | {"4","Адская Оловянная руда","NetherOres:tile.netherores.ore.0","7","IC2:itemIngot","1","Оловянный слиток","ingotTin"}, |
9 | - | {"4","Адская Медная Руда","NetherOres:tile.netherores.ore.0","6","IC2:itemIngot","0","Медный слиток","ingotCopper"}, |
9 | + | {"4","Адская Медная Руда","NetherOres:tile.netherores.ore.0","6","IC2:itemIngot","0","Медный слиток","ingotCopper"}, |
10 | - | } |
10 | + | } |
11 | - | |
11 | + | |
12 | - | local unicode = require("unicode") |
12 | + | local unicode = require("unicode") |
13 | - | local com = require("component") |
13 | + | local com = require("component") |
14 | - | local interface = com.isAvailable("me_interface") and com.me_interface or error("нет ме интерфейса") |
14 | + | local interface = com.isAvailable("me_interface") and com.me_interface or error("нет ме интерфейса") |
15 | - | local db = com.isAvailable("database") and com.database or error("нет базы данных") |
15 | + | local db = com.isAvailable("database") and com.database or error("нет базы данных") |
16 | - | local pim = com.isAvailable("pim") and com.pim or error("нет пима") |
16 | + | local pim = com.isAvailable("pim") and com.pim or error("нет пима") |
17 | - | local size = pim.getInventorySize() |
17 | + | local size = pim.getInventorySize() |
18 | - | local gpu = com.gpu |
18 | + | local gpu = com.gpu |
19 | - | local w, h = gpu.getResolution() |
19 | + | local w, h = gpu.getResolution() |
20 | - | local net_count,line_count = 0,0 |
20 | + | local net_count,line_count = 0,0 |
21 | - | local event=require("event") |
21 | + | local event=require("event") |
22 | - | local function declension(number) |
22 | + | local function declension(number) |
23 | - | local dec = "" |
23 | + | local dec = "" |
24 | - | local rest = number % 10 |
24 | + | local rest = number % 10 |
25 | - | local str = string.sub(number,string.len(number)-1) |
25 | + | local str = string.sub(number,string.len(number)-1) |
26 | - | if str == "11" or str == "12" or str == "13" or str == "14" then |
26 | + | if str == "11" or str == "12" or str == "13" or str == "14" then |
27 | - | dec = " слитков" |
27 | + | dec = " слитков" |
28 | - | elseif rest == 1 then |
28 | + | elseif rest == 1 then |
29 | - | dec = " слиток" |
29 | + | dec = " слиток" |
30 | - | elseif rest == 2 or rest == 3 or rest == 4 then |
30 | + | elseif rest == 2 or rest == 3 or rest == 4 then |
31 | - | dec = " слитка" |
31 | + | dec = " слитка" |
32 | - | else |
32 | + | else |
33 | - | dec = " слитков" |
33 | + | dec = " слитков" |
34 | - | end |
34 | + | end |
35 | - | return number..dec |
35 | + | return number..dec |
36 | end | |
37 | - | |
37 | + | |
38 | - | local function center(coord,text,color) |
38 | + | local function center(coord,text,color) |
39 | - | gpu.setForeground(color) |
39 | + | gpu.setForeground(color) |
40 | - | gpu.set(math.floor(w/2-unicode.len(text)/2),coord,text) |
40 | + | gpu.set(math.floor(w/2-unicode.len(text)/2),coord,text) |
41 | end | |
42 | - | |
42 | + | |
43 | - | local function color_text(w,line,text,color) |
43 | + | local function color_text(w,line,text,color) |
44 | - | gpu.setForeground(color) |
44 | + | gpu.setForeground(color) |
45 | - | gpu.set(w,line,text) |
45 | + | gpu.set(w,line,text) |
46 | end | |
47 | - | |
47 | + | |
48 | - | local function print_items() |
48 | + | local function print_items() |
49 | - | local line,size,fill = 3,0,true |
49 | + | local line,size,fill = 3,0,true |
50 | - | local network = interface.getItemsInNetwork() |
50 | + | local network = interface.getItemsInNetwork() |
51 | - | for ind = 1,#items do |
51 | + | for ind = 1,#items do |
52 | - | for net = 1,#network do |
52 | + | for net = 1,#network do |
53 | - | if network[net].name == items[ind][5] then |
53 | + | if network[net].name == items[ind][5] then |
54 | - | if network[net].damage == tonumber(items[ind][6]) then |
54 | + | if network[net].damage == tonumber(items[ind][6]) then |
55 | - | if network[net].size >= tonumber(items[ind][1]) then |
55 | + | if network[net].size >= tonumber(items[ind][1]) then |
56 | - | if #network ~= net_count then |
56 | + | if #network ~= net_count then |
57 | - | if fill then |
57 | + | if fill then |
58 | - | gpu.fill(1,1,w,h," ") |
58 | + | gpu.fill(1,1,w,h," ") |
59 | - | fill = not fill |
59 | + | fill = not fill |
60 | - | end |
60 | + | end |
61 | - | color_text(5,line,items[ind][2],0x00FF00) |
61 | + | color_text(5,line,items[ind][2],0x00FF00) |
62 | - | color_text(28,line,"1",0xFF00FF) |
62 | + | color_text(28,line,"1",0xFF00FF) |
63 | - | color_text(30,line,"-->",0xFFFF00) |
63 | + | color_text(30,line,"-->",0xFFFF00) |
64 | - | color_text(34,line,"X "..items[ind][1],0xFF00FF) |
64 | + | color_text(34,line,"X "..items[ind][1],0xFF00FF) |
65 | - | color_text(42,line,items[ind][7],0x00FF00) |
65 | + | color_text(42,line,items[ind][7],0x00FF00) |
66 | - | color_text(63,line,"доступно",0xFFFF00) |
66 | + | color_text(63,line,"доступно",0xFFFF00) |
67 | - | color_text(73,line,tostring(network[net].size),0xFF00FF) |
67 | + | color_text(73,line,tostring(network[net].size),0xFF00FF) |
68 | - | color_text(3,line+1,string.rep("─",76),0xFFFFFF) |
68 | + | color_text(3,line+1,string.rep("─",76),0xFFFFFF) |
69 | - | size = size + network[net].size |
69 | + | size = size + network[net].size |
70 | - | else |
70 | + | else |
71 | - | size = size + network[net].size |
71 | + | size = size + network[net].size |
72 | - | color_text(73,line,tostring(network[net].size.." "),0xFF00FF) |
72 | + | color_text(73,line,tostring(network[net].size.." "),0xFF00FF) |
73 | - | end |
73 | + | end |
74 | - | line = line + 2 |
74 | + | line = line + 2 |
75 | - | end |
75 | + | end |
76 | - | end |
76 | + | end |
77 | - | end |
77 | + | end |
78 | - | end |
78 | + | end |
79 | - | end |
79 | + | end |
80 | - | net_count = #network |
80 | + | net_count = #network |
81 | - | if line == 3 or line ~= line_count then |
81 | + | if line == 3 or line ~= line_count then |
82 | - | net_count = 0 |
82 | + | net_count = 0 |
83 | - | end |
83 | + | end |
84 | - | line_count = line |
84 | + | line_count = line |
85 | - | gpu.fill(1,1,w,1," ") |
85 | + | gpu.fill(1,1,w,1," ") |
86 | - | if size > 0 then |
86 | + | if size > 0 then |
87 | - | center(1,"обмен руды, всего доступно "..declension(size),0xFFFF00) |
87 | + | center(1,"обмен руды, всего доступно "..declension(size),0xFFFF00) |
88 | - | else |
88 | + | else |
89 | - | gpu.fill(1,1,w,h," ") |
89 | + | gpu.fill(1,1,w,h," ") |
90 | - | center(h/2,"ВСЕ ИДИТЕ НАХУЙ, ХУЙ ВАМ А НЕ ОБМЕНИК .!. ",0xFF1493) |
90 | + | center(h/2,"ВСЕ ИДИТЕ НАХУЙ, ХУЙ ВАМ А НЕ ОБМЕНИК .!. ",0xFF1493) |
91 | - | end |
91 | + | end |
92 | end | |
93 | - | |
93 | + | |
94 | - | local function pushItem(name,count,label) |
94 | + | local function pushItem(name,count,label) |
95 | - | db.clear(1) |
95 | + | db.clear(1) |
96 | - | interface.store(name,db.address,1) |
96 | + | interface.store(name,db.address,1) |
97 | - | interface.setInterfaceConfiguration(1,db.address,1,64) |
97 | + | interface.setInterfaceConfiguration(1,db.address,1,64) |
98 | - | local drop = 0 |
98 | + | local drop = 0 |
99 | - | while true do |
99 | + | while true do |
100 | - | if drop == count then |
100 | + | if drop == count then |
101 | - | interface.setInterfaceConfiguration(1,db.address,1,0) |
101 | + | interface.setInterfaceConfiguration(1,db.address,1,0) |
102 | - | net_count = 0 |
102 | + | net_count = 0 |
103 | - | break |
103 | + | break |
104 | - | else |
104 | + | else |
105 | - | local dropcount = interface.pushItem("UP",1,count-drop) |
105 | + | local dropcount = interface.pushItem("UP",1,count-drop) |
106 | - | drop = drop + dropcount |
106 | + | drop = drop + dropcount |
107 | - | if dropcount == 0 then |
107 | + | if dropcount == 0 then |
108 | - | gpu.fill(1,1,w,h," ") |
108 | + | gpu.fill(1,1,w,h," ") |
109 | - | center(h/2,"освободите место в инвентаре",0xFF0000) |
109 | + | center(h/2,"освободите место в инвентаре",0xFF0000) |
110 | - | center(h/2+2,"Ожидаю выдать "..label,0xFFFFFF) |
110 | + | center(h/2+2,"Ожидаю выдать "..label,0xFFFFFF) |
111 | - | center(h/2+4,"всего "..count-drop,0xFFFFFF) |
111 | + | center(h/2+4,"всего "..count-drop,0xFFFFFF) |
112 | - | os.sleep(1) |
112 | + | os.sleep(1) |
113 | - | end |
113 | + | end |
114 | - | end |
114 | + | end |
115 | - | end |
115 | + | end |
116 | end | |
117 | - | |
117 | + | |
118 | - | local function exchange_ore_dict() |
118 | + | local function exchange_ore_dict() |
119 | - | gpu.fill(1,h/2+2,w,1,' ') |
119 | + | gpu.fill(1,h/2+2,w,1,' ') |
120 | - | center(h/2+2,"Для обмена встаньте на PIM и не сходите до окончания обмена", 0xffffff) |
120 | + | center(h/2+2,"Для обмена встаньте на PIM и не сходите до окончания обмена", 0xffffff) |
121 | - | local nick = nil |
121 | + | local nick = nil |
122 | - | e, nick, uuid, adr = event.pull(5,'player_on') |
122 | + | e, nick, uuid, adr = event.pull(5,'player_on') |
123 | - | if nick==nil then |
123 | + | if nick==nil then |
124 | - | return |
124 | + | return |
125 | - | end |
125 | + | end |
126 | - | |
126 | + | |
127 | - | gpu.fill(1,h/2+2,w,1,' ') |
127 | + | gpu.fill(1,h/2+2,w,1,' ') |
128 | - | center(h/2+2,"Приветствую тебя, "..nick, 0xffffff) |
128 | + | center(h/2+2,"Приветствую тебя, "..nick, 0xffffff) |
129 | - | local ore_dict,item_count = "",false |
129 | + | local ore_dict,item_count = "",false |
130 | - | local size = pim.getInventorySize() |
130 | + | local size = pim.getInventorySize() |
131 | - | local data = pim.getAllStacks(0) |
131 | + | local data = pim.getAllStacks(0) |
132 | - | for slot =1, size do |
132 | + | for slot =1, size do |
133 | - | if data[slot] then |
133 | + | if data[slot] then |
134 | - | for ind = 1,#items do |
134 | + | for ind = 1,#items do |
135 | - | if data[slot].id == items[ind][3] then |
135 | + | if data[slot].id == items[ind][3] then |
136 | - | if data[slot].dmg == tonumber(items[ind][4]) then |
136 | + | if data[slot].dmg == tonumber(items[ind][4]) then |
137 | - | ore_dict = items[ind][3]..items[ind][4] |
137 | + | ore_dict = items[ind][3]..items[ind][4] |
138 | - | break |
138 | + | break |
139 | - | end |
139 | + | end |
140 | - | end |
140 | + | end |
141 | - | end |
141 | + | end |
142 | - | |
142 | + | |
143 | - | local network = interface.getItemsInNetwork() |
143 | + | local network = interface.getItemsInNetwork() |
144 | - | for ind2 = 1,#items do |
144 | + | for ind2 = 1,#items do |
145 | - | if ore_dict == items[ind2][3]..items[ind2][4] then |
145 | + | if ore_dict == items[ind2][3]..items[ind2][4] then |
146 | - | |
146 | + | |
147 | - | local ore = items[ind2][5] |
147 | + | local ore = items[ind2][5] |
148 | - | local dmg = items[ind2][6] |
148 | + | local dmg = items[ind2][6] |
149 | - | local ore_name = items[ind2][2] |
149 | + | local ore_name = items[ind2][2] |
150 | - | for net = 1,#network do |
150 | + | for net = 1,#network do |
151 | - | if network[net].name == ore then |
151 | + | if network[net].name == ore then |
152 | - | if network[net].damage == tonumber(dmg) then |
152 | + | if network[net].damage == tonumber(dmg) then |
153 | - | if network[net].size >= tonumber(items[ind2][1]) then |
153 | + | if network[net].size >= tonumber(items[ind2][1]) then |
154 | - | item_count = pim.pushItem("DOWN",slot,(network[net].size/items[ind2][1])) |
154 | + | item_count = pim.pushItem("DOWN",slot,(network[net].size/items[ind2][1])) |
155 | - | |
155 | + | |
156 | - | if item_count==nil then |
156 | + | if item_count==nil then |
157 | - | gpu.fill(1,1,w,1,' ') |
157 | + | gpu.fill(1,1,w,1,' ') |
158 | - | center(1,"Не удалось загрузить предмет, вы сошли с PIM. А вас просили не сходить...", 0xff0000) |
158 | + | center(1,"Не удалось загрузить предмет, вы сошли с PIM. А вас просили не сходить...", 0xff0000) |
159 | - | elseif item_count==0 then |
159 | + | elseif item_count==0 then |
160 | - | gpu.fill(1,1,w,1,' ') |
160 | + | gpu.fill(1,1,w,1,' ') |
161 | - | center(1,"Ошибка загрузки МЭ", 0xff0000) |
161 | + | center(1,"Ошибка загрузки МЭ", 0xff0000) |
162 | - | else |
162 | + | else |
163 | - | |
163 | + | |
164 | - | local drop_count = item_count*items[ind2][1] |
164 | + | local drop_count = item_count*items[ind2][1] |
165 | - | local ingot_name = items[ind2][7] |
165 | + | local ingot_name = items[ind2][7] |
166 | - | gpu.fill(1,1,w,1," ") |
166 | + | gpu.fill(1,1,w,1," ") |
167 | - | center(1,"Меняю "..item_count.." "..ore_name.." на "..drop_count.." "..ingot_name,0xFFFFFF) |
167 | + | center(1,"Меняю "..item_count.." "..ore_name.." на "..drop_count.." "..ingot_name,0xFFFFFF) |
168 | - | pushItem({name = ore,damage = tonumber(dmg)},drop_count,ingot_name) |
168 | + | pushItem({name = ore,damage = tonumber(dmg)},drop_count,ingot_name) |
169 | - | end |
169 | + | end |
170 | - | |
170 | + | |
171 | - | break |
171 | + | break |
172 | - | end |
172 | + | end |
173 | - | end |
173 | + | end |
174 | - | end |
174 | + | end |
175 | - | end |
175 | + | end |
176 | - | |
176 | + | |
177 | - | |
177 | + | |
178 | - | if item_count then |
178 | + | if item_count then |
179 | - | item_count = false |
179 | + | item_count = false |
180 | - | ore_dict = "" |
180 | + | ore_dict = "" |
181 | - | break |
181 | + | break |
182 | - | end |
182 | + | end |
183 | - | end |
183 | + | end |
184 | - | end |
184 | + | end |
185 | - | end |
185 | + | end |
186 | - | |
186 | + | |
187 | - | end |
187 | + | end |
188 | - | |
188 | + | |
189 | - | |
189 | + | |
190 | end | |
191 | - | |
191 | + | |
192 | - | gpu.fill(1,1,w,h," ") |
192 | + | gpu.fill(1,1,w,h," ") |
193 | - | gpu.setResolution(80,h) |
193 | + | gpu.setResolution(80,h) |
194 | - | w,h = gpu.getResolution() |
194 | + | w,h = gpu.getResolution() |
195 | - | while true do |
195 | + | while true do |
196 | - | print_items() |
196 | + | print_items() |
197 | - | exchange_ore_dict() |
197 | + | exchange_ore_dict() |
198 | - | os.sleep(0.5) |
198 | + | os.sleep(0.5) |
199 | end |