From eba4253bc93c8912052d65dba9beb1a371b61600 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 19 九月 2024 19:20:47 +0800
Subject: [PATCH] 10261 【越南】【砍树】【英文】头像框,头像(动态)(B902 B908 A404 A405 B001 B004 B005 C015 C018封包支持;)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py         |   18 ++
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py                   |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py     |  142 ++++++++++++++++++++++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py |    2 
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py                        |   15 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCHurtManager.py  |    3 
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py             |   17 ++
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                          |  142 ++++++++++++++++++++++-
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py                      |   14 ++
 9 files changed, 333 insertions(+), 22 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 6ab5fbb..d511bef 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -1747,6 +1747,8 @@
     NameLen = 0    #(BYTE NameLen)
     Name = ""    #(String Name)//名字
     PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
     data = None
 
@@ -1759,6 +1761,8 @@
         self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
         self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
@@ -1766,6 +1770,8 @@
         self.NameLen = 0
         self.Name = ""
         self.PlayeJob = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MoneyNum = 0
         return
 
@@ -1775,6 +1781,8 @@
         length += len(self.Name)
         length += 1
         length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -1783,6 +1791,8 @@
         data = CommFunc.WriteBYTE(data, self.NameLen)
         data = CommFunc.WriteString(data, self.NameLen, self.Name)
         data = CommFunc.WriteBYTE(data, self.PlayeJob)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MoneyNum)
         return data
 
@@ -1791,12 +1801,16 @@
                                 NameLen:%d,
                                 Name:%s,
                                 PlayeJob:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MoneyNum:%d
                                 '''\
                                 %(
                                 self.NameLen,
                                 self.Name,
                                 self.PlayeJob,
+                                self.Face,
+                                self.FacePic,
                                 self.MoneyNum
                                 )
         return DumpString
@@ -1885,6 +1899,8 @@
     Name = ""    #(String Name)//玩家名字
     Time = 0    #(DWORD Time)//时间
     PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MoneyType = 0    #(BYTE MoneyType)//金钱类型
     MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
     GetWay = 0    #(BYTE GetWay)//获得途径
@@ -1907,6 +1923,8 @@
         self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
         self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -1924,6 +1942,8 @@
         self.Name = ""
         self.Time = 0
         self.PlayeJob = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MoneyType = 0
         self.MoneyNum = 0
         self.GetWay = 0
@@ -1942,6 +1962,8 @@
         length += len(self.Name)
         length += 4
         length += 1
+        length += 4
+        length += 4
         length += 1
         length += 4
         length += 1
@@ -1961,6 +1983,8 @@
         data = CommFunc.WriteString(data, self.NameLen, self.Name)
         data = CommFunc.WriteDWORD(data, self.Time)
         data = CommFunc.WriteBYTE(data, self.PlayeJob)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteBYTE(data, self.MoneyType)
         data = CommFunc.WriteDWORD(data, self.MoneyNum)
         data = CommFunc.WriteBYTE(data, self.GetWay)
@@ -1979,6 +2003,8 @@
                                 Name:%s,
                                 Time:%d,
                                 PlayeJob:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MoneyType:%d,
                                 MoneyNum:%d,
                                 GetWay:%d,
@@ -1995,6 +2021,8 @@
                                 self.Name,
                                 self.Time,
                                 self.PlayeJob,
+                                self.Face,
+                                self.FacePic,
                                 self.MoneyType,
                                 self.MoneyNum,
                                 self.GetWay,
@@ -7701,6 +7729,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)//等级
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MapID = 0    #(DWORD MapID)
     LineID = 0    #(DWORD LineID)
     NPCID = 0    #(DWORD NPCID)
@@ -7720,6 +7750,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -7734,6 +7766,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MapID = 0
         self.LineID = 0
         self.NPCID = 0
@@ -7752,6 +7786,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
         length += 2
         length += len(self.ExData)
 
@@ -7765,6 +7801,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteDWORD(data, self.LineID)
         data = CommFunc.WriteDWORD(data, self.NPCID)
@@ -7780,6 +7818,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MapID:%d,
                                 LineID:%d,
                                 NPCID:%d,
@@ -7793,6 +7833,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.MapID,
                                 self.LineID,
                                 self.NPCID,
@@ -8251,6 +8293,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MapID = 0    #(DWORD MapID)
     LineID = 0    #(DWORD LineID)
     NPCID = 0    #(DWORD NPCID)
@@ -8275,6 +8319,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -8295,6 +8341,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MapID = 0
         self.LineID = 0
         self.NPCID = 0
@@ -8316,6 +8364,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
         length += 2
         length += len(self.ExData)
         length += 19
@@ -8332,6 +8382,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteDWORD(data, self.LineID)
         data = CommFunc.WriteDWORD(data, self.NPCID)
@@ -8350,6 +8402,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MapID:%d,
                                 LineID:%d,
                                 NPCID:%d,
@@ -8366,6 +8420,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.MapID,
                                 self.LineID,
                                 self.NPCID,
@@ -8950,6 +9006,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -8963,6 +9021,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -8971,6 +9031,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -8980,6 +9042,8 @@
         length += 1
         length += 2
         length += 1
+        length += 4
+        length += 4
 
         return length
 
@@ -8990,6 +9054,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -8998,14 +9064,18 @@
                                 PlayerName:%s,
                                 Job:%d,
                                 LV:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
                                 self.Job,
                                 self.LV,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -14325,6 +14395,8 @@
     Job = 0    #(BYTE Job)// 玩家职业
     JobLevel = 0    #(BYTE JobLevel)// 玩家职业阶级
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -14340,6 +14412,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -14350,6 +14424,8 @@
         self.Job = 0
         self.JobLevel = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -14361,6 +14437,8 @@
         length += 1
         length += 1
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -14373,6 +14451,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteBYTE(data, self.JobLevel)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -14383,7 +14463,9 @@
                                 LV:%d,
                                 Job:%d,
                                 JobLevel:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -14392,7 +14474,9 @@
                                 self.LV,
                                 self.Job,
                                 self.JobLevel,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -15004,6 +15088,8 @@
     Job = 0    #(BYTE Job)// 玩家职业
     JobLevel = 0    #(BYTE JobLevel)// 玩家职业阶级
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     PlayerState = 0    #(BYTE PlayerState)// 0: 离线 1:在线
     MapID = 0    #(DWORD MapID)// 地图ID
     LineID = 0    #(BYTE LineID)// 线路ID
@@ -15024,6 +15110,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -15039,6 +15127,8 @@
         self.Job = 0
         self.JobLevel = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.PlayerState = 0
         self.MapID = 0
         self.LineID = 0
@@ -15055,6 +15145,8 @@
         length += 1
         length += 1
         length += 2
+        length += 4
+        length += 4
         length += 1
         length += 4
         length += 1
@@ -15072,6 +15164,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteBYTE(data, self.JobLevel)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteBYTE(data, self.PlayerState)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteBYTE(data, self.LineID)
@@ -15088,6 +15182,8 @@
                                 Job:%d,
                                 JobLevel:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 PlayerState:%d,
                                 MapID:%d,
                                 LineID:%d
@@ -15102,6 +15198,8 @@
                                 self.Job,
                                 self.JobLevel,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.PlayerState,
                                 self.MapID,
                                 self.LineID
@@ -16077,6 +16175,8 @@
     FightPower = 0    #(DWORD FightPower)// 战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力整除亿部分
     RealmLV = 0    #(WORD RealmLV)
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -16093,6 +16193,8 @@
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -16104,6 +16206,8 @@
         self.FightPower = 0
         self.FightPowerEx = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -16116,6 +16220,8 @@
         length += 4
         length += 4
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -16129,6 +16235,8 @@
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -16140,7 +16248,9 @@
                                 LV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -16150,7 +16260,9 @@
                                 self.LV,
                                 self.FightPower,
                                 self.FightPowerEx,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -17098,6 +17210,8 @@
     FightPower = 0    #(DWORD FightPower)// 战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力整除亿部分
     RealmLV = 0    #(WORD RealmLV)
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -17114,6 +17228,8 @@
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -17125,6 +17241,8 @@
         self.FightPower = 0
         self.FightPowerEx = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -17137,6 +17255,8 @@
         length += 4
         length += 4
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -17150,6 +17270,8 @@
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -17161,7 +17283,9 @@
                                 LV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -17171,7 +17295,9 @@
                                 self.LV,
                                 self.FightPower,
                                 self.FightPowerEx,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py
index e852efe..1dc3178 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossChampionship.py
@@ -114,6 +114,8 @@
         self.lv = 0
         self.fightPower = 0
         self.realmLV = 0
+        self.face = 0
+        self.facePic = 0
         return
     
     def GetString(self):
@@ -128,9 +130,11 @@
                 playerShortInfo["LV"] = cacheDict.get("LV", 1)
                 playerShortInfo["FightPower"] = cacheDict.get("FightPower", 0)
                 playerShortInfo["RealmLV"] = cacheDict.get("RealmLV", 0)
+                playerShortInfo["Face"] = cacheDict.get("Face", 0)
+                playerShortInfo["FacePic"] = cacheDict.get("FacePic", 0)
                 self.applyPlayerInfo[applyPlayerID] = playerShortInfo
         return {"zoneID":self.zoneID, "officialID":self.officialID, "lastDismissJuniorTime":self.lastDismissJuniorTime,
-                "accID":self.accID, "playerID":self.playerID, "playerName":self.playerName,
+                "accID":self.accID, "playerID":self.playerID, "playerName":self.playerName, "face":self.face, "facePic":self.facePic,
                 "job":self.job, "lv":self.lv, "fightPower":self.fightPower, "realmLV":self.realmLV, "rank":self.rank,
                 "worshipCount":self.worshipCount, "applyPlayerInfo":self.applyPlayerInfo, "challengeList":self.challengeList,
                 "worshipDouble":self.worshipDouble
@@ -210,11 +214,13 @@
         self.lv = 0
         self.fightPower = 0
         self.realmLV = 0
+        self.face = 0
+        self.facePic = 0
         return
     
     def GetString(self):
         return {"zoneID":self.zoneID, "accID":self.accID, "playerID":self.playerID, "playerName":self.playerName,
-                "job":self.job, "lv":self.lv, "fightPower":self.fightPower, "realmLV":self.realmLV}
+                "job":self.job, "lv":self.lv, "fightPower":self.fightPower, "realmLV":self.realmLV, "face":self.face, "facePic":self.facePic}
     
     def SetAttr(self, attrDict):
         for k, v in attrDict.items():
@@ -346,6 +352,8 @@
         obj.lv = cacheDict.get("LV", obj.lv)
         obj.fightPower = cacheDict.get("FightPower", obj.fightPower)
         obj.realmLV = cacheDict.get("RealmLV", obj.realmLV)
+        obj.face = cacheDict.get("Face", obj.face)
+        obj.facePic = cacheDict.get("FacePic", obj.facePic)
         
     return
 
@@ -2963,6 +2971,8 @@
         playerPack.FightPower = batPlayer.fightPower % ShareDefine.Def_PerPointValue
         playerPack.FightPowerEx = batPlayer.fightPower / ShareDefine.Def_PerPointValue
         playerPack.RealmLV = batPlayer.realmLV
+        playerPack.Face = batPlayer.face
+        playerPack.FacePic = batPlayer.facePic
         clientPack.PlayerList.append(playerPack)
     clientPack.PlayerCount = len(clientPack.PlayerList)
     
@@ -3122,6 +3132,8 @@
         offPlayer.FightPower = offObj.fightPower % ShareDefine.Def_PerPointValue
         offPlayer.FightPowerEx = offObj.fightPower / ShareDefine.Def_PerPointValue
         offPlayer.RealmLV = offObj.realmLV
+        offPlayer.Face = offObj.face
+        offPlayer.FacePic = offObj.facePic
         
         offPack = ChPyNetSendPack.tagGCChampionshipOfficial()
         offPack.OfficialID = officialID
@@ -3141,6 +3153,8 @@
             applyPlayer.FightPower = fightPower % ShareDefine.Def_PerPointValue
             applyPlayer.FightPowerEx = fightPower / ShareDefine.Def_PerPointValue
             applyPlayer.RealmLV = playerInfo.get("RealmLV", 1)
+            applyPlayer.Face = playerInfo.get("Face", 0)
+            applyPlayer.FacePic = playerInfo.get("FacePic", 0)
             
             offPack.ApplyPlayerList.append(applyPlayer)
         offPack.ApplyPlayerCount = len(offPack.ApplyPlayerList)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
index 384e068..b40c2c6 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
@@ -232,6 +232,8 @@
     setattr(dbData, "ObjID", 0) # NPC实例ID
     setattr(dbData, "ServerGroupID", serverGroupID)
     setattr(dbData, "OffLineTime", 0) # 发布玩家离线时间戳
+    setattr(dbData, "Face", 0)
+    setattr(dbData, "FacePic", 0)
     
     assistType = AssistType_Unknown
     if dbData.NPCID:
@@ -247,6 +249,8 @@
 
 def OnInitAssistThanksData(thanksMgr, dbData):
     ## 初始化协助感谢数据额外处理
+    setattr(dbData, "Face", 0)
+    setattr(dbData, "FacePic", 0)
     setattr(dbData, "AssistPlayerDict", {})
     if dbData.AssistPlayer and dbData.AssistPlayer.startswith("{") and dbData.AssistPlayer.endswith("}"):
         dbData.AssistPlayerDict = eval(dbData.AssistPlayer)
@@ -847,6 +851,8 @@
     # 以下是非DB字段属性
     OnInitAssistData(assistObj, isSaveDB, serverGroupID)
     assistObj.ObjID = objID
+    assistObj.Face = curPlayer.GetFace()
+    assistObj.FacePic = curPlayer.GetFacePic()
     
     #assistMgr = PyDataManager.GetPlayerAssistPyManager()
     assistMgr.allAssistDict[assistGUID] = assistObj
@@ -871,6 +877,8 @@
         assistInfo.Job = assistObj.Job
         assistInfo.LV = assistObj.LV
         assistInfo.RealmLV = assistObj.RealmLV
+        assistInfo.Face = assistObj.Face
+        assistInfo.FacePic = assistObj.FacePic
         assistInfo.MapID = assistObj.MapID
         assistInfo.LineID = assistObj.LineID
         assistInfo.NPCID = assistObj.NPCID
@@ -1200,6 +1208,8 @@
     
     assistThanksMgr = PyDataManager.GetPlayerAssistThanksPyManager()
     OnInitAssistThanksData(assistThanksMgr, newThanks)
+    newThanks.Face = curPlayer.GetFace()
+    newThanks.FacePic = curPlayer.GetFacePic()
     
     GameWorld.DebugLog("增加协助感谢: itemID=%s,mapID=%s,lineID=%s,npcID=%s,exData=%s" % (itemID, mapID, lineID, npcID, exData), playerID)
     return
@@ -1259,6 +1269,8 @@
             assistPlayerInfo.Job = assistPlayerInfoDict["Job"]
             assistPlayerInfo.LV = assistPlayerInfoDict["LV"]
             assistPlayerInfo.RealmLV = assistPlayerInfoDict["RealmLV"]
+            assistPlayerInfo.Face = assistPlayerInfoDict.get("Face", 0)
+            assistPlayerInfo.FacePic = assistPlayerInfoDict.get("FacePic", 0)
             previewPack.AssistPlayerList.append(assistPlayerInfo)
         previewPack.AssistPlayerCount = len(previewPack.AssistPlayerList)
         NetPackCommon.SendFakePack(curPlayer, previewPack)
@@ -1332,6 +1344,8 @@
         previewPack.Job = getThanks.Job
         previewPack.LV = getThanks.LV
         previewPack.RealmLV = getThanks.RealmLV
+        previewPack.Face = getThanks.Face
+        previewPack.FacePic = getThanks.FacePic
         previewPack.MapID = getThanks.MapID
         previewPack.LineID = getThanks.LineID
         previewPack.NPCID = getThanks.NPCID
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
index d2dca9f..531c787 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
@@ -24,6 +24,7 @@
 import ChPyNetSendPack
 import PlayerCompensation
 import PlayerDBGSEvent
+import PlayerViewCache
 import PlayerControl
 import PlayerFamily
 import PyGameData
@@ -78,6 +79,7 @@
     #value4    moneyType
     #value5    getMoney
     #strValue1 名字
+    #strValue2 face|facePic
     
     recData.SetValue1(grabObj.redPacketID)
     recData.SetValue2(grabObj.playerID)
@@ -85,6 +87,7 @@
     recData.SetValue4(grabObj.moneyType)
     recData.SetValue5(grabObj.getMoney)
     recData.SetStrValue1(grabObj.playerName)
+    recData.SetStrValue2('%s|%s' % (grabObj.face, grabObj.facePic))
     return
 
 class RedPacketGrab():
@@ -97,6 +100,8 @@
         self.playerName = ""
         self.moneyType = 0
         self.getMoney = 0
+        self.face = 0
+        self.facePic = 0
         return
 
 class RedPacketData():
@@ -356,11 +361,15 @@
         if not redPacketObj:
             continue
         
+        strValue2List = recData.GetStrValue2().split('|')
+        
         grabObj = RedPacketGrab(redPacketID, playerID)
         grabObj.playerJob = recData.GetValue3()
         grabObj.playerName = recData.GetStrValue1()
         grabObj.moneyType = recData.GetValue4()
         grabObj.getMoney = recData.GetValue5()
+        grabObj.face = GameWorld.ToIntDef(strValue2List[0]) if len(strValue2List) > 0 else 0
+        grabObj.facePic = GameWorld.ToIntDef(strValue2List[1]) if len(strValue2List) > 1 else 0
         
         redPacketObj.grabDict[playerID] = grabObj
         
@@ -1203,6 +1212,8 @@
     grabObj = RedPacketGrab(redPacketID, playerID)
     grabObj.playerJob = curPlayer.GetJob()
     grabObj.playerName = curPlayer.GetName()
+    grabObj.face = curPlayer.GetFace()
+    grabObj.facePic = curPlayer.GetFacePic()
     grabObj.moneyType = moneyType
     grabObj.getMoney = getMoney
     grabRecordDict[playerID] = grabObj
@@ -1238,6 +1249,8 @@
         grabInfo.Name = grabObj.playerName
         grabInfo.NameLen = len(grabInfo.Name)
         grabInfo.PlayeJob = grabObj.playerJob
+        grabInfo.Face = grabObj.face
+        grabInfo.FacePic = grabObj.facePic
         grabInfo.MoneyNum = grabObj.getMoney
         sendPack.GrabInfo.append(grabInfo)
     sendPack.Count = len(sendPack.GrabInfo)
@@ -1295,7 +1308,7 @@
         if isAll and state in [State_HasGot, State_HasAllGot]:
             #GameWorld.DebugLog("    已抢或抢完的不发: redPacketID=%s,state=%s" % (redPacketID, state))
             continue
-        
+        tagCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(redPacketObj.playerID))
         packetInfo = ChPyNetSendPack.tagFRedPacketInfo()
         packetInfo.Clear()
         packetInfo.RedPacketID = redPacketObj.redPacketID
@@ -1304,6 +1317,8 @@
         packetInfo.NameLen = len(packetInfo.Name)
         packetInfo.Time = redPacketObj.createTime
         packetInfo.PlayeJob = redPacketObj.playerJob
+        packetInfo.Face = tagCacheDict.get("Face", 0)
+        packetInfo.FacePic = tagCacheDict.get("FacePic", 0)
         packetInfo.MoneyType = redPacketObj.moneyType
         packetInfo.MoneyNum = redPacketObj.moneyValue
         packetInfo.GetWay = redPacketObj.getWay
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
index fa4bbf0..f323c8a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
@@ -307,7 +307,8 @@
         GameWorld.ErrLog("设置当前创建队伍玩家为队长, 找不到玩家!teamID=%s" % teamID, curPlayerID)
         DR_Team("CreateError", teamID, {"Leader":curPlayerID, "tagMapID":tagMapID, "tagMapEx":tagMapEx, "reqMinLV":reqMinLV, "reqMaxLV":reqMaxLV})
         return
-    
+    curNewTeamMenber.SetFace(curPlayer.GetFace())
+    curNewTeamMenber.SetFacePic(curPlayer.GetFacePic())
     __SetTeamLV(curNewTeamMenber, IPY_GameServer.tmlLeader, False)
     if isSync:
         Sync_TeamMemberInfo(curNewTeam)
@@ -587,6 +588,8 @@
         member.Job = memberInfo.GetPlayerJob()
         member.JobLevel = memberInfo.GetPlayerJobLevel()
         member.RealmLV = memberInfo.GetPlayerRealmLV()
+        member.Face = memberInfo.GetFace()
+        member.FacePic = memberInfo.GetFacePic()
 
         memberPlayer = curTeam.GetMemberPlayer(i)
         if memberPlayer and memberPlayer.GetPlayerID():
@@ -863,6 +866,10 @@
     GameWorld.Log("%s(%d)加入队伍 %s(%d), teamID=%s!" % (joinPlayer.GetName(), joinPlayer.GetPlayerID(), 
                                                      teamPlayer.GetName(), teamPlayer.GetPlayerID(), teamID))
     tagTeam.AddMember(joinPlayer)
+    tagMember = tagTeam.GetMemberByID(joinPlayer.GetPlayerID())
+    if tagMember:
+        tagMember.SetFace(joinPlayer.GetFace())
+        tagMember.SetFacePic(joinPlayer.GetFacePic())
     #UpdSceneTeamVersion(teamPlayer.GetMapID(), tick)
     
     #tagTeam.Sync_TeamState()
@@ -1643,6 +1650,8 @@
         nearbyPlayer.LV = player.GetLV()
         nearbyPlayer.Job = player.GetJob()
         nearbyPlayer.RealmLV = player.GetOfficialRank()
+        nearbyPlayer.Face = player.GetFace()
+        nearbyPlayer.FacePic = player.GetFacePic()
         nearbyPlayerInfo.PlayerList.append(nearbyPlayer)
         
     playerCount = len(nearbyPlayerInfo.PlayerList)
@@ -2037,6 +2046,10 @@
         teamMember.SetPlayerJobLevel(value)
     elif refreshType == IPY_GameServer.CDBPlayerRefresh_OfficialRank:
         teamMember.SetPlayerRealmLV(value)
+    elif refreshType == IPY_GameServer.CDBPlayerRefresh_Face:
+        teamMember.SetFace(value)
+    elif refreshType == IPY_GameServer.CDBPlayerRefresh_HairColor:
+        teamMember.SetFacePic(value)
     elif refreshType in [IPY_GameServer.CDBPlayerRefresh_VIPLv, IPY_GameServer.CDBPlayerRefresh_ExAttr9]:
         SyncMapServerTeamInfo(curTeam, "Refresh", {"refreshType":refreshType, "value":value})
     else:
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
index 8e1047a..a60bc5a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
@@ -235,6 +235,8 @@
                  "Job":curPlayer.GetJob(),
                  "VIPLV":curPlayer.GetVIPLv(),
                  "Name":CrossRealmPlayer.GetCrossPlayerName(curPlayer),
+                 "Face":curPlayer.GetFace(),
+                 "FacePic":curPlayer.GetFacePic(),
                  "FamilyID":curPlayer.GetFamilyID(),
                  "FamilyName":cacheDict.get("FamilyName", ""),
                  "TitleID":cacheDict.get("TitleID", 0),
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 6ab5fbb..d511bef 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -1747,6 +1747,8 @@
     NameLen = 0    #(BYTE NameLen)
     Name = ""    #(String Name)//名字
     PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
     data = None
 
@@ -1759,6 +1761,8 @@
         self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
         self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
@@ -1766,6 +1770,8 @@
         self.NameLen = 0
         self.Name = ""
         self.PlayeJob = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MoneyNum = 0
         return
 
@@ -1775,6 +1781,8 @@
         length += len(self.Name)
         length += 1
         length += 4
+        length += 4
+        length += 4
 
         return length
 
@@ -1783,6 +1791,8 @@
         data = CommFunc.WriteBYTE(data, self.NameLen)
         data = CommFunc.WriteString(data, self.NameLen, self.Name)
         data = CommFunc.WriteBYTE(data, self.PlayeJob)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MoneyNum)
         return data
 
@@ -1791,12 +1801,16 @@
                                 NameLen:%d,
                                 Name:%s,
                                 PlayeJob:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MoneyNum:%d
                                 '''\
                                 %(
                                 self.NameLen,
                                 self.Name,
                                 self.PlayeJob,
+                                self.Face,
+                                self.FacePic,
                                 self.MoneyNum
                                 )
         return DumpString
