#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package EventReport  
 | 
#  
 | 
# @todo:ʼþ»ã±¨  
 | 
# @author hxp  
 | 
# @date 2015-1-14  
 | 
# @version 2.4  
 | 
# @Note£º  EventReport_EventReportÓ÷¨ µÚÒ»¸ö²ÎÊý´«postÄÚÈÝurlencode£¬µÚ2,3,4²»Ó㻵ÚÎå¸ö²ÎÊý0´ú±íget£¬1Ϊpost£»µÚÁù¸ö²ÎÊýΪurl  
 | 
#  
 | 
# @change: "2015-01-28 22:30" hxp ¹Ø±Õʼþ»ã±¨  
 | 
# @change: "2015-02-06 20:40" Alee Ê¼þ»ã±¨·¢ËÍÖÁºÏ·þÖ÷·þ  
 | 
# @change: "2015-06-08 20:30" hxp Ôö¼ÓchannelCode  
 | 
# @change: "2015-07-13 14:00" hxp Ôö¼ÓpidÐÅÏ¢  
 | 
# @change: "2016-07-18 19:00" hxp 9377¶À´úʼþ»ã±¨°æ  
 | 
# @change: "2016-07-27 20:00" Alee Ð޸Ĵò¿ªÎļþ³¬Ê±¹Ø±Õ  
 | 
# @change: "2016-07-30 11:30" hxp ¹Ø±ÕÎïÆ·¸ú×Ù  
 | 
# @change: "2016-08-18 16:30" hxp ×Ô¶¨ÒåÈÎÎñʼþ  
 | 
# @change: "2016-08-30 23:00" hxp ÁÄÌì¼à¿Ø  
 | 
# @change: "2016-09-10 11:00" hxp ÁÄÌìÄÚÈÝÌæ»»»»ÐÐ  
 | 
# @change: "2016-11-09 20:00" hxp Ôö¼Ó×Ô¶¨Òå¼Ç¼(×øÆï¡¢³á°ò¡¢³èÎï¡¢»õ±Ò½ø³ö¡¢³È×°)  
 | 
# @change: "2017-06-08 19:30" hxp Ôö¼Ó×Ô¶¨Òå¼Ç¼(µãȯ¡¢Éñ±ø¡¢·ûÓ¡¡¢¸ÄÃû¡¢ÕæÆø)  
 | 
# @change: "2017-07-01 15:30" hxp Æ½Ì¨¸ÄΪ´ÓÍæ¼ÒÕ˺ÅÖÐÈ¡£¬Ö§³Ö»ì·þģʽ  
 | 
# @change: "2017-07-04 15:00" hxp Ôö¼Ó»ì·þģʽÏ¿ÉÇø·Ö¸÷ƽ̨×ÔÉíÇø·þºÏ·þºóµÄƽ̨Ö÷·þID  
 | 
# ÏêϸÃèÊö: Ê¼þ»ã±¨  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
#"""Version = 2017-07-04 15:00"""  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
import IPY_GameWorld  
 | 
import DataRecordPack  
 | 
import PlayerControl  
 | 
import ReadChConfig  
 | 
import ShareDefine  
 | 
import GameWorld  
 | 
import ChConfig  
 | 
import CommFunc  
 | 
import PlayerTJG  
 | 
  
 | 
import datetime  
 | 
import random  
 | 
import time  
 | 
import md5  
 | 
import os  
 | 
import re  
 | 
import json  
 | 
import urllib  
 | 
EventFilepath = "D:\\EventServer\\PythonScribe\\EventLog\\"   
 | 
  
 | 
g_wFileName = ""  
 | 
g_writeHandle = None  # ²»¿ÉÖ±½Óµ÷Óà  
 | 
  
 | 
Def_Custom_Events_Bug = "Bug" # ÓÎÏ·Bug  
 | 
Def_Custom_Events_Suggest = "suggest" # ÓÎÏ·½¨Òé  
 | 
Def_Custom_Events_Item = "Item" # ÎïÆ·¸ú×Ù  
 | 
Def_Custom_Events_GetMail = "GetMail" # ÓʼþÁìÈ¡  
 | 
Def_Custom_Events_CommonCard = "CommonCard_%s" # Í¨ÓÃÐÂÊÖ¿¨ÂëʹÓÃ, ²ÎÊýΪͨÓÃÂ뿨ºÅ  
 | 
Def_Custom_Events_NewbieCard = "NewbieCard_%s" # ³£¹æÐÂÊÖ¿¨Ê¹ÓÃ, ²ÎÊýΪÀñ°üÀàÐÍ  
 | 
Def_Custom_Events_MediaCard = "MediaCard_%s" # ÐÂýÌ忨ʹÓÃ, ²ÎÊýΪ¿¨ÀàÐÍ  
 | 
  
 | 
g_whStartTime = 0     # ´´½¨Îļþʱ¼ä  
 | 
Def_WriteTime = 2   # Îļþ³ÖÐøÐ´Èëʱ¼ä£º·ÖÖÓ  
 | 
  
 | 
def OnTimeCloseScribeTxt():  
 | 
    global g_whStartTime  
 | 
    global g_writeHandle  
 | 
    global g_wFileName  
 | 
    try:  
 | 
        if g_whStartTime == 0:  
 | 
            return  
 | 
          
 | 
        #Îļþ´´½¨³¬¹ý  
 | 
        if time.time() - g_whStartTime < 60*(Def_WriteTime + 1):  
 | 
            return  
 | 
          
 | 
        if g_writeHandle == None:  
 | 
            return  
 | 
        g_writeHandle.close()  
 | 
        g_wFileName = ""  
 | 
        g_whStartTime = 0  
 | 
    except:  
 | 
        GameWorld.ErrLog("OnTimeCloseScribeTxt ³ö´í")  
 | 
  
 | 
  
 | 
  
 | 
## ³õʼ»¯Ê¼þ  
 | 
#  @param None  
 | 
#  @return ÎÞ·µ»ØÖµ  
 | 
def InitDllAppID():  
 | 
  
 | 
    appID = "mobile"  
 | 
    key = "mobile"  
 | 
  
 | 
    GameWorld.GetGameWorld().EventReport_SetEventReportParam(appID, key)  
 | 
    GameWorld.Log("³õʼ»¯Ê¼þ±¨¸æ: appID=%s,key=%s OK!" % (appID, key))  
 | 
    return  
 | 
  
 | 
## Ê¼þ±¨¸æ¼Ç¼  
 | 
#  @param eventActionID Ê¼þid  
 | 
#  @param eventParam Ê¼þ²ÎÊý  
 | 
#  @param curPlayer   
 | 
#  @return None  
 | 
def EventReport(eventActionID, eventParam, curPlayer=None, OperatorID=""):  
 | 
    # ×é³ÉÀý×Ó eventParam µÄ¸ñʽ±ØÐëÊÇ xx=yy&zz=cc  
 | 
    #  "http://192.168.0.249:12000/event_receiver?EventID=3099&OperatorID=test&PlayerCount=102&Time=2018-02-08 18:30:30&ProductID=snxxz&RegionName=s1"  
 | 
      
 | 
    if not curPlayer and not OperatorID:  
 | 
        return  
 | 
  
 | 
    ProductID = ReadChConfig.GetPyMongoConfig("EventReport", "ProductID")  
 | 
    ReportUrl = ReadChConfig.GetPyMongoConfig("EventReport", "ReportUrl")  
 | 
      
 | 
      
 | 
    playerInfo = ""  
 | 
    if curPlayer:  
 | 
        #UTF8 ÐèҪת³Éurl±àÂë²Å¿ÉÓà  
 | 
        playerInfo = urllib.urlencode({"RoleID": curPlayer.GetName(),  
 | 
                          "AccountID": GameWorld.GetPlatformAccID(curPlayer.GetAccID()),  
 | 
                          "IP": curPlayer.GetIP(),  
 | 
                          "Level": curPlayer.GetLV()})   
 | 
          
 | 
        OperatorID = GameWorld.GetPlayerPlatform(curPlayer)  
 | 
        RegionName = GameWorld.GetPlayerServerSID(curPlayer)  
 | 
          
 | 
    else:  
 | 
        # ºÏ·þÇé¿ö£¬Íæ¼ÒÈ¡×Ô¼º·þ·¢ËÍ£¬·ÇÍæ¼ÒÊý¾Ý°´Ö¸¶¨Æ½Ì¨ÅäÖ÷¢  
 | 
        sid = GameWorld.GetPlayerMainServerID(OperatorID)  
 | 
        if not sid:  
 | 
            GameWorld.ErrLog("GetPlayerMainServerID: %s-%s"%(OperatorID, sid))  
 | 
            return  
 | 
        RegionName = 's%s'%sid  
 | 
  
 | 
    if eventParam:  
 | 
        eventParam = "&%s"%eventParam  
 | 
      
 | 
      
 | 
    getUrl = "%s?ProductID=%s&OperatorID=%s&RegionName=%s&EventID=%s&%s&Time=%s%s"%(\  
 | 
             ReportUrl, ProductID, OperatorID, RegionName, eventActionID, playerInfo,  
 | 
             str(datetime.datetime.today()).split('.')[0], eventParam)  
 | 
    GameWorld.DebugLog("EventReport: %s"%getUrl)  
 | 
      
 | 
    # µÚÎå¸ö²ÎÊý0´ú±íget·¢ËÍ  1´ú±ípost  
 | 
    GameWorld.GetGameWorld().EventReport_EventReport("", "", "", "", 0, getUrl)  
 | 
    return  
 | 
  
 | 
  
 | 
## Ð´Ê¼þ±¨¸æÎļþ  
 | 
#  @param eventClass   
 | 
#  @return None  
 | 
def WriteEvent(eventClass):  
 | 
    return  
 | 
    if GameWorld.IsCrossServer():  
 | 
        return  
 | 
      
 | 
    if eventClass.GetScribeEventName() not in ReadChConfig.GetEvalChConfig("EventReportID"):  
 | 
        return  
 | 
  
 | 
    if not os.path.isdir(EventFilepath):  
 | 
        os.makedirs(EventFilepath)  
 | 
      
 | 
    #³¢ÊÔдµ½Í¬Ò»¸öÎļþµ«ÊÇwindow »áÓÐbug£¬Ö»Äܸ÷×Ô³ÌÐò·Ö¿ªÐ´Èë  
 | 
    fp_w = GetWriteIO()  
 | 
    fp_w.write("%s\t%s\n"%(eventClass.GetScribeEventName(), eventClass.GetCurEventStr()))  
 | 
    fp_w.flush()  
 | 
    return  
 | 
  
 | 
# ·ÖÖÓ×¼µãУ׼  
 | 
def FixTime():  
 | 
    curTime = datetime.datetime.today()  
 | 
    curTime = curTime + datetime.timedelta(minutes=Def_WriteTime-curTime.minute%Def_WriteTime)  
 | 
    tmp = str(curTime).split(".")[0][:-3].replace(':', '-')  
 | 
    return tmp.replace(" ", "_")  
 | 
  
 | 
def GetLogFileName(fileStr):  
 | 
    sessionid = md5.md5(str(random.random()) + str(time.time())).hexdigest()  
 | 
    return EventFilepath + sessionid + fileStr + '.log'  
 | 
  
 | 
def GetWriteIO():  
 | 
    global g_wFileName  
 | 
    global g_writeHandle  
 | 
    global g_whStartTime  
 | 
      
 | 
    fileTime = FixTime()  
 | 
    if g_wFileName and fileTime in g_wFileName:  
 | 
        #µ±Ç°ÎļþÖ±½Ó·µ»Ø  
 | 
        return g_writeHandle  
 | 
    curFileName = GetLogFileName(fileTime)  
 | 
  
 | 
    if g_writeHandle != None:  
 | 
        #¹Ø±Õ¾ÉÎļþ  
 | 
        g_writeHandle.close()  
 | 
      
 | 
    g_wFileName = curFileName  
 | 
    g_writeHandle = open(g_wFileName, 'a+')  
 | 
    g_whStartTime = time.time()  
 | 
    return g_writeHandle  
 | 
  
 | 
## =================================================================================================  
 | 
  
 | 
# Ã¿¸ö×ֶζ¼Ó¦¸ÃתΪ×Ö·û´®£¬²»È»join»á±¨´í  
 | 
  
 | 
class ScribeEvent(object):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        self.product_slug = 'yhlz'  # ÓÎÏ·±êÖ¾  
 | 
        self.agent_name = ReadChConfig.GetPyMongoConfig("platform", "PlatformName") # Æ½Ì¨±êÖ¾  
 | 
        self.gameserver_no = ReadChConfig.GetPyMongoConfig("platform", "ServerID")[1:] # Çø·þ  
 | 
        self.time = ""    #GameWorld.GetCurrentDataTimeStr()  
 | 
          
 | 
    def SetEventAgentInfo(self, accIDPlatform):  
 | 
        # ÉèÖôúÀíÔËÓªÉÌÐÅÏ¢  
 | 
        # @param accIDPlatform: ÕâÀïÈ¡Õ˺ÅËùÊôƽ̨£¬Ö§³Ö»ì·þ, Èç¹ûÈ¡²»µ½£¬ÔòÓÃĬÈÏÅäÖõÄÔËÓªÉÌÐÅÏ¢  
 | 
        if not accIDPlatform:  
 | 
            return  
 | 
        self.agent_name = accIDPlatform  
 | 
        self.gameserver_no = str(GameWorld.GetPlayerMainServerID(self.agent_name))  
 | 
        return  
 | 
      
 | 
    #¼´Ê¹ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
    #±ÜÃâÐ޸ĸñʽµÄÇé¿ö£¬ÕâÀïͳһÐ޸ļ´¿É  
 | 
    def GetEventStr(self, tmpList):  
 | 
        return '\"%s\"'%'","'.join(tmpList)  
 | 
      
 | 
# 3.3.1. entry£¨ÐÂÍæ¼Òµ¼È룩  
 | 
