#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#  
 | 
#  
 | 
##@package PlayerBourseTube.py  
 | 
#  
 | 
# @todo:Íæ¼Ò½»Ò×Ëù µØÍ¼·þÎñÆ÷´¦ÀíÄ£¿é  
 | 
#  
 | 
# @author xmnathan  
 | 
# @date 2010-01-01 21:30  
 | 
# @version 1.6  
 | 
# @note:  
 | 
# @change: "2014-05-21 20:00" xmnathan Íæ¼Ò½»Ò×Ëù  
 | 
# @change: "2014-06-03 13:00" xmnathan ÈÕÖ¾Êä³ö¸Ä³ÉDebug  
 | 
# @change: "2014-07-14 18:30" hxp Ôö¼ÓÿÈÕ»îÔ¾¶È  
 | 
# @change: "2015-01-14 00:30" hxp Ôö¼Ó½»Ò×ʼþ»ã±¨  
 | 
# @change: "2015-08-24 11:00" xdh Ôö¼Ó½»Ò×´ÎÊý³É¾Í  
 | 
# @change: "2017-03-27 16:00" hxp Ôö¼Ó¹ó×å½µµÍ½»Ò×ËùÊÖÐø·ÑÌØÈ¨  
 | 
#------------------------------------------------------------------------------   
 | 
#"""Version = 2017-03-27 16:00"""  
 | 
#------------------------------------------------------------------------------   
 | 
import IPY_GameWorld  
 | 
import GameWorld  
 | 
import ChConfig  
 | 
import ShareDefine  
 | 
import NetPackCommon  
 | 
import PlayerControl  
 | 
import ItemCommon  
 | 
import ItemControler  
 | 
import ChMapToGamePyPack  
 | 
import PlayerVip  
 | 
import PlayerSuccess  
 | 
import IpyGameDataPY  
 | 
  
 | 
#------------------------------------------------------------------------------   
 | 
#// B5 01 ½»Ò×ËùÍæ¼ÒÉϼÜÎïÆ·#tagCMPYPlayerSellBourseItem  
 | 
#struct    tagCMPYPlayerSellBourseItem  
 | 
#{  
 | 
#    tagHead Head;  
 | 
#    BYTE        ItemIndex;    //ÎïÆ·ÔÚ±³°üÖÐË÷Òý  
 | 
#    WORD        Count;        //³öÊÛÊýÁ¿  
 | 
#    BYTE        PriceType;    //³öÊÛ¼Û¸ñÀàÐÍ  
 | 
#    DWORD        PriceCount;    //³öÊÛ¼Û¸ñ  
 | 
#    char        Pwd[8];        //½»Ò×ÃÜÂë  
 | 
#};  
 | 
def OnPlayerSellBourseItem(index, clientData, tick):  
 | 
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)  
 | 
    GameWorld.DebugLog("Bourse### PlayerSellBourseItem in, PlayerID %s"%curPlayer.GetPlayerID())  
 | 
    playerPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)  
 | 
    itemIndex = clientData.ItemIndex  
 | 
    curItem = playerPack.GetAt(itemIndex)  
 | 
    if curItem.IsEmpty():  
 | 
        #´íÎóµÄ±³°üË÷Òý  
 | 
        GameWorld.DebugLog("Bourse### PlayerSellBourseItem ItemIndex = %s IsEmpty"%itemIndex)  
 | 
        return  
 | 
    if curItem.GetIsBind() or (not curItem.GetCanTrade()):  
 | 
        #°ó¶¨ÎïÆ·²»¿É½»Ò×  
 | 
        GameWorld.DebugLog("Bourse### PlayerSellBourseItem ItemIndex = %s IsBind"%itemIndex)  
 | 
        return  
 | 
    if curItem.GetIsSuite():  
 | 
        GameWorld.DebugLog("Bourse### PlayerSellBourseItem ItemIndex = %s IsSuite"%itemIndex)  
 | 
        return  
 | 
      
 | 
    if clientData.PriceCount <= 0:  
 | 
        GameWorld.DebugLog("Bourse### PlayerSellBourseItem PriceCount <= 0"%itemIndex)  
 | 
        return    
 | 
  
 | 
    password = clientData.Pwd  
 | 
    #ÅжÏvipȨÏÞ  
 | 
    if password and not PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_BoursePwd):  
 | 
        GameWorld.DebugLog("Bourse### PlayerSellBourseItem VIPȨÏÞ²»×㣬²»ÄÜÓÃÉϼÜÃÜÂë")  
 | 
        return  
 | 
      
 | 
    #·¢°üµ½GameServer//02 01 Ñ¯ÎÊÊÇ·ñ¿ÉÒÔÌí¼ÓÍæ¼Ò½»Ò×ËùÎïÆ·#tagMGCheckAddPlayerBourseItem  
 | 
    sendPack = ChMapToGamePyPack.tagMGCheckAddPlayerBourseItem()  
 | 
    sendPack.PlayerID = curPlayer.GetPlayerID()  
 | 
    sendPack.ItemIndex = itemIndex  
 | 
    sendPack.Count = clientData.Count  
 | 
    sendPack.PriceType = clientData.PriceType  
 | 
    sendPack.PriceCount = clientData.PriceCount  
 | 
    sendPack.Pwd = password  
 | 
    NetPackCommon.SendPyPackToGameServer(sendPack)  
 | 
    GameWorld.DebugLog("Bourse### PlayerSellBourseItem out")  
 | 
    return  
 | 
  
 | 
