You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.8 KiB
Lua

local skynet = require "skynet"
local cjson = require "cjson"
local dateutils = require "dateutils"
local utils = require "utils"
require "functions"
local pattern = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)"
local huobamodel = {}
function huobamodel:init(usermodel, data)
data = data or {}
local m = data[1]
local m = utils.redis_pack(m)
self.usermodel = usermodel
self.huoba_lv = checkint(m.huoba_lv)
self.huoba_start_time = checkint(m.huoba_start_time)
self.huoba_timelong = checkint(m.huoba_timelong)
self.lv1_share_num = checkint(data[2])
self.lv1_adv_num = checkint(data[3])
end
function huobamodel:userhuoba(lv)
local t = lv * 10 * 60
if not self.huoba_lv or self.huoba_lv ~= lv or self:calhuobatimelong() <= 0 then
self.huoba_lv = lv
self.huoba_start_time = os.time()
self.huoba_timelong = t
else
self.huoba_timelong = self.huoba_timelong + t
end
end
--计算火把攻击时长
function huobamodel:calhuobatimelong()
local logintime = dateutils.get_timestamp_by_datetime(self.usermodel.last_login_time, pattern)
if self.huoba_start_time > logintime then
local t = math.max(0, os.time() - self.huoba_start_time)
self.huoba_timelong = math.max(self.huoba_timelong - t, 0)
else
if self.usermodel.last_logout_time and self.usermodel.last_logout_time ~= "" then
local logouttime = dateutils.get_timestamp_by_datetime(self.usermodel.last_logout_time, pattern)
-- local t = logintime - logouttime
local t = math.max(0, os.time() - logintime)
self.huoba_timelong = math.max(self.huoba_timelong - t, 0)
-- self.huoba_start_time = logintime
end
end
return self.huoba_timelong
end
function huobamodel:share()
assert(self.lv1_share_num < 1, "今日已分享")
self.lv1_share_num = self.lv1_share_num + 1
local ok = skynet.call(".huobad", "lua", "share", UID, self.lv1_share_num)
end
--看广告
function huobamodel:lookadv()
assert(self.lv1_adv_num < 10, "看广告数量已达上限")
self.lv1_adv_num = self.lv1_adv_num + 1
local ok = skynet.call(".huobad", "lua", "lookadv", UID, self.lv1_adv_num)
end
function huobamodel:serialize()
local info = {}
info.huoba_lv = self.huoba_lv
info.huoba_timelong = self:calhuobatimelong()
info.lv1_share_num = 1 - self.lv1_share_num
info.lv1_adv_num = 10 - self.lv1_adv_num
return info
end
function huobamodel:save()
local info = {}
info.huoba_lv = self.huoba_lv
info.huoba_start_time = self.huoba_start_time
info.huoba_timelong = self:calhuobatimelong()
local ok = skynet.call(".huobad", "lua", "save", UID, info)
end
return huobamodel