diff --git a/bin/json/game_drop.json b/bin/json/game_drop.json
new file mode 100644
index 000000000..0b9014142
--- /dev/null
+++ b/bin/json/game_drop.json
@@ -0,0 +1,756 @@
+[
+ {
+ "id": 1,
+ "dropid": 1001,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10001",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 2,
+ "dropid": 1001,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10002",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 3,
+ "dropid": 1001,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10003",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 4,
+ "dropid": 1002,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10004",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 5,
+ "dropid": 1002,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10005",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 6,
+ "dropid": 1002,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10006",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 7,
+ "dropid": 1003,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10011",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 333
+ },
+ {
+ "id": 8,
+ "dropid": 1003,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10012",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 333
+ },
+ {
+ "id": 9,
+ "dropid": 1003,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10013",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 333
+ },
+ {
+ "id": 10,
+ "dropid": 1004,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10014",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 333
+ },
+ {
+ "id": 11,
+ "dropid": 1004,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10015",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 333
+ },
+ {
+ "id": 12,
+ "dropid": 1004,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10016",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 333
+ },
+ {
+ "id": 13,
+ "dropid": 1005,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10021",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 333
+ },
+ {
+ "id": 14,
+ "dropid": 1005,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10022",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 333
+ },
+ {
+ "id": 15,
+ "dropid": 1005,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10023",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 333
+ },
+ {
+ "id": 16,
+ "dropid": 1006,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10024",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 333
+ },
+ {
+ "id": 17,
+ "dropid": 1006,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10025",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 333
+ },
+ {
+ "id": 18,
+ "dropid": 1006,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10026",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 333
+ },
+ {
+ "id": 19,
+ "dropid": 1007,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10031",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ },
+ {
+ "id": 20,
+ "dropid": 1007,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10032",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ },
+ {
+ "id": 21,
+ "dropid": 1007,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10033",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ },
+ {
+ "id": 22,
+ "dropid": 1008,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10034",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ },
+ {
+ "id": 23,
+ "dropid": 1008,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10035",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ },
+ {
+ "id": 24,
+ "dropid": 1008,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10036",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ },
+ {
+ "id": 25,
+ "dropid": 1009,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10041",
+ "n": 1
+ }
+ ],
+ "star": 5,
+ "p": 333
+ },
+ {
+ "id": 26,
+ "dropid": 1009,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10042",
+ "n": 1
+ }
+ ],
+ "star": 5,
+ "p": 333
+ },
+ {
+ "id": 27,
+ "dropid": 1009,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10043",
+ "n": 1
+ }
+ ],
+ "star": 5,
+ "p": 333
+ },
+ {
+ "id": 28,
+ "dropid": 1010,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10044",
+ "n": 1
+ }
+ ],
+ "star": 5,
+ "p": 333
+ },
+ {
+ "id": 29,
+ "dropid": 1010,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10045",
+ "n": 1
+ }
+ ],
+ "star": 5,
+ "p": 333
+ },
+ {
+ "id": 30,
+ "dropid": 1010,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10046",
+ "n": 1
+ }
+ ],
+ "star": 5,
+ "p": 333
+ },
+ {
+ "id": 31,
+ "dropid": 1011,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10051",
+ "n": 1
+ }
+ ],
+ "star": 6,
+ "p": 333
+ },
+ {
+ "id": 32,
+ "dropid": 1011,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10052",
+ "n": 1
+ }
+ ],
+ "star": 6,
+ "p": 333
+ },
+ {
+ "id": 33,
+ "dropid": 1011,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10053",
+ "n": 1
+ }
+ ],
+ "star": 6,
+ "p": 333
+ },
+ {
+ "id": 34,
+ "dropid": 1012,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10054",
+ "n": 1
+ }
+ ],
+ "star": 6,
+ "p": 333
+ },
+ {
+ "id": 35,
+ "dropid": 1012,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10055",
+ "n": 1
+ }
+ ],
+ "star": 6,
+ "p": 333
+ },
+ {
+ "id": 36,
+ "dropid": 1012,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "10056",
+ "n": 1
+ }
+ ],
+ "star": 6,
+ "p": 333
+ },
+ {
+ "id": 37,
+ "dropid": 1013,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11001",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 38,
+ "dropid": 1013,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11002",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 39,
+ "dropid": 1013,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11003",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 333
+ },
+ {
+ "id": 40,
+ "dropid": 1014,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11004",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 1000
+ },
+ {
+ "id": 41,
+ "dropid": 1015,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11005",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 1000
+ },
+ {
+ "id": 42,
+ "dropid": 1016,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11006",
+ "n": 1
+ }
+ ],
+ "star": 1,
+ "p": 1000
+ },
+ {
+ "id": 43,
+ "dropid": 1017,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11011",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 1000
+ },
+ {
+ "id": 44,
+ "dropid": 1018,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11012",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 1000
+ },
+ {
+ "id": 45,
+ "dropid": 1019,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11013",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 1000
+ },
+ {
+ "id": 46,
+ "dropid": 1020,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11014",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 1000
+ },
+ {
+ "id": 47,
+ "dropid": 1021,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11015",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 1000
+ },
+ {
+ "id": 48,
+ "dropid": 1022,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11016",
+ "n": 1
+ }
+ ],
+ "star": 2,
+ "p": 1000
+ },
+ {
+ "id": 49,
+ "dropid": 1023,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11021",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 1000
+ },
+ {
+ "id": 50,
+ "dropid": 1024,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11022",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 1000
+ },
+ {
+ "id": 51,
+ "dropid": 1025,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11023",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 1000
+ },
+ {
+ "id": 52,
+ "dropid": 1026,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11024",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 1000
+ },
+ {
+ "id": 53,
+ "dropid": 1027,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11025",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 1000
+ },
+ {
+ "id": 54,
+ "dropid": 1028,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11026",
+ "n": 1
+ }
+ ],
+ "star": 3,
+ "p": 1000
+ },
+ {
+ "id": 55,
+ "dropid": 1029,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11031",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 1000
+ },
+ {
+ "id": 56,
+ "dropid": 1030,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11032",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ },
+ {
+ "id": 57,
+ "dropid": 1030,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11033",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ },
+ {
+ "id": 58,
+ "dropid": 1030,
+ "prize": [
+ {
+ "a": "equi",
+ "t": "11034",
+ "n": 1
+ }
+ ],
+ "star": 4,
+ "p": 333
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_gourmetskill.json b/bin/json/game_gourmetskill.json
index c82b3e212..75a14b2a8 100644
--- a/bin/json/game_gourmetskill.json
+++ b/bin/json/game_gourmetskill.json
@@ -2,6 +2,7 @@
{
"id": 10011,
"type": 1001,
+ "skill_type": 1,
"initial": 1,
"level": 1,
"levelname": {
@@ -13,7 +14,7 @@
"key": "gourmet_ln1",
"text": "魔法厨艺"
},
- "needtime": 60,
+ "needtime": 3600,
"display": 1000,
"probability": 1000,
"icon": "ty_wz_k1",
@@ -40,6 +41,7 @@
{
"id": 10012,
"type": 1001,
+ "skill_type": 1,
"initial": 0,
"level": 2,
"levelname": {
@@ -51,7 +53,7 @@
"key": "gourmet_ln2",
"text": "魔法厨艺"
},
- "needtime": 120,
+ "needtime": 7200,
"display": 1000,
"probability": 500,
"icon": "ty_wz_k1",
@@ -78,6 +80,7 @@
{
"id": 10013,
"type": 1001,
+ "skill_type": 1,
"initial": 0,
"level": 3,
"levelname": {
@@ -89,7 +92,7 @@
"key": "gourmet_ln3",
"text": "魔法厨艺"
},
- "needtime": 240,
+ "needtime": 14400,
"display": 1000,
"probability": 20,
"icon": "ty_wz_k1",
@@ -116,6 +119,7 @@
{
"id": 10014,
"type": 1001,
+ "skill_type": 1,
"initial": 0,
"level": 4,
"levelname": {
@@ -127,7 +131,7 @@
"key": "gourmet_ln4",
"text": "魔法厨艺"
},
- "needtime": 480,
+ "needtime": 28800,
"display": 1000,
"probability": 10,
"icon": "ty_wz_k1",
@@ -154,6 +158,7 @@
{
"id": 10021,
"type": 1002,
+ "skill_type": 1,
"initial": 1,
"level": 1,
"levelname": {
@@ -165,7 +170,7 @@
"key": "gourmet_ln1",
"text": "功夫厨艺"
},
- "needtime": 60,
+ "needtime": 3600,
"display": 1000,
"probability": 1000,
"icon": "ty_wz_k1",
@@ -192,6 +197,7 @@
{
"id": 10022,
"type": 1002,
+ "skill_type": 1,
"initial": 0,
"level": 2,
"levelname": {
@@ -203,7 +209,7 @@
"key": "gourmet_ln2",
"text": "功夫厨艺"
},
- "needtime": 120,
+ "needtime": 7200,
"display": 1000,
"probability": 500,
"icon": "ty_wz_k1",
@@ -230,6 +236,7 @@
{
"id": 10023,
"type": 1002,
+ "skill_type": 1,
"initial": 0,
"level": 3,
"levelname": {
@@ -241,7 +248,7 @@
"key": "gourmet_ln3",
"text": "功夫厨艺"
},
- "needtime": 240,
+ "needtime": 14400,
"display": 1000,
"probability": 20,
"icon": "ty_wz_k1",
@@ -268,6 +275,7 @@
{
"id": 10024,
"type": 1002,
+ "skill_type": 1,
"initial": 0,
"level": 4,
"levelname": {
@@ -279,7 +287,7 @@
"key": "gourmet_ln4",
"text": "功夫厨艺"
},
- "needtime": 480,
+ "needtime": 28800,
"display": 1000,
"probability": 10,
"icon": "ty_wz_k1",
@@ -306,6 +314,7 @@
{
"id": 10031,
"type": 1003,
+ "skill_type": 1,
"initial": 1,
"level": 1,
"levelname": {
@@ -317,7 +326,7 @@
"key": "gourmet_ln1",
"text": "科技厨艺"
},
- "needtime": 60,
+ "needtime": 3600,
"display": 1000,
"probability": 1000,
"icon": "ty_wz_k1",
@@ -344,6 +353,7 @@
{
"id": 10032,
"type": 1003,
+ "skill_type": 1,
"initial": 0,
"level": 2,
"levelname": {
@@ -355,7 +365,7 @@
"key": "gourmet_ln2",
"text": "科技厨艺"
},
- "needtime": 120,
+ "needtime": 7200,
"display": 1000,
"probability": 500,
"icon": "ty_wz_k1",
@@ -382,6 +392,7 @@
{
"id": 10033,
"type": 1003,
+ "skill_type": 1,
"initial": 0,
"level": 3,
"levelname": {
@@ -393,7 +404,7 @@
"key": "gourmet_ln3",
"text": "科技厨艺"
},
- "needtime": 240,
+ "needtime": 14400,
"display": 1000,
"probability": 20,
"icon": "ty_wz_k1",
@@ -420,6 +431,7 @@
{
"id": 10034,
"type": 1003,
+ "skill_type": 1,
"initial": 0,
"level": 4,
"levelname": {
@@ -431,7 +443,7 @@
"key": "gourmet_ln4",
"text": "科技厨艺"
},
- "needtime": 480,
+ "needtime": 28800,
"display": 1000,
"probability": 10,
"icon": "ty_wz_k1",
@@ -458,6 +470,7 @@
{
"id": 10041,
"type": 1004,
+ "skill_type": 1,
"initial": 1,
"level": 1,
"levelname": {
@@ -469,7 +482,7 @@
"key": "gourmet_ln1",
"text": "月能厨艺"
},
- "needtime": 60,
+ "needtime": 3600,
"display": 1000,
"probability": 1000,
"icon": "ty_wz_k1",
@@ -496,6 +509,7 @@
{
"id": 10042,
"type": 1004,
+ "skill_type": 1,
"initial": 0,
"level": 2,
"levelname": {
@@ -507,7 +521,7 @@
"key": "gourmet_ln2",
"text": "月能厨艺"
},
- "needtime": 120,
+ "needtime": 7200,
"display": 1000,
"probability": 500,
"icon": "ty_wz_k1",
@@ -534,6 +548,7 @@
{
"id": 10043,
"type": 1004,
+ "skill_type": 1,
"initial": 0,
"level": 3,
"levelname": {
@@ -545,7 +560,7 @@
"key": "gourmet_ln3",
"text": "月能厨艺"
},
- "needtime": 240,
+ "needtime": 14400,
"display": 1000,
"probability": 20,
"icon": "ty_wz_k1",
@@ -572,6 +587,7 @@
{
"id": 10044,
"type": 1004,
+ "skill_type": 1,
"initial": 0,
"level": 4,
"levelname": {
@@ -583,7 +599,7 @@
"key": "gourmet_ln4",
"text": "月能厨艺"
},
- "needtime": 480,
+ "needtime": 28800,
"display": 1000,
"probability": 10,
"icon": "ty_wz_k1",
@@ -610,6 +626,7 @@
{
"id": 10051,
"type": 1005,
+ "skill_type": 2,
"initial": 1,
"level": 1,
"levelname": {
@@ -621,7 +638,7 @@
"key": "gourmet_ln1",
"text": "高效制作"
},
- "needtime": -5,
+ "needtime": -300,
"display": 1000,
"probability": 1000,
"icon": "ty_wz_k1",
@@ -642,6 +659,7 @@
{
"id": 10052,
"type": 1005,
+ "skill_type": 2,
"initial": 0,
"level": 2,
"levelname": {
@@ -653,7 +671,7 @@
"key": "gourmet_ln2",
"text": "高效制作"
},
- "needtime": -10,
+ "needtime": -600,
"display": 1000,
"probability": 500,
"icon": "ty_wz_k1",
@@ -674,6 +692,7 @@
{
"id": 10053,
"type": 1005,
+ "skill_type": 2,
"initial": 0,
"level": 3,
"levelname": {
@@ -685,7 +704,7 @@
"key": "gourmet_ln3",
"text": "高效制作"
},
- "needtime": -15,
+ "needtime": -900,
"display": 1000,
"probability": 20,
"icon": "ty_wz_k1",
@@ -706,6 +725,7 @@
{
"id": 10054,
"type": 1005,
+ "skill_type": 2,
"initial": 0,
"level": 4,
"levelname": {
@@ -717,7 +737,7 @@
"key": "gourmet_ln4",
"text": "高效制作"
},
- "needtime": -20,
+ "needtime": -1200,
"display": 1000,
"probability": 10,
"icon": "ty_wz_k1",
diff --git a/comm/core.go b/comm/core.go
index 4e7c50352..924e84330 100644
--- a/comm/core.go
+++ b/comm/core.go
@@ -2,8 +2,10 @@ package comm
import (
"context"
+ "crypto/rand"
"fmt"
"go_dreamfactory/pb"
+ "math/big"
"reflect"
"go_dreamfactory/lego/core"
@@ -85,3 +87,23 @@ func ProtoMarshal(rsp proto.Message, msg *pb.UserMessage) (ok bool) {
msg.Data = any
return true
}
+
+/// 参数 权重数组 返回值 数组下标
+func GetRandW(sz []int32) int32 {
+ if len(sz) > 0 {
+ var _totalW int64 // 总权重
+ var _tmpW int64 // 临时权重
+ for _, v := range sz {
+ _totalW += int64(v)
+ }
+ // 随机权重
+ n, _ := rand.Int(rand.Reader, big.NewInt(_totalW))
+ for i, v := range sz {
+ _tmpW += int64(v)
+ if n.Int64() < _tmpW {
+ return int32(i)
+ }
+ }
+ }
+ return 0
+}
diff --git a/modules/gourmet/comp_configure.go b/modules/gourmet/comp_configure.go
index 4a8d2ebb6..095471e30 100644
--- a/modules/gourmet/comp_configure.go
+++ b/modules/gourmet/comp_configure.go
@@ -13,6 +13,7 @@ import (
const (
game_gourmet = "game_gourmet.json"
game_gourmetskill = "game_gourmetskill.json"
+ game_drop = "game_drop.json"
)
///配置管理基础组件
@@ -22,6 +23,7 @@ type configureComp struct {
modules.MCompConfigure
_gourmetMap map[int64]*cfg.GameGourmetData
_gourmetSkillMap map[int64]*cfg.GameGourmetSkillData
+ _dropMap map[int32][]*cfg.GameDropData // 掉落表 key 是DiropId
}
//组件初始化接口
@@ -58,10 +60,25 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
log.Errorf("get game_pagoda conf err:%v", err)
return
})
-
+ this._dropMap = make(map[int32][]*cfg.GameDropData, 0)
+ configure.RegisterConfigure(game_drop, cfg.NewGameDrop, func() {
+ if v, err := this.GetConfigure(game_drop); err == nil {
+ if configure, ok := v.(*cfg.GameDrop); ok {
+ this.hlock.Lock()
+ defer this.hlock.Unlock()
+ for _, value := range configure.GetDataList() {
+ this._dropMap[value.Dropid] = append(this._dropMap[value.Dropid], value)
+ }
+ return
+ }
+ }
+ log.Errorf("get game_pagoda conf err:%v", err)
+ return
+ })
// _data := this.GetGourmetConfigData(1002, 4) // 测试配置文件读取
// _dataskill := this.GetGourmetSkillConfigData(1001, 4)
- // fmt.Printf("%v,%v", _data, _dataskill)
+ // _data := this.GetDropData(1001)
+ // fmt.Printf("%v", _data)
return
}
@@ -89,6 +106,22 @@ func (this *configureComp) GetGourmetSkillConfigBySkillID(skillId int) (data *cf
return
}
+func (this *configureComp) GetGourmetSkillConfigBySkillType(skillType int) (szSkill []int32) {
+ szSkill = make([]int32, 0)
+ if v, err := this.GetConfigure(game_gourmetskill); err == nil {
+ if configure, ok := v.(*cfg.GameGourmetSkill); ok {
+ for _, data := range configure.GetDataList() {
+ if skillType == int(data.SkillType) && data.Initial == 1 {
+ szSkill = append(szSkill, data.Type)
+ }
+ }
+ //data = configure.Get(int32(skillId))
+ return
+ }
+ }
+ return
+}
+
//加载多个配置文件
func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err error) {
for k, v := range confs {
@@ -105,3 +138,8 @@ func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err
func (this *configureComp) GetConfigure(name string) (v interface{}, err error) {
return configure.GetConfigure(name)
}
+
+func (this *configureComp) GetDropData(dropId int32) (data []*cfg.GameDropData) {
+ data = this._dropMap[dropId]
+ return
+}
diff --git a/modules/gourmet/model_gourmet.go b/modules/gourmet/model_gourmet.go
index 8fa10e862..618fd2bb4 100644
--- a/modules/gourmet/model_gourmet.go
+++ b/modules/gourmet/model_gourmet.go
@@ -6,6 +6,7 @@ import (
"go_dreamfactory/lego/sys/redis"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
+ cfg "go_dreamfactory/sys/configure/structs"
"time"
"go.mongodb.org/mongo-driver/bson/primitive"
@@ -28,14 +29,20 @@ func (this *modelGourmet) getGourmetList(uid string) (result *pb.DBGourmet, err
result = &pb.DBGourmet{}
if err = this.Get(uid, result); err != nil {
if redis.RedisNil != err { // 没有数据直接创建新的数据
+
result.Id = primitive.NewObjectID().Hex()
result.Uid = uid
result.Skill = make(map[int32]int32, 0)
- result.Skill[1001] = 1
- result.Skill[1002] = 1
- result.Skill[1003] = 1
- result.Skill[1004] = 1 // 需要后续查询初始为1 的技能id 临时push
+ szSkill := this.module.configure.GetGourmetSkillConfigBySkillType(1) // 查表获取初始技能
+ for _, v := range szSkill {
+ result.Skill[v] = 1
+ }
+
+ szSpecailSkill := this.module.configure.GetGourmetSkillConfigBySkillType(2) // 高效制作 等通用技能
result.SpecialSkill = make(map[int32]int32, 0)
+ for _, v := range szSpecailSkill {
+ result.SpecialSkill[v] = 1
+ }
result.SpecialSkill[1005] = 1 // 通用技能
if err = this.Add(uid, result); err != nil {
this.module.Errorf("err:%v", err)
@@ -53,7 +60,18 @@ func (this *modelGourmet) modifyGourmetDataByObjId(uid string, data map[string]i
}
// todo 调用drop 表 获取掉落信息
-func GetDropReward(count, dropId int32) (res []*pb.UserAssets) {
+func (this *modelGourmet) GetDropReward(count, dropId int32) (res []*cfg.Gameatn) {
+
+ for i := 0; i < int(count); i++ {
+ data := this.module.configure.GetDropData(dropId)
+ szW := make([]int32, 0)
+ for _, value := range data {
+ szW = append(szW, value.P)
+ }
+ index := comm.GetRandW(szW)
+ res = append(res, data[index].Prize...)
+ }
+
return
}
@@ -88,8 +106,23 @@ func (this *modelGourmet) CalculationGourmet(uid string, gourmet *pb.DBGourmet)
for i := 0; i < int(order.FoodCount); i++ {
curTime += _skillCfg.Needtime
order.FoodCount--
- gourmet.Items = GetDropReward(_gourmetcfg.Using, _gourmetcfg.Propsgroup)
- // 累计时间也减少
+ res := this.GetDropReward(_gourmetcfg.Using, _gourmetcfg.Propsgroup)
+ for _, v := range res {
+ bFind := false
+ for _, v1 := range gourmet.Items {
+ if v.A == v1.A && v.T == v1.T {
+ v1.N += v.N
+ bFind = true
+ }
+ }
+ if !bFind {
+ gourmet.Items = append(gourmet.Items, &pb.UserAssets{
+ A: v.A,
+ T: v.T,
+ N: v.N,
+ })
+ }
+ }
if curTime > costTime {
// 转时间戳
diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go
index 86847d7b6..f1c4220b1 100644
--- a/modules/hero/model_hero.go
+++ b/modules/hero/model_hero.go
@@ -557,10 +557,8 @@ func (this *ModelHero) CheckPool(drawCount int32, config *cfg.GameglobalData) (p
return config.BasePool2.P
} else if config.BasePool3.S <= drawCount && config.BasePool3.E >= drawCount {
return config.BasePool3.P
- } else {
- return config.BasePool4.P
}
- return
+ return config.BasePool4.P
}
// 通数组里的权重随机命中 返回值为数组的下标
@@ -576,7 +574,7 @@ func (this *ModelHero) GetRandW(sz []int32) int32 {
n, _ := rand.Int(rand.Reader, big.NewInt(_totalW))
for i, v := range sz {
_tmpW += int64(v)
- if n.Int64() < _tmpW { // 种族保底卡池命中
+ if n.Int64() < _tmpW {
return int32(i)
}
}
diff --git a/sys/configure/structs/game.Drop.go b/sys/configure/structs/game.Drop.go
new file mode 100644
index 000000000..9aec94780
--- /dev/null
+++ b/sys/configure/structs/game.Drop.go
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+type GameDrop struct {
+ _dataMap map[int32]*GameDropData
+ _dataList []*GameDropData
+}
+
+func NewGameDrop(_buf []map[string]interface{}) (*GameDrop, error) {
+ _dataList := make([]*GameDropData, 0, len(_buf))
+ dataMap := make(map[int32]*GameDropData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := DeserializeGameDropData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Id] = _v
+ }
+ }
+ return &GameDrop{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *GameDrop) GetDataMap() map[int32]*GameDropData {
+ return table._dataMap
+}
+
+func (table *GameDrop) GetDataList() []*GameDropData {
+ return table._dataList
+}
+
+func (table *GameDrop) Get(key int32) *GameDropData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.DropData.go b/sys/configure/structs/game.DropData.go
new file mode 100644
index 000000000..0dff2f37e
--- /dev/null
+++ b/sys/configure/structs/game.DropData.go
@@ -0,0 +1,56 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+package cfg
+
+import "errors"
+
+type GameDropData struct {
+ Id int32
+ Dropid int32
+ Prize []*Gameatn
+ Star int32
+ P int32
+}
+
+const TypeId_GameDropData = 901242325
+
+func (*GameDropData) GetTypeId() int32 {
+ return 901242325
+}
+
+func (_v *GameDropData)Deserialize(_buf map[string]interface{}) (err error) {
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["dropid"].(float64); !_ok_ { err = errors.New("dropid error"); return }; _v.Dropid = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["prize"].([]interface{}); !_ok_ { err = errors.New("prize error"); return }
+
+ _v.Prize = make([]*Gameatn, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ *Gameatn
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
+ _v.Prize = append(_v.Prize, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["p"].(float64); !_ok_ { err = errors.New("p error"); return }; _v.P = int32(_tempNum_) }
+ return
+}
+
+func DeserializeGameDropData(_buf map[string]interface{}) (*GameDropData, error) {
+ v := &GameDropData{}
+ if err := v.Deserialize(_buf); err == nil {
+ return v, nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/sys/configure/structs/game.GourmetSkillData.go b/sys/configure/structs/game.GourmetSkillData.go
index 17f49eec8..bdaebdf28 100644
--- a/sys/configure/structs/game.GourmetSkillData.go
+++ b/sys/configure/structs/game.GourmetSkillData.go
@@ -13,6 +13,7 @@ import "errors"
type GameGourmetSkillData struct {
Id int32
Type int32
+ SkillType int32
Initial int32
Level int32
Levelname string
@@ -37,6 +38,7 @@ func (*GameGourmetSkillData) GetTypeId() int32 {
func (_v *GameGourmetSkillData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill_type"].(float64); !_ok_ { err = errors.New("skill_type error"); return }; _v.SkillType = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["initial"].(float64); !_ok_ { err = errors.New("initial error"); return }; _v.Initial = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["level"].(float64); !_ok_ { err = errors.New("level error"); return }; _v.Level = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["levelname"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Levelname error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Levelname, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }