| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package GM.Commands.Success  | 
| #  | 
| # @todo:³É¾Í  | 
| # @author hxp  | 
| # @date 2020-03-31  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: ³É¾Í  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #"""Version = 2020-03-31 18:00"""  | 
| #-------------------------------------------------------------------------------  | 
|   | 
| import ChConfig  | 
| import ShareDefine  | 
| import PlayerSuccess  | 
| import GameWorld  | 
| import PlayerControl  | 
|   | 
| #Â߼ʵÏÖ  | 
| ## GMÃüÁîÖ´ÐÐÈë¿Ú  | 
| #  @param curPlayer µ±Ç°Íæ¼Ò  | 
| #  @param msgList ²ÎÊýÁбí [npcID]  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def OnExec(curPlayer, msgList):  | 
|     if not msgList:  | 
|         GameWorld.DebugAnswer(curPlayer, "ÖØÖÃËùÓгɾÍ: Success 0")  | 
|         GameWorld.DebugAnswer(curPlayer, "ÖØÖÃÖ¸¶¨³É¾Í: Success 0 ÀàÐÍ")  | 
|         GameWorld.DebugAnswer(curPlayer, "ÖØÖóɾÍÁì½±: Success w ÀàÐÍ")  | 
|         GameWorld.DebugAnswer(curPlayer, "Êä³ö³É¾ÍÊý¾Ý: Success p ÀàÐÍ")  | 
|         #GameWorld.DebugAnswer(curPlayer, "Ôö¼Ó³É¾Í½ø¶È: Success a ÀàÐÍ ½ø¶È Ìõ¼þ(Ñ¡Ìî)")  | 
|         #GameWorld.DebugAnswer(curPlayer, "¸üгɾͽø¶È: Success u ÀàÐÍ ½ø¶È Ìõ¼þ(Ñ¡Ìî)")  | 
|         return  | 
|       | 
|     cmdType = msgList[0]  | 
|     # ÖØÖÃÊý¾Ý  | 
|     if cmdType == 0:  | 
|         __DoResetSuccess(curPlayer, msgList)  | 
|     # ÖØÖÃÁì½±  | 
|     elif cmdType == "w":  | 
|         __DoResetSuccessAward(curPlayer, msgList)  | 
|     # Êä³öÊý¾Ý  | 
|     elif cmdType == "p":  | 
|         __DoPrintSuccess(curPlayer, msgList)  | 
|     # Ôö¼Ó½ø¶È  | 
|     elif cmdType == "a":  | 
|         pass  | 
|     # ¸üнø¶È  | 
|     elif cmdType == "u":  | 
|         pass  | 
|       | 
|     return  | 
|   | 
| def __DoResetSuccess(curPlayer, msgList):  | 
|     ## ÖØÖóɾÍÊý¾Ý  | 
|     if len(msgList) > 1:  | 
|         typeList = [msgList[1]]  | 
|     else:  | 
|         typeList = ShareDefine.SuccessTypeList  | 
|     resetTypeList = []  | 
|     for succType in typeList:  | 
|         succDataList = PlayerSuccess.GetSuccDataMng().GetSuccDataByType(succType)  | 
|         if not succDataList:  | 
|             continue  | 
|           | 
|         for succDataObj in succDataList:  | 
|             succID = succDataObj.succID  | 
|             if succType not in resetTypeList:  | 
|                 resetTypeList.append(succType)  | 
|             PlayerSuccess.SetSuccHasGot(curPlayer, succID, False)  | 
|             PlayerSuccess.SetSuccPassportAwardHasGot(curPlayer, succID, False)  | 
|             PlayerSuccess.SetSuccFinish(curPlayer, succID, False)  | 
|             PlayerSuccess.SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_LastDay % (succID), 0)  | 
|             PlayerSuccess.SetSuccFinishValue(curPlayer, succType, succDataObj.condition, 0)  | 
|               | 
|     # ÀÏÍæ¼ÒÉÏÏß¼ì²éÇé¿ö  | 
|     PlayerSuccess.SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, 0)  | 
|     # Í¬²½³É¾ÍÐÅÏ¢  | 
|     PlayerSuccess.Sync_SuccessInfo(curPlayer, [], True)  | 
|     # Í¬²½³É¾ÍÁì½±¼Ç¼  | 
|     PlayerSuccess.Sync_SuccTypeIndexAwardRecord(curPlayer, [], True)  | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Success_ScoreAward, 0)  | 
|     PlayerSuccess.Sync_SuccessScoreAward(curPlayer)  | 
|     GameWorld.DebugAnswer(curPlayer, "ÖØÖóɾÍÀàÐÍ:%s" % resetTypeList)  | 
|     return  | 
|   | 
| def __DoResetSuccessAward(curPlayer, msgList):  | 
|     ## ÖØÖóɾÍÁì½±  | 
|     if len(msgList) > 1:  | 
|         typeList = [msgList[1]]  | 
|     else:  | 
|         typeList = ShareDefine.SuccessTypeList  | 
|           | 
|     resetIDList = []  | 
|     for succType in typeList:  | 
|         succDataList = PlayerSuccess.GetSuccDataMng().GetSuccDataByType(succType)  | 
|         if not succDataList:  | 
|             continue  | 
|           | 
|         for succDataObj in succDataList:  | 
|             succID = succDataObj.succID  | 
|             if not PlayerSuccess.GetSuccHasGot(curPlayer, succID) and not PlayerSuccess.GetSuccPassportAwardHasGot(curPlayer, succID):  | 
|                 continue  | 
|             PlayerSuccess.SetSuccHasGot(curPlayer, succID, False)  | 
|             PlayerSuccess.SetSuccPassportAwardHasGot(curPlayer, succID, False)  | 
|             PlayerSuccess.SetSuccFinish(curPlayer, succID) # ÓÐÖØÖÃÁì½±µÄIDÐèÒªÖØÐÂÉèÖÃΪÒÑÍê³É  | 
|             resetIDList.append(succID)  | 
|               | 
|     # Í¬²½³É¾ÍÁì½±¼Ç¼  | 
|     PlayerSuccess.Sync_SuccTypeIndexAwardRecord(curPlayer, resetIDList, True)  | 
|     GameWorld.DebugAnswer(curPlayer, "ÖØÖóɾÍIDÁì½±:%s" % resetIDList)  | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Success_ScoreAward, 0)  | 
|     PlayerSuccess.Sync_SuccessScoreAward(curPlayer)  | 
|     return  | 
|   | 
| def __DoPrintSuccess(curPlayer, msgList):  | 
|     ## Êä³ö³É¾ÍÊý¾Ý  | 
|     if len(msgList) > 1:  | 
|         typeList = [msgList[1]]  | 
|     else:  | 
|         typeList = ShareDefine.SuccessTypeList  | 
|     GameWorld.DebugAnswer(curPlayer, "--- Êä³öÓнø¶ÈµÄ³É¾ÍÊý¾Ý ---")  | 
|     for succType in typeList:  | 
|         succDataList = PlayerSuccess.GetSuccDataMng().GetSuccDataByType(succType)  | 
|         if not succDataList:  | 
|             continue  | 
|         printType = False  | 
|         for succDataObj in succDataList:  | 
|             succID = succDataObj.succID  | 
|             value = PlayerSuccess.GetSuccFinishValue(curPlayer, succType, succDataObj.condition)  | 
|             if not value:  | 
|                 continue  | 
|             if not printType:  | 
|                 printType = True  | 
|                 GameWorld.DebugAnswer(curPlayer, "³É¾ÍÀàÐÍ: %s" % succType)  | 
|             isFinish = PlayerSuccess.GetSuccIsFinish(curPlayer, succID)  | 
|             hasGot = PlayerSuccess.GetSuccHasGot(curPlayer, succID)  | 
|             passportHasGot = PlayerSuccess.GetSuccPassportAwardHasGot(curPlayer, succID)  | 
|             GameWorld.DebugAnswer(curPlayer, "    id=%s Ìõ¼þ:%s ½ø¶È:%s/%s Íê³É:%s Áì½±:%s %s"   | 
|                                   % (succID, succDataObj.condition, value, succDataObj.needCnt, isFinish, hasGot, passportHasGot))  | 
|               | 
|     return  | 
|   | 
|   |