i can't add premium time to my gamestore please help
my ....\data\modules\scripts\gamestore\gamestore.lua
-- Parser
dofile('data/modules/scripts/gamestore/init.lua')
-- Config
GameStore.Categories = {
{ name = "Mounts",
state = GameStore.States.STATE_NEW,
icons = {"Category_Mounts.png"},
offers = {
-- Mount Example : thingId = mountId
{name = "Widow Queen", thingId = 1, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o368.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Racing Bird", thingId = 2, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o369.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "War Bear", thingId = 3, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o370.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Black Sheep", thingId = 4, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o371.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Midnight Panther", thingId = 5, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o372.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Draptor", thingId = 6, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o373.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Titanica", thingId = 7, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o374.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Tin Lizzard", thingId = 8, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o375.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Blazebringer", thingId = 9, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o376.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Rapid Boar", thingId = 10, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o377.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Stampor", thingId = 11, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o378.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Undead Cavebear", thingId = 12, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o379.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Donkey", thingId = 13, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o387.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Tiger Slug", thingId = 14, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o388.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Uniwheel", thingId = 15, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o389.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Crystal Wolf", thingId = 16, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o390.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Brown War Horse", thingId = 17, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o392.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Kingly Deer", thingId = 18, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o401.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Tamed Panda", thingId = 19, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o402.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Dromedary", thingId = 20, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o405.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "King Scorpion", thingId = 21, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o406.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Rented Horse", thingId = 22, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o421.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Armoured War Horse", thingId = 23, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o426.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Shadow Draptor", thingId = 24, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o427.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Rented Horse", thingId = 25, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o437.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Rented Horse", thingId = 26, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o438.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Ladybug", thingId = 27, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o447.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Manta", thingId = 28, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o450.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Ironblight", thingId = 29, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o502.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Magma Crawler", thingId = 30, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o503.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Dragonling", thingId = 31, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o506.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Gnarlhound", thingId = 32, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o515.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Crimson Ray", thingId = 33, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o521.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Steelbeak", thingId = 34, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o522.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Water Buffalo", thingId = 35, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o526.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Armoured Scorpion", thingId = 36, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o546.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Armoured Dragonling", thingId = 37, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o547.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Armoured Cavebear", thingId = 38, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o548.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "The Hellgrip", thingId = 39, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o559.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Lion", thingId = 40, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o571.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Golden Lion", thingId = 41, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o572.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Shock Head", thingId = 42, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o580.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Dominus Draptor", thingId = 43, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o596.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Walker", thingId = 44, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o606.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Azudocus", thingId = 45, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o621.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Carpacosaurus", thingId = 46, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o622.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Death Crawler", thingId = 47, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o624.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Flamesteed", thingId = 48, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o626.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Jade Lion", thingId = 49, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o627.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Jade Pincer", thingId = 50, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o628.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Nethersteed", thingId = 51, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o629.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Tempest", thingId = 52, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o630.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Winter King", thingId = 53, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o631.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Doombringer", thingId = 54, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o644.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Woodland Prince", thingId = 55, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o647.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Hailtorm Fury", thingId = 56, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o648.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Siegebreaker", thingId = 57, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o649.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Poisonbane", thingId = 58, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o650.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Blackpelt", thingId = 59, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o651.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Golden Dragonfly", thingId = 60, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o669.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Steel Bee", thingId = 61, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o670.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Copper Fly", thingId = 62, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o671.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Tundra Rambler", thingId = 63, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o672.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Highland Yak", thingId = 64, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o673.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Glacier Vagabond", thingId = 65, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o674.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Flying Divan", thingId = 66, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o688.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Magic Carpet", thingId = 67, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o689.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Floating Kashmir", thingId = 68, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o690.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Ringtail Waccoon", thingId = 69, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o691.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Night Waccoon", thingId = 70, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o692.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Emerald Waccoon", thingId = 71, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o693.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Glooth Glider", thingId = 72, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o682.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Shadow Hart", thingId = 73, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o685.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Black Stag", thingId = 74, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o686.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Emperor Deer", thingId = 75, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o687.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Flitterkatzen", thingId = 76, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o726.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Venompaw", thingId = 77, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o727.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Batcat", thingId = 78, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o728.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Sea Devil", thingId = 79, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o734.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Coralripper", thingId = 80, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o735.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Plumfish", thingId = 81, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o736.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Gorongra", thingId = 82, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o738.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Noctungra", thingId = 83, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o739.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Silverneck", thingId = 84, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o740.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Slagsnare", thingId = 85, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o761.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Nightstinger", thingId = 86, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o762.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Razorcreep", thingId = 87, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o763.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Rift Runner", thingId = 88, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o848.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Nightdweller", thingId = 89, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o849.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Frostflare", thingId = 90, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o850.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Cinderhoof", thingId = 91, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o851.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Moldpincer", thingId = 92, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o868.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Bloodcurl", thingId = 93, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o869.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Leafscuttler", thingId = 94, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o870.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Sparkion", thingId = 95, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o883.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Swamp Nnapper", thingId = 96, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o886.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Mould Shell", thingId = 97, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o887.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Reed Lurker", thingId = 98, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o888.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Neon Sparkid", thingId = 99, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o889.png"}, description = "This mount looks so hot!"},
-- Mount Example : thingId = mountId
{name = "Vortexion", thingId = 100, type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, price = 5, icons = {"o890.png"}, description = "This mount looks so hot!"},
}
},
{ name = "Outfits",
state = GameStore.States.STATE_NEW,
icons = {"Category_Outfits.png"},
offers = {
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Citizen Addon", thingId = {male=128,female=136}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o128.png", "o136.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Hunter Addon", thingId = {male=129,female=137}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o129.png", "o137.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Mage Addon", thingId = {male=130,female=138}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o130.png", "o138.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Knight Addon", thingId = {male=131,female=139}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o131.png", "o139.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Nobleman Addon", thingId = {male=132,female=140}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o132.png", "o140.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Summoner Addon", thingId = {male=133,female=141}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o133.png", "o141.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Warrior Addon", thingId = {male=134,female=142}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o134.png", "o142.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Barbarian Addon", thingId = {male=143,female=147}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o143.png", "o147.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Druid Addon", thingId = {male=144,female=148}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o144.png", "o148.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Wizard Addon", thingId = {male=145,female=149}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o145.png", "o149.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "oriental Addon", thingId = {male=146,female=150}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o146.png", "o150.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Pirate Addon", thingId = {male=151,female=155}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o151.png", "o155.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Assassin Addon", thingId = {male=152,female=156}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o152.png", "o156.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Beggar Addon", thingId = {male=153,female=157}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o153.png", "o157.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Shaman Addon", thingId = {male=154,female=158}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o154.png", "o158.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Norseman Addon", thingId = {male=251,female=252}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o251.png", "o252.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Nightmare Addon", thingId = {male=268,female=269}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o268.png", "o269.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Jester Addon", thingId = {male=273,female=270}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o273.png", "o270.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Brotherhood Addon", thingId = {male=278,female=279}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o278.png", "o279.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Demonhunter Addon", thingId = {male=289,female=288}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o289.png", "o288.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Yalaharian Addon", thingId = {male=325,female=324}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o325.png", "o324.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Warmaster Addon", thingId = {male=335,female=336}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o335.png", "o336.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Wayfarer Addon", thingId = {male=367,female=366}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o367.png", "o366.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Afflicted Addon", thingId = {male=430,female=431}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o430.png", "o431.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Elementalist Addon", thingId = {male=432,female=433}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o432.png", "o433.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Deepling Addon", thingId = {male=463,female=464}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o463.png", "o464.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Insectoid Addon", thingId = {male=465,female=466}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o465.png", "o466.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Entrepreneur Addon", thingId = {male=472,female=471}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o472.png", "o471.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Crystal Warlord Addon", thingId = {male=512,female=513}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o512.png", "o513.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Soil Guardian Addon", thingId = {male=516,female=514}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o516.png", "o514.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Demon Addon", thingId = {male=541,female=542}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o541.png", "o542.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Cave Explorer Addon", thingId = {male=544,female=575}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o544.png", "o575.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Dream Warden Addon", thingId = {male=577,female=578}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o577.png", "o578.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Glooth Engineer Addon", thingId = {male=610,female=618}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o610.png", "o618.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Champion Addon", thingId = {male=633,female=632}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o633.png", "o632.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Conjurer Addon", thingId = {male=634,female=635}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o634.png", "o635.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Beastmaster Addon", thingId = {male=637,female=636}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o637.png", "o636.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Chaos Acolyte Addon", thingId = {male=665,female=664}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o665.png", "o664.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Death Herald Addon", thingId = {male=667,female=666}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o667.png", "o666.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Ranger Addon", thingId = {male=684,female=683}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o684.png", "o683.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Ceremonial Garb Addon", thingId = {male=695,female=694}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o695.png", "o694.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Puppeteer Addon", thingId = {male=697,female=696}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o697.png", "o696.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Spirit Caller Addon", thingId = {male=699,female=698}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o699.png", "o698.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Evoker Addon", thingId = {male=725,female=724}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o725.png", "o724.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Seaweaver Addon", thingId = {male=733,female=732}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o733.png", "o732.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Recruiter Addon", thingId = {male=746,female=745}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o746.png", "o745.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Sea Dog Addon", thingId = {male=750,female=749}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o750.png", "o749.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Royal Pumpkin Addon", thingId = {male=760,female=759}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o760.png", "o759.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Rift Warrior Addon", thingId = {male=846,female=845}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o846.png", "o845.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Winter Warden Addon", thingId = {male=853,female=852}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o853.png", "o852.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Philosopher Addon", thingId = {male=874,female=873}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o874.png", "o873.png"}},
-- Addon Example : thingId = lookType, addon = ( 1 = addon 1, 2 = addon 2, 3 = both addons)
{name = "Arena Champion Addon", thingId = {male=884,female=885}, addon = 3, type = GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON, price = 5, icons = {"o884.png", "o885.png"}},
}
},
{ name = "Items",
state = GameStore.States.STATE_NEW,
icons = {"Category_Items.png"},
offers = {
-- Item Example : thingId = itemId
{name = "Yalahari Mask", thingId = 9778, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"9778.png"}, description = "Become rich!"},
{name = "Goldem Helmet", thingId = 2471, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"2471.png"}, description = "Become rich!"},
{name = "Prismatic Helmet", thingId = 18403, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"18403.png"}, description = "Become rich!"},
{name = "Gill Gugel", thingId = 18398, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"18398.png"}, description = "Become rich!"},
{name = "Elite Draken Helmet", thingId = 12645, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"12645.png"}, description = "Become rich!"},
{name = "Werewolf Helmet", thingId = 24718, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"24718.png"}, description = "Become rich!"},
{name = "Depth Galea", thingId = 15408, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"15408.png"}, description = "Become rich!"},
--Armorid--
{name = "Demon Armor", thingId = 2494, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"2494.png"}, description = "Become rich!"},
{name = "Fire Born Giant Armor", thingId = 8881, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"8881.png"}, description = "Become rich!"},
{name = "Royal Draken Mail", thingId = 12642, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"12642.png"}, description = "Become rich!"},
{name = "Gill Coat", thingId = 18399, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"18399.png"}, description = "Become rich!"},
{name = "Depth Lorica", thingId = 15407, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"15407.png"}, description = "Become rich!"},
{name = "Furios Frock", thingId = 21725, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"21725.png"}, description = "Become rich!"},
{name = "Ornate Chestplate", thingId = 15406, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"15406.png"}, description = "Become rich!"},
{name = "Earthborn Titan Armor", thingId = 8882, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"8882.png"}, description = "Become rich!"},
{name = "Wind Born Colossus Armor", thingId = 8883, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"8883.png"}, description = "Become rich!"},
{name = "Master Acher's Armor", thingId = 8888, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"8888.png"}, description = "Become rich!"},
--Legsid--
{name = "Demon Legs", thingId = 2495, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"2495.png"}, description = "Become rich!"},
{name = "Grasshopper Legs", thingId = 15490, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"15490.png"}, description = "Become rich!"},
{name = "Depth Ocrea", thingId = 15409, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"15409.png"}, description = "Become rich!"},
{name = "Primatic Legs", thingId = 18405, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"18405.png"}, description = "Become rich!"},
{name = "Gill Legs", thingId = 18400, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"18400.png"}, description = "Become rich!"},
{name = "Ornate Legs", thingId = 15412, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"15412.png"}, description = "Become rich!"},
{name = "Ornate Chestplate", thingId = 15406, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"15406.png"}, description = "Become rich!"},
{name = "Dwarven Legs", thingId = 2504, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"2504.png"}, description = "Become rich!"},
{name = "Icy Culotte", thingId = 21700, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"21700.png"}, description = "Become rich!"},
--Bootsid--
{name = "Boots of Haste", thingId = 2195, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 2, icons = {"2195.png"}, description = "Become rich!"},
{name = "Golden Boots", thingId = 2646, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"2646.png"}, description = "Become rich!"},
{name = "Pair Soft Boots", thingId = 2640, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"2640.png"}, description = "Become rich!"},
--Shieldid--
{name = "Depth Scutum", thingId = 15411, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"15411.png"}, description = "Become rich!"},
{name = "Shield of Corruption", thingId = 12644, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"12644.png"}, description = "Become rich!"},
{name = "Prismatic Shield", thingId = 18410, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"18410.png"}, description = "Become rich!"},
{name = "Ornate Shield", thingId = 15413, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"15413.png"}, description = "Become rich!"},
{name = "Spelbook of Vigilance", thingId = 18401, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"18401.png"}, description = "Become rich!"},
{name = "Spellbook of Ancient Arcana ", thingId = 16112, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"16112.png"}, description = "Become rich!"},
{name = "Umbral spellbook", thingId = 22423, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"22423.png"}, description = "Become rich!"},
{name = "Umbral Master Spellbook", thingId = 22424, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 15, icons = {"22424.png"}, description = "Become rich!"},
{name = "Earthborn Titan Armor", thingId = 8882, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"8882.png"}, description = "Become rich!"},
{name = "Great Shield", thingId = 2522, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 15, icons = {"2522.png"}, description = "Become rich!"},
{name = "Blessed Shield", thingId = 2523, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 15, icons = {"2523.png"}, description = "Become rich!"},
}
},
{ name = "Sorcerer",
state = GameStore.States.STATE_NEW,
icons = {"Category_Sorc.png"},
offers = {
-- Item Example : thingId = itemId
{name = "Thundermind Raiment", thingId = 25192, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25192.png"}, description = "Become rich!"},
{name = "Frostmind Raiment", thingId = 25193, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25193.png"}, description = "Become rich!"},
{name = "Earthmind Raiment", thingId = 25191, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25191.png"}, description = "Become rich!"},
{name = "Firemind Raiment", thingId = 25190, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25190.png"}, description = "Become rich!"},
{name = "Wand of Defiance", thingId = 18390, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"18390.png"}, description = "Become rich!"},
{name = "Spelbook of Dark Mysteries", thingId = 8918, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 5, icons = {"8918.png"}, description = "Become rich!"},
{name = "Wand of Everblazing", thingId = 18409, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"18409.png"}, description = "Become rich!"},
}
},
{ name = "Knight",
state = GameStore.States.STATE_NEW,
icons = {"Category_Knight.png"},
offers = {
-- Item Example : thingId = itemId
{name = "Earthmind Raiment", thingId = 25191, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25191.png"}, description = "Become rich!"},
{name = "Earthheart Platemail", thingId = 25179, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25179.png"}, description = "Become rich!"},
{name = "Earthheart Hauberk", thingId = 25178, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25178.png"}, description = "Become rich!"},
{name = "Frostheart Platemail", thingId = 25185, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25185.png"}, description = "Become rich!"},
{name = "Frostheart Hauberk", thingId = 25184, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25184.png"}, description = "Become rich!"},
{name = "Frostheart Cuirass", thingId = 25183, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25183.png"}, description = "Become rich!"},
{name = "Thunderheart Platemail", thingId = 25182, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25182.png"}, description = "Become rich!"},
{name = "Thunderheart Hauberk", thingId = 25181, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25181.png"}, description = "Become rich!"},
{name = "Thunderheart Cuirass", thingId = 25180, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25180.png"}, description = "Become rich!"},
{name = "Fireheart Platemail", thingId = 25176, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25176.png"}, description = "Become rich!"},
{name = "Fireheart Hauberk", thingId = 25175, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25175.png"}, description = "Become rich!"},
{name = "Fireheart Cuirass", thingId = 25174, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25174.png"}, description = "Become rich!"},
{name = "Shiny Blade", thingId = 18465, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"18465.png"}, description = "Become rich!"},
{name = "Crystaline Axe ", thingId = 18451, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"18451.png"}, description = "Become rich!"},
{name = "Mycological Mace", thingId = 18452, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"18452.png"}, description = "Become rich!"},
{name = "Umbral Blade", thingId = 22399, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"22399.png"}, description = "Become rich!"},
{name = "Umbral Masterblade", thingId = 22400, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"22400.png"}, description = "Become rich!"},
{name = "umbral Slayer", thingId = 22402, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"22402.png"}, description = "Become rich!"},
{name = "Umbral Hammer", thingId = 22414, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"22414.png"}, description = "Become rich!"},
{name = "Umbral Master Hammer", thingId = 22415, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"22415.png"}, description = "Become rich!"},
{name = "Umbral Mace", thingId = 22411, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"22411.png"}, description = "Become rich!"},
{name = "Umbral master Chopper", thingId = 22409, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"22409.png"}, description = "Become rich!"},
{name = "Umbral Mater Axe", thingId = 22406, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"22406.png"}, description = "Become rich!"},
{name = "Umbral Axe", thingId = 22405, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"22405.png"}, description = "Become rich!"},
{name = "Umbral Master Slayer", thingId = 22403, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"22403.png"}, description = "Become rich!"},
{name = "Umbral Chopper", thingId = 22408, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"22408.png"}, description = "Become rich!"},
}
},
{ name = "Paladin",
state = GameStore.States.STATE_NEW,
icons = {"Category_Pally.png"},
offers = {
-- Item Example : thingId = itemId
{name = "Firesoul Tabard", thingId = 25186, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25186.png"}, description = "Become rich!"},
{name = "Frostsoul Tabard", thingId = 25189, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25189.png"}, description = "Become rich!"},
{name = "Thundersoul Tabard", thingId = 25188, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25188.png"}, description = "Become rich!"},
{name = "Earthsoul Tabard", thingId = 25187, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25187.png"}, description = "Become rich!"},
{name = "Crystal Crossbow", thingId = 18453, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"18453.png"}, description = "Become rich!"},
{name = "Mycological Bow", thingId = 18454, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"18454.png"}, description = "Become rich!"},
{name = "Umbral bow", thingId = 22417, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"22417.png"}, description = "Become rich!"},
{name = "Umbral Master bow", thingId = 22418, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"22418.png"}, description = "Become rich!"},
{name = "Umbral Crossbow", thingId = 22420, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"22420.png"}, description = "Become rich!"},
{name = "Umbral Master Crossbow", thingId = 22421, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 10, icons = {"22421.png"}, description = "Become rich!"},
}
},
{ name = "Druid",
state = GameStore.States.STATE_NEW,
icons = {"Category_Druid.png"},
offers = {
-- Item Example : thingId = itemId
{name = "Thundermind Raiment", thingId = 25192, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25192.png"}, description = "Become rich!"},
{name = "Frostmind Raiment", thingId = 25193, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25193.png"}, description = "Become rich!"},
{name = "Earthmind Raiment", thingId = 25191, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25191.png"}, description = "Become rich!"},
{name = "Firemind Raiment", thingId = 25190, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 12, icons = {"25190.png"}, description = "Become rich!"},
{name = "Glacial Rod", thingId = 18412, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 6, icons = {"18412.png"}, description = "Become rich!"},
{name = "Muck Rod", thingId = 18411, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 4, icons = {"18411.png"}, description = "Become rich!"},
{name = "Spelbook of Dark Mysteries", thingId = 8918, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 150, icons = {"8918.png"}, description = "Become rich!"},
}
},
{ name = "Items Extra",
state = GameStore.States.STATE_NEW,
icons = {"Category_Gold.png"},
offers = {
-- Item Example : thingId = itemId
{name = "Crystal Coin", thingId = 2160, count = 100, type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, price = 2, icons = {"Product_CrystalCoin.png"}, description = "Become rich!"},
-- Item Example : thingId = itemId
{name = "Crystal Coin", thingId = 2160, count = 1000, type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, price = 15, icons = {"Product_CrystalCoin.png"}, description = "Become rich!"},
-- Item Example : thingId = itemId
{name = "Blood Herbs", thingId = 2798, count = 10, type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, price = 4, icons = {"2798.png"}, description = "Become rich!"},
-- Item Example : thingId = itemId
{name = "Zaoan Chess Box", thingId = 20620, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 4, icons = {"20620.png"}, description = "Become rich!"},
-- Item Example : thingId = itemId
{name = "Skull Remover", thingId = 11076, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, price = 10, icons = {"23806.png"}, description = "Become rich!"},
-- Item Example : thingId = itemId
{name = "Stamina Refiller", thingId = 12544, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_STACKABLE, price = 12, icons = {"12544.png"}, description = "Become rich!"},
-- Item Example : thingId = itemId
{name = "Claw of The Noxiuos Spawn", thingId = 10309, count = 1, type = GameStore.OfferTypes.OFFER_TYPE_ITEM, price = 8, icons = {"10309.png"}, description = "Become rich!"},
}
},
{ name = "Extra Services",
state = GameStore.States.STATE_NEW,
icons = {"Category_ExtraServices.png"},
offers = {
-- NameChange example
{name = "Character Name Change", type = GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE, price = 20, icons = {"Product_CharacterNameChange.png"}},
-- Sexchange example
{name = "Character Sex Change", type = GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE, price = 5, icons = {"Product_CharacterSexChange.png"}},
-- Promotion example
-- {name = "First Promotion", thingId = 1--[[ed/ms/rp/ek]], type = GameStore.OfferTypes.OFFER_TYPE_PROMOTION, price = 5, icons = {"Product_FirstPromotion.png"}},
{name = "30 Days of Premium Time", price = 250, state = GameStore.States.STATE_NEW, validUntil = 30, thingId = 30, type = GameStore.OfferTypes.OFFER_TYPE_PREMIUM, icons = {"Product_PremiumTime30.png"}, description = "Premium Account for 30 days."},
{name = "90 Days of Premium Time", price = 400, state = GameStore.States.STATE_NEW, validUntil = 30, thingId = 90, type = GameStore.OfferTypes.OFFER_TYPE_PREMIUM, icons = {"Product_PremiumTime90.png"}, description = "Premium Account for 90 days."},
{name = "180 Days of Premium Time", price = 700, state = GameStore.States.STATE_NEW, validUntil = 30, thingId = 180, type = GameStore.OfferTypes.OFFER_TYPE_PREMIUM, icons = {"Product_PremiumTime180.png"}, description = "Premium Account for 180 days."},
{name = "360 Days of Premium Time", price = 1000, state = GameStore.States.STATE_NEW, validUntil = 30, thingId = 360, type = GameStore.OfferTypes.OFFER_TYPE_PREMIUM, icons = {"Product_PremiumTime360.png"}, description = "Premium Account for 180 days."}
}
},
}
-- For Explanation and information
-- view the readme.md file in github or via markdown viewer.
-- Non-Editable
local runningId = 1
for k, category in ipairs(GameStore.Categories) do
if category.offers then
for m, offer in ipairs(category.offers) do
offer.id = runningId
runningId = runningId + 1
if not offer.type then
offer.type = GameStore.OfferTypes.OFFER_TYPE_NONE
end
end
end
end
how can i repair my init.lua for take premium time accept
this is my ...data\modules\scripts\gamestore\init.lua
-- Please don't edit those information!
GameStore = {
ModuleName = "GameStore",
Developer = "OTX TEAM",
Version = "0.3",
LastUpdated = "24-09-2016 07:15PM"
}
--== Enums ==--
GameStore.OfferTypes = {
OFFER_TYPE_NONE = 0, -- (this will disable offer)
OFFER_TYPE_ITEM = 1,
OFFER_TYPE_STACKABLE = 2,
OFFER_TYPE_OUTFIT = 3,
OFFER_TYPE_OUTFIT_ADDON = 4,
OFFER_TYPE_MOUNT = 5,
OFFER_TYPE_NAMECHANGE = 6,
OFFER_TYPE_SEXCHANGE = 7,
OFFER_TYPE_PROMOTION = 8
}
GameStore.ClientOfferTypes = {
CLIENT_STORE_OFFER_OTHER = 0,
CLIENT_STORE_OFFER_NAMECHANGE = 1
}
GameStore.HistoryTypes = {
HISTORY_TYPE_NONE = 0,
HISTORY_TYPE_GIFT = 1,
HISTORY_TYPE_REFUND = 2
}
GameStore.States = {
STATE_NONE = 0,
STATE_NEW = 1,
STATE_SALE = 2,
STATE_TIMED = 3
}
GameStore.StoreErrors = {
STORE_ERROR_PURCHASE = 0,
STORE_ERROR_NETWORK = 1,
STORE_ERROR_HISTORY = 2,
STORE_ERROR_TRANSFER = 3,
STORE_ERROR_INFORMATION = 4
}
GameStore.ServiceTypes = {
SERVICE_STANDERD = 0,
SERVICE_OUTFITS = 3,
SERVICE_MOUNTS = 4
}
GameStore.SendingPackets = {
S_CoinBalance = 0xDF, -- 223
S_StoreError = 0xE0, -- 224
S_RequestPurchaseData = 0xE1, -- 225
S_CoinBalanceUpdating = 0xF2, -- 242
S_OpenStore = 0xFB, -- 251
S_StoreOffers = 0xFC, -- 252
S_OpenTransactionHistory = 0xFD, -- 253
S_CompletePurchase = 0xFE -- 254
}
GameStore.RecivedPackets = {
C_StoreEvent = 0xE9, -- 233
C_TransferCoins = 0xEF, -- 239
C_OpenStore = 0xFA, -- 250
C_RequestStoreOffers = 0xFB, -- 251
C_BuyStoreOffer = 0xFC, -- 252
C_OpenTransactionHistory = 0xFD, -- 253
C_RequestTransactionHistory = 0xFE, -- 254
}
GameStore.DefaultValues = {
DEFAULT_VALUE_ENTRIES_PER_PAGE = 16
}
GameStore.DefaultDescriptions = {
OUTFIT = {"This outfit looks nice. Only high-class people are able to wear it!",
"An outfit that was created to suit you. We are sure you'll like it.",
"Legend says only smart people should wear it, otherwise you will burn!"},
MOUNT = {"This is a fantastic mount that helps to become faster, try it!",
"The first rider of this mount became the leader of his country! legends say that."},
NAMECHANGE = {"Are you hunted? Tired of that? Get a new name, a new life!",
"A new name to suit your needs!"},
SEXCHANGE = {"Bored of your character's sex? Get a new sex for him now!!"}
}
--==Parsing==--
GameStore.isItsPacket = function(byte)
for k, v in pairs(GameStore.RecivedPackets) do
if v == byte then
return true
end
end
return false
end
function onRecvbyte(player, msg, byte)
if byte == GameStore.RecivedPackets.C_StoreEvent then
-- Not Used!
elseif byte == GameStore.RecivedPackets.C_TransferCoins then
parseTransferCoins(player, msg)
elseif byte == GameStore.RecivedPackets.C_OpenStore then
parseOpenStore(player, msg)
elseif byte == GameStore.RecivedPackets.C_RequestStoreOffers then
parseRequestStoreOffers(player, msg)
elseif byte == GameStore.RecivedPackets.C_BuyStoreOffer then
parseBuyStoreOffer(player, msg)
elseif byte == GameStore.RecivedPackets.C_OpenTransactionHistory then
parseOpenTransactionHistory(player, msg)
elseif byte == GameStore.RecivedPackets.C_RequestTransactionHistory then
parseRequestTransactionHistory(player, msg)
end
return true
end
function parseTransferCoins(player, msg)
local reciver = msg:getString()
local amount = msg:getU32()
if reciver:lower() == player:getName():lower() then
return addPlayerEvent(sendStoreError, 350, player, GameStore.StoreErrors.STORE_ERROR_TRANSFER, "You can't transfer coins to yourself.")
end
local resultId = db.storeQuery("SELECT `account_id` FROM `players` WHERE `name` = " .. db.escapeString(reciver:lower()) .. "")
if not resultId then
return addPlayerEvent(sendStoreError, 350, player, GameStore.StoreErrors.STORE_ERROR_TRANSFER, "We couldn't find that player.")
end
local accountId = result.getDataInt(resultId, "account_id")
if accountId == player:getAccountId() then
return addPlayerEvent(sendStoreError, 350, player, GameStore.StoreErrors.STORE_ERROR_TRANSFER, "You cannot transfer coin to a character in the same account.")
end
db.asyncQuery("UPDATE `accounts` SET `premium_points` = `premium_points` + " .. amount .. " WHERE `id` = " .. accountId)
player:removeCoinsBalance(amount)
addPlayerEvent(sendStorePurchaseSuccessful, 550, player, "You have transfered " .. amount .. " coins to " .. reciver .. " successfully")
-- Adding history for both reciver/sender
GameStore.insertHistory(accountId, GameStore.HistoryTypes.HISTORY_TYPE_NONE, player:getName() .. " transfered you this amount.", amount)
GameStore.insertHistory(player:getAccountId(), GameStore.HistoryTypes.HISTORY_TYPE_NONE, "You transfered this amount to " .. reciver, -1 * amount) -- negative
end
function parseOpenStore(player, msg)
openStore(player)
local serviceType = msg:getByte()
local category = GameStore.Categories and GameStore.Categories[1] or nil
if serviceType == GameStore.ServiceTypes.SERVICE_OUTFITS then
category = GameStore.getCategoryByName("outfits")
elseif serviceType == GameStore.ServiceTypes.SERVICE_MOUNTS then
category = GameStore.getCategoryByName("mounts")
end
if category then
addPlayerEvent(sendShowStoreOffers, 350, player, category)
end
end
function parseRequestStoreOffers(player, msg)
local serviceType = GameStore.ServiceTypes.SERVICE_STANDERD
if player:getClient().version >= 1092 then
serviceType = msg:getByte()
end
local categoryName = msg:getString()
local category = GameStore.getCategoryByName(categoryName)
if category then
addPlayerEvent(sendShowStoreOffers, 350, player, category)
end
end
function parseBuyStoreOffer(player, msg)
local offerId = msg:getU32()
local productType = msg:getByte()
local offer = GameStore.getOfferById(offerId)
if offer then
-- If we don't add type, or offer type is fake
if not offer.type or offer.type == GameStore.OfferTypes.OFFER_TYPE_NONE then
return addPlayerEvent(sendStoreError, 250, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "The offer is either fake or corrupt.")
end
-- If no thing id,
if offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE and not offer.thingId then
return addPlayerEvent(sendStoreError, 250, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "The offer is either fake or corrupt.")
end
-- We remove coins before doing everything, if it fails, we add coins back!
if not player:canRemoveCoins(offer.price) then
return addPlayerEvent(sendStoreError, 250, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "We couldn't remove coins from your account, try again later.")
end
-- count is used in type(item), so we need to show (i.e 10x crystal coins)
local offerCountStr = offer.count and (offer.count .. "x ") or ""
-- The message which we will send to player!
local message = "You have purchased " .. offerCountStr .. offer.name .. " for " .. offer.price .. " coins."
-- If offer is item.
if offer.type == GameStore.OfferTypes.OFFER_TYPE_ITEM then
local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX)
if inbox and inbox:getEmptySlots() > offer.count then
for t = 1,offer.count do
inbox:addItem(offer.thingId, offer.count or 1)
end
else
return addPlayerEvent(sendStoreError, 250, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "Please make sure you have free slots in your store inbox.")
end
-- If offer is Stackable.
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_STACKABLE then
local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX)
if inbox and inbox:getEmptySlots() > 0 then
local parcel = inbox:addItem(2596, 1)
local packagename = ''.. offer.count..'x '.. offer.name ..' package.'
if parcel then
parcel:setAttribute(ITEM_ATTRIBUTE_NAME, packagename)
for e = 1,offer.count do
parcel:addItem(offer.thingId, 1)
end
end
else
return addPlayerEvent(sendStoreError, 250, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "Please make sure you have free slots in your store inbox.")
end
-- If offer is outfit/addon
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_OUTFIT or offer.type == GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON then
local outfitLookType
if player:getSex() == PLAYERSEX_MALE then
outfitLookType = offer.thingId.male
else
outfitLookType = offer.thingId.female
end
if not outfitLookType then
return addPlayerEvent(sendStoreError, 250, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "This outfit seems not to suit your sex, we are sorry for that!")
end
player:addOutfitAddon(outfitLookType, offer.addon or 0)
-- If offer is mount
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_MOUNT then
player:addMount(offer.thingId)
-- If offer is name change
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE then
-- If player typed name yet!
if productType == GameStore.ClientOfferTypes.CLIENT_STORE_OFFER_NAMECHANGE then
local newName = msg:getString()
local resultId = db.storeQuery("SELECT * FROM `players` WHERE `name` = " .. db.escapeString(newName) .. "")
if resultId ~= false then
return addPlayerEvent(sendStoreError, 650, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "This name is already used, please try again!")
end
local result = GameStore.canChangeToName(newName)
if not result.ability then
return addPlayerEvent(sendStoreError, 650, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, result.reason)
end
newName = newName:lower():gsub("(%l)(%w*)", function(a, b) return string.upper(a) .. b end)
db.asyncQuery("UPDATE `players` SET `name` = " .. db.escapeString(newName) .. " WHERE `id` = " .. player:getGuid())
message = "You have successfully changed you name, you must relog to see changes."
-- If not, we ask him to do!
else
return addPlayerEvent(sendRequestPurchaseData, 250, player, offer.id, GameStore.ClientOfferTypes.CLIENT_STORE_OFFER_NAMECHANGE)
end
-- If offer is sex change
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE then
player:toggleSex()
-- If offer is promotion
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_PROMOTION then
if not GameStore.addPromotionToPlayer(player, offer.thingId) then
return false
end
-- You can add whatever offer types to suit your needs!
else
-- ToDo :: implement purchase function
return addPlayerEvent(sendStoreError, 250, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "This offer is fake, please contact admin.")
end
-- Removing coins
player:removeCoinsBalance(offer.price)
-- We add this purchase to history!
GameStore.insertHistory(player:getAccountId(), GameStore.HistoryTypes.HISTORY_TYPE_NONE, offerCountStr .. offer.name, offer.price * -1)
-- Send to client that purchase is successful!
return addPlayerEvent(sendStorePurchaseSuccessful, 650, player, message)
end
-- If we didn't found the offer or error happened
addPlayerEvent(sendStoreError, 350, player, GameStore.StoreErrors.STORE_ERROR_INFORMATION, "We couldn't locate this offer, please try again later.")
end
-- Both functions use same formula!
function parseOpenTransactionHistory(player, msg)
local page = 1
GameStore.DefaultValues.DEFAULT_VALUE_ENTRIES_PER_PAGE = msg:getByte()
sendStoreTransactionHistory(player, page, GameStore.DefaultValues.DEFAULT_VALUE_ENTRIES_PER_PAGE)
end
function parseRequestTransactionHistory(player, msg)
local page = msg:getU32()
sendStoreTransactionHistory(player, page, GameStore.DefaultValues.DEFAULT_VALUE_ENTRIES_PER_PAGE)
end
--==Sending==--
function openStore(player)
if not GameStore.Categories then
return false
end
local msg = NetworkMessage()
msg:addByte(GameStore.SendingPackets.S_OpenStore)
msg:addByte(0x00)
msg:addU16(#GameStore.Categories)
for k, category in ipairs(GameStore.Categories) do
msg:addString(category.name)
msg:addString(category.description)
if player:getClient().version >= 1093 then
msg:addByte(category.state or GameStore.States.STATE_NONE)
end
msg:addByte(#category.icons)
for m, icon in ipairs(category.icons) do
msg:addString(icon)
end
msg:addString(category.parentCategory)
end
msg:sendToPlayer(player)
sendCoinBalanceUpdating(player, true)
end
function sendShowStoreOffers(player, category)
local msg = NetworkMessage()
msg:addByte(GameStore.SendingPackets.S_StoreOffers)
msg:addString(category.name)
msg:addU16(category.offers and #category.offers or 0x00)
if category.offers then
for k, offer in ipairs(category.offers) do
msg:addU32(offer.id and offer.id or 0xFFFF) -- we later detect this number!
local name = ""
if offer.type == GameStore.OfferTypes.OFFER_TYPE_ITEM and offer.count then
name = offer.count .. "x "
end
if offer.type == GameStore.OfferTypes.OFFER_TYPE_STACKABLE and offer.count then
name = offer.count .. "x "
end
name = name .. (offer.name or "Something Special")
msg:addString(name)
msg:addString(offer.description or GameStore.getDefaultDescription(offer.type))
msg:addU32(offer.price and offer.price or 0xFFFF)
msg:addByte(offer.state or GameStore.States.STATE_NONE) -- default is none
local disabled, disabledReason = 0, ""
if offer.disabled == true or not offer.type then
disabled = 1
end
if offer.type ~= GameStore.OfferTypes.OFFER_TYPE_NAMECHANGE and offer.type ~= GameStore.OfferTypes.OFFER_TYPE_SEXCHANGE and not offer.thingId then
disabled = 1
end
if disabled == 1 and offer.disabledReason then -- dynamic disable
disabledReason = offer.disabledReason
end
if disabled ~= 1 then
if offer.type == GameStore.OfferTypes.OFFER_TYPE_OUTFIT or offer.type == GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON then
local outfitLookType
if player:getSex() == PLAYERSEX_MALE then
outfitLookType = offer.thingId.male
else
outfitLookType = offer.thingId.female
end
if outfitLookType then
if offer.type == GameStore.OfferTypes.OFFER_TYPE_OUTFIT and player:hasOutfit(outfitLookType) then
disabled = 1
disabledReason = "You already have this outfit."
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_OUTFIT_ADDON then
if player:hasOutfit(outfitLookType) then
if player:hasOutfit(outfitLookType, offer.addon) then
disabled = 1
disabledReason = "You already have this addon."
end
else
disabled = 1
disabledReason = "You don't have the outfit, you can't buy the addon."
end
end
else
disabled = 1
disabledReason = "The offer is fake."
end
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_MOUNT then
local hasMount = player:hasMount(offer.thingId)
if hasMount == true then
disabled = 1
disabledReason = "You already have this mount."
end
elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_PROMOTION then
if GameStore.canAddPromotionToPlayer(player, offer.thingId).ability == false then
disabled = 1
disabledReason = "You can't get this promotion"
end
end
end
msg:addByte(disabled)
if disabled == 1 and player:getClient().version >= 1093 then
msg:addString(disabledReason)
end
msg:addByte(#offer.icons)
for k, icon in ipairs(offer.icons) do
msg:addString(icon)
end
msg:addU16(0) -- We still don't support SubOffers!
end
end
msg:sendToPlayer(player)
end
function sendStoreTransactionHistory(player, page, entriesPerPage)
local entries = GameStore.retrieveHistoryEntries(player:getAccountId()) -- this makes everything easy!
if #entries == 0 then
return addPlayerEvent(sendStoreError, 250, player, GameStore.StoreErrors.STORE_ERROR_HISTORY, "You don't have any entries yet.")
end
local toSkip = (page - 1) * entriesPerPage
for i = 1, toSkip do
table.remove(entries, 1) -- we remove first!
end
local msg = NetworkMessage()
msg:addByte(GameStore.SendingPackets.S_OpenTransactionHistory)
msg:addU32(page)
msg:addU32(#entries > entriesPerPage and 0x01 or 0x00)
msg:addByte(#entries >= entriesPerPage and entriesPerPage or #entries)
for k, entry in ipairs(entries) do
if k >= entriesPerPage then break end
msg:addU32(entry.time)
msg:addByte(entry.mode)
msg:addU32(entry.amount)
msg:addString(entry.description)
end
msg:sendToPlayer(player)
end
function sendStorePurchaseSuccessful(player, message)
local msg = NetworkMessage()
msg:addByte(GameStore.SendingPackets.S_CompletePurchase)
msg:addByte(0x00)
msg:addString(message)
msg:addU32(player:getCoinsBalance())
msg:addU32(player:getCoinsBalance())
msg:sendToPlayer(player)
end
function sendStoreError(player, errorType, message)
local msg = NetworkMessage()
msg:addByte(GameStore.SendingPackets.S_StoreError)
msg:addByte(errorType)
msg:addString(message)
msg:sendToPlayer(player)
end
function sendCoinBalanceUpdating(player, updating)
local msg = NetworkMessage()
msg:addByte(GameStore.SendingPackets.S_CoinBalanceUpdating)
msg:addByte(0x00)
msg:sendToPlayer(player)
if updating == true then
sendUpdateCoinBalance(player)
end
end
function sendUpdateCoinBalance(player)
local msg = NetworkMessage()
msg:addByte(GameStore.SendingPackets.S_CoinBalanceUpdating)
msg:addByte(0x01)
msg:addByte(GameStore.SendingPackets.S_CoinBalance)
msg:addByte(0x01)
msg:addU32(player:getCoinsBalance())
msg:addU32(player:getCoinsBalance())
msg:sendToPlayer(player)
end
function sendRequestPurchaseData(player, offerId, type)
local msg = NetworkMessage()
msg:addByte(GameStore.SendingPackets.S_RequestPurchaseData)
msg:addU32(offerId)
msg:addByte(type)
msg:sendToPlayer(player)
end
--==GameStoreFunctions==--
GameStore.getCategoryByName = function(name)
for k, category in ipairs(GameStore.Categories) do
if category.name:lower() == name:lower() then
return category
end
end
return nil
end
GameStore.getOfferById = function(id)
for Cat_k, category in ipairs(GameStore.Categories) do
if category.offers then
for Off_k, offer in ipairs(category.offers) do
if offer.id == id then
return offer
end
end
end
end
return nil
end
GameStore.insertHistory = function(accountId, mode, description, amount)
return db.asyncQuery(string.format("INSERT INTO `store_history`(`account_id`, `mode`, `description`, `coin_amount`, `time`) VALUES (%s, %s, %s, %s, %s)", accountId, mode, db.escapeString(description), amount, os.time()))
end
GameStore.retrieveHistoryEntries = function(accountId)
local entries = {}
local resultId = db.storeQuery("SELECT * FROM `store_history` WHERE `account_id` = " .. accountId .. " ORDER BY `time` DESC LIMIT 15;")
if resultId ~= false then
repeat
local entry = {
mode = result.getDataInt(resultId, "mode"),
description = result.getDataString(resultId, "description"),
amount = result.getDataInt(resultId, "coin_amount"),
time = result.getDataInt(resultId, "time"),
}
table.insert(entries, entry)
until not result.next(resultId)
result.free(resultId)
end
return entries
end
GameStore.getDefaultDescription = function(offerType)
local t, descList = GameStore.OfferTypes
if offerType == t.OFFER_TYPE_OUTFIT or offerType == t.OFFER_TYPE_OUTFIT_ADDON then
descList = GameStore.DefaultDescriptions.OUTFIT
elseif offerType == t.OFFER_TYPE_MOUNT then
descList = GameStore.DefaultDescriptions.MOUNT
elseif offerType == t.OFFER_TYPE_NAMECHANGE then
descList = GameStore.DefaultDescriptions.NAMECHANGE
elseif offerType == t.OFFER_TYPE_SEXCHANGE then
descList = GameStore.DefaultDescriptions.SEXCHANGE
else
return ""
end
return descList[math.floor(math.random(1, #descList))] or ""
end
GameStore.canChangeToName = function(name)
local result = {
ability = false
}
if name:len() < 3 or name:len() > 14 then
result.reason = "Your new name's length should be lower than 3 or higher than 14."
return result
end
-- just copied from znote aac.
local words = {"owner", "gamemaster", "hoster", "admin", "staff", "tibia", "account", "god", "anal", "ass", "fuck", "sex", "hitler", "pussy", "dick", "rape", "cm", "gm", "tutor", "counsellor"}
local split = name:split(" ")
for k, word in ipairs(words) do
for k, nameWord in ipairs(split) do
if nameWord:lower() == word then
result.reason = "You can't use word \"" .. word .. "\" in your new name."
return result
end
end
end
if MonsterType(name) then
result.reason = "Your new name \"" .. name .. "\" can't be a monster's name."
return result
elseif Npc(name) then
result.reason = "Your new name \"" .. name .. "\" can't be a npc's name."
return result
end
local letters = "{}|_*+-=<>0123456789@#%^&()/*\\.,:;~!\"$"
for i = 1, letters:len() do
local c = letters:sub(i, i)
for i = 1, name:len() do
local m = name:sub(i, i)
if m == c then
result.reason = "You can't use this letter \"" .. c .. "\" in your new name."
return result
end
end
end
result.ability = true
return result
end
GameStore.canAddPromotionToPlayer = function(player, promotion, send)
local result = {
ability = true
}
local vocation = player:getVocation()
-- Working --
local vocationCopy, baseVocation = vocation, vocation
vocation = vocation:getDemotion()
while vocation do
baseVocation = vocation
vocation = vocation:getDemotion()
end
local baseVocationsCount = GameStore.BaseVocationsCount or 4
local newVocId = (baseVocationsCount * promotion) + baseVocation:getId()
if not Vocation(newVocId) then
if send then
addPlayerEvent(sendStoreError, 350, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "The offer is fake, please report it!")
end
result.ability = false
return result
end
-- If promotion is less than player's voc, or player don't have previous promotion
if newVocId <= vocationCopy:getId() then
if send then
addPlayerEvent(sendStoreError, 350, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "You already have this promotion!")
end
result.ability = false
return result
end
if (newVocId - baseVocationsCount) ~= vocationCopy:getId() then
if send then
addPlayerEvent(sendStoreError, 350, player, GameStore.StoreErrors.STORE_ERROR_NETWORK, "You need higher promotion to get his one.")
end
result.ability = false
return result
end
result.vocId = newVocId
return result
end
GameStore.addPromotionToPlayer = function(player, promotion)
local result = GameStore.canAddPromotionToPlayer(player, promotion, true)
if result.ability == false then return false end
local basics = {
health = 185,
mana = 40,
cap = 500
}
player:setVocation(result.vocId)
local newVoc = player:getVocation()
player:setMaxHealth(basics.health + (newVoc:getHealthGain() * player:getLevel()))
player:setMaxMana(basics.mana + (newVoc:getManaGain() * player:getLevel()))
player:setCapacity(basics.cap + (newVoc:getCapacityGain() * player:getLevel()))
player:addHealth(player:getMaxHealth())
player:addMana(player:getMaxMana())
player:sendTextMessage(MESSAGE_INFO_DESCR, "You have been promoted to " .. newVoc:getName())
return true
end
--==Player==--
function Player.getCoinsBalance(self)
resultId = db.storeQuery("SELECT `premium_points` FROM `accounts` WHERE `id` = " .. self:getAccountId())
if not resultId then return 0 end
return result.getDataInt(resultId, "premium_points")
end
function Player.setCoinsBalance(self, coins)
db.asyncQuery("UPDATE `accounts` SET `premium_points` = " .. coins .. " WHERE `id` = " .. self:getAccountId())
return true
end
function Player.canRemoveCoins(self, coins)
if self:getCoinsBalance() < coins then
return false
end
return true
end
function Player.removeCoinsBalance(self, coins)
if self:canRemoveCoins(coins) then
return self:setCoinsBalance(self:getCoinsBalance() - coins)
end
return false
end
function Player.addCoinsBalance(self, coins, update)
self:setCoinsBalance(self:getCoinsBalance() + coins)
if update then sendCoinBalanceUpdating(self, true) end
return true
end
function Player.toggleSex(self)
local currentSex = self:getSex()
local playerOutfit = self:getOutfit()
if currentSex == PLAYERSEX_FEMALE then
self:setSex(PLAYERSEX_MALE)
playerOutfit.lookType = 128
else
self:setSex(PLAYERSEX_FEMALE)
playerOutfit.lookType = 136
end
self:setOutfit(playerOutfit)
end