µ±Ç°Î»Öà : 145zÓÎÏ·Õ¾¡¡|¡¡ÈÈѪ´«Ææ¡¡|¡¡¼¼Êõ½Ì³Ì¡¡|¡¡

´«Ææ½Å±¾Éî¶È¿ª·¢Ö¸ÄÏ£º°ü¹üÊÛ¼Û¡¢NPC¾º¼ÛÅÄÂôÓëGM¶¯Ì¬µ÷¿ØÏµÍ³È«½âÎö

Èȶȣº
#### Ò»¡¢ºËÐÄ¿ò¼ÜÓë½Å±¾½á¹¹Éè¼Æ
´«ÆæµÄÅÄÂôϵͳÐèʵÏÖ**Íæ¼Ò¾º¼Û¡¢°ü¹üÎïÆ·Éϼܡ¢GM¶¯Ì¬µ÷¿Ø**Èý´óºËÐŦÄÜ£¬ÒÔÏÂΪ½Å±¾¼Ü¹¹Éè¼ÆÒªµã£º

1. **µ×²ãÂß¼­ÓëÎļþ¹ØÏµ**
- **Ö÷¿Ø½Å±¾**£º`QFunction-0.txt`£¨´¦Àí½»Ò×´¥·¢Ê¼þ£©
- **Êý¾Ý´æ´¢**£º`QuestDiary\Auction\`Ŀ¼´æ·Å¾ºÅļǼ¡¢¼Û¸ñ²ÎÊý¡¢Ê±¼ä´ÁÎļþ
- **GM¿ØÖƽӿÚ**£ºÍ¨¹ý`GMÃüÁî`»ò¶ÀÁ¢NPCʵÏÖ²ÎÊý¶¯Ì¬ÐÞ¸Ä

2. **¹¦ÄÜÄ£¿é»®·Ö**
- **Íæ¼Ò¶Ë**£º°ü¹üÎïÆ·Éϼܡ¢³ö¼Û¾ºÅÄ¡¢Á÷ÅÄÈ¡»Ø
- **ϵͳ¶Ë**£º¼ÆÊ±Æ÷¹ÜÀí¡¢×î¸ß¼ÛˢС¢³É½»½áËã
- **GM¶Ë**£ºÆðÅļÛ/Ò»¿Ú¼ÛÐ޸ġ¢ÅÄÂôʱ¼äµ÷Õû¡¢Ç¿ÖÆÁ÷ÅÄ

---

#### ¶þ¡¢°ü¹üÊÛ¼ÛÓ뾺¼ÛÅÄÂô½Å±¾ÊµÏÖ
##### 1. **Íæ¼Ò°ü¹üÎïÆ·ÉϼÜÂß¼­**
ÔÚ`QFunction-0.txt`Öж¨ÒåÎïÆ·¼ì²âÓëÉϼÜÁ÷³Ì£¨ÒÔ"ÍÀÁúµ¶"ΪÀý£©£º
```lua
[@SellItem]
#IF
CheckItem ÍÀÁúµ¶ 1 ;¼ì²â°ü¹üÊÇ·ñ´æÔÚÎïÆ·
IsAdmin = 0 ;·Ç¹ÜÀíÔ±²Ù×÷
#ACT
SetCustomItemValue ÍÀÁúµ¶ AuctionPrice 5000 ;ÉèÖÃÆðÅļÛ5000Ôª±¦
SetCustomItemValue ÍÀÁúµ¶ BuyNowPrice 10000 ;ÉèÖÃÒ»¿Ú¼Û10000Ôª±¦
Take ÍÀÁúµ¶ 1 ;ÔÝʱ¿ÛѺÎïÆ·
AddToList ..\QuestDiary\Auction\Items.txt ÍÀÁúµ¶
SENDMSG 6 "ÎïÆ·ÒÑÉϼܣ¡µ±Ç°×î¸ß³ö¼Û£º0Ôª±¦"
#ELSESAY
°ü¹üÖÐûÓиÃÎïÆ·»òȨÏÞ²»×㣡
```

*¹Ø¼ü¼¼Êõµã*£º
- `SetCustomItemValue`£º×Ô¶¨ÒåÎïÆ·ÊôÐÔ×ֶΣ¨ÐèÒýÇæÖ§³Ö£©
- `AddToList`£º½«ÎïÆ·µÇ¼ÇÖÁÅÄÂôÁбíÎļþ

##### 2. **¾º¼ÛÓë×î¸ß¼ÛˢлúÖÆ**
ÔÚNPC¶Ô»°½Å±¾ÖÐʵÏÖʵʱ¾º¼Û£º
```lua
[@Main]
µ±Ç°ÅÄÂôÎïÆ·£º<$AuctionItem>\
×î¸ß³ö¼Û£º<$TopBid>Ôª±¦£¨³ö¼ÛÕߣº<$BidderName>£©\
Ê£Óàʱ¼ä£º<$RemainTime>·ÖÖÓ\
<ÎÒÒª³ö¼Û/@Bid> <Ò»¿Ú¼Û¹ºÂò/@BuyNow>

