| | |
| | | import DataRecordPack
|
| | | import PlayerControl
|
| | | import ItemControler
|
| | | import Operate_EquipStar
|
| | | import ItemCommon
|
| | | import ChConfig
|
| | | import ShareDefine
|
| | | import ChItem
|
| | | import PlayerActivity
|
| | | import NPCCommon
|
| | |
|
| | | import random
|
| | | import time
|
| | |
|
| | | #// B5 13 拍卖行上架拍品 #tagCMSellAuctionItem
|
| | |
| | | curItem = playerPack.GetAt(itemIndex)
|
| | | if curItem.IsEmpty():
|
| | | return
|
| | | if not curItem.GetIsBind():
|
| | | if not ItemControler.GetIsAuctionItem(curItem):
|
| | | GameWorld.Log("非拍品,绑定无法上架!", playerID)
|
| | | return
|
| | | itemGUID = curItem.GetGUID()
|
| | |
| | | curTime = int(time.time())
|
| | | if curTime - auctionItemCreateTime > IpyGameDataPY.GetFuncCfg("AuctionItem", 1) * 3600:
|
| | | GameWorld.DebugLog("拍品已过期,无法上架!auctionItemCreateTime=%s" % (GameWorld.ChangeTimeNumToStr(auctionItemCreateTime)), playerID)
|
| | | ChItem.DoLogic_PlayerUseAuctionItem(curPlayer, curItem)
|
| | | ItemControler.SetIsAuctionItem(curItem, False, curPlayer)
|
| | | return
|
| | |
|
| | | QueryGameServer_AuctionHouse(playerID, "AddAuctionItemQuery", [itemIndex, itemGUID, itemID])
|
| | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | itemGUID = clientData.ItemGUID
|
| | | biddingPrice = clientData.BiddingPrice
|
| | | if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, biddingPrice):
|
| | | if not PlayerControl.HaveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, biddingPrice):
|
| | | return
|
| | | QueryGameServer_AuctionHouse(playerID, "BidAuctionItemQuery", [itemGUID, biddingPrice])
|
| | | return
|
| | |
| | | itemID = result[0]
|
| | | __DoPlayerBidAuctionItem(curPlayer, itemGUID, biddingPrice, itemID)
|
| | |
|
| | | elif queryType == "EquipStarAutoBuy":
|
| | | Operate_EquipStar.GameServer_EquipStarAutoBuy(curPlayer, result)
|
| | | |
| | | return
|
| | |
|
| | | def __DoPlayerBidAuctionItem(curPlayer, itemGUID, biddingPrice, itemID):
|
| | |
| | |
|
| | | # 地图只处理扣除竞价价格
|
| | | infoDict = {"ItemID":itemID, "ItemGUID":itemGUID, "BiddingPrice":biddingPrice}
|
| | | if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, biddingPrice, ChConfig.Def_Cost_AuctionBid, infoDict):
|
| | | if not PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, biddingPrice, ChConfig.Def_Cost_AuctionBid, infoDict):
|
| | | return
|
| | |
|
| | | DR_AuctionHouse(curPlayer, "PlayerPayBid", infoDict)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | QueryGameServer_AuctionHouse(playerID, "BidAuctionItem", [itemGUID, biddingPrice])
|
| | | |
| | | PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_AuctionItem, 1)
|
| | | return
|
| | |
|
| | | def __DoPlayerSellAuctionItem(curPlayer, itemIndex, itemGUID, itemID):
|
| | |
| | | curItem = playerPack.GetAt(itemIndex)
|
| | | if curItem.IsEmpty():
|
| | | return
|
| | | if not curItem.GetIsBind():
|
| | | if not ItemControler.GetIsAuctionItem(curItem):
|
| | | GameWorld.Log("非拍品,无法上架!", playerID)
|
| | | return
|
| | | curItemGUID = curItem.GetGUID()
|
| | |
| | | if curPlayer and not familyID:
|
| | | ItemCommon.DelItem(curPlayer, curItem, curItem.GetCount())
|
| | | else:
|
| | | if not curItem.GetIsBind():
|
| | | if not ItemControler.GetIsAuctionItem(curItem):
|
| | | GameWorld.Log("非拍品,绑定无法上架!", playerID)
|
| | | curItem.Clear()
|
| | | continue
|
| | |
| | | GameWorld.DebugLog("上架拍品: playerID=%s,familyID=%s,%s" % (playerID, familyID, drDict), playerID)
|
| | |
|
| | | QueryGameServer_AuctionHouse(playerID, "AddAuctionItem", addAuctionItemList)
|
| | | if curPlayer:
|
| | | PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_AuctionItem, 1)
|
| | | return
|
| | |
|
| | | def DoAddSystemAuctionItem(sysAuctionItemList):
|
| | | ''' 上架系统拍品
|
| | | @param sysAuctionItemList: [物品ID, [阶,颜色,[部位, ...],是否套装,星级,[可选参数职业, ...]], ...]
|
| | | '''
|
| | | GameWorld.Log("上架系统拍品: %s" % sysAuctionItemList)
|
| | | |
| | | isAuctionItem = True
|
| | | auctionItemList = []
|
| | | for sysAuctionItemInfo in sysAuctionItemList:
|
| | | itemCount = 1 # 系统拍品,默认上架一个
|
| | | if type(sysAuctionItemInfo) == int:
|
| | | itemID = sysAuctionItemInfo
|
| | | elif type(sysAuctionItemInfo) == list and len(sysAuctionItemInfo) == 2:
|
| | | itemID, itemCount = sysAuctionItemInfo
|
| | | elif type(sysAuctionItemInfo) == list and len(sysAuctionItemInfo) >= 5:
|
| | | classLV, color, placeList, isSuit, star = sysAuctionItemInfo[:5]
|
| | | if star:
|
| | | # 有星级的代表非境界装备,暂不处理,之后有需要扩展
|
| | | randEquipIDList = []
|
| | | else:
|
| | | itemJobList = sysAuctionItemInfo[5] if len(sysAuctionItemInfo) > 5 else [] |
| | | randEquipIDList = NPCCommon.__GetEquipIDList(0, classLV, color, isSuit, placeList, itemJobList, findType="SystemAuctionItem")
|
| | | if not randEquipIDList:
|
| | | GameWorld.ErrLog("系统拍品找不到可上架的装备! %s" % str(sysAuctionItemInfo))
|
| | | continue
|
| | | itemID = random.choice(randEquipIDList)
|
| | | else:
|
| | | GameWorld.ErrLog("系统拍品格式错误,无法上架! %s" % str(sysAuctionItemInfo))
|
| | | continue
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
|
| | | if not ipyData:
|
| | | GameWorld.ErrLog("非拍卖物品,无法上架系统拍品! itemID=%s" % (itemID))
|
| | | continue
|
| | | curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem)
|
| | | if not curItem:
|
| | | continue
|
| | | auctionItemList.append([curItem])
|
| | | if not auctionItemList:
|
| | | return
|
| | | __DoAddAuctionItem(None, auctionItemList)
|
| | | return
|
| | |
|
| | | #// B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem
|
| | | #
|
| | | #struct tagCMUnsellAuctionItem
|
| | | #{
|
| | | # tagHead Head;
|
| | | # char ItemGUID[40];
|
| | | #};
|
| | | def OnUnsellAuctionItem(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | itemGUID = clientData.ItemGUID
|
| | | |
| | | # 直接发邮件,这里就不验证背包了
|
| | | # #验证背包空间
|
| | | # if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem):
|
| | | # PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
| | | # return
|
| | | |
| | | QueryGameServer_AuctionHouse(playerID, "UnsellAuctionItem", [itemGUID])
|
| | | return
|
| | |
|
| | | def DR_AuctionHouse(curPlayer, eventName, drDict):
|