eluna-scripts-ornfelt/lua/WowEmulationScriptPack/Lua/Red envelopes.lua

586 lines
25 KiB
Lua
Raw Permalink Normal View History

2023-08-16 00:50:59 +02:00
---by ljq5555
local itemcd = 50000 --物品ID
local systemname = '红包系统' --功能名称
local people_num = 1 --红包最少可抢的人数
local people_MaxNum = 100 --红包最大可抢的人数
local Fname = '|cFF1BE6B8[' .. systemname .. ']|r' --广播前缀
local senditem = 22528 --可发货币--暂用黑铁碎片
local minItemCount = 1 --最少发送物品数量
local maxItemCount = 100--最多发送物品数量
local minMoney = 1 --最少发送金币数量 单位金
local maxMoney = 1000 --最多发送金币数量 单位金
local Levelexp = {5, 1}
local paihangbang = 10 --排行榜显示最大人数
local minlevel = 8 --抢红包的最低等级
--每最小单位积累的经验值 影响排行榜
local level = {
[1] = {'|cFFFF0000小气鬼|r', 0},
[2] = {'|cFFFF0000财|r|cFFAA1655助|r', 1},
[3] = {'|cFFFF0000大|r|cFF0041FF财|r|cFF1BE6B8主|r', 50},
[4] = {'|cFFFF0000壕|r|cFFCC0D33无|r|cFF991A66人|r|cFF662799性|r', 100}
}
local playerinfo = {}
local rediteminfo = {}
local redSendingDic = {}
local Maxid = 0
CharDBExecute(
[[
CREATE TABLE IF NOT EXISTS `_player_red` (
`guid` bigint(20) DEFAULT NULL,
`name` text,
`exp` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
]]
)
CharDBExecute(
[[
CREATE TABLE IF NOT EXISTS `_player_red_list` (
`Remarks` text,
`guild` int(11) NOT NULL DEFAULT '0',
`yue` int(11) NOT NULL DEFAULT '0',
`yx` int(11) NOT NULL DEFAULT '1',
`id` int(11) NOT NULL AUTO_INCREMENT,
`itemid` int(11) NOT NULL DEFAULT '0',
`nums` int(11) NOT NULL DEFAULT '0',
`fenpei` text,
`redCount` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
]]
)
local text = CharDBQuery('select guid,name,exp from _player_Red')
if (text) then
repeat
playerinfo[tonumber(text:GetString(0))] = {
text:GetString(1),
tonumber(text:GetString(2))
}
until not text:NextRow()
end
text = CharDBQuery('select id,Remarks,guild,yue,itemid,nums,fenpei,redCount from _player_red_list WHERE YX=1 order by id')
if (text) then
repeat
rediteminfo[tonumber(text:GetString(0))] = {
['Remarks'] = text:GetString(1),
['guild'] = tonumber(text:GetString(2)),
['yue'] = tonumber(text:GetString(3)),
['itemid'] = tonumber(text:GetString(4)),
['nums'] = tonumber(text:GetString(5)),
['id'] = tonumber(text:GetString(0)),
['fenpei'] = text:GetString(6),
['redCount'] = tonumber(text:GetString(7))
}
until not text:NextRow()
end
text = CharDBQuery("SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '_player_red_list'")
if (text) then
Maxid = tonumber(text:GetString(0))
end
function Red_Book(event, player, item)
--player:MoveTo(0, player:GetX() + 0.01, player:GetY(), player:GetZ())
player:MoveTo(0,player:GetX(),player:GetY(),player:GetZ()+0.01)--移动就停止当前施法
if (player:IsInCombat() == true) then
player:SendAreaTriggerMessage(Fname .. '你不能在战斗中使用!')
player:SendBroadcastMessage(Fname .. '你不能在战斗中使用')
else
if (player:GetLevel() < minlevel) then
player:SendAreaTriggerMessage(Fname .. '你还不能使用此功能!需要达到等级' .. minlevel .. '')
player:SendBroadcastMessage(Fname .. '你还不能使用此功能!需要达到等级' .. minlevel .. '')
else
Red_Menu(item, player)
end
end
return false
end
function Red_Menu(item, player)
player:GossipMenuAddItem(5, '|cFFFF0000------------------' .. systemname .. '------------------|r', 0, 998)
player:GossipMenuAddItem(6, '|cFFFF0000我壕无人性-我要发红包|r', 0, 2)
player:GossipMenuAddItem(6, '|cFF000000我穷我有理-我要抢红包|r', 0, 3)
player:GossipMenuAddItem(6, '|cFFCC0099壕排行榜|r', 0, 4)
player:GossipSendMenu(1, item)
end
function Get_levelName(levelexp)
if levelexp >= level[4][2] then
return level[4][1]
elseif levelexp >= level[3][2] then
return level[3][1]
elseif levelexp >= level[2][2] then
return level[2][1]
elseif levelexp >= level[1][2] then
return level[1][1]
end
end
function StrSplit(str, reps)
local StrList = {}
string.gsub(
str,
'[^' .. reps .. ']+',
function(F)
table.insert(StrList, F)
end
)
return StrList
end
function CheckRight(playerid, intid, player)
if rediteminfo[intid]['yue'] == rediteminfo[intid]['redCount'] then
rediteminfo[intid]['Remarks'] = tostring(playerid)
rediteminfo[intid]['yue'] = rediteminfo[intid]['yue']-1
Updateredinfo(rediteminfo[intid]['id'], rediteminfo[intid]['yue'], rediteminfo[intid]['Remarks'], player)
return true
end
local list = StrSplit(rediteminfo[intid]['Remarks'], '|')
for i, v in pairs(list) do
if tostring(v) == tostring(playerid) then
player:SendBroadcastMessage(Fname .. '这个红包你已经抢过啦')
return false
end
end
rediteminfo[intid]['Remarks'] = rediteminfo[intid]['Remarks'] .. '|' .. tostring(playerid)
rediteminfo[intid]['yue'] = rediteminfo[intid]['yue'] - 1
Updateredinfo(rediteminfo[intid]['id'], rediteminfo[intid]['yue'], rediteminfo[intid]['Remarks'], player)
return true
end
--判断是否已经领过此红包
function CheckLeft(playerid, intid)
if rediteminfo[intid]['yue'] == rediteminfo[intid]['redCount'] then
return true
end
local list = StrSplit(rediteminfo[intid]['Remarks'], '|')
for i, v in pairs(list) do
if tostring(v) == tostring(playerid) then
return false
end
end
return true
end
function Updateredinfo(id, yue, Remarks, player)
local x = StrSplit(rediteminfo[id]['fenpei'], '|')
if yue > 0 then
CharDBQuery('update _player_Red_list set yue=' .. yue .. ",remarks='" .. Remarks .. "' where id =" .. id)
else
CharDBQuery('update _player_Red_list set yue=' .. yue .. ",remarks='" .. Remarks .. "',yx=0 where id =" .. id)
end
local y = tonumber(x[yue + 1])
local sendstr
if (rediteminfo[id]['itemid'] == 0) then
sendstr = '|cFFFF0000' .. y .. ' 金币|r'
y = y * 100 * 100
player:ModifyMoney(y)
player:SendBroadcastMessage(Fname .. '|cFFFF0000你抢到了一个红包获得|r' .. sendstr)
else
sendstr = GetItemLink(rediteminfo[id]['itemid'],4) .. '|cFFFF0000X' .. y .. '个|r'
player:SendBroadcastMessage(Fname .. '|cFFFF0000你抢到了一个红包获得|r' .. sendstr)
player:AddItem(rediteminfo[id]['itemid'], y)
end
if (yue == 0) then
rediteminfo[id] = nil
end
SendWorldMessage(Fname .. '[' .. player:GetName() .. ']|cFFFF0000抢到了一个红包,获得了|r' .. sendstr)
end
function Updateinfo(guid, name, exp, item_id, guild, itemcount)
if playerinfo[guid] == nil then
CharDBQuery(
"INSERT INTO `_player_Red` (`guid`,`name`,`exp`) VALUES ('" ..
tostring(guid) .. "','" .. name .. "','" .. exp .. "')"
)
playerinfo[guid] = {name, exp}
else
playerinfo[guid] = {name, playerinfo[guid][2] + exp}
CharDBQuery('update _player_Red set exp=' .. playerinfo[guid][2] .. ' where guid=' .. guid)
end
math.randomseed(tostring(os.time()):reverse():sub(1, 6))
--获取当前红包数据
local redSending = redSendingDic[guid]
if redSending == nil then
print("Red Envelopers error:".."Updateinfo")
end
local data = splitX(tonumber(itemcount), redSending.redCount)
CharDBQuery(
"INSERT INTO `_player_red_list` (`guild`,`itemid`,`nums`,`yue`,`fenpei`,`redCount`) VALUES ('" ..
guild .. "','" .. item_id .. "','" .. itemcount .. "','" .. redSending.redCount .. "','" .. data .. "','" .. redSending.redCount .. "')"
)
rediteminfo[Maxid] = {
['Remarks'] = '',
['guild'] = guild,
['yue'] = redSending.redCount,--红包数量
['itemid'] = item_id,
['nums'] = itemcount, --总金额、数量
['id'] = Maxid,
['fenpei'] = data,
['redCount'] = redSending.redCount
}
Maxid = Maxid + 1
redSendingDic[guid] = nil
end
function Red_Select(event, player, item, sender, intid, code, menu_id)
print(string.format("event:%s player:%s object:%s sender:%s intid:%s code:%s menu_id:%s", event, tostring(player:GetGUIDLow()), tostring(item), tostring(sender), intid, code, menu_id))
if intid == 1 or intid == 21 then
player:SendAreaTriggerMessage(Fname .. '土豪,发个红包,我们就是朋友啦')
player:SendBroadcastMessage(Fname .. '土豪,发个红包,我们就是朋友啦')
elseif intid > 10000 then
local last = true
if (rediteminfo[intid - 10000] == nil) then
last = false
end
if last and rediteminfo[intid - 10000]['yue'] > 0 and CheckRight(player:GetGUID(), intid - 10000, player) then
player:GossipMenuAddItem(6, '|cff0000ff', 0, 3)
player:GossipMenuAddItem(6, '|cFF000000返回上一层|r',0,3)
else
player:SendAreaTriggerMessage(Fname .. '你下手慢啦,被别人抢走了')
player:SendBroadcastMessage(Fname .. '你下手慢啦,被别人抢走了')
player:GossipMenuAddItem(6, '|cff0000ff', 0, 3)
player:GossipMenuAddItem(6, '|cFF000000返回上一层|r',0,3)
end
player:GossipSendMenu(1, item)
elseif intid == 31 or intid == 32 then
local keys = {}
for k, v in pairs(rediteminfo) do
table.insert(keys, k)
end
table.sort(
keys,
function(a, b)
return a > b
end
)
local menucdadd = 10000
local Guild = 0
if intid == 32 and not player:IsInGuild() then
player:SendBroadcastMessage(Fname .. '请您先加入一个工会!')
player:GossipComplete()
return true
end
Guild = player:GetGuildId()
local jz = false --is red vailable?
local nums = 0
for i, v in pairs(keys) do
if rediteminfo[v]['guild'] > 0 then
if (not player:IsInGuild()) or (not (Guild == rediteminfo[v]['guild'])) or (intid == 31) then
jz = false
else
jz = true
end
else
if intid == 32 then
jz = false
else
jz = true
end
end
if jz and CheckLeft(player:GetGUID(), rediteminfo[v]['id']) then
if rediteminfo[v]['itemid'] > 0 then
player:GossipMenuAddItem(6, '|TInterface\\ICONS\\red\\read.blp:20|t ' ..
GetItemLink(rediteminfo[v]['itemid'],4) ..
'X' .. rediteminfo[v]['nums'] .. ' [' .. rediteminfo[v]['id'] .. ']',0,menucdadd + rediteminfo[v]['id']
)
else
player:GossipMenuAddItem(6, '|cFF0041FF金币X' ..
rediteminfo[v]['nums'] .. ' [' .. rediteminfo[v]['id'] .. ']',0,menucdadd + rediteminfo[v]['id']
)
end
nums = nums + 1
end
end
if (nums == 0) then
player:SendBroadcastMessage(Fname .. '没有可以抢的红包!您可以自己发一个哦!')
player:SendAreaTriggerMessage(Fname .. '没有可以抢的红包!您可以自己发一个哦!')
player:GossipComplete()
return true
end
player:GossipMenuAddItem(6, '|cFF000000返回上一层|r',0,3)
player:GossipSendMenu(1, item)
elseif intid == 3 then
player:GossipMenuAddItem(6, '|cFF0041FF世界红包|r', 0, 31)
player:GossipMenuAddItem(6, '|cFF0041FF工会红包|r', 0, 32)
player:GossipMenuAddItem(6, '|cFF000000返回主菜单|r', 0, 99)
player:GossipSendMenu(1, item)
elseif intid == 4 then
local keys = {}
for k, v in pairs(playerinfo) do
table.insert(keys, k)
end
table.sort(
keys,
function(a, b)
return a < b
end
)
local qishu = 0
for i, v in pairs(keys) do
qishu = qishu + 1
if (qishu > paihangbang) then
break
else
if (qishu % 2 == 0) then
player:GossipMenuAddItem(
6,
'|cFFFF0000' ..
playerinfo[v][1] .. '-富豪值:' .. playerinfo[v][2] .. '|r',
0,
99
)
else
player:GossipMenuAddItem(
6,
'|cFF0041FF' ..
playerinfo[v][1] .. '-富豪值:' .. playerinfo[v][2] .. '|r',
0,
99
)
end
end
end
player:GossipMenuAddItem(
6,
'|cFF000000返回主菜单|r',
0,
99
)
player:GossipSendMenu(1, item)
elseif intid == 2 then
player:GossipMenuAddItem(6, '|cFFFF0000' .. GetItemLink(senditem,4) .. '红包雨-所有人可见|r',0,22)
player:GossipMenuAddItem(6, '|cFFFF0000' .. GetItemLink(senditem,4) .. '工会红包|r',0,23)
player:GossipMenuAddItem(6, '|cFFFF0000金币红包雨-所有人可见|r',0,24)
player:GossipMenuAddItem(6, '|cFFFF0000金币-工会红包|r',0,25)
player:GossipMenuAddItem(6, '|cFF000000返回主菜单|r',0,99)
player:GossipSendMenu(1, item)
elseif intid == 99 then
Red_Menu(item, player)
elseif intid == 22 or intid == 23 or intid == 24 or intid == 25 then
--存储当前红包数据
local redSending = redSendingDic[player:GetGUIDLow()]
if redSending == nil then
redSending = {type=intid,redCount=0,totalCount=0}
redSendingDic[player:GetGUIDLow()] = redSending;
else
redSending.type = intid
redSending.redCount = 0
redSending.totalCount = 0
end
if (intid == 23 or intid == 25) then
if not player:IsInGuild() then
player:SendBroadcastMessage(Fname .. '请您先加入一个工会!')
player:GossipComplete()
return true
end
end
player:GossipMenuAddItem(6, '|cFFFF0000要发多少个红包|r',0,201,true)
player:GossipSendMenu(1, item)
elseif intid == 201 then
--获取当前红包数据
local redSending = redSendingDic[player:GetGUIDLow()]
if redSending == nil then
print("Red Envelopers error:"..intid)
end
local redCount = tonumber(code)
if (redCount == nil) then
player:SendBroadcastMessage(Fname .. '请输入正确的红包个数!')
player:GossipComplete()
return true
elseif(redCount<people_num) then
player:SendBroadcastMessage(Fname .. '最少要发'..people_num..'个红包!')
player:GossipComplete()
return true
elseif(redCount>people_MaxNum) then
player:SendBroadcastMessage(Fname .. '最大只能发'..people_MaxNum..'个红包!')
player:GossipComplete()
return true
end
redSending.redCount = redCount;
player:GossipMenuAddItem(6, '|cFFFF0000总共要发多少钱/数量?|r',0,202,true)
player:GossipSendMenu(1, item)
elseif intid == 202 then
--获取当前红包数据
local redSending = redSendingDic[player:GetGUIDLow()]
if redSending == nil then
print("Red Envelopers error:"..intid)
end
local redType = redSending.type
local itemcount = tonumber(code)
if (itemcount == nil) then
player:SendBroadcastMessage(Fname .. '请输入正确的数字!')
player:GossipComplete()
return true
elseif(itemcount < redSending.redCount) then
player:SendBroadcastMessage(Fname .. '总数量/金额要大于或等于红包数量!')
player:GossipComplete()
return true
end
redSending.totalCount = itemcount
local Worldmessagestr = ''
local Kind = ''
local Guild = 0
if (redType == 23 or redType == 25) then
if not player:IsInGuild() then
player:SendBroadcastMessage(Fname .. '请您先加入一个工会!')
player:GossipComplete()
return true
end
Kind = '|cFFE55AAF工|r|cFFCA6EA7会|r'
Guild = player:GetGuildId()
end
local m = false
local playerexp = 50
if (redType == 22 or redType == 23) then
if (minItemCount > itemcount) then
player:SendBroadcastMessage(
Fname .. '土豪,红包最少需要发送' .. minItemCount .. '' .. GetItemLink(senditem,4) .. '哦!'
)
player:GossipComplete()
return true
elseif(itemcount > maxItemCount) then
player:SendBroadcastMessage(
Fname .. '土豪,红包最多只能发送' .. maxItemCount .. '' .. GetItemLink(senditem,4) .. '哦!'
)
player:GossipComplete()
return true
end
if (player:HasItem(senditem, itemcount)) then
player:RemoveItem(senditem, itemcount)
player:SendBroadcastMessage(
Fname .. '|cFF33CC33你失去了|r ' .. GetItemLink(senditem,4) .. ' |cFF33CC33x ' .. itemcount .. ' 个|r'
)
else
player:SendBroadcastMessage(Fname .. '对不起.你没有' .. GetItemLink(senditem,4) .. 'X' .. itemcount .. '.无法发红包')
player:SendAreaTriggerMessage(
Fname .. '对不起.你没有' .. GetItemLink(senditem,4) .. 'X' .. itemcount .. '.无法发红包'
)
end
else
if (minMoney > itemcount) then
player:SendBroadcastMessage(Fname .. '土豪,红包最少需要发送' .. minMoney .. '金币哦!')
player:GossipComplete()
return true
elseif(itemcount > maxMoney) then
player:SendBroadcastMessage(Fname .. '土豪,红包最多只能发送' .. minMoney .. '金币哦!')
player:GossipComplete()
return true
end
if player:GetCoinage() < itemcount * 100 * 100 then
player:SendBroadcastMessage(Fname .. '你的钱不够哦,单位是金币')
player:GossipComplete()
return true
else
player:ModifyMoney(itemcount * 100 * 100 * -1)
player:SendBroadcastMessage(Fname .. '|cFF33CC33你失去了 ' .. itemcount .. ' 金币|r')
m = true
end
end
local p_exp = 0
if m then
Worldmessagestr =
Fname ..
'|cFFCC6633壕|r|cFF665499无|r|cFF0041FF人|r|cFF0E94DC性|r|cFF1BE6B8的|r[' ..
Get_levelName(playerexp) ..
'-' ..
player:GetName() ..
']|cFFFF0000发|r|cFFAA1655送|r|cFF552BAA了|r|cFF0041FF一|r|cFF0978E7个|r|cFF12AFD0金|r|cFF1BE6B8币|r|cFFFFFF00x|r|cFF00FF99' ..
itemcount ..
'|r|cFF8C5555的|r' ..
Kind ..
'|cFFFFDF48红|r|cFFFEBF90包|r|cFFFE9FD8|r|cFFB4AA90哇|r|cFF69B448塞|r|cFF1FBF00|r|cFF619D3A这|r|cFFA37C75个|r|cFFE55AAF工|r|cFFCA6EA7会|r|cFFAF819E好|r|cFF949596多|r|cFF8CA3B4土|r|cFF85B0D3豪|r|cFF7DBEF1|r|cFF589FB8我|r|cFF34807E要|r|cFF0F6145入|r|cFF24723F会|r|cFF388338|r'
p_exp = itemcount / minItemCount * Levelexp[2]
Updateinfo(tonumber(tostring(player:GetGUID())), player:GetName(), p_exp, 0, Guild, itemcount)
else
Worldmessagestr =
Fname ..
'|cFFCC6633壕|r|cFF665499无|r|cFF0041FF人|r|cFF0E94DC性|r|cFF1BE6B8的|r[' ..
Get_levelName(playerexp) ..
'-' ..
player:GetName() ..
']|cFFFF0000发|r|cFFF3030C送|r|cFFE80617了|r|cFFDC0923一|r|cFFD10C2E个|r' ..
GetItemLink(senditem,4) ..
'|cFFFFFF00x|r|cFF00FF99' ..
itemcount ..
'|r|cFF8B1E74的|r' ..
Kind ..
'|cFF7F2080红|r|cFF74238B包|r|cFF682697|r|cFF5D29A2大|r|cFF512CAE家|r|cFF462FB9赶|r|cFF3A32C5紧|r|cFF2E35D1抢|r|cFF2338DC啦|r|cFF173BE8|r'
p_exp = itemcount / minMoney * Levelexp[1]
Updateinfo(tonumber(tostring(player:GetGUID())), player:GetName(), p_exp, senditem, Guild, itemcount)
end
player:SendBroadcastMessage(Fname .. '红包发送成功!')
player:SendAreaTriggerMessage(Fname .. '红包发送成功!')
SendWorldMessage(Worldmessagestr)
player:GossipComplete()
return true
end
end
function shuffle(t)
if not t then
return
end
local cnt = #t
for i = 1, cnt do
local j = math.random(i, cnt)
t[i], t[j] = t[j], t[i]
end
end
function splitX(m, n)
print("splitX:m="..m.." n="..n)
local mark = {}
for i = 1, m - 1 do
mark[i] = i
end
shuffle(mark)
local validMark = {}
for i = 1, n - 1 do
validMark[i] = mark[i]
print("splitX:validMark[".. i .."]="..mark[i].."")
end
table.sort(
validMark,
function(a, b)
return a < b
end
)
validMark[0] = 0
validMark[n] = m
local out = ''
for i = 1, n do
if (i == 1) then
out = tostring(validMark[i] - validMark[i - 1])
else
out = out .. '|' .. tostring(validMark[i] - validMark[i - 1])
end
end
return out
end
function RedOnLogin(event, player)
if not player:HasItem(itemcd, 1) then
player:AddItem(itemcd, 1)
player:SendBroadcastMessage(Fname .. '|cFF33CC33你获得了|r ' .. GetItemLink(itemcd,4) .. ' |cFF33CC33x1个|r')
end
player:SendBroadcastMessage(
'|cFFFF0066欢|r|cFF0041FF迎|r|cFF1BE6B8你|r' ..
player:GetName() .. '|cFF0041FF你|r|cFF0041FF可|r|cFF0041FF以|r|cFF0E94DC使|r|cFF1BE6B8用|r' .. systemname .. ''
)
end
RegisterPlayerEvent(3, RedOnLogin)
RegisterItemGossipEvent(itemcd, 1, Red_Book)
RegisterItemGossipEvent(itemcd, 2, Red_Select)
--INSERT INTO `mangos`.`item_template` (`entry`, `patch`, `class`, `subclass`, `name`, `description`, `display_id`, `quality`, `flags`, `buy_count`, `buy_price`, `sell_price`, `inventory_type`, `allowable_class`, `allowable_race`, `item_level`, `required_level`, `required_skill`, `required_skill_rank`, `required_spell`, `required_honor_rank`, `required_city_rank`, `required_reputation_faction`, `required_reputation_rank`, `max_count`, `stackable`, `container_slots`, `stat_type1`, `stat_value1`, `stat_type2`, `stat_value2`, `stat_type3`, `stat_value3`, `stat_type4`, `stat_value4`, `stat_type5`, `stat_value5`, `stat_type6`, `stat_value6`, `stat_type7`, `stat_value7`, `stat_type8`, `stat_value8`, `stat_type9`, `stat_value9`, `stat_type10`, `stat_value10`, `delay`, `range_mod`, `ammo_type`, `dmg_min1`, `dmg_max1`, `dmg_type1`, `dmg_min2`, `dmg_max2`, `dmg_type2`, `dmg_min3`, `dmg_max3`, `dmg_type3`, `dmg_min4`, `dmg_max4`, `dmg_type4`, `dmg_min5`, `dmg_max5`, `dmg_type5`, `block`, `armor`, `holy_res`, `fire_res`, `nature_res`, `frost_res`, `shadow_res`, `arcane_res`, `spellid_1`, `spelltrigger_1`, `spellcharges_1`, `spellppmrate_1`, `spellcooldown_1`, `spellcategory_1`, `spellcategorycooldown_1`, `spellid_2`, `spelltrigger_2`, `spellcharges_2`, `spellppmrate_2`, `spellcooldown_2`, `spellcategory_2`, `spellcategorycooldown_2`, `spellid_3`, `spelltrigger_3`, `spellcharges_3`, `spellppmrate_3`, `spellcooldown_3`, `spellcategory_3`, `spellcategorycooldown_3`, `spellid_4`, `spelltrigger_4`, `spellcharges_4`, `spellppmrate_4`, `spellcooldown_4`, `spellcategory_4`, `spellcategorycooldown_4`, `spellid_5`, `spelltrigger_5`, `spellcharges_5`, `spellppmrate_5`, `spellcooldown_5`, `spellcategory_5`, `spellcategorycooldown_5`, `bonding`, `page_text`, `page_language`, `page_material`, `start_quest`, `lock_id`, `material`, `sheath`, `random_property`, `set_id`, `max_durability`, `area_bound`, `map_bound`, `duration`, `bag_family`, `disenchant_id`, `food_type`, `min_money_loot`, `max_money_loot`, `wrapped_gift`, `extra_flags`, `other_team_entry`) VALUES (50000, 0, 15, 0, 'Red Envelopes', '', 34508, 1, 64, 1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8690, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);