#!/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-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:
|
if not GameWorld.IsNormalPlayer(curPlayer):
|
return
|
pid = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PlayerFromPID)
|
dataDict["pid"] = pid
|
dataDict["fightPower"] = PlayerControl.GetFightPower(curPlayer)
|
dataDict["PlayerLV"] = curPlayer.GetLV()
|
dataDict["IP"] = curPlayer.GetIP()
|
dataDict["time"] = str(datetime.datetime.today()).split(".")[0]
|
|
dataStr = str(dataDict)
|
GameWorld.GetGameWorld().EventShell_SendEventEx(eventTypeStr, len(eventTypeStr), dataStr, len(dataStr))
|
return
|
|
## 怫
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @return: None
|
def DR_PlayerLogin(curPlayer):
|
accID = curPlayer.GetAccID()
|
ip = curPlayer.GetIP()
|
loginTime = curPlayer.GetLoginTime()
|
name = curPlayer.GetName()
|
mapID = GameWorld.GetMap().GetMapID()
|
lineID = GameWorld.GetGameWorld().GetLineID()
|
|
dataDict = {'Type':'login', 'IP':str(ip), 'AccID':accID, 'mapID':mapID, 'lineID':lineID,
|
'Name':name, 'LoginTime':str(loginTime), 'LogoutTime':'', 'MFPFightPower':GetMFPFightPowerInfo(curPlayer),
|
'LV':curPlayer.GetLV(), 'TotalExp':PlayerControl.GetPlayerTotalExp(curPlayer)}
|
|
if GameWorld.IsCrossServer():
|
regCrossZoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBZoneID)
|
regCrossMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBMapID)
|
regCrossLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBFuncLine)
|
dataDict.update({"RegCrossZoneID":regCrossZoneID, "RegCrossMapID":regCrossMapID, "RegCrossLineID":regCrossLineID})
|
|
#·¢ËÍ·â°ü
|
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),
|
'TotalExp':PlayerControl.GetPlayerTotalExp(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
|
|
def DR_OnLinePlayerCount(playerCount):
|
## ·þÎñÆ÷ÔÚÏßÈËÊý
|
# @param playerCount: ÈËÊý
|
dataDict = {'OnLinePlayerCount':playerCount}
|
SendEventPack("OnLinePlayerCount", dataDict)
|
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
|
|
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())
|
|
if addDict.get('orderID'):
|
GameWorld.SendGameError("GameWarning", "CTGError:%s - %s"%(errorInfo, dataDict))
|
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: Íæ¼ÒʵÀý
|
# @return: {}
|
def __GetFuncDRDict(curPlayer):
|
drDict = {}
|
|
# ¹Ù¾ô½×¼¶¡¢×£¸£Öµ
|
offBlessValue = 0
|
offRank = curPlayer.GetOfficialRank()
|
drDict["Official"] = [offRank, offBlessValue]
|
|
return drDict
|
|
## Íæ¼ÒÉý¼¶
|
# @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
|
|
##ÀۼƵǽÀñ°ü
|
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
|
|
## 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_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 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 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 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.GetMoneyReal(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 == ShareDefine.TYPE_Price_PayCoin:
|
SendEventPack("UsePayCoin", 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.GetMoneyReal(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 == ShareDefine.TYPE_Price_PayCoin:
|
SendEventPack("GivePayCoin", dataDict, curPlayer)
|
|
#×Ô¶¨Òå»õ±Ò
|
elif moneyType in ShareDefine.TYPE_Price_CurrencyDict:
|
SendEventPack("GiveCurrency_%s" % moneyType, dataDict)
|
|
return
|
|
## »ñµÃ½ðǮʧ°Ü
|
def DR_GiveMoneyError(curPlayer, priceType, value, giveType, addDataDict):
|
dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),
|
'AccID':curPlayer.GetAccID(), "GiveType":giveType, "GiveValue":value, "AddDataDict":addDataDict}
|
SendEventPack("GiveMoneyError_%s" % priceType, dataDict, curPlayer)
|
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 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 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
|
|
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
|
|
def DR_MailSend(playerID, GUID, addDict={}):
|
## Óʼþ·¢ËÍÁ÷Ïò
|
dataDict = {'PlayerID':playerID, 'GUID':GUID}
|
dataDict.update(addDict)
|
#·¢ËÍ·â°ü
|
SendEventPack("MailSend", dataDict)
|
return
|
|
def DR_MailGiveSuccess(playerID, GUID):
|
## ÓʼþÁìÈ¡Á÷Ïò
|
dataDict = {'PlayerID':playerID, 'GUID':GUID}
|
#·¢ËÍ·â°ü
|
SendEventPack("MailGiveSuccess", dataDict)
|
return
|
|
def DR_MailDel(playerID, GUID, eventName):
|
## Óʼþɾ³ýÁ÷Ïò
|
dataDict = {'PlayerID':playerID, 'GUID':GUID, 'eventName':eventName}
|
#·¢ËÍ·â°ü
|
SendEventPack("MailDel", dataDict)
|
return
|
|
def DR_ServerMail(GUID, eventName, addDict={}):
|
## È«·þÓʼþÁ÷Ïò
|
dataDict = {'GUID':GUID, "eventName":eventName}
|
dataDict.update(addDict)
|
SendEventPack("MailServerMail", dataDict)
|
return
|
|
def DR_CreateRole(playerData):
|
dataDict = {'PlayerID':playerData.PlayerID, 'AccID':playerData.AccID, 'PlayerName':playerData.PlayerName, "Job":playerData.Job}
|
#·¢ËÍ·â°ü
|
SendEventPack("CreateRole", dataDict)
|
return
|
|