@@ -1885,6 +1899,8 @@
     Name = ""    #(String Name)//玩家名字
     Time = 0    #(DWORD Time)//时间
     PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MoneyType = 0    #(BYTE MoneyType)//金钱类型
     MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
     GetWay = 0    #(BYTE GetWay)//获得途径
@@ -1907,6 +1923,8 @@
         self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
         self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -1924,6 +1942,8 @@
         self.Name = ""
         self.Time = 0
         self.PlayeJob = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MoneyType = 0
         self.MoneyNum = 0
         self.GetWay = 0
@@ -1942,6 +1962,8 @@
         length += len(self.Name)
         length += 4
         length += 1
+        length += 4
+        length += 4
         length += 1
         length += 4
         length += 1
@@ -1961,6 +1983,8 @@
         data = CommFunc.WriteString(data, self.NameLen, self.Name)
         data = CommFunc.WriteDWORD(data, self.Time)
         data = CommFunc.WriteBYTE(data, self.PlayeJob)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteBYTE(data, self.MoneyType)
         data = CommFunc.WriteDWORD(data, self.MoneyNum)
         data = CommFunc.WriteBYTE(data, self.GetWay)
@@ -1979,6 +2003,8 @@
                                 Name:%s,
                                 Time:%d,
                                 PlayeJob:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MoneyType:%d,
                                 MoneyNum:%d,
                                 GetWay:%d,
