endziu2222
Active Member
- Joined
- Nov 2, 2010
- Messages
- 163
- Reaction score
- 41
If I am using Canary Otx and I do not have?Been awhile since I have posted something here so I'm going to release my advanced quest chest
What does it do?
A quest chest that can hold rewards in the shape of an Item, Experience, Outfit or a addon!
Features
- Easy config
- Can add level requirements for chests
- Supports Item Rewards
- Supports Experience Rewards
- Supports Outfit Rewards
- Supports Addon Rewards
- Supports Mount Rewards
This system currently supports up to 100 chests. o add more simply up the "touid" in the actions.xml line.
Installation
data/global.lua
Lua:dofile('data/lib/quest_chests.lua')
data/lib/quest_chests.lua
Lua:questChests = { --------------------------------------------------------- -- Example Quest Box 1 --------------------------------------------------------- [2000] = { minLevel = 50, items = { [1] = {type = "item", item = 2160, count = 1}, [2] = {type = "experience", amount = 20000}, [3] = {type = "outfit", name = "assassin", femaleId = 156, maleId = 152}, [4] = {type = "addon", outfit = "nobleman", addonNumber = 1, femaleId = 140, maleId = 132}, [5] = {type = "mount", mountName = "Orc", mountId = 20}, }, }, },
data/actions/actions.xml
Lua:<action fromuid="2000" touid="2100" script="quest_chests.lua" />
data/actions/scripts/quest_chests.lua
Code:function onUse(player, item, fromPosition, target, toPosition, isHotkey) ----------------------------------------------------------------------------------- -- Local Variables -- ----------------------------------------------------------------------------------- local questChest = item:getUniqueId() ----------------------------------------------------------------------------------- -- Check if player has already opened box -- ----------------------------------------------------------------------------------- if player:getStorageValue(questChest) == 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The chest is empty.") return true end ----------------------------------------------------------------------------------- -- Check if player meets level requirment ----------------------------------------------------------------------------------- local playerLevel = player:getLevel() local minLevel = questChests[questChest].minLevel if questChests[questChest].minLevel => playerLevel then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You need to be level "..minLevel.." to open this chest.") return true end ----------------------------------------------------------------------------------- -- Give rewward if player has not yet opened box -- ----------------------------------------------------------------------------------- for i = 1, #questChests[questChest].items do local rewardType = questChests[questChest].items[i].type ----------------------------------------------------------------------------------- -- Item Type Reward -- ----------------------------------------------------------------------------------- if rewardType == "item" then local item = questChests[questChest].items[i].item local count = questChests[questChest].items[i].count player:addItem(item, count) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You earned ["..count.."x] "..capAll(getItemName(item))) end ----------------------------------------------------------------------------------- -- Experience Type Reward -- ----------------------------------------------------------------------------------- if rewardType == "experience" then local amount = questChests[questChest].items[i].amount player:addExperience(amount) player:say(amount.." EXP gained!", TALKTYPE_MONSTER_SAY) player:getPosition():sendMagicEffect(CONST_ME_STUN) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You gained "..amount.." experience points.") end ----------------------------------------------------------------------------------- -- Outfit Type Reward -- ----------------------------------------------------------------------------------- if rewardType == "outfit" then local outfitName = questChests[questChest].items[i].name local maleOutfit = questChests[questChest].items[i].maleId local femaleOutfit = questChests[questChest].items[i].femaleId if player:getSex() == 0 then player:addOutfit(femaleOutfit) else player:addOutfit(maleOutfit) end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You gained the "..outfitName.." outfit.") end ----------------------------------------------------------------------------------- -- Addon Type Reward -- ----------------------------------------------------------------------------------- if rewardType == "addon" then local outfitName = questChests[questChest].items[i].outfit local addon = questChests[questChest].items[i].addonNumber local maleAddon = questChests[questChest].items[i].maleId local femaleAddon = questChests[questChest].items[i].femaleId if player:getSex() == 0 then player:addOutfitAddon(femaleAddon, addon) else player:addOutfitAddon(maleAddon, addon) end if addon == 1 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You gained the first "..outfitName.." outfit addon.") elseif addon == 2 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You gained the second "..outfitName.." outfit addon.") elseif addon == 3 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You gained the third "..outfitName.." outfit addon.") end end ----------------------------------------------------------------------------------- -- Mount Type Reward -- ----------------------------------------------------------------------------------- if rewardType == "mount" then local mountName = questChests[questChest].items[i].mountName local mountId = questChests[questChest].items[i].mountId player:addMount(mountId) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have unlocked the "..mountName.." mount.") end end ----------------------------------------------------------------------------------- -- Add in any cooldowns/storages -- ----------------------------------------------------------------------------------- player:setStorageValue(questChest, 1) return true end
actions.xml