#!/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  
 | 
  
 | 
  
 |