##//02 01 ²éÑ¯Íæ¼ÒÊÇ·ñ¿ÉÒÔÌí¼Ó½»Ò×ËùÎïÆ·½á¹û#tagGMCheckAddPlayerBourseItemResult  
 | 
#  @param curPackData:·â°ü½á¹¹Ìå  
 | 
#  @param tick:ʱ¼ä´Á  
 | 
#  @return None  
 | 
def OnGMCheckAddPlayerBourseItemResult(curPackData, tick):  
 | 
    GameWorld.DebugLog("Bourse### GMCheckAddPlayerBourseItemResult in, PlayerID %s"%curPackData.PlayerID)  
 | 
    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID)  
 | 
    if not curPlayer:  
 | 
        GameWorld.DebugLog("Bourse### GMCheckAddPlayerBourseItemResult curPlayer no found, PlayerID %s"%curPackData.PlayerID)  
 | 
        return  
 | 
    if not curPackData.Result:  
 | 
        #Íæ¼Ò½»Ò×ËùÎïÆ·ÒÑ´ïÉÏÏÞ£¬ÎÞ·¨¼ÌÐøÌí¼Ó  
 | 
        PlayerControl.NotifyCode(curPlayer, 'GeRen_liubo_318640', [])  
 | 
        GameWorld.DebugLog('Bourse### GMCheckAddPlayerBourseItemResult False')  
 | 
        return  
 | 
      
 | 
    playerPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)  
 | 
    curItem = playerPack.GetAt(curPackData.ItemIndex)  
 | 
    if curItem.IsEmpty():  
 | 
        #´íÎóµÄ±³°üË÷Òý  
 | 
        GameWorld.DebugLog('Bourse### GMCheckAddPlayerBourseItemResult ItemIndex=%s IsEmpty'%curPackData.ItemIndex)  
 | 
        return  
 | 
      
 | 
    minPrice = IpyGameDataPY.GetFuncCfg('BoursePriceLimit')  
 | 
    maxPrice = IpyGameDataPY.GetFuncCfg('BoursePriceLimit', 2)  
 | 
      
 | 
    if curPackData.PriceCount < minPrice or curPackData.PriceCount > maxPrice:  
 | 
        GameWorld.DebugLog('Bourse### GMCheckAddPlayerBourseItemResult PriceCount = %s err'%curPackData.PriceCount)  
 | 
        return    
 | 
      
 | 
    singleItem = curItem.GetItem()  
 | 
    #if singleItem.GetPackCount() == curPackData.Count:  
 | 
    #·¢°üµ½GameServer//02 02 Íæ¼Ò½»Ò×ËùÌí¼Ó³öÊÛµÄÎïÆ·#tagMGAddPlayerSellBourseItem  
 | 
    sendPack = ChMapToGamePyPack.tagMGAddPlayerSellBourseItem()  
 | 
    sendPack.PlayerID = curPackData.PlayerID  
 | 
    sendPack.PlayerName = curPlayer.GetPlayerName()  
 | 
    sendPack.OperateInfo = curPlayer.GetOperateInfo()  
 | 
    sendPack.ItemGUID = singleItem.GetGUID()  
 | 
    sendPack.Count = curPackData.Count  
 | 
    #roleItem  
 | 
    sendPack.PriceType = curPackData.PriceType  
 | 
    sendPack.PriceCount = curPackData.PriceCount  
 | 
    sendPack.ItemTypeID = singleItem.GetItemTypeID()  
 | 
    sendPack.UserData = singleItem.GetUserData()  
 | 
    sendPack.UserDataLen = len(sendPack.UserData)  
 | 
    sendPack.Type =  singleItem.GetType()  
 | 
    sendPack.EquipPlace =  singleItem.GetEquipPlace()  
 | 
    sendPack.LV =  singleItem.GetLV()  
 | 
    sendPack.UseLV =  singleItem.GetUseLV()  
 | 
    sendPack.JobLimit =  singleItem.GetJobLimit()  
 | 
    sendPack.SuiteID = singleItem.GetSuiteID()  
 | 
    sendPack.ItemQuality = singleItem.GetItemQuality()  
 | 
    sendPack.ItemColor = singleItem.GetItemColor()  
 | 
    sendPack.Pwd = curPackData.Pwd  
 | 
    sendPack.EquipGS = ItemCommon.GetEquipGearScore(curItem)  
 | 
    itemName = singleItem.GetName().decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())  
 | 
    sendPack.ItemName = itemName  
 | 
    NetPackCommon.SendPyPackToGameServer(sendPack)  
 | 
    #¿ÛÎïÆ·  
 | 
    ItemCommon.DelItem(curPlayer, curItem, curPackData.Count, True, ChConfig.ItemDel_AddBourseItem, isForceDR=True)  
 | 
      
 | 
    GameWorld.DebugLog('Bourse### GMCheckAddPlayerBourseItemResult out  1 ItemGUID=%s'%sendPack.ItemGUID)  
 | 
    return  
 | 
  
 | 
  
 | 
#------------------------------------------------------------------------------   
 | 
##//1B 03 ½»Ò×ËùÍæ¼ÒÈ¡ÏÂÕýÔÚ³öÊÛµÄÎïÆ·»ò³öÊÛÊÕÒæ#tagCMPlayerRecaptureBourseItem  
 | 
#tagCMPlayerRecaptureBourseItem  
 | 
#struct tagCMPlayerRecaptureBourseItem  
 | 
#{  
 | 
#    tagHead    Head;  
 | 
#    char    ItemGUID[40];  
 | 
#};  
 | 
##1B 03 ½»Ò×ËùÍæ¼ÒÈ¡ÏÂÕýÔÚ³öÊÛµÄÎïÆ·»ò³öÊÛÊÕÒæ#tagCMPlayerRecaptureBourseItem  
 | 
#  @param index:Íæ¼ÒË÷Òý  
 | 
#  @param tick:ʱ¼ä´Á  
 | 
#  @return None  
 | 
def OnPlayerRecaptureBourseItem(index, tick):  
 | 
    clientPack = IPY_GameWorld.IPY_CMPlayerRecaptureBourseItem()  
 | 
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)  
 | 
    GameWorld.DebugLog("Bourse### PlayerRecaptureBourseItem in, PlayerID %s"%curPlayer.GetPlayerID())  
 | 
    #»ñÈ¡±³°ü¿Õ¸ñ  
 | 
    itemPackSpace = ItemControler.GetItemPackSpace(curPlayer,IPY_GameWorld.rptItem)  
 | 
    #·¢°üµ½GameServer//02 05 ½»Ò×ËùÍæ¼ÒÈ¡ÏÂÕýÔÚ³öÊÛµÄÎïÆ·»ò³öÊÛÊÕÒæ#tagMGPlayerRecaptureBourseItem  
 | 
    sendPack = ChMapToGamePyPack.tagMGPlayerRecaptureBourseItem()  
 | 
    sendPack.PlayerID = curPlayer.GetPlayerID()  
 | 
    sendPack.ItemGUID = clientPack.GetItemGUID()  
 | 
    sendPack.PackSpaceCount = itemPackSpace    #//µ±Ç°±³°üÊ£Óà¿Õ¼ä  
 | 
    GameWorld.DebugLog("Bourse### PlayerRecaptureBourseItem,ItemGUID %s, itemPackSpace = %s"%(sendPack.ItemGUID, itemPackSpace))  
 | 
    NetPackCommon.SendPyPackToGameServer(sendPack)  
 | 
    GameWorld.DebugLog("Bourse### PlayerRecaptureBourseItem out")  
 | 
    return  
 | 
#------------------------------------------------------------------------------   
 | 
##//02 03 Íæ¼Ò»ñÈ¡½»Ò×ËùÎïÆ·½á¹û#tagGMGiveBourseItem  
 | 
