| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package DataRecordPack  | 
| #  | 
| # @todo: ¶¨Òåʼþ¼Ç¼º¯Êý£¬·¢Ë͸øEventShell.exeµÄ·â°ü.ÓÃÓÚ0SSͳ¼ÆµÈ  | 
| # @author whx  | 
| # @date 2012-03-24 19:00  | 
| # @version 2.3  | 
| #  | 
| # ÏêϸÃèÊö: º¯ÊýÃüÃû¹æÔòÒÔDR_¿ªÍ·. Êý¾Ý¼Ç¼DR = data record  | 
| # ¾¯¸æ£ºÕâÀïÌáµ½µÄEventShell, ²»ÊÇÖ¸ÈÎÎñʼþ£¬Ö»ÊÇͬÃû¶øÒÑ  | 
| #  | 
| # ²¿·Ö×ÖµäkeyµÄÃüÃûͳһ, ±ãÓÚ¹¤¾ß½âÎöʹÓà  | 
| # PlayerID:Íæ¼ÒID  | 
| # PlayerName:Íæ¼ÒÃû×Ö  | 
| # AccID:Õ˺ÅID  | 
| # PlayerLV:Íæ¼ÒµÈ¼¶  | 
| # VIPLv:vipµÈ¼¶  | 
| # PlayerExp:Íæ¼Òµ±Ç°¾Ñé  | 
| # LVRequireExp  | 
| # FightPower:Õ½¶·Á¦  | 
| # Prestige:ÍþÍû  | 
|   | 
| # MoneyType:½ðÇ®ÀàÐÍ  | 
| # MoneyCount:½ðÇ®ÊýÁ¿  | 
| # WarehouseMoneyCount:²Ö¿â½ðÇ®ÊýÁ¿  | 
| # PlayerMoneyCount:Íæ¼ÒÉíÉϽðÇ®ÊýÁ¿  | 
|   | 
| # MissionID:ÈÎÎñID  | 
|   | 
| # PetID:³èÎïID  | 
| # NPCID:npcµÄID  | 
| # NPCName:npcÃû×Ö  | 
|   | 
| # ItemID:ÎïÆ·ID  | 
| # ItemCount:ÎïÆ·ÊýÁ¿  | 
| # IsBind:ÊÇ·ñ°ó¶¨  | 
| # ItemGUID:ÎïÆ·µÄGUID  | 
| # MapID:µØÍ¼ID  | 
|   | 
| # IP:ipµØÖ·  | 
|   | 
| # FamilyLV:¼Ò×åµÈ¼¶  | 
| # FamilyID:¼Ò×åID  | 
| # FamilyName:¼Ò×åÃû×Ö  | 
|   | 
| #TotalPoint:×Ü·Ö,×ܵã...  | 
| # @change: "2012-10-22 10:00" linyonggui Ìí¼Ó×¢ÊÍ,ÈçÓÐеÄÊý¾ÝÁ÷Ïò,ÇëÔÚGameServerÏÂSaveDataConfig.pyÖнøÐÐÌí¼Ó  | 
| # @change: "2012-10-25 14:30" linyonggui Ìí¼Ó×¢ÊÍ  | 
| # @change: "2013-12-26 20:20" Alee ¼õÉÙÁ÷Ïò¼Ç¼  | 
| # @change: "2014-09-18 15:00" xmnathan Ôö¼Ó½»Ò×ËùÁ÷Ïò  | 
| # @change: "2014-09-28 17:30" hxp Ôö¼Ó·¢ËͳäÖµÅÅÐаñÌØ»Ý»î¶¯½±ÀøÓʼþ¼Ç¼Á÷Ïò  | 
| # @change: "2014-12-08 19:00" hxp Ôö¼Ó´´½ÇÁ÷Ïò  | 
| # @change: "2015-02-03 14:30" xmnathan Ìí¼Ó²¹³¥Ê±Ôö¼ÓÁ÷Ïò  | 
| # @change: "2015-06-17 14:30" hxp ÅÅÐаñÁ÷ÏòÔö¼Ó±È½ÏÖµÐÅÏ¢  | 
| # @change: "2015-07-13 14:00" hxp Ôö¼ÓpidÐÅÏ¢  | 
| # @change: "2015-11-05 12:00" hxp Ôö¼Ó»Ö¸´¿ç·þÁ¬Ê¤Á÷Ïò  | 
| #------------------------------------------------------------------------------   | 
| """Version = 2016-09-12 16:00"""  | 
|   | 
| import GameWorld  | 
| import datetime  | 
| import ShareDefine  | 
| import PlayerControl  | 
| import ChConfig  | 
| #===============================================================================  | 
| ##·¢ËÍʼþ¼Ç¼¸øEventShell  | 
| # @param eventTypeStr: Ê¼þÀàÐͱêʶ  | 
| # @param dataDict: Ê¼þ×Öµä  | 
| # @return None  | 
| def SendEventPack(eventTypeStr, dataDict, curPlayer=None):  | 
|     if curPlayer:  | 
|         pid = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_PlayerFromPID)  | 
|         dataDict["pid"] = pid  | 
|         dataDict["fightPower"] = PlayerControl.GetFightPower(curPlayer)  | 
|         dataDict["PlayerLV"] = curPlayer.GetLV()  | 
|         dataDict["IP"] = curPlayer.GetIP()  | 
|           | 
|     dataDict["time"] = str(datetime.datetime.today()).split(".")[0]  | 
|       | 
|     dataStr = str(dataDict)  | 
|     GameWorld.GetGameWorld().EventShell_SendEventEx(eventTypeStr, len(eventTypeStr), dataStr, len(dataStr))  | 
|     return  | 
|   | 
|   | 
| ## ¼Ò×åÕù°ÔÕ½½á¹û  | 
| #  @param attackID: ¹¥»÷·½¼Ò×åID  | 
| #  @param defenceID: ·ÀÊØ·½¼Ò×åID  | 
| #  @param result: ½á¹û  | 
| #  @param battleID: ³¡´Î  | 
| #  @return None  | 
| def DR_FamilyBattleResult(attackID, defenceID, result, battleID):  | 
|   | 
|     dataDict = {'AttackID':attackID, 'DefenceID':defenceID, 'BattleID':battleID, 'Result':result}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("FamilyBattleResult", dataDict)  | 
|     return  | 
|   | 
| ## ´´½Ç  | 
| #  @param accID: Õ˺ÅID  | 
| #  @param playerName: ½ÇÉ«Ãû×Ö  | 
| #  @param job: Ñ¡ÔñÖ°Òµ  | 
| #  @return None  | 
| def DR_CreateRole(accID, playerName, job):  | 
|     dataDict = {'AccID':accID, "PlayerName":playerName, 'Job':job}  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("CreateRole", dataDict)  | 
|     return  | 
|   | 
| ## ´´½¨°ï»á  | 
| #  @param accID: Õ˺ÅID  | 
| #  @param playerID: ½ÇÉ«ID  | 
| #  @param playerName: ½ÇÉ«Ãû×Ö  | 
| #  @param familyName: ¼Ò×åÃû  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @return None  | 
| def DR_CreateFamily(accID, playerID, playerNaem, familyName, familyID, creatFamilyTimes):  | 
|   | 
|     dataDict = {'AccID':accID, 'PlayerID':playerID, "PlayerName":playerNaem, 'FamilyName':familyName,   | 
|                 'FamilyID':familyID, 'creatFamilyTimes':creatFamilyTimes}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("CreateFamily", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## Íæ¼Ò×ÔÐнâÉ¢°ï»á  | 
| #  @param accID: Õ˺ÅID  | 
| #  @param dismissPlayerID: ½ÇÉ«ID  | 
| #  @param playerName: ½ÇÉ«Ãû×Ö  | 
| #  @param familyName: ¼Ò×åÃû  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyMoney: ¼Ò×å½ðÇ®  | 
| #  @param familyLv: ¼Ò×åµÈ¼¶  | 
| #  @param bossFood: ¼Ò×åÊÞÁ¸  | 
| #  @param point: »ý·Ö  | 
| #  @return None  | 
| def DR_DismissFamilyByPlayer(accID, dismissPlayerID, playerName, familyName, familyID,   | 
|                              familyMoney, familyLv, bossFood, point):  | 
|       | 
|       | 
|     dataDict = {'AccID':accID, 'PlayerID':dismissPlayerID, 'PlayerName':playerName, 'FamilyName':familyName,   | 
|                 'FamilyID':familyID, 'FamilyMoney':familyMoney,   | 
|                 'FamilyLv':familyLv, 'BossFood':bossFood, 'Point':point}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("DismissFamilyByPlayer", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## ÏµÍ³½âÉ¢°ï»á  | 
| #  @param familyName: ¼Ò×åÃû  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyMoney: ¼Ò×å½ðÇ®  | 
| #  @param familyLv: ¼Ò×åµÈ¼¶  | 
| #  @param bossFood: ¼Ò×åÊÞÁ¸  | 
| #  @param point: »ý·Ö  | 
| #  @return None  | 
| def DR_DismissFamilyBySystem(familyName, familyID, familyMoney,   | 
|                              familyLv, bossFood, point):  | 
|       | 
|     dataDict = {'FamilyName':familyName, 'FamilyID':familyID, 'FamilyMoney':familyMoney,   | 
|                 'FamilyLv':familyLv, 'BossFood':bossFood, 'Point':point}  | 
|       | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("DismissFamilyBySystem", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## °ï»áÉý¼¶  | 
| #  @param familyName: ¼Ò×åÃû  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param newUpLv: µÈ¼¶  | 
| #  @return None  | 
| def DR_FamilyLvUp(familyName, familyID, newUpLv):  | 
|       | 
|     dataDict = {'FamilyName':familyName, 'FamilyID':familyID, 'NewUpLv':newUpLv}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("FamilyLvUp", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## °ï»áÔö¼Ó¹±Ï׵ļÒ×åÐÅÏ¢  | 
| #  @param familyName: ¼Ò×åÃû  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyLv: ¼Ò×åµÈ¼¶  | 
| #  @param familyMoney: ¼Ò×å½ðÇ®  | 
| #  @param familyAddMoney: ¼Ò×åÔö¼Ó½ðÇ®  | 
| #  @param familyHornor: ¼Ò×åÈÙÓþ  | 
| #  @param familyAddHornor: ¼Ò×åÔö¼ÓÈÙÓþ  | 
| #  @param leaderValue: Í³ÁìÖµ  | 
| #  @param leaderAddValue: Ôö¼ÓͳÁìÖµ  | 
| #  @return None  | 
| def DR_AddFamilyDetail(familyName, familyID, familyLv, familyMoney, familyAddMoney, familyActiveValue, addFamilyActiveValue):  | 
|   | 
|     dataDict = {'FamilyName':familyName, 'FamilyID':familyID, 'FamilyLv':familyLv, 'FamilyMoney':familyMoney,   | 
|                 'FamilyAddMoney':familyAddMoney,  'familyActiveValue':familyActiveValue,   | 
|                 'addFamilyActiveValue':addFamilyActiveValue}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("AddFamilyDetail", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## ·þÎñÆ÷ÔÚÏßÈËÊý  | 
| #  @param playerCount: ÈËÊý  | 
| #  @return None  | 
| def DR_OnLinePlayerCount(playerCount, platformOLDict, tjgOnlineCnt):  | 
|   | 
|     dataDict = {'OnLinePlayerCount':playerCount, "platformOLDict":platformOLDict, "tjgOnlineCnt":tjgOnlineCnt}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("OnLinePlayerCount", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## # µØÍ¼·þÎñÆ÷ÔÚÏßÈËÊý  | 
| #  @param ip: µØÍ¼ID  | 
| #  @param gameMapIndex: µØÍ¼Ë÷Òý  | 
| #  @param playerCount: ÈËÊý  | 
| #  @return None  | 
| def DR_GameMapOnLinePlayerCnt(ip, gameMapIndex, playerCount):  | 
|       | 
|     dataDict = {'IP':ip, 'GameMapIndex':gameMapIndex, 'OnLinePlayerCount':playerCount}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("GameMapOnLinePlayerCnt", dataDict)  | 
|     return  | 
|   | 
| ## Ã¿Ìì¼Ç¼ÅÅÐаñÊý¾Ý  | 
| #  @param billboardType: ÅÅÐаñÀàÐÍ  | 
| #  @return: None  | 
| def DR_BillboardDataByDay(billboardType):  | 
|     DR_BillboardData(billboardType, "BillboardDataByDay")  | 
|     return  | 
|   | 
| ## ¼Ç¼ÅÅÐаñÊý¾Ý  | 
| #  @param billboardType: ÅÅÐаñÀàÐÍ  | 
| #  @return: None  | 
| def DR_BillboardData(billboardType, eventName, addDataDict={}):  | 
|     billBoard = GameWorld.GetBillboard().FindBillboard(billboardType)  | 
|     if not billBoard:  | 
|         #ÕÒ²»µ½ÅÅÐаñ  | 
|         return  | 
|       | 
|     for index in range(0, billBoard.GetCount()):  | 
|         billBoardData = billBoard.At(index)  | 
|         if not billBoardData:  | 
|             continue  | 
|           | 
|         objID = billBoardData.GetID()  | 
|         objID2 = billBoardData.GetID2()  | 
|         name1 = billBoardData.GetName1()  | 
|         name2 = billBoardData.GetName2()  | 
|         type2 = billBoardData.GetType2()  | 
|         value1 = billBoardData.GetValue1()  | 
|         value2 = billBoardData.GetValue2()  | 
|         cmpValue = billBoardData.GetCmpValue()  | 
|         cmpValue2 = billBoardData.GetCmpValue2()  | 
|         cmpValue3 = billBoardData.GetCmpValue3()  | 
|           | 
|         dataDict = {"BillboardType":billboardType,  | 
|                     "Place":index,  "ObjID":objID, "ObjID2":objID2, "Name1":name1,   | 
|                     "Name2":name2,  "Type2":type2, "Value1":value1, "Value2":value2,  | 
|                     "CmpValue":cmpValue, "CmpValue2":cmpValue2, "CmpValue3":cmpValue3,  | 
|                     }  | 
|           | 
|         dataDict.update(addDataDict)  | 
|           | 
|         #·¢ËÍ·â°ü  | 
|         SendEventPack("%s_%s" % (eventName, billboardType), dataDict)  | 
|     return  | 
|   | 
| ## GMÖ´ÐÐÃüÁî²Ù×÷  | 
| #  @param playerID: Íæ¼ÒID  | 
| #  @param playerName:Íæ¼ÒÃû×Ö  | 
| #  @param accID: Íæ¼ÒÕ˺Š | 
| #  @param gmToolCmd:gmÃüÁî  | 
| #  @param msg:¸½¼ÓÃüÁî  | 
| #  @return: None  | 
| def DR_ToolGMOperate(playerID, playerName, accID, gmToolCmd, msg=''):  | 
|     dataDict = {"PlayerID":playerID, "PlayerName":playerName, 'AccID':accID,   | 
|                 'GMOperate':gmToolCmd, 'Msg':msg}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("GMToolOperate", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## Íæ¼Ò¼ÓÈë¼Ò×å  | 
| #  @param curPlayer: Íæ¼ÒʵÀý  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyName: ¼Ò×åÃû×Ö   | 
| #  @param familyCnt: ¼Ò×åÈËÊý  | 
| #  @return:    | 
| def DR_PlayerJoinFamily(curPlayer, familyID, familyName, familyCnt):  | 
|     dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'AccID':curPlayer.GetAccID(),   | 
|                 "PlayerName":curPlayer.GetName(),   | 
|                 "FamilyID":familyID, "FamilyName":familyName, "Count":familyCnt}  | 
|   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("PlayerJoinFamily", dataDict, curPlayer)  | 
|     return  | 
|   | 
|   | 
| ## Íæ¼ÒÍ˳ö¼Ò×å  | 
| #  @param curPlayer: ÌßÈËÕßʵÀý  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyName: ¼Ò×åÃû×Ö   | 
| #  @param familyCnt: ¼Ò×åÈËÊý  | 
| #  @param familyLV: ÌßÈËÕßְλ  | 
| #  @param tagPlayerID: ±»ÌßÕßID  | 
| #  @param tagPlayerName: ±»ÌßÕßÃû×Ö  | 
| #  @param tagFamilyLV: ±»ÌßÕßְλ  | 
| #  @return:    | 
| def DR_PlayerLeaveFamily(curPlayer, familyID, familyName, familyCnt, familyLV,   | 
|                          tagPlayerID, tagPlayerName, tagFamilyLV, leaveFamilyTime=0):  | 
|     dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'AccID':curPlayer.GetAccID(),   | 
|                 "PlayerName":curPlayer.GetName(),   | 
|                 "FamilyID":familyID, "FamilyName":familyName, "Count":familyCnt, "FamilyJob":familyLV,   | 
|                 "tagPlayerID":tagPlayerID, "tagPlayerName":tagPlayerName, "tagFamilyJob":tagFamilyLV}  | 
|     if leaveFamilyTime:  | 
|         dataDict['leaveFamilyTime'] = leaveFamilyTime  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("PlayerLeaveFamily", dataDict, curPlayer)  | 
|     return  | 
|   | 
|   | 
| ## Íæ¼Ò¼Ò×åְλ±ä¸ü  | 
| #  @param curPlayer: Íæ¼ÒʵÀý  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyName: ¼Ò×åÃû×Ö   | 
| #  @param tagPlayerID: Ö°Î»±ä¸üÕßID  | 
| #  @param tagPlayerName: Ö°Î»±ä¸üÕßÃû×Ö  | 
| #  @param tagFamilyLV: ±ä¸üºóְλ  | 
| #  @return:   | 
| def DR_PlayerChangeFamilyJob(curPlayer, familyID, familyName, tagPlayerID, tagPlayerName, tagFamilyLV, isGMOP=False):  | 
|     dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'AccID':curPlayer.GetAccID(),   | 
|                 "PlayerName":curPlayer.GetName(), "isGMOP":isGMOP,  | 
|                 "FamilyID":familyID, "FamilyName":familyName,   | 
|                 "tagPlayerID":tagPlayerID, "tagPlayerName":tagPlayerName, "FamilyJob":tagFamilyLV}  | 
|       | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("PlayerChangeFamilyJob", dataDict, curPlayer)  | 
|     return  | 
|   | 
|   | 
| ## OnWeekʱ¼Ç¼±¾ÖܼÒ×å»îÔ¾¶È  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyName: ¼Ò×åÃû×Ö  | 
| #  @param value: ¼Ò×åID  | 
| #  @return:   | 
| def DR_FamilyActiveValueByOnWeek(familyID, familyName, value):  | 
|     dataDict = {"FamilyID":familyID, "FamilyName":familyName, "ActiveValue":value}  | 
|       | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("FamilyActiveValueByOnWeek", dataDict)  | 
|     return  | 
|   | 
| def DR_FamilyStore(curPlayer, familyID, index, eventName, drDict={}):  | 
|     ## Õ½Ã˲ֿâ²Ù×÷¼Ç¼  | 
|     dataDict = {"FamilyID":familyID, "Index":index, "PlayerID":curPlayer.GetPlayerID(),   | 
|                 "AccID":curPlayer.GetAccID(), "PlayerName":curPlayer.GetName(), "EventName":eventName}  | 
|       | 
|     dataDict.update(drDict)  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("FamilyStore", dataDict)  | 
|     return  | 
|   | 
| ## ×òÌì(Íæ¼ÒµÇÈëÊýÁ¿£¬³äÖµÊý)ͳ¼Æ¼Ç¼Êý¾Ý¸Ä±ä  | 
| #  @param YdayLoginCnt: ¼Ò×åID  | 
| #  @param YdayNewCoinCnt: ¼Ò×åÃû×Ö  | 
| #  @param value: ¼Ò×åID  | 
| #  @return:   | 
| def DR_ResetGameDataRecord(YdayLoginCnt, YdayNewCoinCnt):  | 
|     dataDict = {"YdayLoginCnt":YdayLoginCnt, "YdayNewCoinCnt":YdayNewCoinCnt}  | 
|       | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("ResetGameDataRecord", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## ¸´ÖƵÄÅÅÐаñ¼Ç¼  | 
| #  @param Place: Ãû´Î  | 
| #  @param playerID: Íæ¼ÒID  | 
| #  @param playerName: Íæ¼ÒÃû×Ö  | 
| #  @param playerLV: Íæ¼ÒµÈ¼¶  | 
| #  @param playerJob: Íæ¼ÒÖ°Òµ  | 
| #  @param totalPoint: »ý·Ö  | 
| #  @return: None  | 
| def DR_BillboardCopy(billboardType):  | 
|     DR_BillboardData(billboardType, "BillboardCopy")  | 
|     return  | 
|   | 
|   | 
| ## µ¯ÛÀÍæ¼Ò¼Ò×åְλ±ä¸ü  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyName: ¼Ò×åÃû×Ö   | 
| #  @param tagPlayerID: Ö°Î»±ä¸üÕßID  | 
| #  @param tagPlayerName: Ö°Î»±ä¸üÕßÃû×Ö  | 
| #  @param tagFamilyLV: ±ä¸üºóְλ  | 
| #  @return:   | 
| def DR_ImpeachChangeFamilyJob(familyID, familyName, tagPlayerID, tagPlayerName, tagFamilyLV):  | 
|   | 
|     dataDict = {"FamilyID":familyID, "FamilyName":familyName,   | 
|                 "tagPlayerID":tagPlayerID, "tagPlayerName":tagPlayerName, "FamilyJob":tagFamilyLV}  | 
|       | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("ImpeachChangeFamilyJob", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## µ¯ÛÀÍæ¼ÒÌß³ö°ï»á  | 
| #  @param familyID: ¼Ò×åID  | 
| #  @param familyName: ¼Ò×åÃû×Ö   | 
| #  @param tagPlayerID: Ö°Î»±ä¸üÕßID  | 
| #  @param tagPlayerName: Ö°Î»±ä¸üÕßÃû×Ö  | 
| #  @return:   | 
| def DR_ImpeachLeaveFamily(familyID, familyName, tagPlayerID, tagPlayerName):  | 
|   | 
|     dataDict = {"FamilyID":familyID, "FamilyName":familyName,   | 
|                 "tagPlayerID":tagPlayerID, "tagPlayerName":tagPlayerName}  | 
|       | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("ImpeachLeaveFamily", dataDict)  | 
|     return  | 
|   | 
|   | 
| ## Ê×ÖÜÊÇ·ñÓмÒ×åÕù°ÔÈü¶ÔÕ½  | 
| #  @param joinBattleFamilyCnt: ¿É²ÎÕ½µÄ°ï»á  | 
| #  @param hasBattle: ÊÇ·ñ¿ªÆôÕ½¶·   | 
| def DR_FirstWeekHasFamilyBattle(joinBattleFamilyCnt, hasBattle):  | 
|      | 
|     dataDict = {"JoinBattleFamilyCnt":joinBattleFamilyCnt, "HasBattle":hasBattle}  | 
|       | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("FirstWeekHasFamilyBattle", dataDict)  | 
|     return  | 
|   | 
| ## ½ÇÉ«¸ÄÃû  | 
| #  @param curPlayer: Íæ¼ÒʵÀý  | 
| #  @param oldName: ¾ÉÃû×Ö  | 
| #  @return: None  | 
| def DR_UpdatePlayerName(curPlayer, oldName):  | 
|                   | 
|     dataDict = {'AccID':curPlayer.GetAccID(), 'PlayerID':curPlayer.GetPlayerID(),   | 
|                 "PlayerName":curPlayer.GetName(),"OldName":oldName}   | 
|       | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("UpdatePlayerName", dataDict, curPlayer)  | 
|     return  | 
|   | 
| #-------------------------------------  | 
| #¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý½»Ò×Ëù¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý¡ý  | 
| ## Ìí¼Ó½»Ò×ËùÎïÆ·Êý¾Ýµ½Á÷Ïò¼Ç¼ÓÃ×Öµä  | 
| #  @param dataDict, BourseItem  | 
| #  @return: None  | 
| def AddBourseItemToDataDict(dataDict, BourseItem):  | 
|     curRoleItemData = BourseItem.GetBourseRoleItem()  | 
|     dataDict['GUID'] = BourseItem.GetItemGUID()  | 
|     dataDict['ItemID'] = curRoleItemData.ItemID  | 
|     dataDict['ItemCount'] = curRoleItemData.Count  | 
|     dataDict['UserData'] = curRoleItemData.UserData  | 
|     dataDict['EquipGS'] = BourseItem.GetEquipGS()  | 
|     return  | 
|      | 
|       | 
| ## Ìí¼Ó½»Ò×ËùÎïÆ·Á÷Ïò  | 
| #  @param sellPlayerID, bourseItem  | 
| #  @return: None      | 
| def DR_BourseAddItem(sellPlayerID, curBourseItem):  | 
|       | 
|     dataDict = {'SellPlayerID':sellPlayerID, 'PriceType':curBourseItem.GetPriceType(), 'PriceCount':curBourseItem.GetPriceCount()}   | 
|       | 
|     AddBourseItemToDataDict(dataDict, curBourseItem)  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("BourseAddItem", dataDict)  | 
|     return  | 
|   | 
| ## Ï¼ܽ»Ò×ËùÎïÆ·Á÷Ïò  | 
| #  @param sellPlayerID, bourseItem  | 
| #  @return: None    | 
| def DR_BourseCancelItem(sellPlayerID, curBourseItem):  | 
|       | 
|     dataDict = {'SellPlayerID':sellPlayerID}  | 
|   | 
|     AddBourseItemToDataDict(dataDict, curBourseItem)  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("BourseCancelItem", dataDict)  | 
|     return  | 
|   | 
| ## ¹ºÂò½»Ò×ËùÎïÆ·Á÷Ïò  | 
| #  @param curPlayerID, bourseItem  | 
| #  @return: None   | 
| def DR_BourseBuyItem(curPlayerID, sellPlayerID, curBourseItem):  | 
|       | 
|     dataDict = {'BuyPlayerID':curPlayerID, 'SellPlayerID':sellPlayerID,   | 
|                 'PriceType':curBourseItem.GetPriceType(), 'PriceCount':curBourseItem.GetPriceCount() }   | 
|       | 
|     AddBourseItemToDataDict(dataDict, curBourseItem)  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("BourseBuyItem", dataDict)  | 
|     return  | 
|   | 
| ## »ñÈ¡½»Ò×ËùÊÕÒæÁ÷Ïò  | 
| #  @param sellPlayerID, bourseItem  | 
| #  @return: None   | 
| def DR_BourseGiveGains(sellPlayerID, dataDict, giveMoney, taxMoney):  | 
|     dataDict['SellPlayerID'] = sellPlayerID  | 
|     dataDict['giveMoney'] = giveMoney  | 
|     dataDict['taxMoney'] = taxMoney  | 
|     #dataDict = {'SellPlayerID':sellPlayerID, 'PriceType':curBourseItem.GetPriceType(), 'PriceCount':curBourseItem.GetPriceCount(), 'taxMoney':taxMoney}   | 
|       | 
|     #AddBourseItemToDataDict(dataDict, curBourseItem)  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("BourseGiveGains", dataDict)  | 
|     return  | 
|   | 
| ##ɾ³ýʱ¼ä¾ÃÔ¶µÄϼÜÎïÆ·  | 
| #  @param sellPlayerID, GUID, curBourseItem  | 
| #  @return None  | 
| def DR_BourseDeleteOverTimeLongItem(sellPlayerID, GUID, curBourseItem):  | 
|       | 
|     dataDict = {'SellPlayerID':sellPlayerID}   | 
|       | 
|     AddBourseItemToDataDict(dataDict, curBourseItem)  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("BourseDeleteOverTimeLongItem", dataDict)  | 
|     return  | 
| #¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü½»Ò×Ëù¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü¡ü  | 
| #-------------------------------------  | 
|   | 
| ## ·¢·Å²¹³¥Á÷Ïò  | 
| #  @param curPlayerID, GUID  | 
| #  @return: None   | 
| def DR_GiveCompensationSuccess(curPlayerID, GUID):  | 
|     dataDict = {'PlayerID':curPlayerID, 'GUID':GUID}   | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("CompensationGiveSuccess", dataDict)  | 
|     return  | 
|   | 
| ## Ìí¼Ó¸öÈ˲¹³¥Á÷Ïò  | 
| #  @param curPlayerID, GUID, ItemDictList  | 
| #  @return: None   | 
| def DR_AddPersonalCompensation(curPlayerIDList, GUID, ItemDictList, addDict={}):  | 
|     dataDict = {'PlayerIDList':curPlayerIDList, 'GUID':GUID, 'ItemList':ItemDictList}   | 
|     dataDict.update(addDict)  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("CompensationPersonal", dataDict)  | 
|     return   | 
|   | 
| ## É¾³ý¸öÈ˲¹³¥Á÷Ïò  | 
| #  @param curPlayerID, GUID, ItemDictList  | 
| #  @return: None   | 
| def DR_DelPersonalCompensation(playerID, GUID, eventName):  | 
|     dataDict = {'PlayerID':playerID, 'GUID':GUID, 'eventName':eventName}  | 
|     #·¢ËÍ·â°ü  | 
|     SendEventPack("CompensationPersonalDel", dataDict)  | 
|     return   | 
|   | 
| ## Ìí¼ÓÈ«·þ²¹³¥Á÷Ïò  | 
| #  @param GUID, ItemDictList  | 
| #  @return: None   | 
| def DR_EntireCompensation(GUID, eventName, addDict={}):  | 
|     dataDict = {'GUID':GUID, "eventName":eventName}  | 
|     dataDict.update(addDict)  | 
|     SendEventPack("CompensationEntire", dataDict)  | 
|     return  | 
|   |