[@Bid]
#IF
CheckGameGold > <$TopBid> ;¼ì²âÔª±¦ÊÇ·ñ¸ßÓÚµ±Ç°¼Û
#ACT
SetTopBid <$GameGold> ;¸üÐÂ×î¸ß¼Û
SetBidderName <$USERNAME>
SaveVar AuctionInfo ..\QuestDiary\Auction\Current.ini
SENDMSG 0 "Íæ¼Ò[<$USERNAME>]³ö¼Û<$GameGold>Ôª±¦¾ºÅÄ<$AuctionItem>£¡"
#ELSESAY
ÄúµÄÔª±¦²»×ã»ò³ö¼Û䳬¹ýµ±Ç°×î¸ß¼Û£¡
```

*¶¯Ì¬Ë¢ÐÂÔ­Àí*£ºÍ¨¹ý`Robot.txt`¶¨Ê±Æ÷ÿ60Ãë¶ÁÈ¡`Current.ini`ˢнçÃæ

##### 3. **ÅÄÂôʱ¼ä¿ØÖÆÓë½áËã**
ÔÚ`Robot.txt`ÖÐÅäÖõ¹¼ÆÊ±Óë½áË㣺
```lua
#AutoRun NPC MIN 1 @AuctionTimer

[@AuctionTimer]
#ACT
LoadVar RemainTime ..\QuestDiary\Auction\Current.ini
Dec RemainTime 1
IfEqual RemainTime 0
Goto @AuctionEnd
SaveVar RemainTime ..\QuestDiiary\Auction\Current.ini

[@AuctionEnd]
#IF
CheckFileExist ..\QuestDiary\Auction\Bidder.txt
#ACT
GiveItem <$BidderName> <$AuctionItem> 1
TakeGameGold <$TopBid>
SENDMSG 0 "ÎïÆ·<$AuctionItem>ÒÑÓÉ[<$BidderName>]ÒÔ<$TopBid>Ôª±¦Åĵã¡"
#ELSESAY
ÎïÆ·Á÷ÅÄ£¬ÒÑÍË»ØÂô¼Ò²Ö¿â¡£
```


---

#### Èý¡¢GM¶¯Ì¬µ÷¿ØÏµÍ³¿ª·¢
##### 1. **¼Û¸ñʵʱÐ޸ĽӿÚ**
´´½¨GMרÊôNPC½Å±¾ÊµÏÖ²ÎÊýÈȸüУº
```lua
[@GM_AuctionControl]
ÇëÊäÈë²Ù×÷£º\
<µ÷ÕûÆðÅļÛ/@SetStartPrice> <µ÷ÕûÒ»¿Ú¼Û/@SetBuyNowPrice>\
<ÑÓ³¤ÅÄÂôʱ¼ä/@AddTime> <Ç¿ÖÆ½áÊøÅÄÂô/@ForceEnd>

[@SetStartPrice]
#IF
IsAdmin = 1
#ACT
InputBox "ÇëÊäÈëÐÂÆðÅļۣº"
SetCustomItemValue <$AuctionItem> AuctionPrice <$INPUTNUM>
SENDMSG 0 "¹ÜÀíÔ±Òѽ«<$AuctionItem>ÆðÅļ۵÷ÕûΪ<$INPUTNUM>Ôª±¦"