@@ -1995,6 +2021,8 @@
                                 self.Name,
                                 self.Time,
                                 self.PlayeJob,
+                                self.Face,
+                                self.FacePic,
                                 self.MoneyType,
                                 self.MoneyNum,
                                 self.GetWay,
@@ -7701,6 +7729,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)//等级
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MapID = 0    #(DWORD MapID)
     LineID = 0    #(DWORD LineID)
     NPCID = 0    #(DWORD NPCID)
@@ -7720,6 +7750,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -7734,6 +7766,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MapID = 0
         self.LineID = 0
         self.NPCID = 0
@@ -7752,6 +7786,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
         length += 2
         length += len(self.ExData)
 
@@ -7765,6 +7801,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteDWORD(data, self.LineID)
         data = CommFunc.WriteDWORD(data, self.NPCID)
@@ -7780,6 +7818,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MapID:%d,
                                 LineID:%d,
                                 NPCID:%d,
@@ -7793,6 +7833,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.MapID,
                                 self.LineID,
                                 self.NPCID,
@@ -8251,6 +8293,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     MapID = 0    #(DWORD MapID)
     LineID = 0    #(DWORD LineID)
     NPCID = 0    #(DWORD NPCID)
@@ -8275,6 +8319,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -8295,6 +8341,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.MapID = 0
         self.LineID = 0
         self.NPCID = 0
