diff --git a/cmd/gameserver/action/EmailAction.go b/cmd/gameserver/action/EmailAction.go index 1bb2a70..9c76493 100644 --- a/cmd/gameserver/action/EmailAction.go +++ b/cmd/gameserver/action/EmailAction.go @@ -78,7 +78,7 @@ func EmailDrawRpc(role *models.RoleModel, msg components.IMessage) (int32, inter } } } - role.Award(reward) + role.Award(reward, &pb.LogConf{Desc: "draw_attach"}) return 0, &pb.EmailDrawRsp{Ids: ids, Reward: common.MapNumToString(reward)} } diff --git a/cmd/gameserver/action/HeroAction.go b/cmd/gameserver/action/HeroAction.go index 9dccd13..98360b6 100644 --- a/cmd/gameserver/action/HeroAction.go +++ b/cmd/gameserver/action/HeroAction.go @@ -77,7 +77,7 @@ func HeroUpLevelRpc(role *models.RoleModel, msg components.IMessage) (int32, int return 5, nil } - if !role.CostItem(fmt.Sprintf("%d", item.ID), count) { + if !role.CostItem(fmt.Sprintf("%d", item.ID), count, &pb.LogConf{Desc: "hero_action"}) { return 6, nil } diff --git a/cmd/gameserver/action/RoleAction.go b/cmd/gameserver/action/RoleAction.go index 30f137d..a67cc2c 100644 --- a/cmd/gameserver/action/RoleAction.go +++ b/cmd/gameserver/action/RoleAction.go @@ -126,7 +126,7 @@ func RoleClearItemsRpc(role *models.RoleModel, msg components.IMessage) (int32, } } - if !role.CostItems(bkup) { + if !role.CostItems(bkup, &pb.LogConf{Desc: "clear_items"}) { logger.Error("cost err: %s", common.MapNumToString(bkup)) return 2, nil } @@ -195,7 +195,7 @@ func RoleEndBattleRpc(role *models.RoleModel, msg components.IMessage) (int32, i } } //award - reward = role.Award(reward) + reward = role.Award(reward, &pb.LogConf{Desc: "in_battle", Int1: string(chapterInfo.ChapterId), Int2: string(chapterCount)}) //exp var amount int32 diff --git a/cmd/gameserver/gmaction/GmAction.go b/cmd/gameserver/gmaction/GmAction.go index 3f397ba..91260ff 100644 --- a/cmd/gameserver/gmaction/GmAction.go +++ b/cmd/gameserver/gmaction/GmAction.go @@ -39,7 +39,7 @@ func (gm *GmAction) AddEquip(role *models.RoleModel, params GMParams) { TbId: int32(tbId), Quality: 1, } - role.AddEquip(equip) + role.AddEquip(equip, &pb.LogConf{Desc: "gm_actioin"}) } /* @@ -50,7 +50,7 @@ AddItem 添加物品 func (gm *GmAction) AddItem(role *models.RoleModel, params GMParams) { id := params["id"] count, _ := strconv.Atoi(params["count"]) - role.AddItem(id, int32(count)) + role.AddItem(id, int32(count), &pb.LogConf{Desc: "gm_action"}) } /* diff --git a/common/const.go b/common/const.go index f95787c..4e81f9e 100644 --- a/common/const.go +++ b/common/const.go @@ -52,3 +52,9 @@ const ( RingPosL = 4 // 左戒指 RingPosR = 5 // 右戒指 ) + +const ( + ItemTypeInterval = 10000 + ItemType = 0 + EquipType = 1 +) diff --git a/common/utils.go b/common/utils.go index 73cb614..7c2e20b 100644 --- a/common/utils.go +++ b/common/utils.go @@ -46,7 +46,7 @@ func RandomName(name [][]string) string { return name[0][idx1] + name[1][idx2] } -//英文字符串,第一个字符大写 +// FirstCharToUpper 英文字符串,第一个字符大写 func FirstCharToUpper(key string) string { first := strings.ToUpper(key[0:1]) return first + key[1:] diff --git a/models/roleLog.go b/models/roleLog.go index b08d449..05ed095 100644 --- a/models/roleLog.go +++ b/models/roleLog.go @@ -10,15 +10,19 @@ import ( ) var LogType = map[string]string{ - "in_item": "common", - "out_item": "common", - "in_hero": "common", - "out_hero": "common", - "in_equip": "common", - "out_equip": "common", - + "in_battle": "common", + "out_battle": "common", + "in_item": "common", + "out_item": "common", + "in_hero": "common", + "out_hero": "common", + "in_equip": "common", + "out_equip": "common", + + "gm_action": "common", "mail_action": "common", "role_action": "common", + "hero_action": "common", } func (m *RoleModel) MyLog(logType string, content *pb.LogConf) { diff --git a/models/rolePlugin.go b/models/rolePlugin.go index 8c6defd..b8f0d3a 100644 --- a/models/rolePlugin.go +++ b/models/rolePlugin.go @@ -5,14 +5,16 @@ import ( "github.com/golang/protobuf/proto" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" + "math" "pro2d/common" "pro2d/common/db/mongoproxy" "pro2d/common/logger" "pro2d/csvdata" "pro2d/pb" + "strconv" ) -//背包系统 +// GetItemCount 背包系统 func (m *RoleModel) GetItemCount(key string) int32 { c, ok := m.Items[key] if !ok { @@ -21,14 +23,14 @@ func (m *RoleModel) GetItemCount(key string) int32 { return c } -func (m *RoleModel) CostItem(key string, count int32) bool { +func (m *RoleModel) CostItem(key string, count int32, param *pb.LogConf) bool { if count > m.GetItemCount(key) { return false } - return m.AddItem(key, -count) + return m.AddItem(key, -count, param) } -func (m *RoleModel) CostItems(params common.IMapStringNum) bool { +func (m *RoleModel) CostItems(params common.IMapStringNum, logconf *pb.LogConf) bool { for k, v := range params { if v > m.GetItemCount(k) { return false @@ -37,10 +39,10 @@ func (m *RoleModel) CostItems(params common.IMapStringNum) bool { params[k] = -v } - return m.AddItems(params) + return m.AddItems(params, logconf) } -func (m *RoleModel) AddItem(key string, count int32) bool { +func (m *RoleModel) AddItem(key string, count int32, param *pb.LogConf) bool { c := m.GetItemCount(key) num := c + count @@ -48,9 +50,20 @@ func (m *RoleModel) AddItem(key string, count int32) bool { m.Items[key] = num } else { delete(m.Items, key) + num = 0 } m.SetProperty("items", common.MapNumToString(m.Items)) + id, _ := strconv.Atoi(key) + param.Cint1 = int64(id) + param.Cint2 = int64(math.Abs(float64(count))) + param.Cint3 = int64(num) + if count < 0 { + m.MyLog("out_item", param) + } else { + m.MyLog("in_item", param) + } + rsp, err := proto.Marshal(&pb.RoleUpdateItemsNty{Items: fmt.Sprintf("%s=%d", key, num)}) if err != nil { logger.Error(err.Error()) @@ -63,7 +76,7 @@ func (m *RoleModel) AddItem(key string, count int32) bool { return true } -func (m *RoleModel) AddItems(params common.IMapStringNum) bool { +func (m *RoleModel) AddItems(params common.IMapStringNum, logconf *pb.LogConf) bool { tmp := make(common.IMapString) for k, v := range params { c := m.GetItemCount(k) @@ -76,6 +89,16 @@ func (m *RoleModel) AddItems(params common.IMapStringNum) bool { delete(m.Items, k) } tmp[k] = num + + id, _ := strconv.Atoi(k) + logconf.Cint1 = int64(id) + logconf.Cint2 = int64(math.Abs(float64(v))) + logconf.Cint3 = int64(num) + if v < 0 { + m.MyLog("out_item", logconf) + } else { + m.MyLog("in_item", logconf) + } } m.SetProperty("items", common.MapNumToString(m.Items)) @@ -115,10 +138,15 @@ func (m *RoleModel) UpdateTeam(teams []*pb.Team) { } } -func (m *RoleModel) AddEquip(equip *pb.Equipment) *EquipModel { +func (m *RoleModel) AddEquip(equip *pb.Equipment, conf *pb.LogConf) *EquipModel { e := NewEquip(equip) e.Create() m.Equipments[equip.Id] = e + + conf.Int1 = e.Data.Id + conf.Int2 = string(e.Data.Pos) + conf.Cint1 = 1 + m.MyLog("in_equip", conf) m.EquipmentAddNotify(equip) return e } @@ -158,9 +186,43 @@ func (m *RoleModel) UpLevel(exp int32) (int32, int32) { return level, exp } -func (m *RoleModel) Award(award common.IMapStringNum) common.IMapStringNum { - m.AddItems(award) - return award +func (m *RoleModel) _award(itemId string, count int32, param *pb.LogConf) int32 { + id, err := strconv.Atoi(itemId) + if err != nil { + return 0 + } + itemData := csvdata.Get().TbItemData.Get(int32(id)) + if itemData == nil { + return 0 + } + + curType := itemData.MType + + switch curType { + case common.EquipType: + equip := &pb.Equipment{ + Id: m.IncreEquipByKey(1), + RoleId: m.Data.Id, + TbId: int32(id - common.ItemTypeInterval), + Quality: 1, + } + m.AddEquip(equip, param) + default: + m.AddItem(itemId, count, param) + } + return count +} + +func (m *RoleModel) Award(award common.IMapStringNum, param *pb.LogConf) common.IMapStringNum { + reward := make(common.IMapStringNum) + for itemId, rcount := range award { + count := m._award(itemId, rcount, param) + if count > 0 { + reward[itemId] = count + } + } + m.Update() + return reward } func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool, pos int32) int32 { diff --git a/protos b/protos index cfe0c1d..b1df9ce 160000 --- a/protos +++ b/protos @@ -1 +1 @@ -Subproject commit cfe0c1d6fd5d7bcd6b0d5543359fcf2117db4dc2 +Subproject commit b1df9ce3812425edc2a4470022bed2416e3250e9 -- libgit2 0.21.2