#!/usr/bin/python # -*- coding: GBK -*- # # ##@package PlayerCompensationTube.py # # @todo:GM²¹³¥¹ÜÀí µØÍ¼´¦Àí # # @author xmnathan # @date 2010-01-01 10:00 # @version 1.4 # @note: # @change: "2014-09-29 13:00" xmnathan GM²¹³¥¹ÜÀí # @change: "2014-11-05 10:50" xmnathan Áìȡʧ°ÜÒ²»Ø°üGameServer£¬ÓÃÓÚÖØÖÃÁìȡ״̬ # @change: "2016-07-25 22:00" hxp Ôö¼ÓÁìÈ¡Óʼþʼþ»ã±¨ # @change: "2017-05-04 12:00" hxp Ôö¼Ó·ûÓ¡ÐéÄâ±³°üÖ§³Ö #------------------------------------------------------------------------------ #"""Version = 2017-05-04 12:00""" #------------------------------------------------------------------------------ import IPY_GameWorld import GameWorld import ShareDefine import ChPyNetSendPack import NetPackCommon import ItemCommon import ItemControler import ChMapToGamePyPack import ReadChConfig import EventReport import ChConfig import PlayerControl ##A5 3B ÇëÇóÁìÈ¡²¹³¥#tagCMRequestCompensation # @param index, clientPack, tick # @return None def OnCMRequestCompensation(index, clientPack, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if not curPlayer: return GameWorld.DebugLog("#OnCMRequestCompensation in, PlayerID %s GUID %s"%(curPlayer.GetPlayerID(), clientPack.GUID)) #±³°üûλÖà itemPackSpace = ItemControler.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem) #·¢ËÍÏà¹ØÊý¾Ý sendPack = ChMapToGamePyPack.tagMGRequestCompensation() sendPack.GUID = clientPack.GUID sendPack.PlayerID = curPlayer.GetPlayerID() sendPack.PackSpaceCount = itemPackSpace NetPackCommon.SendPyPackToGameServer(sendPack) return ##03 02 Íæ¼ÒÁìÈ¡²¹³¥½á¹û#tagGMRequestCompensationResult # @param curPackData, tick # @return None def OnGMRequestCompensationResult(curPackData, tick): GameWorld.DebugLog("OnGMRequestCompensationResult in") curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID) if not curPlayer: #·¢ËÍÏà¹ØÊý¾Ý »Ø±¨²¹³¥·¢·Å½á¹û sendPack = ChMapToGamePyPack.tagMGGiveCompensationResult() sendPack.GUID = curPackData.GUID sendPack.PlayerID = curPackData.PlayerID sendPack.CompensationType = curPackData.CompensationType sendPack.Result = 0 NetPackCommon.SendPyPackToGameServer(sendPack) GameWorld.DebugLog(" PlayerID %s no found "%curPackData.PlayerID) return needPackSpaceDict = {} isPackSpaceEnough = True # ÏÈ»ã×ÜÎïÆ·ËùÊô±³°ü for i in xrange(curPackData.Count): curPackItem = curPackData.Items[i] itemID = curPackItem.ItemID curItemData = GameWorld.GetGameData().GetItemByTypeID(itemID) if not curItemData: continue packType = ChConfig.GetItemPackType(curItemData.GetType()) needSpace = ItemControler.GetItemNeedPackCount(packType, curItemData, curPackItem.Count) needPackSpaceDict[packType] = needPackSpaceDict.get(packType, 0) + needSpace GameWorld.DebugLog(" needPackSpaceDict=%s" % str(needPackSpaceDict)) for packType, needSpace in needPackSpaceDict.items(): if needSpace > ItemCommon.GetItemPackSpace(curPlayer, packType, needSpace): PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [packType]) isPackSpaceEnough = False break #±³°ü¿Õ¼ä²»×ã if not isPackSpaceEnough: GameWorld.DebugLog(" itemPack no space") sendMCPack = ChPyNetSendPack.tagMCGiveCompensationResult() sendMCPack.GUID = curPackData.GUID sendMCPack.Result = 0 NetPackCommon.SendFakePack(curPlayer, sendMCPack) #·¢ËÍÏà¹ØÊý¾Ý »Ø±¨²¹³¥·¢·Å½á¹û sendPack = ChMapToGamePyPack.tagMGGiveCompensationResult() sendPack.GUID = curPackData.GUID sendPack.PlayerID = curPackData.PlayerID sendPack.CompensationType = curPackData.CompensationType sendPack.Result = 0 NetPackCommon.SendPyPackToGameServer(sendPack) return for i in xrange(curPackData.Count): curPackItem = curPackData.Items[i] itemID = curPackItem.ItemID if ItemControler.GetAppointItemRealID(itemID): #¶¨ÖÆÎïÆ· ItemControler.GivePlayerItem(curPlayer, itemID, curPackItem.Count, curPackItem.IsBind, [IPY_GameWorld.rptItem], False, showSysInfo=False, event=[ChConfig.ItemGive_Mail, False, {"MailGUID":curPackData.GUID}]) continue curCreateItem = ItemCommon.CreateSingleItem(itemID, curPackItem.Count, curPackItem.IsBind) if not curCreateItem: GameWorld.ErrLog("OnGMRequestCompensationResult CreateSingleItem %s Err "%itemID) continue ##UserData°üº¬ÁË×·¼ÓÊôÐÔ²»ÍêÕû£¬ÕâÀïÐèÒª²¹Æë if curPackItem.UserDataLen: UserDataDict = eval(curPackItem.UserData) #ÉèÖÃUserData UserData = "%s"%UserDataDict curCreateItem.SetUserData(UserData, len(UserData)) ItemCommon.MakeEquipGS(curCreateItem) #·ÅÈëÍæ¼Ò±³°ü ItemControler.PlayerItemControler(curPlayer).PutInItem(IPY_GameWorld.rptItem, curCreateItem, event=[ChConfig.ItemGive_Mail, False, {"MailGUID":curPackData.GUID}]) moneySource = curPackData.MoneySource + ChConfig.Def_GiveMoney_Unknown # ´æÖµÊ±ÎªbyteÀàÐÍ£¬Ê¹ÓÃʱÐ軹ԭ»ØÀ´ if curPackData.Gold != 0: PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, curPackData.Gold, moneySource) if curPackData.GoldPaper != 0: PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, curPackData.GoldPaper, moneySource) if curPackData.Silver != 0: PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, curPackData.Silver, moneySource) #·¢ËÍÏà¹ØÊý¾Ý »Ø±¨²¹³¥·¢·Å½á¹û sendPack = ChMapToGamePyPack.tagMGGiveCompensationResult() sendPack.GUID = curPackData.GUID sendPack.PlayerID = curPackData.PlayerID sendPack.CompensationType = curPackData.CompensationType sendPack.Result = 1 NetPackCommon.SendPyPackToGameServer(sendPack) #¸æË߿ͻ§¶Ë²¹³¥ÒÑÁìÈ¡ sendMCPack = ChPyNetSendPack.tagMCGiveCompensationResult() sendMCPack.GUID = curPackData.GUID sendMCPack.Result = 1 NetPackCommon.SendFakePack(curPlayer, sendMCPack) #=========================================================================== # #ÁìÈ¡²¹³¥Ê¼þ¼Ç¼ # Text = curPackData.Text # #%s<$_$>%s # sender, title, content = Text.split("<$_$>") # #Ä£°å±àºÅ[%s,%s] # if "" in content: # mailContentList = content.split("") # mailTemplateNO = GameWorld.ToIntDef(mailContentList[0][14:], None) # EventMailInfo = ReadChConfig.GetEvalChConfig("EventMailInfo") # if mailTemplateNO not in EventMailInfo: # return # title, content = EventMailInfo[mailTemplateNO] # # mailParamStr = mailContentList[1] # mailParamStr = mailParamStr.replace(" ", "") # if mailParamStr.startswith("[") and mailParamStr.endswith("]") and len(mailParamStr) > 2: # content = content % tuple(eval(mailParamStr)) # # comments = "%s: %s, %s; %s" % (title, curPackData.GUID, eventItemInfo, content) # EventReport.WriteEvent_custom_events(curPlayer, EventReport.Def_Custom_Events_GetMail, comments) #=========================================================================== return