555f745e
zhangqijia
feat: 一番赏
|
1
2
3
4
5
|
require "ProtocolCode"
require "shared.init"
require "GlobalVar"
require "RedisKeys"
require "skynet.manager"
|
d10a9a36
zhangqijia
fix: 一番赏增加通知信息的数据...
|
6
|
skynet = require "skynet"
|
555f745e
zhangqijia
feat: 一番赏
|
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
csvdb = require "shared.csvdata"
redisproxy = require "shared.redisproxy"
datacenter = require "skynet.datacenter"
local capsules = {}
local CMD = {}
NotifyChangeType = {
JOIN = 1,
EXIT = 2,
DRAW = 3,
SPECIAL = 4,
INCENTIVE = 5,
}
function rpcRole(roleId, funcName, ...)
local fields = ...
local agent = datacenter.get("agent", roleId)
if agent and agent.serv then
if funcName == "getProperties" then
return true, skynet.call(agent.serv, "role", funcName, fields)
else
return true, skynet.call(agent.serv, "role", funcName, ...)
end
else
local roleCross = require("models.RoleCross")
if funcName == "getProperties" then
return false, roleCross.handle(funcName, roleId, fields)
else
return false, roleCross.handle(funcName, roleId, ...)
end
end
end
function broadCastCapsule(roleId, capsuleId, broadInfo)
local capsule = capsules[capsuleId] or {}
local register = capsule:getProperty("register") or {}
if next(capsule) then
for id, _ in pairs(register) do
if id ~= roleId then
rpcRole(id, "SendPacket", actionCodes.Capsule_notifyChange, MsgPack.pack(broadInfo)) -- 通知对方
end
end
end
end
local function getCapsuleId(id, room)
return string.format("%d%d", id, room)
end
local function add(roleId, capsuleId)
|
555f745e
zhangqijia
feat: 一番赏
|
59
60
61
62
|
local capsule = capsules[capsuleId] or {}
if next(capsule) then
capsule:join(roleId)
broadCastCapsule(roleId, capsuleId, {changeType = NotifyChangeType.JOIN, roleId = roleId})
|
f382b4f2
zhangqijia
fix: 一番赏的抽奖bug
|
63
|
return capsule:data(roleId)
|
555f745e
zhangqijia
feat: 一番赏
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
end
print("id 不存在: ".. capsuleId)
return nil
end
local function capsuleRefreshing()
for _, v in pairs(capsules) do
if v:refreshing() then
v:init()
v:create()
end
end
end
--扭蛋机刷新
local function check_capsules()
pcall(capsuleRefreshing)
skynet.timeout(60, check_capsules)
end
function CMD.start()
local now = skynet.timex()
local res = redisproxy:smembers(CAPSULE_INFO) or {}
for _, key in pairs(res) do
|
d10a9a36
zhangqijia
fix: 一番赏增加通知信息的数据...
|
88
|
local capsule = require("models.Capsule").new({ key = CAPSULE_PUBLIC:format(key)})
|
555f745e
zhangqijia
feat: 一番赏
|
89
90
91
92
93
94
95
96
|
capsule:load()
if capsule:isShow() then
if capsule:refreshing(now) then
capsule:init()
capsule:create()
end
capsules[key] = capsule
else
|
d10a9a36
zhangqijia
fix: 一番赏增加通知信息的数据...
|
97
|
redisproxy:del(CAPSULE_PUBLIC:format(key))
|
f382b4f2
zhangqijia
fix: 一番赏的抽奖bug
|
98
|
redisproxy:srem(CAPSULE_INFO, key)
|
555f745e
zhangqijia
feat: 一番赏
|
99
100
101
102
103
104
|
end
end
for _, data in pairs(csvdb["ichibankuji_mainCsv"]) do
for _, val in ipairs(data) do
if val.type == 1 then
|
d10a9a36
zhangqijia
fix: 一番赏增加通知信息的数据...
|
105
|
local key = val.id..val.room
|
555f745e
zhangqijia
feat: 一番赏
|
106
|
if not capsules[key] then
|
d10a9a36
zhangqijia
fix: 一番赏增加通知信息的数据...
|
107
|
local capsule = require("models.Capsule").new({ key = CAPSULE_PUBLIC:format(key), id= val.id, room = val.room, typ = 1, name=val.name})
|
555f745e
zhangqijia
feat: 一番赏
|
108
109
110
|
capsule:init()
capsule:create()
capsules[key] = capsule
|
f382b4f2
zhangqijia
fix: 一番赏的抽奖bug
|
111
|
redisproxy:sadd(CAPSULE_INFO, key)
|
555f745e
zhangqijia
feat: 一番赏
|
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
end
end
end
end
check_capsules()
end
function CMD.list(coin)
local tmpCapsules = {}
for k, v in pairs(capsules) do
if v:getProperty("coin") == coin then
local onlineCount= v:getOnlineCount()
tmpCapsules[k] = {id=v:getProperty("id"), room=v:getProperty("room"), typ=v:getProperty("typ"), people=onlineCount[2], coin= v:getProperty("coin")}
end
end
return tmpCapsules
end
function CMD.join(roleId, capsuleId)
if capsuleId then
return add(roleId, capsuleId)
end
return nil
end
function CMD.exit(roleId, capsuleId)
|
d10a9a36
zhangqijia
fix: 一番赏增加通知信息的数据...
|
140
141
142
143
144
145
146
147
148
149
150
151
152
|
if capsuleId then
local capsule = capsules[capsuleId] or {}
if next(capsule) then
capsule:exit(roleId)
broadCastCapsule(roleId, capsuleId, {changeType = NotifyChangeType.EXIT, roleId = roleId})
end
else
for _, capsule in pairs(capsules) do
if next(capsule) then
capsule:exit(roleId)
broadCastCapsule(roleId, capsuleId, {changeType = NotifyChangeType.EXIT, roleId = roleId})
end
end
|
555f745e
zhangqijia
feat: 一番赏
|
153
154
155
|
end
end
|
f382b4f2
zhangqijia
fix: 一番赏的抽奖bug
|
156
|
function CMD.draw_capsule(roleId, capsuleId, full, cares)
|
555f745e
zhangqijia
feat: 一番赏
|
157
158
|
local capsule = capsules[capsuleId] or {}
if next(capsule) then
|
f382b4f2
zhangqijia
fix: 一番赏的抽奖bug
|
159
|
local ret, reward, notify = capsule:draw(roleId, full, cares)
|
555f745e
zhangqijia
feat: 一番赏
|
160
161
162
|
--if ret > 4 then
-- broadCastCapsule(roleId, capsuleId, {changeType = NotifyChangeType.DRAW, roleId = roleId, notify = notify})
--end
|
d10a9a36
zhangqijia
fix: 一番赏增加通知信息的数据...
|
163
|
return ret, reward, capsule:data(roleId)
|
555f745e
zhangqijia
feat: 一番赏
|
164
165
166
167
|
end
return nil
end
|
f382b4f2
zhangqijia
fix: 一番赏的抽奖bug
|
168
169
170
171
172
173
174
175
|
function CMD.register(roleId, capsuleId)
local capsule = capsules[capsuleId] or {}
if next(capsule) then
return capsule:register(roleId)
end
return nil
end
|
555f745e
zhangqijia
feat: 一番赏
|
176
177
178
179
180
181
182
183
|
skynet.start(function()
skynet.dispatch("lua", function(session, address, cmd, ...)
local f = CMD[string.lower(cmd)]
skynet.ret(skynet.pack(f(...)))
end)
skynet.register("capsuled")
end)
|