Compare commits
945 Commits
Author | SHA1 | Date |
---|---|---|
|
9abe717833 | |
|
2743f6cfb0 | |
|
81b529d13b | |
|
62981de6cf | |
|
0ff33ee6a4 | |
|
d9d78d2f13 | |
|
ff7452d335 | |
|
4d30e087c6 | |
|
24dd497af4 | |
|
f2497b77d3 | |
|
8e156dba18 | |
|
7d7f5804f1 | |
|
9cc5d30032 | |
|
be57df77a1 | |
|
02dded9b9a | |
|
3c51f2794d | |
|
fafc946f75 | |
|
d82822c990 | |
|
d3642c93e4 | |
|
7e8ceebbf7 | |
|
5c4e4d0f4a | |
|
2925465b41 | |
|
999eea0766 | |
|
7dd1a191ea | |
|
2206eba159 | |
|
e479b2e6fd | |
|
692cf306f5 | |
|
70d051d938 | |
|
e36c6608c3 | |
|
03e0cdb6d7 | |
|
aa92a9630c | |
|
02365888a1 | |
|
a98d7ac0b4 | |
|
1b2a9c30e7 | |
|
e0d414e6af | |
|
d2a64cb8ae | |
|
97a6d363e7 | |
|
df5de58f46 | |
|
60ce6ed085 | |
|
9aeb5c3d15 | |
|
6240e08abe | |
|
e6105b40b0 | |
|
a647da01aa | |
|
f83b22688c | |
|
7668ddcd93 | |
|
72edbbdd4b | |
|
a314c42d6c | |
|
c0941e43e7 | |
|
f8a55ec7ba | |
|
e7e08755a4 | |
|
a9de61a96a | |
|
1b3b98e359 | |
|
f1eccf335f | |
|
cfa2c003c2 | |
|
31db186564 | |
|
3c3fcbb920 | |
|
58d15e767d | |
|
d365e9be6a | |
|
3492ba1631 | |
|
09202f60d3 | |
|
6eedc84050 | |
|
ef15347caf | |
|
0df3e0938c | |
|
4bf11eb1d1 | |
|
fa1d1648ac | |
|
d74c868947 | |
|
1063cc8fba | |
|
b53c78cfb3 | |
|
0855fc58f4 | |
|
3811215f80 | |
|
cc882657a4 | |
|
a5265e5410 | |
|
9d584a8647 | |
|
be703582f6 | |
|
07bea1ac2f | |
|
8dac055bd6 | |
|
791d82c8aa | |
|
afab279f3c | |
|
8d63969701 | |
|
9012b2a4db | |
|
288624a55b | |
|
b57c5b2e41 | |
|
418b16d2e9 | |
|
76ba1ff7b7 | |
|
3b18460edb | |
|
70673450df | |
|
3a7d3b9f2e | |
|
1961caad12 | |
|
96268bf86f | |
|
4cfd64dbed | |
|
18fe6403b7 | |
|
6c65a442db | |
|
d27a04020e | |
|
eb791c364e | |
|
ea6ef0be41 | |
|
18f67b7d22 | |
|
1a14a35da9 | |
|
07b985693e | |
|
13042959c9 | |
|
7991a8044d | |
|
b46db9b36b | |
|
e690d8da76 | |
|
152c60e35f | |
|
4eee248f20 | |
|
d61a153948 | |
|
f26cb4d2ff | |
|
7099975e9e | |
|
0b91f46fd8 | |
|
1d98a31bf4 | |
|
d769605d09 | |
|
8174e6c406 | |
|
83d5ec05fb | |
|
de339225d2 | |
|
d34473c688 | |
|
59eb4ecc22 | |
|
053db5b83a | |
|
1b67a44d63 | |
|
759c989719 | |
|
9b5dff5f96 | |
|
cb4b51b4aa | |
|
1cc5d4f226 | |
|
ad3e8d4b9f | |
|
4da55c9588 | |
|
f467753242 | |
|
8c8ee30ef8 | |
|
7889c982ea | |
|
895c673e65 | |
|
892a61aa47 | |
|
67a85f6535 | |
|
5bdf3d78df | |
|
b4bab0de1e | |
|
2f74e5bfab | |
|
c20f0fa69c | |
|
770b9b084a | |
|
8a19cd642f | |
|
83f643a789 | |
|
98a834b357 | |
|
09dc4f4588 | |
|
9a34e32841 | |
|
4bd2cee327 | |
|
63387ba9b4 | |
|
4b7c552524 | |
|
fc2db94c86 | |
|
19dde360d6 | |
|
3ac3f2dea1 | |
|
0fc4b33aa4 | |
|
82486dd427 | |
|
3cd2dd06e1 | |
|
82aee49eda | |
|
32e8b2f22e | |
|
979645567e | |
|
b74f284654 | |
|
40966b52cb | |
|
9963ef130a | |
|
8f59f4d03a | |
|
fccb385f79 | |
|
c4bea18f9f | |
|
33380d1bf8 | |
|
58fe35c90f | |
|
3b15a84df3 | |
|
2869fb7e3f | |
|
a126fb81ae | |
|
e1e805f9d8 | |
|
e33fe64bca | |
|
bcac7f06d3 | |
|
1948560a03 | |
|
f056014c50 | |
|
68a8e010cf | |
|
88bbca47f1 | |
|
4a32df4ecf | |
|
54a13fe8ae | |
|
9c1fed84e9 | |
|
ac86a5e294 | |
|
fb8bfbde87 | |
|
f4143ad6d3 | |
|
12623d7b94 | |
|
5b6a5ad5d3 | |
|
4ab95e058e | |
|
8514f22fc6 | |
|
d8f01f39ea | |
|
9cdc0f24c7 | |
|
27eb944329 | |
|
c4a0a31df8 | |
|
e23f33c569 | |
|
7c00ec5067 | |
|
92bf5fe16e | |
|
c4d58262de | |
|
c226024401 | |
|
d16c1a1887 | |
|
85a115809c | |
|
6c4e49ef44 | |
|
89aefd480a | |
|
c3f0f0d9fe | |
|
36edf8ba7b | |
|
fe375fb15f | |
|
9ef1f9d896 | |
|
429c5e0a31 | |
|
df04ede671 | |
|
da83b674d2 | |
|
59535c2015 | |
|
981c3860d1 | |
|
e7a6049341 | |
|
ddcaa62f13 | |
|
034abb64e2 | |
|
5c6dce2f4d | |
|
d292cbc118 | |
|
05a54af2db | |
|
d2c5c4f159 | |
|
151a739dab | |
|
6a9c6a988b | |
|
00dcc3199f | |
|
26db8f4b21 | |
|
04a0772415 | |
|
9f490a7aca | |
|
03cd5dda2b | |
|
1d9bfd5802 | |
|
77748f066f | |
|
b7d4efb7a6 | |
|
fe26aa3d37 | |
|
89bdfac420 | |
|
0ba53df8ec | |
|
74efab000e | |
|
9ab3da69a4 | |
|
ece16ac947 | |
|
18a884da43 | |
|
3a6e420e98 | |
|
fa57f5e8e6 | |
|
958a3b1ba4 | |
|
a77cfa41dd | |
|
33eab3f5bc | |
|
94ca1562e5 | |
|
3bff2c17f3 | |
|
ccc0e97635 | |
|
6bd95be413 | |
|
94d7e4f45f | |
|
46c68b9785 | |
|
49c2d8baac | |
|
9ea57766a4 | |
|
ebe7b1c4c8 | |
|
bfdf500eec | |
|
94a4737609 | |
|
cae5536ed3 | |
|
17c0817dab | |
|
14b78495f6 | |
|
0792e35863 | |
|
cbd00bf0f8 | |
|
1db69f8df3 | |
|
f782b799ab | |
|
613ed6da76 | |
|
466eafe1bc | |
|
904982158a | |
|
dcc68130d2 | |
|
377482ce6d | |
|
4e6b92cd33 | |
|
7222426469 | |
|
1db62f9d90 | |
|
f4434bd945 | |
|
ba9dde2005 | |
|
4580f69514 | |
|
a040d30354 | |
|
aed283b37e | |
|
87486f1a48 | |
|
c6ee48573b | |
|
4c0c6f7c2b | |
|
b98b2246eb | |
|
a13ed034d7 | |
|
825f22a3bf | |
|
3f95d10437 | |
|
ab974063e8 | |
|
85ba5689b1 | |
|
8736f54fe1 | |
|
88db5712d8 | |
|
919129d70f | |
|
7ebe12c3de | |
|
18e3e5cd7d | |
|
71655d8126 | |
|
00b0e01000 | |
|
cd321a3f55 | |
|
8df3978077 | |
|
6153903f31 | |
|
15d0d2be78 | |
|
fc29fcddd8 | |
|
fe8ccec885 | |
|
96bbac8533 | |
|
0f7da88dab | |
|
07150c660d | |
|
b5e23404c0 | |
|
33e82b0095 | |
|
159e69094f | |
|
e5b80fda16 | |
|
3b2c207627 | |
|
eba92ed00b | |
|
7a2c11d92e | |
|
37f6b4163e | |
|
821f3d7274 | |
|
b1c936fae8 | |
|
e93616dcc9 | |
|
6b8e24cba3 | |
|
514d6fdf37 | |
|
28921649c5 | |
|
5e60434b60 | |
|
afe8d3f0b1 | |
|
154a037e08 | |
|
f23cfda629 | |
|
4dc78ff468 | |
|
a4b4a0b2a0 | |
|
8ff978db72 | |
|
ae4ab17075 | |
|
2c8ce6a467 | |
|
db82eabb7c | |
|
4a86c552f5 | |
|
ac608b4a44 | |
|
1fff8b2ebb | |
|
b9191e0538 | |
|
d2a8b0e618 | |
|
6ea5fb3943 | |
|
775280e03f | |
|
cb907ae642 | |
|
da90adb309 | |
|
42099b3d59 | |
|
49b0c6cc00 | |
|
d703046f63 | |
|
ed358edfce | |
|
2568b66147 | |
|
81bf26ffc6 | |
|
a2a70a130b | |
|
5b399100e1 | |
|
ff086c3de3 | |
|
dc631f4334 | |
|
fd510661b7 | |
|
28826622c8 | |
|
53022f51d9 | |
|
e4a43ee469 | |
|
d16e49448f | |
|
7f75f9a0a4 | |
|
4880d41aa3 | |
|
d232592524 | |
|
cdc3b3d3da | |
|
d46bbd65d0 | |
|
b885612d1f | |
|
28622d6ffc | |
|
951b23f99d | |
|
16bcd9a858 | |
|
9dd4496b55 | |
|
427098ee00 | |
|
e49ecbc1a1 | |
|
4cf1b00b4d | |
|
239c93ea04 | |
|
c8ba3b74ee | |
|
1c61b86681 | |
|
61523b30d5 | |
|
6ab8c5506e | |
|
33f0d7c8aa | |
|
a51037b1e7 | |
|
dd0794d0de | |
|
c988804222 | |
|
731701832f | |
|
2e77085fe4 | |
|
95fcaa5977 | |
|
f0c42316f7 | |
|
29c71a6efc | |
|
7ceef9878c | |
|
d6111cc733 | |
|
e790746f53 | |
|
fe1e66fec2 | |
|
d3c40dde03 | |
|
88e34954ad | |
|
3bc1019fd5 | |
|
a227b67976 | |
|
378b4cc681 | |
|
c2a5d9b3b9 | |
|
fa28e3233c | |
|
8a56eb5776 | |
|
0372450f1a | |
|
95a258a1a2 | |
|
55ed8da8fa | |
|
0bb1597aeb | |
|
45a5dd6852 | |
|
db01ddcb0d | |
|
36cce9df01 | |
|
4d2a136eca | |
|
1136da298c | |
|
195ce9ff69 | |
|
ac1ee02c4d | |
|
a7a25ef028 | |
|
7b05295d67 | |
|
e318c85c26 | |
|
107ac98d81 | |
|
805c82bdd5 | |
|
a5cd7beeeb | |
|
7d5085bf11 | |
|
eb3fefb9b8 | |
|
fa3e48cd26 | |
|
86ba780a40 | |
|
e638f43619 | |
|
b6796cd8f6 | |
|
158aea0bf7 | |
|
7e04ceecee | |
|
6ef6bbe2cd | |
|
a2501eefa4 | |
|
33c3e14e8b | |
|
61b78ce88a | |
|
fff05f7470 | |
|
25c7f68dac | |
|
857f052728 | |
|
9f6e9aa910 | |
|
4bd50fa76a | |
|
550e5eb690 | |
|
60709a140f | |
|
b15fadfcc4 | |
|
699a08f9bb | |
|
ca9827db16 | |
|
675a1cb078 | |
|
22cc427ea5 | |
|
f1a6cd7389 | |
|
5eaa1e2016 | |
|
6a3dae36e1 | |
|
e60e272a9a | |
|
ad116c9cd4 | |
|
8c622c1d63 | |
|
77c2e5683c | |
|
1322a09297 | |
|
b6477c60ef | |
|
dcaf24653b | |
|
c024df9386 | |
|
e4afc80be9 | |
|
a293b03b21 | |
|
8e880d65b1 | |
|
f637724a61 | |
|
5e8c7f2ca0 | |
|
25618c0289 | |
|
152f41e317 | |
|
49b10d0a99 | |
|
99b25fa635 | |
|
3a881657a2 | |
|
da8a0f1a45 | |
|
116d521789 | |
|
84ffbd61c9 | |
|
7e28a059ae | |
|
39e84031ae | |
|
bf08bbbfbd | |
|
ea7e0a29b5 | |
|
45f1393600 | |
|
ae2042bf4d | |
|
985c52ce0d | |
|
7f2f1eeedf | |
|
64577b5f2a | |
|
16fc31fbb0 | |
|
3fc151e340 | |
|
152ad64263 | |
|
23c1d1eaab | |
|
9ec909dd58 | |
|
29a8319849 | |
|
1c502d603c | |
|
4fc7e30647 | |
|
a9b6d1a020 | |
|
db8388c7bc | |
|
17b2cd0a64 | |
|
7e4be48aff | |
|
81340b3787 | |
|
a8f44cdf47 | |
|
e53e94eb4c | |
|
e5a6ebfe76 | |
|
edf83e6e41 | |
|
34af2110e2 | |
|
56934264a3 | |
|
1123fe94ab | |
|
7504a2dcdf | |
|
06343ab6fc | |
|
e326ccdf81 | |
|
240711a0bd | |
|
a28d9163d8 | |
|
b83be4028e | |
|
8f55c7cb3d | |
|
f299b5ca13 | |
|
351d5979ba | |
|
9636dccb99 | |
|
d0f388e46b | |
|
c21dd8e565 | |
|
b5aba457a0 | |
|
b3d95e3512 | |
|
1c6706d014 | |
|
3c910a4ad7 | |
|
8c843ecf0b | |
|
68ca6af923 | |
|
55e6142f60 | |
|
9481b8d1ab | |
|
f2c63ce427 | |
|
bc679f529e | |
|
463117de96 | |
|
e19d9e29fe | |
|
e4f993fb8e | |
|
c671da56e6 | |
|
0484f1f47b | |
|
d29c485c87 | |
|
7a0500c5eb | |
|
e9b80f805e | |
|
0d33bf9fb4 | |
|
3d96c347d1 | |
|
b9fbedee9e | |
|
432de00d12 | |
|
1fcf9aa6d2 | |
|
4cf89236a8 | |
|
0bf6976352 | |
|
cdd855bfb2 | |
|
0f2404bf12 | |
|
ea80d6e89c | |
|
d785e80622 | |
|
a9b8b5af02 | |
|
fb3d73f61f | |
|
bc4c7c11aa | |
|
78feeb2595 | |
|
ce2c857ff3 | |
|
0ccfff81de | |
|
42c1f5d79f | |
|
7010f6215e | |
|
19d8ed6cc5 | |
|
090d8ba723 | |
|
4f9e3b87ca | |
|
c7992f9fc0 | |
|
538698be07 | |
|
802f67cb7a | |
|
1d99e5f794 | |
|
b93901f765 | |
|
36d77da2fe | |
|
4d1e89cf91 | |
|
279b5b84cb | |
|
aabf20da2c | |
|
76d95282ca | |
|
a5082f50e5 | |
|
49bd65a05c | |
|
cc656a5bbc | |
|
5eb468c7ff | |
|
9379613ae8 | |
|
938aa9d1dd | |
|
b28218b753 | |
|
8de4b80458 | |
|
2922689951 | |
|
bd3871aa10 | |
|
b5ce35eb68 | |
|
0b2fb94e69 | |
|
ee16983eaf | |
|
f25adaf3e9 | |
|
a757b4bbf9 | |
|
0e372fea74 | |
|
e68803b14a | |
|
0972b85122 | |
|
1c14d96060 | |
|
007b0c3a5b | |
|
182d4e9612 | |
|
87a9186ae3 | |
|
e2d18f491b | |
|
0c45f9c44a | |
|
1f8b7e1d70 | |
|
8117f1af54 | |
|
2e34c33768 | |
|
83cfbe6381 | |
|
aaf15d2b3d | |
|
78d6a109fe | |
|
f68588eaa3 | |
|
972861ee83 | |
|
c75df5742e | |
|
4c7abf167e | |
|
20b8fe91a0 | |
|
2d7921897a | |
|
072c83c34c | |
|
b6aaf756e6 | |
|
fde4187f5b | |
|
299c6502a6 | |
|
74b868460b | |
|
6495a96f4e | |
|
7e80facc24 | |
|
8199231ac7 | |
|
d11f7f75c2 | |
|
2805e4ca6c | |
|
655fe2ff96 | |
|
087bff7a13 | |
|
b4427a1459 | |
|
1fcb3031ed | |
|
446e696d7e | |
|
f1ebe57d04 | |
|
a67c747a46 | |
|
3d80c1b9bb | |
|
57bc29a2d6 | |
|
808a2458fe | |
|
9a6ced171b | |
|
5c9fec6e36 | |
|
b067f07b2c | |
|
303f0817ca | |
|
44ff58675d | |
|
7146df070c | |
|
2b75df2e38 | |
|
d4d8816a8b | |
|
70768089da | |
|
d6a15311f7 | |
|
8d8031759d | |
|
7688583735 | |
|
291b1cee4f | |
|
bdbf908e36 | |
|
235082c338 | |
|
7786aeac9c | |
|
606aff2240 | |
|
ead0abf6b6 | |
|
fa581628f3 | |
|
0c0f270762 | |
|
32323aa1e8 | |
|
0eb4b826a5 | |
|
c763d90325 | |
|
b9ef093b18 | |
|
ae0ac2dbaf | |
|
bc3be9673d | |
|
0d11c2a79f | |
|
c2a7fa3834 | |
|
79e207ebf9 | |
|
670726980e | |
|
9b50471d61 | |
|
c845dcad4e | |
|
20ebed0347 | |
|
3a60afc0d0 | |
|
1edaac6773 | |
|
523ed5b296 | |
|
09aa018fec | |
|
e0f2f76322 | |
|
5058d2aba1 | |
|
754f94abbd | |
|
96599507b8 | |
|
f771238b5e | |
|
77b8fdf0e9 | |
|
ac76712485 | |
|
fdd5e3889e | |
|
0c846595eb | |
|
42efa82c2f | |
|
7ae4392784 | |
|
9ed4f708bc | |
|
9ef37b0bce | |
|
7d98b14f5b | |
|
8eb9a7c7a1 | |
|
f24d6c740b | |
|
7e05717d2e | |
|
da249ec436 | |
|
11d78d2386 | |
|
c61c88266b | |
|
a6d76b3f94 | |
|
6985bc0437 | |
|
56fb4612c7 | |
|
992ccb280e | |
|
4f6222cdc5 | |
|
573a59045b | |
|
168c2cc8c3 | |
|
2520ec2e7d | |
|
9d246dcba3 | |
|
a2584b22bc | |
|
af7572f923 | |
|
2a7ada450a | |
|
5e212ae658 | |
|
d57909b05a | |
|
b24d97fe59 | |
|
f1dee4a54a | |
|
feda7fd5c1 | |
|
c429d41900 | |
|
a8500da1a7 | |
|
3526ef069f | |
|
699596d022 | |
|
ceac412a25 | |
|
4ec8d6bc22 | |
|
c72b74824e | |
|
41361621ef | |
|
d7b72cd6ea | |
|
869a2c91d2 | |
|
604f7099ec | |
|
aee5f99d9d | |
|
8eea14794d | |
|
14ee52a532 | |
|
871c6ed72f | |
|
a13390909d | |
|
5d113056c8 | |
|
3c3b6f7376 | |
|
46a4255273 | |
|
776ba8a19c | |
|
5e0b6139f9 | |
|
39b71ea93f | |
|
35c0e07004 | |
|
e1812b5ecf | |
|
ef59d75ac5 | |
|
7da2fd393b | |
|
9177d20d5e | |
|
b9c1b85193 | |
|
bfbe02be66 | |
|
3feb728527 | |
|
60255489d5 | |
|
8b478a9f33 | |
|
516ab3f811 | |
|
d3fb69d198 | |
|
29745d23c2 | |
|
d529ec2fed | |
|
97e03e2c22 | |
|
da5bb97469 | |
|
481860d9bc | |
|
0d252cebc5 | |
|
63efa84183 | |
|
a0050bd44d | |
|
7de9e8f939 | |
|
6f0906c7c0 | |
|
d27c0270f8 | |
|
eddad2e788 | |
|
bc77fe8749 | |
|
2cbd5d46a0 | |
|
5ffd4d849b | |
|
27dfedab18 | |
|
898f915542 | |
|
a6c1b37e0c | |
|
2f749646ab | |
|
eba76584ce | |
|
0fab663f61 | |
|
e12bc1b03c | |
|
c8be1b9320 | |
|
489395ebb1 | |
|
c86e28383d | |
|
b1c74ab992 | |
|
4254d08e38 | |
|
e9c29f1442 | |
|
64bcbb896e | |
|
a9aeb01e99 | |
|
cb873bde49 | |
|
a7b7d8f22d | |
|
c8d380c587 | |
|
ed1aa36815 | |
|
8fb59d54fc | |
|
8bdd4f09dc | |
|
1857c82cb8 | |
|
393ef19b14 | |
|
fa34c9c8b2 | |
|
9b3a1b4d7c | |
|
c43068db93 | |
|
11af348377 | |
|
0739d1eb12 | |
|
3828311520 | |
|
d298ed97e8 | |
|
6dfe2301e0 | |
|
f1308bbb09 | |
|
5eb29259c1 | |
|
2ecbc2b1cb | |
|
478ab9ea0a | |
|
f95eb75eb8 | |
|
e58eb4d672 | |
|
40263b3621 | |
|
b0ba8e31ff | |
|
d6ce3816f4 | |
|
1f3133be78 | |
|
3e229a4bc9 | |
|
756ed06016 | |
|
e2f1e997a0 | |
|
d0637ca1ce | |
|
06695defa6 | |
|
d534e73613 | |
|
0059b6d0c5 | |
|
7cabdd4d14 | |
|
edd992aecd | |
|
bc81c3c204 | |
|
e95d55ed10 | |
|
8a5752bf38 | |
|
c4161a6b39 | |
|
1de1383383 | |
|
075900766d | |
|
fb4a82d26f | |
|
469a8279fc | |
|
528bccfe0b | |
|
45b05b1fe5 | |
|
052cfc1fe1 | |
|
a017518652 | |
|
437ec223f7 | |
|
384f8b5b9c | |
|
355c6aae93 | |
|
0e6487256a | |
|
5ac5c633a2 | |
|
2eb19c9222 | |
|
7c02471d2c | |
|
dcb54a2f58 | |
|
f2d9d51dd6 | |
|
579e27e17f | |
|
ff78edf56b | |
|
d7316c0ef2 | |
|
995cabbea6 | |
|
0d81105909 | |
|
81f0d0fe43 | |
|
267c0492f6 | |
|
f45708a8cc | |
|
62bacfb0d2 | |
|
b232f44a27 | |
|
16a41fff24 | |
|
32fab5e0ca | |
|
5c90f2f0b7 | |
|
65258fe07e | |
|
085d1ef9b2 | |
|
4553558144 | |
|
8c432f6f4e | |
|
9474b0dc30 | |
|
061ee27ab7 | |
|
22dbae7f80 | |
|
a943492d80 | |
|
7dcd78d3ef | |
|
5b758cdb80 | |
|
672881b9d2 | |
|
6bd9d8f6c5 | |
|
c09c059b79 | |
|
7219ddaed8 | |
|
05f1e805b5 | |
|
4753b4a71a | |
|
666cbf64eb | |
|
5eeec8469f | |
|
b000a8b05d | |
|
64a1df39c5 | |
|
a822e21524 | |
|
1c80a73741 | |
|
c1a15c59c3 | |
|
f3b757d0bc | |
|
2904be27f4 | |
|
464f112038 | |
|
48456483c7 | |
|
e6240f1796 | |
|
54eed8a7fc | |
|
28bfd15336 | |
|
71b5e2599d | |
|
cb1a157813 | |
|
04cf926909 | |
|
7b79b0defd | |
|
6aed244c8c | |
|
ad4a424024 | |
|
6ffe1d5375 | |
|
e6b3084bc5 | |
|
161d215ffd | |
|
7113465765 | |
|
bbf2e11d8b | |
|
1430e96752 | |
|
9338164838 | |
|
7756f3ae19 | |
|
23b44237d8 | |
|
d6cb1f3266 | |
|
404017c33e | |
|
83f571b543 | |
|
84373d1297 | |
|
016ea68379 | |
|
7c689dc6ec | |
|
1979637197 | |
|
eaf8dd734f | |
|
72b5f14b62 | |
|
909523ec3e | |
|
b10cf493b5 | |
|
c2d7c1bfb5 | |
|
f4205e72ac | |
|
bd92567666 | |
|
1231f711dc | |
|
c6c507ecb0 | |
|
a01eba7242 | |
|
2fbb9d0d0e | |
|
f7ae511332 | |
|
c65946aec0 | |
|
4b04e554f8 | |
|
a2bfdd1d01 | |
|
03a67c3778 | |
|
cad0f24bd8 | |
|
a7ec02b38e | |
|
a6a255f04b | |
|
95701368a6 | |
|
0cc96a5747 | |
|
3bfcaaf110 | |
|
cfa469a02e | |
|
0da4aa2f09 | |
|
cc4125fee5 | |
|
2e6928f317 | |
|
4d9fee9b11 | |
|
864074490b | |
|
ec0d303cb6 | |
|
23621acfbf | |
|
05844ea78d | |
|
4ac9879f72 | |
|
42302a32a5 | |
|
948c209a2c | |
|
853e7771f9 | |
|
ebad03fce1 | |
|
40822ad4d0 | |
|
0595d999f4 | |
|
06d5ac5fad | |
|
7fb33896de | |
|
2fe90f46a5 | |
|
fe0904c4fb | |
|
c40b779c39 | |
|
7c11fc955b | |
|
a6e65f236f | |
|
feeb04a7ed | |
|
e2e2a446bf | |
|
b6aa7bec3c | |
|
1efb19dce6 | |
|
2e0e6c72d0 | |
|
77fbd7dfba | |
|
60145c2325 | |
|
ec635783c4 | |
|
f54082163b | |
|
d8e03cf53d | |
|
aa79d36e9f | |
|
cc56a160af | |
|
aa3a713699 | |
|
0cba0b0b25 | |
|
5be9e98ae0 | |
|
4e32e4861e | |
|
88f9723217 | |
|
65d206eae0 | |
|
82b406cbcd | |
|
f81781f92d | |
|
456744f16a | |
|
b5c44ff2bb | |
|
3a5039727b | |
|
ebd1653b86 | |
|
7ecebe62e6 | |
|
b15f3a250b | |
|
dc8b4a5baa | |
|
9f4d1089cb | |
|
91ec9259bb | |
|
df9ebec2e2 | |
|
12383a1e20 | |
|
0de01b7eaa | |
|
5c37af3fe1 | |
|
a3b95947b0 | |
|
ac7492c2db | |
|
663b93d52d | |
|
9a9c62c1da | |
|
65aa4efebb | |
|
3d653d6413 | |
|
33a087d1d7 | |
|
aadfc98306 | |
|
4fb1ec47b9 | |
|
c45f5457ab | |
|
c8cf242a09 | |
|
b0315b0e70 | |
|
8418435068 | |
|
8ac802e2a3 | |
|
d632386936 | |
|
c1d2925933 | |
|
71ad21de65 | |
|
b4765bf686 | |
|
4745a067aa | |
|
0e53147f13 | |
|
d792e0ceb1 | |
|
79ace9a7bf | |
|
ad363f7d85 |
|
@ -6,6 +6,8 @@
|
|||
# Folders
|
||||
_obj
|
||||
_test
|
||||
/bin/*
|
||||
**/backup
|
||||
|
||||
# Architecture specific extensions/prefixes
|
||||
*.[568vq]
|
||||
|
@ -18,6 +20,7 @@ _cgo_gotypes.go
|
|||
_cgo_export.*
|
||||
|
||||
_testmain.go
|
||||
tools/xlsx2binary/agc.go
|
||||
|
||||
*.exe
|
||||
*.exe~
|
||||
|
@ -35,11 +38,8 @@ _testmain.go
|
|||
/dbproxy/dbproxy
|
||||
/mgrsrv/mgrsrv
|
||||
/gatesrv/gatesrv
|
||||
/gamesrv/gamesrv
|
||||
/worldsrv/worldsrv
|
||||
/gamesrv/gamesrv
|
||||
/robot/robot
|
||||
/schedulesrv/schedulesrv
|
||||
/ranksrv/ranksrv
|
||||
|
||||
/bin/*
|
||||
**/backup
|
||||
/schedulesrv/schedulesrv
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[submodule "public"]
|
||||
path = public
|
||||
url = git@git.pogorockgames.com:mango-games/server/public.git
|
24
README.md
24
README.md
|
@ -2,36 +2,12 @@
|
|||
|
||||
游戏业务代码
|
||||
|
||||
### 子仓库
|
||||
public子仓库本项目本身并没有使用,只是用来暴露部分公共代码,供其他项目使用。
|
||||
例如:
|
||||
1.客户端同步通信协议
|
||||
2.客户端同步游戏配置
|
||||
|
||||
#### 初始化子仓库
|
||||
```
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
#### 更新子仓库
|
||||
```
|
||||
git submodule update --remote
|
||||
```
|
||||
|
||||
#### 更新并提交子仓库代码
|
||||
```
|
||||
update_public.sh
|
||||
```
|
||||
|
||||
### 脚本
|
||||
#### gen_data.bat
|
||||
xlsx文件转换为json,dat文件,生成pbdata.proto,生成srvdata包
|
||||
|
||||
#### gen_go.bat
|
||||
proto文件生成go文件
|
||||
|
||||
#### gen_web.bat
|
||||
proto文件生成go文件
|
||||
|
||||
#### build.bat
|
||||
生成可执行文件
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
@echo off
|
||||
|
||||
echo Build %1 task!
|
||||
|
||||
cd %1
|
||||
go fmt
|
||||
go vet
|
||||
go build -v
|
||||
echo errorlevel:%errorlevel%
|
||||
if "%errorlevel%"=="0" exit
|
||||
if not "%errorlevel%"=="0" echo %1 build failed!
|
||||
pause
|
||||
exit
|
29
build.bat
29
build.bat
|
@ -1,30 +1,9 @@
|
|||
go env -w GO111MODULE=off
|
||||
@echo "go fmt common..."
|
||||
cd common
|
||||
go fmt
|
||||
|
||||
@echo "go fmt api3th..."
|
||||
cd ../api3th
|
||||
go fmt
|
||||
@echo off
|
||||
|
||||
@echo "go fmt model..."
|
||||
cd ../model
|
||||
go fmt
|
||||
call shell/build.bat
|
||||
|
||||
@echo "go fmt webapi..."
|
||||
cd ../webapi
|
||||
go fmt
|
||||
|
||||
@echo "go fmt lib complete!"
|
||||
|
||||
cd ..
|
||||
start build-sub.bat dbproxy
|
||||
start build-sub.bat mgrsrv
|
||||
start build-sub.bat gatesrv
|
||||
start build-sub.bat worldsrv
|
||||
start build-sub.bat gamesrv
|
||||
start build-sub.bat robot
|
||||
start build-sub.bat ranksrv
|
||||
|
||||
@echo "Wait all build task complete!"
|
||||
echo "Wait all build task complete!"
|
||||
pause
|
||||
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
set CGO_ENABLED=0
|
||||
set GOOS=linux
|
||||
set GOARCH=amd64
|
||||
|
||||
go env -w GO111MODULE=off
|
||||
|
||||
build.bat
|
||||
@echo off
|
||||
|
||||
@echo "complete"
|
||||
pause
|
||||
call shell/build.bat
|
||||
|
||||
echo "Wait all build task complete!"
|
||||
|
||||
if %errorcode% neq 0 (
|
||||
pause
|
||||
)
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
set CGO_ENABLED=0
|
||||
set GOOS=darwin
|
||||
set GOARCH=amd64
|
||||
|
||||
go env -w GO111MODULE=off
|
||||
|
||||
build.bat
|
||||
|
||||
@echo "complete"
|
||||
pause
|
|
@ -19,10 +19,6 @@ var ActionMgrSington = &ActionMgr{
|
|||
pool: make(map[int]ActionBase),
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
||||
}
|
||||
|
||||
type ActionMgr struct {
|
||||
pool map[int]ActionBase
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
rawproto "google.golang.org/protobuf/proto"
|
||||
"mongo.games.com/game/proto"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
"mongo.games.com/goserver/core/netlib"
|
||||
"mongo.games.com/goserver/srvlib"
|
||||
"mongo.games.com/goserver/srvlib/protocol"
|
||||
)
|
||||
|
||||
func RegisterBoardCastHandler() {
|
||||
netlib.Register(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), &protocol.SSPacketBroadcast{}, BroadcastHandler)
|
||||
}
|
||||
|
||||
func BroadcastHandler(s *netlib.Session, packetId int, data interface{}) error {
|
||||
if bp, ok := data.(*protocol.SSPacketBroadcast); ok {
|
||||
pd := bp.GetData()
|
||||
sp := bp.GetSessParam()
|
||||
if bcss := sp.GetBcss(); bcss != nil {
|
||||
srvlib.ServerSessionMgrSington.Broadcast(int(bp.GetPacketId()), pd, int(bcss.GetSArea()), int(bcss.GetSType()))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateBroadcastPacket(sp *protocol.BCSessionUnion, packetId int, data interface{}) (rawproto.Message, error) {
|
||||
pack := &protocol.SSPacketBroadcast{
|
||||
SessParam: sp,
|
||||
PacketId: proto.Int(packetId),
|
||||
}
|
||||
|
||||
if byteData, ok := data.([]byte); ok {
|
||||
pack.Data = byteData
|
||||
} else {
|
||||
byteData, err := netlib.MarshalPacket(packetId, data)
|
||||
if err == nil {
|
||||
pack.Data = byteData
|
||||
} else {
|
||||
logger.Logger.Warnf("CreateBroadcastPacket err:%v", err)
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return pack, nil
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package common
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
@ -6,21 +6,21 @@ import (
|
|||
"mongo.games.com/goserver/core/module"
|
||||
)
|
||||
|
||||
var ClockMgrSington = &ClockMgr{
|
||||
var ClockMgrSingleton = &ClockMgr{
|
||||
LastHour: -1,
|
||||
LastDay: -1,
|
||||
Notifying: false,
|
||||
}
|
||||
|
||||
const (
|
||||
CLOCK_EVENT_SECOND int = iota
|
||||
CLOCK_EVENT_MINUTE
|
||||
CLOCK_EVENT_HOUR
|
||||
CLOCK_EVENT_DAY
|
||||
CLOCK_EVENT_WEEK
|
||||
CLOCK_EVENT_MONTH
|
||||
CLOCK_EVENT_SHUTDOWN
|
||||
CLOCK_EVENT_MAX
|
||||
ClockEventSecond int = iota
|
||||
ClockEventMinute
|
||||
ClockEventHour
|
||||
ClockEventDay
|
||||
ClockEventWeek
|
||||
ClockEventMonth
|
||||
ClockEventShutdown
|
||||
ClockEventMax
|
||||
)
|
||||
|
||||
type ClockSinker interface {
|
||||
|
@ -37,7 +37,7 @@ type ClockSinker interface {
|
|||
type BaseClockSinker struct {
|
||||
}
|
||||
|
||||
func (s *BaseClockSinker) InterestClockEvent() int { return (1 << CLOCK_EVENT_MAX) - 1 }
|
||||
func (s *BaseClockSinker) InterestClockEvent() int { return (1 << ClockEventMax) - 1 }
|
||||
func (s *BaseClockSinker) OnSecTimer() {}
|
||||
func (s *BaseClockSinker) OnMiniTimer() {}
|
||||
func (s *BaseClockSinker) OnHourTimer() {}
|
||||
|
@ -47,7 +47,7 @@ func (s *BaseClockSinker) OnMonthTimer() {}
|
|||
func (s *BaseClockSinker) OnShutdown() {}
|
||||
|
||||
type ClockMgr struct {
|
||||
sinkers [CLOCK_EVENT_MAX][]ClockSinker
|
||||
sinkers [ClockEventMax][]ClockSinker
|
||||
LastTickTime time.Time
|
||||
LastMonth time.Month
|
||||
LastWeek int
|
||||
|
@ -59,9 +59,9 @@ type ClockMgr struct {
|
|||
LastFiveMin int
|
||||
}
|
||||
|
||||
func (this *ClockMgr) RegisteSinker(sinker ClockSinker) {
|
||||
func (this *ClockMgr) RegisterSinker(sinker ClockSinker) {
|
||||
interest := sinker.InterestClockEvent()
|
||||
for i := 0; i < CLOCK_EVENT_MAX; i++ {
|
||||
for i := 0; i < ClockEventMax; i++ {
|
||||
if (1<<i)&interest != 0 {
|
||||
found := false
|
||||
ss := this.sinkers[i]
|
||||
|
@ -114,9 +114,9 @@ func (this *ClockMgr) Update() {
|
|||
this.LastDay = day
|
||||
this.fireDayEvent()
|
||||
|
||||
_, week := tNow.ISOWeek()
|
||||
if week != this.LastWeek {
|
||||
this.LastWeek = week
|
||||
week := GetWeekStartTs(tNow.Unix())
|
||||
if week != int64(this.LastWeek) {
|
||||
this.LastWeek = int(week)
|
||||
this.fireWeekEvent()
|
||||
}
|
||||
|
||||
|
@ -137,43 +137,43 @@ func (this *ClockMgr) Shutdown() {
|
|||
}
|
||||
|
||||
func (this *ClockMgr) fireSecondEvent() {
|
||||
for _, s := range this.sinkers[CLOCK_EVENT_SECOND] {
|
||||
for _, s := range this.sinkers[ClockEventSecond] {
|
||||
s.OnSecTimer()
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ClockMgr) fireMinuteEvent() {
|
||||
for _, s := range this.sinkers[CLOCK_EVENT_MINUTE] {
|
||||
for _, s := range this.sinkers[ClockEventMinute] {
|
||||
s.OnMiniTimer()
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ClockMgr) fireHourEvent() {
|
||||
for _, s := range this.sinkers[CLOCK_EVENT_HOUR] {
|
||||
for _, s := range this.sinkers[ClockEventHour] {
|
||||
s.OnHourTimer()
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ClockMgr) fireDayEvent() {
|
||||
for _, s := range this.sinkers[CLOCK_EVENT_DAY] {
|
||||
for _, s := range this.sinkers[ClockEventDay] {
|
||||
s.OnDayTimer()
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ClockMgr) fireWeekEvent() {
|
||||
for _, s := range this.sinkers[CLOCK_EVENT_WEEK] {
|
||||
for _, s := range this.sinkers[ClockEventWeek] {
|
||||
s.OnWeekTimer()
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ClockMgr) fireMonthEvent() {
|
||||
for _, s := range this.sinkers[CLOCK_EVENT_MONTH] {
|
||||
for _, s := range this.sinkers[ClockEventMonth] {
|
||||
s.OnMonthTimer()
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ClockMgr) fireShutdownEvent() {
|
||||
for _, s := range this.sinkers[CLOCK_EVENT_SHUTDOWN] {
|
||||
for _, s := range this.sinkers[ClockEventShutdown] {
|
||||
s.OnShutdown()
|
||||
}
|
||||
}
|
||||
|
@ -183,5 +183,5 @@ func (this *ClockMgr) GetLast() (int, int, int, int, int, int) {
|
|||
}
|
||||
|
||||
func init() {
|
||||
module.RegisteModule(ClockMgrSington, time.Millisecond*500, 0)
|
||||
module.RegisteModule(ClockMgrSingleton, time.Millisecond*500, 0)
|
||||
}
|
|
@ -66,14 +66,23 @@ const (
|
|||
GameID_Thirteen8 = 212 // 十三张(八人场)
|
||||
GameID_ThirteenFree = 213 // 十三张(自由场经典场)
|
||||
GameID_ThirteenFreeLaiZi = 214 // 十三张(自由场癞子场)
|
||||
GameId_TienLenCustom = 215 // tienlen房卡经典版
|
||||
GameId_TienLenCustom_yl = 216 // tienlen房卡娱乐版
|
||||
GameId_TienLenCustom_toend = 217 // tienlen房卡典版(打到底)
|
||||
GameId_TienLenCustom_yl_toend = 218 // tienlen房卡娱乐版(打到底)
|
||||
__GameId_Slot_Min__ = 300 //################拉霸类################
|
||||
GameId_CaiShen = 301 //财神
|
||||
GameId_Avengers = 302 //复仇者联盟
|
||||
GameId_EasterIsland = 303 //复活岛
|
||||
GameId_IceAge = 304 //冰河世纪
|
||||
GameId_TamQuoc = 305 //百战成神
|
||||
GameId_Fruits = 306 //水果拉霸
|
||||
GameId_Richblessed = 307 //多福多财
|
||||
GameId_CaiShen = 301 // 财神
|
||||
GameId_Avengers = 302 // 复仇者联盟
|
||||
GameId_EasterIsland = 303 // 复活岛
|
||||
GameId_IceAge = 304 // 冰河世纪
|
||||
GameId_TamQuoc = 305 // 百战成神
|
||||
GameId_Fruits = 306 // 水果拉霸
|
||||
GameId_Richblessed = 307 // 多福
|
||||
GameId_FortuneTiger = 308 // FortuneTiger
|
||||
GameId_FortuneDragon = 309 // FortuneDragon
|
||||
GameId_FortuneRabbit = 310 // FortuneRabbit
|
||||
GameId_FortuneOx = 311 // FortuneOx
|
||||
GameId_FortuneMouse = 312 // FortuneMouse
|
||||
__GameId_Fishing_Min__ = 400 //################捕鱼类################
|
||||
GameId_HFishing = 401 //欢乐捕鱼
|
||||
GameId_TFishing = 402 //天天捕鱼
|
||||
|
@ -86,28 +95,27 @@ const (
|
|||
GameId_CaoThap = 605 //CaoThap
|
||||
GameId_AngerUncle = 606 // 愤怒大叔
|
||||
GameId_SmallRoket = 607 // 小火箭
|
||||
GameId_Clawdoll = 608 // 娃娃机
|
||||
__GameId_ThrGame_Min__ = 700 //################三方类################
|
||||
GameId_Thr_Dg = 701 //DG Game
|
||||
GameId_Thr_XHJ = 901 //DG Game
|
||||
GameId_Thr_XHJ = 901 ///DG Game
|
||||
)
|
||||
|
||||
// IsTienLen TienLen游戏
|
||||
func IsTienLen(gameId int) bool {
|
||||
return InSliceInt32(GetTienlenGameID(), int32(gameId))
|
||||
}
|
||||
|
||||
func GetTienlenGameID() []int32 {
|
||||
//todo 还要维护游戏id,好麻烦,还容易忘
|
||||
return []int32{
|
||||
GameId_TienLen, GameId_TienLen_yl,
|
||||
GameId_TienLen_toend, GameId_TienLen_yl_toend,
|
||||
GameId_TienLen_m, GameId_TienLen_m_toend,
|
||||
GameId_TienLenSelect, GameId_TienLenSelect_toend,
|
||||
GameId_TienLenSelect_yl, GameId_TienLenSelect_yl_toend,
|
||||
GameId_TienLenRank, GameId_TienLenRank_toend,
|
||||
GameId_TienLenRank_yl, GameId_TienLenRank_yl_toend,
|
||||
}
|
||||
}
|
||||
const (
|
||||
GameDifTienlen = "207" // tienlen
|
||||
GameDifThirteen = "211" // 十三张
|
||||
GameDifChess = "521" // 象棋
|
||||
GameDifFish = "401" // 捕鱼
|
||||
GameDifRocket = "607" // 小火箭
|
||||
GameDifCaiShen = "301" // 财神
|
||||
GameDifAvengers = "302" // 复仇者联盟
|
||||
GameDifEaster = "303" // 复活节岛
|
||||
GameDifIceAge = "304" // 冰河世纪
|
||||
GameDifTamQuoc = "305" // 百战成神
|
||||
GameDifFruits = "306" // 水果机
|
||||
GameDifRichblessed = "307" // 多彩多福
|
||||
GameDifClawdoll = "608" // 娃娃机
|
||||
)
|
||||
|
||||
// IsTienLenYuLe TienLen娱乐
|
||||
func IsTienLenYuLe(gameId int) bool {
|
||||
|
@ -117,7 +125,9 @@ func IsTienLenYuLe(gameId int) bool {
|
|||
GameId_TienLenSelect_yl,
|
||||
GameId_TienLenRank_yl,
|
||||
GameId_TienLenSelect_yl_toend,
|
||||
GameId_TienLenRank_yl_toend:
|
||||
GameId_TienLenRank_yl_toend,
|
||||
GameId_TienLenCustom_yl,
|
||||
GameId_TienLenCustom_yl_toend:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
@ -132,40 +142,9 @@ func IsTienLenToEnd(gameId int) bool {
|
|||
GameId_TienLenSelect_toend,
|
||||
GameId_TienLenSelect_yl_toend,
|
||||
GameId_TienLenRank_toend,
|
||||
GameId_TienLenRank_yl_toend:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// IsChess 象棋游戏
|
||||
func IsChess(gameId int) bool {
|
||||
switch gameId {
|
||||
case GameId_Chesstitians,
|
||||
GameId_ChesstitiansMakruk,
|
||||
GameId_ChesstitiansCambodian,
|
||||
GameId_ChesstitiansCambodianRobot:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// IsThirteen 十三张游戏
|
||||
func IsThirteen(gameId int) bool {
|
||||
switch gameId {
|
||||
case GameID_Thirteen4,
|
||||
GameID_Thirteen8,
|
||||
GameID_ThirteenFree,
|
||||
GameID_ThirteenFreeLaiZi:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// IsThirteen 十三张游戏
|
||||
func IsSmallRocket(gameId int) bool {
|
||||
switch gameId {
|
||||
case GameId_SmallRoket:
|
||||
GameId_TienLenRank_yl_toend,
|
||||
GameId_TienLenCustom_toend,
|
||||
GameId_TienLenCustom_yl_toend:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
@ -185,9 +164,11 @@ func IsLocalGame(gameId int) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
// IsPlayerPool 需要统计在个人水池的游戏
|
||||
func IsPlayerPool(gameId int) bool {
|
||||
if IsTienLen(gameId) || IsThirteen(gameId) {
|
||||
func IsDaZhong(gameId int) bool {
|
||||
switch gameId {
|
||||
case GameId_TienLenSelect,
|
||||
GameId_TienLenSelect_yl, GameId_TienLenSelect_toend,
|
||||
GameId_TienLenSelect_yl_toend:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
@ -195,47 +176,26 @@ func IsPlayerPool(gameId int) bool {
|
|||
|
||||
// 房间编号区间
|
||||
const (
|
||||
PrivateSceneStartId = 10000000
|
||||
PrivateSceneMaxId = 99999999
|
||||
MatchSceneStartId = 100000000
|
||||
MatchSceneMaxId = 199999999
|
||||
HundredSceneStartId = 200000000
|
||||
HundredSceneMaxId = 299999999
|
||||
HallSceneStartId = 300000000
|
||||
HallSceneMaxId = 399999999
|
||||
MiniGameSceneStartId = 400000000
|
||||
MiniGameSceneMaxId = 409999999
|
||||
CoinSceneStartId = 1000000000 //区间预留大点,因为队列匹配比较耗id,假定一天100w牌局,那么这个id区间够用1000天
|
||||
CoinSceneMaxId = 1999999999
|
||||
DgSceneId = 99
|
||||
PrivateSceneStartId = 100000
|
||||
PrivateSceneMaxId = 999999
|
||||
MatchSceneStartId = 100000000
|
||||
MatchSceneMaxId = 199999999
|
||||
HundredSceneStartId = 200000000
|
||||
HundredSceneMaxId = 299999999
|
||||
CoinSceneStartId = 1000000000
|
||||
CoinSceneMaxId = 1999999999
|
||||
DgSceneId = 99
|
||||
)
|
||||
|
||||
// 房间模式
|
||||
const (
|
||||
SceneMode_Public = iota //公共房间
|
||||
SceneMode_Club //俱乐部房间
|
||||
SceneMode_Private //私人房间
|
||||
SceneMode_Match //赛事房间
|
||||
SceneMode_Thr //三方房间
|
||||
SceneModePublic = 0 // 公共房间
|
||||
SceneModePrivate = 2 // 私人房间
|
||||
SceneModeMatch = 3 // 赛事房间
|
||||
SceneModeThr = 4 // 三方房间
|
||||
SceneModePrivateMatch = 5 // 竞技馆房间
|
||||
)
|
||||
|
||||
// 场景级别
|
||||
//const (
|
||||
// SceneLvl_Test = -1 // 试玩场(不要钱)
|
||||
// SceneLvl_Experience = 0 // 体验场(花小钱)
|
||||
// SceneLvl_Primary = 1 // 初级场
|
||||
// SceneLvl_Middle = 2 // 中级场
|
||||
// SceneLvl_Senior = 3 // 高级场
|
||||
// SceneLvl_Professor = 4 // 专家场
|
||||
//)
|
||||
|
||||
// 房费选项
|
||||
//const (
|
||||
// RoomFee_Owner int32 = iota //房主
|
||||
// RoomFee_AA //AA
|
||||
// RoomFee_Max
|
||||
//)
|
||||
|
||||
const (
|
||||
Platform_Rob = "__$G_P$__"
|
||||
Platform_Sys = "0"
|
||||
|
@ -248,71 +208,116 @@ const (
|
|||
)
|
||||
|
||||
const (
|
||||
GainWay_NewPlayer int32 = 0 //0.新建角色
|
||||
GainWay_Pay = 1 //1.后台增加(主要是充值)
|
||||
GainWay_ByPMCmd = 2 //2.pm命令
|
||||
GainWay_MatchBreakBack = 3 //3.退赛退还
|
||||
GainWay_MatchSystemSupply = 4 //4.比赛奖励
|
||||
GainWay_Exchange = 5 //5.兑换
|
||||
GainWay_ServiceFee = 6 //6.桌费
|
||||
GainWay_CoinSceneWin = 7 //7.金豆场赢取
|
||||
GainWay_CoinSceneLost = 8 //8.金豆场输
|
||||
GainWay_CoinSceneEnter = 9 //9.进入金币场预扣
|
||||
GainWay_ShopBuy = 10 //10.商城购买或者兑换
|
||||
GainWay_CoinSceneLeave = 11 //11.金豆场回兑
|
||||
GainWay_HundredSceneWin = 12 //12.万人场赢取
|
||||
GainWay_HundredSceneLost = 13 //13.万人场输
|
||||
GainWay_MessageAttach = 14 //14.邮件
|
||||
GainWay_SafeBoxSave = 15 //15.保险箱存入
|
||||
GainWay_SafeBoxTakeOut = 16 //16.保险箱取出
|
||||
GainWay_Fishing = 17 //17.捕鱼
|
||||
GainWay_CoinSceneExchange = 18 //18.金豆场兑换
|
||||
GainWay_UpgradeAccount = 19 //19.升级账号
|
||||
GainWay_API_AddCoin = 20 //20.API操作钱包
|
||||
GainWay_GoldCome = 21 //21.财神降临
|
||||
GainWay_Transfer_System2Thrid = 22 //22.系统平台转入到第三方平台的金币
|
||||
GainWay_Transfer_Thrid2System = 23 //23.第三方平台转入到系统平台的金币
|
||||
GainWay_RebateTask = 24 //24.返利获取
|
||||
GainWay_IOSINSTALLSTABLE = 25 //25.ios安装奖励
|
||||
GainWay_VirtualChange = 26 //26.德州虚拟账变
|
||||
GainWay_CreatePrivateScene = 27 //27.创建私有房间
|
||||
GainWay_PrivateSceneReturn = 28 //28.解散私有房间返还
|
||||
GainWay_OnlineRandCoin = 29 //29.红包雨
|
||||
GainWay_Expire = 30 //30.到期清理
|
||||
GainWay_PromoterBind = 31 //31.手动绑定推广员
|
||||
GainWay_GradeShopReturn = 32 //32.积分商城撤单退还积分
|
||||
GainWay_Api_In = 33 //33.转移金币
|
||||
GainWay_Api_Out = 34 //34.转移金币
|
||||
GainWay_Shop_Buy = 35 //35.购买记录
|
||||
GainWay_MAIL_MTEM = 36 //36.邮件领取道具
|
||||
GainWay_Item_Sale = 37 //37.道具出售
|
||||
GainWay_ReliefFund = 38 //38.领取救济金
|
||||
GainWay_Shop_Revoke = 39 //39.撤单
|
||||
GainWay_ActSign = 40 //40.签到
|
||||
GainWay_MatchSignup = 41 //比赛报名费用
|
||||
GainWay_MatchSeason = 42 //比赛赛季奖励
|
||||
GainWay_ActSignNew = 43 //43.新签到
|
||||
GainWay_ActTurnplate = 44 //44.轮盘
|
||||
GainWay_ActBlindBox = 45 //45.盲盒
|
||||
GainWay_ActFirstPay = 46 //46.首充
|
||||
GainWay_VIPGift = 47 //47.vip礼包
|
||||
GainWay_ActContinuousPay = 48 //48.连续充值
|
||||
GainWay_ActJybAward = 49 //49.礼包码兑换
|
||||
GainWay_LeaveDeduct = 50 //50.离开扣分
|
||||
GainWay_LeaveCombat = 51 //51.离开补偿
|
||||
GainWay_RankMatch = 52 //52.排位赛段位奖励
|
||||
GainWay_AddBag = 53 //53 增加背包接口调用
|
||||
GainWay_SmallRocket = 54 //54.小火箭收入
|
||||
GainWay_BindTel = 55 //55.绑定手机号
|
||||
GainWay_ReliefFund2 = 56 //56.救济金看视频双倍领取
|
||||
GainWay_ActTurnplate2 = 57 //57.轮盘看视频双倍领取
|
||||
GainWay_ActSignNew2 = 58 //58.签到看视频双倍领取
|
||||
GainWay_ItemUse = 59 //59.道具使用
|
||||
GainWay_PhoneScore = 60 //60.积分抽奖活动
|
||||
GainWay_RankReward = 61 //61.段位奖励
|
||||
GainWay_TaskReward = 62 //62.任务奖励
|
||||
GainWay_Interact = 63 //63.房间内互动效果
|
||||
GainWay_Collect = 64 //64.集卡活动
|
||||
GainWay_NewPlayer int32 = 0 //新建角色
|
||||
GainWay_Pay = 1 //后台增加(主要是充值)
|
||||
GainWay_ByPMCmd = 2 //pm命令
|
||||
GainWay_MatchBreakBack = 3 //退赛退还
|
||||
GainWay_MatchSystemSupply = 4 //比赛奖励
|
||||
GainWay_Exchange = 5 //兑换
|
||||
GainWay_ServiceFee = 6 //桌费
|
||||
GainWay_CoinSceneWin = 7 //金豆场赢取
|
||||
GainWay_CoinSceneLost = 8 //金豆场输
|
||||
GainWay_CoinSceneEnter = 9 //进入金币场预扣
|
||||
GainWay_ShopBuy = 10 //商城购买或者兑换
|
||||
GainWay_CoinSceneLeave = 11 //金豆场回兑
|
||||
GainWay_HundredSceneWin = 12 //万人场赢取
|
||||
GainWay_HundredSceneLost = 13 //万人场输
|
||||
GainWay_MessageAttach = 14 //邮件
|
||||
GainWay_SafeBoxSave = 15 //保险箱存入
|
||||
GainWay_SafeBoxTakeOut = 16 //保险箱取出
|
||||
GainWay_Fishing = 17 //捕鱼
|
||||
GainWay_CoinSceneExchange = 18 //金豆场兑换
|
||||
GainWay_UpgradeAccount = 19 //升级账号
|
||||
GainWay_API_AddCoin = 20 //API操作钱包
|
||||
GainWay_GoldCome = 21 //财神降临
|
||||
GainWay_Transfer_System2Thrid = 22 //系统平台转入到第三方平台的金币
|
||||
GainWay_Transfer_Thrid2System = 23 //第三方平台转入到系统平台的金币
|
||||
GainWay_RebateTask = 24 //返利获取
|
||||
GainWay_IOSINSTALLSTABLE = 25 //ios安装奖励
|
||||
GainWay_VirtualChange = 26 //德州虚拟账变
|
||||
GainWay_CreatePrivateScene = 27 //创建私有房间
|
||||
GainWay_PrivateSceneReturn = 28 //解散私有房间返还
|
||||
GainWay_OnlineRandCoin = 29 //红包雨
|
||||
GainWay_Expire = 30 //到期清理
|
||||
GainWay_PromoterBind = 31 //手动绑定推广员
|
||||
GainWay_GradeShopReturn = 32 //积分商城撤单退还积分
|
||||
GainWay_Api_In = 33 //转移金币
|
||||
GainWay_Api_Out = 34 //转移金币
|
||||
GainWay_Shop_Buy = 35 //购买记录
|
||||
GainWay_MAIL_MTEM = 36 //邮件领取道具
|
||||
GainWay_Item_Sale = 37 //道具出售
|
||||
GainWay_ReliefFund = 38 //领取救济金
|
||||
GainWay_Shop_Revoke = 39 //撤单
|
||||
GainWay_ActSign = 40 //
|
||||
GainWay_MatchSignup = 41 //比赛报名费用
|
||||
GainWay_MatchSeason = 42 //比赛赛季奖励
|
||||
GainWay_ActSignNew = 43 //新签到
|
||||
GainWay_ActTurnplate = 44 //轮盘
|
||||
GainWay_ActBlindBox = 45 //盲盒
|
||||
GainWay_ActFirstPay = 46 //首充
|
||||
GainWay_VIPGift = 47 //vip礼包
|
||||
GainWay_ActContinuousPay = 48 //连续充值
|
||||
GainWay_ActJybAward = 49 //礼包码兑换
|
||||
GainWay_LeaveDeduct = 50 //离开扣分
|
||||
GainWay_LeaveCombat = 51 //离开补偿
|
||||
GainWay_RankMatch = 52 //排位赛段位奖励
|
||||
GainWay_AddBag = 53 //增加背包接口调用
|
||||
GainWay_SmallRocket = 54 //小火箭收入
|
||||
GainWay_BindTel = 55 //绑定手机号
|
||||
GainWay_ReliefFund2 = 56 //救济金看视频双倍领取
|
||||
GainWay_ActTurnplate2 = 57 //轮盘看视频双倍领取
|
||||
GainWay_ActSignNew2 = 58 //签到看视频双倍领取
|
||||
GainWay_ItemUse = 59 //道具使用
|
||||
GainWay_PhoneScore = 60 //手机积分活动
|
||||
GainWay_RankReward = 61 //排位奖励
|
||||
GainWay_TaskReward = 62 //任务奖励
|
||||
GainWay_Interact = 63 //房间内互动效果
|
||||
GainWayItemCollectExchange = 64 //集卡活动兑换
|
||||
GainWay_WeekCardAward = 65 //周卡奖励
|
||||
GainWay_PigrankTakeCoin = 66 //存钱罐领取耗费钻石
|
||||
GainWay_PigrankGainCoin = 67 //存钱罐打开获取金币
|
||||
GainWay_ItemMove = 68 //道具赠送
|
||||
GainWay_RoleUpgrade = 69 //角色升级
|
||||
GainWay_PetUpgrade = 70 //宠物升级
|
||||
GainWay_Game = 71 //游戏掉落
|
||||
GainWayItemCollectLogin = 73 //集卡活动登录
|
||||
GainWay_Collect = 74 //集卡活动
|
||||
GainWayItemPhoneScoreExchange = 75 //抽手机活动兑换
|
||||
GainWayItemTaskInvite = 78 //邀请任务
|
||||
GainWayItemTaskNewPlayer = 79 //新手任务
|
||||
GainWayItemTaskAchievement = 80 //成就任务
|
||||
GainWayItemTaskEveryDay = 81 //每日任务
|
||||
GainWayItemWeekActive = 82 //周活跃奖励
|
||||
GainWayContinueSign = 83 //累计签到
|
||||
GainWayBackend = 84 // 后台操作
|
||||
GainWayBuyCoin = 85 // 商城购买金币
|
||||
GainWayBuyItem = 86 // 商城购买道具
|
||||
GainWayBuyWeekCard = 87 // 商城购买周卡
|
||||
GainWayVipBuyCoin = 88 // vip商城购买金币
|
||||
GainWaySign7Con = 89 // 累计签到进阶奖励消耗
|
||||
GainWay_PigrankGainDiamond = 90 //存钱罐打开获取钻石
|
||||
GainWaySign7Add = 91 // 累计签到进阶奖励获得
|
||||
GainWayItemChange = 92 //背包内使用道具兑换话费
|
||||
GainWayPetSkillLevelUp = 93 //宠物技能升级
|
||||
GainWayPermitAward = 94 // 赛季通行证等级奖励
|
||||
GainWayItemPermitRank = 95 // 赛季通行证排行奖励
|
||||
GainWayPermitExchangeCost = 96 // 赛季通行证兑换消耗
|
||||
GainWayPermitExchangeGain = 97 // 赛季通行证兑换获得
|
||||
GainWayItemTaskPermit = 98 // 赛季通行证任务
|
||||
GainWayDiamondLottery = 99 //钻石抽奖
|
||||
GainWaySkinUnLock = 100 // 皮肤解锁消耗
|
||||
GainWaySkinUpGrade = 101 // 皮肤升级消耗
|
||||
GainWayItemFen = 102 // 道具分解消耗
|
||||
GainWayItemFenGain = 103 // 道具分解获得
|
||||
GainWayGuide = 104 //新手引导奖励
|
||||
GainWayVipGift9 = 105 //vip等级礼包
|
||||
GainWayRoomCost = 106 //房费消耗
|
||||
GainWayRoomGain = 107 //房卡场获得
|
||||
GainWayItemShop = 108 // 交易市场道具交易
|
||||
GainWayClawdollCostItem = 109 // 娃娃机上分扣道具
|
||||
GainWayItemShopChangeDoll = 110 // 商城兑换娃娃
|
||||
GainWayItemBagChangeDoll = 111 // 背包内兑换娃娃
|
||||
GainWayClawdollCatch = 112 // 娃娃机抓取到娃娃获取卡
|
||||
)
|
||||
|
||||
// 后台选择 金币变化类型 的充值 类型id号起始
|
||||
|
@ -355,30 +360,6 @@ const (
|
|||
PlayerLeaveReason_AutoState //托管状态踢出房间
|
||||
)
|
||||
|
||||
// 万分比
|
||||
const RATE_BASE_VALUE int32 = 10000
|
||||
|
||||
const (
|
||||
SceneState_Normal int = iota
|
||||
SceneState_Fishing //鱼潮
|
||||
)
|
||||
|
||||
const (
|
||||
PlayerType_Rob int32 = 0
|
||||
PlayerType_Undefine = 1
|
||||
PlayerType_Black = -1
|
||||
PlayerType_White = -2
|
||||
)
|
||||
|
||||
const (
|
||||
CoinPoolAIModel_Default int32 = iota //默认
|
||||
CoinPoolAIModel_Normal //正常模式
|
||||
CoinPoolAIModel_ShouFen //收分模式
|
||||
CoinPoolAIModel_ZheZhong //折中模式
|
||||
CoinPoolAIModel_TuFen //吐分
|
||||
CoinPoolAIModel_Max //
|
||||
)
|
||||
|
||||
const (
|
||||
RobotServerType int = 9
|
||||
RobotServerId = 901
|
||||
|
@ -461,12 +442,6 @@ const (
|
|||
MatchTrueMan_Priority = 1 //优先匹配真人
|
||||
)
|
||||
|
||||
const (
|
||||
SingleAdjustModeNormal = 0
|
||||
SingleAdjustModeWin = 1
|
||||
SingleAdjustModeLose = 2
|
||||
)
|
||||
|
||||
// 自动化标签(程序里产生的全部<0)
|
||||
const (
|
||||
AutomaticTag_QZNN_Smart int32 = -1
|
||||
|
@ -511,35 +486,6 @@ const (
|
|||
CodeTypeNo = 3 // 不使用验证码
|
||||
)
|
||||
|
||||
const (
|
||||
ActId_Share int = iota //0.微信分享
|
||||
ActId_OnlineReward //1.在线奖励
|
||||
ActId_UpgradeAccount //2.升级账号
|
||||
ActId_GoldTask //3.财神任务
|
||||
ActId_GoldCome //4.财神降临
|
||||
ActId_LuckyTurntable //5.转盘活动
|
||||
ActId_Yeb //6.余额宝
|
||||
ActId_Card //7.周卡月卡
|
||||
ActId_RebateTask //8.返利获取
|
||||
ActId_IOSINSTALLSTABLE //9.ios安装奖励
|
||||
ActId_VipLevelBonus //10.vip日周月等级奖励
|
||||
ActId_LoginRandCoin //11.登录红包
|
||||
ActId_OnlineRandCoin //12.红包雨
|
||||
ActId_MatchSwitch //13.比赛开关
|
||||
ActId_PromoterBind //14.手动绑定推广员
|
||||
ActId_Lottery //15.彩金池
|
||||
ActId_Task //16.活跃任务
|
||||
ActId_PROMOTER //17.全民推广
|
||||
ActId_Activity //18.活动界面
|
||||
ActId_NewYear //19.新年暗号红包活动
|
||||
ActId_Guess //20.猜灯谜活动
|
||||
ActId_Sign //21.七日签到
|
||||
ExchangeId_Alipay //22.兑换到支付宝
|
||||
ExchangeId_Bank //23.兑换到银行卡
|
||||
ExchangeId_Wechat //24.兑换到微信
|
||||
ActId_Max
|
||||
)
|
||||
|
||||
// 匹配模式
|
||||
const (
|
||||
MatchMode_Normal int32 = iota //普通匹配
|
||||
|
@ -612,6 +558,18 @@ const (
|
|||
ItemIDWeekScore = 100004 // 周活跃积分
|
||||
ItemIDGiftBox = 50001 // 碎片礼盒
|
||||
ItemIDCollectBox = 50002 // 集卡礼盒
|
||||
ItemIDLike = 100007 // 点赞
|
||||
ItemIDCoffee = 100008 // 咖啡
|
||||
ItemIDBucket = 100009 // 水桶
|
||||
ItemIDSlippers = 100010 // 拖鞋
|
||||
ItemIDPermit = 100011 // 赛季通行证积分
|
||||
ItemIDLong = 50013 // 龙币
|
||||
ItemIDPetSkill = 11001 //宠物技能升级道具
|
||||
ItemIDVCard = 30001 // v卡
|
||||
ItemIDJCard = 30002 // 金券
|
||||
ItemDiamondScore = 100012 //钻石积分
|
||||
ItemIDClawdoll = 40003 // 娃娃卡
|
||||
ItemDollCard = 40004 // 娃娃卡积分
|
||||
)
|
||||
|
||||
func ToItemId(id int32) int32 {
|
||||
|
@ -638,6 +596,11 @@ const (
|
|||
ItemTypeVipExp = 10 //VIP经验
|
||||
ItemTypeShopScore = 11 //积分
|
||||
ItemTypeInteract = 12 // 互动表情
|
||||
ItemTypeExpireTime = 15 // 时效类道具
|
||||
ItemTypeObjective = 16 // 目标类道具
|
||||
ItemTypeChange = 17 // 兑换话费
|
||||
ItemTypeSkinChip = 22 // 皮肤碎片
|
||||
ItemTypeDoll = 26 //娃娃兑换
|
||||
)
|
||||
|
||||
func GetKeyNoviceGameId(gameId int) string {
|
||||
|
@ -687,23 +650,37 @@ const (
|
|||
|
||||
// 活动,任务类型
|
||||
const (
|
||||
TaskTypeAdv = 1 // 看广告次数
|
||||
TaskTypeBuyCoin = 2 // 买金币次数
|
||||
TaskTypeLogin = 3 // 登录次数
|
||||
TaskTypeWinTimes = 4 // 赢游戏次数
|
||||
TaskTypePlayTimes = 5 // 玩游戏次数
|
||||
TaskTypeRankMatchTimes = 6 // 排位赛次数
|
||||
TaskTypePay = 7 // 充值金额
|
||||
TaskTypeWinOrLose = 8 // 游戏输赢金币数量
|
||||
TaskTypeTienlenCount = 9 // tienlen游戏场次
|
||||
TaskTypeBindInviter = 10 // 绑定邀请人数量
|
||||
TaskTypeWinCoin = 11 // 赢取金币数量
|
||||
TaskTypeTienlenWinTimes = 12 // tienlen游戏赢取次数
|
||||
TaskTypeInviteScore = 13 // 邀请积分
|
||||
TaskTypeActivityScore = 14 // 周活跃积分数量
|
||||
TaskTypeFirstLogin = 15 // 每日首次登录
|
||||
TaskTypeInviteNum = 16 // 邀请绑定数量
|
||||
TaskTypeTurnplate = 17 // 转盘抽奖次数
|
||||
TaskTypeAdv = 1 // 看广告次数
|
||||
TaskTypeBuyCoin = 2 // 买金币次数
|
||||
TaskTypeLogin = 3 // 登录次数
|
||||
TaskTypeWinTimes = 4 // 赢游戏次数
|
||||
TaskTypePlayTimes = 5 // 玩游戏次数
|
||||
TaskTypeRankMatchTimes = 6 // 排位赛次数
|
||||
TaskTypePay = 7 // 充值金额
|
||||
TaskTypeWinOrLose = 8 // 游戏输赢金币数量
|
||||
TaskTypeTienlenCount = 9 // tienlen游戏场次
|
||||
TaskTypeBindInviter = 10 // 绑定邀请人数量*
|
||||
TaskTypeWinCoin = 11 // 赢取金币数量
|
||||
TaskTypeTienlenWinTimes = 12 // tienlen游戏赢取次数
|
||||
TaskTypeInviteScore = 13 // 邀请积分*
|
||||
TaskTypeActivityScore = 14 // 周活跃积分数量
|
||||
TaskTypeFirstLogin = 15 // 每日首次登录
|
||||
TaskTypeInviteNum = 16 // 邀请绑定数量*
|
||||
TaskTypeTurnplate = 17 // 转盘抽奖次数
|
||||
TaskTypeInviteRecharge = 18 // 被邀请人充值金额*
|
||||
TaskTypeLoseCoin = 19 // 输的金币数量
|
||||
TaskType20 = 20 // 未使用
|
||||
TaskTypeOnlineTs = 21 // 在线时长,秒
|
||||
TaskTypeBuyPig = 22 // 购买任意存钱罐
|
||||
TaskTypeDaZhong = 23 // 大众场胜利
|
||||
TaskTypeInvitePlay = 24 // 邀请好友私人桌对局
|
||||
TaskTypeJoinMatch = 25 // 参与比赛场
|
||||
TaskTypeMatchRank10 = 26 // 比赛场前10名
|
||||
TaskTypeCostDiamond = 27 // 消耗钻石数量
|
||||
TaskTypeTienlenLoseCoin = 28 // Tienlen输的金币数量
|
||||
TaskTypeTienlenWinCoin = 29 // Tienlen赢取金币数量
|
||||
TaskTypeRankMatchWinTimes = 30 // 排位胜利次数
|
||||
TaskTypeBuyPermit = 31 // 购买典藏通行证
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -714,26 +691,26 @@ const (
|
|||
)
|
||||
|
||||
const (
|
||||
TaskActivityTypeEveryDay = 1 // 每日任务
|
||||
TaskActivityTypeWeek = 2 // 每周任务
|
||||
TaskActivityTypeNovice = 3 // 新手任务
|
||||
TaskActivityTypeInvite = 4 // 邀请任务
|
||||
TaskActivityTypeEveryDay = 1 // 每日任务
|
||||
TaskActivityTypeWeek = 2 // 每周任务
|
||||
TaskActivityTypeNovice = 3 // 新手任务
|
||||
TaskActivityTypeInvite = 4 // 邀请任务
|
||||
TaskActivityTypeAchieve = 5 // 成就任务
|
||||
TaskActivityTypePermitEveryDay = 6 // 赛季通行证每日任务
|
||||
TaskActivityTypePermit = 7 // 赛季通行证任务
|
||||
)
|
||||
|
||||
const HeadRange = 3 // 机器人头像id范围
|
||||
|
||||
const (
|
||||
InviteScoreTypeBind = 1 // 绑定邀请码
|
||||
InviteScoreTypeLogin = 2 // 每日登录
|
||||
InviteScoreTypePlayTimes = 3 // 每日参与任意游戏
|
||||
InviteScoreTypeRecharge = 4 // 充值
|
||||
InviteScoreTypeGameTimes = 5 // 每局游戏
|
||||
InviteScoreCheckWeek = -1 // 跨周
|
||||
InviteScoreTypeBind = 1 // 绑定邀请码
|
||||
InviteScoreTypePay = 2 // 充值
|
||||
InviteScoreTypeRecharge = 3 // 充值完成
|
||||
InviteScoreTypePayMe = 4 // 充值(给自己)
|
||||
InviteScoreTypeBindTel = 5 // 绑定手机号
|
||||
)
|
||||
|
||||
const TaskIDInvitePlayGame = 1000001
|
||||
const TaskIDInviteRecharge = 1000002
|
||||
const TaskIDInviteFirstLogin = 1000003
|
||||
|
||||
func InMatchChannel(ls []string, n string) bool {
|
||||
if n == "" || len(ls) == 0 {
|
||||
return false
|
||||
|
@ -782,3 +759,104 @@ const (
|
|||
)
|
||||
|
||||
var PetIDs = []int32{PetIDChicken}
|
||||
|
||||
const (
|
||||
ChannelSwitchExchange = 1 // 兑换商城开关
|
||||
ChannelSwitchDropItem = 2 // v卡掉落开关
|
||||
ChannelSwitchInvite = 3 // 邀请开关
|
||||
ChannelSwitchPermit = 4 // 典藏通行证开关
|
||||
ChannelSwitchDiamondLottery = 5 // 钻石抽奖开关
|
||||
)
|
||||
|
||||
// 特殊商品id
|
||||
const (
|
||||
ShopIdWeekCard = 970001 // 周卡
|
||||
ShopIdPermit = 990001 // 典藏通行证
|
||||
)
|
||||
|
||||
const PermitStartTsKey = "permit_start_ts"
|
||||
|
||||
const PermitAdd = 0.2 // 典藏通行证赛季积分多加,百分比
|
||||
|
||||
const (
|
||||
SkinGetAuto = 1
|
||||
SkinGetItem = 2
|
||||
SkinGetVip = 3
|
||||
)
|
||||
|
||||
const (
|
||||
SkillIdRankScore = 30002 // 排位积分加成百分比
|
||||
SkillIdVipTimes = 30003 // VIP赛每日免费报名次数
|
||||
SkillIdVipGift = 30004 // VIP每日礼包金币奖励提升百分比
|
||||
SkillIdTask = 30005 // 每日任务金币奖励提升百分比
|
||||
SkillIdDiamondLottery = 30007 // 每次钻石抽奖幸运值提升百分比
|
||||
)
|
||||
|
||||
var (
|
||||
SkinRandom = []int32{300001, 300002, 300007, 300006, 300005, 300004, 300003}
|
||||
SkinWeightMap = map[int32]int{
|
||||
300001: 20,
|
||||
300002: 40,
|
||||
300007: 40,
|
||||
300006: 50,
|
||||
300005: 40,
|
||||
300004: 60,
|
||||
300003: 70,
|
||||
}
|
||||
)
|
||||
|
||||
const (
|
||||
AttributeGuideStep = 1 // 引导步骤
|
||||
AttributeGuideSkip = 2 // 跳过引导
|
||||
AttributeGuideTest = 3 // 测试引导
|
||||
)
|
||||
|
||||
const (
|
||||
On = 1 // 开启
|
||||
Off = 2 // 关闭
|
||||
)
|
||||
|
||||
const (
|
||||
DataConfigAll = 0 // 全部配置
|
||||
DataConfigSprite = 1 // 精灵配置
|
||||
DataConfigMatchAudience = 2 // 赛事观战开关
|
||||
)
|
||||
|
||||
// 房间状态
|
||||
const (
|
||||
SceneStateWaite = 0 // 等待
|
||||
SceneStateStart = 1 // 开始
|
||||
SceneStateEnd = 2 // 结束
|
||||
)
|
||||
|
||||
const (
|
||||
// PlayerHistoryModel .
|
||||
PlayerHistoryModel = iota + 1
|
||||
|
||||
// BIGWIN_HISTORY_MODEL .
|
||||
BIGWIN_HISTORY_MODEL
|
||||
|
||||
// GameHistoryModel .
|
||||
GameHistoryModel
|
||||
)
|
||||
|
||||
type ListOpType int // 列表操作类型
|
||||
|
||||
const (
|
||||
ListModify ListOpType = 1 // 修改
|
||||
ListAdd ListOpType = 2 // 增加
|
||||
ListDel ListOpType = 3 // 减少
|
||||
ListFind ListOpType = 4 // 查询
|
||||
)
|
||||
|
||||
type NotifyType int // 通知类型
|
||||
|
||||
const (
|
||||
NotifyPrivateRoomList NotifyType = 1 // 私人房间列表
|
||||
)
|
||||
|
||||
// SCPlayerCoinChange 中数值类型
|
||||
const (
|
||||
PlayerChangeTypeCoin = 0 // 金币
|
||||
PlayerChangeTypeNum = 1 // 积分
|
||||
)
|
||||
|
|
|
@ -95,17 +95,9 @@ func GetIntegerBit(num int32, index int32) bool {
|
|||
}
|
||||
|
||||
// 校验身份证是否合法
|
||||
var IDReg, _ = regexp.Compile(`(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)`)
|
||||
var REGEXP_IPRule, _ = regexp.Compile(`^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$`)
|
||||
var REGEXP_IPRule, _ = regexp.Compile(`^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^::([\da-fA-F]{1,4}:){0,4}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){2}:([\da-fA-F]{1,4}:){0,2}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){4}:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$|^:((:[\da-fA-F]{1,4}){1,6}|:)$|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)$|^([\da-fA-F]{1,4}:){2}((:[\da-fA-F]{1,4}){1,4}|:)$|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)$|^([\da-fA-F]{1,4}:){4}((:[\da-fA-F]{1,4}){1,2}|:)$|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?$|^([\da-fA-F]{1,4}:){6}:$`)
|
||||
var ClubNameRule, _ = regexp.Compile("^[\u4e00-\u9fa5a-zA-Z-z0-9]+$")
|
||||
|
||||
func IsValidID(id string) bool {
|
||||
if IDReg != nil {
|
||||
return IDReg.Match([]byte(id))
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func IsValidIP(Ip string) bool {
|
||||
const UNKNOWIP = "0.0.0.0"
|
||||
if Ip == "" || Ip == UNKNOWIP {
|
||||
|
|
|
@ -19,6 +19,8 @@ func (hw HandlerWrapper) Process(s *netlib.Session, packetid int, data interface
|
|||
return hw(s, packetid, data, sid)
|
||||
}
|
||||
|
||||
// RegisterHandler 消息注册
|
||||
// Deprecated: use [common.Register] instead
|
||||
func RegisterHandler(packetId int, h Handler) {
|
||||
if _, ok := handlers[packetId]; ok {
|
||||
panic(fmt.Sprintf("repeate register handler: %v Handler type=%v", packetId, reflect.TypeOf(h)))
|
||||
|
@ -36,7 +38,11 @@ func GetHandler(packetId int) Handler {
|
|||
}
|
||||
|
||||
func Register(mainId int, msgType interface{}, h func(s *netlib.Session, packetId int, data interface{}, sid int64) error) {
|
||||
RegisterHandler(mainId, HandlerWrapper(h))
|
||||
if _, ok := handlers[mainId]; ok {
|
||||
panic(fmt.Sprintf("repeate register handler: %v Handler type=%v", mainId, reflect.TypeOf(h)))
|
||||
}
|
||||
handlers[mainId] = HandlerWrapper(h)
|
||||
|
||||
f := func() interface{} {
|
||||
tp := reflect.TypeOf(msgType)
|
||||
if tp.Kind() == reflect.Ptr {
|
||||
|
|
|
@ -5,13 +5,12 @@ import (
|
|||
"path/filepath"
|
||||
|
||||
"github.com/howeyc/fsnotify"
|
||||
|
||||
"mongo.games.com/goserver/core"
|
||||
"mongo.games.com/goserver/core/basic"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
)
|
||||
|
||||
var LastModifyConfig int64
|
||||
|
||||
func init() {
|
||||
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
|
||||
var err error
|
||||
|
@ -62,7 +61,7 @@ type loggerParamModifiedCommand struct {
|
|||
}
|
||||
|
||||
func (lmc *loggerParamModifiedCommand) Done(o *basic.Object) error {
|
||||
logger.Logger.Info("===reload ", lmc.fileName)
|
||||
logger.Logger.Info("reload logger.xml:", lmc.fileName)
|
||||
data, err := os.ReadFile(lmc.fileName)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -70,7 +69,7 @@ func (lmc *loggerParamModifiedCommand) Done(o *basic.Object) error {
|
|||
if len(data) != 0 {
|
||||
err = logger.Reload(lmc.fileName)
|
||||
if err != nil {
|
||||
logger.Logger.Warn("===reload ", lmc.fileName, err)
|
||||
logger.Logger.Warnf("reload logger.xml %v err: %v", lmc.fileName, err)
|
||||
}
|
||||
}
|
||||
return err
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
rawproto "google.golang.org/protobuf/proto"
|
||||
"mongo.games.com/game/proto"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
"mongo.games.com/goserver/core/netlib"
|
||||
"mongo.games.com/goserver/srvlib"
|
||||
"mongo.games.com/goserver/srvlib/protocol"
|
||||
)
|
||||
|
||||
func RegisterMulticastHandler() {
|
||||
netlib.Register(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), &protocol.SSPacketMulticast{}, MulticastHandler)
|
||||
}
|
||||
|
||||
func MulticastHandler(s *netlib.Session, packetId int, data interface{}) error {
|
||||
if mp, ok := data.(*protocol.SSPacketMulticast); ok {
|
||||
pd := mp.GetData()
|
||||
sis := mp.GetSessions()
|
||||
for _, si := range sis {
|
||||
ss := si.GetMcss()
|
||||
if ss != nil {
|
||||
ns := srvlib.ServerSessionMgrSington.GetSession(int(ss.GetSArea()), int(ss.GetSType()), int(ss.GetSId()))
|
||||
if ns != nil {
|
||||
ns.Send(int(mp.GetPacketId()), pd /*, s.GetSessionConfig().IsInnerLink*/)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateMulticastPacket(packetId int, data interface{}, sis ...*protocol.MCSessionUnion) (rawproto.Message, error) {
|
||||
pack := &protocol.SSPacketMulticast{
|
||||
Sessions: sis,
|
||||
PacketId: proto.Int(packetId),
|
||||
}
|
||||
if byteData, ok := data.([]byte); ok {
|
||||
pack.Data = byteData
|
||||
} else {
|
||||
byteData, err := netlib.MarshalPacket(packetId, data)
|
||||
if err == nil {
|
||||
pack.Data = byteData
|
||||
} else {
|
||||
logger.Logger.Errorf("CreateMulticastPacket err:%v", err)
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return pack, nil
|
||||
}
|
|
@ -40,6 +40,18 @@ func CopySliceIntToInt32(s []int) []int32 {
|
|||
return nil
|
||||
}
|
||||
|
||||
func CopySliceInt64ToInt32(s []int64) []int32 {
|
||||
n := len(s)
|
||||
if n != 0 {
|
||||
temp := make([]int32, n)
|
||||
for i := 0; i < n; i++ {
|
||||
temp[i] = int32(s[i])
|
||||
}
|
||||
return temp
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func CopySliceInt32ToInt(s []int32) []int {
|
||||
n := len(s)
|
||||
if n != 0 {
|
||||
|
@ -440,6 +452,22 @@ func SliceValueWeight(sl []int, index int) float64 {
|
|||
return float64(value) / float64(totle)
|
||||
}
|
||||
|
||||
func GetMapKeys[K comparable, V any](data map[K]V) []K {
|
||||
var ret []K
|
||||
for k := range data {
|
||||
ret = append(ret, k)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func GetMapValues[K comparable, V any](data map[K]V) []V {
|
||||
var ret []V
|
||||
for _, v := range data {
|
||||
ret = append(ret, v)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
type Int32Slice []int32
|
||||
|
||||
func (p Int32Slice) Len() int { return len(p) }
|
||||
|
|
|
@ -76,17 +76,15 @@ func InSameWeek(tNow, tPre time.Time) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
preYear, preWeek := tPre.ISOWeek()
|
||||
nowYear, nowWeek := tNow.ISOWeek()
|
||||
if preYear == nowYear && preWeek == nowWeek {
|
||||
if GetWeekStartTs(tNow.Unix()) == GetWeekStartTs(tPre.Unix()) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func TsInSameWeek(tsNow, tsPre int64) bool {
|
||||
tNow := time.Unix(tsNow, 0)
|
||||
tPre := time.Unix(tsPre, 0)
|
||||
tNow := time.Unix(tsNow, 0).Local()
|
||||
tPre := time.Unix(tsPre, 0).Local()
|
||||
return InSameWeek(tNow, tPre)
|
||||
}
|
||||
|
||||
|
@ -143,3 +141,44 @@ func InTimeRange(beginHour, beginMinute, endHour, endMinute, checkHour, checkMin
|
|||
checkTime := checkHour*100 + checkMinute
|
||||
return beginTime <= checkTime && checkTime <= endTime
|
||||
}
|
||||
|
||||
// GetWeekStartTs 获取本周开始的时间戳,周一为周的开始
|
||||
func GetWeekStartTs(ts int64) int64 {
|
||||
now := time.Unix(ts, 0).Local()
|
||||
year, month, day := now.Date()
|
||||
today := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
|
||||
n := today.Weekday()
|
||||
if today.Weekday() == 0 {
|
||||
n = 7
|
||||
}
|
||||
st := today.AddDate(0, 0, -int(n-1)).Unix()
|
||||
return st
|
||||
}
|
||||
|
||||
func GetDayStartTs(ts int64) int64 {
|
||||
now := time.Unix(ts, 0).Local()
|
||||
year, month, day := now.Date()
|
||||
today := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
|
||||
return today.Unix()
|
||||
}
|
||||
|
||||
func GetDayNextStartTs(ts int64) int64 {
|
||||
return GetDayStartTs(ts) + 86400
|
||||
}
|
||||
|
||||
func GetMonthTimestamp() []int64 {
|
||||
now := time.Now().Local()
|
||||
year, month, _ := now.Date()
|
||||
// 本月起始日期
|
||||
st := time.Date(year, month, 1, 0, 0, 0, 0, time.Local).Unix()
|
||||
// 计算下个月的年和月
|
||||
if month == time.December {
|
||||
year = year + 1
|
||||
month = time.January
|
||||
} else {
|
||||
month = month + 1
|
||||
}
|
||||
// 构建下个月的第一天的时间
|
||||
et := time.Date(year, month, 1, 0, 0, 0, 0, now.Location()).Unix()
|
||||
return []int64{st, et}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
|
||||
ъУ†
|
||||
ъФ†
|
||||
ъХ†
|
||||
ъЦ†
|
||||
ъЧ†
|
||||
ИШ†
|
||||
ИЩ†
|
||||
ИЪ†
|
||||
ИЫ†
|
||||
иУ†
|
||||
иФ†
|
||||
иХ†
|
||||
иЦ†
|
||||
ЮЧ†
|
||||
2Ш†
|
||||
2Щ†
|
||||
2Ъ†
|
||||
2Ы†
|
||||
|
||||
|
||||
Ь†
|
||||
2ЎЌђN
|
||||
¬ЎЌР†
|
||||
2ЎЌ Ќ
|
||||
Ь†
|
||||
фЎЌђN
|
||||
dЎЌР†
|
||||
ЎЌ Ќ
|
|
@ -2,91 +2,91 @@
|
|||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"Rate": 250,
|
||||
"Rate": 1000,
|
||||
"ItemID": {
|
||||
"50003": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"Rate": 250,
|
||||
"Rate": 1000,
|
||||
"ItemID": {
|
||||
"50004": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"Rate": 250,
|
||||
"Rate": 1000,
|
||||
"ItemID": {
|
||||
"50005": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
"Rate": 250,
|
||||
"Rate": 1000,
|
||||
"ItemID": {
|
||||
"50006": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
"Rate": 250,
|
||||
"Rate": 350,
|
||||
"ItemID": {
|
||||
"50007": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 6,
|
||||
"Rate": 200,
|
||||
"Rate": 50,
|
||||
"ItemID": {
|
||||
"50008": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 7,
|
||||
"Rate": 200,
|
||||
"Rate": 50,
|
||||
"ItemID": {
|
||||
"50009": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 8,
|
||||
"Rate": 200,
|
||||
"Rate": 50,
|
||||
"ItemID": {
|
||||
"50010": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 9,
|
||||
"Rate": 200,
|
||||
"Rate": 50,
|
||||
"ItemID": {
|
||||
"50011": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 10,
|
||||
"Rate": 10,
|
||||
"Rate": 1,
|
||||
"ItemID": {
|
||||
"50012": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 11,
|
||||
"Rate": 50,
|
||||
"Rate": 500,
|
||||
"ItemID": {
|
||||
"100001": 10000
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 12,
|
||||
"Rate": 300,
|
||||
"Rate": 100,
|
||||
"ItemID": {
|
||||
"100001": 50000
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 13,
|
||||
"Rate": 50,
|
||||
"Rate": 20,
|
||||
"ItemID": {
|
||||
"100001": 100000
|
||||
}
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,17 @@
|
|||
|
||||
红米手机 æÑ(
|
||||
金å¸<C3A5> ¡<>( Â0Þ
|
||||
酷帕碎片 ¡œ(0ï
|
||||
积分 ¬<>(20Þ
|
||||
!2å…ƒè¯<C3A8>费直兑券 ¹ê(0,
|
||||
金å¸<C3A5> ¡<>(€â0X
|
||||
锿³•师碎片 £œ(0°
|
||||
哈奴曼啤酒 ©º(0
|
||||
积分 ¬<>(d0ï
|
||||
|
||||
è<>¶å¥³ç¢Žç‰‡ ¢œ(0Þ
|
||||
钻石 ¢<>(0Þ
|
||||
!5å…ƒè¯<C3A8>费直兑券 ºê(0
|
||||
钻石 ¢<>(0¸
|
||||
积分 ¬<>(È0¸
|
||||
1å…ƒè¯<C3A8>费直兑券 ¸ê(
|
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"Type": 1,
|
||||
"Name": "红米手机",
|
||||
"Item_Id": 76006,
|
||||
"Grade": 1
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"Type": 1,
|
||||
"Name": "金币",
|
||||
"Item_Id": 100001,
|
||||
"Grade": 500000,
|
||||
"Oddrate": 1758
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"Type": 1,
|
||||
"Name": "酷帕碎片",
|
||||
"Item_Id": 20001,
|
||||
"Grade": 1,
|
||||
"Oddrate": 879
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
"Type": 1,
|
||||
"Name": "积分",
|
||||
"Item_Id": 100012,
|
||||
"Grade": 50,
|
||||
"Oddrate": 1758
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
"Type": 1,
|
||||
"Name": "2元话费直兑券",
|
||||
"Item_Id": 30009,
|
||||
"Grade": 1,
|
||||
"Oddrate": 44
|
||||
},
|
||||
{
|
||||
"Id": 6,
|
||||
"Type": 1,
|
||||
"Name": "金币",
|
||||
"Item_Id": 100001,
|
||||
"Grade": 10000000,
|
||||
"Oddrate": 88
|
||||
},
|
||||
{
|
||||
"Id": 7,
|
||||
"Type": 1,
|
||||
"Name": "魔法师碎片",
|
||||
"Item_Id": 20003,
|
||||
"Grade": 1,
|
||||
"Oddrate": 176
|
||||
},
|
||||
{
|
||||
"Id": 8,
|
||||
"Type": 1,
|
||||
"Name": "哈奴曼啤酒",
|
||||
"Item_Id": 73001,
|
||||
"Grade": 1,
|
||||
"Oddrate": 5
|
||||
},
|
||||
{
|
||||
"Id": 9,
|
||||
"Type": 1,
|
||||
"Name": "积分",
|
||||
"Item_Id": 100012,
|
||||
"Grade": 100,
|
||||
"Oddrate": 879
|
||||
},
|
||||
{
|
||||
"Id": 10,
|
||||
"Type": 1,
|
||||
"Name": "蝶女碎片",
|
||||
"Item_Id": 20002,
|
||||
"Grade": 1,
|
||||
"Oddrate": 1758
|
||||
},
|
||||
{
|
||||
"Id": 11,
|
||||
"Type": 1,
|
||||
"Name": "钻石",
|
||||
"Item_Id": 100002,
|
||||
"Grade": 5,
|
||||
"Oddrate": 1758
|
||||
},
|
||||
{
|
||||
"Id": 12,
|
||||
"Type": 1,
|
||||
"Name": "5元话费直兑券",
|
||||
"Item_Id": 30010,
|
||||
"Grade": 1,
|
||||
"Oddrate": 17
|
||||
},
|
||||
{
|
||||
"Id": 13,
|
||||
"Type": 1,
|
||||
"Name": "钻石",
|
||||
"Item_Id": 100002,
|
||||
"Grade": 20,
|
||||
"Oddrate": 440
|
||||
},
|
||||
{
|
||||
"Id": 14,
|
||||
"Type": 1,
|
||||
"Name": "积分",
|
||||
"Item_Id": 100012,
|
||||
"Grade": 200,
|
||||
"Oddrate": 440
|
||||
},
|
||||
{
|
||||
"Id": 15,
|
||||
"Type": 2,
|
||||
"Name": "1元话费直兑券",
|
||||
"Item_Id": 30008,
|
||||
"Grade": 1
|
||||
}
|
||||
]
|
||||
}
|
|
@ -76,4 +76,35 @@
|
|||
9ѓр<D193><18>№ ПЕџџџџ <20><>пРJ(<28>ЈжЙ0d8 @<40>џџџџџџџџHрљџџџџџџџP
|
||||
:єр<D194><18>АЄМ<D084>§џџџ <20>алУє(<28>ШЏ %0d8 @<40>џџџџџџџџHрљџџџџџџџP
|
||||
;ѕр<D195><18>№ЕЙёџџџ <20><>ЪвЦ(<28>шэЁК0d8 @<40>џџџџџџџџHрљџџџџџџџP
|
||||
;öà–€À×µåÅÿÿÿ €À¨Êš:(€ ·‡é0d8 @œÿÿÿÿÿÿÿÿHàùÿÿÿÿÿÿÿP
|
||||
;öà–€À×µåÅÿÿÿ €À¨Êš:(€ ·‡é0d8 @œÿÿÿÿÿÿÿÿHàùÿÿÿÿÿÿÿP
|
||||
ÑÛ·€ŽÎ€áë €„¯_XÈ`À¤ÿ
|
||||
ÒÛ·€Œ<E282AC>ž€Êµî €¨Ö¹XÈ`€íøµ
|
||||
ÓÛ·€¼Á–€ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
|
||||
ÔÛ·€ø‚€ä—Ð €<>ßÀJXÈ`€Â¸›
|
||||
᩸€ŽÎ€áë €„¯_XÈ`À¤ÿ
|
||||
⩸€Œ<E282AC>ž€Êµî €¨Ö¹XÈ`€íøµ
|
||||
㩸€¼Á–€ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
|
||||
䩸€ø‚€ä—Ð €<>ßÀJXÈ`€Â¸›
|
||||
ñ÷¸€ŽÎ€áë €„¯_XÈ`À¤ÿ
|
||||
ò÷¸€Œ<E282AC>ž€Êµî €¨Ö¹XÈ`€íøµ
|
||||
ó÷¸€¼Á–€ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
|
||||
ô÷¸€ø‚€ä—Ð €<>ßÀJXÈ`€Â¸›
|
||||
<08>ƹ€ŽÎ€áë €¨Ö¹XÈ`À¤ÿ
|
||||
‚ƹ€¼Á–€ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
|
||||
ƒÆ¹€ø‚€ä—Ð €<>ßÀJXÈ`€Â¸›
|
||||
‘”º€ŽÎ€áë €¨Ö¹XÈ`À¤ÿ
|
||||
’”º€¼Á–€ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
|
||||
“”º€ø‚€ä—Ð €<>ßÀJXÈ`€Â¸›
|
||||
¡âº€›îÀ–± €ÚÄ XÈ` ÝŒ
|
||||
¢âº€ŽÎ€áë €„¯_XÈ`À¤ÿ
|
||||
£âº€Æ†<C386>€åšw €”ëÜXÈ`À¶üš
|
||||
¤âº€Œ<E282AC>ž€Êµî €¨Ö¹XÈ`€íøµ
|
||||
±°»€›îÀ–± €ÚÄ XÈ` ÝŒ
|
||||
²°»€ŽÎ€áë €„¯_XÈ`À¤ÿ
|
||||
³°»€Æ†<C386>€åšw €”ëÜXÈ`À¶üš
|
||||
´°»€Œ<E282AC>ž€Êµî €¨Ö¹XÈ`€íøµ
|
||||
Áþ»€›îÀ–± €ÚÄ XÈ` ÝŒ
|
||||
Ñ̼€ŽÎ€áë €„¯_XÈ`À¤ÿ
|
||||
áš½€Æ†<C386>€åšw €”ëÜXÈ`À¶üš
|
||||
ñè½€Œ<E282AC>ž€Êµî €¨Ö¹XÈ`€íøµ
|
||||
<08>·¾€Œ<E282AC>ž€Êµî €¨Ö¹XÈ`€íøµ
|
|
@ -857,6 +857,254 @@
|
|||
"LowerOdds": -100,
|
||||
"LowerOddsMax": -800,
|
||||
"ProfitRate": 20
|
||||
},
|
||||
{
|
||||
"Id": 3010001,
|
||||
"InitValue": 60000000,
|
||||
"LowerLimit": 50000000,
|
||||
"UpperLimit": 200000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 65000000
|
||||
},
|
||||
{
|
||||
"Id": 3010002,
|
||||
"InitValue": 600000000,
|
||||
"LowerLimit": 500000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 650000000
|
||||
},
|
||||
{
|
||||
"Id": 3010003,
|
||||
"InitValue": 3000000000,
|
||||
"LowerLimit": 2500000000,
|
||||
"UpperLimit": 10000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 3250000000
|
||||
},
|
||||
{
|
||||
"Id": 3010004,
|
||||
"InitValue": 6000000000,
|
||||
"LowerLimit": 5000000000,
|
||||
"UpperLimit": 20000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 6500000000
|
||||
},
|
||||
{
|
||||
"Id": 3020001,
|
||||
"InitValue": 60000000,
|
||||
"LowerLimit": 50000000,
|
||||
"UpperLimit": 200000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 65000000
|
||||
},
|
||||
{
|
||||
"Id": 3020002,
|
||||
"InitValue": 600000000,
|
||||
"LowerLimit": 500000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 650000000
|
||||
},
|
||||
{
|
||||
"Id": 3020003,
|
||||
"InitValue": 3000000000,
|
||||
"LowerLimit": 2500000000,
|
||||
"UpperLimit": 10000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 3250000000
|
||||
},
|
||||
{
|
||||
"Id": 3020004,
|
||||
"InitValue": 6000000000,
|
||||
"LowerLimit": 5000000000,
|
||||
"UpperLimit": 20000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 6500000000
|
||||
},
|
||||
{
|
||||
"Id": 3030001,
|
||||
"InitValue": 60000000,
|
||||
"LowerLimit": 50000000,
|
||||
"UpperLimit": 200000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 65000000
|
||||
},
|
||||
{
|
||||
"Id": 3030002,
|
||||
"InitValue": 600000000,
|
||||
"LowerLimit": 500000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 650000000
|
||||
},
|
||||
{
|
||||
"Id": 3030003,
|
||||
"InitValue": 3000000000,
|
||||
"LowerLimit": 2500000000,
|
||||
"UpperLimit": 10000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 3250000000
|
||||
},
|
||||
{
|
||||
"Id": 3030004,
|
||||
"InitValue": 6000000000,
|
||||
"LowerLimit": 5000000000,
|
||||
"UpperLimit": 20000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 6500000000
|
||||
},
|
||||
{
|
||||
"Id": 3040001,
|
||||
"InitValue": 60000000,
|
||||
"LowerLimit": 50000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 65000000
|
||||
},
|
||||
{
|
||||
"Id": 3040002,
|
||||
"InitValue": 3000000000,
|
||||
"LowerLimit": 2500000000,
|
||||
"UpperLimit": 10000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 3250000000
|
||||
},
|
||||
{
|
||||
"Id": 3040003,
|
||||
"InitValue": 6000000000,
|
||||
"LowerLimit": 5000000000,
|
||||
"UpperLimit": 20000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 6500000000
|
||||
},
|
||||
{
|
||||
"Id": 3050001,
|
||||
"InitValue": 60000000,
|
||||
"LowerLimit": 50000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 65000000
|
||||
},
|
||||
{
|
||||
"Id": 3050002,
|
||||
"InitValue": 3000000000,
|
||||
"LowerLimit": 2500000000,
|
||||
"UpperLimit": 10000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 3250000000
|
||||
},
|
||||
{
|
||||
"Id": 3050003,
|
||||
"InitValue": 6000000000,
|
||||
"LowerLimit": 5000000000,
|
||||
"UpperLimit": 20000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 6500000000
|
||||
},
|
||||
{
|
||||
"Id": 3060001,
|
||||
"InitValue": 6000000,
|
||||
"LowerLimit": 5000000,
|
||||
"UpperLimit": 20000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 6500000
|
||||
},
|
||||
{
|
||||
"Id": 3060002,
|
||||
"InitValue": 60000000,
|
||||
"LowerLimit": 50000000,
|
||||
"UpperLimit": 200000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 65000000
|
||||
},
|
||||
{
|
||||
"Id": 3060003,
|
||||
"InitValue": 300000000,
|
||||
"LowerLimit": 250000000,
|
||||
"UpperLimit": 1000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 325000000
|
||||
},
|
||||
{
|
||||
"Id": 3060004,
|
||||
"InitValue": 600000000,
|
||||
"LowerLimit": 500000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 650000000
|
||||
},
|
||||
{
|
||||
"Id": 3070001,
|
||||
"InitValue": 6000000,
|
||||
"LowerLimit": 5000000,
|
||||
"UpperLimit": 20000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 6500000
|
||||
},
|
||||
{
|
||||
"Id": 3070002,
|
||||
"InitValue": 60000000,
|
||||
"LowerLimit": 50000000,
|
||||
"UpperLimit": 200000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 65000000
|
||||
},
|
||||
{
|
||||
"Id": 3070003,
|
||||
"InitValue": 300000000,
|
||||
"LowerLimit": 250000000,
|
||||
"UpperLimit": 1000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 325000000
|
||||
},
|
||||
{
|
||||
"Id": 3070004,
|
||||
"InitValue": 600000000,
|
||||
"LowerLimit": 500000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 650000000
|
||||
},
|
||||
{
|
||||
"Id": 3080001,
|
||||
"InitValue": 6000000,
|
||||
"LowerLimit": 5000000,
|
||||
"UpperLimit": 20000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 6500000
|
||||
},
|
||||
{
|
||||
"Id": 3090001,
|
||||
"InitValue": 60000000,
|
||||
"LowerLimit": 50000000,
|
||||
"UpperLimit": 200000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 65000000
|
||||
},
|
||||
{
|
||||
"Id": 3100001,
|
||||
"InitValue": 300000000,
|
||||
"LowerLimit": 250000000,
|
||||
"UpperLimit": 1000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 325000000
|
||||
},
|
||||
{
|
||||
"Id": 3110001,
|
||||
"InitValue": 600000000,
|
||||
"LowerLimit": 500000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 650000000
|
||||
},
|
||||
{
|
||||
"Id": 3120001,
|
||||
"InitValue": 600000000,
|
||||
"LowerLimit": 500000000,
|
||||
"UpperLimit": 2000000000,
|
||||
"CtrlRate": 200,
|
||||
"InitNovicValue": 650000000
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -10,43 +10,43 @@
|
|||
"Id": 20800,
|
||||
"Name": "Tienlen自由桌娱乐场-WTA",
|
||||
"GameId": 208,
|
||||
"GameDif": "208"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 20900,
|
||||
"Name": "Tienlen自由桌经典场(打到底)",
|
||||
"GameId": 209,
|
||||
"GameDif": "209"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 21000,
|
||||
"Name": "Tienlen自由桌娱乐场(打到底)",
|
||||
"GameId": 210,
|
||||
"GameDif": "210"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 24000,
|
||||
"Name": "Tienlen经典场-WTA",
|
||||
"GameId": 240,
|
||||
"GameDif": "240"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 24400,
|
||||
"Name": "Tienlen经典场(打到底)",
|
||||
"GameId": 244,
|
||||
"GameDif": "244"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 24100,
|
||||
"Name": "Tienlen娱乐场-WTA",
|
||||
"GameId": 241,
|
||||
"GameDif": "241"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 24500,
|
||||
"Name": "tienlen娱乐版(打到底)",
|
||||
"GameId": 245,
|
||||
"GameDif": "245"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 40100,
|
||||
|
@ -54,18 +54,6 @@
|
|||
"GameId": 401,
|
||||
"GameDif": "401"
|
||||
},
|
||||
{
|
||||
"Id": 30600,
|
||||
"Name": "水果拉霸",
|
||||
"GameId": 306,
|
||||
"GameDif": "306"
|
||||
},
|
||||
{
|
||||
"Id": 30400,
|
||||
"Name": "冰河世纪",
|
||||
"GameId": 304,
|
||||
"GameDif": "304"
|
||||
},
|
||||
{
|
||||
"Id": 52100,
|
||||
"Name": "ChessCambodian",
|
||||
|
@ -76,14 +64,14 @@
|
|||
"Id": 52200,
|
||||
"Name": "ChessCambodianRobot",
|
||||
"GameId": 522,
|
||||
"GameDif": "522"
|
||||
"GameDif": "521"
|
||||
},
|
||||
{
|
||||
"Id": 21100,
|
||||
"Name": "十三张(四人场)",
|
||||
"GameId": 211,
|
||||
"Params": [
|
||||
0,
|
||||
4,
|
||||
0,
|
||||
30,
|
||||
50,
|
||||
|
@ -96,20 +84,20 @@
|
|||
"Name": "十三张(八人场)",
|
||||
"GameId": 212,
|
||||
"Params": [
|
||||
1,
|
||||
8,
|
||||
0,
|
||||
30,
|
||||
50,
|
||||
0
|
||||
],
|
||||
"GameDif": "212"
|
||||
"GameDif": "211"
|
||||
},
|
||||
{
|
||||
"Id": 21300,
|
||||
"Name": "十三张(自由场经典场)",
|
||||
"GameId": 213,
|
||||
"Params": [
|
||||
1,
|
||||
8,
|
||||
0,
|
||||
30,
|
||||
50,
|
||||
|
@ -122,7 +110,7 @@
|
|||
"Name": "十三张(自由场癞子场)",
|
||||
"GameId": 214,
|
||||
"Params": [
|
||||
1,
|
||||
8,
|
||||
0,
|
||||
30,
|
||||
50,
|
||||
|
@ -134,25 +122,49 @@
|
|||
"Id": 24200,
|
||||
"Name": "Tienlen排位赛经典场-WTA",
|
||||
"GameId": 242,
|
||||
"GameDif": "242"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 24600,
|
||||
"Name": "Tienlen排位赛经典场(打到底)",
|
||||
"GameId": 246,
|
||||
"GameDif": "246"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 24300,
|
||||
"Name": "Tienlen排位赛娱乐场-WTA",
|
||||
"GameId": 243,
|
||||
"GameDif": "243"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 24700,
|
||||
"Name": "tienlen排位赛娱乐(打到底)",
|
||||
"GameId": 247,
|
||||
"GameDif": "247"
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 21500,
|
||||
"Name": "tienlen房卡经典",
|
||||
"GameId": 215,
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 21600,
|
||||
"Name": "tienlen房卡娱乐",
|
||||
"GameId": 216,
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 21700,
|
||||
"Name": "tienlen房卡经典打到底",
|
||||
"GameId": 217,
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 21800,
|
||||
"Name": "tienlen房卡娱乐打到底",
|
||||
"GameId": 218,
|
||||
"GameDif": "207"
|
||||
},
|
||||
{
|
||||
"Id": 60600,
|
||||
|
@ -165,6 +177,84 @@
|
|||
"Name": "小火箭",
|
||||
"GameId": 607,
|
||||
"GameDif": "607"
|
||||
},
|
||||
{
|
||||
"Id": 30100,
|
||||
"Name": "财运神",
|
||||
"GameId": 301,
|
||||
"GameDif": "301"
|
||||
},
|
||||
{
|
||||
"Id": 30200,
|
||||
"Name": "复仇者联盟",
|
||||
"GameId": 302,
|
||||
"GameDif": "302"
|
||||
},
|
||||
{
|
||||
"Id": 30300,
|
||||
"Name": "复活节岛",
|
||||
"GameId": 303,
|
||||
"GameDif": "303"
|
||||
},
|
||||
{
|
||||
"Id": 30400,
|
||||
"Name": "冰河世纪",
|
||||
"GameId": 304,
|
||||
"GameDif": "304"
|
||||
},
|
||||
{
|
||||
"Id": 30500,
|
||||
"Name": "百战成神",
|
||||
"GameId": 305,
|
||||
"GameDif": "305"
|
||||
},
|
||||
{
|
||||
"Id": 30600,
|
||||
"Name": "水果拉霸",
|
||||
"GameId": 306,
|
||||
"GameDif": "306"
|
||||
},
|
||||
{
|
||||
"Id": 30700,
|
||||
"Name": "多财多福",
|
||||
"GameId": 307,
|
||||
"GameDif": "307"
|
||||
},
|
||||
{
|
||||
"Id": 30800,
|
||||
"Name": "FortuneTiger",
|
||||
"GameId": 308,
|
||||
"GameDif": "308"
|
||||
},
|
||||
{
|
||||
"Id": 30900,
|
||||
"Name": "FortuneDragon",
|
||||
"GameId": 309,
|
||||
"GameDif": "309"
|
||||
},
|
||||
{
|
||||
"Id": 31000,
|
||||
"Name": "FortuneRabbit",
|
||||
"GameId": 310,
|
||||
"GameDif": "310"
|
||||
},
|
||||
{
|
||||
"Id": 31100,
|
||||
"Name": "FortuneOx",
|
||||
"GameId": 311,
|
||||
"GameDif": "311"
|
||||
},
|
||||
{
|
||||
"Id": 31200,
|
||||
"Name": "FortuneMouse",
|
||||
"GameId": 312,
|
||||
"GameDif": "312"
|
||||
},
|
||||
{
|
||||
"Id": 60800,
|
||||
"Name": "娃娃机",
|
||||
"GameId": 608,
|
||||
"GameDif": "608"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,210 +1,55 @@
|
|||
|
||||
Яа(Бъ:
|
||||
Я<18>'(Бъ:
|
||||
Я<18>N(Бъ:
|
||||
Я<18>u(Бъ:
|
||||
Я <>(Бъ:
|
||||
ЯЈУ(Бъ:
|
||||
ЯАъ(Бъ:
|
||||
ЯИ<>(Бъ:
|
||||
ЯРИ(Бъ:
|
||||
Ð ±ê(2
|
||||
ˆ' ±ê(12
|
||||
<10>N ±ê(c2
|
||||
˜u ±ê(•2
|
||||
œ ±ê(Æ2
|
||||
¨Ã ±ê(÷2
|
||||
°ê ±ê(©2
|
||||
¸‘ ±ê(Û2
|
||||
À¸ ±ê(Œ2
|
||||
|
||||
ЯШп(Бъ:
|
||||
Яа<>(Бъ:
|
||||
Яи(Бъ:
|
||||
Ярд(Бъ:
|
||||
Яшћ(Бъ:
|
||||
Я№Ђ(Бъ:
|
||||
ЯјЩ(Бъ:
|
||||
Я<18>ё(Бъ:
|
||||
Я<18><>(Бъ:
|
||||
Я<18>П(Бъ:
|
||||
Я<18>ц(Бъ:
|
||||
Я <>(Бъ:
|
||||
Я№<> (Бъ:
|
||||
ЯР<>(Бъ:
|
||||
Я<18>Ё(Бъ:
|
||||
ЯрЇ(Бъ:
|
||||
ЯАЎ(Бъ:
|
||||
Я<18>Е(Бъ:
|
||||
ЯаЛ(Бъ:
|
||||
Я Т(Бъ:
|
||||
Я№Ш!(Бъ:
|
||||
ЯРЯ$(Бъ:
|
||||
Я<18>ж'(Бъ:
|
||||
!Ярм*(Бъ:
|
||||
"ЯАу-(Бъ:
|
||||
#Я<18>ъ0(Бъ:
|
||||
$Яа№3(Бъ:
|
||||
%Я ї6(Бъ:
|
||||
&Я№§9(Бъ:
|
||||
'ЯР<>=(Бъ:
|
||||
(Я<18><>z(Бъ:
|
||||
|
||||
)ЯР<>Б(Бъ:
|
||||
|
||||
*Я<18>т(Бъ:2
|
||||
+ЯРУ<D0A0>(Бъ:2K
|
||||
,Я<18>кФ (Бъ:Kd
|
||||
-ЯР№ѕ(Бъ:d}
|
||||
.Я<18><>Ї(Бъ:}<7D>
|
||||
/ЯР<>и(Бъ:<04>Џ
|
||||
0Я<18>Д<EFBFBD>(Бъ:ЏШ
|
||||
1ЯРЪК(Бъ:Шс
|
||||
2Я<18>сы(Бъ:сњ
|
||||
3аа(Бъ:
|
||||
4а<18>'(Бъ:
|
||||
5а<18>N(Бъ:
|
||||
6а<18>u(Бъ:
|
||||
7а <>(Бъ:
|
||||
8аЈУ(Бъ:
|
||||
9аАъ(Бъ:
|
||||
:аИ<>(Бъ:
|
||||
;аРИ(Бъ:
|
||||
<аШп(Бъ:
|
||||
=аа<>(Бъ:
|
||||
>аи(Бъ:
|
||||
?ард(Бъ:
|
||||
@ашћ(Бъ:
|
||||
Aа№Ђ(Бъ:
|
||||
BајЩ(Бъ:
|
||||
Cа<18>ё(Бъ:
|
||||
Dа<18><>(Бъ:
|
||||
Eа<18>П(Бъ:
|
||||
Fа<18>ц(Бъ:
|
||||
Gа <>(Бъ:
|
||||
Hа№<> (Бъ:
|
||||
IаР<>(Бъ:
|
||||
Jа<18>Ё(Бъ:
|
||||
KарЇ(Бъ:
|
||||
LаАЎ(Бъ:
|
||||
Mа<18>Е(Бъ:
|
||||
NааЛ(Бъ:
|
||||
Oа Т(Бъ:
|
||||
Pа№Ш!(Бъ:
|
||||
QаРЯ$(Бъ:
|
||||
Rа<18>ж'(Бъ:
|
||||
Sарм*(Бъ:
|
||||
TаАу-(Бъ:
|
||||
Uа<18>ъ0(Бъ:
|
||||
Vаа№3(Бъ:
|
||||
Wа ї6(Бъ:
|
||||
Xа№§9(Бъ:
|
||||
YаР<>=(Бъ:
|
||||
Zа<18><>z(Бъ:
|
||||
|
||||
[аР<>Б(Бъ:
|
||||
|
||||
\а<18>т(Бъ:2
|
||||
]аРУ<D0A0>(Бъ:2K
|
||||
^а<18>кФ (Бъ:Kd
|
||||
_аР№ѕ(Бъ:d}
|
||||
`а<18><>Ї(Бъ:}<7D>
|
||||
aаР<>и(Бъ:<04>Џ
|
||||
bа<18>Д<EFBFBD>(Бъ:ЏШ
|
||||
cаРЪК(Бъ:Шс
|
||||
dа<18>сы(Бъ:сњ
|
||||
eба(Бъ:
|
||||
fб<18>'(Бъ:
|
||||
gб<18>N(Бъ:
|
||||
hб<18>u(Бъ:
|
||||
iб <>(Бъ:
|
||||
jбЈУ(Бъ:
|
||||
kбАъ(Бъ:
|
||||
lбИ<>(Бъ:
|
||||
mбРИ(Бъ:
|
||||
nбШп(Бъ:
|
||||
oба<>(Бъ:
|
||||
pби(Бъ:
|
||||
qбрд(Бъ:
|
||||
rбшћ(Бъ:
|
||||
sб№Ђ(Бъ:
|
||||
tбјЩ(Бъ:
|
||||
uб<18>ё(Бъ:
|
||||
vб<18><>(Бъ:
|
||||
wб<18>П(Бъ:
|
||||
xб<18>ц(Бъ:
|
||||
yб <>(Бъ:
|
||||
zб№<> (Бъ:
|
||||
{бР<>(Бъ:
|
||||
|б<18>Ё(Бъ:
|
||||
}брЇ(Бъ:
|
||||
~бАЎ(Бъ:
|
||||
б<18>Е(Бъ:
|
||||
<08>баЛ(Бъ:
|
||||
<08>б Т(Бъ:
|
||||
<08>б№Ш!(Бъ:
|
||||
<08>бРЯ$(Бъ:
|
||||
<08>б<18>ж'(Бъ:
|
||||
<08>брм*(Бъ:
|
||||
<08>бАу-(Бъ:
|
||||
<08>б<18>ъ0(Бъ:
|
||||
<08>ба№3(Бъ:
|
||||
<08>б ї6(Бъ:
|
||||
<08>б№§9(Бъ:
|
||||
<08>бР<>=(Бъ:
|
||||
<08>б<18><>z(Бъ:
|
||||
|
||||
<08>бР<>Б(Бъ:
|
||||
|
||||
<08>б<18>т(Бъ:2
|
||||
<08>бРУ<D0A0>(Бъ:2K
|
||||
<08>б<18>кФ (Бъ:Kd
|
||||
<08>бР№ѕ(Бъ:d}
|
||||
<08>б<18><>Ї(Бъ:}<7D>
|
||||
<08>бР<>и(Бъ:<04>Џ
|
||||
<08>б<18>Д<EFBFBD>(Бъ:ЏШ
|
||||
<08>бРЪК(Бъ:Шс
|
||||
<08>б<18>сы(Бъ:сњ
|
||||
<08>ва(Бъ:
|
||||
<08>в<18>'(Бъ:
|
||||
<08>в<18>N(Бъ:
|
||||
<08>в<18>u(Бъ:
|
||||
<08>в <>(Бъ:
|
||||
<08>вЈУ(Бъ:
|
||||
<08>вАъ(Бъ:
|
||||
<08>вИ<>(Бъ:
|
||||
<08>вРИ(Бъ:
|
||||
вШп(Бъ:
|
||||
Ёва<>(Бъ:
|
||||
Ђви(Бъ:
|
||||
Ѓврд(Бъ:
|
||||
Євшћ(Бъ:
|
||||
Ѕв№Ђ(Бъ:
|
||||
ІвјЩ(Бъ:
|
||||
Їв<18>ё(Бъ:
|
||||
Јв<18><>(Бъ:
|
||||
Љв<18>П(Бъ:
|
||||
Њв<18>ц(Бъ:
|
||||
Ћв <>(Бъ:
|
||||
Ќв№<> (Бъ:
|
||||
вР<>(Бъ:
|
||||
Ўв<18>Ё(Бъ:
|
||||
ЏврЇ(Бъ:
|
||||
АвАЎ(Бъ:
|
||||
Бв<18>Е(Бъ:
|
||||
ВваЛ(Бъ:
|
||||
Гв Т(Бъ:
|
||||
Дв№Ш!(Бъ:
|
||||
ЕвРЯ$(Бъ:
|
||||
Жв<18>ж'(Бъ:
|
||||
Зврм*(Бъ:
|
||||
ИвАу-(Бъ:
|
||||
Йв<18>ъ0(Бъ:
|
||||
Ква№3(Бъ:
|
||||
Лв ї6(Бъ:
|
||||
Мв№§9(Бъ:
|
||||
НвР<>=(Бъ:
|
||||
Ов<18><>z(Бъ:
|
||||
|
||||
ПвР<>Б(Бъ:
|
||||
|
||||
Рв<18>т(Бъ:2
|
||||
СвРУ<D0A0>(Бъ:2K
|
||||
Тв<18>кФ (Бъ:Kd
|
||||
УвР№ѕ(Бъ:d}
|
||||
Фв<18><>Ї(Бъ:}<7D>
|
||||
ХвР<>и(Бъ:<04>Џ
|
||||
Цв<18>Д<EFBFBD>(Бъ:ЏШ
|
||||
ЧвРЪК(Бъ:Шс
|
||||
Шв<18>сы(Бъ:сњ
|
||||
Èß ±ê(½2
|
||||
І ±ê(ï2
|
||||
Ø ±ê(¡2
|
||||
àÔ ±ê(Ò2
|
||||
èû ±ê(ƒ2
|
||||
𢠱ê(µ2
|
||||
øÉ ±ê(ç2
|
||||
€ñ ±ê(˜2
|
||||
ˆ˜ ±ê(É2
|
||||
<10>¿ ±ê(û2
|
||||
˜æ ±ê(2
|
||||
<> ±ê(Þ2
|
||||
ð“ ±ê(Í2
|
||||
Àš ±ê(¼2
|
||||
<10>¡ ±ê(«2
|
||||
à§ ±ê(š2
|
||||
°® ±ê(‰2
|
||||
€µ ±ê(ø2
|
||||
л ±ê(ç"2
|
||||
 ±ê(Ö&2
|
||||
ðÈ! ±ê(Å*2
|
||||
ÀÏ$ ±ê(´.2
|
||||
<10>Ö' ±ê(£22
|
||||
!àÜ* ±ê(ë32
|
||||
"°ã- ±ê(³52
|
||||
#€ê0 ±ê(û62
|
||||
$Ðð3 ±ê(Ã82
|
||||
% ÷6 ±ê(‹:2
|
||||
&ðý9 ±ê(Ó;2
|
||||
'À„= ±ê(›=2
|
||||
(€‰z ±ê(ã>2
|
||||
)À–± ±ê(«@2
|
||||
*€â ±ê(<28>N2
|
||||
+ÀÓ ±ê(<28>N2
|
||||
,€ÚÄ ±ê(<28>N2
|
||||
-Àðõ ±ê(<28>N2
|
||||
.€‡§ ±ê(<28>N2$
|
||||
/À<>Ø ±ê(<28>N2$*
|
||||
0€´‰ ±ê(<28>N2)0
|
||||
1Àʺ ±ê(<28>N2.6
|
||||
2€áë ±ê(<28>N23<
|
||||
3€Â×/ ±ê(<28>N2e{
|
||||
4€£ÃG ±ê(<28>N2–¤
|
||||
5€„¯_ ±ê(<28>N2Çö
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"ShopID": 970001,
|
||||
"Name": "7日礼品卡",
|
||||
"Rewards": {
|
||||
"100001": 5000000,
|
||||
"50001": 10
|
||||
},
|
||||
"DayRewards": {
|
||||
"100001": 1000000
|
||||
},
|
||||
"Time": 7,
|
||||
"Equity": [
|
||||
0
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
<18>‰z Łś
|
||||
|
||||
‘N ‘N
|
||||
â§
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"ShowType": 1,
|
||||
"ShowVolume": 2000003,
|
||||
"Location": 20003
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"ShowType": 2,
|
||||
"ShowVolume": 10001,
|
||||
"Location": 10001
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"ShowType": 3,
|
||||
"ShowVolume": 300002
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
W鮮 チ<>=(2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
|
||||
W鮮 チ<>=(2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
|
||||
W鮮 チ<>=(2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
|
||||
W鮮 チ<>=(2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
|
||||
W鮮 チ<>=(2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
|
||||
W鮮 チ<>=(2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
|
||||
W鮮 チ<>=(2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>"
|
||||
W鮮 チ<>=(2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>7
|
||||
W 鮮 チ<>=( 2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@ J<08>Y
|
||||
X
|
||||
鮮 チ<>=(
|
||||
2驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@
|
||||
J<08><10>
|
|
@ -0,0 +1,134 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 1,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 1,
|
||||
"ItemConsum": {
|
||||
"11001": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 2,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 2,
|
||||
"ItemConsum": {
|
||||
"11001": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 3,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 3,
|
||||
"ItemConsum": {
|
||||
"11001": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 4,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 4,
|
||||
"ItemConsum": {
|
||||
"11001": 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 5,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 5,
|
||||
"ItemConsum": {
|
||||
"11001": 13
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 6,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 6,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 6,
|
||||
"ItemConsum": {
|
||||
"11001": 21
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 7,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 7,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 7,
|
||||
"ItemConsum": {
|
||||
"11001": 34
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 8,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 8,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 8,
|
||||
"ItemConsum": {
|
||||
"11001": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 9,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 9,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 9,
|
||||
"ItemConsum": {
|
||||
"11001": 89
|
||||
}
|
||||
},
|
||||
{
|
||||
"Id": 10,
|
||||
"SkillId": 10001,
|
||||
"SkillType": 1,
|
||||
"PetId": 1000001,
|
||||
"SkillLevel": 10,
|
||||
"SkillName": "金鸡守卫",
|
||||
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
|
||||
"SKillValue": 10,
|
||||
"ItemConsum": {
|
||||
"11001": 144
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
(Ђв0–8Ўи;@dH–Pc
|
||||
((Ђв0¬8ўи;@dH¬PЗ
|
||||
яБЧ/ 2(Ђв0о8Ји;@dHоPу
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"BuyCountMin": 1,
|
||||
"BuyCountMax": 1,
|
||||
"CostDiamond": 30,
|
||||
"MaxGold": 10000000,
|
||||
"MaxDiamond": 150,
|
||||
"DiamondId": 980001,
|
||||
"CoinPrice": 100,
|
||||
"DiamondPrice": 150,
|
||||
"DiamondNowPrice": 99
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"BuyCountMin": 2,
|
||||
"BuyCountMax": 2,
|
||||
"CostDiamond": 40,
|
||||
"MaxGold": 10000000,
|
||||
"MaxDiamond": 300,
|
||||
"DiamondId": 980002,
|
||||
"CoinPrice": 100,
|
||||
"DiamondPrice": 300,
|
||||
"DiamondNowPrice": 199
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"BuyCountMin": 3,
|
||||
"BuyCountMax": 99999999,
|
||||
"CostDiamond": 50,
|
||||
"MaxGold": 10000000,
|
||||
"MaxDiamond": 750,
|
||||
"DiamondId": 980003,
|
||||
"CoinPrice": 100,
|
||||
"DiamondPrice": 750,
|
||||
"DiamondNowPrice": 499
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
WinCoinRate
|
||||
LoseCoinRate
|
||||
|
||||
DayBuyMaxCnt
|
||||
WinCoinRateDiamond
|
||||
LoseCoinRateDiamond
|
||||
|
||||
DayBuyMaxCntDiamond
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"PorpName": "WinCoinRate",
|
||||
"PropValue": 5
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"PorpName": "LoseCoinRate",
|
||||
"PropValue": 10
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"PorpName": "DayBuyMaxCnt",
|
||||
"PropValue": 3
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
"PorpName": "WinCoinRateDiamond",
|
||||
"PropValue": 5
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
"PorpName": "LoseCoinRateDiamond",
|
||||
"PropValue": 10
|
||||
},
|
||||
{
|
||||
"Id": 6,
|
||||
"PorpName": "DayBuyMaxCntDiamond",
|
||||
"PropValue": 3
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
|
@ -63,6 +63,54 @@
|
|||
"Gain": {
|
||||
"100002": 500
|
||||
}
|
||||
}
|
||||
},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{}
|
||||
]
|
||||
}
|
|
@ -1,8 +1,9 @@
|
|||
|
||||
$08и@HЂ‡§
|
||||
08ф@HЂЪД
|
||||
08¬@HЂв
|
||||
08И@HЂк0
|
||||
08–@H В
|
||||
08d@Hа§
|
||||
082@HАљ
|
||||
$08И@HЂ‡§
|
||||
08d@HЂЪД
|
||||
08<@HЂв
|
||||
08(@HЂк0
|
||||
08@H В
|
||||
08@Hа§
|
||||
08
|
||||
@HАљ
|
|
@ -5,7 +5,7 @@
|
|||
"RankType": 1,
|
||||
"Level": 36,
|
||||
"Award2Id": 2,
|
||||
"Award2Num": 1000,
|
||||
"Award2Num": 200,
|
||||
"Award3Id": 1,
|
||||
"Award3Num": 30000000
|
||||
},
|
||||
|
@ -14,7 +14,7 @@
|
|||
"RankType": 1,
|
||||
"Level": 31,
|
||||
"Award2Id": 2,
|
||||
"Award2Num": 500,
|
||||
"Award2Num": 100,
|
||||
"Award3Id": 1,
|
||||
"Award3Num": 20000000
|
||||
},
|
||||
|
@ -23,7 +23,7 @@
|
|||
"RankType": 1,
|
||||
"Level": 26,
|
||||
"Award2Id": 2,
|
||||
"Award2Num": 300,
|
||||
"Award2Num": 60,
|
||||
"Award3Id": 1,
|
||||
"Award3Num": 10000000
|
||||
},
|
||||
|
@ -32,7 +32,7 @@
|
|||
"RankType": 1,
|
||||
"Level": 21,
|
||||
"Award2Id": 2,
|
||||
"Award2Num": 200,
|
||||
"Award2Num": 40,
|
||||
"Award3Id": 1,
|
||||
"Award3Num": 800000
|
||||
},
|
||||
|
@ -41,7 +41,7 @@
|
|||
"RankType": 1,
|
||||
"Level": 16,
|
||||
"Award2Id": 2,
|
||||
"Award2Num": 150,
|
||||
"Award2Num": 30,
|
||||
"Award3Id": 1,
|
||||
"Award3Num": 500000
|
||||
},
|
||||
|
@ -50,7 +50,7 @@
|
|||
"RankType": 1,
|
||||
"Level": 11,
|
||||
"Award2Id": 2,
|
||||
"Award2Num": 100,
|
||||
"Award2Num": 20,
|
||||
"Award3Id": 1,
|
||||
"Award3Num": 300000
|
||||
},
|
||||
|
@ -59,7 +59,7 @@
|
|||
"RankType": 1,
|
||||
"Level": 6,
|
||||
"Award2Id": 2,
|
||||
"Award2Num": 50,
|
||||
"Award2Num": 10,
|
||||
"Award3Id": 1,
|
||||
"Award3Num": 200000
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,147 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 300001,
|
||||
"SkinClass": 4,
|
||||
"Model": "juese",
|
||||
"SkinPic": "icon_300001",
|
||||
"SkinName": "活力-黄",
|
||||
"SkinType": "mg_01",
|
||||
"SkinSkillName": "0",
|
||||
"SkinSkillIcon": "0",
|
||||
"SkinSkillDes": "0",
|
||||
"Turn": [
|
||||
0
|
||||
],
|
||||
"TurnKey": [
|
||||
"0"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 300002,
|
||||
"SkinClass": 2,
|
||||
"Model": "juese",
|
||||
"SkinPic": "icon_300002",
|
||||
"SkinName": "财神送福",
|
||||
"SkinType": "mg_06",
|
||||
"UnlockType": 2,
|
||||
"UnlockItem": {
|
||||
"310002": 20
|
||||
},
|
||||
"SkinSkillName": "福气东来",
|
||||
"SkinSkillIcon": "SkillIcon-30002",
|
||||
"SkinSkillDes": "排位赛积分提升",
|
||||
"Turn": [
|
||||
1
|
||||
],
|
||||
"TurnKey": [
|
||||
"DBSkinUnlock_300002_t1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 300003,
|
||||
"SkinClass": 2,
|
||||
"Model": "juese",
|
||||
"SkinPic": "icon_300003",
|
||||
"SkinName": "活力-粉",
|
||||
"SkinType": "mg_02",
|
||||
"UnlockType": 2,
|
||||
"UnlockItem": {
|
||||
"310003": 20
|
||||
},
|
||||
"SkinSkillName": "活力满满",
|
||||
"SkinSkillIcon": "SkillIcon-30003",
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升",
|
||||
"Turn": [
|
||||
2
|
||||
],
|
||||
"TurnKey": [
|
||||
"DBSkinUnlock_300003_t1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 300004,
|
||||
"SkinClass": 2,
|
||||
"Model": "juese",
|
||||
"SkinPic": "icon_300004",
|
||||
"SkinName": "活力-青",
|
||||
"SkinType": "mg_03",
|
||||
"UnlockType": 2,
|
||||
"UnlockItem": {
|
||||
"310004": 20
|
||||
},
|
||||
"SkinSkillName": "金币满满",
|
||||
"SkinSkillIcon": "SkillIcon-30004",
|
||||
"SkinSkillDes": "每日礼包金币奖励提升",
|
||||
"Turn": [
|
||||
2
|
||||
],
|
||||
"TurnKey": [
|
||||
"DBSkinUnlock_300004_t1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 300005,
|
||||
"SkinClass": 2,
|
||||
"Model": "juese",
|
||||
"SkinPic": "icon_300005",
|
||||
"SkinName": "摇滚小子",
|
||||
"SkinType": "mg_04",
|
||||
"UnlockType": 2,
|
||||
"UnlockItem": {
|
||||
"310005": 20
|
||||
},
|
||||
"SkinSkillName": "金币加成",
|
||||
"SkinSkillIcon": "SkillIcon-30005",
|
||||
"SkinSkillDes": "每日任务金币奖励加成",
|
||||
"Turn": [
|
||||
3
|
||||
],
|
||||
"TurnKey": [
|
||||
"DBSkinUnlock_300005_t1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 300006,
|
||||
"SkinClass": 4,
|
||||
"Model": "juese",
|
||||
"SkinPic": "icon_300006",
|
||||
"SkinName": "潜水员",
|
||||
"SkinType": "mg_05",
|
||||
"UnlockType": 2,
|
||||
"UnlockItem": {
|
||||
"310006": 20
|
||||
},
|
||||
"SkinSkillName": "0",
|
||||
"SkinSkillIcon": "0",
|
||||
"SkinSkillDes": "0",
|
||||
"Turn": [
|
||||
4
|
||||
],
|
||||
"TurnKey": [
|
||||
"DBSkinUnlock_300006_t1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Id": 300007,
|
||||
"SkinClass": 2,
|
||||
"Model": "juese",
|
||||
"SkinPic": "icon_300007",
|
||||
"SkinName": "冲浪健将",
|
||||
"SkinType": "mg_07",
|
||||
"UnlockType": 2,
|
||||
"UnlockItem": {
|
||||
"310007": 20
|
||||
},
|
||||
"SkinSkillName": "好运加成",
|
||||
"SkinSkillIcon": "SkillIcon-30007",
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升",
|
||||
"Turn": [
|
||||
5
|
||||
],
|
||||
"TurnKey": [
|
||||
"DBSkinUnlock_300007_t1"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
|
||||
á§B0
|
||||
á§"ñõB0
|
||||
á§"ñõB0
|
||||
á§"ñõB0
|
||||
á§"ñõ
B0
|
||||
á§"ñõB0
|
||||
á§"ñõ"B0
|
||||
á§"ñõ7B0
|
||||
á§ "ñõYB0
|
||||
|
||||
á§
|
||||
"ñõ<10>B0
|
||||
+â§(²ê08B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
3â§"òõ(²ê08B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
3
â§"òõ(²ê08B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
3â§"òõ(²ê08B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
3â§"òõ
(²ê08B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
3â§"òõ(²ê08B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
3â§"òõ"(²ê08B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
3â§"òõ7(²ê08B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
3â§ "òõY(²ê0 8 B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
4â§
|
||||
"òõ<10>(²ê0
|
||||
8
|
||||
B排ä½<C3A4>赛积分æ<E280A0><C3A6>å<EFBFBD>‡{0}%
|
||||
9ã§(³ê08B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Aã§"óõ(³ê08B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Aã§"óõ(³ê08B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Aã§"óõ(³ê08B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Aã§"óõ
(³ê08B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Aã§"óõ(³ê08B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Aã§"óõ"(³ê08B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Aã§"óõ7(³ê08B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Aã§ "óõY(³ê0 8 B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
Bã§
|
||||
"óõ<10>(³ê0
|
||||
8
|
||||
B'VIPèµ›æ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
|
||||
4ä§(´ê08B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
< ä§"ôõ(´ê08B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<!ä§"ôõ(´ê08B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<"ä§"ôõ(´ê08B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<#ä§"ôõ
(´ê08B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<$ä§"ôõ(´ê08B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<%ä§"ôõ"(´ê08B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<&ä§"ôõ7(´ê08B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<'ä§ "ôõY(´ê0 8 B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
=(ä§
|
||||
"ôõ<10>(´ê0
|
||||
8
|
||||
B"æ¯<C3A6>日礼包金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
4)å§(µê08B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<*å§"õõ(µê08B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<+å§"õõ(µê08B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<,å§"õõ(µê08B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<-å§"õõ
(µê08B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<.å§"õõ(µê08B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
</å§"õõ"(µê08B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<0å§"õõ7(µê08B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
<1å§ "õõY(µê0 8 B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
=2å§
|
||||
"õõ<10>(µê0
|
||||
8
|
||||
B"æ¯<C3A6>日任务金å¸<C3A5>奖励æ<C2B1><C3A6>å<EFBFBD>‡{0}%
|
||||
3æ§B0
|
||||
4æ§"öõB0
|
||||
5æ§"öõB0
|
||||
6æ§"öõB0
|
||||
7æ§"öõ
B0
|
||||
8æ§"öõB0
|
||||
9æ§"öõ"B0
|
||||
:æ§"öõ7B0
|
||||
;æ§ "öõYB0
|
||||
<æ§
|
||||
"öõ<10>B0
|
||||
7=ç§(·ê08B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
?>ç§"÷õ(·ê08B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
??ç§"÷õ(·ê08B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
?@ç§"÷õ(·ê08B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
?Aç§"÷õ
(·ê08B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
?Bç§"÷õ(·ê08B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
?Cç§"÷õ"(·ê08B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
?Dç§"÷õ7(·ê08B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
?Eç§ "÷õY(·ê0 8 B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
||||
@Fç§
|
||||
"÷õ<10>(·ê0
|
||||
8
|
||||
B%æ¯<C3A6>次钻石抽奖幸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
|
|
@ -0,0 +1,763 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"SkinId": 300001,
|
||||
"Level": 1,
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"SkinId": 300001,
|
||||
"Level": 2,
|
||||
"UpItem": {
|
||||
"310001": 3
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"SkinId": 300001,
|
||||
"Level": 3,
|
||||
"UpItem": {
|
||||
"310001": 5
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
"SkinId": 300001,
|
||||
"Level": 4,
|
||||
"UpItem": {
|
||||
"310001": 8
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
"SkinId": 300001,
|
||||
"Level": 5,
|
||||
"UpItem": {
|
||||
"310001": 13
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 6,
|
||||
"SkinId": 300001,
|
||||
"Level": 6,
|
||||
"UpItem": {
|
||||
"310001": 21
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 7,
|
||||
"SkinId": 300001,
|
||||
"Level": 7,
|
||||
"UpItem": {
|
||||
"310001": 34
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 8,
|
||||
"SkinId": 300001,
|
||||
"Level": 8,
|
||||
"UpItem": {
|
||||
"310001": 55
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 9,
|
||||
"SkinId": 300001,
|
||||
"Level": 9,
|
||||
"UpItem": {
|
||||
"310001": 89
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 10,
|
||||
"SkinId": 300001,
|
||||
"Level": 10,
|
||||
"UpItem": {
|
||||
"310001": 144
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 11,
|
||||
"SkinId": 300002,
|
||||
"Level": 1,
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 1,
|
||||
"SkinSkillValue": 1,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 12,
|
||||
"SkinId": 300002,
|
||||
"Level": 2,
|
||||
"UpItem": {
|
||||
"310002": 3
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 2,
|
||||
"SkinSkillValue": 2,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 13,
|
||||
"SkinId": 300002,
|
||||
"Level": 3,
|
||||
"UpItem": {
|
||||
"310002": 5
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 3,
|
||||
"SkinSkillValue": 3,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 14,
|
||||
"SkinId": 300002,
|
||||
"Level": 4,
|
||||
"UpItem": {
|
||||
"310002": 8
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 4,
|
||||
"SkinSkillValue": 4,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 15,
|
||||
"SkinId": 300002,
|
||||
"Level": 5,
|
||||
"UpItem": {
|
||||
"310002": 13
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 5,
|
||||
"SkinSkillValue": 5,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 16,
|
||||
"SkinId": 300002,
|
||||
"Level": 6,
|
||||
"UpItem": {
|
||||
"310002": 21
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 6,
|
||||
"SkinSkillValue": 6,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 17,
|
||||
"SkinId": 300002,
|
||||
"Level": 7,
|
||||
"UpItem": {
|
||||
"310002": 34
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 7,
|
||||
"SkinSkillValue": 7,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 18,
|
||||
"SkinId": 300002,
|
||||
"Level": 8,
|
||||
"UpItem": {
|
||||
"310002": 55
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 8,
|
||||
"SkinSkillValue": 8,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 19,
|
||||
"SkinId": 300002,
|
||||
"Level": 9,
|
||||
"UpItem": {
|
||||
"310002": 89
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 9,
|
||||
"SkinSkillValue": 9,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 20,
|
||||
"SkinId": 300002,
|
||||
"Level": 10,
|
||||
"UpItem": {
|
||||
"310002": 144
|
||||
},
|
||||
"SkinSkillId": 30002,
|
||||
"SkinSkillLevel": 10,
|
||||
"SkinSkillValue": 10,
|
||||
"SkinSkillDes": "排位赛积分提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 21,
|
||||
"SkinId": 300003,
|
||||
"Level": 1,
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 1,
|
||||
"SkinSkillValue": 1,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 22,
|
||||
"SkinId": 300003,
|
||||
"Level": 2,
|
||||
"UpItem": {
|
||||
"310003": 3
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 2,
|
||||
"SkinSkillValue": 2,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 23,
|
||||
"SkinId": 300003,
|
||||
"Level": 3,
|
||||
"UpItem": {
|
||||
"310003": 5
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 3,
|
||||
"SkinSkillValue": 3,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 24,
|
||||
"SkinId": 300003,
|
||||
"Level": 4,
|
||||
"UpItem": {
|
||||
"310003": 8
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 4,
|
||||
"SkinSkillValue": 4,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 25,
|
||||
"SkinId": 300003,
|
||||
"Level": 5,
|
||||
"UpItem": {
|
||||
"310003": 13
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 5,
|
||||
"SkinSkillValue": 5,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 26,
|
||||
"SkinId": 300003,
|
||||
"Level": 6,
|
||||
"UpItem": {
|
||||
"310003": 21
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 6,
|
||||
"SkinSkillValue": 6,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 27,
|
||||
"SkinId": 300003,
|
||||
"Level": 7,
|
||||
"UpItem": {
|
||||
"310003": 34
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 7,
|
||||
"SkinSkillValue": 7,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 28,
|
||||
"SkinId": 300003,
|
||||
"Level": 8,
|
||||
"UpItem": {
|
||||
"310003": 55
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 8,
|
||||
"SkinSkillValue": 8,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 29,
|
||||
"SkinId": 300003,
|
||||
"Level": 9,
|
||||
"UpItem": {
|
||||
"310003": 89
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 9,
|
||||
"SkinSkillValue": 9,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 30,
|
||||
"SkinId": 300003,
|
||||
"Level": 10,
|
||||
"UpItem": {
|
||||
"310003": 144
|
||||
},
|
||||
"SkinSkillId": 30003,
|
||||
"SkinSkillLevel": 10,
|
||||
"SkinSkillValue": 10,
|
||||
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
|
||||
},
|
||||
{
|
||||
"Id": 31,
|
||||
"SkinId": 300004,
|
||||
"Level": 1,
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 1,
|
||||
"SkinSkillValue": 1,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 32,
|
||||
"SkinId": 300004,
|
||||
"Level": 2,
|
||||
"UpItem": {
|
||||
"310004": 3
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 2,
|
||||
"SkinSkillValue": 2,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 33,
|
||||
"SkinId": 300004,
|
||||
"Level": 3,
|
||||
"UpItem": {
|
||||
"310004": 5
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 3,
|
||||
"SkinSkillValue": 3,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 34,
|
||||
"SkinId": 300004,
|
||||
"Level": 4,
|
||||
"UpItem": {
|
||||
"310004": 8
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 4,
|
||||
"SkinSkillValue": 4,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 35,
|
||||
"SkinId": 300004,
|
||||
"Level": 5,
|
||||
"UpItem": {
|
||||
"310004": 13
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 5,
|
||||
"SkinSkillValue": 5,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 36,
|
||||
"SkinId": 300004,
|
||||
"Level": 6,
|
||||
"UpItem": {
|
||||
"310004": 21
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 6,
|
||||
"SkinSkillValue": 6,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 37,
|
||||
"SkinId": 300004,
|
||||
"Level": 7,
|
||||
"UpItem": {
|
||||
"310004": 34
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 7,
|
||||
"SkinSkillValue": 7,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 38,
|
||||
"SkinId": 300004,
|
||||
"Level": 8,
|
||||
"UpItem": {
|
||||
"310004": 55
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 8,
|
||||
"SkinSkillValue": 8,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 39,
|
||||
"SkinId": 300004,
|
||||
"Level": 9,
|
||||
"UpItem": {
|
||||
"310004": 89
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 9,
|
||||
"SkinSkillValue": 9,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 40,
|
||||
"SkinId": 300004,
|
||||
"Level": 10,
|
||||
"UpItem": {
|
||||
"310004": 144
|
||||
},
|
||||
"SkinSkillId": 30004,
|
||||
"SkinSkillLevel": 10,
|
||||
"SkinSkillValue": 10,
|
||||
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 41,
|
||||
"SkinId": 300005,
|
||||
"Level": 1,
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 1,
|
||||
"SkinSkillValue": 1,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 42,
|
||||
"SkinId": 300005,
|
||||
"Level": 2,
|
||||
"UpItem": {
|
||||
"310005": 3
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 2,
|
||||
"SkinSkillValue": 2,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 43,
|
||||
"SkinId": 300005,
|
||||
"Level": 3,
|
||||
"UpItem": {
|
||||
"310005": 5
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 3,
|
||||
"SkinSkillValue": 3,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 44,
|
||||
"SkinId": 300005,
|
||||
"Level": 4,
|
||||
"UpItem": {
|
||||
"310005": 8
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 4,
|
||||
"SkinSkillValue": 4,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 45,
|
||||
"SkinId": 300005,
|
||||
"Level": 5,
|
||||
"UpItem": {
|
||||
"310005": 13
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 5,
|
||||
"SkinSkillValue": 5,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 46,
|
||||
"SkinId": 300005,
|
||||
"Level": 6,
|
||||
"UpItem": {
|
||||
"310005": 21
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 6,
|
||||
"SkinSkillValue": 6,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 47,
|
||||
"SkinId": 300005,
|
||||
"Level": 7,
|
||||
"UpItem": {
|
||||
"310005": 34
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 7,
|
||||
"SkinSkillValue": 7,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 48,
|
||||
"SkinId": 300005,
|
||||
"Level": 8,
|
||||
"UpItem": {
|
||||
"310005": 55
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 8,
|
||||
"SkinSkillValue": 8,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 49,
|
||||
"SkinId": 300005,
|
||||
"Level": 9,
|
||||
"UpItem": {
|
||||
"310005": 89
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 9,
|
||||
"SkinSkillValue": 9,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 50,
|
||||
"SkinId": 300005,
|
||||
"Level": 10,
|
||||
"UpItem": {
|
||||
"310005": 144
|
||||
},
|
||||
"SkinSkillId": 30005,
|
||||
"SkinSkillLevel": 10,
|
||||
"SkinSkillValue": 10,
|
||||
"SkinSkillDes": "每日任务金币奖励提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 51,
|
||||
"SkinId": 300006,
|
||||
"Level": 1,
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 52,
|
||||
"SkinId": 300006,
|
||||
"Level": 2,
|
||||
"UpItem": {
|
||||
"310006": 3
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 53,
|
||||
"SkinId": 300006,
|
||||
"Level": 3,
|
||||
"UpItem": {
|
||||
"310006": 5
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 54,
|
||||
"SkinId": 300006,
|
||||
"Level": 4,
|
||||
"UpItem": {
|
||||
"310006": 8
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 55,
|
||||
"SkinId": 300006,
|
||||
"Level": 5,
|
||||
"UpItem": {
|
||||
"310006": 13
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 56,
|
||||
"SkinId": 300006,
|
||||
"Level": 6,
|
||||
"UpItem": {
|
||||
"310006": 21
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 57,
|
||||
"SkinId": 300006,
|
||||
"Level": 7,
|
||||
"UpItem": {
|
||||
"310006": 34
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 58,
|
||||
"SkinId": 300006,
|
||||
"Level": 8,
|
||||
"UpItem": {
|
||||
"310006": 55
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 59,
|
||||
"SkinId": 300006,
|
||||
"Level": 9,
|
||||
"UpItem": {
|
||||
"310006": 89
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 60,
|
||||
"SkinId": 300006,
|
||||
"Level": 10,
|
||||
"UpItem": {
|
||||
"310006": 144
|
||||
},
|
||||
"SkinSkillDes": "0"
|
||||
},
|
||||
{
|
||||
"Id": 61,
|
||||
"SkinId": 300007,
|
||||
"Level": 1,
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 1,
|
||||
"SkinSkillValue": 1,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 62,
|
||||
"SkinId": 300007,
|
||||
"Level": 2,
|
||||
"UpItem": {
|
||||
"310007": 3
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 2,
|
||||
"SkinSkillValue": 2,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 63,
|
||||
"SkinId": 300007,
|
||||
"Level": 3,
|
||||
"UpItem": {
|
||||
"310007": 5
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 3,
|
||||
"SkinSkillValue": 3,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 64,
|
||||
"SkinId": 300007,
|
||||
"Level": 4,
|
||||
"UpItem": {
|
||||
"310007": 8
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 4,
|
||||
"SkinSkillValue": 4,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 65,
|
||||
"SkinId": 300007,
|
||||
"Level": 5,
|
||||
"UpItem": {
|
||||
"310007": 13
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 5,
|
||||
"SkinSkillValue": 5,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 66,
|
||||
"SkinId": 300007,
|
||||
"Level": 6,
|
||||
"UpItem": {
|
||||
"310007": 21
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 6,
|
||||
"SkinSkillValue": 6,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 67,
|
||||
"SkinId": 300007,
|
||||
"Level": 7,
|
||||
"UpItem": {
|
||||
"310007": 34
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 7,
|
||||
"SkinSkillValue": 7,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 68,
|
||||
"SkinId": 300007,
|
||||
"Level": 8,
|
||||
"UpItem": {
|
||||
"310007": 55
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 8,
|
||||
"SkinSkillValue": 8,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 69,
|
||||
"SkinId": 300007,
|
||||
"Level": 9,
|
||||
"UpItem": {
|
||||
"310007": 89
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 9,
|
||||
"SkinSkillValue": 9,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
},
|
||||
{
|
||||
"Id": 70,
|
||||
"SkinId": 300007,
|
||||
"Level": 10,
|
||||
"UpItem": {
|
||||
"310007": 144
|
||||
},
|
||||
"SkinSkillId": 30007,
|
||||
"SkinSkillLevel": 10,
|
||||
"SkinSkillValue": 10,
|
||||
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
|
||||
}
|
||||
]
|
||||
}
|
BIN
data/DB_Task.dat
BIN
data/DB_Task.dat
Binary file not shown.
1212
data/DB_Task.json
1212
data/DB_Task.json
File diff suppressed because it is too large
Load Diff
BIN
data/DB_VIP.dat
BIN
data/DB_VIP.dat
Binary file not shown.
223
data/DB_VIP.json
223
data/DB_VIP.json
|
@ -3,8 +3,8 @@
|
|||
{
|
||||
"Name": "不是VIP",
|
||||
"Privilege1": [
|
||||
100000,
|
||||
2
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -28,7 +28,11 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"Privilege9": [
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 100
|
||||
},
|
||||
{
|
||||
"Id": 1,
|
||||
|
@ -36,8 +40,8 @@
|
|||
"Count": 1000,
|
||||
"VipExp": 1000,
|
||||
"Privilege1": [
|
||||
100000,
|
||||
100
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -62,7 +66,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 1,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 2000
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
|
@ -70,8 +81,8 @@
|
|||
"Count": 2000,
|
||||
"VipExp": 2000,
|
||||
"Privilege1": [
|
||||
150000,
|
||||
150
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -96,7 +107,15 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 2,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 3000
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
|
@ -104,8 +123,8 @@
|
|||
"Count": 5000,
|
||||
"VipExp": 5000,
|
||||
"Privilege1": [
|
||||
200000,
|
||||
200
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -130,7 +149,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 3,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 4000
|
||||
},
|
||||
{
|
||||
"Id": 4,
|
||||
|
@ -138,8 +164,8 @@
|
|||
"Count": 10000,
|
||||
"VipExp": 10000,
|
||||
"Privilege1": [
|
||||
300000,
|
||||
250
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -164,7 +190,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 4,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 5000
|
||||
},
|
||||
{
|
||||
"Id": 5,
|
||||
|
@ -172,8 +205,8 @@
|
|||
"Count": 20000,
|
||||
"VipExp": 20000,
|
||||
"Privilege1": [
|
||||
400000,
|
||||
300
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -198,7 +231,15 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 5,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 6000
|
||||
},
|
||||
{
|
||||
"Id": 6,
|
||||
|
@ -206,8 +247,8 @@
|
|||
"Count": 50000,
|
||||
"VipExp": 50000,
|
||||
"Privilege1": [
|
||||
500000,
|
||||
350
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -232,7 +273,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 6,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 7000
|
||||
},
|
||||
{
|
||||
"Id": 7,
|
||||
|
@ -240,8 +288,8 @@
|
|||
"Count": 100000,
|
||||
"VipExp": 100000,
|
||||
"Privilege1": [
|
||||
600000,
|
||||
400
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -266,7 +314,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 7,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 8000
|
||||
},
|
||||
{
|
||||
"Id": 8,
|
||||
|
@ -274,8 +329,8 @@
|
|||
"Count": 200000,
|
||||
"VipExp": 200000,
|
||||
"Privilege1": [
|
||||
700000,
|
||||
450
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -300,7 +355,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 8,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 9000
|
||||
},
|
||||
{
|
||||
"Id": 9,
|
||||
|
@ -308,8 +370,8 @@
|
|||
"Count": 500000,
|
||||
"VipExp": 500000,
|
||||
"Privilege1": [
|
||||
800000,
|
||||
500
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -334,7 +396,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 9,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 10000
|
||||
},
|
||||
{
|
||||
"Id": 10,
|
||||
|
@ -342,8 +411,8 @@
|
|||
"Count": 1000000,
|
||||
"VipExp": 1000000,
|
||||
"Privilege1": [
|
||||
900000,
|
||||
550
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -368,7 +437,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 10,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 11000
|
||||
},
|
||||
{
|
||||
"Id": 11,
|
||||
|
@ -376,8 +452,8 @@
|
|||
"Count": 2000000,
|
||||
"VipExp": 2000000,
|
||||
"Privilege1": [
|
||||
1000000,
|
||||
600
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -402,7 +478,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 11,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 12000
|
||||
},
|
||||
{
|
||||
"Id": 12,
|
||||
|
@ -410,8 +493,8 @@
|
|||
"Count": 5000000,
|
||||
"VipExp": 5000000,
|
||||
"Privilege1": [
|
||||
2000000,
|
||||
650
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -436,7 +519,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 12,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 13000
|
||||
},
|
||||
{
|
||||
"Id": 13,
|
||||
|
@ -444,8 +534,8 @@
|
|||
"Count": 10000000,
|
||||
"VipExp": 10000000,
|
||||
"Privilege1": [
|
||||
3000000,
|
||||
700
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -470,7 +560,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 13,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 14000
|
||||
},
|
||||
{
|
||||
"Id": 14,
|
||||
|
@ -478,8 +575,8 @@
|
|||
"Count": 20000000,
|
||||
"VipExp": 20000000,
|
||||
"Privilege1": [
|
||||
4000000,
|
||||
750
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -504,7 +601,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 14,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 15000
|
||||
},
|
||||
{
|
||||
"Id": 15,
|
||||
|
@ -512,8 +616,8 @@
|
|||
"Count": 50000000,
|
||||
"VipExp": 50000000,
|
||||
"Privilege1": [
|
||||
5000000,
|
||||
800
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -538,7 +642,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
],
|
||||
"MatchFreeTimes": 15,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 16000
|
||||
},
|
||||
{
|
||||
"Id": 16,
|
||||
|
@ -546,8 +657,8 @@
|
|||
"Count": 100000000,
|
||||
"VipExp": 100000000,
|
||||
"Privilege1": [
|
||||
6000000,
|
||||
850
|
||||
0,
|
||||
0
|
||||
],
|
||||
"Privilege2": [
|
||||
0,
|
||||
|
@ -572,8 +683,14 @@
|
|||
"获得专属头像框",
|
||||
"获得专属炮台",
|
||||
"更多VIP功能正待开发"
|
||||
]
|
||||
},
|
||||
{}
|
||||
],
|
||||
"MatchFreeTimes": 16,
|
||||
"Privilege9": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"PrivilegeShow": 17000
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
ä§*
|
||||
VIPShow.t1
|
||||
ã§ *
|
||||
VIPShow.t2
|
||||
ц *
|
||||
VIPShow.t3
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"Arr": [
|
||||
{
|
||||
"Id": 1,
|
||||
"Type": 1,
|
||||
"SkinId": 300004,
|
||||
"VIPDes": "VIPShow.t1"
|
||||
},
|
||||
{
|
||||
"Id": 2,
|
||||
"Type": 1,
|
||||
"SkinId": 300003,
|
||||
"VIPLevel": 3,
|
||||
"VIPDes": "VIPShow.t2"
|
||||
},
|
||||
{
|
||||
"Id": 3,
|
||||
"Type": 2,
|
||||
"SkinId": 50001,
|
||||
"VIPLevel": 6,
|
||||
"VIPDes": "VIPShow.t3"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"GameName":"dragon",
|
||||
"GameId":309,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1,2,3,4],
|
||||
"CanForceStart":true,
|
||||
"DefaultPlayerCnt":1,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":true
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"GameName":"mouse",
|
||||
"GameId":312,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1,2,3,4],
|
||||
"CanForceStart":true,
|
||||
"DefaultPlayerCnt":1,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":true
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"GameName":"ox",
|
||||
"GameId":311,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1,2,3,4],
|
||||
"CanForceStart":true,
|
||||
"DefaultPlayerCnt":1,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":true
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"GameName":"rabbit",
|
||||
"GameId":310,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1,2,3,4],
|
||||
"CanForceStart":true,
|
||||
"DefaultPlayerCnt":1,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":true
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"GameName":"tiger",
|
||||
"GameId":308,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1,2,3,4],
|
||||
"CanForceStart":true,
|
||||
"DefaultPlayerCnt":1,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":true
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"GameName":"娃娃机",
|
||||
"GameId":608,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1],
|
||||
"CanForceStart":false,
|
||||
"MinPlayerCnt":1,
|
||||
"DefaultPlayerCnt":1,
|
||||
"MaxIndex":0,
|
||||
"TimeFreeStart":0,
|
||||
"TimeFreeEnd":0,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":false,
|
||||
"PerGameTakeCard":100,
|
||||
"ViewLogCnt":-1,
|
||||
"BetState":0,
|
||||
"Params":[
|
||||
]
|
||||
}
|
|
@ -12,6 +12,7 @@
|
|||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":true,
|
||||
"PerGameTakeCard":100,
|
||||
"BaseScore": 10,
|
||||
"Params":[
|
||||
]
|
||||
}
|
|
@ -12,6 +12,7 @@
|
|||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":true,
|
||||
"PerGameTakeCard":100,
|
||||
"BaseScore": 10,
|
||||
"Params":[
|
||||
]
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"GameName":"tienlen房卡经典",
|
||||
"GameId":215,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1],
|
||||
"CanForceStart":true,
|
||||
"MinPlayerCnt":2,
|
||||
"DefaultPlayerCnt":4,
|
||||
"TimeFreeStart":0,
|
||||
"TimeFreeEnd":0,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":false
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"GameName":"tienlen房卡经典打到底",
|
||||
"GameId":217,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1],
|
||||
"CanForceStart":true,
|
||||
"MinPlayerCnt":2,
|
||||
"DefaultPlayerCnt":4,
|
||||
"TimeFreeStart":0,
|
||||
"TimeFreeEnd":0,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":false
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"GameName":"tienlen房卡娱乐",
|
||||
"GameId":216,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1],
|
||||
"CanForceStart":true,
|
||||
"MinPlayerCnt":2,
|
||||
"DefaultPlayerCnt":4,
|
||||
"TimeFreeStart":0,
|
||||
"TimeFreeEnd":0,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":false
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"GameName":"tienlen房卡娱乐打到底",
|
||||
"GameId":218,
|
||||
"GameMode":[0],
|
||||
"SceneType":[1],
|
||||
"CanForceStart":true,
|
||||
"MinPlayerCnt":2,
|
||||
"DefaultPlayerCnt":4,
|
||||
"TimeFreeStart":0,
|
||||
"TimeFreeEnd":0,
|
||||
"DependentPlayerCnt":true,
|
||||
"EnterAfterStart":false
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"NewPlayerCoin":1000000,
|
||||
"NewPlayerCoin":100000000,
|
||||
"UpgradeAccountGiveCoin":0,
|
||||
"LogBatchWriteCount":1024,
|
||||
"LogBatchWriteInterval":1,
|
||||
"VerifyClientVersion":true,
|
||||
"SrvMaintain":false,
|
||||
"WhiteHttpAddr": [],
|
||||
"HundredScenePreCreate":true,
|
||||
"HundredScenePreCreate":false,
|
||||
"WriteEventLog": true,
|
||||
"SpreadAccountQPT":100,
|
||||
"FakeVerifyCode":"123456",
|
||||
|
@ -22,5 +22,8 @@
|
|||
"RobotInviteIntervalMax": 1,
|
||||
"ClosePreCreateRoom": true,
|
||||
"AgoraAddress": "http://47.105.78.29:8081",
|
||||
"InviteUrl": "http://47.105.78.29:8000/"
|
||||
"InviteUrl": "http://47.105.78.29:8000/",
|
||||
"GuideTs": 1723790567,
|
||||
"RankTimeout": 2,
|
||||
"PermitInitScore": 0
|
||||
}
|
|
@ -7,5 +7,7 @@
|
|||
"RankAwardTitle": "{\"zh\":\"赛季奖励-%v\",\"vi\":\"Hạng bạc-%v\",\"en\":\"Season rewards-%v\",\"kh\":\"រង្វាន់រដូវកាល-%v\"}",
|
||||
"RankAward": "{\"zh\":\"您上赛季有未领取的奖励\",\"vi\":\"Bạn có phần thưởng chưa được nhận từ mùa giải trước\",\"en\":\"You have unclaimed rewards from last season\",\"kh\":\"អ្នកមិនទាន់បានយករង្វាន់តាំងពីរដូវកាលមុន\"}",
|
||||
"MatchAwardTitle": "{\"zh\":\"话费充值兑换码\",\"vi\":\"Mã nạp tiền ĐT\",\"en\":\"Phone recharge code\",\"kh\":\"កូដបញ្ចូលទូរស័ព្ទ\"}",
|
||||
"MatchAward": "{\"zh\":\"恭喜您获得电话预付卡“%v$”话费充值奖励,兑换码:%v,请尽快使用\",\"vi\":\"Chúc mừng bạn đã nhận được Thẻ trả trước ĐT “%v$” phần thưởng nạp tiền tín dụng ĐT, mã đổi thưởng %v xin sử dụng ngay lập tức\",\"en\":\"Congratulations, you have received the phone prepaid card “%v$” mobile credit top-up reward, redemption code: %v please use it immediately.\",\"kh\":\"សូមអបអរសាទរ អ្នកទទួលបានរង្វាន់កាតបញ្ចូលទូរស័ព្ទ កាតទូរស័ព្ទបង់ប្រាក់ជាមុន “%v$”លេខកូដដោះដូរ %v សូមប្រើវាភ្លាមៗ\"}"
|
||||
"MatchAward": "{\"zh\":\"恭喜您获得电话预付卡“%v$”话费充值奖励,兑换码:%v,请尽快使用\",\"vi\":\"Chúc mừng bạn đã nhận được Thẻ trả trước ĐT “%v$” phần thưởng nạp tiền tín dụng ĐT, mã đổi thưởng %v xin sử dụng ngay lập tức\",\"en\":\"Congratulations, you have received the phone prepaid card “%v$” mobile credit top-up reward, redemption code: %v please use it immediately.\",\"kh\":\"សូមអបអរសាទរ អ្នកទទួលបានរង្វាន់កាតបញ្ចូលទូរស័ព្ទ កាតទូរស័ព្ទបង់ប្រាក់ជាមុន “%v$”លេខកូដដោះដូរ %v សូមប្រើវាភ្លាមៗ\"}",
|
||||
"PermitAwardTitle": "{\"zh\":\"通行证排行奖励\",\"vi\":\"Vượt qua phần thưởng xếp hạng\",\"en\":\"Pass Ranking Rewards\",\"kh\":\"រង្វាន់ចំណាត់ថ្នាក់ឆ្លងកាត់\"}",
|
||||
"PermitAward": "{\"zh\":\"恭喜您在上个赛季通行证排行中名次达到%v名,排行奖励已发放,请查收\",\"vi\":\"Chúc mừng bạn đã đạt được %v trong bảng xếp hạng vượt qua. Phần thưởng xếp hạng đã được phân phối, vui lòng kiểm tra.\",\"en\":\"Congratulations on reaching %vth place in the pass ranking. Ranking rewards have been issued. Please check.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈានដល់ចំណាត់ថ្នាក់ទី %v ក្នុងចំណាត់ថ្នាក់ឆ្លងកាត់។ រង្វាន់ចំណាត់ថ្នាក់ត្រូវបានចេញ។ សូមត្រួតពិនិត្យ។\"}"
|
||||
}
|
|
@ -44,6 +44,15 @@
|
|||
"AppId": "5c56d1644966f078bfb90c71",
|
||||
"IsDevMode": true
|
||||
},
|
||||
"data":{
|
||||
"RootPath":"../data"
|
||||
},
|
||||
"etcd": {
|
||||
"Url": ["127.0.0.1:2379"],
|
||||
"UserName": "",
|
||||
"Password": "",
|
||||
"DialTimeout": 60
|
||||
},
|
||||
"costum": {
|
||||
"MgoRpcCliNet": "tcp",
|
||||
"MgoRpcCliAddr": "127.0.0.1:8999",
|
||||
|
@ -51,11 +60,6 @@
|
|||
"RMQExchange": "win88",
|
||||
"RMQQosPrefetchCount": 2,
|
||||
"RMQQosPrefetchSize": 0,
|
||||
"RMQQosGlobal": true,
|
||||
"etcdurl": [
|
||||
"127.0.0.1:2379"
|
||||
],
|
||||
"etcduser": "",
|
||||
"etcdpwd": ""
|
||||
"RMQQosGlobal": true
|
||||
}
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"go.etcd.io/etcd/client/v3"
|
||||
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
|
||||
"mongo.games.com/game/dbproxy/mongo"
|
||||
|
@ -13,7 +13,7 @@ import (
|
|||
)
|
||||
|
||||
func init() {
|
||||
etcd.Register(etcd.ETCDKEY_SYS_PLT_DBCFG_PREFIX, webapi.PlatformDbConfig{}, func(completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
|
||||
etcd.Register(etcd.ETCDKEY_SYS_PLT_DBCFG_PREFIX, webapi.PlatformDbConfig{}, func(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
|
||||
if event.Type == clientv3.EventTypeDelete {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -7,53 +7,44 @@ import (
|
|||
"net/rpc"
|
||||
|
||||
"mongo.games.com/goserver/core"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
"mongo.games.com/goserver/core/etcd"
|
||||
"mongo.games.com/goserver/core/module"
|
||||
|
||||
_ "mongo.games.com/game"
|
||||
_ "mongo.games.com/game/dbproxy/mq"
|
||||
|
||||
"mongo.games.com/game/common"
|
||||
_ "mongo.games.com/game/dbproxy/mq"
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
_ "mongo.games.com/game/srvdata"
|
||||
)
|
||||
|
||||
var rabbitMqConsumer *mq.RabbitMQConsumer
|
||||
|
||||
func init() {
|
||||
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
|
||||
model.InitGameParam()
|
||||
rabbitMqConsumer = mq.NewRabbitMQConsumer(common.CustomConfig.GetString("RabbitMQURL"), rabbitmq.Exchange{Name: common.CustomConfig.GetString("RMQExchange"), Durable: true})
|
||||
if rabbitMqConsumer != nil {
|
||||
rabbitMqConsumer.Start()
|
||||
}
|
||||
|
||||
//尝试初始化
|
||||
svc.GetOnePlayerIdFromBucket()
|
||||
return nil
|
||||
})
|
||||
|
||||
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {
|
||||
if rabbitMqConsumer != nil {
|
||||
rabbitMqConsumer.Stop()
|
||||
}
|
||||
model.ShutdownRPClient()
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 自定义配置文件
|
||||
model.InitGameParam()
|
||||
// package模块
|
||||
defer core.ClosePackages()
|
||||
core.LoadPackages("config.json")
|
||||
|
||||
rpc.HandleHTTP() // 采用http协议作为rpc载体
|
||||
lis, err := net.Listen(common.CustomConfig.GetString("MgoRpcCliNet"), common.CustomConfig.GetString("MgoRpcCliAddr"))
|
||||
if err != nil {
|
||||
log.Fatalln("fatal error: ", err)
|
||||
}
|
||||
go http.Serve(lis, nil)
|
||||
|
||||
waitor := module.Start()
|
||||
waitor.Wait("main()")
|
||||
// core hook
|
||||
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
|
||||
etcd.Start()
|
||||
mq.StartConsumer(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true)
|
||||
mq.StartPublisher(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true, common.CustomConfig.GetInt("RMQPublishBacklog"))
|
||||
// 尝试初始化玩家id
|
||||
svc.GetOnePlayerIdFromBucket()
|
||||
// rpc 服务
|
||||
rpc.HandleHTTP() // 采用http协议作为rpc载体
|
||||
lis, err := net.Listen(common.CustomConfig.GetString("MgoRpcCliNet"), common.CustomConfig.GetString("MgoRpcCliAddr"))
|
||||
if err != nil {
|
||||
log.Fatalln("rpc start fatal error: ", err)
|
||||
}
|
||||
go http.Serve(lis, nil)
|
||||
return nil
|
||||
})
|
||||
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {
|
||||
return nil
|
||||
})
|
||||
// module模块
|
||||
w := module.Start()
|
||||
w.Wait("main()")
|
||||
}
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
package mongo
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
newMongo "go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
)
|
||||
|
||||
var globalMongoSession *newMongo.Client
|
||||
|
||||
func mongoURI(user, password, host string, port int32, options string) string {
|
||||
login := ""
|
||||
if user != "" {
|
||||
login = user + ":" + password + "@"
|
||||
}
|
||||
if host == "" {
|
||||
host = "localhost"
|
||||
}
|
||||
if port == 0 {
|
||||
port = 27017
|
||||
}
|
||||
if options != "" {
|
||||
options = "?" + options
|
||||
}
|
||||
url := fmt.Sprintf("mongodb://%s%s:%d/admin%s", login, host, port, options)
|
||||
return url
|
||||
}
|
||||
|
||||
func NewMongoClient() (*newMongo.Client, error) {
|
||||
if globalMongoSession != nil {
|
||||
return globalMongoSession, nil
|
||||
}
|
||||
cfg, b := MgoSessionMgrSington.GetCfg(G_P, "user")
|
||||
if !b {
|
||||
return nil, errors.New("not db")
|
||||
}
|
||||
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
client, err := newMongo.Connect(ctx, options.Client().ApplyURI(mongoURI(cfg.Username, cfg.Password, cfg.HostName, cfg.HostPort, cfg.Options)))
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("NewMongoClient error:%v", err)
|
||||
return nil, err
|
||||
}
|
||||
if client == nil {
|
||||
return nil, errors.New("not db client")
|
||||
}
|
||||
globalMongoSession = client
|
||||
return client, nil
|
||||
}
|
|
@ -143,8 +143,10 @@ func newMgoSession(user, password, host string, port int32, options string) (s *
|
|||
// [mongodb://][user:pass@]host1[:port1][,host2[:port2],...][/database][?options]
|
||||
url := fmt.Sprintf("mongodb://%s%s:%d/admin%s", login, host, port, options)
|
||||
//fmt.Println(url)
|
||||
logger.Logger.Tracef("newMgoSession url:%s", url)
|
||||
session, err := mgo.Dial(url)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("newMgoSession err:%v", err)
|
||||
return nil, err
|
||||
}
|
||||
session.SetSafe(&mgo.Safe{})
|
||||
|
@ -240,7 +242,7 @@ func (msm *MgoSessionMgr) GetPltMgoSession(plt, key string) *Session {
|
|||
if c, ok := msm.GetCfg(plt, key); ok {
|
||||
s, err := newMgoSession(c.Username, c.Password, c.HostName, c.HostPort, c.Options)
|
||||
if s == nil || err != nil {
|
||||
logger.Logger.Error("GetPltMgoSession(%s,%s) err:%v", plt, key, err)
|
||||
logger.Logger.Errorf("GetPltMgoSession(%s,%s) err:%v config:%+v", plt, key, err, *c)
|
||||
return nil
|
||||
}
|
||||
ss := &Session{Session: s, cfg: c}
|
||||
|
|
|
@ -2,11 +2,13 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -14,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.APILog
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
package mq
|
||||
|
||||
func init() {
|
||||
//mq.RegisteSubscriber(model.ClientLogCollName, func(e broker.Event) (err error) {
|
||||
// msg := e.Message()
|
||||
// if msg != nil {
|
||||
// defer func() {
|
||||
// if err != nil {
|
||||
// mq.BackUp(e, err)
|
||||
// }
|
||||
//
|
||||
// e.Ack()
|
||||
//
|
||||
// recover()
|
||||
// }()
|
||||
//
|
||||
// var log model.ClientLog
|
||||
// err = json.Unmarshal(msg.Body, &log)
|
||||
// if err != nil {
|
||||
// logger.Logger.Errorf("[mq] %s %v", model.ClientLogCollName, err)
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// logger.Logger.Tracef("[mq] %s %v", model.ClientLogCollName, string(msg.Body))
|
||||
//
|
||||
// data := map[string]interface{}{}
|
||||
// err = json.Unmarshal([]byte(log.Data), &data)
|
||||
// if err != nil {
|
||||
// logger.Logger.Errorf("[mq] %s %v", model.ClientLogCollName, err)
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// // 获取平台id
|
||||
// platform := log.Platform
|
||||
// if log.Platform == "" {
|
||||
// id, ok := data["platform"]
|
||||
// if ok {
|
||||
// platform = string(id.([]byte))
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// data["ts"] = log.Ts
|
||||
// if log.Snid > 0 {
|
||||
// data["snid"] = log.Snid
|
||||
// }
|
||||
//
|
||||
// c := svc.ClientLogStartCollection(platform)
|
||||
// if c != nil {
|
||||
// err = c.Insert(data)
|
||||
// }
|
||||
//
|
||||
// return
|
||||
// }
|
||||
// return nil
|
||||
//}, broker.Queue(model.ClientLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
}
|
|
@ -2,11 +2,13 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -14,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.CoinGiveLog
|
||||
|
|
|
@ -2,11 +2,13 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -14,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.CoinLog
|
||||
|
@ -30,7 +26,7 @@ func init() {
|
|||
}
|
||||
|
||||
if log.Count == 0 { //玩家冲账探针
|
||||
RabbitMQPublisher.Send(model.TopicProbeCoinLogAck, log)
|
||||
mq.Send(model.TopicProbeCoinLogAck, log)
|
||||
} else {
|
||||
c := svc.CoinLogsCollection(log.Platform)
|
||||
if c != nil {
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package mq
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
mq.RegisterSubscriber(mq.DBCustomLog, func(e broker.Event) (err error) {
|
||||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
e.Ack()
|
||||
}()
|
||||
|
||||
var log model.CustomLog
|
||||
err = json.Unmarshal(msg.Body, &log)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
c := svc.DbCustomLogCollection(log.Platform)
|
||||
if c != nil {
|
||||
err = c.Insert(log)
|
||||
}
|
||||
return
|
||||
}
|
||||
return nil
|
||||
}, broker.Queue(mq.DBCustomLog), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
}
|
|
@ -2,11 +2,13 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -14,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.FriendRecord
|
||||
|
|
|
@ -2,12 +2,14 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -15,13 +17,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.GameDetailedLog
|
||||
|
|
|
@ -2,11 +2,13 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -14,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.GamePlayerListLog
|
||||
|
|
|
@ -1,71 +1,310 @@
|
|||
package mq
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/astaxie/beego/cache"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
newMongo "go.mongodb.org/mongo-driver/mongo"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
|
||||
"mongo.games.com/game/common"
|
||||
"mongo.games.com/game/dbproxy/mongo"
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
)
|
||||
|
||||
var InviteNumCache = cache.NewMemoryCache()
|
||||
|
||||
func init() {
|
||||
mq.RegisterSubscriber(model.EvtBindInvite, func(e broker.Event) (err error) {
|
||||
mq.RegisterSubscriber(model.EvtInvite, func(e broker.Event) (err error) {
|
||||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.BindInvite
|
||||
var log model.EvtInviteMsg
|
||||
err = json.Unmarshal(msg.Body, &log)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite json.Unmarshal error:%v msg:%v", err, string(msg.Body))
|
||||
return
|
||||
}
|
||||
logger.Logger.Tracef("EvtInvite log:%+v", log)
|
||||
|
||||
// 绑定
|
||||
err = svc.BindInviteSnId(log.Platform, log.SnId, log.InviteSnId, log.Ts)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("BindInviteSnId error:%v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
name := fmt.Sprintf("%v", log.InviteSnId)
|
||||
b := InviteNumCache.Get(name)
|
||||
n, _ := b.(int32)
|
||||
if n > 0 {
|
||||
n++
|
||||
} else {
|
||||
n, err = svc.GetInviteNum(log.Platform, log.InviteSnId)
|
||||
var addRechargeScore bool
|
||||
if log.Tp != common.InviteScoreCheckWeek {
|
||||
addRechargeScore, err = svc.CheckInviteScore(&log.InviteScore)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("BindInviteSnId error:%v", err)
|
||||
logger.Logger.Errorf("EvtInvite SaveInviteScore error:%v msg:%+v %+v", err, log.InviteScore, log)
|
||||
return err
|
||||
}
|
||||
}
|
||||
InviteNumCache.Put(name, n, int64(time.Hour.Seconds()))
|
||||
|
||||
// 更新绑定数量
|
||||
RabbitMQPublisher.Send(model.AckBindNum, &model.BindNum{
|
||||
SnId: log.InviteSnId,
|
||||
Num: n,
|
||||
now := time.Unix(log.Ts, 0).Local() // 数据创建时间
|
||||
|
||||
get := func(snid int32) (*model.EvtInviteAckMsg, error) {
|
||||
if snid == 0 {
|
||||
return nil, errors.New("not found")
|
||||
}
|
||||
n := new(model.EvtInviteAckMsg)
|
||||
n.Platform = log.Platform
|
||||
n.Snid = snid
|
||||
n.Score, n.Num, n.Money, _, err = svc.GetInviteData(log.Platform, snid)
|
||||
return n, err
|
||||
}
|
||||
|
||||
// 重置积分
|
||||
reset := func(snid int32) error {
|
||||
if snid == 0 {
|
||||
return nil
|
||||
}
|
||||
_, _, _, ts, err := svc.GetInviteData(log.Platform, snid) // 上次更新时间
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite GetInviteData error:%v snid:%v", err, snid)
|
||||
return err
|
||||
}
|
||||
inSameWeek := common.InSameWeek(ts, now)
|
||||
if !inSameWeek {
|
||||
err = svc.ClearInviteScore(log.Platform, snid, now)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite ClearInviteScore error:%v snid:%v", err, snid)
|
||||
return err
|
||||
}
|
||||
msg, err := get(snid)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite get error:%v snid:%v", err, snid)
|
||||
return err
|
||||
}
|
||||
msg.Score = 0
|
||||
mq.Send(model.EvtInviteAck, msg)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 当前玩家积分是否跨周重置
|
||||
tmpSnid := log.SnId
|
||||
for i := 0; i < 6; i++ {
|
||||
if tmpSnid > 0 {
|
||||
err = reset(tmpSnid)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite reset %v error:%v snid:%v", i, err, tmpSnid)
|
||||
return err
|
||||
}
|
||||
}
|
||||
if tmpSnid > 0 {
|
||||
tmpSnid, err = svc.GetPSnId(log.Platform, tmpSnid)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite GetPSnId %v error:%v snid:%v", i, err, tmpSnid)
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mongoClient, err := mongo.NewMongoClient()
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite NewMongoClient error:%v", err)
|
||||
return err
|
||||
}
|
||||
session, err := mongoClient.StartSession()
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite StartSession error:%v", err)
|
||||
return err
|
||||
}
|
||||
defer session.EndSession(context.Background())
|
||||
// 事务不支持创建集合和索引,需要提前创建
|
||||
svc.InviteScoreCollection(log.Platform)
|
||||
svc.RankInviteCollection(log.Platform)
|
||||
|
||||
var notifySnId []int32
|
||||
// 修改积分
|
||||
err = newMongo.WithSession(context.Background(), session, func(sc newMongo.SessionContext) error {
|
||||
err := session.StartTransaction()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 增加积分
|
||||
add := func(psnid, snid, level, tp int32, score, money, rate int64, addMoney bool) error {
|
||||
if psnid <= 0 {
|
||||
return nil
|
||||
}
|
||||
notifySnId = append(notifySnId, psnid)
|
||||
err = svc.AddInviteScore(mongoClient, sc, log.Platform, psnid, snid, level, tp, score*rate/10000, rate, money, now, addMoney)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite add error:%v psnid:%v score:%v rate:%v", err, psnid, score, rate)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
getPSnId := func(platform string, snid int32) (int32, error) {
|
||||
cfg, b := mongo.MgoSessionMgrSington.GetCfg(platform, svc.PlayerDBName)
|
||||
if !b {
|
||||
return 0, errors.New("not db")
|
||||
}
|
||||
playerDB := mongoClient.Database(cfg.Database)
|
||||
type M struct {
|
||||
PSnId int32
|
||||
}
|
||||
res := &M{}
|
||||
c := playerDB.Collection(svc.PlayerCollName)
|
||||
err = c.FindOne(context.TODO(), bson.D{{"snid", snid}}).Decode(res)
|
||||
if err != nil && !errors.Is(err, newMongo.ErrNoDocuments) {
|
||||
return 0, err
|
||||
}
|
||||
return res.PSnId, nil
|
||||
}
|
||||
|
||||
switch log.Tp {
|
||||
case common.InviteScoreTypeBind, common.InviteScoreTypeBindTel:
|
||||
// 更新绑定数量
|
||||
// 更新邀请积分
|
||||
// 1.邀请人增加积分
|
||||
err = add(log.InviteSnId, log.SnId, 0, log.Tp, log.Score, log.Money, 10000, false)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
// 2.上级增加积分
|
||||
var psnid int32
|
||||
if len(log.Rate) > 0 {
|
||||
psnid, err = getPSnId(log.Platform, log.InviteSnId)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
logger.Logger.Errorf("EvtInvite GetPSnId 2 error:%v snid:%v", err, log.InviteSnId)
|
||||
return err
|
||||
}
|
||||
if psnid > 0 {
|
||||
err = add(psnid, log.InviteSnId, 1, log.Tp, log.Score, log.Money, log.Rate[0], false)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(log.Rate) > 1 && psnid > 0 {
|
||||
psnid, err = getPSnId(log.Platform, psnid)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
logger.Logger.Errorf("EvtInvite GetPSnId 2 error:%v snid:%v", err, log.InviteSnId)
|
||||
return err
|
||||
}
|
||||
if psnid > 0 {
|
||||
err = add(psnid, log.InviteSnId, 2, log.Tp, log.Score, log.Money, log.Rate[1], false)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(log.Rate) > 2 && psnid > 0 {
|
||||
psnid, err = getPSnId(log.Platform, psnid)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
logger.Logger.Errorf("EvtInvite GetPSnId 3 error:%v snid:%v", err, log.InviteSnId)
|
||||
return err
|
||||
}
|
||||
if psnid > 0 {
|
||||
err = add(psnid, log.InviteSnId, 3, log.Tp, log.Score, log.Money, log.Rate[2], false)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case common.InviteScoreTypePay:
|
||||
// 更新充值积分,上级积分增加
|
||||
add(log.SnId, 0, 0, common.InviteScoreTypePayMe, log.Score, log.Money, 10000, false)
|
||||
var psnid int32
|
||||
if len(log.Rate) > 0 {
|
||||
err = add(log.InviteSnId, log.SnId, 1, log.Tp, log.Score, log.Money, log.Rate[0], true)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
psnid, err = getPSnId(log.Platform, log.InviteSnId)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
logger.Logger.Errorf("EvtInvite GetPSnId 3 error:%v snid:%v", err, log.InviteSnId)
|
||||
return err
|
||||
}
|
||||
}
|
||||
if len(log.Rate) > 1 && psnid > 0 {
|
||||
err = add(psnid, log.SnId, 2, log.Tp, log.Score, log.Money, log.Rate[1], false)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
psnid, err = getPSnId(log.Platform, psnid)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
logger.Logger.Errorf("EvtInvite GetPSnId 4 error:%v snid:%v", err, psnid)
|
||||
return err
|
||||
}
|
||||
}
|
||||
if len(log.Rate) > 2 && psnid > 0 {
|
||||
err = add(psnid, log.SnId, 3, log.Tp, log.Score, log.Money, log.Rate[2], false)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
}
|
||||
if addRechargeScore {
|
||||
err = add(log.InviteSnId, log.SnId, 1, common.InviteScoreTypeRecharge, log.RechargeScore, log.Money, 10000, true)
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
case common.InviteScoreTypeRecharge:
|
||||
// 更新自己的积分
|
||||
if addRechargeScore {
|
||||
err = add(log.InviteSnId, log.SnId, 1, log.Tp, log.RechargeScore, log.Money, 10000, true)
|
||||
} else {
|
||||
// 只增加充值金额
|
||||
err = add(log.InviteSnId, log.SnId, 0, log.Tp, 0, log.Money, 10000, true)
|
||||
}
|
||||
if err != nil {
|
||||
session.AbortTransaction(sc)
|
||||
return err
|
||||
}
|
||||
|
||||
case common.InviteScoreCheckWeek:
|
||||
|
||||
default:
|
||||
logger.Logger.Errorf("EvtInvite tp error, %v", log.Tp)
|
||||
return err
|
||||
}
|
||||
|
||||
// 提交事务
|
||||
err = session.CommitTransaction(sc)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite CommitTransaction error:%v", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite WithSession error:%v", err)
|
||||
return err
|
||||
}
|
||||
// 通知变更
|
||||
for _, v := range notifySnId {
|
||||
msg, err := get(v)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("EvtInvite add find error:%v psnid:%v score:%v rate:%v", err, v, log.Score, log.Rate)
|
||||
return err
|
||||
}
|
||||
mq.Send(model.EvtInviteAck, msg)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
return nil
|
||||
}, broker.Queue(model.EvtBindInvite), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
}, broker.Queue(model.EvtInvite), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
}
|
||||
|
|
|
@ -2,11 +2,13 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -14,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.ItemLog
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
package mq
|
||||
|
||||
//func init() {
|
||||
// mq.RegisteSubscriber(model.JackPotLogCollName, func(e broker.Event) (err error) {
|
||||
// msg := e.Message()
|
||||
// if msg != nil {
|
||||
// defer func() {
|
||||
// if err != nil {
|
||||
// mq.BackUp(e, err)
|
||||
// }
|
||||
//
|
||||
// e.Ack()
|
||||
//
|
||||
// recover()
|
||||
// }()
|
||||
//
|
||||
// var log model.JackPotLog
|
||||
// err = json.Unmarshal(msg.Body, &log)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// c := svc.JackPotLogsCollection(log.Platform)
|
||||
// if c != nil {
|
||||
// _, err = c.Upsert(bson.M{"_id": log.LogId}, log)
|
||||
// }
|
||||
// return
|
||||
// }
|
||||
// return nil
|
||||
// }, broker.Queue(model.JackPotLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
//}
|
|
@ -2,11 +2,13 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -14,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.LoginLog
|
||||
|
|
|
@ -16,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.OnlineLog
|
||||
|
|
|
@ -2,14 +2,16 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
|
||||
"mongo.games.com/goserver/core"
|
||||
"mongo.games.com/goserver/core/basic"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -18,13 +20,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.PlayerRankScore
|
||||
|
@ -53,13 +49,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.RankPlayerCoin
|
||||
|
@ -82,4 +72,61 @@ func init() {
|
|||
}
|
||||
return nil
|
||||
}, broker.Queue(model.MQRankPlayerCoin), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
|
||||
//等级榜
|
||||
mq.RegisterSubscriber(model.MQRankPlayerLevel, func(e broker.Event) (err error) {
|
||||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
e.Ack()
|
||||
}()
|
||||
|
||||
var log model.PlayerLevelInfo
|
||||
err = json.Unmarshal(msg.Body, &log)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
logger.Logger.Tracef("SubscriberRankPlayerLevel: %+v", log)
|
||||
|
||||
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
|
||||
err := svc.RankPlayerLevelUpsert(&log)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("RankPlayerCoinUpsert err: %v", err)
|
||||
}
|
||||
return nil
|
||||
}), true)
|
||||
|
||||
return
|
||||
}
|
||||
return nil
|
||||
}, broker.Queue(model.MQRankPlayerLevel), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
// 赛季通行证积分
|
||||
mq.RegisterSubscriber(model.MQRankPlayerPermit, func(e broker.Event) (err error) {
|
||||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
e.Ack()
|
||||
}()
|
||||
|
||||
var log model.PermitScore
|
||||
err = json.Unmarshal(msg.Body, &log)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
logger.Logger.Tracef("SubscriberRankPlayerPermit: %+v", log)
|
||||
|
||||
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
|
||||
err := svc.RankPlayerPermitUpsert(&log)
|
||||
if err != nil {
|
||||
logger.Logger.Errorf("RankPlayerPermitUpsert err: %v", err)
|
||||
}
|
||||
return nil
|
||||
}), true)
|
||||
|
||||
return
|
||||
}
|
||||
return nil
|
||||
}, broker.Queue(model.MQRankPlayerPermit), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
}
|
||||
|
|
|
@ -2,11 +2,13 @@ package mq
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -14,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.SceneCoinLog
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package mq
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
mq.RegisterSubscriber(mq.DBVipGiftLog, func(e broker.Event) (err error) {
|
||||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
e.Ack()
|
||||
}()
|
||||
|
||||
var log model.DbVip
|
||||
err = json.Unmarshal(msg.Body, &log)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
c := svc.DbVipLogCollection(log.Platform)
|
||||
if c != nil {
|
||||
err = c.Insert(log)
|
||||
}
|
||||
return
|
||||
}
|
||||
return nil
|
||||
}, broker.Queue(mq.DBVipGiftLog), broker.DisableAutoAck(), rabbitmq.DurableQueue())
|
||||
}
|
|
@ -3,11 +3,12 @@ package mq
|
|||
import (
|
||||
"encoding/json"
|
||||
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
|
||||
"mongo.games.com/game/dbproxy/svc"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core/broker"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -15,13 +16,7 @@ func init() {
|
|||
msg := e.Message()
|
||||
if msg != nil {
|
||||
defer func() {
|
||||
if err != nil {
|
||||
mq.BackUp(e, err)
|
||||
}
|
||||
|
||||
e.Ack()
|
||||
|
||||
recover()
|
||||
}()
|
||||
|
||||
var log model.WelfareLog
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
package mq
|
||||
|
||||
import (
|
||||
"mongo.games.com/game/common"
|
||||
"mongo.games.com/game/mq"
|
||||
"mongo.games.com/goserver/core"
|
||||
"mongo.games.com/goserver/core/broker/rabbitmq"
|
||||
)
|
||||
|
||||
var RabbitMQPublisher *mq.RabbitMQPublisher
|
||||
|
||||
func init() {
|
||||
////首先加载游戏配置
|
||||
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
|
||||
//rabbitmq打开链接
|
||||
RabbitMQPublisher = mq.NewRabbitMQPublisher(common.CustomConfig.GetString("RabbitMQURL"), rabbitmq.Exchange{Name: common.CustomConfig.GetString("RMQExchange"), Durable: true}, common.CustomConfig.GetInt("RMQPublishBacklog"))
|
||||
if RabbitMQPublisher != nil {
|
||||
err := RabbitMQPublisher.Start()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {
|
||||
//关闭rabbitmq连接
|
||||
if RabbitMQPublisher != nil {
|
||||
RabbitMQPublisher.Stop()
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
package svc
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/globalsign/mgo"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"mongo.games.com/game/dbproxy/mongo"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
"net/rpc"
|
||||
)
|
||||
|
||||
var (
|
||||
AnnouncerLogDBErr = errors.New("log_announcerlog db open failed.")
|
||||
)
|
||||
|
||||
func AnnouncerLogCollection(plt string) *mongo.Collection {
|
||||
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.AnnouncerLogDBName)
|
||||
if s != nil {
|
||||
c, first := s.DB().C(model.AnnouncerLogCollName)
|
||||
if first {
|
||||
}
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func InsertAnnouncerLog(logs ...*model.AnnouncerLog) (err error) {
|
||||
clog := AnnouncerLogCollection(logs[0].Platform)
|
||||
if clog == nil {
|
||||
return
|
||||
}
|
||||
switch len(logs) {
|
||||
case 0:
|
||||
return errors.New("no data")
|
||||
case 1:
|
||||
err = clog.Insert(logs[0])
|
||||
default:
|
||||
docs := make([]interface{}, 0, len(logs))
|
||||
for _, log := range logs {
|
||||
docs = append(docs, log)
|
||||
}
|
||||
err = clog.Insert(docs...)
|
||||
}
|
||||
if err != nil {
|
||||
logger.Logger.Warn("InsertAnnouncerLog error:", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 取最新100条数据
|
||||
func FetchAnnouncerLog(plt string) (recs []model.AnnouncerLog, err error) {
|
||||
query := bson.M{}
|
||||
err = AnnouncerLogCollection(plt).Find(query).Sort("-_id").Limit(100).All(&recs)
|
||||
return
|
||||
}
|
||||
|
||||
type AnnouncerLogSvc struct {
|
||||
}
|
||||
|
||||
func (svc *AnnouncerLogSvc) InsertAnnouncerLog(args []*model.AnnouncerLog, ret *bool) (err error) {
|
||||
err = InsertAnnouncerLog(args...)
|
||||
if err == nil {
|
||||
*ret = true
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (svc *AnnouncerLogSvc) FetchAnnouncerLog(args *model.FetchAnnouncerLogArgs, ret *[]model.AnnouncerLog) (err error) {
|
||||
*ret, err = FetchAnnouncerLog(args.Plt)
|
||||
return
|
||||
}
|
||||
|
||||
func (svc *AwardLogSvc) UpsertAnnouncerLog(args *model.FetchAnnouncerLogArgs, ret *model.AnnouncerLog) error {
|
||||
cc := AnnouncerLogCollection(args.Plt)
|
||||
if cc == nil {
|
||||
return nil
|
||||
}
|
||||
_, err := cc.Upsert(bson.M{"platform": args.Plt}, args.Data)
|
||||
if err != nil && err != mgo.ErrNotFound {
|
||||
logger.Logger.Error("UpsertAnnouncerLog is err: ", err)
|
||||
return err
|
||||
}
|
||||
ret = args.Data
|
||||
return nil
|
||||
}
|
||||
func init() {
|
||||
rpc.Register(new(AnnouncerLogSvc))
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package svc
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"mongo.games.com/game/dbproxy/mongo"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
"net/rpc"
|
||||
)
|
||||
|
||||
var (
|
||||
AwardLogDBErr = errors.New("log_awardlog db open failed.")
|
||||
)
|
||||
|
||||
func AwardLogCollection(plt string) *mongo.Collection {
|
||||
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.AwardLogDBName)
|
||||
if s != nil {
|
||||
c, first := s.DB().C(model.AwardLogCollName)
|
||||
if first {
|
||||
}
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func FetchAwardLog(plt string) (recs model.AwardLog, err error) {
|
||||
err = AwardLogCollection(plt).Find(bson.M{}).One(&recs)
|
||||
return
|
||||
}
|
||||
|
||||
type AwardLogSvc struct {
|
||||
}
|
||||
|
||||
func (svc *AwardLogSvc) FetchAwardLog(args *model.FetchAwardLogArgs, ret *model.AwardLog) (err error) {
|
||||
*ret, err = FetchAwardLog(args.Plt)
|
||||
return
|
||||
}
|
||||
|
||||
func (svc *AwardLogSvc) UpsertAwardLog(args *model.FetchAwardLogArgs, ret *model.AwardLog) error {
|
||||
cc := AwardLogCollection(args.Plt)
|
||||
if cc == nil {
|
||||
return AwardLogDBErr
|
||||
}
|
||||
_, err := cc.Upsert(bson.M{}, args.Data)
|
||||
if err != nil {
|
||||
logger.Logger.Error("UpsertAwardLog is err: ", err)
|
||||
return err
|
||||
}
|
||||
ret = args.Data
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
rpc.Register(new(AwardLogSvc))
|
||||
}
|
|
@ -31,6 +31,8 @@ func CoinLogsCollection(plt string) *mongo.Collection {
|
|||
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true})
|
||||
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"cointype"}, Background: true, Sparse: true})
|
||||
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
|
||||
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"channel"}, Background: true, Sparse: true})
|
||||
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"-ts", "logtype", "cointype", "channel"}, Background: true, Sparse: true})
|
||||
}
|
||||
return c_coinlogrec
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package svc
|
||||
|
||||
import (
|
||||
"github.com/globalsign/mgo"
|
||||
"mongo.games.com/game/dbproxy/mongo"
|
||||
"mongo.games.com/game/model"
|
||||
)
|
||||
|
||||
func DbCustomLogCollection(plt string) *mongo.Collection {
|
||||
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.DbCustomLogDBName)
|
||||
if s != nil {
|
||||
d, first := s.DB().C(model.DbCustomLogCollName)
|
||||
if first {
|
||||
d.EnsureIndex(mgo.Index{Key: []string{"cycleid"}, Background: true, Sparse: true})
|
||||
d.EnsureIndex(mgo.Index{Key: []string{"-startts", "cycleid"}, Background: true, Sparse: true})
|
||||
d.EnsureIndex(mgo.Index{Key: []string{"roomconfigid"}, Background: true, Sparse: true})
|
||||
d.EnsureIndex(mgo.Index{Key: []string{"roomid"}, Background: true, Sparse: true})
|
||||
d.EnsureIndex(mgo.Index{Key: []string{"startts"}, Background: true, Sparse: true})
|
||||
d.EnsureIndex(mgo.Index{Key: []string{"endts"}, Background: true, Sparse: true})
|
||||
d.EnsureIndex(mgo.Index{Key: []string{"-endts"}, Background: true, Sparse: true})
|
||||
}
|
||||
return d
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
package svc
|
||||
|
||||
import (
|
||||
"github.com/globalsign/mgo"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"mongo.games.com/game/dbproxy/mongo"
|
||||
"mongo.games.com/game/model"
|
||||
"mongo.games.com/goserver/core/logger"
|
||||
"net/rpc"
|
||||
)
|
||||
|
||||
func DbBagChangeDollLogCollection(plt string) *mongo.Collection {
|
||||
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.BagChangeDollLogDBName)
|
||||
if s != nil {
|
||||
dollRec, first := s.DB().C(model.BagChangeDollLogCollName)
|
||||
if first {
|
||||
dollRec.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
|
||||
}
|
||||
return dollRec
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type DbBagChangeDollLogSvc struct {
|
||||
}
|
||||
|
||||
func (svc *DbBagChangeDollLogSvc) InsertDbBagChangeDollLog(args *model.DbBagChangeDollLogArgs, ret *bool) (err error) {
|
||||
clog := DbBagChangeDollLogCollection(args.Log.Platform)
|
||||
if clog == nil {
|
||||
return
|
||||
}
|
||||
logger.Logger.Trace("DbBagChangeDollLogSvc.InsertDbBagChangeDollLog")
|
||||
err = clog.Insert(args.Log)
|
||||
if err != nil {
|
||||
logger.Logger.Error("DbBagChangeDollLogSvc.InsertDbBagChangeDollLog error:", err)
|
||||
return
|
||||
}
|
||||
*ret = true
|
||||
return
|
||||
}
|
||||
func (svc *DbBagChangeDollLogSvc) GetDbBagChangeDollLog(args *model.DbBagChangeDollLogArgs, dollLog *[]*model.BagChangeDollLog) (err error) {
|
||||
clog := DbBagChangeDollLogCollection(args.Log.Platform)
|
||||
if clog == nil {
|
||||
logger.Logger.Error("GetDbBagChangeDollLog == nil")
|
||||
return nil
|
||||
}
|
||||
logger.Logger.Trace("DbBagChangeDollLogSvc.GetDbBagChangeDollLog")
|
||||
err = clog.Find(bson.M{"snid": args.Log.Snid}).All(dollLog)
|
||||
if err != nil {
|
||||
logger.Logger.Error("DbBagChangeDollLogSvc.GetDbBagChangeDollLog error:", err)
|
||||
return nil
|
||||
}
|
||||
return
|
||||
}
|
||||
func (svc *DbBagChangeDollLogSvc) UpdateDbShopState(args *model.DbBagChangeDollLogArgs, ret *bool) (err error) {
|
||||
clog := DbBagChangeDollLogCollection(args.Log.Platform)
|
||||
if clog == nil {
|
||||
logger.Logger.Error("UpdateDbShopState == nil")
|
||||
return nil
|
||||
}
|
||||
logger.Logger.Trace("DbBagChangeDollLogSvc.UpdateDbShopState")
|
||||
err = clog.UpdateId(args.Log.LogId, bson.M{"$set": bson.M{"state": args.Log.State}})
|
||||
if err != nil {
|
||||
logger.Logger.Error("DbBagChangeDollLogSvc.UpdateDbShopState error:", err)
|
||||
return nil
|
||||
}
|
||||
*ret = true
|
||||
return
|
||||
}
|
||||
|
||||
func init() {
|
||||
rpc.Register(new(DbBagChangeDollLogSvc))
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package svc
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/globalsign/mgo"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"mongo.games.com/game/dbproxy/mongo"
|
||||
|
@ -18,6 +19,8 @@ func DbShopLogCollection(plt string) *mongo.Collection {
|
|||
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"pageid"}, Background: true, Sparse: true})
|
||||
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"state"}, Background: true, Sparse: true})
|
||||
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"shopid"}, Background: true, Sparse: true})
|
||||
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
|
||||
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"-ts"}, Background: true, Sparse: true})
|
||||
}
|
||||
return dbShopRec
|
||||
}
|
||||
|
@ -98,6 +101,29 @@ func (svc *DbShopLogSvc) GetDbShopLogsByState(args *model.DbShopLogArgs, dbShops
|
|||
}
|
||||
return
|
||||
}
|
||||
|
||||
func GetMoneyTotal(platform string, snid int32) int64 {
|
||||
c := DbShopLogCollection(platform)
|
||||
if c == nil {
|
||||
logger.Logger.Error("UpdateDbShopState == nil")
|
||||
return 0
|
||||
}
|
||||
var err error
|
||||
type m struct {
|
||||
Total int64 `bson:"total"`
|
||||
}
|
||||
tc := new(m)
|
||||
err = c.Pipe([]bson.M{
|
||||
{"$match": bson.M{"snid": snid, "state": 1, "consumetypenum": bson.M{"$gt": 0}}},
|
||||
{"$group": bson.M{"_id": nil, "total": bson.M{"$sum": "$consumetypenum"}}},
|
||||
}).AllowDiskUse().One(tc)
|
||||
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
|
||||
logger.Logger.Error("GetMoneyTotal error:", err)
|
||||
return 0
|
||||
}
|
||||
return tc.Total
|
||||
}
|
||||
|
||||
func init() {
|
||||
rpc.Register(new(DbShopLogSvc))
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue