#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package DataRecordPack  
 | 
#  
 | 
# @todo: ¶¨Òåʼþ¼Ç¼º¯Êý£¬·¢Ë͸øEventShell.exeµÄ·â°ü.ÓÃÓÚ0SSͳ¼ÆµÈ  
 | 
# @author Alee  
 | 
# @date 2012-03-03 20:30  
 | 
# @version 4.2  
 | 
#  
 | 
# ÏêϸÃèÊö: º¯ÊýÃüÃû¹æÔòÒÔDR_¿ªÍ·. Êý¾Ý¼Ç¼DR = data record  
 | 
# ¾¯¸æ£ºÕâÀïÌáµ½µÄEventShell, ²»ÊÇÖ¸ÈÎÎñʼþ£¬Ö»ÊÇͬÃû¶øÒÑ  
 | 
#  
 | 
# ²¿·Ö×ÖµäkeyµÄÃüÃûͳһ, ±ãÓÚ¹¤¾ß½âÎöʹÓà  
 | 
# PlayerID:Íæ¼ÒID  
 | 
# PlayerName:Íæ¼ÒÐÕÃû  
 | 
# AccID:Õ˺ÅID  
 | 
# PlayerLV:Íæ¼ÒµÈ¼¶  
 | 
# VIPLv:vipµÈ¼¶  
 | 
# PlayerExp:Íæ¼Òµ±Ç°¾Ñé  
 | 
# LVRequireExp  
 | 
  
 | 
# MoneyType:½ðÇ®ÀàÐÍ  
 | 
# MoneyCount:½ðÇ®ÊýÁ¿  
 | 
# TotalMoney:×ܽðÇ®ÊýÁ¿  
 | 
# WarehouseMoneyCount:²Ö¿â½ðÇ®ÊýÁ¿  
 | 
# PlayerMoneyCount:Íæ¼ÒÉíÉϽðÇ®ÊýÁ¿  
 | 
# MemberFamilyLV:Íæ¼ÒÔÚ¼Ò×åÖеÄְλ  
 | 
  
 | 
# MissionID:ÈÎÎñID  
 | 
  
 | 
# PetID:³èÎïID  
 | 
# NPCID:npcµÄID  
 | 
# NPCName:npcÃû×Ö  
 | 
  
 | 
# PackType:±³°üÀàÐÍ  
 | 
# SrcPackType: Æðʼ±³°üÀàÐÍ  
 | 
# DescPackType: Ä¿±ê±³°üÀàÐÍ  
 | 
# ItemKind:ÎïÆ·ÖÖÀà  
 | 
# ItemID:ÎïÆ·ID  
 | 
# ItemCount:ÎïÆ·ÊýÁ¿  
 | 
# IsBind:ÊÇ·ñ°ó¶¨  
 | 
# ItemGUID:ÎïÆ·µÄGUID  
 | 
# IsPutIn:ÊÇ·ñ¸øÓè³É¹¦  
 | 
# MapID:µØÍ¼ID  
 | 
  
 | 
# IP:ipµØÖ·  
 | 
  
 | 
# FamilyID:¼Ò×åID  
 | 
# FamilyLV:¼Ò×åµÈ¼¶  
 | 
# FamilyName:¼Ò×åÃû×Ö  
 | 
  
 | 
#EquipUpStarLV:×°±¸Ç¿»¯  
 | 
#EquipMagic:×°±¸ÁéÎÆ  
 | 
#SearchPrecious:Ѱ±¦¹ºÂò  
 | 
#RefreshFB:¸±±¾Ë¢Ð  
 | 
#EfficientBattle:¸ßЧս¶·£¬¶à±¶¾Ñé  
 | 
#PetRewashTalent:³èÎïÏ´×ÊÖÊ  
 | 
#PetRewashSkill:³èÎïÏ´¼¼ÄÜ  
 | 
  
 | 
#OpenIndex: ¿ªÍ¨¶ÓÁÐË÷Òý  
 | 
#ClearIndex: Çå³ý¶ÓÁÐcdʱ¼ä  
 | 
#CDTime:cdʱ¼ä  
 | 
  
 | 
#SkilliD: ¼¼ÄÜID  
 | 
  
 | 
#StarLV:ÐǼ¶  
 | 
#------------------------------------------------------------------------------------------------------------   
 | 
#  
 | 
# @change: "2012-03-24 22:20" Alee Ð޸ĵ¼Èë³ö´í£¬º¯Êý´ÓPlayerControlתGameWorld  
 | 
# @change: "2012-08-21 16:30" Alee ³äÖµ¼Ç¼Ìí¼Ó²éѯ¶©µ¥ºÅ±ãÓÚ¶ÔÕË  
 | 
# @change: "2012-08-22 11:30" jiang Ö÷ÌâÖܻ½±ÀøÁìÈ¡¼Ç¼Ôö¼Ó»î¶¯»ý·Ö¼Ç¼  
 | 
# @change: "2012-08-24 13:59" whx »¶ÀÖËͻÐ޸ļǼË÷Òý  
 | 
# @change: "2012-09-17 10:30" whx Ôö¼Ó¸£Àû»î¶¯½±ÀøÁìÈ¡¼Ç¼  
 | 
# @change: "2012-09-21 17:00" jiang Íæ¼ÒËÀÍöÁ÷Ïò¼Ç¼  
 | 
# @change: "2012-10-22 10:00" linyonggui Ìí¼Ó×¢ÊÍ,ÈçÓÐеÄÊý¾ÝÁ÷Ïò,ÇëÔÚGameServerÏÂSaveDataConfig.pyÖнøÐÐÌí¼Ó  
 | 
# @change: "2012-09-25 14:30" linyonggui Ìí¼Ó×¢ÊÍ  
 | 
# @change: "2012-12-07 18:00" hyx Ìí¼ÓÉÏÏÂÏßÁ÷Ïò¼Ç¼  
 | 
# @change: "2013-01-24 14:40" Alee pythonµÄboolֵתÊý×Ö·½±ãÈë¿â  
 | 
# @change: "2013-10-16 17:00" hxp Ìí¼Ó³äÖµºÀÀñÁì½±Á÷Ïò¼Ç¼  
 | 
# @change: "2013-11-05 19:00" Alee ×¢ÊͲ¿·Ö¼Ç¼  
 | 
# @change: "2013-12-26 20:20" Alee ¼õÉÙÁ÷Ïò¼Ç¼  
 | 
# @change: "2013-12-26 20:20" Alee ¼õÉÙÁ÷Ïò¼Ç¼  
 | 
# @change: "2014-06-10 21:00" hxp Ìí¼ÓÌØÊâ²É¼¯ÎïÁ÷Ïò¼Ç¼£¬¶àÑ¡ÎïÆ·Àñ°üÁ÷Ïò  
 | 
# @change: "2014-06-21 15:20" hxp Ìí¼ÓÍæ¼ÒÁìÈ¡³äÖµÌØ»Ý»î¶¯½±Àø  
 | 
# @change: "2014-10-11 15:00" hxp Ôö¼ÓÁìȡͶ×ʻر¨Ê¼þ¼Ç¼  
 | 
# @change: "2014-12-01 19:10" ljd Ôö¼ÓÁìÈ¡ºÏ·þ»î¶¯µÇ½½±ÀøÊ¼þ¼Ç¼  
 | 
# @change: "2014-12-21 23:00" hxp Ôö¼Ó¹¦Äܽ±ÀøÎïÆ·  
 | 
# @change: "2014-12-23 00:30" hxp ³äֵǰ/Ïû·ÑʱÁ÷ÏòÐÅÏ¢À©Õ¹(Ôö¼Ó¸÷´ó¹¦ÄÜÐÅÏ¢)  
 | 
# @change: "2015-01-27 22:30" hxp Ôö¼ÓתÉúµÈ¼¶±ä¸üÁ÷Ïò  
 | 
# @change: "2015-02-05 15:00" hxp ³äÖµËÍÀñÁ÷ÏòÀ©Õ¹ÐÅÏ¢×Öµä  
 | 
# @change: "2015-02-27 21:00" hxp Ôö¼Ó´óʦµÈ¼¶Éý¼¶Á÷Ïò; ÖØÐ¿ªÆô¼¼ÄÜѧϰÁ÷Ïò  
 | 
# @change: "2015-03-30 14:00" hxp Ôö¼Ó»÷ɱNPCÁ÷Ïò  
 | 
# @change: "2015-04-03 12:00" hxp Ñ°±¦ÈÕÖ¾Á÷Ïò  
 | 
# @change: "2015-04-28 16:00" hxp ¿ªÆôBuyItemÁ÷Ïò£»Ñ°±¦Á÷ÏòÔö¼ÓÀ©Õ¹Êý¾Ý; ¸øÎïÆ·Á÷ÏòÐÞ¸Ä  
 | 
# @change: "2015-05-20 21:00" hxp Ôö¼Ó×°±¸³Ô¾ÑéÁ÷Ïò  
 | 
# @change: "2015-06-08 20:30" hxp ÐÂÊÖ¿¨Á÷ÏòÔö¼ÓµÈ¼¶¼°´´½Çʱ¼äÐÅÏ¢  
 | 
# @change: "2015-07-03 15:30" ljd Éý½×ϵͳͳһÁ÷Ïò¼Ç¼  
 | 
# @change: "2015-07-07 10:30" zqx ¶ñħ¾«»ªÁ÷Ïò¼Ç¼  
 | 
# @change: "2015-07-13 14:00" hxp Ôö¼ÓpidÐÅÏ¢  
 | 
# @change: "2015-09-21 20:30" hxp Ôö¼Ó×Ô¶¨Òå»õ±ÒÁ÷Ïò  
 | 
# @change: "2015-10-19 12:00" ljd Ôö¼ÓÇ¿»¯Á÷Ïò¼Ç¼  
 | 
#------------------------------------------------------------------------------   
 | 
#"""Version = 2015-10-19 12:00"""  
 | 
#------------------------------------------------------------------------------   
 | 
  
 | 
import GameWorld  
 | 
import datetime  
 | 
import IPY_GameWorld  
 | 
import ChConfig  
 | 
import ShareDefine  
 | 
import PlayerControl  
 | 
import PyGameData  
 | 
#===============================================================================  
 | 
##·¢ËÍʼþ¼Ç¼¸øEventShell  
 | 
# @param eventTypeStr: Ê¼þÀàÐͱêʶ  
 | 
# @param dataDict: Ê¼þ×Öµä  
 | 
# @return None  
 | 
def SendEventPack(eventTypeStr, dataDict, curPlayer=None):  
 | 
  
 | 
    if curPlayer:  
 | 
        pid = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PlayerFromPID)  
 | 
        dataDict["pid"] = pid  
 | 
        dataDict["fightPower"] = curPlayer.GetFightPower()  
 | 
    dataDict["time"] = str(datetime.datetime.today()).split(".")[0]  
 | 
      
 | 
    dataStr = str(dataDict)  
 | 
    GameWorld.GetGameWorld().EventShell_SendEventEx(eventTypeStr, len(eventTypeStr), dataStr, len(dataStr))  
 | 
    return  
 | 
  
 | 
  
 | 
## ¶þ´Î·ÇͬÌìµÇ½  
 | 
#  @param accID: Õ˺ÅID  
 | 
#  @param ip: ip  
 | 
#  @return: None  
 | 
def DR_OtherDayLogin(accID, ip, curPlayer):  
 | 
      
 | 
    dataDict = {'AccID':accID, 'IP':ip}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("OtherDayLogin", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## µÇ½  
 | 
#  @param curPlayer Íæ¼ÒʵÀý  
 | 
#  @return: None  
 | 
def DR_PlayerLogin(curPlayer):  
 | 
    accID = curPlayer.GetAccID()  
 | 
    ip = curPlayer.GetIP()  
 | 
    loginTime = curPlayer.GetLoginTime()  
 | 
    name = curPlayer.GetName()  
 | 
      
 | 
    dataDict = {'Type':'login', 'IP':str(ip), 'AccID':accID,  
 | 
                'Name':name, 'LoginTime':str(loginTime), 'LogoutTime':'', 'MFPFightPower':GetMFPFightPowerInfo(curPlayer)}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("LogInOut", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Íæ¼ÒÏÂÏß  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @return: None  
 | 
def DR_PlayerDisconnect(curPlayer):  
 | 
    accID = curPlayer.GetAccID()  
 | 
    ip = curPlayer.GetIP()  
 | 
    name = curPlayer.GetName()  
 | 
    logoutTime = curPlayer.GetLogoffTime()  
 | 
    loginTime = curPlayer.GetLoginTime()  
 | 
    lv = curPlayer.GetLV()  
 | 
    vipLV = curPlayer.GetVIPLv()  
 | 
    gold = curPlayer.GetGold()  
 | 
    goldPaper = curPlayer.GetGoldPaper()  
 | 
    dataDict = {'Type':'logout', 'IP':ip, 'AccID':accID, 'LV':lv, 'VipLV':vipLV,  
 | 
                  'Name':name, 'LoginTime':str(loginTime), 'Gold':gold, 'GoldPaper':goldPaper,  
 | 
                  'LogoutTime':str(logoutTime), 'MFPFightPower':GetMFPFightPowerInfo(curPlayer)}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("LogInOut", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def GetMFPFightPowerInfo(curPlayer):  
 | 
    #¼Ç¼ģ¿éÕ½Á¦  
 | 
    dataDict = {}  
 | 
    for mfpType in ShareDefine.ModuleFightPowerTypeList:  
 | 
        fightPower = PlayerControl.GetMFPFightPower(curPlayer, mfpType)  
 | 
        dataDict[mfpType] = fightPower  
 | 
    return dataDict  
 | 
      
 | 
## ÐÂÔöÓÐЧµÇ½  
 | 
#  @param accID: Õ˺ÅID  
 | 
#  @param ip: ip  
 | 
#  @return: None  
 | 
def DR_LoginValid(accID, ip, curPlayer):  
 | 
  
 | 
    dataDict = {'AccID':accID, 'IP':ip}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("LoginValid", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÐÂÔöµÚÒ»´ÎµÇ½  
 | 
#  @param accID: Õ˺ÅID  
 | 
#  @param ip: ip  
 | 
#  @return: None  
 | 
def DR_FirstLogin(accID, ip, curPlayer):  
 | 
  
 | 
    dataDict = {'AccID':accID, 'IP':ip}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("FirstLogin", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ·ÅÉú³èÎï   
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param petID: ³èÎïID  
 | 
#  @param petNPCID: ³èÎïNPCID  
 | 
#  @param petNPCName: ³èÎïNPCÃû×Ö  
 | 
#  @return: None  
 | 
def DR_FreePet(curPlayer, petID, petNPCID, petNPCName):  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PetID':petID, 'NPCID':petNPCID, 'NPCName':petNPCName}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("FreePet", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ¸±±¾½±ÀøÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param mapID: µØÍ¼ID  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param itemCnt: ÎïÆ·ÊýÁ¿  
 | 
#  @param isBind: ÊÇ·ñ°ó¶¨  
 | 
#  @return: None  
 | 
def DR_FBGiveItem(curPlayer, mapID, itemID, itemCnt, isBind):  
 | 
    #MySql²»Ê¶±ð True False,¸Ä³É1ºÍ0  
 | 
    isBind = 1 if isBind else 0  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'MapID':mapID, 'ItemID':itemID, 'ItemCount':itemCnt,   
 | 
                'IsBind':isBind}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("FBGiveItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ¹¦Äܽ±ÀøÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param funcName: ¹¦ÄÜÃû  
 | 
#  @param addDataDict:   
 | 
#  @return: None  
 | 
def DR_FuncGiveItem(curPlayer, funcName, addDataDict):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID()}  
 | 
    dataDict.update(addDataDict)  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("GiveItem_%s" % funcName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## »ñµÃÈÎÎñ  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param missionID: ÈÎÎñID  
 | 
#  @return: None  
 | 
def DR_AddNewMission(curPlayer, missionID):  
 | 
    return  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 'AccID':curPlayer.GetAccID(),   
 | 
                'MissionID':missionID}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("AddNewMission", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
##  Íê³ÉÈÎÎñ   
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param missionID: ÈÎÎñID  
 | 
#  @return: None  
 | 
def DR_DeleteMission(curPlayer, missionID):  
 | 
    return  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'MissionID':missionID}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("DeleteMission", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ²Ö¿â´æÈë½ðÇ®  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param moneyType: ½ðÇ®ÀàÐÍ  
 | 
#  @param moneyCount: ½ðÇ®ÊýÁ¿  
 | 
#  @return: None  
 | 
def DR_SetMoneyInWarehouse(curPlayer, moneyType, moneyCount):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),   
 | 
                'MoneyType':moneyType, 'MoneyCount':moneyCount,   
 | 
                'WarehouseMoneyCount':PlayerControl.GetWarehouseMoney(curPlayer, moneyType),   
 | 
                'PlayerMoneyCount':PlayerControl.GetMoney(curPlayer, moneyType)}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("SetMoneyInWarehouse", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ²Ö¿âÈ¡³ö½ðÇ®  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param moneyType: ½ðÇ®ÀàÐÍ  
 | 
#  @param moneyCount: ½ðÇ®ÊýÁ¿  
 | 
#  @return: None  
 | 
def DR_GetMoneyInWarehouse(curPlayer, moneyType, moneyCount):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),   
 | 
                'MoneyType':moneyType, 'MoneyCount':moneyCount,   
 | 
                'WarehouseMoneyCount':PlayerControl.GetWarehouseMoney(curPlayer, moneyType),   
 | 
                'PlayerMoneyCount':PlayerControl.GetMoney(curPlayer, moneyType)}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("GetMoneyInWarehouse", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ³öÊÛÎïÆ·»ñµÃ½ðÇ®   
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param moneyType: ½ðÇ®ÀàÐÍ  
 | 
#  @param moneyCount: ½ðÇ®ÊýÁ¿  
 | 
#  @return: None  
 | 
def DR_GetMoneyBySellPackItem(curPlayer, moneyType, moneyCount):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),   
 | 
                'MoneyType':moneyType, 'MoneyCount':moneyCount,   
 | 
                'PlayerMoneyCount':PlayerControl.GetMoney(curPlayer, moneyType)}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("GetMoneyBySellPackItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def DR_CTGError(curPlayer, errorInfo, addDict):  
 | 
    ## CTGÒì³£ÐÅÏ¢  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'ErrorInfo':errorInfo}  
 | 
    dataDict.update(addDict)  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("CTGError", dataDict, curPlayer)  
 | 
    GameWorld.ErrLog("%s. %s" % (errorInfo, addDict), curPlayer.GetPlayerID())  
 | 
    return  
 | 
  
 | 
def DR_CTGOK(curPlayer, addDict):  
 | 
    ## CTG³É¹¦¼Ç¼  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'LV':curPlayer.GetLV()}  
 | 
    dataDict.update(addDict)  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("CTGOK", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼Ò³äÖµºóµÄÔª±¦ÐÅÏ¢  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param addGold: ÔöÖµÔª±¦  
 | 
#  @param totalGold: Ê£ÓàÔª±¦  
 | 
#  @return: None  
 | 
def DR_PlayerGoldAfterCharge(curPlayer, addGold, totalGold):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'AddGold':addGold, 'TotalGold':totalGold}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerGoldAfterCharge", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼Ò³äֵǰµÄÏà¹ØÐÅÏ¢  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param infoDict: ¶îΪÔùËÍÊý  
 | 
#  @return: None  
 | 
def DR_PlayerInfoBeforeCharge(curPlayer, infoDict={}):  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'VIPLV':curPlayer.GetVIPLv(), 'PlayerLV':curPlayer.GetLV(),  
 | 
                'TotalGold':curPlayer.GetGold(),  
 | 
                }  
 | 
      
 | 
    dataDict.update(__GetFuncDRDict(curPlayer))  
 | 
    dataDict.update(infoDict)  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerInfoBeforeCharge", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ¹¦ÄÜÁ÷ÏòÐÅÏ¢  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @return: {}  
 | 
def __GetFuncDRDict(curPlayer):  
 | 
    drDict = {}  
 | 
      
 | 
    # ¹Ù¾ô½×¼¶¡¢×£¸£Öµ  
 | 
    offBlessValue = 0  
 | 
    offRank = curPlayer.GetOfficialRank()  
 | 
    drDict["Official"] = [offRank, offBlessValue]  
 | 
      
 | 
    return drDict  
 | 
  
 | 
## Íæ¼Ò³äÖµºóµÄµãȯÐÅÏ¢¼°vipµÈ¼¶  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param changeCoin: ¶Ò»»µÄµãȯÊý  
 | 
#  @param totaChangelCoin: ×ܶһ»µãȯÊý  
 | 
#  @param prizeCoin: ÔùË͵ãȯÊý  
 | 
#  @param totalPrizeCoin: ×ÜÔùË͵ãȯÊý  
 | 
#  @param playerVIPLV: vipµÈ¼¶  
 | 
#  @param crazyCoin: ¶îΪÔùËÍÊý  
 | 
#  @return: None  
 | 
def DR_PlayerCoinAfterCharge(curPlayer, changeCoin, totaChangelCoin, prizeCoin,   
 | 
                             totalPrizeCoin, playerVIPLV, crazyCoin, orderID):  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'ChangeCoin':changeCoin, 'TotaChangelCoin':totaChangelCoin,  
 | 
                'PrizeCoin':prizeCoin, 'TotalPrizeCoin':totalPrizeCoin, 'VIPLv':playerVIPLV,   
 | 
                "CrazyCoin":crazyCoin, 'QueryOrderID':orderID}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerCoinAfterCharge", dataDict, curPlayer)  
 | 
    return  
 | 
      
 | 
      
 | 
## Íæ¼ÒÉ̳ǹºÂòÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param buyItemID: ¹ºÂòÎïÆ·id  
 | 
#  @param buyItemCount: ¹ºÂòÎïÆ·ÊýÁ¿  
 | 
#  @param buyItemGUID: GUID  
 | 
#  @return: None  
 | 
def DR_PlayerSupermarket(curPlayer, buyItemID, buyItemCount, buyItemGUID):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'ItemID':buyItemID, 'ItemCount':buyItemCount,   
 | 
                'ItemGUID':buyItemGUID}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerSupermarket", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Íæ¼ÒÉý¼¶  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param playerLV: Íæ¼ÒµÈ¼¶  
 | 
#  @param playerTotalExp: Íæ¼Ò×ܾÑéÖµ  
 | 
#  @param curLVRequireExp: µ±Ç°µÈ¼¶Éý¼¶ÐèÒª¾ÑéÖµ  
 | 
#  @return: None  
 | 
def DR_PlayerUpgrade(curPlayer, playerLV, playerTotalExp, curLVRequireExp):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PlayerLV':playerLV, 'PlayerTotalExp':playerTotalExp,   
 | 
                'CurLVRequireExp':curLVRequireExp, 'IP':curPlayer.GetIP()}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerUpgrade", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼ÒתÉúµÈ¼¶±ä¸ü  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param reincarnationLvBefore: Ö®Ç°×ªÉú´ÎÊý  
 | 
#  @param playerLVExBefore: Ö®Ç°×ªÉúµÈ¼¶  
 | 
#  @param eventName:   
 | 
#  @return: None  
 | 
def DR_PlayerLVExChange(curPlayer, reincarnationLvBefore, playerLVExBefore, eventName, addDataDict={}):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'ReincarnationLv':curPlayer.GetReincarnationLv(),   
 | 
                'PlayerLV':curPlayer.GetLV(), 'PlayerLVEx':curPlayer.GetLVEx(),   
 | 
                'TotalExp':curPlayer.GetTotalExp(), 'ReincarnationLvBefore':reincarnationLvBefore,   
 | 
                'PlayerLVExBefore':playerLVExBefore, "EventName":eventName}  
 | 
      
 | 
    dataDict.update(addDataDict)  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerLVExChange", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼Ò´óʦµÈ¼¶±ä¸ü  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param totalMasterExp: µ±Ç°×Ü´óʦ¾Ñé  
 | 
#  @param eventName: ±ä¸üʼþÃû  
 | 
#  @return: None  
 | 
def DR_PlayerMasterLVChange(curPlayer, totalMasterExp, addDataDict={}):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PlayerLV':curPlayer.GetLV(), 'PlayerLVEx':curPlayer.GetLVEx(),   
 | 
                'TotalExp':curPlayer.GetTotalExp(), 'MasterLV':curPlayer.GetLV2(),   
 | 
                'TotalExpMaster':totalMasterExp}  
 | 
      
 | 
    dataDict.update(addDataDict)  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerMasterLVChange", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
##³äÖµËÍÎïÆ·  
 | 
def DR_BillingGiveItem(curPlayer, itemID, itemCnt):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                "ItemID":itemID,  
 | 
                'ItemCount':itemCnt  
 | 
                }  
 | 
      
 | 
    SendEventPack("BillingGiveItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
##³äÖµÁìºÀÀñ  
 | 
def DR_GoldGiftGiveItem(curPlayer, giftNum, infoDict={}):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                "GiftNum":giftNum  
 | 
                }  
 | 
      
 | 
    dataDict.update(infoDict)  
 | 
    SendEventPack("GoldGiftGiveItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
##ÀۼƵǽÀñ°ü  
 | 
def DR_LoginDayAward(curPlayer, dayIndex):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                "DayIndex":dayIndex  
 | 
                }  
 | 
      
 | 
    SendEventPack("LoginDayAward", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
##µÈ¼¶Àñ°ü  
 | 
def DR_LVAward(curPlayer, awardID):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                "AwardID":awardID  
 | 
                }  
 | 
      
 | 
    SendEventPack("LVAward", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Ê¹ÓÃÐÂÊÖýÌ忨  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param cardStr: ¿¨ºÅ  
 | 
#  @param cardType: ¿¨µÄkey  
 | 
#  @param itemID: ¸øÓèÎïÆ·ID  
 | 
#  @param itemCnt: ¸øÓèÎïÆ·ÊýÁ¿  
 | 
#  @return: None  
 | 
def DR_UseNewGuyCard(curPlayer, cardStr, cardType, itemID, itemCnt):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                'LV':curPlayer.GetLV(),  
 | 
                'LVEx':curPlayer.GetLVEx(),  
 | 
                'CreateRoleTime':curPlayer.GetCreateRoleTime(),  
 | 
                'CardStr':cardStr,  
 | 
                'CardType':cardType,  
 | 
                "ItemID":itemID,  
 | 
                'ItemCount':itemCnt  
 | 
                }  
 | 
      
 | 
    SendEventPack("UseNewGuyCard", dataDict, curPlayer)  
 | 
    return  
 | 
      
 | 
def DR_UseMediaCard(curPlayer, cardCode, cardType, awardItemList, addDataDict={}):  
 | 
    # Ê¹ÓÃÐÂýÌ忨  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'LV':curPlayer.GetLV(), 'CardCode':cardCode, 'CardType':cardType,  
 | 
                "AwardItemList":awardItemList,  
 | 
                }  
 | 
    dataDict.update(addDataDict)  
 | 
    SendEventPack("UseMediaCard", dataDict, curPlayer)  
 | 
    return  
 | 
      
 | 
## ¿ª·þ»î¶¯½±ÀøÁìÈ¡Çé¿ö  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param dataDict: ¼Ç¼ÐÅÏ¢×Öµä  
 | 
#  @return: None  
 | 
def DR_OpenServerAward(curPlayer, dataDict):  
 | 
    dataDict["PlayerID"] = curPlayer.GetPlayerID()  
 | 
    dataDict["AccID"] = curPlayer.GetAccID()  
 | 
    dataDict["PlayerName"] = curPlayer.GetPlayerName()  
 | 
      
 | 
    SendEventPack("OpenServerAward", dataDict, curPlayer)  
 | 
    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}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)  
 | 
    SendEventPack("GMToolOperate", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ³öÊÛÖ¸¶¨±³°üÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param dataDict: ¼Ç¼ÐÅÏ¢×Öµä  
 | 
#  @return:   
 | 
def DR_SellPackItem(curPlayer, dataDict):  
 | 
    dataDict.update({"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                     "AccID":curPlayer.GetAccID()})  
 | 
    SendEventPack("SellPackItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## É¾³ý±³°üÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param dataDict: ¼Ç¼ÐÅÏ¢×Öµä  
 | 
#  @return:   
 | 
def DR_DeleteItemInRecycle(curPlayer, dataDict):  
 | 
    dataDict.update({"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                     "AccID":curPlayer.GetAccID()})  
 | 
    SendEventPack("DeleteItemInRecycle", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ¹ºÂòÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param itemId: ÎïÆ·ID  
 | 
#  @param buyCount: ÎïÆ·ÊýÁ¿  
 | 
#  @param itemGuid: ÎïÆ·GUID  
 | 
#  @return:   
 | 
def DR_BuyItem(curPlayer, eventName, itemId, buyCount, itemGuid, addDataDict={}):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(), "ItemID":itemId, "ItemCount":buyCount, "ItemGUID":itemGuid}  
 | 
    dataDict.update(addDataDict)  
 | 
    SendEventPack("BuyItem_%s" % eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÈÎÎñ¸øÓè½ðÇ®  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: Ê¼þÀàÐÍ  
 | 
#  @param missionID: ÈÎÎñID  
 | 
#  @param moneyType: ½ðÇ®ÀàÐÍ  
 | 
#  @param moneyCount: ½ðÇ®ÊýÁ¿  
 | 
#  @return:   
 | 
def DR_EventAddMoney(curPlayer, eventName, missionID, moneyType, moneyCount):  
 | 
    return  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "MissionID":missionID, "MoneyType":moneyType, "MoneyCount":moneyCount,   
 | 
                'PlayerMoneyCount':PlayerControl.GetMoney(curPlayer, moneyType)}  
 | 
      
 | 
    SendEventPack("EventAddMoney_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÈÎÎñ¸øÓè¾Ñé  
 | 
def DR_EventAddExp(curPlayer, missionID, exp):  
 | 
    return  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "MissionID":missionID, "GiveExp":exp, "PlayerExp":curPlayer.GetTotalExp()}  
 | 
      
 | 
    SendEventPack("EventAddExp", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## É¾³ýÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: ¹¦ÄÜʼþÃû  
 | 
#  @param dataDict: ¼Ç¼ÏûÏ¢  
 | 
#  @return: None  
 | 
def DR_DeleteItem(curPlayer, eventName, delItemInfoDict, extraDict={}):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID()}  
 | 
    dataDict.update(delItemInfoDict)  
 | 
    dataDict.update(extraDict)  
 | 
      
 | 
    SendEventPack("DeleteItem_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## »î¶¯ÆÚ¼äÈÎÒâÖØÖøøÓèÎïÆ·  
 | 
#  @param cyrPlayer: Íæ¼ÒʵÀý  
 | 
#  @param giveItemInfoDict: ÎïÆ·ÐÅÏ¢×Öµä  
 | 
#  @return  
 | 
def DR_RandCoinGiveItem(curPlayer, giveItemInfoDict):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID()}  
 | 
    dataDict.update(giveItemInfoDict)  
 | 
      
 | 
    SendEventPack("RandCoinGiveItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## »î¶¯ÆÚ¼äµ¥´Î³äÖµ¸øÓèÎïÆ·  
 | 
#  @param cyrPlayer: Íæ¼ÒʵÀý  
 | 
#  @param giveItemInfoDict: ÎïÆ·ÐÅÏ¢×Öµä  
 | 
#  @return  
 | 
def DR_OnTimeCoinGiveItem(curPlayer, giveItemInfoDict):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID()}  
 | 
    dataDict.update(giveItemInfoDict)  
 | 
      
 | 
    SendEventPack("OnTimeCoinGiveItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÀۼƳäÖµ¸øÓèÎïÆ·  
 | 
#  @param cyrPlayer: Íæ¼ÒʵÀý  
 | 
#  @param giveItemInfoDict: ÎïÆ·ÐÅÏ¢×Öµä  
 | 
#  @return  
 | 
def DR_TotalCoinGiveItem(curPlayer, giveItemInfoDict):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID()}  
 | 
    dataDict.update(giveItemInfoDict)  
 | 
      
 | 
    SendEventPack("TotalCoinGiveItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Êͷż¼ÄÜÏûºÄÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param itemCnt: ÎïÆ·ÊýÁ¿  
 | 
#  @param itemGuid: Íæ¼ÒGUID  
 | 
#  @param skillID: ¼¼ÄÜID  
 | 
#  @return:   
 | 
def DR_UseSkilLostItem(curPlayer, itemID, itemCnt, itemGuid, skillID):  
 | 
    return  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "ItemID":itemID, "ItemCount":itemCnt, "ItemGUID":itemGuid, "SkillID":skillID}  
 | 
      
 | 
    SendEventPack("UseSkilLostItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ±³°üÎïÆ·½»»»  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param itemCnt: Íæ¼ÒÊýÁ¿  
 | 
#  @param itemGuid: Íæ¼ÒGUID  
 | 
#  @param srcPackType: Æðʼ±³°üÀàÐÍ  
 | 
#  @param descPackType: Ä¿±ê±³°üÀàÐÍ  
 | 
#  @return: None  
 | 
def DR_ChangePackItem(curPlayer, itemID, itemCnt, itemGuid, srcPackType, descPackType):  
 | 
    return  
 | 
      
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "ItemID":itemID, "ItemCount":itemCnt, "ItemGUID":itemGuid,  
 | 
                "SrcPackType":srcPackType, "DescPackType":descPackType}  
 | 
      
 | 
    SendEventPack("ChangePackItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÉèÖòֿâÃÜÂë  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param OldPsw: ¾ÉÃÜÂë  
 | 
#  @param NewPsw: ÐÂÃÜÂë  
 | 
#  @return:   
 | 
def DR_SetWarehousePsw(curPlayer, oldPsw, newPsw):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "OldPsw":oldPsw, "NewPsw":newPsw}  
 | 
      
 | 
    SendEventPack("SetWarehousePsw", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÏûºÄ½ðÇ®  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: ¹¦ÄÜʼþÃû  
 | 
#  @param moneyType: ½ðÇ®ÀàÐÍ  
 | 
#  @param moneyCount: ½ðÇ®ÊýÁ¿  
 | 
#  @param addDataDict: ¸½¼ÓÐÅÏ¢  
 | 
#  @return:   
 | 
def DR_UseMoney(curPlayer, eventName, moneyType, moneyCount, addDataDict={}):  
 | 
    if moneyCount <= 0:  
 | 
        return  
 | 
      
 | 
    #±ÜÃâ¼Ç¼̫¶àÐÅÏ¢  
 | 
    if moneyType in [IPY_GameWorld.TYPE_Price_Silver_Money] and moneyCount < ChConfig.Def_DRRecord_Min_Silver:  
 | 
        return  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), "eventName":eventName,  
 | 
                'MoneyType':moneyType, 'MoneyCount':moneyCount,   
 | 
                'PlayerMoneyCount':PlayerControl.GetMoney(curPlayer, moneyType),   
 | 
                'VIPLV':curPlayer.GetVIPLv(), 'PlayerLV':curPlayer.GetLV()}  
 | 
      
 | 
    dataDict.update(addDataDict)  
 | 
    dataDict.update(__GetFuncDRDict(curPlayer))  
 | 
      
 | 
    #½ð×Ó  
 | 
    if moneyType == IPY_GameWorld.TYPE_Price_Gold_Money:  
 | 
        SendEventPack("UseGold", dataDict, curPlayer)  
 | 
      
 | 
    #½ðƱ  
 | 
    elif moneyType == IPY_GameWorld.TYPE_Price_Gold_Paper:  
 | 
        SendEventPack("UseGoldPaper", dataDict, curPlayer)  
 | 
      
 | 
    #Òø×Ó  
 | 
    elif moneyType == IPY_GameWorld.TYPE_Price_Silver_Money:  
 | 
        SendEventPack("UseSilver", dataDict, curPlayer)  
 | 
      
 | 
    #񿮱  
 | 
    elif moneyType == IPY_GameWorld.TYPE_Price_Silver_Paper:  
 | 
        SendEventPack("UseSilverPaper", dataDict, curPlayer)  
 | 
  
 | 
    #×Ô¶¨Òå»õ±Ò  
 | 
    elif moneyType in ShareDefine.TYPE_Price_CurrencyDict:  
 | 
        SendEventPack("UseCurrency_%s" % moneyType, dataDict, curPlayer)  
 | 
         
 | 
    #Õ½Ã˹±Ï×  
 | 
    elif moneyType == ShareDefine.TYPE_Price_Family_Contribution:  
 | 
        SendEventPack("UseFamilyContribution", dataDict, curPlayer)  
 | 
                   
 | 
    return  
 | 
  
 | 
## »ñµÃ½ðÇ®  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: ¹¦ÄÜʼþÃû  
 | 
#  @param moneyType: ½ðÇ®ÀàÐÍ  
 | 
#  @param moneyCount: ½ðÇ®ÊýÁ¿  
 | 
#  @param addDataDict: ¸½¼ÓÐÅÏ¢  
 | 
#  @return:   
 | 
def DR_GiveMoney(curPlayer, eventName, moneyType, moneyCount, addDataDict={}):  
 | 
    if moneyCount <= 0:  
 | 
        return  
 | 
      
 | 
    #±ÜÃâ¼Ç¼̫¶àÐÅÏ¢  
 | 
    if moneyType in [IPY_GameWorld.TYPE_Price_Silver_Money] and moneyCount < ChConfig.Def_DRRecord_Min_Silver:  
 | 
        return  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), "eventName":eventName,  
 | 
                'MoneyType':moneyType, 'MoneyCount':moneyCount,   
 | 
                'PlayerMoneyCount':PlayerControl.GetMoney(curPlayer, moneyType),   
 | 
                'VIPLV':curPlayer.GetVIPLv(), 'PlayerLV':curPlayer.GetLV()}  
 | 
      
 | 
    dataDict.update(addDataDict)  
 | 
    dataDict.update(__GetFuncDRDict(curPlayer))  
 | 
      
 | 
    #½ð×Ó  
 | 
    if moneyType == IPY_GameWorld.TYPE_Price_Gold_Money:  
 | 
        SendEventPack("GiveGold", dataDict, curPlayer)  
 | 
      
 | 
    #½ðƱ  
 | 
    elif moneyType == IPY_GameWorld.TYPE_Price_Gold_Paper:  
 | 
        SendEventPack("GiveGoldPaper", dataDict, curPlayer)  
 | 
      
 | 
    #Òø×Ó  
 | 
    elif moneyType == IPY_GameWorld.TYPE_Price_Silver_Money:  
 | 
        SendEventPack("GiveSilver", dataDict, curPlayer)  
 | 
      
 | 
    #񿮱  
 | 
    elif moneyType == IPY_GameWorld.TYPE_Price_Silver_Paper:  
 | 
        SendEventPack("GiveSilverPaper", dataDict, curPlayer)  
 | 
      
 | 
    #×Ô¶¨Òå»õ±Ò  
 | 
    elif moneyType in ShareDefine.TYPE_Price_CurrencyDict:  
 | 
        SendEventPack("GiveCurrency_%s" % moneyType, dataDict)  
 | 
          
 | 
    return  
 | 
  
 | 
## »ñµÃÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: ¹¦ÄÜʼþÃû  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param curPlayer: ÎïÆ·ÊýÁ¿  
 | 
#  @param addDataDict: ¸½¼ÓÐÅÏ¢  
 | 
#  @return:   
 | 
def DR_SetPlayerItem(curPlayer, eventName, itemDataDict, addDataDict={}):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID()}  
 | 
      
 | 
    dataDict.update(itemDataDict)  
 | 
    dataDict.update(addDataDict)  
 | 
    SendEventPack("GivePlayerItem_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ×°±¸¼Ó¹¤  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: ¹¦ÄÜʼþÃû  
 | 
#  @param addDataDict: ¸½¼ÓÐÅÏ¢  
 | 
#  @return:   
 | 
def DR_EquipMachining(curPlayer, eventName, addDataDict):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID()}  
 | 
    dataDict.update(addDataDict)  
 | 
      
 | 
    SendEventPack("EquipMachining_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def DR_StoneItemChange(curPlayer, eventName, addDict={}):  
 | 
    # ¼Ç¼±¦Ê¯ÎïÆ·±ä¸ü  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID()}  
 | 
    dataDict.update(addDict)  
 | 
    SendEventPack("StoneChange_%s"%eventName, dataDict, curPlayer)  
 | 
    Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_StoneChange, addDict)  
 | 
    return  
 | 
  
 | 
def DR_VIPChange(curPlayer, eventName, addDict={}):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID()}  
 | 
    dataDict.update(addDict)  
 | 
      
 | 
    SendEventPack("VIPTimeChange_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Ñ§Ï°ºÍÉý¼¶¼¼ÄÜ  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param SkillID: ¼¼ÄÜID  
 | 
#  @param skillLV: ¼¼Äܵȼ¶  
 | 
#  @return:    
 | 
def DR_LearnORUPSkill(curPlayer, skillID, skillLV):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "skillID":skillID, "LV":skillLV}  
 | 
      
 | 
    SendEventPack("LearnORUPSkill", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Ë鯬ºÏ³É¸øÓèÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param itemCnt: ÎïÆ·ÊýÁ¿  
 | 
#  @param isBind: ÊÇ·ñ°ó¶¨  
 | 
#  @return:   
 | 
def DR_StuffMachining(curPlayer, itemID, itemCnt, isBind):  
 | 
    return  
 | 
    #MySql²»Ê¶±ð True False,¸Ä³É1ºÍ0  
 | 
    isBind = 1 if isBind else 0  
 | 
      
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "ItemID":itemID, "ItemCount":itemCnt, "IsBind":isBind}  
 | 
      
 | 
    SendEventPack("StuffMachining", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ±³°ü¸ñ×ÓÊýÁ¿¹ºÂò  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param packType: ±³°üÀàÐÍ  
 | 
#  @param buyCnt: ¹ºÂò¸ñ×ÓÊý  
 | 
#  @param totalCnt: ×ܹºÂòÊý  
 | 
#  @return:   
 | 
def DR_OpenPackCount(curPlayer, packType, buyCnt, tatleCnt):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "PackType":packType, "Count":buyCnt, "TotalCount":tatleCnt}  
 | 
      
 | 
    SendEventPack("OpenPackCount", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Ð¦¶÷¼µãÊý¸Ä±ä  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param changePoint: ¸Ä±äµãÊý  
 | 
#  @param resultPoint: ½á¹ûµãÊý  
 | 
#  @return:   
 | 
def DR_EventXELPoint(curPlayer, changePoint, resultPoint):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "ChangePoing":changePoint, "Point":resultPoint}  
 | 
      
 | 
    SendEventPack("EventXELPoint", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Ìí¼Ó³ÆºÅ  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: À´Ô´Ê¼þÃû  
 | 
#  @param titleID: ³ÆºÅID  
 | 
#  @param addDataDict: ¸½¼ÓÊôÐÔ  
 | 
#  @return  
 | 
def DR_AddTitle(curPlayer, eventName, titleID, addDataDict={}):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "ItemID":titleID}  
 | 
    dataDict.update(addDataDict)  
 | 
      
 | 
    SendEventPack("AddTitle_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Íæ¼ÒÊ£ÓàÊôÐ﵋  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: À´Ô´Ê¼þÃû  
 | 
#  @param point: µãÊý  
 | 
#  @param addDataDict: ¸½¼ÓÊôÐÔ  
 | 
def DR_Freepoint(curPlayer, eventName, point, addDataDict={}):  
 | 
    return  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "Point":point, "TotalPoint":curPlayer.GetFreePoint()}  
 | 
    dataDict.update(addDataDict)  
 | 
      
 | 
    SendEventPack("Freepoint_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÕæÆø¸Ä±ä  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: Ê¼þÀàÐÍ  
 | 
#  @param value: ÊýÖµ  
 | 
#  @param addDataDict: ¸½¼ÓÊôÐÔ  
 | 
def DR_ChangeZhenQi(curPlayer, eventName, value, addDataDict={}):  
 | 
    return  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),  
 | 
                "Value":value, "TotalValue":curPlayer.GetExAttr5()}  
 | 
      
 | 
    dataDict.update(addDataDict)  
 | 
      
 | 
    SendEventPack("ChangeZhenQi_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Ê¹ÓóèÎïÂú»ê£¬µÃµ½³èÎï  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param itemGUID: ÎïÆ·GUID  
 | 
#  @param petNpcName: ³èÎïNPCÃû×Ö  
 | 
#  @param petNpcID: ³èÎïNPC  
 | 
#  @return:   
 | 
def DR_UsePetSoul(curPlayer, itemID, itemGUID, petNpcName, petNpcID):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID(),   
 | 
                "ItemID":itemID, "ItemGUID":itemGUID, "NPCID":petNpcID, "NPCName":petNpcName}  
 | 
      
 | 
    SendEventPack("UsePetSoul", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ïÚ³µ  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: Ê¼þÃû  
 | 
#  @param addDataDict: ¸½¼ÓÊôÐÔ  
 | 
#  @return:   
 | 
def DR_Truck(curPlayer, eventName, addDataDict):  
 | 
    dataDict = {"PlayerID":curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                "AccID":curPlayer.GetAccID()}  
 | 
      
 | 
    dataDict.update(addDataDict)  
 | 
      
 | 
    SendEventPack("Truck_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ÉèÖÃÍæ¼ÒSB״̬  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param state: ×´Ì¬  
 | 
#  @return:   
 | 
def SetPlayerSBState(curPlayer, state):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), "State":state}   
 | 
      
 | 
    SendEventPack("SetPlayerSBState", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼Ò¼Ò×åÐÅÏ¢  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName: Ê¼þÃû  
 | 
#  @param addDataDict: ¸½¼ÓÊôÐÔ  
 | 
#  @return:   
 | 
def DR_PlayerFamily(curPlayer, eventName, addDataDict):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID()}      
 | 
    dataDict.update(addDataDict)  
 | 
      
 | 
    SendEventPack("PlayerFamily_%s"%eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## »ñµÃÍþÍûÖµ  
 | 
#  @param curPlayer Íæ¼ÒʵÀý  
 | 
#  @param addPrestige Ìí¼ÓÖµ  
 | 
#  @param addType ÔÒò  
 | 
#  @return  
 | 
def DR_GetPrestigeValue(curPlayer, addPrestige, addType):  
 | 
    return  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                "Prestige":addPrestige, "TotalPrestige":PlayerControl.GetPrestige(curPlayer), "Type":addType}  
 | 
      
 | 
    SendEventPack("GetPrestigeValue", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Ê§È¥ÍþÍûÖµ  
 | 
#  @param curPlayer Íæ¼ÒʵÀý  
 | 
#  @param addPrestige Ìí¼ÓÖµ  
 | 
#  @param addType ÔÒò  
 | 
#  @return  
 | 
def DR_LostPrestigeValue(curPlayer, addPrestige, addType):  
 | 
    return  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                "Prestige":addPrestige, "TotalPrestige":PlayerControl.GetPrestige(curPlayer), "Type":addType}  
 | 
      
 | 
    SendEventPack("LostPrestigeValue", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ¼Ç¼´íÎóÐÅÏ¢  
 | 
#  @param info: ´íÎóÐÅÏ¢  
 | 
#  @param playerID: Íæ¼ÒID  
 | 
#  @param playerName: Íæ¼ÒÃû×Ö  
 | 
#  @param accID: Õ˺ÅID  
 | 
#  @return  
 | 
def DR_ErrorInfo(info, playerID, playerName, accID):  
 | 
    curMapID = GameWorld.GetMap().GetMapID()  
 | 
      
 | 
    dataDict = {"errInfo":info, "mapID":curMapID, "playerID":playerID, "PlayerName":playerName, "accID":accID}  
 | 
      
 | 
    SendEventPack("ErrorInfo", dataDict)  
 | 
    return  
 | 
      
 | 
  
 | 
## Íæ¼ÒÒ»´ÎÐÔ¶Ò»»µã¾íËÍÔª±¦  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param useCoin: ¶Ò»»µãȯÊý  
 | 
#  @param giveGold:¸øÓèÔª±¦  
 | 
#  @return   
 | 
def DR_OneTimeCoinGiveGold(curPlayer, useCoin, giveGold):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                'UseCoin':useCoin, 'GiveGold':giveGold, 'TotalGold':curPlayer.GetGold()}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("OneTimeCoinGiveGold", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Ôö¼ÓÍæ¼Ò¼Ò×å»îÔ¾¶È  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param addValue: Ôö¼ÓÖµ  
 | 
#  @param curValue: Ôö¼ÓºóÖµ  
 | 
#  @param reason:Ôö¼ÓÔÒò  
 | 
#  @return   
 | 
def DR_AddPlayerFamilyActiveValue(curPlayer, addValue, curValue, reason):  
 | 
    return  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                'addValue':addValue, 'FamilyActiveValue':curValue, 'Reason':reason}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("AddPlayerFamilyActiveValue", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ³èÎï¼Óµã  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param petID: ³èÎïid  
 | 
#  @param refreshType: ÔöµãÀàÐÍ  
 | 
#  @param addPoint: Ôö¼ÓµãÊý  
 | 
#  @param npcID: ³èÎïnpcid  
 | 
#  @return   
 | 
def DR_PetAddPoint(curPlayer, petID, refreshType, addPoint, npcID):  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                'PetID':petID, 'AttrType':refreshType, 'AddPoint':addPoint, 'NPCID':npcID}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PetAddPoint", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ³èÎï¼ÓÇ×ÃÜ¶È  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param petID: ³èÎïid  
 | 
#  @param addValue: Ôö¼ÓµãÊý  
 | 
#  @param npcID: ³èÎïnpcid  
 | 
#  @param curFriendliness: ÔöµãÀàÐÍ  
 | 
#  @return   
 | 
def DR_AddFriendliness(curPlayer, petID, addValue, petNPCID, curFriendliness):  
 | 
  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                'PetID':petID, 'AddValue':addValue, 'Friendliness':curFriendliness, 'NPCID':petNPCID}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("AddFriendliness", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Íæ¼ÒÉýÐÇ  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param starLV: ÎïÆ·ÐǼ¶  
 | 
#  @param addDataDict: ¸½¼Ó²ÄÁϵÄ×Öµä  
 | 
#  @return         
 | 
def DR_UpStarLVSuccess(curPlayer, exp, starLV):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), "StarLV":starLV, "Exp":exp}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("UpStarLVSuccess", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼ÒËÀÍö  
 | 
#  @param tagObjType: ¹¥»÷·½ÀàÐÍ  
 | 
#  @param tagObj: ¹¥»÷·½ID  
 | 
#  @param mapID: ËÀÍöÍæ¼ÒËùÔÚµØÍ¼ID  
 | 
#  @return  
 | 
def DR_PlayerDead(atkObjType, atkObjID, curPlayer, mapID):  
 | 
    return  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'MapID':mapID,   
 | 
                'AtkObjType':atkObjType, "ObjID":atkObjID}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerDead", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ¸ø´æ½±Àø±íÎïÆ·  
 | 
#  @param curPlayer: Íæ¼Ò  
 | 
#  @param rewardType: ½±ÀøÀàÐÍ  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param itemCnt: ÎïÆ·¸öÊý  
 | 
#  @return  
 | 
def DR_PlayerGetReward(curPlayer, rewardType, itemID, itemCnt):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'itemID':itemID, 'itemCnt':itemCnt,  
 | 
                'rewardType':rewardType}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerGetReward", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ÉêÇë¼ÓÈë¹ó±ö¾ãÀÖ²¿  
 | 
#  @param curPlayer  
 | 
#  @param hasRegister: Ö®Ç°ÊÇ·ñÒѱ¨Ãû  
 | 
#  @param moneyType: ÏûºÄ½ðÇ®ÀàÐÍ  
 | 
#  @param money: ÏûºÄ½ðÇ®ÊýÁ¿  
 | 
#  @return  
 | 
def DR_ApplyVIPClub(curPlayer, name, sex, tel, mail, addr, qq, birthday, postalcode, serverID, giveItemOK):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), "QQ":qq,  
 | 
                'AccID':curPlayer.GetAccID(), 'Name':name, "Sex":sex, "Tel":tel, "Mail":mail, "Address":addr,  
 | 
                "Birthday":birthday, "Postalcode":postalcode, "ServerID":serverID, "GiveItemOK":giveItemOK}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("ApplyVIPClub", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ¿ç·þÈü±¨Ãû  
 | 
#  @param curPlayer  
 | 
#  @param hasRegister: Ö®Ç°ÊÇ·ñÒѱ¨Ãû  
 | 
#  @param moneyType: ÏûºÄ½ðÇ®ÀàÐÍ  
 | 
#  @param money: ÏûºÄ½ðÇ®ÊýÁ¿  
 | 
#  @return  
 | 
def DR_MergeWarRegister(curPlayer, hasRegisterCnt, moneyType, money):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'HasRegisterCnt':hasRegisterCnt,  
 | 
                'MoneyType':moneyType, "MoneyCnt":money}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("MergeWarRegister", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ¿ç·þÈü±¨Ãû½á¹û  
 | 
#  @param curPlayer  
 | 
#  @param hasRegister: Ö®Ç°ÊÇ·ñÒѱ¨Ãû  
 | 
#  @param moneyType: ÏûºÄ½ðÇ®ÀàÐÍ  
 | 
#  @param money: ÏûºÄ½ðÇ®ÊýÁ¿  
 | 
#  @return  
 | 
def DR_MergeWarRegisterResult(curPlayer, result, errorMsg, newAccount):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'Result':result, "ErrorMsg":errorMsg, "NewAccount":newAccount}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("MergeWarRegisterResult", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
#Supernatural-------------------------------------------------------------------------------  
 | 
## ½»Ò׳öÊÛÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param tagPlayer: ÎïÆ·ID  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param itemCnt: ÎïÆ·ÊýÁ¿  
 | 
#  @param itemData: ÎïÆ·ÐÅÏ¢  
 | 
#  @return  
 | 
def DR_TradeLostItem(curPlayer, tagPlayer, itemID, itemCnt, itemData):     
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'TagPlayer':tagPlayer.GetPlayerID(), "ItemID":itemID,  
 | 
                "ItemCnt":itemCnt}  
 | 
      
 | 
    dataDict.update(itemData)  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("TradeLostItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ½»Ò×¹ºµÃÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param tagPlayer: ÎïÆ·ID  
 | 
#  @param itemID: ÎïÆ·ID  
 | 
#  @param itemCnt: ÎïÆ·ÊýÁ¿  
 | 
#  @return  
 | 
def DR_TradeGetItem(curPlayer, tagPlayer, itemID, itemCnt, itemData):     
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'TagPlayer':tagPlayer.GetPlayerID(), "ItemID":itemID,  
 | 
                "ItemCnt":itemCnt}  
 | 
  
 | 
    dataDict.update(itemData)  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("TradeGetItem", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ½»Ò×ÖнðÇ®±ä»¯  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param tagPlayer: Ä¿±êÍæ¼Ò  
 | 
#  @param goldEx: ½»Ò×ǰԪ±¦  
 | 
#  @param silverEx:½»Ò×ǰ Òø×Ó  
 | 
#  @param gPaperEx: ½»Ò×ǰ½ðƱ  
 | 
#  @param sPaperEx: ½»Ò×Ç°ÒøÆ±  
 | 
#  @return  
 | 
def DR_TradeMoney(curPlayer, tagPlayer, goldEx, silverEx, gPaperEx, sPaperEx):     
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'TagPlayer':tagPlayer.GetPlayerID(),   
 | 
                "Gold":curPlayer.GetGold(), "Silver":PlayerControl.GetSilver(curPlayer),   
 | 
                "GoldPaper":curPlayer.GetGoldPaper(), "SilverPaper":curPlayer.GetSilverPaper(),  
 | 
                "GoldEx":goldEx, "SilverEx":silverEx, "GPaperEx":gPaperEx, "SPaperEx":sPaperEx}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("TradeMoney", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## Íæ¼ÒÂíÆ¥½ø½×  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param classLV: ½×¼¶  
 | 
#  @param horseID: ÐÂÂíÆ¥id  
 | 
#  @return: None  
 | 
def DR_NewHorseByClassUp(curPlayer, classLV, horseID):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                'ClassLV':classLV,  
 | 
                'HorseID':horseID,  
 | 
                }  
 | 
      
 | 
    SendEventPack("NewHorseByClassUp", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ×øÆï»Ã»¯Æ¤·ôɾ³ý  
 | 
def DR_HorseSkinDel(curPlayer, skinID):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'skinID':skinID,}  
 | 
    SendEventPack("HorseSkinDel", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼Ò½ø½×ʽϵͳÁ÷Ïò¼Ç¼  
 | 
#  @param curPlayer  
 | 
#  @param classLV ½×¼¶  
 | 
#  @param extraInfoDict Ô¤ÁôÐÅÏ¢×Öµä  
 | 
#  @return: None  
 | 
def DR_ClassUpSystem(curPlayer, drKey, classLV, extraInfoDict={}):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(),  
 | 
                'ClassLV':classLV,  
 | 
                }  
 | 
    dataDict.update(extraInfoDict)  
 | 
    SendEventPack(drKey, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ×°±¸ºÏ³ÉÎïÆ·  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param itemID: ÎïÆ·id  
 | 
#  @param itemCnt: ÎïÆ·ÊýÁ¿  
 | 
#  @param itemData: ÎïÆ·Êý¾Ý  
 | 
#  @return: None  
 | 
def DR_EquipCompound(curPlayer, recordName, itemID, itemCnt, itemData):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), "ItemID":itemID, "ItemCnt":itemCnt}  
 | 
      
 | 
    dataDict.update(itemData)  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack(recordName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ²É¼¯ÌØÊâNPC  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param npcID: npcID  
 | 
#  @return: None  
 | 
def DR_CollectNPCOK(curPlayer, npcID, giveMoney, giveExp, giveZhenQi, giveItemList):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PlayerLV':curPlayer.GetLV(), 'GiveMoney':giveMoney,   
 | 
                'GiveExp':giveExp, 'GiveZhenQi':giveZhenQi, 'GiveItemList':str(giveItemList),  
 | 
                'NPCID':npcID}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("CollectNPCOK", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼ÒÁìÈ¡³äÖµÌØ»Ý»î¶¯½±Àø  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param actionID: »î¶¯id  
 | 
#  @param actionNum: »î¶¯±àºÅ  
 | 
#  @param itemID: ÎïÆ·id  
 | 
#  @param itemCnt: ÎïÆ·ÊýÁ¿  
 | 
#  @param isPutIn: ÊÇ·ñ·ÅÈë  
 | 
#  @param prizeIndex: ½±ÀøÖеĵÚxÖÖ½±Àø  
 | 
#  @return              
 | 
def DR_PlayerTeHuiRechargePrize(curPlayer, actionID, actionNum, itemID, itemCnt, isPutIn, prizeIndex):  
 | 
    #MySql²»Ê¶±ð True False,¸Ä³É1ºÍ0  
 | 
    isPutIn = 1 if isPutIn else 0  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'ActionID':actionID, 'ActionNum':actionNum,   
 | 
                'IsPutIn':isPutIn, "ItemID":itemID, "ItemCount":itemCnt, 'PrizeIndex':prizeIndex}  
 | 
      
 | 
    SendEventPack("TeHuiRechargePrize", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
## ÁìȡͶ×ʻر¨  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @return: None  
 | 
def DR_GetGoldInvestReward(curPlayer, investType, rewardIndex, itemList):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PlayerLV':curPlayer.GetLV(), 'InvestType':investType,   
 | 
                'RewardIndex':rewardIndex,  
 | 
                 'itemList':itemList}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("GetGoldInvestReward", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## »÷ɱNPCÁ÷Ïò  
 | 
#  @param curPlayer: Íæ¼ÒʵÀý  
 | 
#  @param eventName:   
 | 
#  @param npcID: npcID  
 | 
#  @return: None  
 | 
def DR_KillNPC(curPlayer, eventName, npcID, extendDict={}):  
 | 
    mapID = GameWorld.GetMap().GetMapID()  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PlayerLV':curPlayer.GetLV(), 'MapID':mapID, 'NPCID':npcID}  
 | 
      
 | 
    dataDict.update(extendDict)  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("KillNPC_%s" % eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def DR_TreasureResult(curPlayer, actionType, successCnt, extendDict={}):  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PlayerLV':curPlayer.GetLV(),  
 | 
                "ActionType":actionType, "successCnt":successCnt}  
 | 
      
 | 
    dataDict.update(extendDict)  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("TreasureResult", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Ïû·ÑVIPÉý¼¶¼Ç¼  
 | 
#  @param curPlayer  
 | 
#  @param lastLV ÔVIPLV  
 | 
#  @param curExp µ±Ç°VIP¾Ñé  
 | 
#  @param addExp Ôö¼ÓVIP¾Ñé  
 | 
#  @param costType »¨·ÑÀàÐÍ  
 | 
#  @param costGold »¨·ÑÊý  
 | 
#  @return: None  
 | 
def DR_PlayerCostVIPLV(curPlayer, lastLV, curExp, addExp, costType, costGold):  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'VIPLv':curPlayer.GetVIPLv(), 'lastVIPLv':lastLV,  
 | 
                'curExp':curExp, 'addExp':addExp, 'costType':costType, 'costGold':costGold}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerCostVIPLV", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼ÒÌá½»bug¼°½¨Òé  
 | 
def DR_BugSuggest(curPlayer, eventName, content):  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'content':content}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerSubmit_%s" % eventName, dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## ×ÊÔ´ÕһؼǼ  
 | 
#  @param curPlayer  
 | 
#  @return: None  
 | 
def DR_PlayerRecover(curPlayer, recoverWay, recoverCntDict, totalExp, totalMoney, totalSP, totalItemDict):  
 | 
      
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'recoverWay':recoverWay, 'recoverCntDict':recoverCntDict,  
 | 
                'totalExp':totalExp, 'totalMoney':totalMoney, 'totalSP':totalSP, 'totalItemDict':totalItemDict}  
 | 
  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("PlayerRecover", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def DR_GlobalDropCD(curPlayer, npcID, itemID):  
 | 
    # È«¾ÖµôÂäCDµôÂä¼Ç¼  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PlayerLV':curPlayer.GetLV(), 'NPCID':npcID, 'ItemID':itemID}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("GlobalDropCD", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def DR_GlobalDropRate(curPlayer, npcID, itemID, killedCnt, dropRate):  
 | 
    # È«¾Ö»÷ɱµôÂä¸ÅÂʵôÂä¼Ç¼  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'PlayerLV':curPlayer.GetLV(), 'NPCID':npcID,   
 | 
                'ItemID':itemID, 'KilledCnt':killedCnt, 'DropRate':dropRate}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("GlobalDropRate", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def DR_MagicWeaponExp(curPlayer, mwID, succID, newExp, needExp):  
 | 
    # ·¨±¦¼¤»î¾Ñé»ñµÃ¼Ç¼  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'mwID':mwID, 'succID':succID,   
 | 
                'newExp':newExp, 'needExp':needExp}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("MagicWeaponExp", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def DR_MagicWeaponActive(curPlayer, mwID, mwLV):  
 | 
    # ·¨±¦µÈ¼¶Éý¼¶¼Ç¼  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'mwID':mwID, 'mwLV':mwLV}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("MagicWeaponActive", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼ÒÉÏÏ߳ɾͼì²é  
 | 
#  @return  
 | 
def DR_CheckOldPlayerSuccess(curPlayer):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID()}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("CheckOldPlayerSuccess", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼Ò¾³½çÉý¼¶  
 | 
#  @return  
 | 
def DR_RealmLVUp(curPlayer, realmlv, realmPoint, needRealmPoint):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),   
 | 
                'AccID':curPlayer.GetAccID(), 'realmlv':realmlv, 'curRealmPoint':realmPoint, 'costRealmPoint':needRealmPoint,  
 | 
                'playerlv':curPlayer.GetLV(), 'power':curPlayer.GetFightPower()}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("RealmLVUp", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
def Cache_FightPowerChangeInfo(curPlayer, dotype, dataDict):  
 | 
    ##ÔÝ´æ¿ÉÄܵ¼ÖÂÕ½Á¦½µµÍµÄÐÐΪÐÅÏ¢  
 | 
    dataDict['dotime'] = str(datetime.datetime.today()).split(".")[0]  
 | 
    eventName = ChConfig.FightPowerDownRecordDict.get(dotype, 'Unknown')  
 | 
    if eventName in PyGameData.g_fightpowerChangeDataRecordDict:  
 | 
        PyGameData.g_fightpowerChangeDataRecordDict[eventName].append(dataDict)  
 | 
    else:  
 | 
        PyGameData.g_fightpowerChangeDataRecordDict[eventName] = [dataDict]  
 | 
    return  
 | 
  
 | 
def DR_FightPowerChangeInfo(curPlayer, beforePower):  
 | 
    ##¼Ç¼սÁ¦½µµÍµÄÐÐΪÐÅÏ¢  
 | 
    dataDict = {'beforePower':beforePower, 'PlayerID':curPlayer.GetPlayerID(), 'AccID':curPlayer.GetAccID()}  
 | 
    for dotype, dateList in PyGameData.g_fightpowerChangeDataRecordDict.items():  
 | 
        rList = []  
 | 
        for dateInfo in dateList:  
 | 
            dateTimeStr = dateInfo['dotime']  
 | 
            if GameWorld.GetPastSeconds(dateTimeStr) >10:  
 | 
                continue  
 | 
            rList.append(dateInfo)  
 | 
        dataDict[dotype] = rList  
 | 
    PyGameData.g_fightpowerChangeDataRecordDict = {}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("FightPowerChangeInfo", dataDict, curPlayer)  
 | 
    return  
 | 
  
 | 
## Íæ¼ÒÖÜ¿ñ»¶£¨ÆßÌìѲÀñ£©  
 | 
#  @return  
 | 
def DR_WeekPartyPoint(curPlayer, dayIndex, point):  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'AccID':curPlayer.GetAccID(), 'dayIndex':dayIndex, 'point':point}  
 | 
      
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("WeekPartyPoint", dataDict, curPlayer)  
 | 
    return  
 | 
def DR_FeastWeekPartyPoint(curPlayer, dayIndex, point):  
 | 
    ##½ÚÈÕѲÀñ  
 | 
    dataDict = {'PlayerID':curPlayer.GetPlayerID(),   
 | 
                'AccID':curPlayer.GetAccID(), 'dayIndex':dayIndex, 'point':point}  
 | 
    #·¢ËÍ·â°ü  
 | 
    SendEventPack("FeastWeekPartyPoint", dataDict, curPlayer)  
 | 
    return 
 |