Commit 09edeae630dbac02a6b13c77d55aa55cb378e923

Authored by zhouhaihai
2 parents abed32ed 44d8a134

Merge branch 'bugfix' into qa

* bugfix:
  活动以类型标识,修改双倍活动bug
  伤害计算
  数据保护
  数据保护
  充值 gm
  结算rmb
  客户端要用到角色创建时间
  两个记录bug
  新设备
  遗失的log
src/actions/DinerAction.lua
... ... @@ -901,6 +901,7 @@ function _M.entrustRpc(agent , data)
901 901  
902 902 role:finishGuide(26)
903 903 role:mylog("diner_action", {desc = "entrus", short1 = ctype, int1 = entrustId})
  904 + role:checkTaskEnter("VillageApply", {})
904 905  
905 906 SendPacket(actionCodes.Diner_entrustRpc, MsgPack.pack({reward = reward, change = change}))
906 907 return true
... ...
src/actions/GmAction.lua
... ... @@ -27,6 +27,7 @@ function _M.ignoreout(role, pms)
27 27 else -- 解除
28 28 role:updateProperty({field = "ignoreMt", value = 0})
29 29 end
  30 + role:mylog("gm_action", {desc = "ignoreout", key1 = pms.sender})
30 31 return "指令生效"
31 32 end
32 33  
... ... @@ -46,11 +47,17 @@ function _M.ban(role, pms)
46 47 end)
47 48 end
48 49 end
  50 +
  51 + role:mylog("gm_action", {desc = "ban", int1 = time, int2 = ctype, key1 = pms.sender})
  52 +
49 53 return isBan and "解封杀成功" or "封杀成功"
50 54 end
51 55  
52 56 function _M.unban(role, pms)
53 57 role:setBan(0, 0)
  58 +
  59 + role:mylog("gm_action", {desc = "unban", key1 = pms.sender})
  60 +
54 61 return "解封杀成功"
55 62 end
56 63  
... ... @@ -63,6 +70,8 @@ function _M.gmmsg(role, pms)
63 70 skynet.call(agent.gate_serv, "lua", "forcekick", agent.fd)
64 71 end)
65 72 end
  73 + role:mylog("gm_action", {desc = "gmmsg", text1 = pms.pm1, key1 = pms.sender})
  74 +
66 75 return "指令成功"
67 76 end
68 77  
... ... @@ -73,6 +82,8 @@ function _M.silent(role, pms)
73 82 return "解禁言成功"
74 83 end
75 84 role:updateProperty({field = "silent", value = specTime({hour = 0}, skynet.timex()) + pm1 * 86400})
  85 +
  86 + role:mylog("gm_action", {desc = "silent", int1 = pms.pm1, key1 = pms.sender})
76 87 return "禁言成功"
77 88 end
78 89  
... ... @@ -90,6 +101,8 @@ function _M.hero(role, pms)
90 101 if not role:addHero({type = heroType, log = {desc = "gm"}}) then
91 102 return "失败"
92 103 end
  104 +
  105 + role:mylog("gm_action", {desc = "hero", int1 = heroType, key1 = pms.sender})
93 106 return "成功"
94 107 end
95 108  
... ... @@ -122,6 +135,8 @@ function _M.herol(role, pms)
122 135 hero:updateProperty({field = "level", delta = addLevel})
123 136 role:checkTaskEnter("HeroLevelUp", {level = hero:getProperty("level")})
124 137  
  138 + role:mylog("gm_action", {desc = "herol", int1 = heroType, int2 = addLevel, key1 = pms.sender})
  139 +
125 140 return "成功"
126 141 end
127 142  
... ... @@ -133,6 +148,8 @@ function _M.herola(role, pms)
133 148 _M.herol(role, {pm1 = hero:getProperty("type"), pm2 = addLevel})
134 149 end
135 150  
  151 + role:mylog("gm_action", {desc = "herola", int1 = addLevel, key1 = pms.sender})
  152 +
136 153 return "成功"
137 154 end
138 155  
... ... @@ -143,6 +160,7 @@ function _M.equip(role, pms)
143 160 local level = tonum(pms.pm2)
144 161 local count = tonum(pms.pm3)
145 162 role:addEquip(typ, level, count, {log = {desc = "gm"}})
  163 + role:mylog("gm_action", {desc = "equip", int1 = typ, int2 = level, long1 = count, key1 = pms.sender})
146 164 return "成功"
147 165 end
148 166  
... ... @@ -151,6 +169,7 @@ function _M.rune(role, pms)
151 169 local typ = tonum(pms.pm1)
152 170 local id = tonum(pms.pm2)
153 171 local result = role:addRune({type = typ,id = id, log = {desc = "gm"}})
  172 + role:mylog("gm_action", {desc = "rune", int1 = typ, int2 = id, key1 = pms.sender})
154 173  
155 174 return result
156 175 end
... ... @@ -171,6 +190,8 @@ function _M.fb(role, pms) -- 直接通关
171 190 role:hangFinish(carbonId)
172 191 addPre(carbonId)
173 192  
  193 + role:mylog("gm_action", {desc = "fb", int1 = carbonId, key1 = pms.sender})
  194 +
174 195 role:checkTaskEnter("HangPass", {id = carbonId})
175 196 return "成功"
176 197 end
... ... @@ -191,6 +212,8 @@ function _M.fbc(role, pms) -- 直接通关
191 212 end
192 213 role:updateProperty({field = "hangPass", value = {}})
193 214 addPre(carbonId)
  215 +
  216 + role:mylog("gm_action", {desc = "fbc", int1 = carbonId, key1 = pms.sender})
194 217  
195 218 return "成功"
196 219 end
... ... @@ -224,6 +247,8 @@ function _M.exp(role, pms)
224 247 exp = math.floor(math.max(exp, 0))
225 248 role:addPlayExp(exp, {log = {desc = "gm"}})
226 249  
  250 + role:mylog("gm_action", {desc = "exp", int1 = exp, key1 = pms.sender})
  251 +
