#!/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 import IpyGameDataPY #=============================================================================== ##·¢ËÍʼþ¼Ç¼¸øEventShell # @param eventTypeStr: ʼþÀàÐͱêʶ # @param dataDict: ʼþ×Öµä # @return None def SendEventPack(eventTypeStr, dataDict, curPlayer=None): if GameWorld.IsBattleServer(): GameWorld.DebugLogEx("Õ½¶··þÎñÆ÷Ôݲ»×öÁ÷Ïò¼Ç¼") return if curPlayer: if not GameWorld.IsNormalPlayer(curPlayer): return pid = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PlayerFromPID) if pid: 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() lv = curPlayer.GetLV() gold = curPlayer.GetGold() dataDict = {'Type':'login', 'IP':str(ip), 'AccID':accID, 'MapID':mapID, 'Name':name, 'LV':lv, 'Gold':gold, 'LoginTime':str(loginTime), 'LogoutTime':''} 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() gold = curPlayer.GetGold() mapID = GameWorld.GetMap().GetMapID() dataDict = {'Type':'logout', 'IP':ip, 'AccID':accID, 'MapID':mapID, 'Name':name, 'LV':lv, 'Gold':gold, 'LoginTime':str(loginTime), 'LogoutTime':str(logoutTime)} #·¢ËÍ·â°ü SendEventPack("LogInOut", dataDict, curPlayer) return def DR_OnlineTimeToday(curPlayer, onlineTime): ## ½ñÈÕÀÛ¼ÆÔÚÏßʱ³¤ dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 'AccID':curPlayer.GetAccID(), 'OnlineTime':onlineTime} SendEventPack("OnlineTimeToday", dataDict) 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: Íæ¼ÒʵÀý # @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_Task(curPlayer, taskGroup, taskID, eventName="", drDict={}): ## ÈÎÎñÁ÷Ïò dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 'AccID':curPlayer.GetAccID(), 'TaskID':taskID, 'TaskGroup':taskGroup, 'eventName':eventName} dataDict.update(drDict) SendEventPack("Task_%s" % taskGroup, dataDict, curPlayer) return def DR_MainLevelPass(curPlayer, lvID): ## Ö÷Ï߹ؿ¨¹ý¹Ø dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 'AccID':curPlayer.GetAccID(), 'lvID':lvID} SendEventPack("MainLevelPass", dataDict, curPlayer) return def DR_FBPass(curPlayer, mapID, funcLineID, drDict={}): ## ¸±±¾¹ý¹Ø dataDict = {'PlayerID':curPlayer.GetPlayerID(), 'PlayerName':curPlayer.GetPlayerName(), 'AccID':curPlayer.GetAccID(), 'MapID':mapID, 'LineID':funcLineID} dataDict.update(drDict) SendEventPack("FBPass_%s" % mapID, 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 IpyGameDataPY.GetFuncEvalCfg("MoneyRecord", 3): #GameWorld.DebugLogEx("ÏûºÄ²»¼Ç¼µÄ»õ±ÒÀàÐÍ: %s", moneyType) return moneyRecordDict = IpyGameDataPY.GetFuncEvalCfg("MoneyRecord", 4, {}) if moneyType in moneyRecordDict: recordSet = moneyRecordDict[moneyType] if moneyCount < recordSet: #GameWorld.DebugLogEx("ÏûºÄ¹ýÉÙ²»¼Ç¼µÄ»õ±ÒÀàÐÍ: %s,moneyCount=%s < %s", moneyType, moneyCount, recordSet) 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) #½ð×Ó 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 IpyGameDataPY.GetFuncEvalCfg("MoneyRecord", 1): #GameWorld.DebugLogEx("»ñµÃ²»¼Ç¼µÄ»õ±ÒÀàÐÍ: %s", moneyType) return moneyRecordDict = IpyGameDataPY.GetFuncEvalCfg("MoneyRecord", 2, {}) if moneyType in moneyRecordDict: recordSet = moneyRecordDict[moneyType] if moneyCount < recordSet: #GameWorld.DebugLogEx("»ñµÃ¹ýÉÙ²»¼Ç¼µÄ»õ±ÒÀàÐÍ: %s,moneyCount=%s < %s", moneyType, moneyCount, recordSet) 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) #½ð×Ó 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