Commit c7ecb87fb0756e9da2b2cf935303e0bc854f0265

Authored by zhouhaihai
1 parent 1313eac0

添加 测试账号 方法

src/actions/HttpAction.lua
... ... @@ -184,5 +184,23 @@ function _M.gm_action(query)
184 184 return gmFuncs[query.cmd](role, query)
185 185 end
186 186  
  187 +function _M.account_init(query, body)
  188 + if not query.id or not body or body == "" then return "指令不存在" end
  189 +
  190 + local ok, result = pcall(json.decode, body)
  191 + if not ok or type(result) ~= 'table' then
  192 + return "decode body error"
  193 + end
  194 + query.id = tonumber(query.id)
  195 + local agent = datacenter.get("agent", query.id)
  196 + if agent and agent.serv then
  197 + -- local ok, result = pcall(skynet.call, agent.serv, "role", "accountInit", result)
  198 + -- return ok and result or "指令在线失败"
  199 + skynet.call(agent.serv, "role", "accountInit", result)
  200 + return "成功"
  201 + else
  202 + return "角色不在线"
  203 + end
  204 +end
187 205  
188 206 return _M
189 207 \ No newline at end of file
... ...
src/models/Hero.lua
... ... @@ -44,6 +44,28 @@ function Hero:notifyUpdateProperties(params)
44 44 SendPacket(actionCodes.Hero_updateProperty, MsgPack.pack(updateData))
45 45 end
46 46  
  47 +function Hero:updateProperties(params, notNotify)
  48 + self:setProperties(params)
  49 +
  50 + local check = {level = true, breakL = true, wakeL = true, talent = true, loveL = true, equip = true, rune = true}
  51 + local datas = {}
  52 + local updateBV = false
  53 + for k , v in pairs(params) do
  54 + if check[k] then updateBV = true end
  55 + table.insert(datas, {key = k, newValue = self:getProperty(k)})
  56 + end
  57 + if updateBV then
  58 + local orginValue = self:getProperty("battleV")
  59 + local curValue = self:saveBattleValue()
  60 + if orginValue ~= curValue then
  61 + table.insert(datas, { key = "battleV", newValue = curValue })
  62 + end
  63 + end
  64 + if not notNotify then
  65 + self:notifyUpdateProperties(datas)
  66 + end
  67 +end
  68 +
