更新铁匠铺协议

This commit is contained in:
wh_zcy 2023-02-16 15:40:06 +08:00
parent 92fd5e34cb
commit dc5c2729cd
5 changed files with 67 additions and 43 deletions

View File

@ -7,7 +7,8 @@
"text": "" "text": ""
}, },
"goods": [], "goods": [],
"reword": [] "reword": [],
"weight": 4500
}, },
{ {
"customer_id": 2, "customer_id": 2,
@ -17,7 +18,8 @@
"text": "" "text": ""
}, },
"goods": [], "goods": [],
"reword": [] "reword": [],
"weight": 4500
}, },
{ {
"customer_id": 3, "customer_id": 3,
@ -27,7 +29,8 @@
"text": "" "text": ""
}, },
"goods": [], "goods": [],
"reword": [] "reword": [],
"weight": 500
}, },
{ {
"customer_id": 4, "customer_id": 4,
@ -37,6 +40,7 @@
"text": "" "text": ""
}, },
"goods": [], "goods": [],
"reword": [] "reword": [],
"weight": 500
} }
] ]

View File

@ -1,18 +0,0 @@
package ui
import (
"fmt"
cfg "go_dreamfactory/cmd/v2/configure/structs"
"go_dreamfactory/cmd/v2/lib/common"
"testing"
)
func TestGjson(t *testing.T) {
if tables, err := cfg.NewTables(common.Loader); err != nil {
println(err.Error())
} else {
for _, v := range tables.TestFlow.GetDataList() {
fmt.Println(v.Msg)
}
}
}

View File

