local EnableSave = true local function onExhaustSave(timer) if timer > 00 then timer = timer - 01 addEvent(onExhaustSave, 1000, timer) else EnableSave = true end end function onSay(player, words, param) local split = param:splitTrimmed(" ") local FORM_PAY = tonumber(split[01]) local CATEGORY = tonumber(split[02]) local INDEX = tonumber(split[03]) if CATEGORY == 10 then -- KARDS (sistema removido) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Este produto está indisponível no momento.") return false end local SALDO_VIP = PlayerVipCoins(player, 00) local SALDO_ONLINE = player:getStorageValue(_SYSTEM.ONLINE_COIN) local SALDO_PVP = player:getStorageValue(_SYSTEM.PVP_POINTS) local playerGuid = player:getGuid() local PRICE_ITEM = 00 if _DEBUG_MODE then print("[TALK - SHOP] " ..player:getName().. " - Comprou: " .._SHOP_PRODUCTS[CATEGORY][INDEX].NAME) end if _SHOP_PRODUCTS[CATEGORY][INDEX].PREMIUM then if not player:isPremium() then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "É necessário Premium Account para comprar este item.") return false end end if FORM_PAY == 03 then if _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.PROMO_PRICE > 00 then if SALDO_VIP < _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.PROMO_PRICE then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você não tem Vip Coins Suficientes.") return false else PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.PROMO_PRICE end else if SALDO_VIP < _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.ORIGIN_PRICE then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você não tem Vip Coins Suficientes.") return false else PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].VIP.ORIGIN_PRICE end end elseif FORM_PAY == 02 then if _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.VISIBLE then if _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.PROMO_PRICE > 00 then if SALDO_ONLINE < _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.PROMO_PRICE then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você não tem Online Coins Suficientes.") return false else PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.PROMO_PRICE end else if SALDO_ONLINE < _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.ORIGIN_PRICE then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você não tem Online Coins Suficientes.") return false else PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].ONLINE.ORIGIN_PRICE end end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Produto indisponível no momento usando Online Coins.") print("[SHOP] Divergência de configuração com o cliente. (Categoria: [" ..CATEGORY.. "] | Produto: [" ..INDEX.. "] | Erro: Online Coins)") return false end else if _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.VISIBLE then if _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.PROMO_PRICE > 00 then if SALDO_PVP < _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.PROMO_PRICE then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você não tem PVP Coins Suficientes.") return false else PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.PROMO_PRICE end else if SALDO_PVP < _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.ORIGIN_PRICE then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você não tem PVP Coins Suficientes.") return false else PRICE_ITEM = _SHOP_PRODUCTS[CATEGORY][INDEX].PVP.ORIGIN_PRICE end end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Produto indisponível no momento usando PVP Coins.") print("[SHOP] Divergência de configuração com o cliente. (Categoria: [" ..CATEGORY.. "] | Produto: [" ..INDEX.. "] | Erro: PVP Coins)") return false end end if CATEGORY == 01 then -- PREMIUM TIME player:addPremiumDays(_SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01]) player:setStorageValue(_SYSTEM.PREMIUM_TIME, 01) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .._SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01].. " dias ] de Premium Account para sua conta.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end if CATEGORY == 02 then -- CONSUMÍVEIS local BUY_INFO = { [10450] = {01, 500}; [10451] = {01, 500}; [10452] = {01, 500}; [10453] = {01, 500}; [10454] = {01, 500}; [10455] = {02, 100}; [10456] = {02, 100}; [10457] = {02, 100}; [10458] = {02, 100}; [10459] = {02, 100}; [11100] = {03, 001}; [11101] = {03, 001}; [11102] = {03, 001}; [11103] = {03, 001}; [11104] = {03, 001}; [11105] = {03, 001}; [11106] = {03, 001}; [11107] = {03, 001}; [11108] = {03, 001}; [11109] = {03, 001}; [11110] = {03, 001}; } local ID_AMMO = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01] local IDD = BUY_INFO[ID_AMMO][01] if IDD == 01 then local AMMO = BUY_INFO[ID_AMMO][02] local itemid = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_01) local AtualAmmo = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) local itemRecLevel = 0 local MAX_AMMO = false if AtualAmmo < 0 then AtualAmmo = 0 end local AtrAmmo = player:getStorageValue(_SYSTEM.TASK[00].RANK) if AtrAmmo < 00 then AtrAmmo = 01 end AtrAmmo = AtrAmmo * 500 local LimitBullet = AtrAmmo local ESTIMATIVA = AMMO + AtualAmmo if ESTIMATIVA > 9999 then player:popupFYI("Você não pode ter mais de 9999 em estoque.") return false end if itemid > 0 then local lvl = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_07) local sta = player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_03) if lvl < 0 then lvl = 0 end if sta < 0 then sta = 0 end itemRecLevel = math.floor((_ITEMS[itemid].MIN + lvl + (sta * 10)) / 3) if itemid >= 4031 and itemid <= 4049 then itemRecLevel = _ITEMS[itemid].MIN + lvl + (sta * 10) * 2 end local LEVEL_AMMO = _ITEMS[ID_AMMO].SLOT_EQUIP if ID_AMMO == 10454 then if itemRecLevel >= LEVEL_AMMO then if ESTIMATIVA > LimitBullet then if AtualAmmo < (LimitBullet / 02) then AMMO = LimitBullet MAX_AMMO = true player:sendTextMessage(MESSAGE_EVENT_ORANGE, "Você só pode carregar " ..LimitBullet.. " balas em sua arma.") else player:popupFYI("Você só pode carregar " ..LimitBullet.. " balas em sua arma.\nAumente sua capacidade de balas na seção Status.") return false end end if MAX_AMMO then player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, AMMO) else if player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) < 0 then AMMO = AMMO + 1 end player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, (player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) + AMMO)) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " x" ..AMMO.. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) else player:popupFYI("Sua arma é muito fraca para equipar esse tipo de munição.") return false end else if itemRecLevel <= LEVEL_AMMO then if ESTIMATIVA > LimitBullet then if AtualAmmo < (LimitBullet / 02) then AMMO = LimitBullet MAX_AMMO = true player:sendTextMessage(MESSAGE_EVENT_ORANGE, "Você só pode carregar " ..LimitBullet.. " balas em sua arma.") else player:popupFYI("Você só pode carregar " ..LimitBullet.. " balas em sua arma.\nAumente sua capacidade de balas na seção Status.") return false end end if MAX_AMMO then player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, AMMO) else if player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) < 0 then AMMO = AMMO + 1 end player:setStorageValue(_SYSTEM.INVENTARIO[04].UID_10, (player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10) + AMMO)) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " x" ..AMMO.. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) else player:popupFYI("Sua arma equipada requer uma munição mais forte.") return false end end player:sendCancelMessage("@LoadAmmo " ..player:getStorageValue(_SYSTEM.INVENTARIO[04].UID_10)) else player:popupFYI("Você precisa ter uma arma equipada.") return false end elseif IDD == 02 then local QNT = BUY_INFO[ID_AMMO][02] local REC_LEVEL = _ITEMS[ID_AMMO].SLOT_EQUIP local ESTIMATIVA = QNT + player:getStorageValue(_SYSTEM.SKILL_CURE[02]) if ESTIMATIVA > 9999 then player:popupFYI("Você não pode ter mais de 9999 em estoque.") return false end if player:getLevel() >= REC_LEVEL then local CURE_INFO = { [10455] = 01; [10456] = 02; [10457] = 03; [10458] = 04; [10459] = 05; } local CURE_TYPE = CURE_INFO[ID_AMMO] if player:getStorageValue(_SYSTEM.SKILL_CURE[02]) < 01 then player:setStorageValue(_SYSTEM.SKILL_CURE[01], CURE_TYPE) player:setStorageValue(_SYSTEM.SKILL_CURE[02], (player:getStorageValue(_SYSTEM.SKILL_CURE[02]) + QNT)) player:sendCancelMessage("@CureSkill " ..player:getStorageValue(_SYSTEM.SKILL_CURE[01]).. " " ..player:getStorageValue(_SYSTEM.SKILL_CURE[02])) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " x" ..QNT.. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) else if player:getStorageValue(_SYSTEM.SKILL_CURE[01]) == CURE_TYPE then player:setStorageValue(_SYSTEM.SKILL_CURE[02], (player:getStorageValue(_SYSTEM.SKILL_CURE[02]) + QNT)) player:sendCancelMessage("@CureSkill " ..player:getStorageValue(_SYSTEM.SKILL_CURE[01]).. " " ..player:getStorageValue(_SYSTEM.SKILL_CURE[02])) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " x" ..QNT.. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) else player:setStorageValue(_SYSTEM.SKILL_CURE[01], CURE_TYPE) player:setStorageValue(_SYSTEM.SKILL_CURE[02], QNT) player:sendCancelMessage("@CureSkill " ..player:getStorageValue(_SYSTEM.SKILL_CURE[01]).. " " ..player:getStorageValue(_SYSTEM.SKILL_CURE[02])) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " x" ..QNT.. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end end else player:popupFYI("Você não possui nível suficiente para usar essa potion.") return false end else local ITEMID = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01] local RARE = _ITEMS[ITEMID].RARE if doBackpack(player, 00, 03, 00, 01) then doBackpack(player, 03, 03, 00, 01, ITEMID) -- Procurar if doBackpack(player, 01, 03, 00, 00, ITEMID, RARE, 00, AMMO) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .._SHOP_PRODUCTS[CATEGORY][INDEX].NAME.. ", x1 ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua Backpack esta cheia.") player:getPosition():sendMagicEffect(03) return false end end end if CATEGORY == 03 then -- BUFFS if player:getStorageValue(_GLOBAL_RANDOM.BUFFS[INDEX].STORAGE) > 00 then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já possui este buff ativo em seu personagem.") return false else player:setStorageValue(_GLOBAL_RANDOM.BUFFS[INDEX].STORAGE, 3600) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .._SHOP_PRODUCTS[CATEGORY][INDEX].NAME.. " ].") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Buff Ativado: [ " .._SHOP_PRODUCTS[CATEGORY][INDEX].NAME.. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) doInventario(player, 05) end end if CATEGORY == 04 then -- SERVIÇOS if INDEX == 01 then -- TROCA DE SEXO player:setSex(player:getSex() == 1 and 0 or 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Troca realizada com sucesso.\nDeslogue para aplicar o efeito ou mude seu Outfit.') player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) player:save() elseif INDEX == 02 then -- TROCA DE NOME player:sendCancelMessage("@OpenChangeName") return false elseif INDEX == 03 then -- BLESSING if player:getStorageValue(_SYSTEM.PENALIDADES[02]) >= 30 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Este personagem já possui Bless.") player:getPosition():sendMagicEffect(03) return false else player:setStorageValue(_SYSTEM.PENALIDADES[02], 30) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso.\nVocê zerou sua penalidade ao morrer.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end else local MAESTRIA_NAME = { [04] = {M = 01, N = "REGEN", V = 02}; [05] = {M = 02, N = "TANKER", V = 03}; [06] = {M = 03, N = "SHOOTER", V = 04}; [07] = {M = 04, N = "VITAL", V = 05}; [08] = {M = 05, N = "LUCKY", V = 06}; } if player:getStorageValue(_SYSTEM.MAESTRIA[01]) > 00 then if player:getStorageValue(_SYSTEM.MAESTRIA[01]) ~= MAESTRIA_NAME[INDEX].M then player:setStorageValue(_SYSTEM.MAESTRIA[01], MAESTRIA_NAME[INDEX].M) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso.\nVocê agora pertence a Maestria: [ " ..MAESTRIA_NAME[INDEX].N.. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já pertence a Maestria: " ..MAESTRIA_NAME[INDEX].N.. ".") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você precisa ter Maestria para poder trocá-la.") player:getPosition():sendMagicEffect(03) return false end end end if CATEGORY == 05 then -- ESPECIAIS if INDEX == 01 then -- ARMA (SLOT 01) local SLOT = 04 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_04) > 0 then if doBackpack(player, 00, 03, 00, 01) then local ITEM_ID = _SPELLS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_04)].ITEMID local RARE = _ITEMS[ITEM_ID].RARE local STAR = 00 doBackpack(player, 03, 03, 00, 00, ITEM_ID) -- Procurar doBackpack(player, 01, 03, 00, 00, ITEM_ID, RARE, STAR, 01) player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_04, nil) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O primeiro slot de sua arma foi resetado e sua Skill recuperada.") doInventario(player, 00, SLOT, 00) player:sendCancelMessage("@StarCliente") player:getPosition():sendMagicEffect(14) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua Backpack esta cheia e não pode receber a skill de volta.\nEsta operação foi cancelada.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Não há nada para resetar nesse slot.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você precisa ter uma arma equipada para remover o slot.") player:getPosition():sendMagicEffect(03) return false end elseif INDEX == 02 then -- ARMA (SLOT 02) local SLOT = 04 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_05) > 0 then if doBackpack(player, 00, 03, 00, 01) then local ITEM_ID = _SPELLS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_05)].ITEMID local RARE = _ITEMS[ITEM_ID].RARE local STAR = 00 doBackpack(player, 03, 03, 00, 00, ITEM_ID) -- Procurar doBackpack(player, 01, 03, 00, 00, ITEM_ID, RARE, STAR, 01) player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_05, nil) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O segundo slot de sua arma foi resetado e sua Skill recuperada.") doInventario(player, 00, SLOT, 00) player:sendCancelMessage("@StarCliente") player:getPosition():sendMagicEffect(14) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua Backpack esta cheia e não pode receber a skill de volta.\nEsta operação foi cancelada.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Não há nada para resetar nesse slot.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você precisa ter uma arma equipada para remover o slot.") player:getPosition():sendMagicEffect(03) return false end elseif INDEX == 03 then -- ARMA (SLOT 03) local SLOT = 04 if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06) > 0 then if doBackpack(player, 00, 03, 00, 01) then local ITEM_ID = _SPELLS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06)].ITEMID local RARE = _ITEMS[ITEM_ID].RARE local STAR = 00 doBackpack(player, 03, 03, 00, 00, ITEM_ID) -- Procurar doBackpack(player, 01, 03, 00, 00, ITEM_ID, RARE, STAR, 01) player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06, nil) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O segundo slot de sua arma foi resetado e sua Skill recuperada.") doInventario(player, 00, SLOT, 00) player:sendCancelMessage("@StarCliente") player:getPosition():sendMagicEffect(14) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua Backpack esta cheia e não pode receber a skill de volta.\nEsta operação foi cancelada.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Não há nada para resetar nesse slot.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você precisa ter uma arma equipada para remover o slot.") player:getPosition():sendMagicEffect(03) return false end elseif INDEX > 13 then -- RESET STATUS if Tile(player:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE) then if INDEX == 14 then -- COMPLETO player:setStorageValue(_SYSTEM.POINTS_ATR[01], 00) player:setStorageValue(_SYSTEM.POINTS_ATR[02], 00) player:setStorageValue(_SYSTEM.POINTS_ATR[03], 00) player:setStorageValue(_SYSTEM.POINTS_ATR[04], 00) player:setStorageValue(_SYSTEM.POINTS_ATR[05], 00) player:setStorageValue(_SYSTEM.POINTS_ATR[06], 00) PlayerPassives(player, 03) player:setStorageValue(_SYSTEM.POINTS_ATR[07], player:getLevel()) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você resetou completamente todos os status desse personagem.") player:getPosition():sendMagicEffect(13) end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Precisa estar em Protection Zone (PZ).") player:getPosition():sendMagicEffect(03) return false end elseif INDEX > 03 then local SLOT = 00 local SLOT_POS = 00 local itemName = "" if INDEX == 04 then SLOT = 02 SLOT_POS = 01 itemName = "seu helmet" elseif INDEX == 05 then SLOT = 02 SLOT_POS = 02 itemName = "seu helmet" elseif INDEX == 06 then SLOT = 05 SLOT_POS = 01 itemName = "sua armadura" elseif INDEX == 07 then SLOT = 05 SLOT_POS = 02 itemName = "sua armadura" elseif INDEX == 08 then SLOT = 06 SLOT_POS = 01 itemName = "sua glover" elseif INDEX == 09 then SLOT = 06 SLOT_POS = 02 itemName = "sua glover" elseif INDEX == 10 then SLOT = 08 SLOT_POS = 01 itemName = "sua legs" elseif INDEX == 11 then SLOT = 08 SLOT_POS = 02 itemName = "sua legs" elseif INDEX == 12 then SLOT = 09 SLOT_POS = 01 itemName = "sua boots" elseif INDEX == 13 then SLOT = 09 SLOT_POS = 02 itemName = "sua boots" end if SLOT_POS == 01 then if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06) > 0 then if doBackpack(player, 00, 03, 00, 01) then local ITEM_ID = _ATRIBUTOS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06)].PRICE local RARE = 00 local STAR = 00 doBackpack(player, 03, 03, 00, 01, ITEM_ID) -- Procurar doBackpack(player, 01, 03, 00, 00, ITEM_ID, RARE, STAR, 01) player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_06, nil) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O primeiro slot de " ..itemName.. " foi resetado.") doInventario(player, 00, SLOT, 00) player:sendCancelMessage("@LoadTooltipInv") player:getPosition():sendMagicEffect(14) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua Backpack esta cheia e não pode receber o atributo de volta.\nEsta operação foi cancelada.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Não há nada para resetar nesse slot.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você precisa ter o item equipado para remover o slot.") player:getPosition():sendMagicEffect(03) return false end else if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_01) > 0 then if player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_07) > 0 then if doBackpack(player, 00, 03, 00, 01) then local ITEM_ID = _ATRIBUTOS[player:getStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_07)].PRICE local RARE = 00 local STAR = 00 doBackpack(player, 03, 03, 00, 01, ITEM_ID) -- Procurar doBackpack(player, 01, 03, 00, 0, ITEM_ID, RARE, STAR, 01) player:setStorageValue(_SYSTEM.INVENTARIO[SLOT].UID_07, nil) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "O segundo slot de " ..itemName.. " foi resetado.") doInventario(player, 00, SLOT, 00) player:sendCancelMessage("@LoadTooltipInv") player:getPosition():sendMagicEffect(14) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua Backpack esta cheia e não pode receber o atributo de volta.\nEsta operação foi cancelada.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Não há nada para resetar nesse slot.") player:getPosition():sendMagicEffect(03) return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você precisa ter o item equipado para remover o slot.") player:getPosition():sendMagicEffect(03) return false end end end end if CATEGORY == 06 then -- FERRAMENTAS local CHECK_TOOLS = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[02] if player:getStorageValue(_SYSTEM.TOOLS[CHECK_TOOLS]) < 01 then player:setStorageValue(_SYSTEM.TOOLS[CHECK_TOOLS], _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01]) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .._SHOP_PRODUCTS[CATEGORY][INDEX].NAME.. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) player:sendCancelMessage("@TutorShow " .._SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[03]) player:sendCancelMessage("@ToolsLoad " ..player:getStorageValue(_SYSTEM.TOOLS[01]).. " " ..player:getStorageValue(_SYSTEM.TOOLS[02])) else player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já possui este item ativo em seu personagem.") return false end end if CATEGORY == 07 then -- OUTFITS local OUTFIT_HE = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01] local OUTFIT_SHE = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[02] if _SHOP_PRODUCTS[CATEGORY][INDEX].OUTFIT then if player:hasOutfit(OUTFIT_HE, 03) or player:hasOutfit(OUTFIT_SHE, 03) then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já possui esta outfit.") return false else player:addOutfit(OUTFIT_HE, 1) player:addOutfit(OUTFIT_SHE, 1) player:addOutfitAddon(OUTFIT_HE, 3) player:addOutfitAddon(OUTFIT_SHE, 3) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " ] completo com todos os Addons.") end else if player:hasOutfit(OUTFIT_HE, 00) or player:hasOutfit(OUTFIT_SHE, 00) then player:addOutfitAddon(OUTFIT_HE, 3) player:addOutfitAddon(OUTFIT_SHE, 3) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve os addons da [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " ].") else player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você precisa do Outfit para comprar os Addons.") return false end player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end end if CATEGORY == 08 then -- MONTARIAS local MOUNT_ID = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01] if player:hasMount(MOUNT_ID) then player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já possui esta montaria.") return false else player:addMount(MOUNT_ID) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve a montaria [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end end if CATEGORY == 09 then -- BACKPACKS local BACKPACK_ID = _SHOP_PRODUCTS[CATEGORY][INDEX].ACT_ID[01] local Check = 0 for SearchBack = 01, #_SYSTEM.BACKPACKS do if player:getStorageValue(_SYSTEM.BACKPACKS[SearchBack]) == BACKPACK_ID then Check = 01 break end end if Check == 00 then local SlotVazio = 0 for EmptySlot = 01, #_SYSTEM.BACKPACKS do if player:getStorageValue(_SYSTEM.BACKPACKS[EmptySlot]) < 01 then SlotVazio = EmptySlot Check = 01 break end end if Check == 01 then local back_rare = _ITEMS[BACKPACK_ID].RARE player:setStorageValue(_SYSTEM.BACKPACKS[SlotVazio], BACKPACK_ID) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você obteve uma nova backpack [ " .. _SHOP_PRODUCTS[CATEGORY][INDEX].NAME .. " ].") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) player:setStorageValue(_SYSTEM.INVENTARIO[03].UID_01, BACKPACK_ID) player:setStorageValue(_SYSTEM.INVENTARIO[03].UID_02, back_rare) player:sendCancelMessage("@EquipBackpack " ..BACKPACK_ID) doInventario(player, 00) for Back = 01, #_SYSTEM.BACKPACKS do if player:getStorageValue(_SYSTEM.BACKPACKS[Back]) < 00 then break end player:sendCancelMessage("@LoadBackpack " ..Back.. " " ..player:getStorageValue(_SYSTEM.BACKPACKS[Back])) end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Este produto está indisponível no momento.") print("[SHOP] Erro ao comprar backpack. (Categoria: [" ..CATEGORY.. "] | Produto: [" ..INDEX.. "] | Erro: Backpack)") return false end else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já possui essa backpack.") return false end end if CATEGORY == 11 then -- EXTENSÕES if player:getStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01) < 3 then if player:getStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01) < 0 then player:setStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01, player:getStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01) + 2) else player:setStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01, player:getStorageValue(_SYSTEM.EXTENSION_BACK[INDEX].UID_01) + 1) end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso.") player:getPosition():sendMagicEffect(14) local ExAmulet = player:getStorageValue(_SYSTEM.EXTENSION_BACK[001].UID_01) local ExHelmet = player:getStorageValue(_SYSTEM.EXTENSION_BACK[002].UID_01) local ExBackpack = player:getStorageValue(_SYSTEM.EXTENSION_BACK[003].UID_01) local ExWeapon = player:getStorageValue(_SYSTEM.EXTENSION_BACK[004].UID_01) local ExArmor = player:getStorageValue(_SYSTEM.EXTENSION_BACK[005].UID_01) local ExGlove = player:getStorageValue(_SYSTEM.EXTENSION_BACK[006].UID_01) local ExRing = player:getStorageValue(_SYSTEM.EXTENSION_BACK[007].UID_01) local ExLegs = player:getStorageValue(_SYSTEM.EXTENSION_BACK[008].UID_01) local ExBoots = player:getStorageValue(_SYSTEM.EXTENSION_BACK[009].UID_01) player:sendCancelMessage("@reloadEx " ..ExAmulet.. " " ..ExHelmet.. " " ..ExBackpack.. " " ..ExWeapon.. " " ..ExArmor.. " " ..ExGlove.. " " ..ExRing.. " " ..ExLegs.. " " ..ExBoots) player:sendCancelMessage("@ReloadBackpack " ..INDEX.. " 01 01") else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A backpack para este slot já\nestá em sua capacidade máxima.") player:getPosition():sendMagicEffect(03) return false end end if CATEGORY == 12 then -- WARZONE if player:getStorageValue(_SYSTEM.SHOP_WARZONE) > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você só pode ter 01 benefício da Warzone ativo por vez.") return false end if INDEX == 01 then -- MUNIÇÃO INFINITA (30 MINUTOS) player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX) player:setStorageValue(_SYSTEM.WARZONE_TIMER, 1800) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!\nPor 30 minutos sua munição será infinita.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end if INDEX == 02 then -- POÇÕES INFINITAS (30 MINUTOS) player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX) player:setStorageValue(_SYSTEM.WARZONE_TIMER, 1800) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!\nPor 30 minutos suas poções serão infinitas.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end if INDEX == 03 then -- MODO PUNITIVO player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!\nElimine um jogador fora da Warzone e 30% da EXP dele virá para você.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end if INDEX == 04 then -- DOUBLE EXP (01 HORA) if player:getStorageValue(_SYSTEM.DOUBLE_EXP_ONE) < 02 then if player:getStorageValue(_SYSTEM.DOUBLE_EXP_ONE) < 00 then player:setStorageValue(_SYSTEM.DOUBLE_EXP_ONE, 01) else player:setStorageValue(_SYSTEM.DOUBLE_EXP_ONE, (player:getStorageValue(_SYSTEM.DOUBLE_EXP_ONE) + 01)) end player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX) player:setStorageValue(_SYSTEM.WARZONE_TIMER, 3600) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!\nPor 01 hora todas as criaturas darão o dobro de EXP.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você só pode usar o Double EXP 02 vezes por dia.") return false end end if INDEX == 05 then -- DOUBLE GOLD (01 HORA) player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX) player:setStorageValue(_SYSTEM.WARZONE_TIMER, 3600) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!\nPor 01 hora todas as criaturas darão o dobro de Gold Coin.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end if INDEX == 06 then -- DOUBLE POINTS (05 HORA) player:setStorageValue(_SYSTEM.SHOP_WARZONE, INDEX) player:setStorageValue(_SYSTEM.WARZONE_TIMER, 18000) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!\nPor 05 hora todas as Task finalizadas darão o dobro de pontos.") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end if INDEX == 07 then -- REMOVEDOR DE SKULLS local playerskull = player:getSkull() local skulls = { SKULL_NONE, } if isInArray(skulls, playerskull) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você precisa ter uma Skull ativa para comprar este item.") return false else player:setSkull(skulls[1]) player:setSkullTime(0) db.query("UPDATE player_deaths SET unjustified = 0 WHERE unjustified = 1 AND killed_by = " .. db.escapeString(player:getName())) player:save() player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end end if INDEX == 08 then -- CRIPTOMOEDA if player:getStorageValue(_SYSTEM.CRIPTOMOEDA) < 00 then player:setStorageValue(_SYSTEM.CRIPTOMOEDA, ((player:getStorageValue(_SYSTEM.CRIPTOMOEDA) + 01) + 01)) else player:setStorageValue(_SYSTEM.CRIPTOMOEDA, (player:getStorageValue(_SYSTEM.CRIPTOMOEDA) + 01)) end player:sendCancelMessage("@LootMSG 3297 4 3 1") player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Compra realizada com sucesso!") player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end end if FORM_PAY == 03 then PlayerVipCoins(player, 01, PRICE_ITEM) elseif FORM_PAY == 02 then player:setStorageValue(_SYSTEM.ONLINE_COIN, player:getStorageValue(_SYSTEM.ONLINE_COIN) - PRICE_ITEM) else player:setStorageValue(_SYSTEM.PVP_POINTS, player:getStorageValue(_SYSTEM.PVP_POINTS) - PRICE_ITEM) end if EnableSave then player:save() EnableSave = false onExhaustSave(10) end db.query("INSERT INTO `coins_transactions` (`account_id`, `type`, `amount`, `description`) VALUES (" .. playerGuid .. ", " .. CATEGORY .. ", " .. INDEX.. ", 'Ok')") player:getPosition():sendMagicEffect(13) doBackpack(player, 11) return false end