1local EnableSave = true
2local function onExhaustSave(timer)
3 if timer > 00 then
4 timer = timer - 01
5 addEvent(onExhaustSave, 1000, timer)
6 else
7 EnableSave = true
8 end
9end
10function onSay(player, words, param)
11 local split = param:splitTrimmed(" ")
12 local FORM_PAY = tonumber(split[01])
13 local CATEGORY = tonumber(split[02])
14 local INDEX = tonumber(split[03])
15 if CATEGORY == 10 then -- KARDS (sistema removido)
16
17 return false
18 end
19 local SALDO_VIP = PlayerVipCoins(player, 00)
20 local SALDO_ONLINE = player:getStorageValue(_SYSTEM.ONLINE_COIN)
21 local SALDO_PVP = player:getStorageValue(_SYSTEM.PVP_POINTS)
22 local playerGuid = player:getGuid()
23
24 local PRICE_ITEM = 00
25 if _DEBUG_MODE then
26 print("[TALK - SHOP] " ..player:getName().. " - Comprou: " .._SHOP_PRODUCTS[CATEGORY][INDEX].NAME)
27 end
28 if _SHOP_PRODUCTS[CATEGORY][INDEX].PREMIUM then
29 if not player:isPremium() then
30 player:getPosition():sendMagicEffect(CONST_ME_POFF)
31
32 return false
33 end
34 end
35 if FORM_PAY == 03 then
36 if _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.PROMO_PRICE > 00 then
37 if SALDO_VIP < _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.PROMO_PRICE then
38 player:getPosition():sendMagicEffect(CONST_ME_POFF)
39
40 return false
41 else
42 PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.PROMO_PRICE
43 end
44 else
45 if SALDO_VIP < _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.ORIGIN_PRICE then
46 player:getPosition():sendMagicEffect(CONST_ME_POFF)
47
48 return false
49 else
50 PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.ORIGIN_PRICE
51 end
52 end
53 elseif FORM_PAY == 02 then
54 if _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.VISIBLE then
55 if _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.PROMO_PRICE > 00 then
56 if SALDO_ONLINE < _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.PROMO_PRICE then
57 player:getPosition():sendMagicEffect(CONST_ME_POFF)
58
59 return false
60 else
61 PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.PROMO_PRICE
62 end
63 else
64 if SALDO_ONLINE < _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.ORIGIN_PRICE then
65 player:getPosition():sendMagicEffect(CONST_ME_POFF)
66
67 return false
68 else
69 PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.ORIGIN_PRICE
70 end
71 end
72 else
73
74
75 return false
76 end
77 else
78 if _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.VISIBLE then
79 if _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.PROMO_PRICE > 00 then
80 if SALDO_PVP < _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.PROMO_PRICE then
81 player:getPosition():sendMagicEffect(CONST_ME_POFF)
82
83 return false
84 else
85 PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.PROMO_PRICE
86 end
87 else
88 if SALDO_PVP < _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.ORIGIN_PRICE then
89 player:getPosition():sendMagicEffect(CONST_ME_POFF)
90
91 return false
92 else
93 PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.ORIGIN_PRICE
94 end
95 end
96 else
97
98
99 return false
100 end
101 end
102
103 if CATEGORY == 01 then -- PREMIUM TIME
104 player:addPremiumDays(_SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01])
105 player:setStorageValue(_SYSTEM.PREMIUM_TIME, 01)
106
107 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
108 end
109
110 local BUY_INFO = {
111 [10450] = {01, 500};
112 [10451] = {01, 500};
113 [10452] = {01, 500};
114 [10453] = {01, 500};
115 [10454] = {01, 500};
116 [10455] = {02, 100};
117 [10456] = {02, 100};
118 [10457] = {02, 100};
119 [10458] = {02, 100};
120 [10459] = {02, 100};
121 [11100] = {03, 001};
122 [11101] = {03, 001};
123 [11102] = {03, 001};
124 [11103] = {03, 001};
125 [11104] = {03, 001};
126 [11105] = {03, 001};
127 [11106] = {03, 001};
128 [11107] = {03, 001};
129 [11108] = {03, 001};
130 [11109] = {03, 001};
131 [11110] = {03, 001};
132 }
133 local ID_AMMO = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01]
134 local IDD = BUY_INFO[ID_AMMO][01]
135
136 if IDD == 01 then
137 local AMMO = BUY_INFO[ID_AMMO][02]
138 local itemid = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01)
139 local AtualAmmo = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10)
140 local itemRecLevel = 0
141 local MAX_AMMO = false
142
143 if AtualAmmo < 0 then AtualAmmo = 0 end
144
145 local AtrAmmo = player:getStorageValue(_SYSTEM.TASK[00].RANK)
146 if AtrAmmo < 00 then AtrAmmo = 01 end
147 AtrAmmo = AtrAmmo * 500
148 local LimitBullet = AtrAmmo
149 local ESTIMATIVA = AMMO + AtualAmmo
150 if ESTIMATIVA > 9999 then
151
152 return false
153 end
154 if itemid > 0 then
155 local lvl = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07)
156 local sta = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03)
157
158 if lvl < 0 then lvl = 0 end
159 if sta < 0 then sta = 0 end
160
161 itemRecLevel = math.floor((_ITEMS[itemid].MIN + lvl + (sta * 10)) / 3)
162 if itemid >= 4031 and itemid <= 4049 then
163 itemRecLevel = _ITEMS[itemid].MIN + lvl + (sta * 10) * 2
164 end
165
166 local LEVEL_AMMO = _ITEMS[ID_AMMO].SLOT_EQUIP
167 if ID_AMMO == 10454 then
168 if itemRecLevel >= LEVEL_AMMO then
169 if ESTIMATIVA > LimitBullet then
170 if AtualAmmo < (LimitBullet / 02) then
171 AMMO = LimitBullet
172 MAX_AMMO = true
173
174 else
175
176 return false
177 end
178 end
179 if MAX_AMMO then
180 player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, AMMO)
181 else
182 if player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) < 0 then AMMO = AMMO + 1 end
183 player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, (player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) + AMMO))
184 end
185
186
187 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
188 else
189
190 return false
191 end
192 else
193 if itemRecLevel <= LEVEL_AMMO then
194 if ESTIMATIVA > LimitBullet then
195 if AtualAmmo < (LimitBullet / 02) then
196 AMMO = LimitBullet
197 MAX_AMMO = true
198
199 else
200
201 return false
202 end
203 end
204 if MAX_AMMO then
205 player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, AMMO)
206 else
207 if player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) < 0 then AMMO = AMMO + 1 end
208 player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, (player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) + AMMO))
209 end
210
211
212 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
213 else
214
215 return false
216 end
217 end
218
219 player:sendCancelMessage("@LoadAmmo " ..player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10))
220 else
221
222 return false
223 end
224 elseif IDD == 02 then
225 local QNT = BUY_INFO[ID_AMMO][02]
226 local REC_LEVEL = _ITEMS[ID_AMMO].SLOT_EQUIP
227
228 local ESTIMATIVA = QNT + player:getStorageValue(_SYSTEM.SKILL_CURE[02])
229 if ESTIMATIVA > 9999 then
230
231 return false
232 end
233 if player:getLevel() >= REC_LEVEL then
234 local CURE_INFO = {
235 [10455] = 01;
236 [10456] = 02;
237 [10457] = 03;
238 [10458] = 04;
239 [10459] = 05;
240 }
241 local CURE_TYPE = CURE_INFO[ID_AMMO]
242 if player:getStorageValue(_SYSTEM.SKILL_CURE[02]) < 01 then
243 player:setStorageValue(_SYSTEM.SKILL_CURE[01], CURE_TYPE)
244 player:setStorageValue(_SYSTEM.SKILL_CURE[02], (player:getStorageValue(_SYSTEM.SKILL_CURE[02]) + QNT))
245 player:sendCancelMessage("@CureSkill " ..player:getStorageValue(_SYSTEM.SKILL_CURE[01]).. " " ..player:getStorageValue(_SYSTEM.SKILL_CURE[02]))
246
247
248 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
249 else
250 if player:getStorageValue(_SYSTEM.SKILL_CURE[01]) == CURE_TYPE then
251 player:setStorageValue(_SYSTEM.SKILL_CURE[02], (player:getStorageValue(_SYSTEM.SKILL_CURE[02]) + QNT))
252 player:sendCancelMessage("@CureSkill " ..player:getStorageValue(_SYSTEM.SKILL_CURE[01]).. " " ..player:getStorageValue(_SYSTEM.SKILL_CURE[02]))
253
254
255 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
256 else
257 player:setStorageValue(_SYSTEM.SKILL_CURE[01], CURE_TYPE)
258 player:setStorageValue(_SYSTEM.SKILL_CURE[02], QNT)
259 player:sendCancelMessage("@CureSkill " ..player:getStorageValue(_SYSTEM.SKILL_CURE[01]).. " " ..player:getStorageValue(_SYSTEM.SKILL_CURE[02]))
260
261
262 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
263 end
264 end
265 else
266
267 return false
268 end
269 else
270 local ITEMID = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01]
271 local RARE = _ITEMS[ITEMID].RARE
272 if doBackpack(player, 00, 03, 00, 01) then
273 doBackpack(player, 03, 03, 00, 01, ITEMID) -- Procurar
274 if doBackpack(player, 01, 03, 00, 00, ITEMID, RARE, 00, AMMO) then
275
276 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
277 end
278 else
279 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua Backpack esta cheia.")
280 player:getPosition():sendMagicEffect(03)
281 return false
282 end
283 end
284 end
285 if CATEGORY == 03 then -- BUFFS
286 if player:getStorageValue(_GLOBAL_RANDOM.BUFFS[INDEX].STORAGE) > 00 then
287 player:getPosition():sendMagicEffect(CONST_ME_POFF)
288
289 return false
290 else
291 player:setStorageValue(_GLOBAL_RANDOM.BUFFS[INDEX].STORAGE, 3600)
292
293 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Buff Ativado: [ " .._SHOP_PRODUCTS[CATEGORY][INDEX].NAME.. " ].")
294 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
295
296 doInventario(player, 05)
297 end
298 end
299
300 if INDEX == 01 then -- TROCA DE SEXO
301 player:setSex(player:getSex() == 1 and 0 or 1)
302 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Troca realizada com sucesso.\nDeslogue para aplicar o efeito ou mude seu Outfit.')
303 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
304 player:save()
305 elseif INDEX == 02 then -- TROCA DE NOME
306 player:sendCancelMessage("@OpenChangeName")
307 return false
308 elseif INDEX == 03 then -- BLESSING
309 if player:getStorageValue(_SYSTEM.PENALIDADES[02]) >= 30 then
310
311 player:getPosition():sendMagicEffect(03)
312 return false
313 else
314 player:setStorageValue(_SYSTEM.PENALIDADES[02], 30)
315
316 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
317 end
318 else
319 local MAESTRIA_NAME = {
320 [04] = {M = 01, N = "REGEN", V = 02};
321 [05] = {M = 02, N = "TANKER", V = 03};
322 [06] = {M = 03, N = "SHOOTER", V = 04};
323 [07] = {M = 04, N = "VITAL", V = 05};
324 [08] = {M = 05, N = "LUCKY", V = 06};
325 }
326 if player:getStorageValue(_SYSTEM.MAESTRIA[01]) > 00 then
327 if player:getStorageValue(_SYSTEM.MAESTRIA[01]) ~= MAESTRIA_NAME[INDEX].M then
328 player:setStorageValue(_SYSTEM.MAESTRIA[01], MAESTRIA_NAME[INDEX].M)
329
330
331 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
332 else
333
334 player:getPosition():sendMagicEffect(03)
335 return false
336 end
337 else
338
339 player:getPosition():sendMagicEffect(03)
340 return false
341 end
342 end
343 end
344 if CATEGORY == 05 then -- ESPECIAIS
345 if INDEX == 01 then -- ARMA (SLOT 01)
346 local SLOT = 04
347 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then
348 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_04) > 0 then
349 if doBackpack(player, 00, 03, 00, 01) then
350 local ITEM_ID = _SPELLS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_04)].ITEMID
351 local RARE = _ITEMS[ITEM_ID].RARE
352 local STAR = 00
353 doBackpack(player, 03, 03, 00, 00, ITEM_ID) -- Procurar
354 doBackpack(player, 01, 03, 00, 00, ITEM_ID, RARE, STAR, 01)
355 player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_04, nil)
356
357 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O primeiro slot de sua arma foi resetado e sua Skill recuperada.")
358 doInventario(player, 00, SLOT, 00)
359 player:sendCancelMessage("@StarCliente")
360 player:getPosition():sendMagicEffect(14)
361 else
362
363 player:getPosition():sendMagicEffect(03)
364 return false
365 end
366 else
367
368 player:getPosition():sendMagicEffect(03)
369 return false
370 end
371 else
372
373 player:getPosition():sendMagicEffect(03)
374 return false
375 end
376 elseif INDEX == 02 then -- ARMA (SLOT 02)
377 local SLOT = 04
378 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then
379 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_05) > 0 then
380 if doBackpack(player, 00, 03, 00, 01) then
381 local ITEM_ID = _SPELLS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_05)].ITEMID
382 local RARE = _ITEMS[ITEM_ID].RARE
383 local STAR = 00
384 doBackpack(player, 03, 03, 00, 00, ITEM_ID) -- Procurar
385 doBackpack(player, 01, 03, 00, 00, ITEM_ID, RARE, STAR, 01)
386 player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_05, nil)
387
388 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O segundo slot de sua arma foi resetado e sua Skill recuperada.")
389 doInventario(player, 00, SLOT, 00)
390 player:sendCancelMessage("@StarCliente")
391 player:getPosition():sendMagicEffect(14)
392 else
393
394 player:getPosition():sendMagicEffect(03)
395 return false
396 end
397 else
398
399 player:getPosition():sendMagicEffect(03)
400 return false
401 end
402 else
403
404 player:getPosition():sendMagicEffect(03)
405 return false
406 end
407 elseif INDEX == 03 then -- ARMA (SLOT 03)
408 local SLOT = 04
409 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then
410 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06) > 0 then
411 if doBackpack(player, 00, 03, 00, 01) then
412 local ITEM_ID = _SPELLS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06)].ITEMID
413 local RARE = _ITEMS[ITEM_ID].RARE
414 local STAR = 00
415 doBackpack(player, 03, 03, 00, 00, ITEM_ID) -- Procurar
416 doBackpack(player, 01, 03, 00, 00, ITEM_ID, RARE, STAR, 01)
417 player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06, nil)
418
419 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O segundo slot de sua arma foi resetado e sua Skill recuperada.")
420 doInventario(player, 00, SLOT, 00)
421 player:sendCancelMessage("@StarCliente")
422 player:getPosition():sendMagicEffect(14)
423 else
424
425 player:getPosition():sendMagicEffect(03)
426 return false
427 end
428 else
429
430 player:getPosition():sendMagicEffect(03)
431 return false
432 end
433 else
434
435 player:getPosition():sendMagicEffect(03)
436 return false
437 end
438 elseif INDEX > 13 then -- RESET STATUS
439 if Tile(player:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE) then
440 if INDEX == 14 then -- COMPLETO
441 player:setStorageValue(_SYSTEM.POINTS_ATR[01], 00)
442 player:setStorageValue(_SYSTEM.POINTS_ATR[02], 00)
443 player:setStorageValue(_SYSTEM.POINTS_ATR[03], 00)
444 player:setStorageValue(_SYSTEM.POINTS_ATR[04], 00)
445 player:setStorageValue(_SYSTEM.POINTS_ATR[05], 00)
446 player:setStorageValue(_SYSTEM.POINTS_ATR[06], 00)
447
448 PlayerPassives(player, 03)
449 player:setStorageValue(_SYSTEM.POINTS_ATR[07], player:getLevel())
450
451 player:getPosition():sendMagicEffect(13)
452 end
453 else
454 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Precisa estar em Protection Zone (PZ).")
455 player:getPosition():sendMagicEffect(03)
456 return false
457 end
458 elseif INDEX > 03 then
459 local SLOT = 00
460 local SLOT_POS = 00
461 local itemName = ""
462 if INDEX == 04 then
463 SLOT = 02
464 SLOT_POS = 01
465 itemName = "seu helmet"
466 elseif INDEX == 05 then
467 SLOT = 02
468 SLOT_POS = 02
469 itemName = "seu helmet"
470 elseif INDEX == 06 then
471 SLOT = 05
472 SLOT_POS = 01
473 itemName = "sua armadura"
474 elseif INDEX == 07 then
475 SLOT = 05
476 SLOT_POS = 02
477 itemName = "sua armadura"
478 elseif INDEX == 08 then
479 SLOT = 06
480 SLOT_POS = 01
481 itemName = "sua glover"
482 elseif INDEX == 09 then
483 SLOT = 06
484 SLOT_POS = 02
485 itemName = "sua glover"
486 elseif INDEX == 10 then
487 SLOT = 08
488 SLOT_POS = 01
489 itemName = "sua legs"
490 elseif INDEX == 11 then
491 SLOT = 08
492 SLOT_POS = 02
493 itemName = "sua legs"
494 elseif INDEX == 12 then
495 SLOT = 09
496 SLOT_POS = 01
497 itemName = "sua boots"
498 elseif INDEX == 13 then
499 SLOT = 09
500 SLOT_POS = 02
501 itemName = "sua boots"
502 end
503 if SLOT_POS == 01 then
504 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then
505 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06) > 0 then
506 if doBackpack(player, 00, 03, 00, 01) then
507 local ITEM_ID = _ATRIBUTOS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06)].PRICE
508 local RARE = 00
509 local STAR = 00
510 doBackpack(player, 03, 03, 00, 01, ITEM_ID) -- Procurar
511 doBackpack(player, 01, 03, 00, 00, ITEM_ID, RARE, STAR, 01)
512
513 player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06, nil)
514 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O primeiro slot de " ..itemName.. " foi resetado.")
515 doInventario(player, 00, SLOT, 00)
516 player:sendCancelMessage("@LoadTooltipInv")
517 player:getPosition():sendMagicEffect(14)
518 else
519
520 player:getPosition():sendMagicEffect(03)
521 return false
522 end
523 else
524
525 player:getPosition():sendMagicEffect(03)
526 return false
527 end
528 else
529
530 player:getPosition():sendMagicEffect(03)
531 return false
532 end
533 else
534 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then
535 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_07) > 0 then
536 if doBackpack(player, 00, 03, 00, 01) then
537 local ITEM_ID = _ATRIBUTOS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_07)].PRICE
538 local RARE = 00
539 local STAR = 00
540 doBackpack(player, 03, 03, 00, 01, ITEM_ID) -- Procurar
541 doBackpack(player, 01, 03, 00, 0, ITEM_ID, RARE, STAR, 01)
542
543 player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_07, nil)
544 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O segundo slot de " ..itemName.. " foi resetado.")
545 doInventario(player, 00, SLOT, 00)
546 player:sendCancelMessage("@LoadTooltipInv")
547 player:getPosition():sendMagicEffect(14)
548 else
549
550 player:getPosition():sendMagicEffect(03)
551 return false
552 end
553 else
554
555 player:getPosition():sendMagicEffect(03)
556 return false
557 end
558 else
559
560 player:getPosition():sendMagicEffect(03)
561 return false
562 end
563 end
564 end
565 end
566 if CATEGORY == 06 then -- FERRAMENTAS
567 local CHECK_TOOLS = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[02]
568 if player:getStorageValue(_SYSTEM.TOOLS[CHECK_TOOLS]) < 01 then
569 player:setStorageValue(_SYSTEM.TOOLS[CHECK_TOOLS], _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01])
570
571 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
572
573 player:sendCancelMessage("@TutorShow " .._SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[03])
574 player:sendCancelMessage("@ToolsLoad " ..player:getStorageValue(_SYSTEM.TOOLS[01]).. " " ..player:getStorageValue(_SYSTEM.TOOLS[02]))
575 else
576 player:getPosition():sendMagicEffect(CONST_ME_POFF)
577
578 return false
579 end
580 end
581 if CATEGORY == 07 then -- OUTFITS
582 local OUTFIT_HE = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01]
583 local OUTFIT_SHE = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[02]
584 if _SHOP_PRODUCTS[CATEGORY][INDEX].OUTFIT then
585 if player:hasOutfit(OUTFIT_HE, 03) or player:hasOutfit(OUTFIT_SHE, 03) then
586 player:getPosition():sendMagicEffect(CONST_ME_POFF)
587
588 return false
589 else
590 player:addOutfit(OUTFIT_HE, 1)
591 player:addOutfit(OUTFIT_SHE, 1)
592 player:addOutfitAddon(OUTFIT_HE, 3)
593 player:addOutfitAddon(OUTFIT_SHE, 3)
594
595 end
596 else
597 if player:hasOutfit(OUTFIT_HE, 00) or player:hasOutfit(OUTFIT_SHE, 00) then
598 player:addOutfitAddon(OUTFIT_HE, 3)
599 player:addOutfitAddon(OUTFIT_SHE, 3)
600
601 else
602 player:getPosition():sendMagicEffect(CONST_ME_POFF)
603
604 return false
605 end
606
607 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
608 end
609 end
610 if CATEGORY == 08 then -- MONTARIAS
611 local MOUNT_ID = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01]
612 if player:hasMount(MOUNT_ID) then
613 player:getPosition():sendMagicEffect(CONST_ME_POFF)
614
615 return false
616 else
617 player:addMount(MOUNT_ID)
618
619 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
620 end
621 end
622 if CATEGORY == 09 then -- BACKPACKS
623 local BACKPACK_ID = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01]
624 local Check = 0
625 for SearchBack = 01, #_SYSTEM.BACKPACKS do
626 if player:getStorageValue(_SYSTEM.BACKPACKS[SearchBack]) == BACKPACK_ID then
627 Check = 01
628 break
629 end
630 end
631 if Check == 00 then
632 local SlotVazio = 0
633 for EmptySlot = 01, #_SYSTEM.BACKPACKS do
634 if player:getStorageValue(_SYSTEM.BACKPACKS[EmptySlot]) < 01 then
635 SlotVazio = EmptySlot
636 Check = 01
637 break
638 end
639 end
640 if Check == 01 then
641 local back_rare = _ITEMS[BACKPACK_ID].RARE
642 player:setStorageValue(_SYSTEM.BACKPACKS[SlotVazio], BACKPACK_ID)
643
644 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
645
646 player:setStorageValue(_SYSTEM.INVENTARIO[03].UID_01, BACKPACK_ID)
647 player:setStorageValue(_SYSTEM.INVENTARIO[03].UID_02, back_rare)
648 player:sendCancelMessage("@EquipBackpack " ..BACKPACK_ID)
649 doInventario(player, 00)
650
651 for Back = 01, #_SYSTEM.BACKPACKS do
652 if player:getStorageValue(_SYSTEM.BACKPACKS[Back]) < 00 then
653 break
654 end
655
656 player:sendCancelMessage("@LoadBackpack " ..Back.. " " ..player:getStorageValue(_SYSTEM.BACKPACKS[Back]))
657 end
658 else
659
660 print("[SHOP] Erro ao comprar backpack. (Categoria: [" ..CATEGORY.. "] | Produto: [" ..INDEX.. "] | Erro: Backpack)")
661 return false
662 end
663 else
664
665 return false
666 end
667 end
668
669 if player:getStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01) < 3 then
670 if player:getStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01) < 0 then
671 player:setStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01, player:getStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01) + 2)
672 else
673 player:setStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01, player:getStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01) + 1)
674 end
675 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso.")
676 player:getPosition():sendMagicEffect(14)
677
678 local ExAmulet = player:getStorageValue(_SYSTEM.EXTENSION_BACK[001].UID_01)
679 local ExHelmet = player:getStorageValue(_SYSTEM.EXTENSION_BACK[002].UID_01)
680 local ExBackpack = player:getStorageValue(_SYSTEM.EXTENSION_BACK[003].UID_01)
681 local ExWeapon = player:getStorageValue(_SYSTEM.EXTENSION_BACK[004].UID_01)
682 local ExArmor = player:getStorageValue(_SYSTEM.EXTENSION_BACK[005].UID_01)
683 local ExGlove = player:getStorageValue(_SYSTEM.EXTENSION_BACK[006].UID_01)
684 local ExRing = player:getStorageValue(_SYSTEM.EXTENSION_BACK[007].UID_01)
685 local ExLegs = player:getStorageValue(_SYSTEM.EXTENSION_BACK[008].UID_01)
686 local ExBoots = player:getStorageValue(_SYSTEM.EXTENSION_BACK[009].UID_01)
687
688 player:sendCancelMessage("@reloadEx " ..ExAmulet.. " " ..ExHelmet.. " " ..ExBackpack.. " " ..ExWeapon.. " " ..ExArmor.. " " ..ExGlove.. " " ..ExRing.. " " ..ExLegs.. " " ..ExBoots)
689 player:sendCancelMessage("@ReloadBackpack " ..INDEX.. " 01 01")
690 else
691
692 player:getPosition():sendMagicEffect(03)
693 return false
694 end
695 end
696 if CATEGORY == 12 then -- WARZONE
697 if player:getStorageValue(_SYSTEM.SHOP_WARZONE) > 0 then
698
699 return false
700 end
701
702 player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX)
703 player:setStorageValue(_SYSTEM.WARZONE_TIMER, 1800)
704
705 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
706 end
707
708 player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX)
709 player:setStorageValue(_SYSTEM.WARZONE_TIMER, 1800)
710
711 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
712 end
713 if INDEX == 03 then -- MODO PUNITIVO
714 player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX)
715
716 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
717 end
718 if INDEX == 04 then -- DOUBLE EXP (01 HORA)
719 if player:getStorageValue(_SYSTEM.DOUBLE_EXP_ONE) < 02 then
720 if player:getStorageValue(_SYSTEM.DOUBLE_EXP_ONE) < 00 then
721 player:setStorageValue(_SYSTEM.DOUBLE_EXP_ONE, 01)
722 else
723 player:setStorageValue(_SYSTEM.DOUBLE_EXP_ONE, (player:getStorageValue(_SYSTEM.DOUBLE_EXP_ONE) + 01))
724 end
725
726 player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX)
727 player:setStorageValue(_SYSTEM.WARZONE_TIMER, 3600)
728
729 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
730 else
731
732 return false
733 end
734 end
735 if INDEX == 05 then -- DOUBLE GOLD (01 HORA)
736 player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX)
737 player:setStorageValue(_SYSTEM.WARZONE_TIMER, 3600)
738
739 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
740 end
741 if INDEX == 06 then -- DOUBLE POINTS (05 HORA)
742 player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX)
743 player:setStorageValue(_SYSTEM.WARZONE_TIMER, 18000)
744
745 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
746 end
747 if INDEX == 07 then -- REMOVEDOR DE SKULLS
748 local playerskull = player:getSkull()
749 local skulls = {
750 SKULL_NONE,
751 }
752 if isInArray(skulls, playerskull) then
753
754 return false
755 else
756 player:setSkull(skulls[1])
757 player:setSkullTime(0)
758 db.query("UPDATE player_deaths SET unjustified = 0 WHERE unjustified = 1 AND killed_by = " .. db.escapeString(player:getName()))
759 player:save()
760
761 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!")
762 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
763 end
764 end
765 if INDEX == 08 then -- CRIPTOMOEDA
766 if player:getStorageValue(_SYSTEM.CRIPTOMOEDA) < 00 then
767 player:setStorageValue(_SYSTEM.CRIPTOMOEDA, ((player:getStorageValue(_SYSTEM.CRIPTOMOEDA) + 01) + 01))
768 else
769 player:setStorageValue(_SYSTEM.CRIPTOMOEDA, (player:getStorageValue(_SYSTEM.CRIPTOMOEDA) + 01))
770 end
771
772 player:sendCancelMessage("@LootMSG 3297 4 3 1")
773 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!")
774 player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
775 end
776 end
777
778 if FORM_PAY == 03 then
779 PlayerVipCoins(player, 01, PRICE_ITEM)
780 elseif FORM_PAY == 02 then
781 player:setStorageValue(_SYSTEM.ONLINE_COIN, player:getStorageValue(_SYSTEM.ONLINE_COIN) - PRICE_ITEM)
782 else
783 player:setStorageValue(_SYSTEM.PVP_POINTS, player:getStorageValue(_SYSTEM.PVP_POINTS) - PRICE_ITEM)
784 end
785
786 if EnableSave then
787 player:save()
788 EnableSave = false
789 onExhaustSave(10)
790 end
791
792 db.query("INSERT INTO `coins_transactions` (`account_id`, `type`, `amount`, `description`) VALUES (" .. playerGuid .. ", " .. CATEGORY .. ", " .. INDEX.. ", 'Ok')")
793 player:getPosition():sendMagicEffect(13)
794 doBackpack(player, 11)
795 return false
796end