| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package GM.Commands.Face  | 
| #  | 
| # @todo:Í·ÏñÍ·Ïñ¿ò  | 
| # @author hxp  | 
| # @date 2024-09-12  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: Í·ÏñÍ·Ïñ¿ò  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #"""Version = 2024-09-12 12:00"""  | 
| #-------------------------------------------------------------------------------  | 
|   | 
| import GameWorld  | 
| import IpyGameDataPY  | 
| import PlayerControl  | 
| import PlayerFace  | 
| import ChConfig  | 
|   | 
| #Â߼ʵÏÖ  | 
| ## GMÃüÁîÖ´ÐÐÈë¿Ú  | 
| #  @param curPlayer µ±Ç°Íæ¼Ò  | 
| #  @param msgList ²ÎÊýÁÐ±í  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def OnExec(curPlayer, msgList):  | 
|       | 
|     if not msgList:  | 
|         GameWorld.DebugAnswer(curPlayer, "---------- %s" % GameWorld.GetCurrentDataTimeStr())  | 
|         GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍ·Ïñ: Face f1 Í·ÏñID [ÓÐЧÃë]")  | 
|         GameWorld.DebugAnswer(curPlayer, "ɾ³ýÍ·Ïñ: Face f0 [Í·ÏñID]")  | 
|         GameWorld.DebugAnswer(curPlayer, "Í·ÏñÐǼ¶: Face fs Í·ÏñID ÐǼ¶")  | 
|         GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍ·¿ò: Face p1 Í·¿òID [ÓÐЧÃë]")  | 
|         GameWorld.DebugAnswer(curPlayer, "ɾ³ýÍ·¿ò: Face p0 [Í·¿òID]")  | 
|         GameWorld.DebugAnswer(curPlayer, "Í·¿òÐǼ¶: Face ps Í·¿òID ÐǼ¶")  | 
|         GameWorld.DebugAnswer(curPlayer, "ÓÐЧÃë:²»Ìî¶Á±í,0-ÓÀ¾Ã,>0Ö¸¶¨ÓÐЧÃë")  | 
|         return  | 
|       | 
|     syncFaceIDList = []  | 
|     syncFacePicIDList = []  | 
|     ipyDataMgr = IpyGameDataPY.IPY_Data()  | 
|     value1 = msgList[0]  | 
|       | 
|     # É¾³ýÍ·Ïñ  | 
|     if value1 == "f0":  | 
|         faceID = msgList[1] if len(msgList) > 1 else 0  | 
|         if not faceID:  | 
|             for index in range(ipyDataMgr.GetPlayerFaceCount()):  | 
|                 ipyData = ipyDataMgr.GetPlayerFaceByIndex(index)  | 
|                 faceID = ipyData.GetFaceID()  | 
|                 if ipyData.GetUnlockDefault():  | 
|                     continue  | 
|                 if ipyData.GetCustomPlayerID():  | 
|                     continue  | 
|                 if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID):  | 
|                     continue  | 
|                 GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID, 0)  | 
|                 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceEndTime % faceID, 0)  | 
|                 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceStar % faceID, 0)  | 
|                 syncFaceIDList.append(faceID)  | 
|         else:  | 
|             ipyData = IpyGameDataPY.GetIpyGameData("PlayerFace", faceID)  | 
|             if not ipyData:  | 
|                 GameWorld.DebugAnswer(curPlayer, "¸ÃÍ·Ïñ²»´æÔÚ:%s" % faceID)  | 
|                 return  | 
|             if ipyData.GetUnlockDefault():  | 
|                 GameWorld.DebugAnswer(curPlayer, "¸ÃÍ·ÏñĬÈϼ¤»î:%s" % faceID)  | 
|                 return  | 
|             if ipyData.GetCustomPlayerID():  | 
|                 GameWorld.DebugAnswer(curPlayer, "¶¨ÖÆÍ·Ïñ²»´¦Àí:%s" % faceID)  | 
|                 return  | 
|             GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FaceState, faceID, 0)  | 
|             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceEndTime % faceID, 0)  | 
|             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceStar % faceID, 0)  | 
|             syncFaceIDList.append(faceID)  | 
|         GameWorld.DebugAnswer(curPlayer, "ɾ³ýÍ·Ïñ:%s" % syncFaceIDList)  | 
|           | 
|     # Ìí¼ÓÍ·Ïñ  | 
|     elif value1 == "f1":  | 
|         faceID = msgList[1] if len(msgList) > 1 else 0  | 
|         expireTimes = msgList[2] if len(msgList) > 2 else None  | 
|         if PlayerFace.AddFace(curPlayer, faceID, expireTimes):  | 
|             endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FaceEndTime % faceID)  | 
|             endTimeStr = "ÓÀ¾Ã" if not endTime else GameWorld.ChangeTimeNumToStr(endTime)  | 
|             GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍ·Ïñ³É¹¦:%s,µ½ÆÚ:%s" % (faceID, endTimeStr))  | 
|         else:  | 
|             GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍ·Ïñʧ°Ü:%s" % (faceID))  | 
|                       | 
|     # Í·ÏñÐǼ¶  | 
|     elif value1 == "fs":  | 
|         faceID = msgList[1] if len(msgList) > 1 else 0  | 
|         faceStar = msgList[2] if len(msgList) > 2 else 0  | 
|         starIpyData = IpyGameDataPY.GetIpyGameData("PlayerFaceStar", faceID, faceStar)  | 
|         if not starIpyData:  | 
|             GameWorld.DebugAnswer(curPlayer, "Í·ÏñÐǼ¶²»´æÔÚ:%s,star:%s" % (faceID, faceStar))  | 
|             return  | 
|         GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍ·ÏñÐǼ¶:%s,ÐÇ:%s" % (faceID, faceStar))  | 
|         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FaceStar % faceID, faceStar)  | 
|         syncFaceIDList.append(faceID)  | 
|           | 
|     # É¾³ýÍ·Ïñ¿ò  | 
|     elif value1 == "p0":  | 
|         facePicID = msgList[1] if len(msgList) > 1 else 0  | 
|         if not facePicID:  | 
|             for index in range(ipyDataMgr.GetPlayerFacePicCount()):  | 
|                 ipyData = ipyDataMgr.GetPlayerFacePicByIndex(index)  | 
|                 facePicID = ipyData.GetFacePicID()  | 
|                 if ipyData.GetUnlockDefault():  | 
|                     continue  | 
|                 if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID):  | 
|                     continue  | 
|                 GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID, 0)  | 
|                 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicEndTime % facePicID, 0)  | 
|                 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicStar % facePicID, 0)  | 
|                 syncFacePicIDList.append(facePicID)  | 
|         else:  | 
|             ipyData = IpyGameDataPY.GetIpyGameData("PlayerFacePic", facePicID)  | 
|             if not ipyData:  | 
|                 GameWorld.DebugAnswer(curPlayer, "¸ÃÍ·Ïñ¿ò²»´æÔÚ:%s" % facePicID)  | 
|                 return  | 
|             if ipyData.GetUnlockDefault():  | 
|                 GameWorld.DebugAnswer(curPlayer, "¸ÃÍ·Ïñ¿òĬÈϼ¤»î:%s" % facePicID)  | 
|                 return  | 
|             GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FacePicState, facePicID, 0)  | 
|             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicEndTime % facePicID, 0)  | 
|             PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicStar % facePicID, 0)  | 
|             syncFacePicIDList.append(facePicID)  | 
|         GameWorld.DebugAnswer(curPlayer, "ɾ³ýÍ·Ïñ¿ò:%s" % syncFacePicIDList)  | 
|           | 
|     # Ìí¼ÓÍ·Ïñ¿ò  | 
|     elif value1 == "p1":  | 
|         facePicID = msgList[1] if len(msgList) > 1 else 0  | 
|         expireTimes = msgList[2] if len(msgList) > 2 else None  | 
|         if PlayerFace.AddFacePic(curPlayer, facePicID, expireTimes):  | 
|             endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FacePicEndTime % facePicID)  | 
|             endTimeStr = "ÓÀ¾Ã" if not endTime else GameWorld.ChangeTimeNumToStr(endTime)  | 
|             GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍ·Ïñ¿ò³É¹¦:%s,µ½ÆÚ:%s" % (facePicID, endTimeStr))  | 
|         else:  | 
|             GameWorld.DebugAnswer(curPlayer, "Ìí¼ÓÍ·Ïñ¿òʧ°Ü:%s" % (facePicID))  | 
|                       | 
|     # Í·Ïñ¿òÐǼ¶  | 
|     elif value1 == "ps":  | 
|         facePicID = msgList[1] if len(msgList) > 1 else 0  | 
|         facePicStar = msgList[2] if len(msgList) > 2 else 0  | 
|         starIpyData = IpyGameDataPY.GetIpyGameData("PlayerFacePicStar", facePicID, facePicStar)  | 
|         if not starIpyData:  | 
|             GameWorld.DebugAnswer(curPlayer, "Í·Ïñ¿òÐǼ¶²»´æÔÚ:%s,star:%s" % (facePicID, facePicStar))  | 
|             return  | 
|         GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÍ·Ïñ¿òÐǼ¶:%s,ÐÇ:%s" % (facePicID, facePicStar))  | 
|         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FacePicStar % facePicID, facePicStar)  | 
|         syncFacePicIDList.append(facePicID)  | 
|           | 
|     if syncFaceIDList:  | 
|         PlayerFace.RefreshFaceAttr(curPlayer)  | 
|         PlayerFace.SyncFaceInfo(curPlayer, syncFaceIDList)  | 
|           | 
|     if syncFacePicIDList:  | 
|         PlayerFace.RefreshFacePicAttr(curPlayer)  | 
|         PlayerFace.SyncFacePicInfo(curPlayer, syncFacePicIDList)  | 
|     return  |