jiangchi_JBZDY = jiangchi_JBZDY or 6 benrijiangli_JBZDY = benrijiangli_JBZDY or 7 benrijiangli_Index = benrijiangli_Index or 8 benrijiangli_JBZDY_SetDay = benrijiangli_JBZDY_SetDay or 9 benrijiangli_JBZDY_LastGold = benrijiangli_JBZDY_LastGold or 10 tbl_JBZDY_Online = tbl_JBZDY_Online or {} tbl_JBZDY_Offline = tbl_JBZDY_Offline or {} local function onTimerMin(_actID) local curhour = tonumber(os.date("%H")) local curmin = tonumber(os.date("%M")) --------------------------------------Золотая лихорадка----------------------------------- if JBZDY_Open == 1 and curhour == 21 and curmin <= 30 and curmin % 5 == 0 then if curmin ~= 30 and curmin % 5 == 0 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 102, 300086) msg.AddMsgEvent(MsgID, 9, math.floor((act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0) / 3 * 0.95)) msg.AddMsgEvent(MsgID, 9, math.floor(((act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + (act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0)) / 3 * 0.95)) msg.DispatchBroadcast(MsgID, -1, -1, -1) MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 13, 1) msg.AddMsgEvent(MsgID, 1, 206754) msg.AddMsgEvent(MsgID, 9, math.floor((act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0) / 3 * 0.95)) msg.AddMsgEvent(MsgID, 9, math.floor(((act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + (act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0)) / 3 * 0.95)) msg.DispatchBroadcast(MsgID, -1, -1, -1) elseif curmin == 30 then local function GetBigOrSmall() local CurTime = tonumber(os.date("%j")) if #tbl_JBZDY_Online < 200 then return "small" end if JBZDY_Limit ~= -1 then if JBZDY_Limit < 40 and CurTime > 320 then return "small" end if CurTime <= JBZDY_Limit then return "small" end end if JBZDY_SetDay ~= -1 then if act.GetActScriptData(29, 1, benrijiangli_JBZDY_SetDay) ~= JBZDY_SetDay then if CurTime > JBZDY_SetDay then if math.random(100) <= JBZDY_Nomal + (CurTime - JBZDY_SetDay) * JBZDY_SetDay_Step then act.SetActScriptData(29, 1, benrijiangli_JBZDY_SetDay, JBZDY_SetDay) act.SaveActScriptData(29) return "big" end end if JBZDY_SetDay > 320 and CurTime < 40 then if CurTime < JBZDY_SetDay then if math.random(100) <= JBZDY_Nomal + (CurTime + 365 - JBZDY_SetDay) * JBZDY_SetDay_Step then act.SetActScriptData(29, 1, benrijiangli_JBZDY_SetDay, JBZDY_SetDay) act.SaveActScriptData(29) return "big" end end end end end if math.random(100) <= JBZDY_Nomal then return "big" else return "small" end end local Player = {} local money = 0 local char = GetBigOrSmall() if char == "small" then money = math.floor((act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0) / 3 * 0.95) else money = math.floor(((act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + (act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0)) / 3 * 0.95) end local tbl_player = {} local total = 0 for _, v in pairs(tbl_JBZDY_Online) do table.insert(tbl_player, v) total = total + 1 end for _, v in pairs(tbl_JBZDY_Offline) do table.insert(tbl_player, v) table.insert(tbl_player, v) total = total + 1 end local function draw_winner() if #tbl_player == 0 then return nil end local index = math.random(#tbl_player) local winner = tbl_player[index] table.remove(tbl_player, index) if winner ~= nil then for j = #tbl_player, 1, -1 do if tbl_player[j] == winner then table.remove(tbl_player, j) end end end return winner end local winner_total = math.min(total, 3) for i = 1, winner_total do Player[i] = draw_winner() end local current_index = act.GetActScriptData(29, 1, benrijiangli_Index) or 0 act.SetActScriptData(29, 1, benrijiangli_Index, current_index + 1) act.SetActScriptData(29, 1, benrijiangli_JBZDY, 0) local fallback_name = "奖池积累" local broadcast_names = {} for i = 1, 3 do if Player[i] ~= nil then broadcast_names[i] = Player[i] else broadcast_names[i] = fallback_name end end if char == "small" then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 102, 300088) msg.AddMsgEvent(MsgID, 2, broadcast_names[1]) msg.AddMsgEvent(MsgID, 9, money) msg.DispatchBroadcast(MsgID, -1, -1, -1) for i = 1, 3 do local temp = 0 if Player[i] == nil then act.SetActScriptData(29, 1, jiangchi_JBZDY, (act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + money) else for _, v in pairs(tbl_JBZDY_Offline) do if v == Player[i] then act.SetActScriptData(29, 1, jiangchi_JBZDY, (act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + money) MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 102, 300090) msg.AddMsgEvent(MsgID, 2, Player[i]) msg.AddMsgEvent(MsgID, 9, money) msg.DispatchBroadcast(MsgID, -1, -1, -1) temp = 1 break end end if temp == 0 then local MapID, InstanceID = role.GetRoleMapID(Player[i]) if MapID ~= nil then role.AddRoleSilver(MapID, InstanceID, Player[i], money * 10000, 101) MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 71, 206755) msg.AddMsgEvent(MsgID, 9, money) msg.DispatchRoleMsgEvent(Player[i], MsgID) end end end end else act.SetActScriptData(29, 1, jiangchi_JBZDY, 0) local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 102, 300089) msg.AddMsgEvent(MsgID, 2, broadcast_names[1]) msg.AddMsgEvent(MsgID, 2, broadcast_names[2]) msg.AddMsgEvent(MsgID, 2, broadcast_names[3]) msg.AddMsgEvent(MsgID, 9, money) msg.DispatchBroadcast(MsgID, -1, -1, -1) for i = 1, 3 do local temp = 0 if Player[i] == nil then act.SetActScriptData(29, 1, jiangchi_JBZDY, (act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + money) else for _, v in pairs(tbl_JBZDY_Offline) do if v == Player[i] then act.SetActScriptData(29, 1, jiangchi_JBZDY, (act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + money) MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 102, 300090) msg.AddMsgEvent(MsgID, 2, Player[i]) msg.AddMsgEvent(MsgID, 9, money) msg.DispatchBroadcast(MsgID, -1, -1, -1) temp = 1 break end end if temp == 0 then local MapID, InstanceID = role.GetRoleMapID(Player[i]) if MapID ~= nil then role.AddRoleSilver(MapID, InstanceID, Player[i], money * 10000, 101) MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 71, 206755) msg.AddMsgEvent(MsgID, 9, money) msg.DispatchRoleMsgEvent(Player[i], MsgID) end end end end end act.SetActScriptData(29, 1, jiangchi_JBZDY, (act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + math.floor(JBZDY_SystemGold * 0.3)) act.SetActScriptData(29, 1, benrijiangli_JBZDY, math.floor(JBZDY_SystemGold * 0.7)) act.SetActScriptData(29, 1, benrijiangli_JBZDY_LastGold, money) tbl_JBZDY_Online = {} tbl_JBZDY_Offline = {} act.SaveActScriptData(29) end end end local function onClick(MapID, InstanceID, RoleID, TOMsgID, ToMapID, x, y, z) if JBZDY_Open == 1 then local level = role.GetRoleLevel(MapID, InstanceID, RoleID) local money = math.floor(level / 2) if role.GetRoleSilver(MapID, InstanceID, RoleID) < money * 10000 then local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 71, 206752) msg.AddMsgEvent(MsgID, 9, money) msg.DispatchRoleMsgEvent(RoleID, MsgID) else role.DecRoleSilver(MapID, InstanceID, RoleID, money * 10000, 452) local benrijiangli_CurTime = act.GetActScriptData(29, 1, benrijiangli_Index) role.SetRoleScriptData(RoleID, 1, RoleDataType["Time_JBZDY"], benrijiangli_CurTime) for k, v in pairs(tbl_JBZDY_Online) do if v == RoleID then table.remove(tbl_JBZDY_Online, k) end end for k, v in pairs(tbl_JBZDY_Offline) do if v == RoleID then table.remove(tbl_JBZDY_Offline, k) end end table.insert(tbl_JBZDY_Online, RoleID) local bigmoney = math.floor(money * 0.3) local smallmoney = money - bigmoney act.SetActScriptData(29, 1, jiangchi_JBZDY, (act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + bigmoney) act.SetActScriptData(29, 1, benrijiangli_JBZDY, (act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0) + smallmoney) act.SaveActScriptData(29) local MsgID = msg.BeginMsgEvent() msg.AddMsgEvent(MsgID, 71, 206753) msg.AddMsgEvent(MsgID, 9, (act.GetActScriptData(29, 1, jiangchi_JBZDY) or 0) + (act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0)) msg.AddMsgEvent(MsgID, 9, (act.GetActScriptData(29, 1, benrijiangli_JBZDY) or 0)) msg.DispatchRoleMsgEvent(RoleID, MsgID) end end end return { onTimerMin = onTimerMin, onClick = onClick, }