From c0f891b2d73c4007da7339eeab5ac8e4f5356d2d Mon Sep 17 00:00:00 2001 From: Znote Date: Mon, 9 Sep 2019 02:16:37 +0200 Subject: [PATCH] Process all orders at once in shop talkaction script --- .../talkaction shopsystem/znoteshop.lua | 108 ++++++++------ .../Alternatives/znoteshop.lua | 120 ++++++++------- .../talkaction shopsystem/znoteshop.lua | 139 ++++++++++-------- .../talkaction shopsystem/znoteshop.lua | 131 ++++++++++------- 4 files changed, 286 insertions(+), 212 deletions(-) diff --git a/LUA/TFS_02/talkaction shopsystem/znoteshop.lua b/LUA/TFS_02/talkaction shopsystem/znoteshop.lua index 99838f3..ada5e53 100644 --- a/LUA/TFS_02/talkaction shopsystem/znoteshop.lua +++ b/LUA/TFS_02/talkaction shopsystem/znoteshop.lua @@ -7,60 +7,76 @@ function onSay(cid, words, param) setPlayerStorageValue(cid, storage, os.time() + cooldown) local accid = getAccountNumberByPlayerName(getCreatureName(cid)) + local type_desc = { + "itemids", + "pending premium (skip)", + "pending gender change (skip)", + "pending character name change (skip)", + "Outfit and addons" + } + print("Player: " .. getCreatureName(cid) .. " triggered !shop talkaction.") -- Create the query - local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. " LIMIT 1;") - + local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. ";") + local served = false + -- Detect if we got any results if orderQuery ~= false then - -- Fetch order values - local q_id = result.getDataInt(orderQuery, "id") - local q_type = result.getDataInt(orderQuery, "type") - local q_itemid = result.getDataInt(orderQuery, "itemid") - local q_count = result.getDataInt(orderQuery, "count") - result.free(orderQuery) - - -- ORDER TYPE 1 (Regular item shop products) - if q_type == 1 then - -- Get wheight - local playerCap = getPlayerFreeCap(cid) - local itemweight = getItemWeight(q_itemid, q_count) - if playerCap >= itemweight then - db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - doPlayerAddItem(cid, q_itemid, q_count) - doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemName(q_itemid).."(s)!") - else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP!") - end - end - -- ORDER TYPE 5 (Outfit and addon) - if q_type == 5 then - -- Make sure player don't already have this outfit and addon - if not canPlayerWearOutfit(cid, q_itemid, q_count) then - db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - doPlayerAddOutfit(cid,q_itemid,q_count) - doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new outfit!") - else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this outfit and addon!") + repeat + -- Fetch order values + local q_id = result.getDataInt(orderQuery, "id") + local q_type = result.getDataInt(orderQuery, "type") + local q_itemid = result.getDataInt(orderQuery, "itemid") + local q_count = result.getDataInt(orderQuery, "count") + print("Processing type "..q_type..": ".. type_desc[q_type]) + + -- ORDER TYPE 1 (Regular item shop products) + if q_type == 1 then + served = true + -- Get wheight + local playerCap = getPlayerFreeCap(cid) + local itemweight = getItemWeight(q_itemid, q_count) + if playerCap >= itemweight then + db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + doPlayerAddItem(cid, q_itemid, q_count) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemName(q_itemid).."(s)!") + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP!") + end + end + -- ORDER TYPE 5 (Outfit and addon) + if q_type == 5 then + served = true + -- Make sure player don't already have this outfit and addon + if not canPlayerWearOutfit(cid, q_itemid, q_count) then + db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + doPlayerAddOutfit(cid,q_itemid,q_count) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new outfit!") + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this outfit and addon!") + end end - end - -- ORDER TYPE 6 (Mounts) - -- Not supported on TFS 0.2 - - -- Add custom order types here - -- Type 1 is for itemids (Already coded here) - -- Type 2 is for premium (Coded on web) - -- Type 3 is for gender change (Coded on web) - -- Type 4 is for character name change (Coded on web) - -- Type 5 is for character outfit and addon (Already coded here) - -- Type 6 is for mounts (Not for TFS 0.2) - -- So use type 7+ for custom stuff, like etc packages. - -- if q_type == 7 then - -- end + -- ORDER TYPE 6 (Mounts) + -- Not supported on TFS 0.2 + + -- Add custom order types here + -- Type 1 is for itemids (Already coded here) + -- Type 2 is for premium (Coded on web) + -- Type 3 is for gender change (Coded on web) + -- Type 4 is for character name change (Coded on web) + -- Type 5 is for character outfit and addon (Already coded here) + -- Type 6 is for mounts (Not for TFS 0.2) + -- So use type 7+ for custom stuff, like etc packages. + -- if q_type == 7 then + -- end + until not result.next(orderQuery) + result.free(orderQuery) + if not served then + doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have no orders to process in-game.") + end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You have no orders.") end - else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Can only be executed once every "..cooldown.." seconds. Remaining cooldown: ".. getPlayerStorageValue(cid, storage) - os.time()) end diff --git a/LUA/TFS_03/talkaction shopsystem/Alternatives/znoteshop.lua b/LUA/TFS_03/talkaction shopsystem/Alternatives/znoteshop.lua index 8ccf492..18a19c5 100644 --- a/LUA/TFS_03/talkaction shopsystem/Alternatives/znoteshop.lua +++ b/LUA/TFS_03/talkaction shopsystem/Alternatives/znoteshop.lua @@ -7,72 +7,90 @@ function onSay(cid, words, param) setPlayerStorageValue(cid, storage, os.time() + cooldown) local accid = getAccountNumberByPlayerName(getCreatureName(cid)) + local type_desc = { + "itemids", + "pending premium (skip)", + "pending gender change (skip)", + "pending character name change (skip)", + "Outfit and addons", + "Mounts" + } + print("Player: " .. getCreatureName(cid) .. " triggered !shop talkaction.") -- Create the query local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. ";") - + local served = false + -- Detect if we got any results if orderQuery ~= false then - -- Fetch order values - local q_id = result.getDataInt(orderQuery, "id") - local q_type = result.getDataInt(orderQuery, "type") - local q_itemid = result.getDataInt(orderQuery, "itemid") - local q_count = result.getDataInt(orderQuery, "count") - result.free(orderQuery) - - -- ORDER TYPE 1 (Regular item shop products) - if q_type == 1 then - -- Get wheight - local playerCap = getPlayerFreeCap(cid) - local itemweight = getItemWeightById(q_itemid, q_count) - if playerCap >= itemweight then + repeat + -- Fetch order values + local q_id = result.getDataInt(orderQuery, "id") + local q_type = result.getDataInt(orderQuery, "type") + local q_itemid = result.getDataInt(orderQuery, "itemid") + local q_count = result.getDataInt(orderQuery, "count") + print("Processing type "..q_type..": ".. type_desc[q_type]) + + -- ORDER TYPE 1 (Regular item shop products) + if q_type == 1 then + served = true + -- Get wheight + local playerCap = getPlayerFreeCap(cid) + local itemweight = getItemWeightById(q_itemid, q_count) + if playerCap >= itemweight then + local delete = db.storeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + result.free(delete) + doPlayerAddItem(cid, q_itemid, q_count) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemNameById(q_itemid).."(s)!") + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP!") + end + end + -- ORDER TYPE 5 (Outfit and addon) + if q_type == 5 then + served = true + -- Make sure player don't already have this outfit and addon + if not canPlayerWearOutfit(cid, q_itemid, q_count) then local delete = db.storeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") result.free(delete) - doPlayerAddItem(cid, q_itemid, q_count) - doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemNameById(q_itemid).."(s)!") + doPlayerAddOutfit(cid,q_itemid,q_count) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new outfit!") else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP!") + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this outfit and addon!") end - end - -- ORDER TYPE 5 (Outfit and addon) - if q_type == 5 then - -- Make sure player don't already have this outfit and addon - if not canPlayerWearOutfit(cid, q_itemid, q_count) then - local delete = db.storeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - result.free(delete) - doPlayerAddOutfit(cid,q_itemid,q_count) - doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new outfit!") - else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this outfit and addon!") end - end - -- ORDER TYPE 6 (Mounts) - if q_type == 6 then - -- Make sure player don't already have this outfit and addon - if not getPlayerMount(cid, q_itemid) then -- Failed to find a proper hasMount 0.3 function? - local delete = db.storeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - result.free(delete) - doPlayerAddMount(cid, q_itemid) - doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new mount!") - else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this mount!") + -- ORDER TYPE 6 (Mounts) + if q_type == 6 then + served = true + -- Make sure player don't already have this outfit and addon + if not getPlayerMount(cid, q_itemid) then -- Failed to find a proper hasMount 0.3 function? + local delete = db.storeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + result.free(delete) + doPlayerAddMount(cid, q_itemid) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new mount!") + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this mount!") + end end + + -- Add custom order types here + -- Type 1 is for itemids (Already coded here) + -- Type 2 is for premium (Coded on web) + -- Type 3 is for gender change (Coded on web) + -- Type 4 is for character name change (Coded on web) + -- Type 5 is for character outfit and addon (Already coded here) + -- Type 6 is for mounts (Already coded here) + -- So use type 7+ for custom stuff, like etc packages. + -- if q_type == 7 then + -- end + until not result.next(orderQuery) + result.free(orderQuery) + if not served then + doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have no orders to process in-game.") end - - -- Add custom order types here - -- Type 1 is for itemids (Already coded here) - -- Type 2 is for premium (Coded on web) - -- Type 3 is for gender change (Coded on web) - -- Type 4 is for character name change (Coded on web) - -- Type 5 is for character outfit and addon (Already coded here) - -- Type 6 is for mounts (Already coded here) - -- So use type 7+ for custom stuff, like etc packages. - -- if q_type == 7 then - -- end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You have no orders.") end - else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Can only be executed once every "..cooldown.." seconds. Remaining cooldown: ".. getPlayerStorageValue(cid, storage) - os.time()) end diff --git a/LUA/TFS_03/talkaction shopsystem/znoteshop.lua b/LUA/TFS_03/talkaction shopsystem/znoteshop.lua index 480a91c..de54e9a 100644 --- a/LUA/TFS_03/talkaction shopsystem/znoteshop.lua +++ b/LUA/TFS_03/talkaction shopsystem/znoteshop.lua @@ -7,78 +7,97 @@ function onSay(cid, words, param) setPlayerStorageValue(cid, storage, os.time() + cooldown) local accid = getAccountNumberByPlayerName(getCreatureName(cid)) + local type_desc = { + "itemids", + "pending premium (skip)", + "pending gender change (skip)", + "pending character name change (skip)", + "Outfit and addons", + "Mounts" + } + print("Player: " .. getCreatureName(cid) .. " triggered !shop talkaction.") -- Create the query - local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. " LIMIT 1;") - + local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. ";") + local served = false + -- Detect if we got any results if orderQuery ~= false then - -- Fetch order values - local q_id = result.getDataInt(orderQuery, "id") - local q_type = result.getDataInt(orderQuery, "type") - local q_itemid = result.getDataInt(orderQuery, "itemid") - local q_count = result.getDataInt(orderQuery, "count") - result.free(orderQuery) - -- ORDER TYPE 1 (Regular item shop products) - if q_type == 1 then - -- Get wheight - local playerCap = getPlayerFreeCap(cid) - local itemweight = getItemWeightById(q_itemid, q_count) - if playerCap >= itemweight and getTileInfo(getCreaturePosition(cid)).protection then - --backpack check - local backpack = getPlayerSlotItem(cid, 3) - local gotItem = false - if(backpack and backpack.itemid > 0) then - local received = doAddContainerItem(getPlayerSlotItem(cid, 3).uid, q_itemid,q_count) - if(received ~= false) then - db.executeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemNameById(q_itemid).."(s)!") - gotItem = true + repeat + -- Fetch order values + local q_id = result.getDataInt(orderQuery, "id") + local q_type = result.getDataInt(orderQuery, "type") + local q_itemid = result.getDataInt(orderQuery, "itemid") + local q_count = result.getDataInt(orderQuery, "count") + print("Processing type "..q_type..": ".. type_desc[q_type]) + -- ORDER TYPE 1 (Regular item shop products) + if q_type == 1 then + served = true + -- Get wheight + local playerCap = getPlayerFreeCap(cid) + local itemweight = getItemWeightById(q_itemid, q_count) + if playerCap >= itemweight and getTileInfo(getCreaturePosition(cid)).protection then + --backpack check + local backpack = getPlayerSlotItem(cid, 3) + local gotItem = false + if(backpack and backpack.itemid > 0) then + local received = doAddContainerItem(getPlayerSlotItem(cid, 3).uid, q_itemid,q_count) + if(received ~= false) then + db.executeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemNameById(q_itemid).."(s)!") + gotItem = true + end end + + if(not gotItem) then + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You have no available space in backpack to receive that item.") + end + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP and Need ProtectZone!") end - - if(not gotItem) then - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You have no available space in backpack to receive that item.") - end + end + -- ORDER TYPE 5 (Outfit and addon) + if q_type == 5 then + served = true + -- Make sure player don't already have this outfit and addon + if not canPlayerWearOutfit(cid, q_itemid, q_count) then + db.executeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + doPlayerAddOutfit(cid,q_itemid,q_count) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new outfit!") else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP and Need ProtectZone!") + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this outfit and addon!") end - end - -- ORDER TYPE 5 (Outfit and addon) - if q_type == 5 then - -- Make sure player don't already have this outfit and addon - if not canPlayerWearOutfit(cid, q_itemid, q_count) then - db.executeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - doPlayerAddOutfit(cid,q_itemid,q_count) - doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new outfit!") - else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this outfit and addon!") end - end - -- ORDER TYPE 6 (Mounts) - if q_type == 6 then - -- Make sure player don't already have this outfit and addon - if not getPlayerMount(cid, q_itemid) then -- Failed to find a proper hasMount 0.3 function? - db.executeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - doPlayerAddMount(cid, q_itemid) - doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new mount!") - else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this mount!") + -- ORDER TYPE 6 (Mounts) + if q_type == 6 then + served = true + -- Make sure player don't already have this outfit and addon + if not getPlayerMount(cid, q_itemid) then -- Failed to find a proper hasMount 0.3 function? + db.executeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + doPlayerAddMount(cid, q_itemid) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have received a new mount!") + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You already have this mount!") + end end + + -- Add custom order types here + -- Type 1 is for itemids (Already coded here) + -- Type 2 is for premium (Coded on web) + -- Type 3 is for gender change (Coded on web) + -- Type 4 is for character name change (Coded on web) + -- Type 5 is for character outfit and addon (Already coded here) + -- Type 6 is for mounts (Already coded here) + -- So use type 7+ for custom stuff, like etc packages. + -- if q_type == 7 then + -- end + until not result.next(orderQuery) + result.free(orderQuery) + if not served then + doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have no orders to process in-game.") end - - -- Add custom order types here - -- Type 1 is for itemids (Already coded here) - -- Type 2 is for premium (Coded on web) - -- Type 3 is for gender change (Coded on web) - -- Type 4 is for character name change (Coded on web) - -- Type 5 is for character outfit and addon (Already coded here) - -- Type 6 is for mounts (Already coded here) - -- So use type 7+ for custom stuff, like etc packages. - -- if q_type == 7 then - -- end else - doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You have no orders.") + doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have no orders.") end else diff --git a/LUA/TFS_10/talkaction shopsystem/znoteshop.lua b/LUA/TFS_10/talkaction shopsystem/znoteshop.lua index b3b88bd..dfc496a 100644 --- a/LUA/TFS_10/talkaction shopsystem/znoteshop.lua +++ b/LUA/TFS_10/talkaction shopsystem/znoteshop.lua @@ -5,68 +5,89 @@ function onSay(player, words, param) if player:getStorageValue(storage) <= os.time() then player:setStorageValue(storage, os.time() + cooldown) - + + local type_desc = { + "itemids", + "pending premium (skip)", + "pending gender change (skip)", + "pending character name change (skip)", + "Outfit and addons", + "Mounts" + } + print("Player: " .. player:getName() .. " triggered !shop talkaction.") -- Create the query - local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. player:getAccountId() .. " LIMIT 1;") + local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. player:getAccountId() .. ";") + local served = false -- Detect if we got any results if orderQuery ~= false then - -- Fetch order values - local q_id = result.getNumber(orderQuery, "id") - local q_type = result.getNumber(orderQuery, "type") - local q_itemid = result.getNumber(orderQuery, "itemid") - local q_count = result.getNumber(orderQuery, "count") + repeat + -- Fetch order values + local q_id = result.getNumber(orderQuery, "id") + local q_type = result.getNumber(orderQuery, "type") + local q_itemid = result.getNumber(orderQuery, "itemid") + local q_count = result.getNumber(orderQuery, "count") + + print("Processing type "..q_type..": ".. type_desc[q_type]) + + -- ORDER TYPE 1 (Regular item shop products) + if q_type == 1 then + served = true + -- Get wheight + if player:getFreeCapacity() >= ItemType(q_itemid):getWeight(q_count) then + db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + player:addItem(q_itemid, q_count) + player:sendTextMessage(MESSAGE_INFO_DESCR, "Congratulations! You have received " .. q_count .. " x " .. ItemType(q_itemid):getName() .. "!") + else + player:sendTextMessage(MESSAGE_STATUS_WARNING, "Need more CAP!") + end + end + + -- ORDER TYPE 5 (Outfit and addon) + if q_type == 5 then + served = true + -- Make sure player don't already have this outfit and addon + if not player:hasOutfit(q_itemid, q_count) then + db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + player:addOutfit(q_itemid) + player:addOutfitAddon(q_itemid, q_count) + player:sendTextMessage(MESSAGE_INFO_DESCR, "Congratulations! You have received a new outfit!") + else + player:sendTextMessage(MESSAGE_STATUS_WARNING, "You already have this outfit and addon!") + end + end + + -- ORDER TYPE 6 (Mounts) + if q_type == 6 then + served = true + -- Make sure player don't already have this outfit and addon + if not player:hasMount(q_itemid) then + db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + player:addMount(q_itemid) + player:sendTextMessage(MESSAGE_INFO_DESCR, "Congratulations! You have received a new mount!") + else + player:sendTextMessage(MESSAGE_STATUS_WARNING, "You already have this mount!") + end + end + + + -- Add custom order types here + -- Type 1 is for itemids (Already coded here) + -- Type 2 is for premium (Coded on web) + -- Type 3 is for gender change (Coded on web) + -- Type 4 is for character name change (Coded on web) + -- Type 5 is for character outfit and addon (Already coded here) + -- Type 6 is for mounts (Already coded here) + -- So use type 7+ for custom stuff, like etc packages. + -- if q_type == 7 then + -- end + until not result.next(orderQuery) result.free(orderQuery) - - -- ORDER TYPE 1 (Regular item shop products) - if q_type == 1 then - -- Get wheight - if player:getFreeCapacity() >= ItemType(q_itemid):getWeight(q_count) then - db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - player:addItem(q_itemid, q_count) - player:sendTextMessage(MESSAGE_INFO_DESCR, "Congratulations! You have received " .. q_count .. " x " .. ItemType(q_itemid):getName() .. "!") - else - player:sendTextMessage(MESSAGE_STATUS_WARNING, "Need more CAP!") - end + if not served then + player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You have no orders to process in-game.") end - - -- ORDER TYPE 5 (Outfit and addon) - if q_type == 5 then - -- Make sure player don't already have this outfit and addon - if not player:hasOutfit(q_itemid, q_count) then - db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - player:addOutfit(q_itemid) - player:addOutfitAddon(q_itemid, q_count) - player:sendTextMessage(MESSAGE_INFO_DESCR, "Congratulations! You have received a new outfit!") - else - player:sendTextMessage(MESSAGE_STATUS_WARNING, "You already have this outfit and addon!") - end - end - - -- ORDER TYPE 6 (Mounts) - if q_type == 6 then - -- Make sure player don't already have this outfit and addon - if not player:hasMount(q_itemid) then - db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") - player:addMount(q_itemid) - player:sendTextMessage(MESSAGE_INFO_DESCR, "Congratulations! You have received a new mount!") - else - player:sendTextMessage(MESSAGE_STATUS_WARNING, "You already have this mount!") - end - end - - -- Add custom order types here - -- Type 1 is for itemids (Already coded here) - -- Type 2 is for premium (Coded on web) - -- Type 3 is for gender change (Coded on web) - -- Type 4 is for character name change (Coded on web) - -- Type 5 is for character outfit and addon (Already coded here) - -- Type 6 is for mounts (Already coded here) - -- So use type 7+ for custom stuff, like etc packages. - -- if q_type == 7 then - -- end else - player:sendTextMessage(MESSAGE_STATUS_WARNING, "You have no orders.") + player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You have no orders.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Can only be executed once every " .. cooldown .. " seconds. Remaining cooldown: " .. player:getStorageValue(storage) - os.time())