#  @param curPackData:·â°ü½á¹¹Ìå  
 | 
#  @param tick:ʱ¼ä´Á  
 | 
#  @return None  
 | 
def OnGMGiveBourseItem(curPackData, tick):  
 | 
    GameWorld.DebugLog("Bourse### GMGiveBourseItem in, PlayerID %s"%curPackData.PlayerID)  
 | 
    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID)  
 | 
    if not curPlayer:  
 | 
        GameWorld.DebugLog("Bourse### GMGiveBourseItem , PlayerID %s no found "%curPackData.PlayerID)  
 | 
        return  
 | 
      
 | 
    #´´½¨ÐÂÎïÆ·  
 | 
    curCreateItem = ItemCommon.CreateSingleItem(curPackData.ItemID)  
 | 
    if not curCreateItem:  
 | 
        return  
 | 
      
 | 
    #if curPackData.PriceCount > 0:  
 | 
#        #ÐèÒª¸¶Ç®¹ºÂò²ÅÄÜ»ñµÃÎïÆ·  
 | 
#        infoDict = {ChConfig.Def_Cost_Reason_SonKey:curCreateItem.GetName()}  
 | 
#        PlayerControl.PayMoney(curPlayer, curPackData.PriceType, curPackData.PriceCount, ChConfig.Def_Cost_BourseBuy, infoDict)  
 | 
          
 | 
        # ¹ºÂòÎïÆ·Ëã½»Ò×Ëù»îÔ¾¶È  
 | 
        # »îÔ¾¶È  
 | 
        #PlayerActivity.AddActivityFinishCnt(curPlayer, ShareDefine.ActivityNum_FinishTrade)  
 | 
         
 | 
              
 | 
    #¸øÎïÆ·  
 | 
    ItemControler.SetItemCount(curCreateItem, curPackData.Count)  
 | 
      
 | 
    if curCreateItem.GetPackCount() == 1:  
 | 
        ItemControler.SetItemIsBind(curCreateItem, False)  
 | 
        ItemCommon.SetEquipGearScore(curCreateItem, curPackData.EquipGS)  
 | 
        curCreateItem.SetUserData(curPackData.UserData, curPackData.UserDataLen)  
 | 
          
 | 
    GameWorld.DebugLog("Bourse### GMGiveBourseItem curPackData.ItemID %s"%(curPackData.ItemID))  
 | 
    #·ÅÈëÎïÆ·  
 | 
    ItemControler.PlayerItemControler(curPlayer).PutInItem(IPY_GameWorld.rptItem, curCreateItem,   
 | 
                                                           event=[ChConfig.ItemGive_BourseItem, True, {}])  
 | 
    GameWorld.DebugLog("Bourse### GMGiveBourseItem out")  
 | 
      
 | 
    return   
 | 
  
 | 
  
 | 
def OnGivePlayerBourseGains(curPlayer, msgList):  
 | 
    ## Íæ¼Ò»ñµÃ½»Ò×ËùÊÕÒæ  
 | 
    moneyType, priceCount, itemName, soldOutTime, itemInfo = msgList  
 | 
    bourseTaxPer = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_BourseTax)  
 | 
    chargeMin = IpyGameDataPY.GetFuncCfg('BourseCharge')  
 | 
    taxMoney = max(chargeMin, priceCount * bourseTaxPer / ShareDefine.Def_MaxRateValue)  
 | 
    giveMoney = priceCount - taxMoney  
 | 
    if giveMoney <0:  
 | 
        GameWorld.ErrLog('    ½»Ò×Ëù¸ø½»Ò×ÊÕÒæÒì³£ priceCount=%s, taxMoney=%s'%(priceCount, taxMoney), curPlayer.GetID())  
 | 
        return  
 | 
    GameWorld.DebugLog('·¢ËͲ¹³¥Óʼþ ÎïÆ·ÊÛ³ö Ç®·¢¸øÍæ¼Ò')  
 | 
  
 | 
    PlayerControl.SendMailByKey('BourseSell', [curPlayer.GetPlayerID()], [], [itemName, priceCount, taxMoney, giveMoney], giveMoney)  
 | 
#      
 | 
#    addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Gains"}  
 | 
