📄 bidmonitor.lua
字号:
--[[ BeanCounter Addon for World of Warcraft(tm). Version: 3.5.0.0914 (Platypus) Revision: $Id: BidMonitor.lua 827 2006-04-18 07:42:44Z vindicator $ BidMonitor - Monitors auction bids License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program(see GPL.txt); if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.--]]--------------------------------------------------------------------------------- Function Imports-------------------------------------------------------------------------------local nilSafe = BeanCounter.NilSafe;--------------------------------------------------------------------------------- Function Prototypes-------------------------------------------------------------------------------local postPlaceAuctionBidHook;local addPendingBid;local removePendingBid;local onEventHook;local onBidAccepted;local onBidFailed;local debugPrint;--------------------------------------------------------------------------------- Data Members-------------------------------------------------------------------------------local PendingBids = {};--------------------------------------------------------------------------------------------------------------------------------------------------------------function BidMonitor_OnLoad() Stubby.RegisterFunctionHook("PlaceAuctionBid", 50, postPlaceAuctionBidHook)end--------------------------------------------------------------------------------- Called after PlaceAuctionBid()-------------------------------------------------------------------------------function postPlaceAuctionBidHook(_, _, listType, index, bid) local name, texture, count, quality, canUse, level, minBid, minIncrement, buyoutPrice, bidAmount, highBidder, owner = GetAuctionItemInfo(listType, index); local timeLeft = GetAuctionItemTimeLeft(listType, index); if (name and count and bid) then addPendingBid(name, count, bid, owner, (bid == buyoutPrice), highBidder, timeLeft); endend--------------------------------------------------------------------------------- Adds a pending bid to the queue.-------------------------------------------------------------------------------function addPendingBid(name, count, bid, owner, isBuyout, isHighBidder, timeLeft) -- Add a pending bid to the queue. local pendingBid = {}; pendingBid.name = name; pendingBid.count = count; pendingBid.bid = bid; pendingBid.owner = owner; pendingBid.isBuyout = isBuyout; pendingBid.isHighBidder = isHighBidder; pendingBid.timeLeft = timeLeft; table.insert(PendingBids, pendingBid); debugPrint("addPendingBid() - Added pending bid"); -- Register for the response events if this is the first pending bid. if (table.getn(PendingBids) == 1) then debugPrint("addPendingBid() - Registering for CHAT_MSG_SYSTEM and UI_ERROR_MESSAGE"); Stubby.RegisterEventHook("CHAT_MSG_SYSTEM", "BeanCounter_BidMonitor", onEventHook); Stubby.RegisterEventHook("UI_ERROR_MESSAGE", "BeanCounter_BidMonitor", onEventHook); endend--------------------------------------------------------------------------------- Removes the pending bid from the queue.-------------------------------------------------------------------------------function removePendingBid() if (table.getn(PendingBids) > 0) then -- Remove the first pending bid. local bid = PendingBids[1]; table.remove(PendingBids, 1); debugPrint("removePendingBid() - Removed pending bid"); -- Unregister for the response events if this is the last pending bid. if (table.getn(PendingBids) == 0) then debugPrint("removePendingBid() - Unregistering for CHAT_MSG_SYSTEM and UI_ERROR_MESSAGE"); Stubby.UnregisterEventHook("CHAT_MSG_SYSTEM", "BeanCounter_BidMonitor", onEventHook); Stubby.UnregisterEventHook("UI_ERROR_MESSAGE", "BeanCounter_BidMonitor", onEventHook); end return bid; end -- No pending bid to remove! return nil;end--------------------------------------------------------------------------------- OnEvent handler.-------------------------------------------------------------------------------function onEventHook(_, event, arg1) if (event == "CHAT_MSG_SYSTEM" and arg1) then debugPrint(event); if (arg1) then debugPrint(" "..arg1) end; if (arg1 == ERR_AUCTION_BID_PLACED) then onBidAccepted(); end elseif (event == "UI_ERROR_MESSAGE" and arg1) then debugPrint(event); if (arg1) then debugPrint(" "..arg1) end; if (arg1 == ERR_ITEM_NOT_FOUND or arg1 == ERR_NOT_ENOUGH_MONEY or arg1 == ERR_AUCTION_BID_OWN or arg1 == ERR_AUCTION_HIGHER_BID) then onBidFailed(); end endend--------------------------------------------------------------------------------- Called when a bid is accepted by the server.-------------------------------------------------------------------------------function onBidAccepted() local bid = removePendingBid(); if (bid) then -- If the player is buying out an auction they already bid on, we -- need to remove the pending bid since an outbid e-mail is not sent. if (bid.isBuyout and bid.isHighBidder) then BeanCounter.Purchases.DeletePendingBid(bid.name, bid.count, bid.bid, bid.owner, bid.isBuyout, bid.timeLeft); end BeanCounter.Purchases.AddPendingBid(time(), bid.name, bid.count, bid.bid, bid.owner, bid.isBuyout, bid.timeLeft); endend--------------------------------------------------------------------------------- Called when a bid is rejected by the server.-------------------------------------------------------------------------------function onBidFailed() removePendingBid();end--------------------------------------------------------------------------------------------------------------------------------------------------------------function debugPrint(message) BeanCounter.DebugPrint("[BeanCounter.BidMonitor] "..message);end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -