[Tibia]Speed
3 replies



02.03.14 01:51:02 pm
Hello,
I need help again
The speed item funktion doesn't work.
If i make a item:
And i equip the wings i dont have speed,and no errors.
Idk why this doesn't work
Here my funktion.lua(EQUIP)
funktion.lua (ITEMS)
I need help again

The speed item funktion doesn't work.
If i make a item:
Code:
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,
},
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,
},
And i equip the wings i dont have speed,and no errors.
Idk why this doesn't work
Here my funktion.lua(EQUIP)
Spoiler 

Code:
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
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 

Code:
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
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
Its function , not funktion
This is a bug of your tibia, download another! His tibia was done wrong.


Banned again, how many accounts i will need create?

Just change this
To this
Code:
1
parse("setmaxhealth " .. id .. " " .. PLAYERS[id].tmp.hp .. "; speedmod " .. id .. " " .. PLAYERS[id].tmp.spd .. "; sethealth " .. id .. " " .. player(id, "health"))
To this
Code:
1
2
3
2
3
parse("setmaxhealth " .. id .. " " .. PLAYERS[id].tmp.hp);
parse("speedmod " .. id .. " " .. PLAYERS[id].tmp.spd);
parse("sethealth " .. id .. " " .. player(id, "health"))
parse("speedmod " .. id .. " " .. PLAYERS[id].tmp.spd);
parse("sethealth " .. id .. " " .. player(id, "health"))