@ -17,9 +17,10 @@ const (
game_smproficiency = "game_smithyproficiency.json" // 铁匠铺熟练度 game_smproficiency = "game_smithyproficiency.json" // 铁匠铺熟练度
game_smithystove = "game_smithystovev1.json" // 铁匠铺台子 打造配置 game_smithystove = "game_smithystovev1.json" // 铁匠铺台子 打造配置
game_smithytools = "game_smithytool.json" // 铁匠铺工具台 game_smithytools = "game_smithytool.json" // 铁匠铺工具台
game_smithycustomer = "game_smithycustomer.json"
) )
///配置管理基础组件 // /配置管理基础组件
type configureComp struct { type configureComp struct {
modules.MCompConfigure modules.MCompConfigure
module *Smithy module *Smithy
@ -29,7 +30,7 @@ type configureComp struct {
_mapProficile map[int64]*cfg.GameSmithyProficiencyData // 熟练度 key 卷轴ID+ 等级 _mapProficile map[int64]*cfg.GameSmithyProficiencyData // 熟练度 key 卷轴ID+ 等级
} }
//组件初始化接口 // 组件初始化接口
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompConfigure.Init(service, module, comp, options) err = this.MCompConfigure.Init(service, module, comp, options)
this.module = module.(*Smithy) this.module = module.(*Smithy)
@ -55,6 +56,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
err = this.LoadConfigure(game_smithystove, cfg.NewGameSmithyStoveV1) err = this.LoadConfigure(game_smithystove, cfg.NewGameSmithyStoveV1)
err = this.LoadConfigure(game_smithytools, cfg.NewGameSmithyTool) err = this.LoadConfigure(game_smithytools, cfg.NewGameSmithyTool)
err = this.LoadConfigure(game_smithystoveold, cfg.NewGameSmithyStove) err = this.LoadConfigure(game_smithystoveold, cfg.NewGameSmithyStove)
err = this.LoadConfigure(game_smithycustomer, cfg.NewGameSmithyCustomer)
return return
} }
@ -89,7 +91,7 @@ func (this *configureComp) GetSmithyStoveConfigData(level int32) (data *cfg.Game
return return
} }
//加载多个配置文件 // 加载多个配置文件
func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err error) { func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err error) {
for k, v := range confs { for k, v := range confs {
err = configure.RegisterConfigure(k, v, nil) err = configure.RegisterConfigure(k, v, nil)
@ -101,7 +103,7 @@ func (this *configureComp) LoadMultiConfigure(confs map[string]interface{}) (err
return return
} }
//读取配置数据 // 读取配置数据
func (this *configureComp) GetConfigure(name string) (v interface{}, err error) { func (this *configureComp) GetConfigure(name string) (v interface{}, err error) {
return configure.GetConfigure(name) return configure.GetConfigure(name)
} }
@ -168,22 +170,11 @@ func (this *configureComp) GetSmithyProficileData(reelid int32, proficile int32)
return this._mapProficile[int64(reelid<<16)+int64(proficile)] return this._mapProficile[int64(reelid<<16)+int64(proficile)]
} }
// 获取铁匠铺工作台信息 // 获取铁匠铺顾客配置
func (this *configureComp) GetSmithyStoveConf(star int32) (data *cfg.GameSmithyStoveV1Data) { func (this *configureComp) GetSmithyCustomerConfList() (data []*cfg.GameSmithyCustomerData) {
if v, err := this.GetConfigure(game_smithystove); err == nil { if v, err := this.GetConfigure(game_smithycustomer); err != nil {
if configure, ok := v.(*cfg.GameSmithyStoveV1); ok { if conf, ok := v.(*cfg.GameSmithyCustomer); ok {
data = configure.Get(int32(star)) data = conf.GetDataList()
return
}
}
return
}
// 获取铁匠铺工作台信息
func (this *configureComp) GetSmithyStoveConf1(id int32) (data *cfg.GameSmithyToolData) {
if v, err := this.GetConfigure(game_smithytools); err == nil {
if configure, ok := v.(*cfg.GameSmithyTool); ok {
data = configure.Get(int32(id))
return return
} }
} }

View File

@ -4,6 +4,8 @@ import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/modules" "go_dreamfactory/modules"
cfg "go_dreamfactory/sys/configure/structs"
"math/rand"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx" "go.mongodb.org/mongo-driver/x/bsonx"
@ -24,4 +26,47 @@ func (this *modelTrade) Init(service core.IService, module core.IModule, comp co
}) })
return return
} }
//
// 权重项目
type WeightedRandom struct {
items []*cfg.GameSmithyCustomerData
totalWeight int
}
func newWeightedRandom(items []*cfg.GameSmithyCustomerData) *WeightedRandom {
wr := &WeightedRandom{items: items}
for _, item := range wr.items {
wr.totalWeight += int(item.Weight)
}
return wr
}
func (wr *WeightedRandom) pick() *cfg.GameSmithyCustomerData {
randomNumber := rand.Intn(wr.totalWeight)
for _, item := range wr.items {
if randomNumber < int(item.Weight) {
return item
}
randomNumber -= int(item.Weight)
}
return nil
}
// 随机顾客
func (s *modelTrade) getCustomerRandom() (customerId int32) {
items := s.module.configure.GetSmithyCustomerConfList()
wr := newWeightedRandom(items)
if c := wr.pick(); c != nil {
customerId = c.CustomerId
}
return
}
// 更新顾客
func(s *modelTrade) updateCustomer(uid string) {
}
//顾客类型策略
//交易

View File

@ -16,6 +16,7 @@ type GameSmithyCustomerData struct {
CustomerSpeak string CustomerSpeak string
Goods []*Gameatn Goods []*Gameatn
Reword []*Gameatn Reword []*Gameatn
Weight int32
} }
const TypeId_GameSmithyCustomerData = 1314583578 const TypeId_GameSmithyCustomerData = 1314583578
@ -56,6 +57,7 @@ func (_v *GameSmithyCustomerData)Deserialize(_buf map[string]interface{}) (err e
} }
} }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["weight"].(float64); !_ok_ { err = errors.New("weight error"); return }; _v.Weight = int32(_tempNum_) }
return return
} }