@@ -8316,6 +8364,8 @@
         length += 4
         length += 4
         length += 4
+        length += 4
+        length += 4
         length += 2
         length += len(self.ExData)
         length += 19
@@ -8332,6 +8382,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteDWORD(data, self.LineID)
         data = CommFunc.WriteDWORD(data, self.NPCID)
@@ -8350,6 +8402,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 MapID:%d,
                                 LineID:%d,
                                 NPCID:%d,
@@ -8366,6 +8420,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.MapID,
                                 self.LineID,
                                 self.NPCID,
@@ -8950,6 +9006,8 @@
     Job = 0    #(BYTE Job)
     LV = 0    #(WORD LV)
     RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -8963,6 +9021,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -8971,6 +9031,8 @@
         self.Job = 0
         self.LV = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -8980,6 +9042,8 @@
         length += 1
         length += 2
         length += 1
+        length += 4
+        length += 4
 
         return length
 
@@ -8990,6 +9054,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteBYTE(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -8998,14 +9064,18 @@
                                 PlayerName:%s,
                                 Job:%d,
                                 LV:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
                                 self.PlayerName,
                                 self.Job,
                                 self.LV,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -14325,6 +14395,8 @@
     Job = 0    #(BYTE Job)// 玩家职业
     JobLevel = 0    #(BYTE JobLevel)// 玩家职业阶级
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -14340,6 +14412,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -14350,6 +14424,8 @@
         self.Job = 0
         self.JobLevel = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -14361,6 +14437,8 @@
         length += 1
         length += 1
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -14373,6 +14451,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteBYTE(data, self.JobLevel)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -14383,7 +14463,9 @@
                                 LV:%d,
                                 Job:%d,
                                 JobLevel:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -14392,7 +14474,9 @@
                                 self.LV,
                                 self.Job,
                                 self.JobLevel,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -15004,6 +15088,8 @@
     Job = 0    #(BYTE Job)// 玩家职业
     JobLevel = 0    #(BYTE JobLevel)// 玩家职业阶级
     RealmLV = 0    #(WORD RealmLV)// 玩家境界等级
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     PlayerState = 0    #(BYTE PlayerState)// 0: 离线 1:在线
     MapID = 0    #(DWORD MapID)// 地图ID
     LineID = 0    #(BYTE LineID)// 线路ID
@@ -15024,6 +15110,8 @@
         self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlayerState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -15039,6 +15127,8 @@
         self.Job = 0
         self.JobLevel = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         self.PlayerState = 0
         self.MapID = 0
         self.LineID = 0
@@ -15055,6 +15145,8 @@
         length += 1
         length += 1
         length += 2
+        length += 4
+        length += 4
         length += 1
         length += 4
         length += 1
@@ -15072,6 +15164,8 @@
         data = CommFunc.WriteBYTE(data, self.Job)
         data = CommFunc.WriteBYTE(data, self.JobLevel)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         data = CommFunc.WriteBYTE(data, self.PlayerState)
         data = CommFunc.WriteDWORD(data, self.MapID)
         data = CommFunc.WriteBYTE(data, self.LineID)
@@ -15088,6 +15182,8 @@
                                 Job:%d,
                                 JobLevel:%d,
                                 RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
                                 PlayerState:%d,
                                 MapID:%d,
                                 LineID:%d
@@ -15102,6 +15198,8 @@
                                 self.Job,
                                 self.JobLevel,
                                 self.RealmLV,
+                                self.Face,
+                                self.FacePic,
                                 self.PlayerState,
                                 self.MapID,
                                 self.LineID
@@ -16077,6 +16175,8 @@
     FightPower = 0    #(DWORD FightPower)// 战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力整除亿部分
     RealmLV = 0    #(WORD RealmLV)
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -16093,6 +16193,8 @@
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -16104,6 +16206,8 @@
         self.FightPower = 0
         self.FightPowerEx = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -16116,6 +16220,8 @@
         length += 4
         length += 4
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -16129,6 +16235,8 @@
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -16140,7 +16248,9 @@
                                 LV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -16150,7 +16260,9 @@
                                 self.LV,
                                 self.FightPower,
                                 self.FightPowerEx,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
@@ -17098,6 +17210,8 @@
     FightPower = 0    #(DWORD FightPower)// 战力求余亿部分
     FightPowerEx = 0    #(DWORD FightPowerEx)// 战力整除亿部分
     RealmLV = 0    #(WORD RealmLV)
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
     data = None
 
     def __init__(self):
@@ -17114,6 +17228,8 @@
         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -17125,6 +17241,8 @@
         self.FightPower = 0
         self.FightPowerEx = 0
         self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
         return
 
     def GetLength(self):
@@ -17137,6 +17255,8 @@
         length += 4
         length += 4
         length += 2
+        length += 4
+        length += 4
 
         return length
 
@@ -17150,6 +17270,8 @@
         data = CommFunc.WriteDWORD(data, self.FightPower)
         data = CommFunc.WriteDWORD(data, self.FightPowerEx)
         data = CommFunc.WriteWORD(data, self.RealmLV)
+        data = CommFunc.WriteDWORD(data, self.Face)
+        data = CommFunc.WriteDWORD(data, self.FacePic)
         return data
 
     def OutputString(self):
@@ -17161,7 +17283,9 @@
                                 LV:%d,
                                 FightPower:%d,
                                 FightPowerEx:%d,
-                                RealmLV:%d
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -17171,7 +17295,9 @@
                                 self.LV,
                                 self.FightPower,
                                 self.FightPowerEx,
-                                self.RealmLV
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic
                                 )
         return DumpString
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCHurtManager.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCHurtManager.py
index 55f7719..0b17973 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCHurtManager.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCHurtManager.py
@@ -860,7 +860,8 @@
                     todayGiftCount = assistPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GetThanksGiftCount % liheItemID)
                     assistAwardPlayerDict[assistPlayerID] = {"PlayerName":assistPlayer.GetPlayerName(), "Job":assistPlayer.GetJob(), 
                                                              "LV":assistPlayer.GetLV(), "RealmLV":assistPlayer.GetOfficialRank(),
-                                                             "TodayGiftCount":todayGiftCount, "AssistMoney":assistMoney, "IsFriend":isFriend}
+                                                             "TodayGiftCount":todayGiftCount, "AssistMoney":assistMoney, "IsFriend":isFriend, 
+                                                             "Face":assistPlayer.GetFace(), "FacePic":assistPlayer.GetFacePic()}
                     
                     notifyParam = [assistPlayer.GetPlayerName(), noAssistPlayer.GetPlayerName(), mapID, self.curNPC.GetLV(), self.npcID]
                     PlayerControl.FamilyNotify(assistPlayer.GetFamilyID(), "AssistBossFinish", notifyParam)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py
index fa7a178..e3c0487 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py
@@ -346,7 +346,7 @@
         todayGiftCount = assistPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GetThanksGiftCount % liheItemID)
         assistPlayerDict[assistPlayerID] = {"PlayerName":assistPlayer.GetPlayerName(), "Job":assistPlayer.GetJob(), 
                                             "LV":assistPlayer.GetLV(), "RealmLV":assistPlayer.GetOfficialRank(),
-                                            "TodayGiftCount":todayGiftCount}
+                                            "TodayGiftCount":todayGiftCount, "Face":assistPlayer.GetFace(), "FacePic":assistPlayer.GetFacePic()}
         
         # 暂定支持同队伍不同仙盟间协助
         if assistFamilyID and assistFamilyID == noAssistPlayerFamilyID:

--
Gitblit v1.8.0