package handler import ( "ecs/proto" "ecs/proto/pb" "ecs/servers/game/logic" "github.com/oylshe1314/framework/net" ) func (this *PlayerHandler) RewardActiveGet(player *logic.Player, msg *net.Message) { var req = new(pb.RewardActiveGetReq) var err = msg.Read(req) if err != nil { this.Logger().Error("Read message failed, ", err) _ = player.TipNotice(proto.TipMessageError) return } if req.Id == 0 { this.Logger().Error("Parameter error, req.Id == 0") _ = player.TipNotice(proto.TipParameterError) return } var rewardTable = this.tables.RewardActive.Find1(int(req.Id)) if rewardTable == nil { this.Logger().Error("Parameter or data error, table 'Active' was not found, id: ", req.Id) _ = player.TipNotice(proto.TipDataTablesError) return } ok, tip := player.CheckMoney(pb.MoneyType(rewardTable.MoneyType), uint32(rewardTable.ActiveValue)) if !ok { this.Logger().Errorf("%s, moneyType: %d, moneyNum: %d", tip.Msg(), rewardTable.MoneyType, rewardTable.ActiveValue) _ = player.TipNotice(tip) return } var rewardActive = player.RewardActive[uint32(rewardTable.MoneyType)] if rewardActive == nil { this.Logger().Error("Server error, player reward active was not found, moneyType: ", rewardTable.MoneyType) _ = player.TipNotice(proto.TipRewardActiveNotFound) return } var status = rewardActive.RewardStatus[req.Id] if pb.AbleStatus(status) == pb.AbleStatus_Unable { this.Logger().Error("The active reward unable, req.Id: ", req.Id) _ = player.TipNotice(proto.TipRewardUnable) return } if pb.AbleStatus(status) == pb.AbleStatus_Already { this.Logger().Error("The active reward has been received, req.Id: ", req.Id) _ = player.TipNotice(proto.TipRewardHasGot) return } var itemList []*pb.Item for ii := range rewardTable.ItemIds { itemList = append(itemList, &pb.Item{ItemId: uint32(rewardTable.ItemIds[ii]), ItemNum: uint32(rewardTable.ItemNums[ii])}) } rewardActive.RewardStatus[req.Id] = uint32(pb.AbleStatus_Already) player.SaveModel(rewardActive) _ = player.Send(pb.ModId_ModuleReward, pb.MsgId_ModRewardActiveGet, &pb.RewardActiveGetAck{ Id: req.Id, ItemList: itemList, }) } func (this *PlayerHandler) RewardLoginGet(player *logic.Player, msg *net.Message) { var req = new(pb.RewardLoginGetReq) var err = msg.Read(req) if err != nil { this.Logger().Error("Read message failed, ", err) _ = player.TipNotice(proto.TipMessageError) return } var rewardTable = this.tables.RewardLogin.Find1(int(req.Id)) if rewardTable == nil { this.Logger().Error("Parameter or data tables error, Table 'LoginReward' was not found, Id: ", req.Id) _ = player.TipNotice(proto.TipDataTablesError) return } var rewardLogin = player.RewardLogin[uint32(rewardTable.SeriesId)] if rewardLogin == nil { this.Logger().Error("Server error, player reward active was not found, moneyType: ", rewardTable.SeriesId) _ = player.TipNotice(proto.TipRewardLoginNotFound) return } var status = rewardLogin.RewardStatus[req.Id] if pb.AbleStatus(status) == pb.AbleStatus_Unable { this.Logger().Error("The active reward unable, req.Id: ", req.Id) _ = player.TipNotice(proto.TipRewardUnable) return } if pb.AbleStatus(status) == pb.AbleStatus_Already { this.Logger().Error("The active reward has been received, req.Id: ", req.Id) _ = player.TipNotice(proto.TipRewardHasGot) return } var rewardList []*pb.Item for i := range rewardTable.ItemIds { _ = player.AddItem(uint32(rewardTable.ItemIds[i]), uint32(rewardTable.ItemNums[i]), logic.LogTypeItemObtainByLoginReward) rewardList = append(rewardList, &pb.Item{ItemId: uint32(rewardTable.ItemIds[i]), ItemNum: uint32(rewardTable.ItemNums[i])}) } rewardLogin.RewardStatus[req.Id] = uint32(pb.AbleStatus_Already) player.SaveModel(rewardLogin) _ = player.Send(pb.ModId_ModuleReward, pb.MsgId_ModRewardLoginGet, &pb.RewardLoginGetAck{Id: req.Id, ItemList: rewardList}) _ = player.Send(pb.ModId_ModuleReward, pb.MsgId_ModRewardLoginChange, &pb.RewardLoginChangeAck{RewardLogin: rewardLogin.BuildMsgRewardLogin()}) }