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