class entry(ScribeEvent):  
 | 
      
 | 
    Def_EntryStep_CreatRole = 3  
 | 
    Def_EntryStep_FirstLogin = 4  
 | 
      
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(entry, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.step = 0 # ²½ÖèÖµ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.browser = "" # Íæ¼ÒʹÓõÄä¯ÀÀÆ÷  
 | 
        self.resolution = "" # Íæ¼ÒµÄ×ÀÃæ·Ö±æÂÊ£¬¸ñʽΪ¡¸¿í*¸ß¡¹  
 | 
        self.os = "" # Íæ¼ÒʹÓõIJÙ×÷ϵͳ  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.browser, self.resolution, self.os, str(self.step)]  
 | 
          
 | 
        return super(entry, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_CreateRole  
 | 
      
 | 
# 3.3.2. login£¨µÇ¼£©  
 | 
class login(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(login, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.session_id = "" # »á»°ID  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.browser = "" # Íæ¼ÒʹÓõÄä¯ÀÀÆ÷  
 | 
        self.resolution = "" # Íæ¼ÒµÄ×ÀÃæ·Ö±æÂÊ£¬¸ñʽΪ¡¸¿í*¸ß¡¹  
 | 
        self.os = "" # Íæ¼ÒʹÓõIJÙ×÷ϵͳ  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.browser, self.resolution, self.os, self.time, self.chr_name,   
 | 
                   str(self.chr_level), self.session_id]  
 | 
          
 | 
        return super(login, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_Login  
 | 
      
 | 
      
 | 
# 3.3.3. session£¨»á»°¼Ç¼£©  
 | 
# Íæ¼ÒµÇ³ö¡¢ÀëÏßµÄÊý¾Ý£¬ÅäºÏµÇ¼Êý¾ÝÊý¾ÝÖÐÐÄ¿Éͳ¼Æ³öÍæ¼ÒÔÚÏßʱ³¤  
 | 
class session(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(session, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.session_id = "" # »á»°ID  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.time, self.chr_name, str(self.chr_level), self.session_id]  
 | 
          
 | 
        return super(session, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_Session  
 | 
      
 | 
# 3.3.5. virtual©\cost£¨ÐéÄâ±ÒÏû·Ñ£©  
 | 
# Íæ¼Ò²úÉúÏû·Ñ¼Ç¼¼´ÊÕ¼¯£»   
 | 
class virtual_cost(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(virtual_cost, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.quantity = 0 # Ïû·ÑÊýÁ¿  
 | 
        self.price = 0 # Ïû·ÑµãµÄÐéÄâ±Òµ¥¼Û  
 | 
        self.reason_name = "" # Ïû·ÑµãÃû³Æ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
        self.balance = 0 # Íæ¼ÒÊ£ÓàÐéÄâ±Ò  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.time, self.chr_name, str(self.chr_level), str(self.quantity),   
 | 
                   str(self.price), str(self.balance), self.reason_name]  
 | 
          
 | 
        return super(virtual_cost, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_VirtualCost  
 | 
      
 | 
# 3.3.6. virtual©\reward£¨ÐéÄâ±ÒÔùËÍ£©  
 | 
# Íæ¼Ò»ñµÃÐéÄâ±ÒÔùËÍʱ¼´ÊÕ¼¯£»   
 | 
# ³ýÁËÕæÊµ³äÖµ¶©µ¥²úÉúµÄÐéÄâ±ÒÔö¼Ó¶¼Ó¦¸Ã¼ÆÈëµ½ÐéÄâ±ÒÔùËÍ  
 | 
class virtual_reward(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(virtual_reward, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.virtual_amount = 0 # Ôö¼ÓµÄÐéÄâ±ÒÊýÁ¿  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
        self.balance = 0 # Íæ¼ÒÊ£ÓàÐéÄâ±Ò  
 | 
        self.source = "" # »ñµÃ½±ÀøµÄ;¾¶  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.time, self.chr_name, str(self.chr_level), str(self.virtual_amount),   
 | 
                   str(self.balance), self.source]  
 | 
          
 | 
        return super(virtual_reward, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_VirtualReward  
 | 
      
 | 
# 3.3.12. virtual©\resource£¨ÐéÄâ×ÊÔ´²ú³öÓëÏûºÄ£©  
 | 
# ²úÉúÏàÓ¦ÐéÄâ×ÊÔ´µÄÏû·Ñ¡¢Éú²ú¼Ç¼ʱ¼´ÊÕ¼¯¡£  
 | 
# ÓÃÓÚͳ¼ÆÈκÎÐéÄâ×ÊÔ´Èç¸÷Àà¶þ¼¶»õ±ÒµÄ²ú³öÓëÏûºÄ  
 | 
class virtual_resource(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(virtual_resource, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.type_name = "" # ÐéÄâ×ÊÔ´ÀàÐÍÃû³Æ  
 | 
        self.reason_name = "" # ×ÊÔ´µãÃû³Æ  
 | 
        self.quantity = 0 # ÐéÄâ×ÊÔ´²ú³ö/ÏûºÄµÄ´ÎÊý  
 | 
        self.price = 0 # ÐéÄâ×ÊÔ´²ú³ö/ÏûºÄµÄÊýÁ¿£¬Çø·ÖÕý¸º£¬ÕýֵΪ²ú³ö£¬¸ºÖµÎªÏûºÄ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.time, self.chr_name, str(self.chr_level), self.type_name,   
 | 
                   self.reason_name, str(self.quantity), str(self.price)]  
 | 
          
 | 
        return super(virtual_resource, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_VirtualResource  
 | 
  
 | 
# 3.3.9. custom©\events£¨×Ô¶¨Òåʼþ£©  
 | 
# ÓÃÓÚͳ¼ÆÈÎºÎÆÚÍûÈ¥¸ú×ÙµÄÊý¾Ý  
 | 
class custom_events(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(custom_events, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.event_name = "" # Ê¼þÃû³Æ  
 | 
        self.session_id = "" # »á»°ID  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
        self.comments = "" # ±¸×¢»ò¸½¼ÓÐÅÏ¢ char(255)  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.time, self.chr_name, str(self.chr_level), self.event_name,  
 | 
                   self.comments, self.session_id]  
 | 
          
 | 
        return super(custom_events, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_CustomEvents  
 | 
  
 | 
# 3.3.10. mission©\log£¨ÈÎÎñ¼Ç¼£©  
 | 
# ¸ú×ÙÍæ¼ÒÈÎÎñ½ÓÈ¡¡¢Íê³É¡¢Ê§°ÜÇé¿ö£¬ÒÔ¼°ÓÃÓÚÁ÷Ê§Íæ¼ÒµÄÈÎÎñ·ÖÎöµÈͳ¼Æ¡£  
 | 
# ÈÎÎñ½Óȡʱ¼´ÊÕ¼¯ type=0 µÄÊý¾Ý£¬ÈÎÎñ½áÊøÇҳɹ¦Ê±¼´ÊÕ¼¯ type=1¡¢mission_result=1 µÄÊý¾Ý£¬ÈÎÎñ½áÊøÇÒʧ°Üʱ¼´ÊÕ¼¯ type=1¡¢mission_result=0 µÄÊý¾Ý¡£  
 | 
class missionlog(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(missionlog, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
        self.type = 0 # 0 ÈÎÎñ¿ªÊ¼ 1 ÈÎÎñ½áÊø  
 | 
        self.mission_name = "" # ÈÎÎñÃû  
 | 
        self.session_id = "" # »á»°ID  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
        self.mission_result = 0 # µ±ÈÎÎñ½áÊø£¬ÈÎÎñ½á¹û 0£ºÊ§°Ü 1£º³É¹¦  
 | 
        self.mission_reason = "" # µ±ÈÎÎñ½áÊøÇÒÈÎÎñʧ°ÜʱµÄÔÒò  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
          
 | 
        self.scribeEventName = ShareDefine.Def_UserAction_MissionLog  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.time, self.chr_name, str(self.chr_level), str(self.type), self.mission_name,  
 | 
                   str(self.mission_result), self.mission_reason, self.session_id]  
 | 
          
 | 
        return super(missionlog, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return self.scribeEventName  
 | 
      
 | 
# 3.3.11. level©\up£¨Éý¼¶¼Ç¼£©  
 | 
# ÓÃÓÚÍæ¼ÒÉý¼¶Ê±³¤µÈµÈ¼¶Ïà¹ØÍ³¼Æ¡£  
 | 
# µÈ¼¶·¢Éú±ä»¯Ê±¼´ÊÕ¼¯£»  
 | 
# ÒªÍ³¼Æ 2 ¼¶µÄÉý¼¶Ê±³¤±ØÐëÒªÓР1 ¼¶µÄÉý¼¶Êý¾Ý£¬Òò´Ë¸Õ´´½¨Íê½ÇɫʱµÄ 1 ¼¶µÄÊý¾ÝÒ²ÐèÒªÊÕ¼¯¡£  
 | 
class levelup(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(levelup, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
        self.session_id = "" # »á»°ID  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.time, self.chr_name, str(self.chr_level), self.session_id]  
 | 
          
 | 
        return super(levelup, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_LVUP  
 | 
      
 | 
# 3.3.13. chat-log £¨ÁÄÌìÏûÏ¢£©  
 | 
# ÓÃÓÚ¼à¿ØÍæ¼ÒÁÄÌì  
 | 
class chat_log(ScribeEvent):  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(chat_log, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
        self.content = "" # ÁÄÌìÄÚÈÝ  
 | 
        self.cmc_name = "" # ÁÄÌìÆµµÀ±êʶ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
        self.ip = "" # IP µØÖ·  
 | 
        self.account_name = "" # Õ˺ŵǼÃû  
 | 
        self.account_type = 0 # Õ˺ÅÀàÐÍ  
 | 
        self.chr_level = 0 # Íæ¼Ò½ÇÉ«µÈ¼¶  
 | 
        self.object = "" # Ë½ÁĶÔÏó  
 | 
        self.addinfo = "" # ¶îÍâÐÅÏ¢  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.ip, self.gameserver_no, self.account_id, self.account_name,   
 | 
                   str(self.account_type), self.time, self.chr_name, str(self.chr_level), self.object, self.content,  
 | 
                   self.addinfo, self.cmc_name]  
 | 
          
 | 
        return super(chat_log, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_ChatLog  
 | 
      
 | 
  
 | 
## =================================================================================================  
 | 
   
 | 
#===============================================================================  
 | 
# def WriteEvent_entry_firstlogin(curPlayer, browser, resolution, pcOS):  
 | 
#    entryEvent = entry()  
 | 
#    entryEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
#    entryEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
#    entryEvent.step = entryEvent.Def_EntryStep_FirstLogin  
 | 
#    entryEvent.ip = curPlayer.GetIP()  
 | 
#    entryEvent.account_name = entryEvent.account_id  
 | 
#    entryEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
#    entryEvent.browser = browser  
 | 
#    entryEvent.resolution = resolution  
 | 
#    entryEvent.os = pcOS  
 | 
#    WriteEvent(entryEvent)  
 | 
#    return  
 | 
#===============================================================================  
 | 
  
 | 
def WriteEvent_login(curPlayer):  
 | 
    if curPlayer.GetIP() == "127.0.0.1":  
 | 
        return  
 | 
    EventReport(ShareDefine.Def_UserAction_Login, "Job=%s&SessionID=%s"%(curPlayer.GetJob(), GameWorld.GetSessionID(curPlayer)), curPlayer)  
 | 
  
 | 
    return  
 | 
  
 | 
# ÀëÏßÊý¾Ý  
 | 
def WriteEvent_session(curPlayer):  
 | 
    seconds = 0  
 | 
    if PlayerTJG.GetIsTJG(curPlayer):  
 | 
        return  
 | 
    else:  
 | 
        logoffTimeStr = curPlayer.GetLogoffTime().strip()  
 | 
        loginTimeStr = curPlayer.GetLoginTime().strip()  
 | 
        if logoffTimeStr and loginTimeStr:  
 | 
            passTimes = GameWorld.GetDateTimeByStr(logoffTimeStr) - GameWorld.GetDateTimeByStr(loginTimeStr)  
 | 
            seconds = passTimes.seconds  
 | 
    EventReport(ShareDefine.Def_UserAction_Session, "OnlineTime=%s&SessionID=%s"%(seconds, GameWorld.GetSessionID(curPlayer)), curPlayer)  
 | 
    #===========================================================================  
 | 
    # sessionEvent = session()  
 | 
    # sessionEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # sessionEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # sessionEvent.session_id = GameWorld.GetSessionID(curPlayer)  
 | 
    # sessionEvent.ip = curPlayer.GetIP()  
 | 
    # sessionEvent.account_name = sessionEvent.account_id  
 | 
    # sessionEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
    # sessionEvent.chr_name = curPlayer.GetPlayerName()  
 | 
    # sessionEvent.chr_level = GetScribeEvent_chr_level(curPlayer)  
 | 
    # WriteEvent(sessionEvent)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
## Ð´ÐéÄâÔª±¦Ïû·Ñ¼Ç¼  
 | 
#  @param quantity: Ïû·ÑÊýÁ¿  
 | 
#  @param price: Ïû·ÑµãµÄÐéÄâ±Òµ¥¼Û  
 | 
#  @param reason_name: Ïû·ÑµãÃû³Æ  
 | 
def WriteEvent_virtual_cost(curPlayer, quantity, price, reason_name):  
 | 
    '''  
 | 
     ÎÊ£ºÐéÄâÏû·ÑµãµÄÁ£¶È¼¸´óºÃ£¿  
 | 
        ´ð£ºÊý¾Ý±¨±í¶ÔÐéÄâÏû·ÑµÄͳ¼ÆÖ§³ÖÁ½¼¶£¬¼´Ïû·Ñµã¼°Æä¸¸ÀàÏû·Ñµã·Ö×飬¾Ý´Ë£º  
 | 
       ¡ñ ½¨ÒéÊÇÏû·Ñ;¾¶¼ÓÉÏÏû·Ñ¶ÔÏ󣬱ÈÈ硸É̵깺Âò£ºÈýʬÄÔÉñµ¤¡¹£¬¶øºó½«¸ÃÏû·ÑµãÔÚÏû·Ñµã·Ö×éÀï¹éΪ¡¸É̵깺Âò¡¹£»  
 | 
       ¡ñ ²»Òª¼ÓÉÏÏû·ÑÕßÈ硸Ҷ¹Âº®£ºÉ̵깺Âò£ºÈýʬÄÔÉñµ¤¡¹£»  
 | 
       ¡ñ ²»Òª¼ÓÉÏÏû·Ñ¶ÔÏóµÈ¼¶È硸ǿ»¯£ºÁøÒ¶µ¶ [9¼¶]¡¹¡£  
 | 
    '''  
 | 
    #===========================================================================  
 | 
    # virtualCostEvent = virtual_cost()  
 | 
    # virtualCostEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # virtualCostEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # virtualCostEvent.quantity = quantity  
 | 
    # virtualCostEvent.price = price  
 | 
    # virtualCostEvent.balance = curPlayer.GetGold()  
 | 
    # virtualCostEvent.reason_name = reason_name  
 | 
    # virtualCostEvent.ip = curPlayer.GetIP()  
 | 
    # virtualCostEvent.account_name = virtualCostEvent.account_id  
 | 
    # virtualCostEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
    # virtualCostEvent.chr_name = curPlayer.GetPlayerName()  
 | 
    # virtualCostEvent.chr_level = GetScribeEvent_chr_level(curPlayer)  
 | 
    # WriteEvent(virtualCostEvent)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
## Ð´ÐéÄâÔª±¦ÔùËÍ»ñµÃ¼Ç¼,º¬³äÖµ¿É²éµ½Õ˶һ»³ÉÐéÄâ±Òʱ¼ä  
 | 
#  @param virtual_reward: Ôö¼ÓµÄÐéÄâ±ÒÊýÁ¿  
 | 
#  @param source: »ñµÃ½±ÀøµÄ;¾¶  
 | 
def WriteEvent_virtual_reward(curPlayer, virtual_amount, source):  
 | 
    #===========================================================================  
 | 
    # virtualRewardEvent = virtual_reward()  
 | 
    # virtualRewardEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # virtualRewardEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # virtualRewardEvent.virtual_amount = virtual_amount  
 | 
    # virtualRewardEvent.balance = curPlayer.GetGold()  
 | 
    # virtualRewardEvent.source = source  
 | 
    # virtualRewardEvent.ip = curPlayer.GetIP()  
 | 
    # virtualRewardEvent.account_name = virtualRewardEvent.account_id  
 | 
    # virtualRewardEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
    # virtualRewardEvent.chr_name = curPlayer.GetPlayerName()  
 | 
    # virtualRewardEvent.chr_level = GetScribeEvent_chr_level(curPlayer)  
 | 
    # WriteEvent(virtualRewardEvent)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
## Ð´¶þ¼¶»õ±ÒµÄ²ú³öÓëÏûºÄ¼Ç¼  
 | 
#  @param type_name: ÐéÄâ×ÊÔ´ÀàÐÍÃû³Æ, Èç½ð±Ò  
 | 
#  @param reason_name: ×ÊÔ´µãÃû³Æ, ÈçË¢ÐÂÈÙÓþÉÌµê  
 | 
#  @param quantity: ÐéÄâ×ÊÔ´²ú³ö/ÏûºÄµÄ´ÎÊý  
 | 
#  @param price: ÐéÄâ×ÊÔ´²ú³ö/ÏûºÄµÄÊýÁ¿µ¥¼Û£¬Çø·ÖÕý¸º£¬ÕýֵΪ²ú³ö£¬¸ºÖµÎªÏûºÄ  
 | 
#  @param flow  0 ´ú±íÏû·Ñ  1 ´ú±í²ú³ö  
 | 
def WriteEvent_virtual_resource(curPlayer, type_name, reason_name, quantity, price, flow, extraDict={}):  
 | 
  
 | 
    #±ÜÃâ¼Ç¼̫¶àÐÅÏ¢  
 | 
    if type_name in [IPY_GameWorld.TYPE_Price_Silver_Money] and abs(quantity * price) < ChConfig.Def_DRRecord_Min_Silver:  
 | 
        return  
 | 
    # ±êʶ´Ë»õ±ÒÊÇ·ñÊÇÒ»¼¶»õ±Ò£¨³äÖµ£©  
 | 
    Recharged = 1 if type_name == IPY_GameWorld.TYPE_Price_Gold_Money else 0  
 | 
    #===========================================================================  
 | 
    # virtualResourceEvent = virtual_resource()  
 | 
    # virtualResourceEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # virtualResourceEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # virtualResourceEvent.type_name = str(type_name)  
 | 
    # virtualResourceEvent.reason_name = reason_name  
 | 
    # virtualResourceEvent.quantity = quantity  
 | 
    # virtualResourceEvent.price = price  
 | 
    # virtualResourceEvent.ip = curPlayer.GetIP()  
 | 
    # virtualResourceEvent.account_name = virtualResourceEvent.account_id  
 | 
    # virtualResourceEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
    # virtualResourceEvent.chr_name = curPlayer.GetPlayerName()  
 | 
    # virtualResourceEvent.chr_level = GetScribeEvent_chr_level(curPlayer)  
 | 
    # WriteEvent(virtualResourceEvent)  
 | 
    #===========================================================================  
 | 
    # OperatorExtra json ¸ñʽ Ïû·Ñ¾ßÌåÔÒò  
 | 
    EventReport(ShareDefine.Def_UserAction_VirtualResource,   
 | 
                "Price=%s&Quantity=%s&OperateType=%s&CurrencyType=%s&Recharged=%s&Flow=%s&Balance=%s&OperatorExtra=%s"%(  
 | 
                price, quantity, reason_name, type_name, Recharged, flow,   
 | 
                PlayerControl.GetMoney(curPlayer, type_name), json.dumps(extraDict, ensure_ascii=False)), curPlayer)  
 | 
    return  
 | 
  
 | 
## Ð´ÈÎÎñʼþ¼Ç¼  
 | 
#  @param startType: 0 ÈÎÎñ¿ªÊ¼ 1 ÈÎÎñ½áÊø  
 | 
#  @param isFinish: µ±ÈÎÎñ½áÊø£¬ÈÎÎñ½á¹û 0£ºÊ§°Ü 1£º³É¹¦  
 | 
#  @param failReason: µ±ÈÎÎñ½áÊøÇÒÈÎÎñʧ°ÜʱµÄÔÒò  
 | 
def WriteEvent_mission_log(curPlayer, missionData, startType, isFinish=0, failReason=""):  
 | 
    if startType not in [0, 1] or isFinish not in [0, 1]:  
 | 
        return  
 | 
      
 | 
    if not missionData:  
 | 
        return  
 | 
      
 | 
    #missionName = "0%s%s" % (missionData.ID, missionData.Name)  
 | 
    missionName = missionData.ID  
 | 
    __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason)  
 | 
    return  
 | 
  
 | 
def WriteFuncCMEAcceptable(curPlayer, funcID):  
 | 
    return  
 | 
    if funcID not in ChConfig.FuncCMEDict:  
 | 
        return  
 | 
    WriteEvent_custom_mission_log(curPlayer, ChConfig.FuncCMEDict[funcID], ChConfig.CME_Log_Acceptable)  
 | 
    return True  
 | 
  
 | 
def WriteEvent_MWSuccess(curPlayer, mwID, succID, logType, isFinish=0):  
 | 
    '''д×Ô¶¨ÒåÈÎÎñ - ·¨±¦³É¾Íʼþ, Ê¼þID¸ñʽ:  91+·¨±¦ID+ÖÁÉÙ4λµÄ³É¾ÍID  
 | 
    '''  
 | 
    cmeType = "91%d%04d" % (mwID, succID)  
 | 
    WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish)  
 | 
    return  
 | 
  
 | 
def WriteEvent_FB(curPlayer, mapID, funcLineID, logType, joinType=0, isFinish=0, failReason=""):  
 | 
    '''д×Ô¶¨ÒåÈÎÎñ - ¸±±¾Ê¼þ, Ê¼þID¸ñʽ: 90+mapID+joinType+funcLineID  
 | 
    @param joinType: 0-ĬÈÏÎÞ; 1-µ¥ÈË; 2-¶àÈË; 3-ÖúÕ½;   ×¢Òâµ¥È˶ÓÎéËãµ¥ÈË  
 | 
    '''  
 | 
    cmeType = "90%d%d%02d" % (mapID, joinType, funcLineID)  
 | 
    WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish, failReason=failReason)  
 | 
    return  
 | 
  
 | 
## Ð´×Ô¶¨ÒåÈÎÎñʼþ¼Ç¼  
 | 
#  @param cmeType: ×Ô¶¨ÒåÀàÐÍ, ¶ÔÓ¦ ChConfig.CME_Type_List  
 | 
#  @param logType: ¼Ç¼ÀàÐÍ, ¶ÔÓ¦ ChConfig.CME_Log_Type_List  
 | 
#  @param cmeInfoEx: À©Õ¹×Ô¶¨ÒåÐÅÏ¢, Ò»°ãÓÃÓÚÐèÒª·Ö×ÓÏî¼Ç¼µÄÀàÐÍ  
 | 
#  @param isFinish: µ±Ê¼þ½áÊøÊ±½á¹û 0£ºÊ§°Ü 1£º³É¹¦  
 | 
#  @param failReason: µ±Ê¼þ½áÊøÊ±Ê§°ÜµÄÔÒò  
 | 
def WriteEvent_custom_mission_log(curPlayer, cmeType, logType, isFinish=0, failReason="", cmeInfoEx=None):  
 | 
    #if cmeType not in ChConfig.CME_Type_List:  
 | 
    #    return  
 | 
      
 | 
    if logType not in ChConfig.CME_Log_Type_List:  
 | 
        return  
 | 
      
 | 
    startType = 1 if logType == ChConfig.CME_Log_End else 0   
 | 
    #===========================================================================  
 | 
    # missionName = ChConfig.CME_Type_Dict.get(cmeType, "δ֪")  
 | 
    # if cmeInfoEx != None:  
 | 
    #    missionName = "%s:%s" % (missionName, cmeInfoEx)  
 | 
    # if logType == ChConfig.CME_Log_Acceptable:  
 | 
    #    missionName = "%s_¿ÉÌôÕ½" % missionName  
 | 
    #===========================================================================  
 | 
          
 | 
    missionName = cmeType  
 | 
    __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason, cmeType in ChConfig.CME_Ex_Log_List)  
 | 
    return  
 | 
  
 | 
## Ð´ÈÎÎñʼþ¼Ç¼  
 | 
#  @param startType: 0 ÈÎÎñ¿ªÊ¼ 1 ÈÎÎñ½áÊø  
 | 
#  @param missionName: ÈÎÎñÃû  
 | 
#  @param isFinish: µ±ÈÎÎñ½áÊø£¬ÈÎÎñ½á¹û 0£ºÊ§°Ü 1£º³É¹¦  
 | 
#  @param failReason: µ±ÈÎÎñ½áÊøÇÒÈÎÎñʧ°ÜʱµÄÔÒò  
 | 
def __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason, isExLog=False):  
 | 
    isFinish = 1 if isFinish else 0  
 | 
    exDict = {"Fail":failReason}  
 | 
    resultMsg = json.dumps(exDict, ensure_ascii=False)  
 | 
    EventReport(ShareDefine.Def_UserAction_MissionLog,   
 | 
                "MissionStep=%s&MissionID=%s&MissionResult=%s&MissionExtra=%s"%(startType, missionName, isFinish, resultMsg), curPlayer)  
 | 
    #===========================================================================  
 | 
    # missionlogEvent = missionlog()  
 | 
    # missionlogEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # missionlogEvent.scribeEventName = ShareDefine.Def_UserAction_ExMissionLog if isExLog else \  
 | 
    #                                    ShareDefine.Def_UserAction_MissionLog  
 | 
    # missionlogEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # missionlogEvent.chr_level = GetScribeEvent_chr_level(curPlayer)  
 | 
    # missionlogEvent.type = startType  
 | 
    # missionlogEvent.mission_name = missionName  
 | 
    # missionlogEvent.session_id = GameWorld.GetSessionID(curPlayer)  
 | 
    #   
 | 
    # missionlogEvent.ip = curPlayer.GetIP()  
 | 
    # missionlogEvent.account_name = missionlogEvent.account_id  
 | 
    # missionlogEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
    # missionlogEvent.chr_name = curPlayer.GetPlayerName()  
 | 
    # missionlogEvent.mission_result = isFinish  
 | 
    # missionlogEvent.mission_reason = failReason  
 | 
    # WriteEvent(missionlogEvent)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
def WriteEvent_level_up(curPlayer):  
 | 
    EventReport(ShareDefine.Def_UserAction_LVUP, "", curPlayer)  
 | 
    #===========================================================================  
 | 
    # levelupEvent = levelup()  
 | 
    # levelupEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # levelupEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # levelupEvent.session_id = GameWorld.GetSessionID(curPlayer)  
 | 
    # levelupEvent.ip = curPlayer.GetIP()  
 | 
    # levelupEvent.account_name = levelupEvent.account_id  
 | 
    # levelupEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
    # levelupEvent.chr_name = curPlayer.GetPlayerName()  
 | 
    # levelupEvent.chr_level = GetScribeEvent_chr_level(curPlayer)  
 | 
    # WriteEvent(levelupEvent)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
def WriteEvent_chat_log(curPlayer, content, cmc_name, tagName="", addinfo=""):  
 | 
    return  
 | 
    #===========================================================================  
 | 
    # '''  
 | 
    # @todo: Ð´ÁÄÌì¼à¿Ø¼Ç¼  
 | 
    # @param content: ÁÄÌìÄÚÈÝ  
 | 
    # @param cmc_name: ÁÄÌìÆµµÀ±êʶ  
 | 
    # @param tagName: Ë½ÁĶÔÏó  
 | 
    # @param addinfo: ¶îÍâÐÅÏ¢  
 | 
    # '''  
 | 
    # chatlogEvent = chat_log()  
 | 
    # chatlogEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # chatlogEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # chatlogEvent.chr_name = curPlayer.GetName()  
 | 
    # chatlogEvent.content = __GetEventChatContent(content)  
 | 
    # chatlogEvent.cmc_name = cmc_name  
 | 
    # chatlogEvent.ip = curPlayer.GetIP()  
 | 
    # chatlogEvent.account_name = chatlogEvent.account_id  
 | 
    # chatlogEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
    # chatlogEvent.chr_level = GetScribeEvent_chr_level(curPlayer)  
 | 
    # chatlogEvent.object = tagName  
 | 
    # chatlogEvent.addinfo = addinfo  
 | 
    # WriteEvent(chatlogEvent)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
def __GetEventChatContent(content):  
 | 
    '''  
 | 
    <a color="255,255,0" href="GOTO 10000,74,60">[µØÍ¼:ĺ¹âÖ®³Ç(74,60)]</a>  
 | 
    <A color="205,0,0" onmouseover="ShowInfo ITEM,55986" DATA="07 04 01 00 B2 DA 00 00 00 01 00 01   
 | 
        28 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
 | 
        00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 3C 00 00 00 7B 27 32 38 27 3A 5B   
 | 
        27 31 30 32 33 34 27 5D 2C 27 31 39 27 3A 5B 27 33 35 34 27 2C 27 38 35 36 27 2C 27 33 35   
 | 
        34 27 2C 27 37 35 38 27 2C 27 39 35 31 27 2C 27 31 30 35 32 27 5D 7D 04 00 00 00 00 00 00   
 | 
        00 00 00 00 00 00 00 00 00 00 ">[ÉñÊ¥µÄ°ÁÊÀÖ®¹ +40]</a>  
 | 
    '''  
 | 
    tempMatch = re.search("<a color=.*?>.*?</a>", content)  
 | 
    if tempMatch:  
 | 
        tempStr = tempMatch.group()  
 | 
        markIndex = tempStr.index(">") + 1  
 | 
        repStr = tempStr[markIndex:tempStr.index("<", markIndex)]  
 | 
        content = content.replace(tempStr, repStr)  
 | 
          
 | 
    tempMatch = re.search("<A color=.*?>.*?</a>", content)  
 | 
    if tempMatch:  
 | 
        tempStr = tempMatch.group()  
 | 
        markIndex = tempStr.index(">") + 1  
 | 
        repStr = tempStr[markIndex:tempStr.index("<", markIndex)]  
 | 
        content = content.replace(tempStr, repStr)  
 | 
          
 | 
    # Ìæ»»»»ÐÐ  
 | 
    content = content.replace("\r", "")   
 | 
    content = content.replace("\n", "")   
 | 
    return content  
 | 
  
 | 
## Ð´×Ô¶¨Òåʼþ¼Ç¼  
 | 
#  @param event_name: Ê¼þÃû³Æ  
 | 
#  @param comments: ±¸×¢»ò¸½¼ÓÐÅÏ¢  
 | 
def WriteEvent_custom_events(curPlayer, event_name, comments):  
 | 
    #===========================================================================  
 | 
    # customEvent = custom_events()  
 | 
    # customEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # customEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # customEvent.event_name = event_name  
 | 
    # customEvent.session_id = GameWorld.GetSessionID(curPlayer)  
 | 
    #   
 | 
    # customEvent.ip = curPlayer.GetIP()  
 | 
    # customEvent.account_name = customEvent.account_id  
 | 
    # customEvent.account_type = GameWorld.GetAccountType(curPlayer)  
 | 
    # customEvent.chr_name = curPlayer.GetPlayerName()  
 | 
    # customEvent.chr_level = GetScribeEvent_chr_level(curPlayer)  
 | 
    # customEvent.comments = CommFunc.GetStrCutoff(comments, 255)  
 | 
    # WriteEvent(customEvent)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
#// A1 01 Íæ¼ÒµçÄÔÐÅÏ¢ #tagCMPCInfo  
 | 
#  
 | 
#struct tagCMPCInfo  
 | 
#{  
 | 
#    tagHead        Head;  
 | 
#    BYTE        PCOSLen;   
 | 
#    char        PCOS[PCOSLen];    // ²Ù×÷ϵͳ  
 | 
#    BYTE        ResolutionLen;   
 | 
#    char        Resolution[ResolutionLen];    // ·Ö±æÂÊ  
 | 
#    BYTE        BrowserLen;   
 | 
#    char        Browser[BrowserLen];    // ä¯ÀÀÆ÷  
 | 
#    BYTE        ScribeTypeLen;   
 | 
#    char        ScribeType[ScribeTypeLen];    // ¼Ç¼ÀàÐÍ  
 | 
#    BYTE        ScribeDataLen;   
 | 
#    char        ScribeData[ScribeDataLen];    // ¼Ç¼À©Õ¹ÐÅÏ¢  
 | 
#};  
 | 
def ReceiveClientPCInfo(index, clientData, tick):  
 | 
    #===========================================================================  
 | 
    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)  
 | 
    # PCOS = clientData.PCOS  
 | 
    # Resolution = clientData.Resolution  
 | 
    # Browser = clientData.Browser  
 | 
    # ScribeType = clientData.ScribeType  
 | 
    # #ScribeData = clientData.ScribeData  
 | 
    #   
 | 
    # GameWorld.DebugLog("ReceiveClientPCInfo %s" % ScribeType)  
 | 
    # GameWorld.DebugLog("    PCOS=%s" % PCOS)  
 | 
    # GameWorld.DebugLog("    Resolution=%s" % Resolution)  
 | 
    # GameWorld.DebugLog("    Browser=%s" % Browser)  
 | 
    #   
 | 
    # # ×ª»¯Îª¶Ô·½ËùÐè¸ñʽ  
 | 
    # if PCOS and "Windows" in PCOS:  
 | 
    #    PCOS = " ".join(PCOS.split(" ")[:2])  
 | 
    #   
 | 
    # # ×ª»¯Îª¶Ô·½ËùÐè¸ñʽ  
 | 
    # if Resolution:  
 | 
    #    Resolution = "%s*%s" % eval(Resolution)  
 | 
    #   
 | 
    # if ScribeType == ShareDefine.Def_UserAction_Login:  
 | 
    #    firstLogin = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FirstLogin)  
 | 
    #    if not firstLogin:  
 | 
    #        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FirstLogin, 1)  
 | 
    #        WriteEvent_entry_firstlogin(curPlayer, Browser, Resolution, PCOS)  
 | 
    #        if curPlayer.GetLV() == 1:  
 | 
    #            WriteEvent_level_up(curPlayer) # Ê׵Ƿ¢ËÍÒ»´Î1¼¶Êý¾Ý  
 | 
    #        GameWorld.DebugLog("    entry_firstlogin")  
 | 
    #          
 | 
    #    WriteEvent_login(curPlayer, Browser, Resolution, PCOS)  
 | 
    #===========================================================================  
 | 
              
 | 
    return  
 | 
  
 | 
#// A2 19 ÓÎÏ·½¨ÒéÊÕ¼¯ #tagCMAdviceSubmit  
 | 
#  
 | 
#struct    tagCMAdviceSubmit  
 | 
#{  
 | 
#    tagHead        Head;  
 | 
#    BYTE        Type;        //Ìá½»ÀàÐÍ  
 | 
#    WORD        Len;  
 | 
#    char        Content[Len];    //size = Len  
 | 
#};  
 | 
def OnSubmitBugSuggest(index, clientData, tick):  
 | 
    #===========================================================================  
 | 
    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)  
 | 
    # subType = clientData.Type  
 | 
    # content = clientData.Content  
 | 
    # eventName = Def_Custom_Events_Bug if subType == 0 else Def_Custom_Events_Suggest  
 | 
    # WriteEvent_custom_events(curPlayer, eventName, content)  
 | 
    # DataRecordPack.DR_BugSuggest(curPlayer, eventName, content)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
def GetScribeEvent_chr_level(curPlayer):  
 | 
    transCnt, showLV = GameWorld.GetClientLV(curPlayer)  
 | 
    return transCnt * 1000 + showLV  
 | 
  
 | 
  
 | 
## -------------------------------------- À©Õ¹×Ô¶¨Òå ---------------------------------------  
 | 
  
 | 
class horse_class(ScribeEvent):  
 | 
    # ×øÆï½ø½×¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(horse_class, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.bef_class_lv = 0 # ´Ë´Î½ø½×²Ù×÷ǰµÄ×øÆïµÈ½×, 0´ú±í1½×  
 | 
        self.bef_exp = 0 # ´Ë´Î½ø½×²Ù×÷ǰµÄ×øÆïµÈ½×ÐÇÊýµÄ¾ÑéÖµ  
 | 
        self.cost_item_cnt = 0 # ´Ë´Î½ø½×ÏûºÄµÄ½ø½×µÀ¾ßÊýÁ¿  
 | 
        self.aft_class_lv = 0 # ´Ë´Î½ø½×²Ù×÷ºóµÄ×øÆïµÈ½×, 0´ú±í1½×  
 | 
        self.aft_exp = 0 # ´Ë´Î½ø½×²Ù×÷ºóµÄ×øÆïµÈ½×ÐÇÊýµÄ¾ÑéÖµ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   str(self.bef_class_lv), str(self.bef_exp), str(self.cost_item_cnt),  
 | 
                   str(self.aft_class_lv), str(self.aft_exp), self.time]  
 | 
          
 | 
        return super(horse_class, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_HorseClass  
 | 
      
 | 
def WriteEvent_horse_class(curPlayer, befClassLV, befExp, costCnt, aftClassLV, aftExp):  
 | 
    ## Ð´×øÆï½ø½×¼Ç¼  
 | 
    #===========================================================================  
 | 
    # horseClass = horse_class()  
 | 
    # horseClass.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # horseClass.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # horseClass.chr_name = curPlayer.GetPlayerName()  
 | 
    # horseClass.bef_class_lv = befClassLV  
 | 
    # horseClass.bef_exp = befExp  
 | 
    # horseClass.cost_item_cnt = costCnt  
 | 
    # horseClass.aft_class_lv = aftClassLV  
 | 
    # horseClass.aft_exp = aftExp  
 | 
    # WriteEvent(horseClass)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class wing_class(ScribeEvent):  
 | 
    # ³á°ò½ø½×¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(wing_class, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.bef_class_lv = 0 # µ±Ç°³á°òµÈ½×, 0´ú±í1½×  
 | 
        self.bef_exp = 0 # ½ø½×²Ù×÷ǰµÄ×£¸£Öµ  
 | 
        self.cost_item_cnt = 0 # ´Ë´Î½ø½×ÏûºÄµÄ½ø½×µÀ¾ßÊýÁ¿  
 | 
        self.aft_class_lv = 0 # ´Ë´Î½ø½×²Ù×÷ºó³á°òµÄµÈ½×, 0´ú±í1½×  
 | 
        self.aft_exp = 0 # ½ø½×²Ù×÷ºóµÄ×£¸£Öµ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   str(self.bef_class_lv), str(self.bef_exp), str(self.cost_item_cnt),  
 | 
                   str(self.aft_class_lv), str(self.aft_exp), self.time]  
 | 
          
 | 
        return super(wing_class, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_WingClass  
 | 
      
 | 
def WriteEvent_wing_class(curPlayer, befClassLV, befExp, costCnt, aftClassLV, aftExp):  
 | 
    ## Ð´³á°ò½ø½×¼Ç¼  
 | 
    #===========================================================================  
 | 
    # wingClass = wing_class()  
 | 
    # wingClass.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # wingClass.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # wingClass.chr_name = curPlayer.GetPlayerName()  
 | 
    # wingClass.bef_class_lv = befClassLV  
 | 
    # wingClass.bef_exp = befExp  
 | 
    # wingClass.cost_item_cnt = costCnt  
 | 
    # wingClass.aft_class_lv = aftClassLV  
 | 
    # wingClass.aft_exp = aftExp  
 | 
    # WriteEvent(wingClass)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class pet_lv(ScribeEvent):  
 | 
    # ³èÎïÉý¼¶¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(pet_lv, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.bef_lv = 0 # Éý¼¶Ç°µÈ¼¶, 0´ú±í1ÐÇ  
 | 
        self.aft_lv = 0 # ´Ë´ÎÉý¼¶²Ù×÷ºóµÈ¼¶  
 | 
        self.bef_exp = 0 ## ´Ë´Î½ø½×²Ù×÷ǰµÄ¾ÑéÖµ  
 | 
        self.aft_exp = 0 ## ´Ë´Î½ø½×²Ù×÷ºóµÄ¾ÑéÖµ  
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   str(self.bef_lv), str(self.aft_lv), str(self.bef_exp), str(self.aft_exp), self.time]  
 | 
          
 | 
        return super(pet_lv, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_PetLV  
 | 
      
 | 
def WriteEvent_pet_lv(curPlayer, befLV, aftLV, befExp, aftExp):  
 | 
    ## Ð´³èÎïÉý¼¶¼Ç¼  
 | 
    #===========================================================================  
 | 
    # petLV = pet_lv()  
 | 
    # petLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # petLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # petLV.chr_name = curPlayer.GetPlayerName()  
 | 
    # petLV.bef_lv = befLV  
 | 
    # petLV.aft_lv = aftLV  
 | 
    # petLV.bef_exp = befExp  
 | 
    # petLV.aft_exp = aftExp  
 | 
    # WriteEvent(petLV)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class pet_class(ScribeEvent):  
 | 
    # ³èÎï½ø½×¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(pet_class, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.pet_name = "" # ³èÎïÃû³Æ  
 | 
        self.bef_class_lv = 0 # ²Ù×÷ǰµÄµÈ½×, 0´ú±í1½×  
 | 
        self.bef_exp = 0 # ²Ù×÷ǰµÄ×£¸£Öµ  
 | 
        self.aft_class_lv = 0 # ´Ë´Î½ø½×²Ù×÷ºóµÄµÈ½×  
 | 
        self.aft_exp = 0 # ½ø½×²Ù×÷ºóµÄ×£¸£Öµ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.pet_name, str(self.bef_class_lv), str(self.bef_exp),   
 | 
                   str(self.aft_class_lv), str(self.aft_exp), self.time]  
 | 
          
 | 
        return super(pet_class, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_PetClass  
 | 
      
 | 
def WriteEvent_pet_class(curPlayer, petName, befClassLV, befExp, aftClassLV, aftExp):  
 | 
    ## Ð´³èÎï½ø½×¼Ç¼  
 | 
    #===========================================================================  
 | 
    # petLV = pet_class()  
 | 
    # petLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # petLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # petLV.chr_name = curPlayer.GetPlayerName()  
 | 
    # petLV.pet_name = petName  
 | 
    # petLV.bef_class_lv = befClassLV  
 | 
    # petLV.bef_exp = befExp  
 | 
    # petLV.aft_class_lv = aftClassLV  
 | 
    # petLV.aft_exp = aftExp  
 | 
    # WriteEvent(petLV)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class give_money(ScribeEvent):  
 | 
    # »õ±Ò²ú³ö¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(give_money, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.source = "" # À´Ô´  
 | 
        self.type_name = "" # »õ±ÒÃû³Æ  
 | 
        self.addMoney = 0 # ²ú³öÊýÁ¿  
 | 
        self.total_money = 0 # Ê£Óà»õ±Ò×ÜÁ¿  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.source, self.type_name, str(self.addMoney), str(self.total_money), self.time]  
 | 
          
 | 
        return super(give_money, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_GiveMoney  
 | 
      
 | 
def WriteEvent_give_money(curPlayer, source, typeName, addMoney, totalMoney):  
 | 
    ## Ð´»õ±Ò²ú³ö¼Ç¼  
 | 
    #===========================================================================  
 | 
    # giveMoney = give_money()  
 | 
    # giveMoney.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # giveMoney.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # giveMoney.chr_name = curPlayer.GetPlayerName()  
 | 
    # giveMoney.source = source  
 | 
    # giveMoney.type_name = typeName  
 | 
    # giveMoney.addMoney = addMoney  
 | 
    # giveMoney.total_money = totalMoney  
 | 
    # WriteEvent(giveMoney)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class pay_money(ScribeEvent):  
 | 
    # »õ±ÒÏûºÄ¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(pay_money, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.reason_name = "" # Ïû·Ñµã  
 | 
        self.type_name = "" # »õ±ÒÃû³Æ  
 | 
        self.costmoney = 0 # ÏûºÄÊýÁ¿  
 | 
        self.total_money = 0 # Ê£Óà»õ±Ò×ÜÁ¿  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.reason_name, self.type_name, str(self.costmoney), str(self.total_money), self.time]  
 | 
          
 | 
        return super(pay_money, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_PayMoney  
 | 
      
 | 
def WriteEvent_pay_money(curPlayer, reasonName, typeName, costMoney, totalMoney):  
 | 
    ## Ð´»õ±ÒÏûºÄ¼Ç¼  
 | 
    #===========================================================================  
 | 
    # payMoney = pay_money()  
 | 
    # payMoney.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # payMoney.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # payMoney.chr_name = curPlayer.GetPlayerName()  
 | 
    # payMoney.reason_name = reasonName  
 | 
    # payMoney.type_name = typeName  
 | 
    # payMoney.costmoney = costMoney  
 | 
    # payMoney.total_money = totalMoney  
 | 
    # WriteEvent(payMoney)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class equip_item(ScribeEvent):  
 | 
    # Íæ¼Ò×°±¸Í³¼Æ  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(equip_item, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.equip_place = 0 # ×°±¸Î»  
 | 
        self.class_lv = 0 # ×°±¸½×Êý, 0ÐÂÊÖ½×, 1-1½×  
 | 
        self.item_quality = 0 # Æ·ÖÊ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   str(self.equip_place), str(self.class_lv), str(self.item_quality), self.time]  
 | 
          
 | 
        return super(equip_item, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_EquipItem  
 | 
      
 | 
def WriteEvent_orange_equip(curPlayer, place, classLV, quality):  
 | 
    ## Ð´Íæ¼Ò×°±¸Í³¼Æ  
 | 
    #===========================================================================  
 | 
    # equipItem = equip_item()  
 | 
    # equipItem.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # equipItem.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # equipItem.chr_name = curPlayer.GetPlayerName()  
 | 
    # equipItem.equip_place = place  
 | 
    # equipItem.class_lv = classLV  
 | 
    # equipItem.item_quality = quality  
 | 
    # WriteEvent(equipItem)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class item_record(ScribeEvent):  
 | 
    # ÎïÆ·Á÷Ë®¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(item_record, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.rec_type = 0 # »ñµÃ¡¢Ê§È¥  
 | 
        self.event_name = "" # Ê¼þµãÃû³Æ  
 | 
        self.item_name = "" # ÎïÆ·Ãû  
 | 
        self.item_count = 0 # ÎïÆ·ÊýÁ¿  
 | 
        self.guid = "" # ÎïÆ·Î¨Ò»ID  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   str(self.rec_type), self.event_name, self.item_name, str(self.item_count), self.guid, self.time]  
 | 
          
 | 
        return super(item_record, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_ItemRecord  
 | 
      
 | 
def WriteEvent_item_record(curPlayer, recType, operateType, itemData, operatorExtra):  
 | 
    EventReport(ShareDefine.Def_UserAction_ItemRecord, "Flow=%s&OperateType=%s&ItemData=%s&OperatorExtra=%s"   
 | 
                % (recType, operateType,   
 | 
                   json.dumps(itemData, ensure_ascii=False),   
 | 
                   json.dumps(operatorExtra, ensure_ascii=False)), curPlayer)  
 | 
    return  
 | 
    #===============================================================================================  
 | 
    # ''' @todo: ÎïÆ·Á÷Ë®¼Ç¼  
 | 
    #    @param recType: 1-»ñµÃ£»-1-ʧȥ  
 | 
    # '''  
 | 
    # itemRecord = item_record()  
 | 
    # itemRecord.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # itemRecord.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # itemRecord.chr_name = curPlayer.GetPlayerName()  
 | 
    # itemRecord.rec_type = recType  
 | 
    # itemRecord.event_name = eventName  
 | 
    # itemRecord.item_name = itemName  
 | 
    # itemRecord.item_count = itemCount  
 | 
    # itemRecord.guid = guid  
 | 
    # WriteEvent(itemRecord)  
 | 
    # return  
 | 
    #===============================================================================================  
 | 
  
 | 
class coin_to_gold(ScribeEvent):  
 | 
    # ¶Ò»»µãȯ  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(coin_to_gold, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.order_id = "" # ¶©µ¥ID  
 | 
        self.event_name = "" # Ê¼þµãÃû³Æ  
 | 
        self.coin = 0 # ¶Ò»»µãȯ  
 | 
        self.coin_prize = 0 # ½±Àøµãȯ  
 | 
        self.gold = 0 # »ñµÃ×êʯ  
 | 
        self.total_gold = 0 # µ±Ç°×Ü×êʯÊý  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.order_id, self.event_name, str(self.coin), str(self.coin_prize), str(self.gold),   
 | 
                   str(self.total_gold), self.time]  
 | 
          
 | 
        return super(coin_to_gold, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_CoinToGold  
 | 
     
 | 
def WriteEvent_coin_to_gold(curPlayer, orderID, eventName, coin, prizeCoin, addGold):  
 | 
    return  
 | 
    #===========================================================================  
 | 
    # coinToGold = coin_to_gold()  
 | 
    # coinToGold.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # coinToGold.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # coinToGold.chr_name = curPlayer.GetPlayerName()  
 | 
    # coinToGold.order_id = orderID  
 | 
    # coinToGold.event_name = eventName  
 | 
    # coinToGold.coin = coin  
 | 
    # coinToGold.coin_prize = prizeCoin  
 | 
    # coinToGold.gold = addGold  
 | 
    # coinToGold.total_gold = curPlayer.GetGold()  
 | 
    # WriteEvent(coinToGold)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class god_weapon_lv(ScribeEvent):  
 | 
    # Éñ±øÉý¼¶¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(god_weapon_lv, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.god_weapon_name = "" # Éñ±øÃû³Æ  
 | 
        self.bef_lv = 0 # ´Ë´Î²Ù×÷ǰµÄµÈ¼¶, 0´ú±í0¼¶, 1´ú±í+1¼¶  
 | 
        self.bef_exp = 0 # ´Ë´Î²Ù×÷ǰµÄ¾ÑéÖµ  
 | 
        self.cost_item_cnt = 0 # ´Ë´ÎÏûºÄµÄµÀ¾ßÊýÁ¿  
 | 
        self.aft_lv = 0 # ´Ë´Î²Ù×÷ºóµÄµÈ¼¶, 0´ú±í0¼¶, 1´ú±í+1¼¶  
 | 
        self.aft_exp = 0 # ´Ë´Î½ø½×²Ù×÷ºóµÄ¾ÑéÖµ  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.god_weapon_name, str(self.bef_lv), str(self.bef_exp), str(self.cost_item_cnt),  
 | 
                   str(self.aft_lv), str(self.aft_exp), self.time]  
 | 
          
 | 
        return super(god_weapon_lv, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_GodWeaponLV  
 | 
      
 | 
def WriteEvent_god_weapon_lv(curPlayer, godWeaponName, befLV, befExp, costCnt, aftLV, aftExp):  
 | 
    ## Ð´Éñ±øÉý¼¶¼Ç¼  
 | 
    #===========================================================================  
 | 
    # godWeaponLV = god_weapon_lv()  
 | 
    # godWeaponLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # godWeaponLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # godWeaponLV.chr_name = curPlayer.GetPlayerName()  
 | 
    # godWeaponLV.god_weapon_name = godWeaponName  
 | 
    # godWeaponLV.bef_lv = befLV  
 | 
    # godWeaponLV.bef_exp = befExp  
 | 
    # godWeaponLV.cost_item_cnt = costCnt  
 | 
    # godWeaponLV.aft_lv = aftLV  
 | 
    # godWeaponLV.aft_exp = aftExp  
 | 
    # WriteEvent(godWeaponLV)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class rune_lv(ScribeEvent):  
 | 
    # ·ûÓ¡Éý¼¶¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(rune_lv, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.rune_name = "" # ·ûÓ¡Ãû³Æ  
 | 
        self.cost_rune_money = 0 # ´Ë´ÎÏûºÄµÄ·ûÓ¡¾«»ª  
 | 
        self.aft_lv = 0 # ´Ë´Î²Ù×÷ºóµÄµÈ¼¶, 0´ú±í1¼¶  
 | 
        self.aft_rune_money = 0 # ´Ë´Î²Ù×÷ºóµÄ·ûÓ¡¾«»ª  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.rune_name, str(self.cost_rune_money), str(self.aft_lv), str(self.aft_rune_money), self.time]  
 | 
          
 | 
        return super(rune_lv, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_RuneLV  
 | 
      
 | 
def WriteEvent_rune_lv(curPlayer, runeName, costruneMoney, aftLV, aftruneMoney):  
 | 
    ## Ð´·ûÓ¡Éý¼¶¼Ç¼  
 | 
    #===========================================================================  
 | 
    # runeLV = rune_lv()  
 | 
    # runeLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # runeLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # runeLV.chr_name = curPlayer.GetPlayerName()  
 | 
    # runeLV.rune_name = runeName  
 | 
    # runeLV.cost_rune_money = costruneMoney  
 | 
    # runeLV.aft_lv = aftLV  
 | 
    # runeLV.aft_rune_money = aftruneMoney  
 | 
    # WriteEvent(runeLV)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class change_name(ScribeEvent):  
 | 
    # ¸ÄÃû¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(change_name, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.old_name = "" # ÔÀ´µÄÃû×Ö  
 | 
        self.new_name = "" # ÐµÄÃû×Ö  
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.old_name, self.new_name, self.time]  
 | 
          
 | 
        return super(change_name, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_ChangeName  
 | 
      
 | 
def WriteEvent_change_name(curPlayer, oldName, newName):  
 | 
    ## ¸ÄÃû¼Ç¼  
 | 
    #===========================================================================  
 | 
    # changeName = change_name()  
 | 
    # changeName.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # changeName.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # changeName.chr_name = curPlayer.GetPlayerName()  
 | 
    # changeName.old_name = oldName  
 | 
    # changeName.new_name = newName      
 | 
    # WriteEvent(changeName)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class add_zhenqi(ScribeEvent):  
 | 
    # ÕæÆø²ú³ö¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(add_zhenqi, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.eventName = "" # À´Ô´  
 | 
        self.eventData = "" # À´Ô´¸½¼ÓÐÅÏ¢  
 | 
        self.addValue = 0 # ²ú³öÊýÁ¿  
 | 
        self.totalValue = 0 # Ê£Óà×ÜÁ¿  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.eventName, str(self.eventData), str(self.addValue), str(self.totalValue), self.time]  
 | 
          
 | 
        return super(add_zhenqi, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_AddZhenqi  
 | 
      
 | 
def WriteEvent_add_zhenqi(curPlayer, eventName, eventData, addValue, totalValue):  
 | 
    ## ÕæÆø²ú³ö¼Ç¼  
 | 
    #===========================================================================  
 | 
    # if eventData:  
 | 
    #    eventData = str(eventData)  
 | 
    #    eventData = eventData.replace("\"", "'")  
 | 
    #    eventData = eventData.replace(",", "|")  
 | 
    #      
 | 
    # addZhenQi = add_zhenqi()  
 | 
    # addZhenQi.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # addZhenQi.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # addZhenQi.chr_name = curPlayer.GetPlayerName()  
 | 
    # addZhenQi.eventName = eventName  
 | 
    # addZhenQi.eventData = eventData  
 | 
    # addZhenQi.addValue = addValue  
 | 
    # addZhenQi.totalValue = totalValue  
 | 
    # WriteEvent(addZhenQi)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class lost_zhenqi(ScribeEvent):  
 | 
    # ÕæÆøÏûºÄ¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(lost_zhenqi, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.eventName = "" # ÏûºÄµã  
 | 
        self.eventData = "" # ÏûºÄµã¸½¼ÓÐÅÏ¢  
 | 
        self.lostValue = 0 # ÏûºÄÊýÁ¿  
 | 
        self.totalValue = 0 # Ê£Óà×ÜÁ¿  
 | 
          
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
  
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.eventName, str(self.eventData), str(self.lostValue), str(self.totalValue), self.time]  
 | 
          
 | 
        return super(lost_zhenqi, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_LostZhenqi  
 | 
      
 | 
def WriteEvent_lost_zhenqi(curPlayer, eventName, eventData, lostValue, totalValue):  
 | 
    ## ÕæÆøÏûºÄ¼Ç¼  
 | 
    #===========================================================================  
 | 
    # if eventData:  
 | 
    #    eventData = str(eventData)  
 | 
    #    eventData = eventData.replace("\"", "'")  
 | 
    #    eventData = eventData.replace(",", "|")  
 | 
    #      
 | 
    # lostZhenQi = lost_zhenqi()  
 | 
    # lostZhenQi.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # lostZhenQi.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # lostZhenQi.chr_name = curPlayer.GetPlayerName()  
 | 
    # lostZhenQi.eventName = eventName  
 | 
    # lostZhenQi.eventData = eventData  
 | 
    # lostZhenQi.lostValue = lostValue  
 | 
    # lostZhenQi.totalValue = totalValue  
 | 
    # WriteEvent(lostZhenQi)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
class coat_lv(ScribeEvent):  
 | 
    # Ê±×°Éý¼¶¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(coat_lv, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.coat_name = "" # Ê±×°Ãû³Æ  
 | 
        self.bef_lv = 0 # ´Ë´Î½ø½×²Ù×÷ǰµÄµÈ¼¶  
 | 
        self.bef_exp = 0 # ´Ë´Î½ø½×²Ù×÷ǰµÄ¾ÑéÖµ  
 | 
        self.cost_item_cnt = 0 # ´Ë´ÎÏûºÄµÄµÀ¾ßÊýÁ¿  
 | 
        self.aft_lv = 0 # ´Ë´Î²Ù×÷ºóµÄµÈ¼¶, 0´ú±í0¼¶, 1´ú±í+1¼¶  
 | 
        self.aft_exp = 0 #´Ë´Î½ø½×²Ù×÷ºóµÄ¾ÑéÖµ  
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.coat_name, str(self.bef_lv), str(self.bef_exp), str(self.cost_item_cnt), str(self.aft_lv), str(self.aft_exp), self.time]  
 | 
          
 | 
        return super(coat_lv, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_CoatLV  
 | 
      
 | 
def WriteEvent_coat_lv(curPlayer, coatName, befLV, befExp, costItemCnt, aftLV, aftExp):  
 | 
    return  
 | 
    ## Ð´Ê±×°Éý¼¶¼Ç¼  
 | 
    #===========================================================================  
 | 
    # coatLV = coat_lv()  
 | 
    # coatLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # coatLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # coatLV.chr_name = curPlayer.GetPlayerName()  
 | 
    # coatLV.coat_name = coatName  
 | 
    # coatLV.bef_lv = befLV  
 | 
    # coatLV.bef_exp = befExp  
 | 
    # coatLV.cost_item_cnt = costItemCnt  
 | 
    # coatLV.aft_lv = aftLV  
 | 
    # coatLV.aft_exp = aftExp  
 | 
    # WriteEvent(coatLV)  
 | 
    #===========================================================================  
 | 
  
 | 
  
 | 
  
 | 
class wingskin_lv(ScribeEvent):  
 | 
    # Ê±×°Éý¼¶¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(wingskin_lv, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.skin_name = "" # »Ã»¯³á°òÃû³Æ  
 | 
        self.bef_lv = 0 # ´Ë´Î½ø½×²Ù×÷ǰµÄµÈ¼¶  
 | 
        self.bef_exp = 0 # ´Ë´Î½ø½×²Ù×÷ǰµÄ¾ÑéÖµ  
 | 
        self.cost_item_cnt = 0 # ´Ë´ÎÏûºÄµÄµÀ¾ßÊýÁ¿  
 | 
        self.aft_lv = 0 # ´Ë´Î²Ù×÷ºóµÄµÈ¼¶, 0´ú±í0¼¶, 1´ú±í+1¼¶  
 | 
        self.aft_exp = 0 #´Ë´Î½ø½×²Ù×÷ºóµÄ¾ÑéÖµ  
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.skin_name, str(self.bef_lv), str(self.bef_exp), str(self.cost_item_cnt), str(self.aft_lv), str(self.aft_exp), self.time]  
 | 
          
 | 
        return super(wingskin_lv, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_WingSkinLV  
 | 
      
 | 
def WriteEvent_wingskin_lv(curPlayer, skinName, befLV, befExp, costItemCnt, aftLV, aftExp):  
 | 
    ## Ð´»Ã»¯³á°òÉý¼¶¼Ç¼  
 | 
    #===========================================================================  
 | 
    # wingskinLV = wingskin_lv()  
 | 
    # wingskinLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # wingskinLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # wingskinLV.chr_name = curPlayer.GetPlayerName()  
 | 
    # wingskinLV.skin_name = skinName  
 | 
    # wingskinLV.bef_lv = befLV  
 | 
    # wingskinLV.bef_exp = befExp  
 | 
    # wingskinLV.cost_item_cnt = costItemCnt  
 | 
    # wingskinLV.aft_lv = aftLV  
 | 
    # wingskinLV.aft_exp = aftExp  
 | 
    # WriteEvent(wingskinLV)  
 | 
    #===========================================================================  
 | 
    return  
 | 
  
 | 
  
 | 
class horseskin_lv(ScribeEvent):  
 | 
    # Ê±×°Éý¼¶¼Ç¼  
 | 
    def __init__(self):  
 | 
        #±ØÐë×Ö¶Î  
 | 
        super(horseskin_lv, self).__init__()  
 | 
        self.account_id = "" # Õ˺ŠID£¬Æ½Ì¨ÏÂΨһ£¬ÇÒÖÕÉú²»±ä  
 | 
        self.chr_name = "" # Íæ¼Ò½ÇÉ«Ãû  
 | 
          
 | 
        self.skin_name = "" # »Ã»¯×øÆïÃû³Æ  
 | 
        self.bef_lv = 0 # ´Ë´Î½ø½×²Ù×÷ǰµÄµÈ¼¶  
 | 
        self.bef_exp = 0 # ´Ë´Î½ø½×²Ù×÷ǰµÄ¾ÑéÖµ  
 | 
        self.cost_item_cnt = 0 # ´Ë´ÎÏûºÄµÄµÀ¾ßÊýÁ¿  
 | 
        self.aft_lv = 0 # ´Ë´Î²Ù×÷ºóµÄµÈ¼¶, 0´ú±í0¼¶, 1´ú±í+1¼¶  
 | 
        self.aft_exp = 0 #´Ë´Î½ø½×²Ù×÷ºóµÄ¾ÑéÖµ  
 | 
        #·Ç±ØÐë×Ö¶Î  
 | 
          
 | 
        #¼´Ê±ÊǷDZØÐë×Ö¶ÎÒ²Ó¦¸Ã´«ËÍ£¬¸÷×Ö¶ÎÓÃ,·Ö¸ô£¬²¢ÇÒÓÃË«ÒýºÅ°üº¬£¬²Î¿¼¸ñʽ'"1","","","12314"'  
 | 
        return  
 | 
      
 | 
    def GetCurEventStr(self):  
 | 
        if not self.time:  
 | 
            self.time = GameWorld.GetCurrentDataTimeStr()  
 | 
        tmpList = [self.product_slug, self.agent_name, self.gameserver_no, self.account_id, self.chr_name,   
 | 
                   self.skin_name, str(self.bef_lv), str(self.bef_exp), str(self.cost_item_cnt), str(self.aft_lv), str(self.aft_exp), self.time]  
 | 
          
 | 
        return super(horseskin_lv, self).GetEventStr(tmpList)  
 | 
      
 | 
    def GetScribeEventName(self): return ShareDefine.Def_UserAction_HorseSkinLV  
 | 
      
 | 
def WriteEvent_horseskin_lv(curPlayer, skinName, befLV, befExp, costItemCnt, aftLV, aftExp):  
 | 
    ## Ð´»Ã»¯×øÆïÉý¼¶¼Ç¼  
 | 
    #===========================================================================  
 | 
    # horseSkinLV = horseskin_lv()  
 | 
    # horseSkinLV.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID()))  
 | 
    # horseSkinLV.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID())  
 | 
    # horseSkinLV.chr_name = curPlayer.GetPlayerName()  
 | 
    # horseSkinLV.skin_name = skinName  
 | 
    # horseSkinLV.bef_lv = befLV  
 | 
    # horseSkinLV.bef_exp = befExp  
 | 
    # horseSkinLV.cost_item_cnt = costItemCnt  
 | 
    # horseSkinLV.aft_lv = aftLV  
 | 
    # horseSkinLV.aft_exp = aftExp  
 | 
    # WriteEvent(horseSkinLV)  
 | 
    #===========================================================================  
 | 
    return  
 | 
## ---------------------------------------------------------------------------------------  
 | 
  
 | 
  
 | 
#------------------------2018-02-09  ÐµÄÊý¾Ýͳ¼Æ--------------------------------  
 | 
def WriteEvent_Entry(curPlayer, step):  
 | 
    EventReport(ShareDefine.Def_UserAction_LostModel, "Step=%s&Flag=%s"%(step, ShareDefine.Def_UserAction_CreateRole), curPlayer)  
 | 
      
 | 
def WriteEvent_VIP(curPlayer):  
 | 
    EventReport(ShareDefine.Def_UserAction_VIPLvUP, "VIPLevel=%s"%curPlayer.GetVIPLv(), curPlayer)  
 | 
      
 | 
def WriteEvent_FightPower(curPlayer):  
 | 
    EventReport(ShareDefine.Def_UserAction_FightPower, "FightPower=%s"%curPlayer.GetFightPower(), curPlayer)  
 | 
      
 | 
      
 |