func (this *Deal4C) Handler4C(conn net.Conn) { defer conn.Close() var player *game.Player //玩家对象的指针 const MAXLEN = 1024 buf := make([]byte, MAXLEN) for { n, err := conn.Read(buf) //接收具体消息 if err != nil { return } if n > MAXLEN { game.Log.Error("recive error n> MAXLEN") return } fmt.Println(buf[0:n]) //接收包头 _, head_pid := GetHead(buf) //包体 switch head_pid { case 1001: //注册 register := new(protocol.Game_RegisterRole) if err := proto.Unmarshal(buf[8:n], register); err == nil { player = new(game.Player) player.Init(&conn) sn := this.server_id + register.Info.GetPlayerId() fmt.Println(register.Info.GetPlayerId(), this.server_id, register.Info.GetNick(), register.Info.GetHeroId()) result := player.RegisterRole(sn, register.Info.GetPlayerId(), this.server_id, register.Info.GetNick(), register.Info.GetHeroId()) result4C := &protocol.Game_RegisterRoleResult{ Result: proto.Int32(result), } encObj, _ := proto.Marshal(result4C) SendPackage(conn, 1001, encObj) //加载保存于内存中 if global.REGISTERROLESUCCESS == result { key := strconv.Itoa(int(sn)) this.players[key] = player } } case 1002: //获取role基础属性 fmt.Println("come role base") var pid int32 = 123 var nick string = "afds" var hero_id int32 = 12 //var level int32 = 1 var exp int32 = 0 var hp int32 = 70 physical_def := []int32{2, 4} magic_def := []int32{2, 4} physical_damage := []int32{2, 4} magic_damage := []int32{2, 4} result4C := &protocol.Game_RoleInfoResult{ BaseRole: &protocol.Game_BaseRole{ PlayerId: &pid, Nick: &nick, HeroId: &hero_id, }, Attribute: &protocol.Game_Attribute{ Exp: &exp, Hp: &hp, PhysicalDef: physical_def, MagicDef: magic_def, PhysicalDamage: physical_damage, MagicDamage: magic_damage, }, } encObj, _ := proto.Marshal(result4C) fmt.Println(encObj) SendPackage(conn, 1002, encObj) default: } } }