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.
671 lines
20 KiB
Lua
671 lines
20 KiB
Lua
local skynet = require "skynet"
|
|
local cjson = require "cjson"
|
|
local mysqlhelper = require "mysqlhelper"
|
|
local equipmentmodel = require "equipmentmodel"
|
|
local crystalmodel = require "crystalmodel"
|
|
local artifactmodel = require "artifactmodel"
|
|
local mqhelper = require "mqhelper"
|
|
local settings = require "settings"
|
|
local herologic = require "herologic"
|
|
local clublogic = require "clublogic"
|
|
local equipmentlogic = require "equipmentlogic"
|
|
local utils = require "utils"
|
|
require "functions"
|
|
|
|
local heromodel = {}
|
|
|
|
function heromodel:init(usermodel, heros)
|
|
self.usermodel = usermodel
|
|
self.heros = {}
|
|
if heros then
|
|
for _,v in ipairs(heros) do
|
|
local temp = {}
|
|
temp.id = v.id
|
|
temp.heroid = v.heroid
|
|
temp.serverid = v.serverid
|
|
temp.work = v.work --1战士 2肉盾 3辅助 4法师 5刺客 6射手
|
|
temp.lv = v.lv or 1
|
|
temp.stage = v.stage or 0
|
|
temp.star = v.star or 0
|
|
temp.pos = v.pos or 0
|
|
|
|
temp.collect_emblemstar = v.collect_emblemstar or 0 --收集徽星次数
|
|
|
|
local skill = {}
|
|
skill.awake_active = v.awake_active or 0
|
|
skill.awake_passive1 = v.awake_passive1 or 0
|
|
skill.awake_passive2 = v.awake_passive2 or 0
|
|
skill.awake_passive3 = v.awake_passive3 or 0
|
|
temp.skill = skill
|
|
|
|
local equipment = {}
|
|
equipment.weapon = equipmentmodel.new(self, v.heroid, "weapon", v.equipment.weapon) --刀
|
|
equipment.cloth = equipmentmodel.new(self, v.heroid, "cloth", v.equipment.cloth) --甲
|
|
equipment.head = equipmentmodel.new(self, v.heroid, "head", v.equipment.head) --头
|
|
equipment.horse = equipmentmodel.new(self, v.heroid, "horse", v.equipment.horse) --马
|
|
temp.equipment = equipment
|
|
|
|
local skin = {} --皮肤
|
|
|
|
temp.skin = skin
|
|
|
|
self.heros[temp.heroid] = temp
|
|
end
|
|
end
|
|
end
|
|
|
|
--添加英雄
|
|
function heromodel:add(data)
|
|
assert(not self.heros[data.heroid])
|
|
local temp = {}
|
|
temp.id = data.id
|
|
temp.heroid = data.heroid
|
|
temp.serverid = data.serverid
|
|
temp.lv = data.lv or 1
|
|
temp.stage = data.stage or 0
|
|
temp.star = data.star or 0
|
|
temp.pos = data.pos or 0
|
|
temp.collect_emblemstar = data.collect_emblemstar or 0 --徽星次数
|
|
--技能
|
|
local skill = {}
|
|
skill.awake_active = data.awake_active or 0
|
|
skill.awake_passive1 = data.awake_passive1 or 0
|
|
skill.awake_passive2 = data.awake_passive2 or 0
|
|
skill.awake_passive3 = data.awake_passive3 or 0
|
|
temp.skill = skill
|
|
--装备
|
|
local equipment = {}
|
|
equipment.weapon = equipmentmodel.new(self, data.heroid, "weapon", nil) --刀
|
|
equipment.cloth = equipmentmodel.new(self, data.heroid, "cloth", nil) --甲
|
|
equipment.head = equipmentmodel.new(self, data.heroid, "head", nil) --头
|
|
equipment.horse = equipmentmodel.new(self, data.heroid, "horse", nil) --马
|
|
temp.equipment = equipment
|
|
self.heros[data.heroid] = temp
|
|
--TODO:落地
|
|
self:save(data.heroid)
|
|
end
|
|
|
|
|
|
function heromodel:getheros()
|
|
return self.heros
|
|
end
|
|
|
|
function heromodel:getheronum()
|
|
local n = 0
|
|
for k,v in pairs(self.heros) do
|
|
n = n + 1
|
|
end
|
|
return n
|
|
end
|
|
|
|
--获取上阵总等级
|
|
function heromodel:getconfirmuptotallv()
|
|
local lv = 0
|
|
for k,v in pairs(self.heros) do
|
|
if v.pos > 0 then
|
|
lv = lv + v.lv
|
|
end
|
|
end
|
|
return lv
|
|
end
|
|
|
|
function heromodel:gettotalstar()
|
|
local star = 0
|
|
for k,v in pairs(self.heros) do
|
|
star = star + v.star
|
|
end
|
|
return star
|
|
end
|
|
|
|
function heromodel:geteqptotallv()
|
|
local lv = 0
|
|
for k,v in pairs(self.heros) do
|
|
local eqps = self:getequipment(v.heroid)
|
|
for _, eqp in pairs(eqps) do
|
|
lv = lv + eqp:getlv()
|
|
end
|
|
end
|
|
return lv
|
|
end
|
|
|
|
|
|
|
|
--获取空位置
|
|
function heromodel:getemptypos()
|
|
local t = {}
|
|
for k,v in pairs(self.heros) do
|
|
if v.pos > 0 then
|
|
t[v.pos] = true
|
|
end
|
|
end
|
|
for pos=1,5 do
|
|
if not t[pos] then
|
|
return pos
|
|
end
|
|
end
|
|
end
|
|
|
|
--上阵武将数量
|
|
function heromodel:getupnum()
|
|
local n = 0
|
|
for k,v in pairs(self.heros) do
|
|
if v.pos > 0 then
|
|
n = n + 1
|
|
end
|
|
end
|
|
return n
|
|
end
|
|
|
|
function heromodel:getherobypos(pos)
|
|
for k,v in pairs(self.heros) do
|
|
if v.pos == pos then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
|
|
function heromodel:changepos(heroid, pos)
|
|
assert(self.heros[heroid], "not found")
|
|
self.heros[heroid].pos = pos
|
|
self:save(heroid)
|
|
end
|
|
|
|
function heromodel:changehero(heroid, hero)
|
|
assert(self.heros[heroid], "not found")
|
|
hero.id = nil
|
|
hero.heroid = nil
|
|
hero.skill = nil
|
|
hero.collect_emblemstar = nil
|
|
hero.star = nil
|
|
for k,v in pairs(hero) do
|
|
self.heros[heroid][k] = v
|
|
end
|
|
self:save(heroid)
|
|
end
|
|
|
|
function heromodel:update(heroid, data)
|
|
assert(self.heros[heroid], "not found")
|
|
for k,v in pairs(data) do
|
|
self.heros[heroid][k] = v
|
|
end
|
|
self:save(heroid)
|
|
end
|
|
|
|
--重生
|
|
function heromodel:reborn(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local hero = self.heros[heroid]
|
|
hero.pos = 0
|
|
hero.lv = 1
|
|
hero.stage = 0
|
|
hero.equipment.weapon.lv = 1
|
|
hero.equipment.cloth.lv = 1
|
|
hero.equipment.head.lv = 1
|
|
hero.equipment.horse.lv = 1
|
|
self:equipmentreborn(heroid)
|
|
-- self:save(heroid)
|
|
end
|
|
|
|
--计算武将当前等级消耗的所有材料
|
|
function heromodel:caltotalresource(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local coin = herologic.calcurlvusecoin(self.heros[heroid].lv)
|
|
local jinjieshi = herologic.calcurlvusejinjieshi(self.heros[heroid].stage)
|
|
local jingtie = 0
|
|
for k,v in pairs(self.heros[heroid].equipment) do
|
|
jingtie = jingtie + v:calcurlvusejingtie()
|
|
end
|
|
return {coin=coin, jinjieshi=jinjieshi, jingtie=jingtie}
|
|
end
|
|
|
|
|
|
function heromodel:lvup(heroid, num)
|
|
assert(self.heros[heroid], "not found")
|
|
self.heros[heroid].lv = self.heros[heroid].lv + num
|
|
--TODO:升级数据落地
|
|
self:save(heroid)
|
|
end
|
|
|
|
function heromodel:starup(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
self.heros[heroid].star = self.heros[heroid].star + 1
|
|
self:save(heroid)
|
|
end
|
|
|
|
|
|
function heromodel:stageup(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
self.heros[heroid].stage = self.heros[heroid].stage + 1
|
|
self:save(heroid)
|
|
end
|
|
|
|
|
|
--收集徽星
|
|
function heromodel:collectemblemstar(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local hero = self.heros[heroid]
|
|
local c = hero.star + 1
|
|
assert(hero.collect_emblemstar < c, " 收集失败 ")
|
|
hero.collect_emblemstar = hero.collect_emblemstar + 1
|
|
-- self:save(heroid)
|
|
end
|
|
|
|
|
|
--获取收集徽星的阶段
|
|
function heromodel:getcollectemblemstar(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local hero = self.heros[heroid]
|
|
return hero.collect_emblemstar
|
|
end
|
|
|
|
|
|
function heromodel:getatk(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local born_atk = herologic.getbornatk(heroid)
|
|
local lord_atk = self.usermodel:getatk()
|
|
local shuijing_atk = self:getshuijingattrabs("atk", heroid)
|
|
local eqp_atk = self:getequipmentatk(heroid)
|
|
local yuling_atk = self:getyulingattrabs("atk", heroid)
|
|
local lvup_atk = self:getlvupext("atk", heroid)
|
|
local lord_ext = self.usermodel:getlordorderext("atk_ratio")
|
|
local shuijing_ext = self:getshuijingattrext("atk_ratio", heroid)
|
|
local yuling_ext = self:getyulingattrext("atk_ratio", heroid)
|
|
local yuling_limit_ext = self:getyulinglimitattrext("atk_ratio", heroid)
|
|
local stageup_ext = self:getstageupattrext("atk_ratio", heroid)
|
|
local starup_ext = self:getstarupattrext("atk_ratio", heroid)
|
|
local club_ext = self:getclubext("atk_ratio")
|
|
local skill_ext = self:getskillext("atk_ratio", heroid)
|
|
local halo_ext = self:gethaloext("atk_ratio")
|
|
return utils.round((born_atk + lord_atk + shuijing_atk + eqp_atk + yuling_atk + lvup_atk) * (1 + lord_ext) * (1 + shuijing_ext) * (1 + yuling_ext) * (1 + yuling_limit_ext) * (1 + stageup_ext) * (1 + starup_ext) * (1 + club_ext) * (1 + skill_ext) * (1 + halo_ext))
|
|
end
|
|
|
|
function heromodel:getdef(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local born_def = herologic.getborndef(heroid)
|
|
local lord_def = self.usermodel:getdef()
|
|
local shuijing_def = self:getshuijingattrabs("def", heroid)
|
|
local eqp_def = self:getequipmentdef(heroid)
|
|
local yuling_def = self:getyulingattrabs("def", heroid)
|
|
local lvup_def = self:getlvupext("def", heroid)
|
|
local lord_ext = self.usermodel:getlordorderext("def_ratio")
|
|
local shuijing_ext = self:getshuijingattrext("def_ratio", heroid)
|
|
local yuling_ext = self:getyulingattrext("def_ratio", heroid)
|
|
local yuling_limit_ext = self:getyulinglimitattrext("def_ratio", heroid)
|
|
local stageup_ext = self:getstageupattrext("def_ratio", heroid)
|
|
local starup_ext = self:getstarupattrext("def_ratio", heroid)
|
|
local club_ext = self:getclubext("def_ratio")
|
|
local skill_ext = self:getskillext("def_ratio", heroid)
|
|
return utils.round((born_def + lord_def + shuijing_def + eqp_def + yuling_def + lvup_def) * (1 + lord_ext) * (1 + shuijing_ext) * (1 + yuling_ext) * (1 + yuling_limit_ext) * (1 + stageup_ext) * (1 + starup_ext) * (1 + club_ext) * (1 + skill_ext))
|
|
end
|
|
|
|
function heromodel:gethp(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local born_hp = herologic.getbornhp(heroid)
|
|
local lord_hp = self.usermodel:gethp()
|
|
local shuijing_hp = self:getshuijingattrabs("hp", heroid)
|
|
local eqp_hp = self:getequipmenthp(heroid)
|
|
local yuling_hp = self:getyulingattrabs("hp", heroid)
|
|
local lvup_hp = self:getlvupext("hp", heroid)
|
|
local lord_ext = self.usermodel:getlordorderext("hp_ratio")
|
|
local shuijing_ext = self:getshuijingattrext("hp_ratio", heroid)
|
|
local set_ext = self:calsetattr(heroid) --套装加成
|
|
local yuling_ext = self:getyulingattrext("hp_ratio", heroid)
|
|
local yuling_limit_ext = self:getyulinglimitattrext("hp_ratio", heroid)
|
|
local stageup_ext = self:getstageupattrext("hp_ratio", heroid)
|
|
local starup_ext = self:getstarupattrext("hp_ratio", heroid)
|
|
local club_ext = self:getclubext("hp_ratio")
|
|
local skill_ext = self:getskillext("hp_ratio", heroid)
|
|
local halo_ext = self:gethaloext("hp_ratio")
|
|
return utils.round((born_hp + lord_hp + shuijing_hp + eqp_hp + yuling_hp + lvup_hp) * (1 + lord_ext) * (1 + shuijing_ext) * (1 + set_ext) * (1 + yuling_ext) * (1 + yuling_limit_ext) * (1 + stageup_ext) * (1 + starup_ext) * (1 + club_ext) * (1 + skill_ext) * (1 + halo_ext))
|
|
end
|
|
|
|
function heromodel:getspeed(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local bornspeed = herologic.getbornspeed(heroid)
|
|
local shuijingspeed = 0
|
|
local yulingspeed = self:getyulingattrabs("spd", heroid)
|
|
local lvupspeed = self:getlvupext("spd", heroid)
|
|
local skillspeed = self:getskillext("spd", heroid)
|
|
return utils.round(bornspeed + shuijingspeed + yulingspeed + lvupspeed + skillspeed)
|
|
end
|
|
|
|
|
|
function heromodel:getequipmentatk(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local eqps = self.heros[heroid].equipment
|
|
local atk = 0
|
|
for k,v in pairs(eqps) do
|
|
atk = atk + v:getatk()
|
|
end
|
|
return atk
|
|
end
|
|
|
|
function heromodel:getequipmentdef(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local eqps = self.heros[heroid].equipment
|
|
local def = 0
|
|
for k,v in pairs(eqps) do
|
|
def = def + v:getdef()
|
|
end
|
|
return def
|
|
end
|
|
|
|
function heromodel:getequipmenthp(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local eqps = self.heros[heroid].equipment
|
|
local hp = 0
|
|
for k,v in pairs(eqps) do
|
|
hp = hp + v:gethp()
|
|
end
|
|
return hp
|
|
end
|
|
|
|
|
|
function heromodel:getequipmentspeed(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local eqps = self.heros[heroid].equipment
|
|
local speed = 0
|
|
for k,v in pairs(eqps) do
|
|
speed = speed + v:getspeed()
|
|
end
|
|
return speed
|
|
end
|
|
|
|
function heromodel:getshuijingattrabs(k,heroid)
|
|
return 0
|
|
end
|
|
|
|
--水晶加成
|
|
function heromodel:getshuijingattrext(k, heroid)
|
|
return 0
|
|
end
|
|
|
|
|
|
function heromodel:getyulingattrabs(k, heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
return artifactmodel:getattrabs(k, heroid)
|
|
end
|
|
|
|
function heromodel:getyulingattrext(k, heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
return artifactmodel:getattrext(k, heroid)
|
|
end
|
|
|
|
function heromodel:getyulinglimitattrext(k, heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
return artifactmodel:getlimitattrext(k, heroid)
|
|
end
|
|
|
|
function heromodel:getstageupattrext(k, heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
return herologic.getstageupattrext(k, self.heros[heroid].stage)
|
|
end
|
|
|
|
|
|
function heromodel:getstarupattrext(k, heroid)
|
|
return herologic.getstarupattrext(k, self.heros[heroid].star)
|
|
end
|
|
|
|
function heromodel:calsetattr(heroid)
|
|
local eqps = self:getequipment(heroid)
|
|
local sets = {}
|
|
for k,v in pairs(eqps) do
|
|
local color = v:getcolor()
|
|
sets[color] = sets[color] or 0
|
|
sets[color] = sets[color] + 1
|
|
end
|
|
local ext = 0
|
|
for k,v in pairs(sets) do
|
|
local attrs = equipmentlogic.getsetattr(k, v)
|
|
for i,v in ipairs(attrs) do
|
|
ext = ext + v.hp_ratio
|
|
end
|
|
end
|
|
return ext
|
|
end
|
|
|
|
function heromodel:getclubext(k)
|
|
--TODO: 获取俱乐部科技
|
|
local clublv = {0,0,0,0,0,0,0,0}
|
|
return clublogic.getclubresearchattrnum(self.work, 0, k, clublv)
|
|
end
|
|
|
|
|
|
function heromodel:getskillext(k, heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
return herologic.getskillext(k, heroid, self.heros[heroid].stage, self.heros[heroid].skill)
|
|
end
|
|
|
|
function heromodel:getlvupext(k, heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local lv = self.heros[heroid].lv
|
|
local up = herologic.getlvupext(k, heroid)
|
|
return up * (lv -1)
|
|
end
|
|
|
|
|
|
function heromodel:getotherattr(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
return 100
|
|
end
|
|
|
|
function heromodel:getzhanli(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local r1 = self:getatk(heroid) * 1
|
|
local r2 = self:gethp(heroid) * 0.21
|
|
local r3 = self:getdef(heroid) * 0.74
|
|
local r4 = self:getspeed(heroid) * 1
|
|
return utils.round(r1 + r2 + r3 + r4)
|
|
end
|
|
|
|
function heromodel:gettotalzhanli()
|
|
local zhanli = 0
|
|
for i,v in pairs(self.heros) do
|
|
if v.pos > 0 then
|
|
local myzhanli = self:getzhanli(v.heroid)
|
|
zhanli = zhanli + myzhanli
|
|
end
|
|
end
|
|
return zhanli
|
|
end
|
|
|
|
--检查是否拥有英雄
|
|
function heromodel:checkhero(heroid)
|
|
if self.heros[heroid] ~= nil then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function heromodel:gethero(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
return self.heros[heroid]
|
|
end
|
|
|
|
|
|
function heromodel:getherobyheroid(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
return self.heros[heroid]
|
|
end
|
|
|
|
|
|
function heromodel:getherobyid(id)
|
|
for k,v in pairs(self.heros) do
|
|
if v.id == id then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
|
|
function heromodel:getequipment(heroid)
|
|
local hero = self:getherobyheroid(heroid)
|
|
return hero.equipment
|
|
end
|
|
|
|
--计算所有装备消耗
|
|
function heromodel:calequipmentconsume(heroid)
|
|
local eqps = self:getequipment(heroid)
|
|
local jingtie = 0
|
|
for k,v in pairs(eqps) do
|
|
jingtie = jingtie + v:calcurlvusejingtie()
|
|
end
|
|
return jingtie
|
|
end
|
|
|
|
--重生装备
|
|
function heromodel:equipmentreborn(heroid)
|
|
local eqps = self:getequipment(heroid)
|
|
for k,v in pairs(eqps) do
|
|
v:reborn()
|
|
end
|
|
self:save(heroid)
|
|
end
|
|
|
|
--""
|
|
function heromodel:gethaloext(tp)
|
|
local attrs = self:gethaloattrs()
|
|
local ext = 0
|
|
if attrs ~= nil then
|
|
for _, attr in ipairs(attrs) do
|
|
local n = attr[tp] or 0
|
|
ext = ext + n
|
|
end
|
|
end
|
|
return ext
|
|
end
|
|
|
|
function heromodel:gethaloattrs()
|
|
local temps = {}
|
|
for k,v in pairs(self.heros) do
|
|
local cfg = herologic.getconf(v.heroid)
|
|
if v.pos > 0 and cfg.color == 3 then
|
|
local club = cfg.club
|
|
temps[club] = temps[club] or 0
|
|
temps[club] = temps[club] + 1
|
|
end
|
|
end
|
|
local function found(temps)
|
|
for k,v in pairs(temps) do
|
|
if v >= 3 then
|
|
return k, v
|
|
end
|
|
end
|
|
end
|
|
local club, num = found(temps)
|
|
if club and num then
|
|
local attrs = herologic.gethaloattrs(club, num)
|
|
return attrs
|
|
end
|
|
end
|
|
|
|
function heromodel:getall()
|
|
local t = {}
|
|
for k,v in pairs(self.heros) do
|
|
table.insert(t, v)
|
|
end
|
|
return t
|
|
end
|
|
|
|
function heromodel:gethaveheros()
|
|
local t = {}
|
|
for k,v in pairs(self.heros) do
|
|
t[v.heroid] = true
|
|
end
|
|
return t
|
|
end
|
|
|
|
function heromodel:serializebyheroid(heroid)
|
|
local hero = self:getherobyheroid(heroid)
|
|
local temp = {}
|
|
temp.id = hero.id
|
|
temp.heroid = hero.heroid
|
|
temp.serverid = hero.serverid
|
|
temp.lv = hero.lv
|
|
temp.stage = hero.stage
|
|
temp.star = hero.star
|
|
temp.pos = hero.pos
|
|
temp.collect_emblemstar = hero.collect_emblemstar
|
|
temp.atk = self:getatk(heroid)
|
|
temp.hp = self:gethp(heroid)
|
|
temp.def = self:getdef(heroid)
|
|
temp.spd = self:getspeed(heroid)
|
|
temp.zhanli = self:getzhanli(heroid)
|
|
local equipment = {}
|
|
equipment.weapon = hero.equipment.weapon:serialize()
|
|
equipment.cloth = hero.equipment.cloth:serialize()
|
|
equipment.head = hero.equipment.head:serialize()
|
|
equipment.horse = hero.equipment.horse:serialize()
|
|
temp.equipment = equipment
|
|
local art = artifactmodel:getartbyheroid(heroid)
|
|
temp.yuling = {}
|
|
if art ~= nil then
|
|
temp.yuling = art
|
|
end
|
|
return temp
|
|
end
|
|
|
|
function heromodel:serialize()
|
|
local t = {}
|
|
for k,v in pairs(self.heros) do
|
|
local temp = {}
|
|
temp.id = v.id
|
|
temp.heroid = v.heroid
|
|
temp.serverid = v.serverid
|
|
temp.lv = v.lv
|
|
temp.stage = v.stage
|
|
temp.star = v.star
|
|
temp.pos = v.pos
|
|
temp.collect_emblemstar = v.collect_emblemstar
|
|
temp.atk = self:getatk(v.heroid)
|
|
temp.hp = self:gethp(v.heroid)
|
|
temp.def = self:getdef(v.heroid)
|
|
temp.spd = self:getspeed(v.heroid)
|
|
temp.zhanli = self:getzhanli(v.heroid)
|
|
local equipment = {}
|
|
equipment.weapon = v.equipment.weapon:serialize()
|
|
equipment.cloth = v.equipment.cloth:serialize()
|
|
equipment.head = v.equipment.head:serialize()
|
|
equipment.horse = v.equipment.horse:serialize()
|
|
temp.equipment = equipment
|
|
local art = artifactmodel:getartbyheroid(v.heroid)
|
|
temp.yuling = {}
|
|
if art ~= nil then
|
|
temp.yuling = art
|
|
end
|
|
table.insert(t, temp)
|
|
end
|
|
return table.array(t)
|
|
end
|
|
|
|
|
|
function heromodel:save(heroid)
|
|
assert(self.heros[heroid], "not found")
|
|
local hero = self.heros[heroid]
|
|
local temp = {}
|
|
temp.id = hero.id
|
|
temp.uid = UID
|
|
temp.heroid = hero.heroid
|
|
temp.serverid= hero.serverid
|
|
temp.lv = hero.lv
|
|
temp.stage = hero.stage
|
|
temp.star = hero.star
|
|
temp.pos = hero.pos
|
|
temp.collect_emblemstar = hero.collect_emblemstar
|
|
local equipment = {}
|
|
equipment.weapon = hero.equipment.weapon:save2serialize()
|
|
equipment.cloth = hero.equipment.cloth:save2serialize()
|
|
equipment.head = hero.equipment.head:save2serialize()
|
|
equipment.horse = hero.equipment.horse:save2serialize()
|
|
temp.equipment = equipment
|
|
local ok = skynet.call(".usercenterd", "lua", "savehero", UID, temp)
|
|
local ok = mqhelper.exec("upsert", UID, settings.hero_mongodb_key.tname, settings.hero_mongodb_key.cname, {["$set"]=temp}, {id=hero.id})
|
|
end
|
|
|
|
function heromodel:saveall()
|
|
for heroid,hero in pairs(self.heros) do
|
|
self:save(heroid)
|
|
end
|
|
end
|
|
|
|
return heromodel
|