47 69 function Hero:updateProperty(params)
48 70 if not params.field or (not params.delta and not params.value) then
49 71 return
... ...
src/models/RoleCross.lua
... ... @@ -42,6 +42,120 @@ RoleCross.bind = function (Role)
42 42 return info
43 43 end
44 44  
  45 + function Role:accountInit(initData)
  46 + -- 道具
  47 + local reward = {}
  48 + for k , v in pairs(initData.items or {}) do
  49 + reward[tonumber(k)] = v
  50 + end
  51 + self:award(reward)
  52 +
  53 + -- 英雄
  54 + local breakL = 0
  55 + for i = 0, #csvdb["unit_breakCsv"] do
  56 + if initData.heros.level >= csvdb["unit_breakCsv"][i].levelLimit then
  57 + breakL = i
  58 + else
  59 + break
  60 + end
  61 + end
  62 + local equip = ""
  63 + for slot, equipId in pairs(initData.heros.equip) do
  64 + equip = equip:setv(slot, equipId)
  65 + end
  66 +
  67 +
  68 +
  69 + for _, heroId in ipairs(initData.heros.ids) do
  70 + local hero = self:isHaveHero(heroId)
  71 + local status
  72 + if not hero then
  73 + status, hero = self:addHero({type = heroId})
  74 + else
  75 + status = true
  76 + end
  77 + if status then
  78 + local rune = ""
  79 + for slot , runeId in pairs(initData.heros.rune) do
  80 + slot = tonumber(slot)
  81 + local status, rune_ = self:addRune({type = slot, id = runeId})
  82 + if status == 0 then
  83 + rune = rune:setv(slot, rune_:getProperty("uid"))
  84 + if initData.heros.runeL and initData.heros.runeL > 0 then
  85 + rune_:updateProperty({field = "level",value = initData.heros.runeL})
  86 + end
  87 + rune_:updateProperty({field = "refer",value = hero:getProperty("id")})
  88 + end
  89 + end
  90 + local talent = ""
  91 + if initData.heros.talent and initData.heros.talent > 0 then
  92 + talent = talent:setv(0, initData.heros.talent)
  93 + local talentData = csvdb["unit_talentCsv"][initData.heros.talent]
  94 + for i = 1, 4 do
  95 + talent = talent:setv(i, #talentData)
  96 + end
  97 + end
  98 + local aheadLevel = 0
  99 + for i = 1, initData.heros.talent - 1 do
  100 + aheadLevel = aheadLevel + #csvdb["unit_talentCsv"][i]
  101 + end
  102 + aheadLevel = aheadLevel + talent:getv(1, 0)
  103 +
  104 + hero:updateProperties({
  105 + level = initData.heros.level,
  106 + breakL = breakL,
  107 + wakeL = initData.heros.wakeL,
  108 + talent = talent,
  109 + equip = equip,
  110 + rune = rune,
  111 + })
  112 + self:checkTaskEnter("Wake", {heroType = heroId, wakeL = initData.heros.wakeL})
  113 + self:checkTaskEnter("WakeCG", {heroType = heroId})
  114 + self:checkTaskEnter("HeroTalent", {heroType = heroId, alv = aheadLevel})
  115 +
  116 + end
  117 + end
  118 + self:checkTaskEnter("HeroLevelUp", {level = initData.heros.level})
  119 +
  120 + -- fb
  121 + local carbonId = initData.fb
  122 + local passCarbon = self:getProperty("hangPass")
  123 + local addPre
  124 + addPre = function(carbonId)
  125 + local carbonData = csvdb["idle_battleCsv"][carbonId]
  126 + for _, pre in ipairs(carbonData.prepose:toArray(true, "=")) do
  127 + passCarbon[pre] = 1
  128 + self:checkTaskEnter("HangPass", {id = pre})
  129 + addPre(pre)
  130 + end
  131 + end
  132 + passCarbon[carbonId] = 1
  133 + addPre(carbonId)
  134 + self:updateProperty({field = "hangPass", value = passCarbon})
  135 + self:checkTaskEnter("HangPass", {id = carbonId})
  136 +
  137 + -- talent
  138 + if initData.talent and initData.talent > 0 then
  139 + local dishTree = self.dinerData:getProperty("dishTree")
  140 + for _, v in pairs(csvdb["diner_treeCsv"]) do
  141 + for id, _ in pairs(v) do
  142 + dishTree = dishTree:setv(id, initData.talent)
  143 + end
  144 + end
  145 + self.dinerData:updateProperty({field = "dishTree", value = dishTree})
  146 + end
  147 + -- diner
  148 + if initData.diner and initData.diner > 0 then
  149 + local buildL = self.dinerData:getProperty("buildL")
  150 + for typ, _ in pairs(csvdb["diner_buildingCsv"]) do
  151 + buildL = buildL:setv(typ, initData.diner)
  152 + end
  153 + self.dinerData:updateProperty({field = "buildL", value = buildL})
  154 + end
  155 +
  156 + return "成功"
  157 + end
  158 +
45 159 end
46 160  
47 161  
... ...
src/models/RolePlugin.lua
... ... @@ -372,14 +372,14 @@ function RolePlugin.bind(Role)
372 372 local bin = MsgPack.pack(heroResponse)
373 373 SendPacket(actionCodes.Hero_loadInfos, bin)
374 374 end
375   - return true
  375 + return true, newHero
376 376 end
377 377  
378 378 function Role:isHaveHero(heroType)
379 379 if not csvdb["unitCsv"][heroType] then return false end
380 380 for _, hero in pairs(self.heros) do
381 381 if hero:getProperty("type") == heroType then
382   - return true
  382 + return hero
383 383 end
384 384 end
385 385 end
... ... @@ -524,7 +524,7 @@ function RolePlugin.bind(Role)
524 524 SendPacket(actionCodes.Role_loadRunes, MsgPack.pack(response))
525 525 end
526 526 self:checkTaskEnter("AddRune", {id = params.id, type = params.type, rarity = data.rarity}, params.notNotify)
527   - return 0
  527 + return 0, newRune
528 528 else
529 529 return 1
530 530 end
... ...
src/services/httpweb.lua
... ... @@ -32,6 +32,13 @@ rpcOtherUnion = function(...) end
32 32 local table = table
33 33 local string = string
34 34  
  35 +skynet.register_protocol {
  36 + name = "role",
  37 + id = 13,
  38 + pack = skynet.pack,
  39 + unpack = skynet.unpack,
  40 +}
  41 +
35 42 local port = ...
36 43 port = tonumber(port)
37 44  
... ...