227 252 return "成功"
228 253 end
229 254  
... ... @@ -280,6 +305,7 @@ function _M.get(role, pms)
280 305 end
281 306 local count = tonum(pms.pm2, 1)
282 307 role:award({[itemId] = count}, {log = {desc = "gm"}})
  308 + role:mylog("gm_action", {desc = "get", int1 = itemId, int2 = count, key1 = pms.sender})
283 309 end
284 310 return "成功"
285 311 end
... ... @@ -303,6 +329,9 @@ function _M.advc(role, pms)
303 329 advAFWear = {},
304 330 }, notNotify)
305 331 role.advData = nil
  332 +
  333 + role:mylog("gm_action", {desc = "advc", key1 = pms.sender})
  334 +
306 335 return "成功"
307 336 end
308 337  
... ... @@ -311,6 +340,8 @@ function _M.advf(role, pms)
311 340 role:updateProperty({field = "advC", value = 0})
312 341 role.dailyData:updateProperty({field = "advElC", value = 0})
313 342  
  343 + role:mylog("gm_action", {desc = "advf", key1 = pms.sender})
  344 +
314 345 return "成功"
315 346 end
316 347  
... ... @@ -330,6 +361,7 @@ function _M.adv(role, pms)
330 361 advPass[chapterId] = layer
331 362 role:updateProperty({field = "advPass", value = advPass})
332 363 end
  364 + role:mylog("gm_action", {desc = "adv", int1 = chapterId, int2 = layer, key1 = pms.sender})
333 365  
334 366 return "成功"
335 367 end
... ... @@ -356,6 +388,7 @@ function _M.advt(role, pms)
356 388 isEnter = true,
357 389 debugMapId = mapId,
358 390 })
  391 + role:mylog("gm_action", {desc = "advt", int1 = chapterId, int2 = layer, key1 = pms.sender})
359 392 return "成功"
360 393 end
361 394  
... ... @@ -364,6 +397,8 @@ function _M.advl(role, pms)
364 397 local exp = tonum(pms.pm1)
365 398 role:addAdvLvExp(math.max(0, exp))
366 399  
  400 + role:mylog("gm_action", {desc = "advl", int1 = exp, key1 = pms.sender})
  401 +
367 402 return "成功"
368 403 end
369 404  
... ... @@ -377,6 +412,7 @@ function _M.advcl(role, pms)
377 412 end
378 413 advData.battle.player:addExp(exp)
379 414 advData:saveDB()
  415 + role:mylog("gm_action", {desc = "advcl", int1 = exp, key1 = pms.sender})
380 416  
381 417 return "成功"
382 418 end
... ... @@ -386,6 +422,7 @@ function _M.idlec(role, pms)
386 422 role:updateProperty({field = "hangTeam", value = {}})
387 423 role:updateProperty({field = "hangInfo", value = {}})
388 424 role:updateProperty({field = "hangBag", value = {}})
  425 + role:mylog("gm_action", {desc = "idlec", key1 = pms.sender})
389 426  
390 427 role.advData = nil
391 428 return "成功"
... ... @@ -410,6 +447,8 @@ function _M.advit(role, pms)
410 447 local itemId = tonum(pms.pm1)
411 448 local count = tonum(pms.pm2)
412 449 reward[itemId] = count
  450 +
  451 + role:mylog("gm_action", {desc = "advit", int1 = itemId, int2 = count, key1 = pms.sender})
413 452 end
414 453  
415 454  
... ... @@ -425,6 +464,8 @@ function _M.tower(role, pms)
425 464 if not csvdb["tower_battleCsv"][level] then return "不存在" end
426 465 role:updateProperty({field = "towerInfo", value = {c = globalCsv.tower_count_limit, l = level}})
427 466  
  467 + role:mylog("gm_action", {desc = "tower", int1 = level, key1 = pms.sender})
  468 +
428 469 return "成功"
429 470 end
430 471  
... ... @@ -443,6 +484,8 @@ function _M.email(role, pms)
443 484 rewardPms = id ~= 0 and reward or nil,
444 485 })
445 486  
  487 + role:mylog("gm_action", {desc = "email", int1 = id, key1 = pms.sender})
  488 +
446 489 return "成功"
447 490 end
448 491  
... ... @@ -461,6 +504,8 @@ function _M.guide(role, pms)
461 504 end
462 505 end
463 506 role:updateProperty({field = "funcGuide", value = str})
  507 + role:mylog("gm_action", {desc = "sguide", key1 = pms.sender})
  508 +
464 509 elseif cmd == "RESET" then
465 510 local id = tonum(pms.pm2, 0)
466 511 if id == 0 then
... ... @@ -473,6 +518,8 @@ function _M.guide(role, pms)
473 518 elseif id == 2 then
474 519 role:updateProperty({field = "funcGuide", value = ""})
475 520 end
  521 + role:mylog("gm_action", {desc = "cguide", int1 = id, key1 = pms.sender})
  522 +
476 523 end
477 524  
478 525 return "成功"
... ... @@ -496,4 +543,21 @@ function _M.ayncPurchase(role, params)
496 543 return role:handlePurchase(params) or ""
497 544 end
498 545  
  546 +function _M.cz(role, pms)
  547 + local id = tonum(pms.pm1)
  548 + local csvData = csvdb["shop_rechargeCsv"][id]
  549 + if not csvData then
  550 + return "充值id错误, 查看shop_recharge.csv"
  551 + end
  552 + role:recharge({
  553 + id = id,
  554 + transactionId = "GM",
  555 + order = "GM",
  556 + pay_time = skynet.timex(),
  557 + })
  558 + role:mylog("gm_action", {desc = "recharge", int1 = id, key1 = pms.sender})
  559 + return "指令成功"
  560 +end
  561 +
  562 +
499 563 return _M
500 564 \ No newline at end of file
... ...
src/actions/HangAction.lua
... ... @@ -166,7 +166,7 @@ function _M.startRpc( agent, data )
166 166 elseif carbonId == 10220 then
167 167 role:saveGuide(22,1)
168 168 end
169   -
  169 + role:mylog("hang_action", {desc = "startHang", int1 = carbonId})
