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.
97 lines
3.3 KiB
Lua
97 lines
3.3 KiB
Lua
local skynet = require "skynet"
|
|
local netpack = require "websocketnetpack"
|
|
local msgutils = require "msgutils"
|
|
local cjson = require "cjson"
|
|
local usermodel = require "usermodel"
|
|
local bagmodel = require "bagmodel"
|
|
local heromodel = require "heromodel"
|
|
local settings = require "settings"
|
|
local dateutils = require "dateutils"
|
|
local usermodel = require "usermodel"
|
|
local heromodel = require "heromodel"
|
|
local bagmodel = require "bagmodel"
|
|
local bosslogic = require "bosslogic"
|
|
|
|
local boss = {}
|
|
|
|
function boss.load(cmd)
|
|
local list = skynet.call(".bossd", "lua", "loadrank", UID, usermodel:getServer())
|
|
-- DEBUG("boss load list = ", DUMP(list))
|
|
local rank = {}
|
|
local players = {}
|
|
for k,v in pairs(list) do
|
|
table.insert(rank, {uid=checkint(k), harm=checkint(v)})
|
|
table.insert(players, checkint(k))
|
|
end
|
|
|
|
table.sort( rank, function(a, b)
|
|
if a.harm == b.harm then
|
|
return tonumber(a.uid) > tonumber(b.uid)
|
|
end
|
|
return a.harm > b.harm
|
|
end)
|
|
DEBUG("boss load players = ", cjson.encode(players))
|
|
local ok, ret = pcall(skynet.call, ".usercenterd", "lua", "getuserinfolist", players)
|
|
local myrank = 0
|
|
local found = false
|
|
if ok then
|
|
for i,v in ipairs(rank) do
|
|
v.nickname = ret[v.uid].nickname
|
|
v.avatar = ret[v.uid].avatar
|
|
v.zhanli = ret[v.uid].zhanli
|
|
if tonumber(v.uid) == UID then
|
|
found = true
|
|
myrank = i
|
|
end
|
|
end
|
|
end
|
|
if not found then
|
|
local r = skynet.call(".bossd", "lua", "loadmyrank", UID, usermodel:getServer())
|
|
myrank = r
|
|
end
|
|
--获取我的伤害
|
|
local harm = skynet.call(".bossd", "lua", "loadmyharm", UID, usermodel:getServer()) or 0
|
|
local max_harm = 0
|
|
if #rank > 0 then
|
|
max_harm = rank[1].harm
|
|
end
|
|
return {c = "boss",m = "load", data = {errcode = 0, errmsg = "", data = {harm=tonumber(harm), max_harm=max_harm, rank=table.array(rank), myrank=myrank, overtime=dateutils.getdayex(), boss_id = bosslogic.getcurboss()}}}
|
|
end
|
|
|
|
|
|
function boss.success(cmd)
|
|
local harm = cmd.data.harm
|
|
if not harm then
|
|
return {c = "boss",m = "success", data = {errcode = 10001, errmsg = "请求异常,请稍后再试", data = {}}}
|
|
end
|
|
harm = checkint(harm)
|
|
-- local conf = bosslogic.getconf()
|
|
local oldhm = skynet.call(".bossd", "lua", "loadmyharm", UID, usermodel:getServer()) or 0
|
|
oldhm = checkint(oldhm)
|
|
local rews = {}
|
|
if harm > oldhm then
|
|
local rewards = bosslogic.getbossrewards(oldhm, harm)
|
|
|
|
local param = {}
|
|
for i,v in ipairs(rewards) do
|
|
param[v.key] = param[v.key] or 0
|
|
param[v.key] = param[v.key] + v.value
|
|
table.insert(rews, {tp="item", id=v.key, count=v.value})
|
|
end
|
|
|
|
if duanwumodel._init then
|
|
if #rewards > 0 then
|
|
param["zongzi_lv1"] = #rewards
|
|
table.insert(rews, {tp="item", id="zongzi_lv1", count=#rewards})
|
|
end
|
|
end
|
|
|
|
if #table.keys(param) > 0 then
|
|
bagmodel:incrBagB(param)
|
|
end
|
|
skynet.call(".bossd", "lua", "success", UID, usermodel:getServer(), harm)
|
|
end
|
|
return {c = "boss",m = "success", data = {errcode = 0, errmsg = "", data = { rewards = table.array(rews)}}}
|
|
end
|
|
|
|
return boss |