I need help again
The speed item funktion doesn't work.
If i make a item:
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
[408] = { 		name = "Wings V3[60]", 		r = 255, g = 255, b = 255, 		action = "ride", 		slot = 7, 		ground = true, 		water = true, 		fimage = "gfx/weiwen/fallenangelwings.png", 		eimage = "gfx/weiwen/fallenangelwings.png", 		speed = 75, <--- This don't work :/ 		level = 60, 		func = equip, 	},
Idk why this doesn't work
Here my funktion.lua(EQUIP)
Spoiler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
function eat(id, itemslot, itemid, equip) 	radiusmsg("©255000000" .. player(id,"name") .. " eats " .. ITEMS[itemid].article .. " " .. ITEMS[itemid].name .. ".", player(id,"x"), player(id,"y"), 384) 	local health = player(id, "health") + ITEMS[itemid].food() 	parse("sethealth " .. id .. " " .. health) 	PLAYERS[id].HP = health 	destroyitem(id, itemslot) end function explosion(x, y, size, damage, id) 	for _, m in ipairs(MONSTERS) do 		if math.sqrt((m.x-player(id,'x'))^2+(m.y-player(id,'y'))^2) <= size then 			m:damage(id, math.floor(damage*math.random(60,140)/100), 251) 		end 	end 	parse("explosion " .. x .. " " .. y .. " " .. size .. " " .. damage .. " " .. id) end function equip(id, itemslot, itemid, equip) 	local index = equip and "Equipment" or "Inventory" 	local previtems, newitems = {}, {} 	if equip then 		if not additem(id, itemid) then return end 		previtems[itemslot] = PLAYERS[id].Equipment[itemslot] or 0 		PLAYERS[id].Equipment[itemslot] = nil 		newitems[itemslot] = 0 	else 		if ITEMS[itemid].level and PLAYERS[id].Level < ITEMS[itemid].level then 			message(id, "You need to be level " .. ITEMS[itemid].level .. " or above to equip it.", "255000000") 			return 		end 		newitems[ITEMS[itemid].slot] = itemid 		if ITEMS[itemid].slot == 4 then 			if PLAYERS[id].Equipment[3] then 				if ITEMS[PLAYERS[id].Equipment[3]].twohand then 						if not additem(id, PLAYERS[id].Equipment[3]) then return end 						previtems[3] = PLAYERS[id].Equipment[3] or 0 						PLAYERS[id].Equipment[3] = nil 						newitems[3] = 0 				end 			end 		elseif ITEMS[itemid].slot == 3 then 			if ITEMS[itemid].twohand then 				if PLAYERS[id].Equipment[4] then 					if not additem(id, PLAYERS[id].Equipment[4]) then return end 					previtems[4] = PLAYERS[id].Equipment[4] or 0 					PLAYERS[id].Equipment[4] = nil 					newitems[4] = 0 				end 			end 		end 		destroyitem(id, itemslot) 		if PLAYERS[id].Equipment[ITEMS[itemid].slot] then 			previtems[ITEMS[itemid].slot] = PLAYERS[id].Equipment[ITEMS[itemid].slot] 			additem(id, PLAYERS[id].Equipment[ITEMS[itemid].slot]) 		else 			previtems[ITEMS[itemid].slot] = 0 		end 		PLAYERS[id].Equipment[ITEMS[itemid].slot] = itemid 	end 	updateEQ(id, newitems, previtems) end function updateEQ(id, newitems, previtems) 	if not previtems then 		previtems = {} 	end 	if not newitems then return end 	parse("equip " .. id .. " 50;setweapon " .. id .. " 50") 	local hp, spd, atk, def = 0, 0, 0, 0 	local equip, strip = playerweapons(id), {50, 41} 	for i, v in pairs(newitems) do 		if previtems[i] then 			if PLAYERS[id].tmp.equip[i].image then 				freeimage(PLAYERS[id].tmp.equip[i].image) 				PLAYERS[id].tmp.equip[i].image = nil 			end 			if PLAYERS[id].tmp.equip[i].equip then 				parse("strip " .. id .. " " .. PLAYERS[id].tmp.equip[i].equip) 				table.insert(strip, PLAYERS[id].tmp.equip[i].equip) 				PLAYERS[id].tmp.equip[i].equip = nil 			end 			if ITEMS[previtems[i]].hp then 				hp=hp-ITEMS[previtems[i]].hp 			end 			if ITEMS[previtems[i]].speed then 				spd=spd-ITEMS[previtems[i]].speed 			end 			if ITEMS[previtems[i]].atk then 				atk=atk-ITEMS[previtems[i]].atk 			end 			if ITEMS[previtems[i]].def then 				def=def-ITEMS[previtems[i]].def 			end 		end 		if newitems[i] ~= 0 then 			if ITEMS[newitems[i]].hp then 				hp=hp+ITEMS[newitems[i]].hp 			end 			if ITEMS[newitems[i]].speed then 				spd=spd+ITEMS[newitems[i]].speed 			end 			if ITEMS[newitems[i]].atk then 				atk=atk+ITEMS[newitems[i]].atk 			end 			if ITEMS[newitems[i]].def then 				def=def+ITEMS[newitems[i]].def 			end 			if ITEMS[newitems[i]].equip then 				PLAYERS[id].tmp.equip[i].equip = ITEMS[newitems[i]].equip 				parse("equip " .. id .. " " .. ITEMS[newitems[i]].equip) 				table.insert(equip, ITEMS[newitems[i]].equip) 			end 			if ITEMS[newitems[i]].eimage then 				if not PLAYERS[id].tmp.equip[i].image then 					PLAYERS[id].tmp.equip[i].image = image(ITEMS[newitems[i]].eimage, ITEMS[newitems[i]].static and 0 or 1, 0, (ITEMS[newitems[i]].ground and 100 or 200)+id) 					if ITEMS[newitems[i]].r then 						imagecolor(PLAYERS[id].tmp.equip[i].image, ITEMS[newitems[i]].r, ITEMS[newitems[i]].g, ITEMS[newitems[i]].b) 					end 					local scalex, scaley = ITEMS[newitems[i]].escalex or 1, ITEMS[newitems[i]].escaley or 1 					scalex = scalex * -1 					imagescale(PLAYERS[id].tmp.equip[i].image, scalex, scaley) 					if ITEMS[newitems[i]].blend then 						imageblend(PLAYERS[id].tmp.equip[i].image, ITEMS[newitems[i]].blend) 					end 				end 			end 		end 	end 	for i, v in ipairs(equip) do 		if not inarray(strip, v) then 			parse("setweapon " .. id .. " " .. v .. ";strip " .. id .. " 50") 		end 	end 	PLAYERS[id].tmp.atk = PLAYERS[id].tmp.atk+atk 	PLAYERS[id].tmp.def = PLAYERS[id].tmp.def+def 	PLAYERS[id].tmp.spd = PLAYERS[id].tmp.spd+spd 	PLAYERS[id].tmp.hp = PLAYERS[id].tmp.hp+hp 	parse("setmaxhealth " .. id .. " " .. PLAYERS[id].tmp.hp .. "; speedmod " .. id .. " " .. PLAYERS[id].tmp.spd .. "; sethealth " .. id .. " " .. player(id, "health")) end
funktion.lua (ITEMS)
Spoiler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
function clearinventory(id, slot) 	if slot then 		table.remove(PLAYERS[id].Inventory, slot) 	else 		PLAYERS[id].Inventory = {} 	end 	return true end function itemcount(id, itemid) 	local amount, items = 0, {} 	for k, v in ipairs(PLAYERS[id].Inventory) do 		if v == itemid then 			amount = amount + 1 			table.insert(items, k) 		end 	end 	return amount, items end function additem(id, itemid, amount, tell) 	if not ITEMS[itemid] or itemid == 0 then return false end 	amount = amount and math.floor(amount) or 1 	if amount == 1 then 		if #PLAYERS[id].Inventory < CONFIG.MAXITEMS then 			table.insert(PLAYERS[id].Inventory, itemid) 			if tell then 				message(id, "©255000000You have received " .. fullname(itemid) .. ".") 			end 			return true 		end 		return false 	else 		local added = 0 		while #PLAYERS[id].Inventory < CONFIG.MAXITEMS and added < amount do 			table.insert(PLAYERS[id].Inventory, itemid) 			added = added + 1 		end 		local remaining = amount - added 		local dropped = 0 		while dropped < remaining do 			spawnitem(itemid, PLAYERS[id].x, PLAYERS[id].y) 			dropped = dropped + 1 		end 		if tell then 			if remaining == 0 then 				message(id, "©255000000You have received " .. fullname(itemid, added) .. ".") 			else 				message(id, "©255000000You have received " .. fullname(itemid, added) .. ". " .. remaining .. " are dropped due to lack of space.") 			end 		end 		return true 	end end function removeitem(id, itemid, amount, tell) 	if not ITEMS[itemid] or itemid == 0 then return false end 	amount = amount and math.floor(amount) or 1 	local removed = 0 	local removed = 0 	local has, toremove = itemcount(id, itemid) 	if has >= amount then 		for k, v in ipairs(toremove) do 			if removed < amount then 				table.remove(PLAYERS[id].Inventory, v+1-k) 				removed = removed + 1 			end 			if removed == amount then 				if tell then 					message(id, "©255000000You have lost " .. fullname(itemid, amount) .. ".") 				end 				return true 			end 		end 	end 	return false end function destroyitem(id, itemslot, equip) 	if equip then 		PLAYERS[id].Equipment[itemslot] = nil 	else 		table.remove(PLAYERS[id].Inventory, itemslot) 	end 	return true end function spawnitem(itemid, x, y, amount) 	if not ITEMS[itemid] then return false end 	local ground = GROUNDITEMS[y][x] 	local tile = gettile(x, y) 	local height = #ground+1 	local x = ITEMS[itemid].offsetx and x*32+16+ITEMS[itemid].offsetx or x*32+16 	local y = ITEMS[itemid].offsety and y*32+16+ITEMS[itemid].offsety or y*32+16 	local heightoffset = math.min(height-1, 10)*3 	local item = {itemid} 	if itemid == 1337 then 		--[[ alternate money 			item[2] = image("gfx/weiwen/money.png", 0, 0, height > 3 and 1 or 0) 			item[3] = amount 			if amount > 9999 then 				imagecolor(item[2], 255, 255, 0) 			elseif amount > 999 then 				imagecolor(item[2], 255, 85, 0) 			elseif amount > 99 then 				imagecolor(item[2], 0, 128, 255) 			else 				imagecolor(item[2], 0, 150, 0) 			end 		]] 		item[3] = amount 		if amount < 5 then 			item[2] = image("gfx/weiwen/money/1.png", 0, 0, height > 3 and 1 or 0) 		elseif amount < 10 then 			item[2] = image("gfx/weiwen/money/2.png", 0, 0, height > 3 and 1 or 0) 		elseif amount < 20 then 			item[2] = image("gfx/weiwen/money/3.png", 0, 0, height > 3 and 1 or 0) 		elseif amount < 100 then 			item[2] = image("gfx/weiwen/money/4.png", 0, 0, height > 3 and 1 or 0) 		elseif amount < 500 then 			item[2] = image("gfx/weiwen/money/5.png", 0, 0, height > 3 and 1 or 0) 		elseif amount < 1000 then 			item[2] = image("gfx/weiwen/money/6.png", 0, 0, height > 3 and 1 or 0) 		elseif amount < 5000 then 			item[2] = image("gfx/weiwen/money/7.png", 0, 0, height > 3 and 1 or 0) 		elseif amount < 10000 then 			item[2] = image("gfx/weiwen/money/8.png", 0, 0, height > 3 and 1 or 0) 		elseif amount < 20000 then 			item[2] = image("gfx/weiwen/money/9.png", 0, 0, height > 3 and 1 or 0) 		else 			item[2] = image("gfx/weiwen/money/10.png", 0, 0, height > 3 and 1 or 0) 		end 	else 		item[2] = image(ITEMS[itemid].fimage or "gfx/weiwen/circle.png", 0, 0, height > 3 and 1 or 0) 		if ITEMS[itemid].r then 			imagecolor(item[2], ITEMS[itemid].r, ITEMS[itemid].g, ITEMS[itemid].b) 		end 		if ITEMS[itemid].heal then 			tile.HEAL = (tile.HEAL or 0) + ITEMS[itemid].heal 		end 	end 	imagepos(item[2], x - heightoffset, y - heightoffset, ITEMS[itemid].rot or 0) 	local scalex, scaley = ITEMS[itemid].fscalex or 1, ITEMS[itemid].fscaley or 1 	local magnification = math.min(height, 10)/20+0.95 	imagescale(item[2], scalex*magnification, scaley*magnification) 	ground[height] = item 	return true end function pickitem(id) 	local ground = GROUNDITEMS[PLAYERS[id].y][PLAYERS[id].x] 	local height = #ground 	if height > 0 then 		local item = ground[height] 		if item[1] == 1337 then 			freeimage(item[2]) 			addmoney(id, item[3]) 			message(id, "You have picked up $" .. item[3] .. ".", "255000000") 			GROUNDITEMS[PLAYERS[id].y][PLAYERS[id].x][height] = nil 		elseif additem(id, item[1]) then 			local tile = gettile(PLAYERS[id].x, PLAYERS[id].y) 			if tile.HEAL and ITEMS[item[1]].heal then 				tile.HEAL = tile.HEAL - ITEMS[item[1]].heal 				if tile.HEAL == 0 then 					tile.HEAL = nil 				end 			end 			freeimage(item[2]) 			message(id, "You have picked up " .. fullname(item[1]) .. ".", "255000000") 			GROUNDITEMS[PLAYERS[id].y][PLAYERS[id].x][height] = nil 		end 	end 	return true end function dropitem(id, itemslot, equip) 	local removed = false 	local inv = (equip and PLAYERS[id].Equipment or PLAYERS[id].Inventory) 	if spawnitem(inv[itemslot], PLAYERS[id].x, PLAYERS[id].y) then 		message(id, "You have dropped " .. fullname(inv[itemslot]) .. ".", "255000000", "255000000") 		if equip then 			updateEQ(id, {[itemslot] = 0}, {[itemslot] = inv[itemslot]}) 			inv[itemslot] = nil 		else 			table.remove(inv, itemslot) 		end 	else 		message(id, "You may not drop something here.", "255000000", "255000000") 	end end function fullname(itemid, amount) 	if not amount or amount == 1 then 		return ITEMS[itemid].article .. " " .. ITEMS[itemid].name 	else 		return amount .. " " .. ITEMS[itemid].plural 	end end function inventory(id, page) 	page = page or 0 	local text = "Inventory" .. string.rep(" ", page) .. "," 	for i = page*5+1, (page+1)*5 do 		local name 		if ITEMS[PLAYERS[id].Inventory[i]] then 			name = ITEMS[PLAYERS[id].Inventory[i]].name 		else 			name = PLAYERS[id].Inventory[i] or "" 		end 		text = text .. name .. "|" .. i .. "," 	end 	text = text .. ',,Prev Page,Next Page|Page ' .. page+1 	menu(id, text) end function equipment(id) 	local text = "Equipment" 	for i, v in ipairs(CONFIG.SLOTS) do 		text = text .. "," .. (ITEMS[PLAYERS[id].Equipment[i] or 0].name or ("ITEM ID " .. PLAYERS[id].Equipment[i])) .. "|" .. v 	end 	menu(id, text) end function itemactions(id, itemslot, equip) 	local itemid 	local text = (equip and "Equip" or "Item") .. " Actions" .. string.rep(" ", itemslot-1) .. "," 	if equip then 		itemid = PLAYERS[id].Equipment[itemslot] or 0 	else 		itemid = PLAYERS[id].Inventory[itemslot] or 0 	end 	for i, v in ipairs(ITEMS[itemid].action) do 		text = text .. v .. "," 	end 	text = text .. string.rep(",", 7-#ITEMS[itemid].action) .. "Examine,Drop" 	menu(id, text) end