Commit 2d9a616a3c3fff5a8c0cd66697e088c2ed045701
Merge branch 'develop' into qa
Showing
14 changed files
with
367 additions
and
48 deletions
Show diff stats
src/GlobalVar.lua
... | ... | @@ -76,7 +76,13 @@ FuncOpenType = { |
76 | 76 | AdvWS = 6, -- 工坊解锁 |
77 | 77 | AdvWheelSurf = 7, -- 抽奖解锁 |
78 | 78 | TimeBoxSlot = 8, -- 时钟箱槽 |
79 | + AdvCount = 9, -- 冒险 次数上限 | |
80 | + AdvCountEL = 10, -- 无尽冒险 次数上限 | |
79 | 81 | } |
82 | +TypeIsFunc = {} | |
83 | +for _, v in pairs(FuncOpenType) do | |
84 | + TypeIsFunc[v] = true | |
85 | +end | |
80 | 86 | |
81 | 87 | -- 关卡通关相关的 功能开放 对应 guide_unlock |
82 | 88 | FuncUnlock = { |
... | ... | @@ -90,10 +96,6 @@ FuncUnlock = { |
90 | 96 | Adv = 8, -- 冒险 |
91 | 97 | } |
92 | 98 | |
93 | -TypeIsFunc = {} | |
94 | -for _, v in pairs(FuncOpenType) do | |
95 | - TypeIsFunc[v] = true | |
96 | -end | |
97 | 99 | |
98 | 100 | -- 物品起始id |
99 | 101 | ItemStartId = { |
... | ... | @@ -252,3 +254,8 @@ SettingStatus = { |
252 | 254 | } |
253 | 255 | |
254 | 256 | EMAIL_LIMIT = 20 --邮件最大数量 |
257 | + | |
258 | +RedPointTags = { | |
259 | + PvpCR = 1, | |
260 | + PvpHR = 2, | |
261 | +} | ... | ... |
src/ProtocolCode.lua
... | ... | @@ -174,6 +174,12 @@ actionCodes = { |
174 | 174 | Store_rechargeRpc = 550, |
175 | 175 | Store_dailyBuyRpc = 551, |
176 | 176 | Store_dinerBuyRpc = 552, |
177 | + Store_googleRechargeRpc = 553, | |
178 | + Store_purchaseOrderResult = 554, | |
179 | + Store_ayncPurchaseRpc = 555, | |
180 | + Store_myCardRechargeRpc = 556, | |
181 | + Store_iosRechargeRpc = 557, | |
182 | + | |
177 | 183 | |
178 | 184 | Email_listRpc = 600, |
179 | 185 | Email_drawAllAttachRpc = 601, | ... | ... |
src/actions/GmAction.lua
src/actions/HangAction.lua
... | ... | @@ -474,7 +474,12 @@ function _M.endBonusBattleRpc(agent, data) |
474 | 474 | bonusC[bonusData.type]["c"] = bonusC[bonusData.type]["c"] + 1 |
475 | 475 | role.dailyData:updateProperty({field = "bonusC", value = bonusC}) |
476 | 476 | |
477 | - reward = role:award(bonusData.reward, {log = {desc = "bonusBattle", int1 = id}}) | |
477 | + reward = bonusData.reward:toNumMap() | |
478 | + local chance = bonusData.chance:randWeight(true) | |
479 | + if chance[1] ~= 0 then | |
480 | + reward[chance[1]] = (reward[chance[1]] or 0) + chance[2] | |
481 | + end | |
482 | + reward = role:award(reward, {log = {desc = "bonusBattle", int1 = id}}) | |
478 | 483 | role:checkTaskEnter("BonusPass", {id = id}) |
479 | 484 | end |
480 | 485 | ... | ... |
src/actions/HeroAction.lua
... | ... | @@ -762,7 +762,7 @@ function _M.drawHeroRpc(agent, data) |
762 | 762 | |
763 | 763 | -- 开始抽 |
764 | 764 | local resultPool = {} |
765 | - local function fillDrawPool(fixRare, fixCamp, ssrUp) | |
765 | + local function fillDrawPool(fixRare, fixCamp, ssrUp, floorBack) | |
766 | 766 | local condition = {"rare", "camp"} |
767 | 767 | local values = {fixRare, fixCamp} |
768 | 768 | |
... | ... | @@ -781,8 +781,16 @@ function _M.drawHeroRpc(agent, data) |
781 | 781 | for _, weight in pairs(lpool) do |
782 | 782 | all = all + weight[1] |
783 | 783 | end |
784 | - | |
785 | - lpool[4][1] = lpool[4][1] + (ssrUp or 0) * all | |
784 | + --[[ | |
785 | + SSR概率值:初始概率 + 步长概率 | |
786 | + SR概率值:初始概率 * [ (初始概率+R初始概率) - 步长概率 ] /(初始概率+R初始概率) | |
787 | + R概率值:初始概率 * [ (初始概率+SR初始概率) - 步长概率 ] /(初始概率+SR初始概率) | |
788 | + ]] | |
789 | + local ssrAdd = (ssrUp or 0) * all | |
790 | + local last = all - lpool[4][1] | |
791 | + lpool[4][1] = lpool[4][1] + ssrAdd | |
792 | + lpool[3][1] = lpool[3][1] * (last - ssrAdd) / last | |
793 | + lpool[2][1] = lpool[2][1] * (last - ssrAdd) / last | |
786 | 794 | end |
787 | 795 | |
788 | 796 | if next(lpool) then |
... | ... | @@ -791,7 +799,7 @@ function _M.drawHeroRpc(agent, data) |
791 | 799 | end |
792 | 800 | end |
793 | 801 | |
794 | - for itemId, oneData in pairs(csvdb["build_poolCsv"]) do | |
802 | + for itemId, oneData in pairs(floorBack and csvdb["build_floorCsv"] or csvdb["build_poolCsv"]) do | |
795 | 803 | if oneData["pool_" .. pool] and oneData["pool_" .. pool] ~= "" then |
796 | 804 | local itemData = csvdb["itemCsv"][itemId] |
797 | 805 | while itemData do |
... | ... | @@ -839,13 +847,15 @@ function _M.drawHeroRpc(agent, data) |
839 | 847 | |
840 | 848 | local ssrUp = 0 |
841 | 849 | if draw_ssr_up_count_rate then |
842 | - ssrUp = math.floor(ssrUpCount / draw_ssr_up_count_rate[1]) * draw_ssr_up_count_rate[2] / 100 | |
850 | + ssrUp = math.min(math.floor(ssrUpCount / draw_ssr_up_count_rate[1]) * draw_ssr_up_count_rate[2], draw_ssr_up_count_rate[3]) / 100 | |
843 | 851 | end |
844 | 852 | while not next(resultPool) do |
845 | 853 | if isNewerSSR then |
846 | 854 | fillDrawPool(4) -- 新手保底的 ssr |
847 | 855 | elseif isFloorBack then |
848 | - fillDrawPool(3) -- 保底 sr 【郑斌】明确 | |
856 | + -- 保底 sr 【郑斌】明确 | |
857 | + -- 保底 sr 改为 池子随机 sr 或者 ssr【郑斌】 | |
858 | + fillDrawPool(nil, nil, nil, true) | |
849 | 859 | else |
850 | 860 | fillDrawPool(nil, nil, ssrUp) |
851 | 861 | end |
... | ... | @@ -857,17 +867,17 @@ function _M.drawHeroRpc(agent, data) |
857 | 867 | if itemData.quality == 4 then |
858 | 868 | ssrCount = ssrCount + 1 |
859 | 869 | ssrUpCount = 0 |
860 | - | |
861 | 870 | if btype == 4 then |
862 | 871 | newerHadSSR = newerHadSSR + 1 |
863 | 872 | end |
864 | - elseif itemData.quality == 3 then | |
865 | - floorHeroCount = 0 | |
866 | - ssrUpCount = ssrUpCount + 1 | |
867 | 873 | else |
868 | 874 | ssrUpCount = ssrUpCount + 1 |
869 | 875 | end |
870 | 876 | |
877 | + if itemData.quality >= 3 then | |
878 | + floorHeroCount = 0 | |
879 | + end | |
880 | + | |
871 | 881 | if role:isHaveHero(itemData.id - ItemStartId.Hero) then |
872 | 882 | local fragId = itemData.id - ItemStartId.Hero |
873 | 883 | local heroData = csvdb["unitCsv"][fragId] | ... | ... |
src/actions/PvpAction.lua
... | ... | @@ -381,6 +381,8 @@ function _M.endBattleRpc(agent, data) |
381 | 381 | sdelta = matchScore - oldMatchScore, |
382 | 382 | })) |
383 | 383 | red:ltrim(dbKey, 0, 9) |
384 | + | |
385 | + rpcRole(match.id, "redPTag", RedPointTags.PvpCR, now) | |
384 | 386 | end |
385 | 387 | end) |
386 | 388 | |
... | ... | @@ -670,6 +672,7 @@ function _M.endBattleHRpc(agent, data) |
670 | 672 | record = recordBattle, |
671 | 673 | })) |
672 | 674 | red:ltrim(dbKey, 0, 9) |
675 | + rpcRole(match.id, "redPTag", RedPointTags.PvpHR, now) | |
673 | 676 | end |
674 | 677 | end) |
675 | 678 | |
... | ... | @@ -786,7 +789,7 @@ function _M.recordListRpc(agent, data) |
786 | 789 | info.video = temp.video |
787 | 790 | info.sdelta = temp.sdelta |
788 | 791 | end |
789 | - | |
792 | + role:clearRedPTag(RedPointTags.PvpCR) | |
790 | 793 | elseif ptype == 2 then -- 高级pvp |
791 | 794 | local rlist = redisproxy:lrange(string.format(RECORD_PVP_HIGH, roleId), 0 , 9) |
792 | 795 | local tempList = {} |
... | ... | @@ -806,6 +809,8 @@ function _M.recordListRpc(agent, data) |
806 | 809 | info.sdelta = temp.sdelta |
807 | 810 | info.record = temp.record |
808 | 811 | end |
812 | + role:clearRedPTag(RedPointTags.PvpHR) | |
813 | + | |
809 | 814 | else |
810 | 815 | return |
811 | 816 | end | ... | ... |
src/actions/StoreAction.lua
1 | 1 | local _M = {} |
2 | 2 | |
3 | +local serverId = tonumber(skynet.getenv("servId")) | |
4 | +local md5 = require "md5" | |
5 | + | |
6 | +local function makeOrder(roleId, rechargeId) | |
7 | + local orderId = redisproxy:hincrby("autoincrement_set", "order", 1) | |
8 | + local partnerOrderId = string.format("%d_%d_%d", serverId, roleId, orderId) | |
9 | + local orderKey = string.format("order:%d:%d", roleId, orderId) | |
10 | + redisproxy:del(orderKey) | |
11 | + local order = require("models.Order").new({ | |
12 | + key = orderKey, | |
13 | + order = partnerOrderId, | |
14 | + rechargeId = rechargeId, | |
15 | + }) | |
16 | + order:create() | |
17 | + redisproxy:sadd(string.format("role:%d:orders", roleId), partnerOrderId) | |
18 | + return partnerOrderId | |
19 | +end | |
20 | + | |
21 | +-- 入口在正式服关闭 -- mock 充值 | |
3 | 22 | function _M.rechargeRpc(agent , data) |
4 | 23 | local role = agent.role |
5 | 24 | local msg = MsgPack.unpack(data) |
6 | 25 | local id = msg.id |
7 | 26 | local dataSet = csvdb["shop_rechargeCsv"][id] |
8 | 27 | if not dataSet then return end |
9 | - local diamondCount | |
10 | - if dataSet.type == 0 then -- 钻石 | |
11 | - local rechargeF = role:getProperty("rechargeF") | |
12 | - diamondCount = dataSet.diamond + dataSet.diamondExtra | |
13 | - if not rechargeF[id] then | |
14 | - diamondCount = diamondCount + dataSet.diamondFirst | |
15 | - rechargeF[id] = 1 | |
16 | - role:updateProperty({field = "rechargeF", value = rechargeF}) | |
17 | - end | |
18 | - role:gainDiamond({count = diamondCount, isRecharge = true, log = {desc = "recharge", int1 = id}}) | |
19 | - elseif dataSet.type == 1 then --月卡 | |
20 | - return | |
21 | - elseif dataSet.type == 2 then -- 赛季通行证 | |
22 | - return | |
23 | - else | |
24 | - return | |
28 | + local roleId = role:getProperty("id") | |
29 | + | |
30 | + --创建订单号 | |
31 | + local partnerOrderId = makeOrder(roleId, id) | |
32 | + SendPacket(actionCodes.Store_rechargeRpc, MsgPack.pack({ order = partnerOrderId })) | |
33 | + | |
34 | + -- 测试的 直接发奖励了 | |
35 | + skynet.timeout(10, function () | |
36 | + role:handlePurchase({ | |
37 | + order = partnerOrderId, | |
38 | + amount = dataSet.rmb, | |
39 | + game_money = dataSet.diamond, | |
40 | + product_id = dataSet.productId, | |
41 | + pay_time = skynet.timex(), | |
42 | + transactionId = "onlyTest", | |
43 | + }) | |
44 | + end) | |
45 | + | |
46 | + return true | |
47 | +end | |
48 | + | |
49 | +local function table_keys( t ) | |
50 | + local keys = {} | |
51 | + for k, _ in pairs( t ) do | |
52 | + keys[#keys + 1] = k | |
53 | + end | |
54 | + return keys | |
55 | +end | |
56 | + | |
57 | +local function signPms(params, secret_key) | |
58 | + local keys = table_keys(params) | |
59 | + table.sort(keys) | |
60 | + local urlCode = "" | |
61 | + for index, key in ipairs(keys) do | |
62 | + urlCode = urlCode .. params[key] | |
25 | 63 | end |
64 | + return md5.sumhexa(urlCode .. secret_key):lower() | |
65 | +end | |
26 | 66 | |
27 | - -- 累充 | |
28 | - local rmb = dataSet.rmb | |
29 | - role:updateProperty({field = "rmbC", delta = rmb}) | |
30 | - | |
31 | - role:log("role_action", {desc = "recharge", int1 = id, int2 = rmb}) | |
32 | 67 | |
33 | - SendPacket(actionCodes.Store_rechargeRpc, MsgPack.pack({diamond = diamondCount})) | |
68 | +-- google 充值 入口 | |
69 | +function _M.googleRechargeRpc(agent, data) | |
70 | + local role = agent.role | |
71 | + local msg = MsgPack.unpack(data) | |
72 | + local id = msg.id | |
73 | + local dataSet = csvdb["shop_rechargeCsv"][id] | |
74 | + if not dataSet then return end | |
75 | + local roleId = role:getProperty("id") | |
76 | + | |
77 | + role.ignoreHeartbeat = true | |
78 | + --创建订单号 | |
79 | + local partnerOrderId = makeOrder(roleId, id) | |
80 | + -- 签名 | |
81 | + local secret_key = "b7657fa7ccd44c16a35e3f454ac7a075" | |
82 | + local need = { | |
83 | + out_trade_no = partnerOrderId, | |
84 | + money = dataSet.rmb, | |
85 | + game_money = dataSet.diamond, | |
86 | + product_id = dataSet.productId, | |
87 | + } | |
88 | + local sign = signPms(need, secret_key) | |
89 | + | |
90 | + SendPacket(actionCodes.Store_googleRechargeRpc, MsgPack.pack({ order = partnerOrderId, sign = sign})) | |
91 | + return true | |
92 | +end | |
93 | + | |
94 | +-- mycard 充值 入口 | |
95 | +function _M.myCardRechargeRpc(agent, data) | |
96 | + local role = agent.role | |
97 | + local msg = MsgPack.unpack(data) | |
98 | + local id = msg.id | |
99 | + local dataSet = csvdb["shop_rechargeCsv"][id] | |
100 | + if not dataSet then return end | |
101 | + local roleId = role:getProperty("id") | |
102 | + | |
103 | + role.ignoreHeartbeat = true | |
104 | + --创建订单号 | |
105 | + local partnerOrderId = makeOrder(roleId, id) | |
106 | + -- 签名 | |
107 | + local secret_key = "48759e07540f46d9af17ec82669b4272" | |
108 | + local need = { | |
109 | + out_trade_no = partnerOrderId, | |
110 | + money = dataSet.rmb, | |
111 | + game_money = dataSet.diamond, | |
112 | + } | |
113 | + local sign = signPms(need, secret_key) | |
114 | + | |
115 | + SendPacket(actionCodes.Store_myCardRechargeRpc, MsgPack.pack({ order = partnerOrderId, sign = sign})) | |
116 | + return true | |
117 | +end | |
118 | + | |
119 | +-- mycard 充值 入口 | |
120 | +function _M.iosRechargeRpc(agent, data) | |
121 | + local role = agent.role | |
122 | + local msg = MsgPack.unpack(data) | |
123 | + local id = msg.id | |
124 | + local dataSet = csvdb["shop_rechargeCsv"][id] | |
125 | + if not dataSet then return end | |
126 | + local roleId = role:getProperty("id") | |
127 | + | |
128 | + role.ignoreHeartbeat = true | |
129 | + --创建订单号 | |
130 | + local partnerOrderId = makeOrder(roleId, id) | |
131 | + -- 签名 | |
132 | + local secret_key = "9647d2efe1074c73b9ac19af4337a70e" | |
133 | + local need = { | |
134 | + out_trade_no = partnerOrderId, | |
135 | + money = dataSet.rmb, | |
136 | + game_money = dataSet.diamond, | |
137 | + product_id = dataSet.productId, | |
138 | + } | |
139 | + local sign = signPms(need, secret_key) | |
140 | + | |
141 | + SendPacket(actionCodes.Store_iosRechargeRpc, MsgPack.pack({ order = partnerOrderId, sign = sign})) | |
142 | + return true | |
143 | +end | |
144 | + | |
145 | +function _M.purchaseOrderResult(agent, data) | |
146 | + local role = agent.role | |
147 | + | |
148 | + local roleId = role:getProperty("id") | |
149 | + local msg = MsgPack.unpack(data) | |
150 | + | |
151 | + role.ignoreHeartbeat = false | |
152 | + | |
153 | + local partnerOrderStr = msg.order | |
154 | + local _, _, orderId = string.match(partnerOrderStr, "(.+)_(.+)_(.+)") | |
155 | + local orderObject = require("models.Order").new({ key = string.format("order:%d:%d", roleId, orderId) }) | |
156 | + if not orderObject:load() then | |
157 | + -- 订单不存在 | |
158 | + skynet.error("cancelPurchaseRpc", string.format("order %s not exist", partnerOrderStr)) | |
159 | + return true | |
160 | + end | |
161 | + | |
162 | + if msg.status == "success" then | |
163 | + orderObject:setProperty("transactionId", msg.platformOrder or "") | |
164 | + return true | |
165 | + end | |
166 | + | |
167 | + if orderObject:getProperty("finishTime") > 0 then | |
168 | + return true | |
169 | + end | |
170 | + | |
171 | + orderObject:setProperty("status", msg.status) | |
172 | + | |
173 | + redisproxy:srem(string.format("role:%d:orders", roleId), partnerOrderStr) | |
34 | 174 | return true |
35 | 175 | end |
36 | 176 | ... | ... |
src/models/Diner.lua
... | ... | @@ -73,11 +73,11 @@ function Diner:refreshDailyData(notify) |
73 | 73 | local guide = self.owner:getProperty("newerGuide") |
74 | 74 | local master, slave = string.match(guide,"(%d+)=(%d+)") |
75 | 75 | if tonumber(master) <= 26 then |
76 | - entrust[1] = 1031 | |
77 | - entrust[2] = 3 | |
76 | + entrust[1] = 1001 | |
77 | + entrust[2] = 1 | |
78 | 78 | elseif tonumber(master) <= 29 then |
79 | 79 | local temp = entrust[1] |
80 | - entrust[1] = 3 | |
80 | + entrust[1] = 1 | |
81 | 81 | entrust[2] = temp |
82 | 82 | end |
83 | 83 | ... | ... |
src/models/HeroPlugin.lua
... | ... | @@ -208,10 +208,10 @@ function HeroPlugin.bind(Hero) |
208 | 208 | end |
209 | 209 | |
210 | 210 | |
211 | - -- 战斗力(当前属性)= POWER[(生命 + 防御 * 23 + 闪避 * 4)*(攻击*14 + 命中 * 2)*(1 + 暴击几率/100 * 暴击伤害/100)* 攻击速度 / 60000 ,0.8 ] | |
211 | + -- 战斗力(当前属性)= POWER[(生命 + 防御 * 7 + 闪避 * 4)*(攻击*4 + 命中 * 2)*(1 + 暴击几率/100 * 暴击伤害/100)* 攻击速度 / 60000 ,0.8 ] | |
212 | 212 | function Hero:getBattleValue(activeRelation) -- isReal包括队伍加成 |
213 | 213 | local attrs = self:getTotalAttrs({activeRelation = activeRelation}) |
214 | - local battleValue = ((attrs["hp"] + attrs["def"] * 23 + attrs["miss"] * 4) * (attrs["atk"] * 14 + attrs["hit"] * 2) * (1 + attrs["crit"]/100 * attrs["critHurt"]/100) * attrs["atkSpeed"] / 600000) ^ 0.8 | |
214 | + local battleValue = ((attrs["hp"] + attrs["def"] * 7 + attrs["miss"] * 4) * (attrs["atk"] * 4 + attrs["hit"] * 2) * (1 + attrs["crit"]/100 * attrs["critHurt"]/100) * attrs["atkSpeed"] / 600000) ^ 0.8 | |
215 | 215 | return math.floor(battleValue) |
216 | 216 | end |
217 | 217 | ... | ... |
... | ... | @@ -0,0 +1,26 @@ |
1 | +local Order = class("Order", require("shared.ModelBase")) | |
2 | + | |
3 | +function Order:ctor(properties) | |
4 | + Order.super.ctor(self, properties) | |
5 | +end | |
6 | + | |
7 | +Order.schema = { | |
8 | + key = {"string"}, -- redis key | |
9 | + order = {"string"}, -- 自己订单号 | |
10 | + rechargeId = {"number", 0}, | |
11 | + transactionId = {"string", ""}, | |
12 | + createTime = {"number", skynet.timex()}, -- 订单创建时间 | |
13 | + finishTime = {"number", 0}, -- 服务端验证完成时间 | |
14 | + status = {"string", "create"}, | |
15 | +} | |
16 | + | |
17 | +Order.fields = { | |
18 | + order = true, | |
19 | + rechargeId = true, | |
20 | + transactionId = true, | |
21 | + createTime = true, | |
22 | + finishTime = true, | |
23 | + status = true, | |
24 | +} | |
25 | + | |
26 | +return Order | |
0 | 27 | \ No newline at end of file | ... | ... |
src/models/Role.lua
... | ... | @@ -150,6 +150,8 @@ Role.schema = { |
150 | 150 | |
151 | 151 | sudoku = {"table", {}}, -- 九宫格 {[-1] = 1, task = {[1] = {}, [2] = {}}}} -- [-1] 阶段 如果为 -1 关闭(都做完了), task 当前阶段任务进度, reward 连串奖励领取情况 |
152 | 152 | sign = {"table", {}}, -- 签到记录 {[1] = 20181029} |
153 | + | |
154 | + redp = {"table", {}}, -- 待消除红点 -- 通常打开对应界面就消除的红点 红点消除的方法 在对应的协议中使用 {tag = pms } | |
153 | 155 | } |
154 | 156 | |
155 | 157 | |
... | ... | @@ -359,6 +361,8 @@ function Role:data() |
359 | 361 | |
360 | 362 | sudoku = self:getProperty("sudoku"), |
361 | 363 | sign = self:getProperty("sign"), |
364 | + | |
365 | + redp = self:getProperty("redp"), | |
362 | 366 | } |
363 | 367 | end |
364 | 368 | ... | ... |
src/models/RoleCross.lua
... | ... | @@ -67,6 +67,15 @@ RoleCross.bind = function (Role) |
67 | 67 | return info |
68 | 68 | end |
69 | 69 | |
70 | + function Role:redPTag(tag, pms) | |
71 | + pms = pms or 1 | |
72 | + local redp = self:getProperty("redp") | |
73 | + if not redp[tag] or redp[tag] ~= pms then | |
74 | + redp[tag] = pms | |
75 | + self:updateProperty({field = "redp", value = redp}) | |
76 | + end | |
77 | + end | |
78 | + | |
70 | 79 | function Role:accountInit(initData) |
71 | 80 | -- 道具 |
72 | 81 | local reward = {} |
... | ... | @@ -318,6 +327,16 @@ function CMD.pvpHRankInfo(roleId) |
318 | 327 | return info |
319 | 328 | end |
320 | 329 | |
330 | +-- 记录红点 | |
331 | +function CMD.redPTag(roleId, tag, pms) | |
332 | + pms = pms or 1 | |
333 | + local redp = CMD.getProperty(roleId, "redp") | |
334 | + if not redp[tag] or redp[tag] ~= pms then | |
335 | + redp[tag] = pms | |
336 | + CMD.setProperty(roleId, "redp", redp) | |
337 | + end | |
338 | +end | |
339 | + | |
321 | 340 | RoleCross.handle = function(cmd, roleId, ...) |
322 | 341 | SRole = SRole or require("models.Role") |
323 | 342 | if CMD[cmd] then | ... | ... |
src/models/RolePlugin.lua
... | ... | @@ -830,13 +830,11 @@ function RolePlugin.bind(Role) |
830 | 830 | end |
831 | 831 | |
832 | 832 | function Role:getAdvHangLimit() |
833 | - -- todo | |
834 | - return globalCsv.adv_daily_cross_count | |
833 | + return globalCsv.adv_daily_cross_count + self:getFuncLv(FuncOpenType.AdvCount) | |
835 | 834 | end |
836 | 835 | |
837 | 836 | function Role:getAdvElLimit() |
838 | - -- todo | |
839 | - return globalCsv.adv_endless_daily_cross_count | |
837 | + return globalCsv.adv_endless_daily_cross_count + self:getFuncLv(FuncOpenType.AdvCountEL) | |
840 | 838 | end |
841 | 839 | |
842 | 840 | -- 走 guide_unlock 表的 被动解锁 |
... | ... | @@ -1392,6 +1390,101 @@ function RolePlugin.bind(Role) |
1392 | 1390 | return false |
1393 | 1391 | end |
1394 | 1392 | |
1393 | + -- 消除指定tag 红点 | |
1394 | + function Role:clearRedPTag(tag) | |
1395 | + local redp = self:getProperty("redp") | |
1396 | + redp[tag] = nil | |
1397 | + self:updateProperty({field = "redp", value = redp}) | |
1398 | + end | |
1399 | + | |
1400 | + | |
1401 | + -- 充值 -- | |
1402 | + --[[ | |
1403 | + request.order = data.out_trade_no | |
1404 | + request.amount = data.money / 100 | |
1405 | + request.game_money = data.game_money | |
1406 | + request.product_id = data.product_id | |
1407 | + request.pay_time = data.pay_time | |
1408 | + request.transactionId = data.order_no | |
1409 | + ]] | |
1410 | + function Role:handlePurchase(params) | |
1411 | + local roleId = self:getProperty("id") | |
1412 | + local partnerOrderStr = params.order | |
1413 | + | |
1414 | + local _, _, orderId = string.match(partnerOrderStr, "(.+)_(.+)_(.+)") | |
1415 | + local orderObject = require("models.Order").new({ key = string.format("order:%d:%d", roleId, orderId) }) | |
1416 | + if not orderObject:load() then | |
1417 | + -- 订单不存在 | |
1418 | + skynet.error("ayncPurchaseRpc", string.format("order %s not exist", partnerOrderStr)) | |
1419 | + return | |
1420 | + end | |
1421 | + | |
1422 | + if orderObject:getProperty("finishTime") > 0 then | |
1423 | + -- 订单已经处理 | |
1424 | + SendPacket(actionCodes.Store_ayncPurchaseRpc, MsgPack.pack({ result = "handled" })) | |
1425 | + return | |
1426 | + end | |
1427 | + | |
1428 | + local rechargeData = csvdb["shop_rechargeCsv"][orderObject:getProperty("rechargeId")] | |
1429 | + if rechargeData.rmb ~= tonumber(params.amount) then | |
1430 | + skynet.error(string.format("fake order: %s, roleId: %d, order: %s", | |
1431 | + params.transactionId, roleId, partnerOrderStr | |
1432 | + )) | |
1433 | + return | |
1434 | + end | |
1435 | + | |
1436 | + local diamond = self:recharge({ | |
1437 | + id = orderObject:getProperty("rechargeId"), | |
1438 | + transactionId = params.transactionId, | |
1439 | + pay_time = params.pay_time, | |
1440 | + order = partnerOrderStr | |
1441 | + }) | |
1442 | + orderObject:setProperty("finishTime", skynet.time()) | |
1443 | + orderObject:setProperty("status", "finish") | |
1444 | + | |
1445 | + redisproxy:srem(string.format("role:%d:orders", roleId), partnerOrderStr) | |
1446 | + SendPacket(actionCodes.Store_ayncPurchaseRpc, MsgPack.pack({ order = partnerOrderStr, | |
1447 | + result = "success", diamond = diamond})) | |
1448 | + | |
1449 | + return orderObject:getProperty("rechargeId") | |
1450 | + end | |
1451 | + | |
1452 | + | |
1453 | + function Role:recharge(params) | |
1454 | + local id = tonumber(params.id) | |
1455 | + local rechargeData = csvdb["shop_rechargeCsv"][id] | |
1456 | + if not rechargeData then | |
1457 | + skynet.error("recharge id not exist", id) | |
1458 | + return | |
1459 | + end | |
1460 | + | |
1461 | + local diamondCount = 0 | |
1462 | + if rechargeData.type == 0 then -- 钻石 | |
1463 | + local rechargeF = self:getProperty("rechargeF") | |
1464 | + diamondCount = rechargeData.diamond + rechargeData.diamondExtra | |
1465 | + if not rechargeF[id] then | |
1466 | + diamondCount = diamondCount + rechargeData.diamondFirst | |
1467 | + rechargeF[id] = 1 | |
1468 | + self:updateProperty({field = "rechargeF", value = rechargeF}) | |
1469 | + end | |
1470 | + self:gainDiamond({count = diamondCount, isRecharge = true, log = {desc = "recharge", int1 = id}}) | |
1471 | + elseif rechargeData.type == 1 then --月卡 | |
1472 | + return | |
1473 | + elseif rechargeData.type == 2 then -- 赛季通行证 | |
1474 | + return | |
1475 | + else | |
1476 | + return | |
1477 | + end | |
1478 | + | |
1479 | + -- 累充 | |
1480 | + local rmb = rechargeData.rmb | |
1481 | + self:updateProperty({field = "rmbC", delta = rmb}) | |
1482 | + | |
1483 | + self:log("role_action", {desc = "recharge", int1 = id, int2 = rmb, key1 = params.transactionId, key2 = params.order, long1 = params.pay_time}) | |
1484 | + | |
1485 | + return diamondCount | |
1486 | + end | |
1487 | + | |
1395 | 1488 | end |
1396 | 1489 | |
1397 | 1490 | return RolePlugin |
1398 | 1491 | \ No newline at end of file | ... | ... |
src/models/RolePvp.lua
... | ... | @@ -140,7 +140,7 @@ function Role:changePvpScoreHigh(matchId, isWin) |
140 | 140 | break |
141 | 141 | end |
142 | 142 | end |
143 | - if newDivision ~= oldMyDivision then | |
143 | + if newDivision ~= oldMyDivision or self:getProperty("pvpHGTime") == 0 then | |
144 | 144 | --刷新段位奖励 |
145 | 145 | local newTime, newReward = self:calculatePvpHGift(oldMyDivision) |
146 | 146 | self:updateProperties({ | ... | ... |