diff --git a/bin/json/game_propsgroup.json b/bin/json/game_propsgroup.json new file mode 100644 index 000000000..73fa22492 --- /dev/null +++ b/bin/json/game_propsgroup.json @@ -0,0 +1,45 @@ +[ + { + "group": 10001, + "star": 0, + "prize": [ + { + "a": "attr", + "t": "gold", + "n": 1000 + }, + { + "a": "attr", + "t": "gold", + "n": 2000 + }, + { + "a": "attr", + "t": "gold", + "n": 3000 + } + ], + "p": [ + 1000, + 1000, + 1000 + ] + }, + { + "group": 20001, + "star": 0, + "prize": [ + { + "a": "attr", + "t": "gold", + "n": 4000 + }, + { + "a": "attr", + "t": "gold", + "n": 5000 + } + ], + "p": [] + } +] \ No newline at end of file diff --git a/modules/items/api_useItem.go b/modules/items/api_useItem.go index a676d00a4..031214521 100644 --- a/modules/items/api_useItem.go +++ b/modules/items/api_useItem.go @@ -22,6 +22,7 @@ func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq) err error item *pb.DB_UserItemData itemcf *cfg.Game_itemData + prop *cfg.Game_propsgroupData ) if code = this.UseitemCheck(session, req); code != pb.ErrorCode_Success { return @@ -35,8 +36,12 @@ func (this *apiComp) Useitem(session comm.IUserSession, req *pb.ItemsUseItemReq) return } switch itemcf.Usetype { - case 4: - sale := make([]*cfg.Game_atn, len(itemcf.Sale)) + case 6: + if prop, err = this.module.configure.GetPropsgroupConfigure(itemcf.BoxId); err != nil { + code = pb.ErrorCode_ConfigNoFound + return + } + sale := make([]*cfg.Game_atn, len(prop.Prize)) for _, v := range sale { v.N = v.N * int32(req.Amount) } diff --git a/modules/items/configure.go b/modules/items/configure.go index e4b686cc3..781e34e9a 100644 --- a/modules/items/configure.go +++ b/modules/items/configure.go @@ -10,7 +10,8 @@ import ( ) const ( - game_item = "game_item.json" + game_item = "game_item.json" + game_propsgroup = "game_propsgroup.json" ) ///背包配置管理组件 @@ -87,3 +88,22 @@ func (this *ConfigureComp) GetPackItemByType(itmes []*pb.DB_UserItemData, usetyp } return } + +//获取道具礼包组 +func (this *ConfigureComp) GetPropsgroupConfigure(id int32) (item *cfg.Game_propsgroupData, err error) { + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(game_propsgroup); err != nil { + this.module.Errorf("err:%v", err) + return + } else { + if item, ok = v.(*cfg.Game_propsgroup).GetDataMap()[id]; !ok { + err = fmt.Errorf("no found item:%d configure", id) + this.module.Errorf("err:%v", err) + return + } + } + return +} diff --git a/sys/configure/structs/game.propsgroup.go b/sys/configure/structs/game.propsgroup.go new file mode 100644 index 000000000..2d3c2889c --- /dev/null +++ b/sys/configure/structs/game.propsgroup.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 Game_propsgroup struct { + _dataMap map[int32]*Game_propsgroupData + _dataList []*Game_propsgroupData +} + +func NewGame_propsgroup(_buf []map[string]interface{}) (*Game_propsgroup, error) { + _dataList := make([]*Game_propsgroupData, 0, len(_buf)) + dataMap := make(map[int32]*Game_propsgroupData) + for _, _ele_ := range _buf { + if _v, err2 := NewGame_propsgroupData(_ele_); err2 != nil { + return nil, err2 + } else { + _dataList = append(_dataList, _v) + dataMap[_v.Group] = _v + } + } + return &Game_propsgroup{_dataList:_dataList, _dataMap:dataMap}, nil +} + +func (table *Game_propsgroup) GetDataMap() map[int32]*Game_propsgroupData { + return table._dataMap +} + +func (table *Game_propsgroup) GetDataList() []*Game_propsgroupData { + return table._dataList +} + +func (table *Game_propsgroup) Get(key int32) *Game_propsgroupData { + return table._dataMap[key] +} + + diff --git a/sys/configure/structs/game.propsgroupData.go b/sys/configure/structs/game.propsgroupData.go new file mode 100644 index 000000000..dcde9ce55 --- /dev/null +++ b/sys/configure/structs/game.propsgroupData.go @@ -0,0 +1,57 @@ + +//------------------------------------------------------------------------------ +// +// 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 Game_propsgroupData struct { + Group int32 + Star int32 + Prize []*Game_atn + P []int32 +} + +func (Game_propsgroupData) GetTypeId() int { + return -1658257195 +} + +func NewGame_propsgroupData(_buf map[string]interface{}) (_v *Game_propsgroupData, err error) { + _v = &Game_propsgroupData{} + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["group"].(float64); !_ok_ { err = errors.New("group error"); return }; _v.Group = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["prize"].([]interface{}); !_ok_ { err = errors.New("prize error"); return } + + _v.Prize = make([]*Game_atn, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ *Game_atn + { 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 = NewGame_atn(_x_); err != nil { return } } + _v.Prize = append(_v.Prize, _list_v_) + } + } + + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["p"].([]interface{}); !_ok_ { err = errors.New("p error"); return } + + _v.P = make([]int32, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ int32 + { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } + _v.P = append(_v.P, _list_v_) + } + } + + return +}