You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			128 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
| package statistics
 | |
| 
 | |
| import (
 | |
| 	"dcg/app/user_center/usercenter"
 | |
| 	pbGameZhg "dcg/game/pb/game/zhg"
 | |
| 	"dcg/game/svc"
 | |
| 	"git.noahlan.cn/northlan/ngs/component"
 | |
| 	"git.noahlan.cn/northlan/ngs/session"
 | |
| 	"git.noahlan.cn/northlan/ntools-go/logger"
 | |
| )
 | |
| 
 | |
| type PvP struct {
 | |
| 	component.Base
 | |
| 	svcCtx *svc.ServiceContext
 | |
| }
 | |
| 
 | |
| func NewStatisticsPvP(svcCtx *svc.ServiceContext) *PvP {
 | |
| 	return &PvP{
 | |
| 		svcCtx: svcCtx,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (p *PvP) CMD() string {
 | |
| 	return "statistics"
 | |
| }
 | |
| 
 | |
| func (p *PvP) Prefix() string {
 | |
| 	return "pvp"
 | |
| }
 | |
| 
 | |
| func (p *PvP) Init() {
 | |
| }
 | |
| 
 | |
| func (p *PvP) Shutdown() {
 | |
| }
 | |
| 
 | |
| // Kill 击杀玩家
 | |
| func (p *PvP) Kill(s *session.Session, msg *pbGameZhg.StatPvPKill) error {
 | |
| 	_, err := p.svcCtx.UserCenterRpc.StatPvpKill(p.svcCtx.Ctx, &usercenter.StatPvPKillReq{
 | |
| 		Uid:       msg.Uid,
 | |
| 		TargetUid: msg.TargetUid,
 | |
| 		IsGeneral: msg.IsGeneral,
 | |
| 	})
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // First 一血
 | |
| func (p *PvP) First(s *session.Session, msg *pbGameZhg.StatPvPFirstBlood) error {
 | |
| 	_, err := p.svcCtx.UserCenterRpc.StatPvpFirstBlood(p.svcCtx.Ctx, &usercenter.StatPvPFirstBloodReq{
 | |
| 		Uid:  msg.Uid,
 | |
| 		Type: msg.Type,
 | |
| 	})
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // Report 战报
 | |
| func (p *PvP) Report(s *session.Session, msg *pbGameZhg.StatPvPReportReq) error {
 | |
| 	winItems := make([]*usercenter.StatPvPReportReq_Item, 0, len(msg.WinItems))
 | |
| 	lostItems := make([]*usercenter.StatPvPReportReq_Item, 0, len(msg.LostItems))
 | |
| 
 | |
| 	for _, item := range msg.WinItems {
 | |
| 		winItems = append(winItems, &usercenter.StatPvPReportReq_Item{
 | |
| 			Uid:        item.Uid,
 | |
| 			Uname:      item.Uname,
 | |
| 			Damage:     item.Damage,
 | |
| 			DeDamage:   item.DeDamage,
 | |
| 			KillUnit:   item.KillUnit,
 | |
| 			DeKillUnit: item.DeKillUnit,
 | |
| 		})
 | |
| 	}
 | |
| 
 | |
| 	for _, item := range msg.LostItems {
 | |
| 		lostItems = append(lostItems, &usercenter.StatPvPReportReq_Item{
 | |
| 			Uid:        item.Uid,
 | |
| 			Uname:      item.Uname,
 | |
| 			Damage:     item.Damage,
 | |
| 			DeDamage:   item.DeDamage,
 | |
| 			KillUnit:   item.KillUnit,
 | |
| 			DeKillUnit: item.DeKillUnit,
 | |
| 		})
 | |
| 	}
 | |
| 	logger.SLog.Info("接收客户端战报", msg)
 | |
| 	resp, err := p.svcCtx.UserCenterRpc.StatPvpReport(p.svcCtx.Ctx, &usercenter.StatPvPReportReq{
 | |
| 		WinCamp: msg.WinCamp,
 | |
| 		General: &usercenter.StatPvPReportReq_General{
 | |
| 			Uid:   msg.General.Uid,
 | |
| 			Uname: msg.General.Uname,
 | |
| 		},
 | |
| 		WinItems:  winItems,
 | |
| 		LostItems: lostItems,
 | |
| 	})
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	winItemsResp := make([]*pbGameZhg.StatPvPReportResp_Item, 0, len(resp.WinItems))
 | |
| 	lostItemsResp := make([]*pbGameZhg.StatPvPReportResp_Item, 0, len(resp.LostItems))
 | |
| 	for _, item := range resp.WinItems {
 | |
| 		winItemsResp = append(winItemsResp, &pbGameZhg.StatPvPReportResp_Item{
 | |
| 			Uid:           item.Uid,
 | |
| 			Uname:         item.Uname,
 | |
| 			AddonIntegral: item.AddonIntegral,
 | |
| 		})
 | |
| 	}
 | |
| 	for _, item := range resp.LostItems {
 | |
| 		lostItemsResp = append(lostItemsResp, &pbGameZhg.StatPvPReportResp_Item{
 | |
| 			Uid:           item.Uid,
 | |
| 			Uname:         item.Uname,
 | |
| 			AddonIntegral: item.AddonIntegral,
 | |
| 		})
 | |
| 	}
 | |
| 
 | |
| 	return s.Response(&pbGameZhg.StatPvPReportResp{
 | |
| 		General: &pbGameZhg.StatPvPReportResp_Item{
 | |
| 			Uid:           resp.General.Uid,
 | |
| 			Uname:         resp.General.Uname,
 | |
| 			AddonIntegral: resp.General.AddonIntegral,
 | |
| 		},
 | |
| 		WinItems:  winItemsResp,
 | |
| 		LostItems: lostItemsResp,
 | |
| 	})
 | |
| }
 |