#    PlayerControl.GiveMoney(curPlayer, moneyType, giveMoney, ChConfig.Def_GiveMoney_Bourse, addDataDict)   
 | 
      
 | 
      
 | 
    resultInfo = str([soldOutTime, taxMoney, giveMoney, itemInfo])  
 | 
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0,  
 | 
                                    "GivePlayerBourseGainsResult", resultInfo, len(resultInfo))  
 | 
    return  
 | 
  
 | 
##//02 04 Íæ¼Ò»ñµÃ½»Ò×ËùÊÕÒæ#tagGMGivePlayerBourseGains  
 | 
#  @param curPackData:·â°ü½á¹¹Ìå  
 | 
#  @param tick:ʱ¼ä´Á  
 | 
#  @return None  
 | 
def OnGMGivePlayerBourseGains(curPackData, tick):  
 | 
#    GameWorld.DebugLog("Bourse### GMGivePlayerBourseGains in, PlayerID %s"%curPackData.PlayerID)  
 | 
#    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID)  
 | 
#    if not curPlayer:  
 | 
#        GameWorld.DebugLog("Bourse### GMGivePlayerBourseGains , PlayerID %s no found "%curPackData.PlayerID)  
 | 
#        return  
 | 
#    BourseCharge  = ReadChConfig.GetEvalChConfig("BourseCharge")  
 | 
#    chargeRate, chargeMin= BourseCharge[1]  
 | 
#    if poundageReducePer > 0:  
 | 
#        chargeRate = int(chargeRate * max(0, 100 - poundageReducePer) / 100.0)  
 | 
#        GameWorld.DebugLog("¹ó×å½µµÍ½»Ò×ÊÖÐø·Ñ: poundageReducePer=%s,chargeRate=%s" % (poundageReducePer, chargeRate))  
 | 
#    chargeMoney = max(chargeMin, curPackData.MoneyCount*chargeRate/10000)  
 | 
#      
 | 
#    #¸øÍæ¼Ò½»Ò×ËùÊÕÒæ  
 | 
#    addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Gains"}  
 | 
#    PlayerControl.GiveMoney(curPlayer, curPackData.MoneyType, curPackData.MoneyCount, ChConfig.Def_GiveMoney_Bourse, addDataDict)   
 | 
#    GameWorld.DebugLog("Bourse### GMGivePlayerBourseGains out,MoneyType = %s  MoneyCount = %s chargeRate = %s chargeMoney %s"   
 | 
#                       % (curPackData.MoneyType, curPackData.MoneyCount, chargeRate, chargeMoney))   
 | 
#    # ½»Ò×Ëù»ñÈ¡ÊÕÒæ£¬»ã±¨½»Ò××êʯ  
 | 
#    playerName = curPlayer.GetPlayerName()  
 | 
#    leftGold = curPlayer.GetGold()  
 | 
#    eventParam = "RoleID=%s,Price=%s,TradeType=Get,LeftGold=%s" \  
 | 
#                    % (playerName, curPackData.MoneyCount, leftGold)  
 | 
#    EventReport.EventReport(ShareDefine.Def_UserAction_TradeGold, eventParam, curPlayer)  
 | 
#            
 | 
#    #¿Û³ýÍæ¼Ò½»Ò×ÊÖÐø·Ñ  
 | 
#    PlayerControl.PayMoney(curPlayer, curPackData.MoneyType, chargeMoney, ChConfig.Def_Cost_BourseCharge)  
 | 
#      
 | 
#    # »ØÊÕÊÕÒæËã½»Ò×Ëù»îÔ¾¶È  
 | 
#    # »îÔ¾¶È  
 | 
#    PlayerActivity.AddActivityFinishCnt(curPlayer, ShareDefine.ActivityNum_FinishTrade)  
 | 
#    # Íê³ÉX´ÎÅÄÂôÐн»Ò×³É¾Í  
 | 
#    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Exchange, 1)  
 | 
    return   
 | 
  
 | 
#------------------------------------------------------------------------------   
 | 
#// B3 02 ½»Ò×Ëù¹ºÂòÎïÆ·#tagCMPYBuyBourseItem  
 | 
#struct    tagCMPYBuyBourseItem  
 | 
#{  
 | 
#    tagHead    Head;  
 | 
#    char    ItemGUID[40];  
 | 
#    char        Pwd[8];        //½»Ò×ÃÜÂë  
 | 
#};  
 | 
  
 | 
##///B5 02 ½»Ò×Ëù¹ºÂòÎïÆ·#tagCMPYBuyBourseItem  
 | 
#  @param index:Íæ¼ÒË÷Òý  
 | 