170 170 SendPacket(actionCodes.Hang_startRpc, '')
171 171 return true
172 172 end
... ... @@ -289,6 +289,9 @@ function _M.endBattleRpc(agent, data)
289 289 reward = reward,
290 290 })
291 291  
  292 + local team = role:getProperty("pvpTC")
  293 + role:mylog("hang_action", {desc = "hangBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = carbonId, int2 = role:getProperty("hangTBV"), cint1 = role:getHerosCamp(team.heros)})
  294 +
292 295 SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({
293 296 starNum = msg.starNum,
294 297 reward = reward,
... ... @@ -409,10 +412,9 @@ function _M.quickRpc(agent , data)
409 412 end
410 413  
411 414 local doubleCoef = role.activity:isOpen("DoubleDrop") and 2 or 1
412   -
413 415 -- 特权卡获取加速获得额外道具
414 416 local coef = role.storeData:getProduceItemSpeedCoef()
415   - if coef > 1 then
  417 + if coef > 1 or doubleCoef > 1 then
416 418 for k, cnt in pairs(reward) do
417 419 reward[k] = math.floor(cnt * coef * doubleCoef)
418 420 end
... ... @@ -479,10 +481,15 @@ function _M.buyBonusCountRpc(agent, data)
479 481 local btype = msg.type
480 482  
481 483 if not TimeReset["DailyBattle" .. btype] then return end
  484 + local open, actId = role.activity:isOpen("BonusDouble")
  485 + local actData = csvdb["activity_ctrlCsv"][actId]
  486 + if not actData then return end
  487 +
  488 + local coef = open and tonumber(actData.condition2) or 1
482 489  
483 490 local bonusC = role.dailyData:getProperty("bonusC")
484 491 bonusC[btype] = bonusC[btype] or {c = 0, b = 0}
485   - local lastCount = globalCsv.bonus_daily_buy_count - bonusC[btype]["b"]
  492 + local lastCount = globalCsv.bonus_daily_buy_count * coef - bonusC[btype]["b"]
486 493 if math.illegalNum(count, 1, lastCount) then return 1 end
487 494  
488 495 if not role:checkItemEnough({[ItemId.Diamond] = globalCsv.bonus_buy_cost * count}) then return 2 end
... ... @@ -502,20 +509,30 @@ function _M.startBonusBattleRpc(agent, data)
502 509 local msg = MsgPack.unpack(data)
503 510 local id = msg.id
504 511  
505   - if not role:isFuncUnlock(FuncUnlock.BonusBattle) then return end
  512 + local open, actId = role.activity:isOpen("BonusDouble")
  513 +
  514 + if not role:isFuncUnlock(FuncUnlock.BonusBattle) then return 1 end
506 515  
507 516 local bonusData = csvdb["bonus_battleCsv"][id]
508 517  
509   - if not role:isTimeResetOpen(TimeReset["DailyBattle" .. bonusData.type]) then return end
  518 + if not open then
  519 + if not role:isTimeResetOpen(TimeReset["DailyBattle" .. bonusData.type]) then return 2 end
  520 + end
510 521  
511   - if not bonusData then return 1 end
512   - if not role:checkHangPass(bonusData.unlock) then return 2 end
  522 + if not bonusData then return 3 end
  523 + if not role:checkHangPass(bonusData.unlock) then return 4 end
513 524  
514   - if not next(role:getProperty("bTeam")) then return 3 end
  525 + if not next(role:getProperty("bTeam")) then return 5 end
515 526  
516 527 local bonusC = role.dailyData:getProperty("bonusC")
517 528 bonusC[bonusData.type] = bonusC[bonusData.type] or {c = 0, b = 0}
518   - if globalCsv.bonus_daily_count - bonusC[bonusData.type]["c"] <= 0 then return 4 end
  529 +
  530 + local actData = csvdb["activity_ctrlCsv"][actId]
  531 + if not actData then return 6 end
  532 +
  533 + local coef = open and tonumber(actData.condition2) or 1
  534 +
  535 + if globalCsv.bonus_daily_count * coef - bonusC[bonusData.type]["c"] <= 0 then return 7 end
519 536  
520 537  
521 538 role.__bonusBattleCache = {
... ... @@ -533,6 +550,11 @@ function _M.endBonusBattleRpc(agent, data)
533 550 local key = msg.key
534 551 local starNum = msg.starNum
535 552 if not role.__bonusBattleCache then return 1 end
  553 + local open, actId = role.activity:isOpen("BonusDouble")
  554 + local actData = csvdb["activity_ctrlCsv"][actId]
  555 + if not actData then return end
  556 +
  557 + local coef = open and tonumber(actData.condition2) or 1
536 558  
537 559 if role.__bonusBattleCache.id ~= id or role.__bonusBattleCache.key ~= key then
538 560 SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({errorCode = 1}))
... ... @@ -545,7 +567,7 @@ function _M.endBonusBattleRpc(agent, data)
545 567 -- 胜利扣除次数
546 568 local bonusC = role.dailyData:getProperty("bonusC")
547 569 bonusC[bonusData.type] = bonusC[bonusData.type] or {c = 0, b = 0}
548   - if globalCsv.bonus_daily_count - bonusC[bonusData.type]["c"] <= 0 then return 3 end
  570 + if globalCsv.bonus_daily_count * coef - bonusC[bonusData.type]["c"] <= 0 then return 3 end
549 571 bonusC[bonusData.type]["c"] = bonusC[bonusData.type]["c"] + 1
550 572 role.dailyData:updateProperty({field = "bonusC", value = bonusC})
551 573  
... ... @@ -554,6 +576,9 @@ function _M.endBonusBattleRpc(agent, data)
554 576 if chance[1] ~= 0 then
555 577 reward[chance[1]] = (reward[chance[1]] or 0) + chance[2]
556 578 end
  579 + for k, v in pairs(reward) do
  580 + reward[k] = v * (coef > 1 and actData.condition or 1)
  581 + end
557 582 reward, change = role:award(reward, {log = {desc = "bonusBattle", int1 = id}})
558 583 role:checkTaskEnter("BonusPass", {id = id})
559 584 end
... ... @@ -564,6 +589,8 @@ function _M.endBonusBattleRpc(agent, data)
564 589 info = msg.info,
565 590 reward = reward,
566 591 })
  592 + role:mylog("hang_action", {desc = "bonusBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = id})
  593 +
567 594 SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({
568 595 starNum = starNum,
569 596 reward = reward,
... ... @@ -586,6 +613,7 @@ function _M.hangGiftRpc(agent, data)
586 613 local reward, change = role:award(carbonData.item_clear_special, {log = {desc = "hangGift", int1 = id}})
587 614  
588 615 role:changeUpdates({{type = "hangGift", field = id, value = 1}})
  616 + role:mylog("hang_action", {desc = "hangGift", int1 = id})
589 617  
590 618 SendPacket(actionCodes.Hang_hangGiftRpc, MsgPack.pack({reward = reward, change = change}))
591 619 return true
... ...
src/actions/HeroAction.lua
... ... @@ -721,7 +721,7 @@ function _M.drawHeroRpc(agent, data)
721 721 local role = agent.role
722 722 local msg = MsgPack.unpack(data)
723 723  
724   - if not role:isFuncUnlock(FuncUnlock.GetHero) then return end
  724 + if not role:isFuncUnlock(FuncUnlock.GetHero) then return 1 end
725 725 local btype = msg.pool -- 1 2 3 卡池类型
726 726 local subType = msg.subType or 1-- 定向卡池需要传 子类型
727 727 local drawType = msg.type -- 1 单抽 2 十连
... ... @@ -730,10 +730,10 @@ function _M.drawHeroRpc(agent, data)
730 730 end
731 731  
732 732 local buildTypeData = csvdb["build_typeCsv"][btype]
733   - if not buildTypeData then return 1 end
  733 + if not buildTypeData then return 2 end
734 734  
735 735 local drawCount = {1, 10} -- 抽取次数
736   - if not drawCount[drawType] then return 2 end
  736 + if not drawCount[drawType] then return 3 end
737 737  
738 738 local draw_floor_back_counts = globalCsv.draw_floor_back_counts[btype]
739 739 local floorHeroCount = role:getProperty("floorHero")[btype] or 0
... ... @@ -757,20 +757,20 @@ function _M.drawHeroRpc(agent, data)
757 757 end
758 758 end
759 759 if lastCount > 0 then -- 钱不够
760   - return 3
  760 + return 4
761 761 end
762 762  
763 763 -- 抽取的池子
764 764 local poolMap = buildTypeData["pool"]:toNumMap()
765 765 local poolId = poolMap[subType]
766   - if not poolId then return end
  766 + if not poolId then return 5 end
767 767  
768 768 --判断定向卡池是否开启
769 769 if btype == 1 then
770 770 if not role:isTimeResetOpen(TimeReset["DrawType" .. subType]) then
771 771 local unlockPool = role.dailyData:getProperty("unlockPool")
772 772 if not unlockPool[subType] then
773   - return 1
  773 + return 6
774 774 end
775 775 end
776 776 end
... ... @@ -782,12 +782,12 @@ function _M.drawHeroRpc(agent, data)
782 782 end
783 783  
784 784 local unitPool = csvdb["build_unitCsv"][poolId]
785   - if not unitPool then return 4 end
  785 + if not unitPool then return 7 end
786 786  
787 787 -- 开始抽
788 788 local resultPool = {}
789 789 local function fillDrawPool(isFloorBack)
790   - local condition = {"rare", "camp"}
  790 + local condition = {"rare"}
791 791 local values = {}
792 792  
793 793  
... ... @@ -848,7 +848,7 @@ function _M.drawHeroRpc(agent, data)
848 848 fillDrawPool(isFloorBack)
849 849 if not next(resultPool) then
850 850 skynet.error("random pool error, poolId:" .. poolId)
851   - return
  851 + return 8
852 852 end
853 853  
854 854 local itemId = math.randWeight(resultPool, 1)
... ...
src/actions/RoleAction.lua
... ... @@ -292,7 +292,10 @@ function _M.loginRpc( agent, data )
292 292  
293 293 local hangPass = role:getProperty("hangPass")
294 294 role:log("onLogin")
295   -
  295 + role:mylog("login", {key1 = agent.ip:toArray(false, ":")[1], int1 = hangPass[1] or 0})
  296 + if msg.newdevice then
  297 + role:mylog("newdevice", {key1 = agent.ip:toArray(false, ":")[1]})
  298 + end
296 299 return true
297 300 end
298 301  
... ... @@ -359,7 +362,10 @@ function _M.createRpc(agent, data)
359 362 newRole:log("onCreateAccount")
360 363 end
361 364 newRole:log("onCreateRole")
362   -
  365 + newRole:mylog("create", {key1 = agent.ip:toArray(false, ":")[1]})
  366 + if msg.newdevice then
  367 + newRole:mylog("newdevice", {key1 = agent.ip:toArray(false, ":")[1]})
  368 + end
363 369  
364 370 SendPacket(actionCodes.Role_createRpc, MsgPack.pack(response))
365 371 return true
... ... @@ -552,7 +558,7 @@ function _M.openTimeBoxRpc(agent, data)
552 558 if boxL[slot].time > skynet.timex() then -- 没开完
553 559 if not quick then return end
554 560 local cost_pre = globalCsv.box_timeOpen_diamond:toArray(true, "=")
555   - local costKey = math.ceil((boxL[slot].time - skynet.timex()) / (cost_pre[1] * 60)) * cost_pre[2]
  561 + costKey = math.ceil((boxL[slot].time - skynet.timex()) / (cost_pre[1] * 60)) * cost_pre[2]
556 562 if not role:checkItemEnough({[ItemId.BoxKey] = costKey}) then return end
557 563 role:costItems({[ItemId.BoxKey] = costKey}, {log = {desc = "openTimeBox"}})
558 564 end
... ... @@ -584,7 +590,7 @@ function _M.openTimeBoxRpc(agent, data)
584 590  
585 591 boxL[slot] = nil
586 592 reward, change = role:award(reward, {log = {desc = "openTimeBox", int1 = boxId}})
587   - role:checkTaskEnter("OpenBox", {id = boxId, count=1})
  593 + role:checkTaskEnter("OpenBox", {id = boxId, count=1, quality=itemData.quality})
588 594  
589 595 role:log("carriage_dismantle", {
590 596 item_id = boxId, -- 道具id
... ... @@ -687,8 +693,8 @@ function _M.storyBookRewardRpc(agent, data)
687 693 role:log("carriage_video", {
688 694 carriage_video_type = storyBookData.type, --放映室类型,剧情CG:0, 角色CG:1, 主线剧情:2, 角色剧情:3, 活动剧情:4, 图鉴:5
689 695 carriage_video_id = storyId, --放映室片段ID
690   - carriage_video_coinid = reward[ItemId.Gold] and ItemId.Gold or 0, --放映奖励货币类型,无奖励则填写0
691   - carriage_video_coinnum = reward[ItemId.Gold] or 0, --放映奖励货币数量,无奖励则填写0
  696 + carriage_video_coinid = reward[ItemId.Diamond] and ItemId.Diamond or 0, --放映奖励货币类型,无奖励则填写0
  697 + carriage_video_coinnum = reward[ItemId.Diamond] or 0, --放映奖励货币数量,无奖励则填写0
692 698 carriage_video_item = reward, --放映奖励其他物品数量,json格式记录,{'itemid1':10,'itemid2':5,…………..},无奖励则填写0
693 699 })
694 700  
... ... @@ -1007,7 +1013,7 @@ function _M.changeSettingRpc(agent, data)
1007 1013 local setting = role:getProperty("setting")
1008 1014 setting[id] = status
1009 1015 role:updateProperty({field = "setting", value = setting})
1010   -
  1016 + role:mylog("role_action", {desc = "changeSetting", int1 = id, int2 = status})
1011 1017 SendPacket(actionCodes.Role_changeSettingRpc, '')
1012 1018 return true
1013 1019 end
... ... @@ -1045,6 +1051,7 @@ function _M.drawCodeRpc(agent, data)
1045 1051 gift_name = "", -- 礼包名称
1046 1052 gift_reason = 0, -- 礼包发放原因,见发放原因枚举表
1047 1053 })
  1054 + role:mylog("role_action", {desc = "drawCode", int1 = giftId, key1 = code})
1048 1055 SendPacket(actionCodes.Role_drawCodeRpc, MsgPack.pack({
1049 1056 result = ret,
1050 1057 reward = reward,
... ... @@ -1119,6 +1126,7 @@ function _M.guideRpc(agent, data)
1119 1126 if msg.funcType then
1120 1127 funcGuide = funcGuide:setv(msg.funcType, 1)
1121 1128 role:log("onGuidePoint", {guild_type = 2, guild_id = msg.funcType, guild_point = 0, guild_pass = 0})
  1129 + role:mylog("guide", {desc = "guide_weak", int1 = msg.funcType})
1122 1130 end
1123 1131 role:updateProperty({field = "funcGuide", value = funcGuide})
1124 1132 elseif cmdType == 3 then
... ... @@ -1128,6 +1136,7 @@ function _M.guideRpc(agent, data)
1128 1136 funcGuide = funcGuide:setv(msg.funcType, 1)
1129 1137 role:updateProperty({field = "funcGuide", value = funcGuide})
1130 1138 role:log("onGuidePoint", {guild_type = 1, guild_id = msg.funcType, guild_point = 0, guild_pass = 0})
  1139 + role:mylog("guide", {desc = "guide_sys", int1 = msg.funcType})
1131 1140 end
1132 1141 elseif cmdType == 4 then
1133 1142 -- 弹出一个tips(进入功能界面也许要自动弹说明,value要区分1、2)
... ... @@ -1135,6 +1144,7 @@ function _M.guideRpc(agent, data)
1135 1144 local value = msg.value or 1
1136 1145 for _, funcIdx in pairs(msg.funcType:toArray(true,"=")) do
1137 1146 role:log("onGuidePoint", {guild_type = 3, guild_id = funcIdx, guild_point = 0, guild_pass = 0})
  1147 + role:mylog("guide", {desc = "guide_tips", int1 = funcIdx})
1138 1148 funcGuide = funcGuide:setv(funcIdx, value)
1139 1149 end
1140 1150 role:updateProperty({field = "funcGuide", value = funcGuide})
... ...
src/adv/AdvPlayer.lua
... ... @@ -332,7 +332,7 @@ end
332 332 --计算自己伤害减免后的值
333 333 function BaseObject:getInjuredValue(value)
334 334 local injuredChange = self:getInjuredChange()
335   - return math.max(0, (value - self.def + injuredChange[0]) * (1 + injuredChange[1]))
  335 + return math.max(0, (value + injuredChange[0]) * (1 + injuredChange[1]))
336 336 end
337 337  
338 338 --最终伤害 = [ (敌方攻击 - 己方防御) * (1+伤害增加百分比-伤害减少百分比)*(1+受伤增加百分比-受伤减少百分比)+(伤害增加固定值-伤害增加固定值+受伤增加固定值-受伤增加固定值)]*(1+侍宠百分比)-侍宠固定值
... ... @@ -348,10 +348,11 @@ function BaseObject:hurt(value, releaser, params)
348 348 end
349 349 end
350 350  
351   - if params.hurtType ~= 5 and params.hurtType ~= 6 then
352   - if not params.hurtType or params.hurtType ~= 4 then
353   - value = self:getInjuredValue(value) --减伤计算
  351 + if params.hurtType ~= 5 then
  352 + if params.hurtType ~= 6 or params.hurtType ~= 4 then
  353 + value = math.max(0, value - self.def)
354 354 end
  355 + value = self:getInjuredValue(value) --减伤计算
355 356 if value == 0 then return end
356 357  
357 358 -- 舍身和恃宠
... ...
1   -Subproject commit 5751e98613ad7ade246cb9068c6752ecca115163
  1 +Subproject commit 76bf12dfa6afe523ec30d1da6467cb8cbd30790f
... ...
src/models/Activity.lua
1 1 local Activity = class("Activity", require("shared.ModelBase"))
2 2 local string_format = string.format
3 3  
  4 +-- activity_ctr showType
4 5 Activity.ActivityType = {
5   - Sign = 1, -- 签到
  6 + SsrUpPoolChange = 1, -- 特定英雄活动,切卡池
6 7 DoubleDrop = 2, -- 双倍掉落
7   - FoodSell = 3, --贩卖周 料理
8   - DrawHero = 4, --抽卡周 招募
9   - AdvDraw = 5, --拾荒抽周 资助
10   - OpenBox = 6, --拆解周 时钟箱
11   - PaySignIn = 7, --付费签到
12   - PayBack = 9, --返利
13   -
14   - SsrUpPoolChange = 10, -- 特定英雄活动,切卡池
  8 + Sign = 4, -- 签到
  9 + ChangeCG = 5, -- 客户端使用,切换抽卡界面
  10 + PaySignIn = 6, --付费签到
  11 + ExploreCommand = 7, -- 探索指令
  12 + PayBack = 8, --返利
  13 +
  14 + BonusDouble = 9, -- 奖励关卡翻倍
  15 + CalendaTask = 10, -- 日历任务
  16 +
  17 + FoodSell = 11, --贩卖周 料理
  18 + DrawHero = 12, --抽卡周 招募
  19 + AdvDraw = 13, --拾荒抽周 资助
  20 + OpenBox = 14, --拆解周 时钟箱
15 21 }
16 22  
17 23  
... ... @@ -33,26 +39,27 @@ end
33 39 Activity.schema = {
34 40 actime = {"table", {}}, -- 最近检查某项活动的开始时间 {id = time}
35 41 round = {"table", {}}, -- 记录活动到了第几轮 {id = roundnum}
36   - act1 = {"table", {}}, -- {0 = day, 1= -1, 2 = -1} == 签到活动
37   - act3 = {"table", {}}, -- {0 = 抽卡次数, 1=1, 2=1} 抽卡周活动 1表示领取过该档位的奖励
38   - act4 = {"table", {}}, -- {0 = 贩卖数量, 1=1, 2=1} 贩卖周活动 1表示领取过该档位的奖励
39   - act5 = {"table", {}}, -- {0 = 拆解数量, 1=1, 2=1} 拆解周活动 1表示领取过该档位的奖励
40   - act6 = {"table", {}}, -- {0 = 拾荒消耗远古金币数量, 1=1, 2=1} 拾荒周活动 1表示领取过该档位的奖励
41   - act7 = {"table", {}}, -- {1 = 1, 2 = 1} == 付费签到活动
42   - act9 = {"number", 0}, -- 充值返利
  42 + act4 = {"table", {}}, -- {0 = day, 1= -1, 2 = -1} == 签到活动
  43 + act6 = {"table", {}}, -- {1 = 1, 2 = 1} == 付费签到活动
  44 + act8 = {"number", 0}, -- 充值返利
  45 +
  46 + act11 = {"table", {}}, -- {0 = 贩卖数量, 1=1, 2=1} 贩卖周活动 1表示领取过该档位的奖励
  47 + act12 = {"table", {}}, -- {0 = 抽卡次数, 1=1, 2=1} 抽卡周活动 1表示领取过该档位的奖励
  48 + act13 = {"table", {}}, -- {0 = 拾荒消耗远古金币数量, 1=1, 2=1} 拾荒周活动 1表示领取过该档位的奖励
  49 + act14 = {"table", {}}, -- {0 = 拆解数量, 1=1, 2=1} 拆解周活动 1表示领取过该档位的奖励
43 50 }
44 51  
45 52 function Activity:data()
46 53 return {
47 54 actime = self:getProperty("actime"),
48 55 round = self:getProperty("round"),
49   - act1 = self:getProperty("act1"),
50   - act3 = self:getProperty("act3"),
51 56 act4 = self:getProperty("act4"),
52   - act5 = self:getProperty("act5"),
53 57 act6 = self:getProperty("act6"),
54   - act7 = self:getProperty("act7"),
55   - act9 = self:getProperty("act9"),
  58 + act8 = self:getProperty("act8"),
  59 + act11 = self:getProperty("act11"),
  60 + act12 = self:getProperty("act12"),
  61 + act13 = self:getProperty("act13"),
  62 + act14 = self:getProperty("act14"),
56 63 }
57 64 end
58 65  
... ... @@ -77,10 +84,9 @@ function Activity:updateProperty(params)
77 84 return false
78 85 end
79 86  
80   -
81   -function Activity:isOpenRaw(activityType, now)
82   - activityType = checkActivityType(activityType)
83   - local actData = csvdb["activity_ctrlCsv"][activityType]
  87 +function Activity:isOpenRaw(activityId, now)
  88 + activityId = checkActivityType(activityId)
  89 + local actData = csvdb["activity_ctrlCsv"][activityId]
84 90 if not actData then return end
85 91  
86 92 if actData.time == "" then -- 关闭
... ... @@ -89,7 +95,7 @@ function Activity:isOpenRaw(activityType, now)
89 95  
90 96 local st = 0
91 97 local et = 0
92   - local now = skynet.timex()
  98 + --local now = skynet.timex()
93 99  
94 100 if actData.ttype == 0 then -- 时间开放
95 101 local openTimes = actData.time:toArray(false, "=")
... ... @@ -118,7 +124,17 @@ end
118 124 -- 缓存开放
119 125 function Activity:isOpen(activityType)
120 126 activityType = checkActivityType(activityType)
121   - return self._isOpen[activityType]
  127 + --return self._isOpen[activityType]
  128 + local open = false
  129 + for id, data in pairs(csvdb["activity_ctrlCsv"]) do
  130 + if data.showType == activityType then
  131 + open = self._isOpen[data.id]
  132 + if open then
  133 + return true, data.id
  134 + end
  135 + end
  136 + end
  137 + return false
122 138 end
123 139  
124 140 function Activity:getActData(actType)
... ... @@ -137,22 +153,22 @@ function Activity:checkActivityStatus(now, isCrossDay, notify)
137 153 self._isOpen = {}
138 154 local actime = self:getProperty("actime")
139 155 local change = false
140   - for actType, actData in pairs(csvdb["activity_ctrlCsv"]) do
141   - local isOpen, startTime = self:isOpenRaw(actType, now)
142   - self._isOpen[actType] = isOpen
  156 + for actId, actData in pairs(csvdb["activity_ctrlCsv"]) do
  157 + local isOpen, startTime = self:isOpenRaw(actId, now)
  158 + self._isOpen[actId] = isOpen
143 159  
144 160 if isOpen then
145   - if actime[actType] and actime[actType] == startTime then -- 还是之前的状态 开放中
  161 + if actime[actId] and actime[actId] == startTime then -- 还是之前的状态 开放中
146 162 else -- 重置
147   - actime[actType] = startTime
148   - self:closeActivity(actType, notify, true)
149   - self:initActivity(actType, isCrossDay, notify)
  163 + actime[actId] = startTime
  164 + self:closeActivity(actId, notify, true)
  165 + self:initActivity(actId, isCrossDay, notify)
150 166 change = true
151 167 end
152 168 else
153   - if actime[actType] then
154   - self:closeActivity(actType, notify)
155   - actime[actType] = nil
  169 + if actime[actId] then
  170 + self:closeActivity(actId, notify)
  171 + actime[actId] = nil
156 172 change = true
157 173 end
158 174 end
... ... @@ -345,13 +361,19 @@ activityFunc[Activity.ActivityType.PayBack] = {
345 361 -- end,
346 362 }
347 363  
348   -function Activity:initActivity(actType, isCrossDay, notify)
  364 +function Activity:initActivity(actId, isCrossDay, notify)
  365 + local actData = csvdb["activity_ctrlCsv"][actId]
  366 + if not actData then return end
  367 + local actType = actData.showType
349 368 if activityFunc[actType] and activityFunc[actType]['close'] then
350 369 activityFunc[actType]["init"](self, actType, isCrossDay, notify)
351 370 end
352 371 end
353 372  
354   -function Activity:closeActivity(actType, notify, notUpdateAct)
  373 +function Activity:closeActivity(actId, notify, notUpdateAct)
  374 + local actData = csvdb["activity_ctrlCsv"][actId]
  375 + if not actData then return end
  376 + local actType = actData.showType
355 377 if activityFunc[actType] and activityFunc[actType]['close'] then
356 378 activityFunc[actType]["close"](self, actType, notify)
357 379 end
... ... @@ -361,8 +383,10 @@ function Activity:closeActivity(actType, notify, notUpdateAct)
361 383 end
362 384  
363 385 function Activity:refreshDailyData(notify)
364   - for actType, status in pairs(self._isOpen) do
365   - if status then
  386 + for actId, status in pairs(self._isOpen) do
  387 + local actData = csvdb["activity_ctrlCsv"][actId]
  388 + if status and actData then
  389 + local actType = actData.showType
366 390 if activityFunc[actType] and activityFunc[actType]['crossDay'] then
367 391 activityFunc[actType]["crossDay"](self, actType, notify)
368 392 end
... ... @@ -398,10 +422,12 @@ end
398 422  
399 423 -- 获取活动卡池id
400 424 function Activity:getActivityPool(mainType, subType)
401   - if not self:isOpen(Activity.ActivityType.SsrUpPoolChange) then
  425 + local open, actId = self:isOpen(Activity.ActivityType.SsrUpPoolChange)
  426 + if not open then
  427 + --if not self:isOpen(Activity.ActivityType.SsrUpPoolChange) then
402 428 return 0
403 429 end
404   - local actData = csvdb["activity_ctrlCsv"][Activity.ActivityType.SsrUpPoolChange]
  430 + local actData = csvdb["activity_ctrlCsv"][actId]
405 431 if not actData then return 0 end
406 432  
407 433 local poolMap = actData.condition2:toMap(true, "=")
... ...
src/models/Role.lua
... ... @@ -386,7 +386,8 @@ function Role:data()
386 386 chatline = self:getProperty("chatline"),
387 387  
388 388 downCvR = self:getProperty("downCvR"), -- 下载cv扩展包奖励
389   - feedback = self:getProperty("feedback")
  389 + feedback = self:getProperty("feedback"),
  390 + ctime = self:getProperty("ctime"),
390 391 }
391 392 end
392 393  
... ...
src/models/RolePlugin.lua
... ... @@ -51,6 +51,7 @@ function RolePlugin.bind(Role)
51 51 end
52 52  
53 53 local function _award(self, itemId, count, params)
  54 + local count = math.floor(count)
54 55 local pms = clone(params)
55 56 local itemData = csvdb["itemCsv"][itemId]
56 57 if not itemData then -- 加一层保护
... ... @@ -259,6 +260,7 @@ function RolePlugin.bind(Role)
259 260  
260 261 function Role:addItem(params)
261 262 params = params or {}
  263 + params.count = math.floor(params.count or 0)
262 264 if params.itemId == ItemId.Diamond then
263 265 self:gainDiamond(params)
264 266 return
... ... @@ -1536,7 +1538,7 @@ function RolePlugin.bind(Role)
1536 1538 item_number = 1, -- 购买的道具数量
1537 1539 item_level = 1, -- 购买的道具等级
1538 1540 order_cost = rechargeData.rmb * 100, -- 此次消费的现金金额(单位:分),如 51800即未518元,对应客户端SDK传入的'total_fee'
1539   - order_currency = "TWD", -- 货币类型,默认为"CNY"(人民币),遵循ISO 4217规范
  1541 + order_currency = "CNY", -- 货币类型,默认为"CNY"(人民币),遵循ISO 4217规范
1540 1542 order_type = order_type, -- 订单类型,首充记录为1,否则为0
1541 1543 order_id = params.transactionId, -- 本条记录的订单号,对应客户端SDK返回的'bs_trade_no'
1542 1544 })
... ...
src/models/RoleTask.lua
... ... @@ -12,6 +12,9 @@ local TaskType = {
12 12 WakeCG = 7, -- 觉醒到解锁CG - heroType
13 13 HeroTalent = 8, -- 天赋升级 - heroType alv
14 14 DrawSSR = 9, -- 抽到SSR - count
  15 + HeroLvlCollect = 10, -- 英雄等级收集进度
  16 + HeroQualityCollect = 11, -- 英雄品质收集进度
  17 + HeroStarCollect = 12, -- 英雄星级收集进度
15 18  
16 19 --装备相关
17 20 AddEquip = 101, -- 获得装备 - equipId rarity
... ... @@ -44,6 +47,7 @@ local TaskType = {
44 47 AdvStartSelf = 409, -- 手动冒险 - id
45 48 AdvScore = 410, -- 冒险分数 - score
46 49 AdvDraw = 411, -- 冒险资助 - count ptype
  50 + AdvHang = 412, -- 代理拾荒次数
47 51  
48 52 --爬塔相关
49 53 TowerPass = 501, -- 爬塔通关 - level
... ... @@ -60,6 +64,7 @@ local TaskType = {
60 64 DinerPopular = 608, -- 人气值 - count
61 65 DinerLevelUp = 609, -- 餐厅升级 - level type
62 66 DinerTalentUp = 610, -- 天赋升级 - type level
  67 + VillageApply = 611, -- 餐厅委托个数
63 68  
64 69 -- 车厢相关
65 70 PotionMake = 701, -- 营养剂制作 - id count
... ... @@ -78,6 +83,7 @@ local TaskType = {
78 83  
79 84 -- 角色相关
80 85 RoleLevelUp = 901, -- 角色升级 - curlevel
  86 + RuneQualityCollect = 902, -- 铭文品质收集进度
81 87  
82 88 --功能未实现 todo
83 89 AdvShop = 1002, -- 冒险商城
... ... @@ -230,6 +236,32 @@ local StoreListener = {
230 236 }
231 237 }
232 238  
  239 +local CalendaTaskListener = {
  240 + func = "checkCalendaTask",
  241 + listen = {
  242 + [TaskType.DrawHero] = {{1, 1, f("count")}},
  243 + [TaskType.BonusPass]= {{2, 1}},
  244 + [TaskType.AdvPass]= {{3, 1}},
  245 + [TaskType.DinerLevelUp]= {{4, 2, f("level")}},
  246 + [TaskType.HeroLvlCollect]= {{5, 3}}, -- x名y级英雄
  247 + [TaskType.AdvHang]= {{6, 1}}, ----
  248 + [TaskType.HeroQualityCollect]= {{7, 3}},
  249 + [TaskType.OverOderTask]= {{8, 1}},
  250 + [TaskType.VillageApply]= {{9, 1}},
  251 + [TaskType.PvpWin]= {{10, 2, f("score")}},
  252 + [TaskType.DinerPopular]= {{11, 2, f("count")}},
  253 + [TaskType.RoleLevelUp]= {{12, 2, f("level")}},
  254 + [TaskType.TowerPass]= {{13, 2, f("level")}},
  255 + [TaskType.HeroTalent]= {{14, 1}},
  256 + [TaskType.HangPass]= {{15, 2, f("id")}},
  257 + [TaskType.HeroStarCollect]= {{16, 3}},
  258 + [TaskType.FoodSell]= {{17, 1, f("count")}},
  259 + [TaskType.HangGet]= {{18, 3, f("reward")}},
  260 + [TaskType.RuneQualityCollect]= {{19, 3, f("id")}},
  261 + [TaskType.OpenBox]= {{20, 3, f("count"), f("quality")}},
  262 + }
  263 +}
  264 +
233 265  
234 266 local TaskListeners = {
235 267 StoryListener,
... ... @@ -552,6 +584,33 @@ function RoleTask.bind(Role)
552 584 self.storeData:OnTriggerLimitTimePack(triggerType, param)
553 585 end
554 586  
  587 + function Role:checkCalendaTask(notNotify, mainType, subType, param1, param2)
  588 + local open, actId = self.activity:isOpen("CalendaTask")
  589 + local actData = csvdb["activity_ctrlCsv"][actId]
  590 + if not actData then return end
  591 + if not open then return end
  592 +
  593 + local change = false
  594 + local calTask = self:getProperty("calTask") or {}
  595 + param1 = param1 or 1
  596 +
  597 + local cid = actData.condition
  598 + for k, taskList in pairs(csvdb["activity_taskCsv"]) do
  599 + if k == cid then
  600 + for id, cfg in pairs(taskList) do
  601 + if cfg.type == mainType then
  602 + if subType == 1 then -- 增加数值
  603 + calTask[id] = (calTask[id] or 0) + param1
  604 + elseif subType == 2 then -- 直接赋值
  605 + calTask[id] = param1
  606 + elseif subType == 3 then -- 自定义类型
  607 + end
  608 + end
  609 + end
  610 + end
  611 + end
  612 + end
  613 +
555 614 end
556 615  
557 616 return RoleTask
558 617 \ No newline at end of file
... ...
src/utils/CommonFunc.lua
... ... @@ -155,7 +155,7 @@ function diffFromOpen()
155 155 hour = RESET_TIME,
156 156 }
157 157 if now < openTime then
158   - return 0
  158 + return -1
159 159 end
160 160  
161 161 return math.floor((now - openTime) / DAY_SEC)
... ...