[@AddTime]
#IF
IsAdmin = 1
#ACT
InputBox "ÇëÊäÈëÑÓ³¤Ê±¼ä£¨·ÖÖÓ£©£º"
LoadVar RemainTime ..\QuestDiary\Auction\Current.ini
Add RemainTime <$INPUTNUM>
SaveVar RemainTime ..\QuestDiary\Auction\Current.ini
```


##### 2. **Á÷ÅÄÓëºÚÃûµ¥»úÖÆ**
```lua
[@ForceEnd]
#IF
IsAdmin = 1
#ACT
GiveItem <$SellerName> <$AuctionItem> 1
AddBlackList <$BidderName>
SENDMSG 0 "¹ÜÀíÔ±ÒÑÖÕÖ¹ÅÄÂô£¬ÎïÆ·ÍË»¹¸ø[<$SellerName>]"
```


---

#### ËÄ¡¢¸ß½×¹¦ÄÜÀ©Õ¹·½°¸
1. **ÖÇÄÜÍÆ¼ö¶¨¼Ûϵͳ**
```lua
; ¸ù¾ÝÀúÊ·³É½»Êý¾Ý×Ô¶¯¶¨¼Û
#ACT
GetAveragePrice ÍÀÁúµ¶
SetCustomItemValue ÍÀÁúµ¶ AuctionPrice <$AvgPrice*0.8> ;ÍÆ¼öÆðÅļÛΪ¾ù¼ÛµÄ80%
SetCustomItemValue ÍÀÁúµ¶ BuyNowPrice <$AvgPrice*1.2> ;Ò»¿Ú¼ÛΪ¾ù¼ÛµÄ120%
```


2. **¿ç·þÅÄÂôÐÐÕûºÏ**
```lua
; ¿ç·þÊý¾Ýͬ²½£¨ÐèÖ÷´Ó·þÎñÆ÷¼Ü¹¹£©
#ACT
ConnectMasterServer
SendAuctionData <$AuctionItem> <$TopBid>
ReceiveGlobalBid
```


3. **·´¶ñÒ⾺¼ÛËã·¨**
```lua
; ¼ì²âÒì³£³ö¼ÛÐÐΪ£¨30ÃëÄÚ³ö¼Û³¬5´Î£©
#IF
CheckBidCount <$USERNAME> > 5
#ACT
Kick
SENDMSG 0 "Íæ¼Ò[<$USERNAME>]Òò¶ñÒ⾺¼ÛÒѱ»Ìß³ö£¡"
```


---

#### Îå¡¢µ÷ÊÔÓ밲ȫ·À»¤
1. **ÈÕÖ¾×·×ÙÓë¶Ïµãµ÷ÊÔ**
```lua
; Ôڹؼü½Úµã²åÈëµ÷ÊÔÃüÁî
#ACT
LogWrite "¾º¼Ûʱ¼ä´Á£º<$DATETIME> ³ö¼ÛÕߣº<$USERNAME> ½ð¶î£º<$TopBid>"
```


2. **Êý¾Ý¼ÓÃÜÓ뱸·Ý**
```lua
; ʹÓÃXOR¼ÓÃÜÃô¸ÐÊý¾Ý
#ACT
EncryptFile ..\QuestDiary\Auction\Current.ini
BackupToFTP /auction_backup/
```


3. **·ÀË¢»úÖÆ**
```lua
; ͬIP¶àÕ˺ÅÏÞÖÆ
#IF
CheckIPCount > 3
#ACT
BlockIP
```


---

#### Áù¡¢×î¼Ñʵ¼ù°¸Àý
**È«·þÉñ±øÅÄÂô»á½Å±¾**£º
```lua
[@BeginAuction]
#ACT
SetAuctionItem ÒÐÌì½£
SetAuctionTime 120 ;³ÖÐø2Сʱ
SetStartPrice 50000
SetBuyNowPrice 200000
Broadcast È«·þ¹«¸æ 20 "¡¾ÖÁ×ðÉñ±ø¡¿ÒÐÌì½£ÒÑ¿ªÆô¾ºÅÄ£¡"
```


---

### ½áÓï
ͨ¹ý±¾·½°¸¿ÉʵÏָ߶ȿɿصÄÅÄÂôϵͳ£¬ÆäºËÐļÛÖµÔÚÓÚ£º
1. **Áé»îµ÷¿Ø**£ºGM¿Éʵʱ¸ÉÔ¤Êг¡¼Û¸ñÓëʱ¼ä£¬Î¬»¤¾­¼Ãƽºâ
2. **°²È«Îȶ¨**£º¶àÖØÑéÖ¤»úÖÆ±ÜÃâÊý¾ÝÒì³£
3. **À©Õ¹ÐÔÇ¿**£ºÖ§³Ö¿ç·þ½»Òס¢ÖÇÄܶ¨¼ÛµÈ½ø½×¹¦ÄÜ
½¨Ò鿪·¢ÕßÅäºÏM2ServerµÄ`DebugLog`ģʽÖð²½µ÷ÊÔ£¬²¢ÓÅÏÈÔÚµ¥»ú»·¾³ÑéÖ¤¹¦ÄÜÍêÕûÐÔ¡£