#  @param tick:ʱ¼ä´Á  
 | 
#  @return None  
 | 
def OnPlayerBuyBourseItem(index, clientData, tick):  
 | 
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)  
 | 
    GameWorld.DebugLog("Bourse### PlayerBuyBourseItem in, PlayerID %s"%curPlayer.GetPlayerID())  
 | 
    itemPackSpace = ItemControler.GetItemPackSpace(curPlayer,IPY_GameWorld.rptItem)  
 | 
    if itemPackSpace <= 0:  
 | 
        #ûÓпռ乺ÂòÎïÆ·  
 | 
        GameWorld.DebugLog("Bourse### PlayerBuyBourseItem , PlayerID %s no space"%curPlayer.GetPlayerID())  
 | 
        return  
 | 
      
 | 
    #//02 03 Íæ¼ÒѯÎʹºÂò½»Ò×ËùÎïÆ·#tagMGCheckBuyBourseItem  
 | 
    sendPack = ChMapToGamePyPack.tagMGCheckBuyBourseItem()  
 | 
    sendPack.PlayerID = curPlayer.GetPlayerID()  
 | 
    sendPack.ItemGUID = clientData.ItemGUID  
 | 
    sendPack.Pwd = clientData.Pwd  
 | 
    GameWorld.DebugLog("Bourse### PlayerBuyBourseItem send ItemGUID %s"%sendPack.ItemGUID)  
 | 
    NetPackCommon.SendPyPackToGameServer(sendPack)  
 | 
    GameWorld.DebugLog("Bourse### PlayerBuyBourseItem out")  
 | 
    return  
 | 
  
 | 
##//02 02 Íæ¼Ò¹ºÂò½»Ò×ËùÎïÆ·²éѯ½á¹û#tagGMCheckBuyBourseItemResult  
 | 
#  @param curPackData:·â°ü½á¹¹Ìå  
 | 
#  @param tick:ʱ¼ä´Á  
 | 
#  @return None  
 | 
def OnGMCheckBuyBourseItemResult(curPackData, tick):  
 | 
    GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult in, PlayerID %s"%curPackData.PlayerID)  
 | 
    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(curPackData.PlayerID)  
 | 
    if not curPlayer:  
 | 
        GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult , PlayerID %s no found "%curPackData.PlayerID)  
 | 
        return  
 | 
     
 | 
    if curPackData.PriceCount != 0:  
 | 
        if not PlayerControl.HaveMoney(curPlayer, curPackData.PriceType, curPackData.PriceCount):  
 | 
            GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult , ItemGUID %s  no enough money %s"%(curPackData.ItemGUID, curPackData.PriceCount))  
 | 
            return  
 | 
        if curPackData.PriceType == IPY_GameWorld.TYPE_Price_Gold_Money:  
 | 
            if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, curPackData.PriceCount):  
 | 
                curBourseMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)  
 | 
                GameWorld.Log("Bourse### GMCheckBuyBourseItemResult , ItemGUID %s no enough bourse money! priceCount=%s,curBourseMoney=%s"   
 | 
                              % (curPackData.ItemGUID, curPackData.PriceCount, curBourseMoney), curPlayer.GetPlayerID())  
 | 
                return  
 | 
        #Ïȸ¶Ç®ÔÙ¸øÂô¼ÒÊÕÒæ  
 | 
        infoDict = {"ItemGUID":curPackData.ItemGUID}  
 | 
        PlayerControl.PayMoney(curPlayer, curPackData.PriceType, curPackData.PriceCount, ChConfig.Def_Cost_BourseBuy, infoDict)  
 | 
          
 | 
        #//02 04 Íæ¼ÒÈ·ÈϹºÂò½»Ò×ËùÎïÆ·#tagMGBuyBourseItemSure  
 | 
        sendPack = ChMapToGamePyPack.tagMGBuyBourseItemSure()  
 | 
        sendPack.PlayerID = curPackData.PlayerID  
 | 
        sendPack.PlayerName = curPlayer.GetPlayerName()  
 | 
        sendPack.ItemGUID = curPackData.ItemGUID  
 | 
        NetPackCommon.SendPyPackToGameServer(sendPack)  
 | 
      
 | 
    GameWorld.DebugLog("Bourse### GMCheckBuyBourseItemResult out,  PriceCount %s"%curPackData.PriceCount)  
 | 
    return  
 | 
  
 | 
  
 | 
      
 | 
  
 |