mirror of
				https://github.com/Znote/ZnoteAAC.git
				synced 2025-11-03 20:36:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
-- Znote Shop v1.0 for Znote AAC on TFS 1.1
 | 
						|
function onSay(player, words, param)
 | 
						|
	local storage = 54073 -- Make sure to select non-used storage. This is used to prevent SQL load attacks.
 | 
						|
	local cooldown = 15 -- in seconds.
 | 
						|
 | 
						|
	if player:getStorageValue(storage) <= os.time() then
 | 
						|
		player:setStorageValue(storage, os.time() + cooldown)
 | 
						|
 | 
						|
		-- Create the query
 | 
						|
		local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. player:getAccountId() .. " LIMIT 1;")
 | 
						|
 | 
						|
		-- 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")
 | 
						|
			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
 | 
						|
			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.")
 | 
						|
		end
 | 
						|
	else
 | 
						|
		player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Can only be executed once every " .. cooldown .. " seconds. Remaining cooldown: " .. player:getStorageValue(storage) - os.time())
 | 
						|
	end
 | 
						|
	return false
 | 
						|
end |