| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package PlayerRewardOnLogin  | 
| #  | 
| # @todo:ÉÏÏ߸ù¾ÝͨÓý±Àø¼Ç¼¸ø½±Àø  | 
| # @author hxp  | 
| # @date 2015-9-21  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: ÉÏÏ߸ù¾ÝͨÓý±Àø¼Ç¼¸ø½±Àø  | 
| #  | 
| #---------------------------------------------------------------------  | 
| """Version = 2015-9-21 20:00"""  | 
| #---------------------------------------------------------------------  | 
| #import DataRecordPack  | 
| #import ShareDefine  | 
| #import GameWorld  | 
| #import ChConfig  | 
| #  | 
| #import time  | 
|   | 
| #Def_RecType = ShareDefine.Def_UniversalGameRecType_RewardOnLogin  | 
|   | 
|   | 
| ## ÌíÍæ¼ÒµÇ½ʱ¿ÉÁìÈ¡µÄ½±Àø  | 
| #  @param playerID Íæ¼ÒID  | 
| #  @param accID Íæ¼ÒaccID  | 
| #  @param actionType »î¶¯ÀàÐÍ, ¸ù¾Ý»î¶¯ÀàÐÍ¿É×öһЩ²»Í¬µÄ´¦Àí£¬ÈçÅäÖò»Í¬µÄÌáʾµÈ  | 
| #  @param rewardType ½±ÀøÀàÐÍ, Èç×êʯ¡¢½ð±ÒµÈ  | 
| #  @param value ½±ÀøÊýÖµ  | 
| #  @return None  | 
| def AddPlayerRewardOnLogin(playerID, accID, actionType, rewardType, value):  | 
|       | 
| #    #ËùÓÐÍæ¼ÒÐÅϢͨÓüǼ¶ÔÏó¹ÜÀíÆ÷  | 
| #    universalRecMgr = GameWorld.GetUniversalRecMgr()    | 
| #      | 
| #    #ijһÀàÐͼǼµÄËùÓÐÊý¾Ý  | 
| #    recTypeListData = universalRecMgr.GetTypeList(Def_RecType)  | 
| #    recCount = recTypeListData.Count()  | 
| #    if recCount >= ChConfig.UniversalGameRecTypeSaveCnt.get(Def_RecType, 0):  | 
| #        recTypeListData.SortByTime()  # °´Ê±¼äÉýÐò  | 
| #        recTypeListData.Delete(0)  # É¾³ýµÚÒ»¸ö  | 
| #          | 
| #    curTimeStr = GameWorld.GetCurrentDataTimeStr()  | 
| #    curTimeTuple = time.strptime(curTimeStr, ChConfig.TYPE_Time_Format)  | 
| #    curTimeNum = int(time.mktime(curTimeTuple))  | 
| #          | 
| #    #Ìí¼ÓÒ»¸ö¼Ç¼¶ÔÏó  | 
| #    recObj = recTypeListData.AddRec()  | 
| #      | 
| #    #---ÉèÖüǼ¶ÔÏóÊý¾Ý---  | 
| #    recObj.SetTime(curTimeNum)  | 
| #    recObj.SetStrValue1(accID)  | 
| #    recObj.SetValue1(playerID)  | 
| #    recObj.SetValue2(actionType)  | 
| #    recObj.SetValue3(rewardType)  | 
| #    recObj.SetValue4(value)  | 
| #      | 
| #    #Á÷Ïò  | 
| #    DataRecordPack.DR_PlayerRewardOnLogin(playerID, accID, actionType, rewardType, value, "Add")  | 
|     return  | 
|   | 
|   | 
| ## Íæ¼ÒµÇ½ʱ¿ÉÁìÈ¡µÄ½±Àø  | 
| #  @param curPlayer   | 
| #  @return None  | 
| def MapServer_RewardOnLogin(curPlayer):  | 
|       | 
| #    player_ID = curPlayer.GetPlayerID()  | 
| #    acc_ID = curPlayer.GetAccID()  | 
| #    universalRecMgr = GameWorld.GetUniversalRecMgr()   | 
| #    recTypeListData = universalRecMgr.GetTypeList(Def_RecType)  | 
| #    recCount = recTypeListData.Count()  | 
| #      | 
| #    GameWorld.Log("MapServer_RewardOnLogin recCount=%s" % recCount)  | 
| #    rewarDict = {} #{actionType:{rewardType:value,...}, ...}  | 
| #    #´Ó´óµ½Ð¡É¾³ý  | 
| #    index = recCount - 1  | 
| #    for i in range(recCount):  | 
| #        delIndex = index - i  | 
| #        universalRecData = recTypeListData.At(delIndex)  | 
| #        accID = universalRecData.GetStrValue1()  | 
| #        playerID = universalRecData.GetValue1()  | 
| #        actionType = universalRecData.GetValue2()  | 
| #        rewardType = universalRecData.GetValue3()  | 
| #        value = universalRecData.GetValue4()  | 
| #          | 
| #        # Á½Õß¶¼ÐèÆ¥Å䣨ºÏ·þºóplayID»á±ä¸ü£¬µ«ÊÇÖ÷·þ£©  | 
| #        if playerID != player_ID or (accID != "" and accID != acc_ID):  | 
| #            GameWorld.DebugLog("·Ç±¾·þÍæ¼Ò½±Àø¼Ç¼£ºrecPlayerID=%s,recAccID=%s,playerID=%s,accID=%s"   | 
| #                               % (playerID, accID, player_ID, acc_ID))  | 
| #            continue  | 
| #          | 
| #        rewardTypeDict = rewarDict.get(actionType, {})  | 
| #        rewardTypeDict[rewardType] = rewardTypeDict.get(rewardType, 0) + value  | 
| #        rewarDict[actionType] = rewardTypeDict  | 
| #          | 
| #        #ɾ³ý¸ÃÌõ½±Àø  | 
| #        recTypeListData.Delete(delIndex)  | 
| #        DataRecordPack.DR_PlayerRewardOnLogin(playerID, accID, actionType, rewardType, value, "Del")  | 
| #        GameWorld.Log("    recTypeListData Delete %s" % delIndex)  | 
| #      | 
| #    if not rewarDict:  | 
| #        GameWorld.Log("ûÓÐÀëÏߵǽ½±ÀøÁìÈ¡", player_ID)  | 
| #        return  | 
| #      | 
| #    sendMsg = str(rewarDict)  | 
| #    #֪ͨMapServer¸ø½±Àø  | 
| #    curPlayer.MapServer_QueryPlayerResult(0, 0, 'RewardOnLogin', sendMsg, len(sendMsg))  | 
| #    GameWorld.Log("µÇ½¸øÀëÏ߻½±Àø£ºsendMsg=%s" % sendMsg, curPlayer.GetPlayerID())  | 
|     return  | 
|   | 
|   | 
|   | 
|   |