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

¼ÜÉèµÄ´«ÆæÔڽű¾ÖÐÈçºÎʵÏÖÍæ¼ÒÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñ£¿

Èȶȣº
ÔÚ´«ÆæÖУ¬ÈÎÎñʧ°ÜºóÔÊÐíÍæ¼ÒÖØÐ½ÓÊÜÈÎÎñÊÇÌáÉýÓÎÏ·ÌåÑéµÄÖØÒª¹¦ÄÜ¡£ÎªÁËʵÏÖÕâÒ»¹¦ÄÜ£¬ÐèÒªÔڽű¾ÖÐÉè¼ÆÈÎÎñʧ°ÜºóµÄÖØÖÃÂß¼­£¬²¢È·±£Íæ¼Ò¿ÉÒÔÖØÐ½ÓÈ¡ÈÎÎñ¡£ÒÔÏÂÊÇÏêϸµÄÉè¼ÆË¼Â·ºÍʵÏÖ·½·¨¡£

---

### Ò»¡¢ÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñµÄÉè¼ÆË¼Â·

1. **ÈÎÎñʧ°Ü´¦Àí**£º
- µ±ÈÎÎñʧ°Üʱ£¬Çå³ýÍæ¼ÒµÄÈÎÎñ½ø¶ÈºÍÏà¹ØÊý¾Ý¡£
- ·¢ËÍÈÎÎñʧ°ÜÌáʾ£¬²¢¸æÖªÍæ¼Ò¿ÉÒÔÖØÐ½ÓÈ¡ÈÎÎñ¡£

2. **ÈÎÎñÖØÖÃÂß¼­**£º
- ÔÚÈÎÎñʧ°Üºó£¬½«ÈÎÎñ×´Ì¬ÖØÖÃΪ³õʼ״̬¡£
- ÔÊÐíÍæ¼ÒÖØÐ½ÓÈ¡ÈÎÎñ£¬²»ÊÜʧ°Ü¼Ç¼µÄÓ°Ïì¡£

3. **ÈÎÎñ½ÓÈ¡Ìõ¼þ**£º
- È·±£Íæ¼ÒÂú×ãÈÎÎñ½ÓÈ¡Ìõ¼þ£¨ÈçµÈ¼¶¡¢Ç°ÖÃÈÎÎñµÈ£©¡£
- Èç¹ûÈÎÎñÓÐÀäȴʱ¼ä£¬ÐèÒªÔÚ½Óȡʱ¼ì²éÀäȴʱ¼äÊÇ·ñÒѹý¡£

4. **ÈÎÎñʧ°ÜÌáʾ**£º
- ÔÚÈÎÎñʧ°Üʱ£¬ÌṩÏêϸµÄʧ°ÜÔ­ÒòºÍÖØÐ½ÓÈ¡ÈÎÎñµÄÖ¸Òý¡£

---

### ¶þ¡¢ÊµÏÖÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñµÄ½Å±¾Ê¾Àý

ÒÔÏÂÊÇÒ»¸ö»ùÓÚLua½Å±¾µÄʵÏÖʾÀý£¬¼ÙÉèÒýÇæÖ§³ÖLua½Å±¾À©Õ¹¡£

#### 1. ¶¨ÒåÈÎÎñÄ¿±êºÍʧ°ÜÌõ¼þ
```lua
-- ÈÎÎñIDºÍÃû³Æ
local taskID = 1001
local taskName = "»÷ɱ÷¼÷ÃսʿÈÎÎñ"

-- ÈÎÎñÄ¿±ê
local targetMonster = "÷¼÷Ãսʿ" -- ÐèÒª»÷ɱµÄ¹ÖÎïÃû³Æ
local targetKillCount = 50 -- ÐèÒª»÷ɱµÄ¹ÖÎïÊýÁ¿

-- ÈÎÎñʧ°ÜÌõ¼þ
local timeLimit = 30 * 60 -- ʱ¼äÏÞÖÆ£º30·ÖÖÓ£¨µ¥Î»£ºÃ룩
local maxDeathCount = 3 -- ×î´óËÀÍö´ÎÊý£º3´Î

-- ÈÎÎñ½±Àø
local rewardYuanbao = 100 -- Íê³ÉÈÎÎñºó½±ÀøµÄÔª±¦ÊýÁ¿

-- ÈÎÎñÀäȴʱ¼ä£¨µ¥Î»£ºÃ룩
local taskCooldown = 60 * 5 -- 5·ÖÖÓÀäȴʱ¼ä
```

#### 2. ³õʼ»¯ÈÎÎñ״̬
```lua
-- Íæ¼Ò½ÓÈ¡ÈÎÎñʱµÄ»Øµ÷º¯Êý
function AcceptTask(player)
-- ¼ì²éÈÎÎñÀäȴʱ¼ä
local lastFailTime = player:GetTaskData(taskID, "lastFailTime") or 0
local currentTime = os.time()
if currentTime - lastFailTime < taskCooldown then
player:SendMessage("ÈÎÎñÀäÈ´ÖУ¬ÇëµÈ´ý" .. (taskCooldown - (currentTime - lastFailTime)) .. "ÃëºóÔÙ½ÓÈ¡¡£")
return
end

-- ¼ì²éÍæ¼ÒµÈ¼¶
if player:GetLevel() >= 10 then -- ½ÓÈ¡ÈÎÎñµÄÌõ¼þ£ºÍæ¼ÒµÈ¼¶≥10
player:SetTaskProgress(taskID, 0) -- ³õʼ»¯ÈÎÎñ½ø¶È
player:SetTaskData(taskID, "startTime", os.time()) -- ¼Ç¼ÈÎÎñ¿ªÊ¼Ê±¼ä
player:SetTaskData(taskID, "deathCount", 0) -- ³õʼ»¯ËÀÍö´ÎÊý
player:SendMessage("ÄãÒѽÓÈ¡ÈÎÎñ£º" .. taskName .. "£¬ÇëÔÚ30·ÖÖÓÄÚÍê³É¡£")
else
player:SendMessage("ÄãµÄµÈ¼¶²»×㣬ÎÞ·¨½ÓÈ¡´ËÈÎÎñ¡£")
end
end
```

#### 3. ÈÎÎñʧ°ÜʱµÄ´¦ÀíÂß¼­
```lua
-- ÈÎÎñʧ°ÜʱµÄ»Øµ÷º¯Êý
function FailTask(player, reason)
-- ¼Ç¼ÈÎÎñʧ°Üʱ¼ä
player:SetTaskData(taskID, "lastFailTime", os.time())

-- Çå³ýÈÎÎñ½ø¶ÈºÍÊý¾Ý
player:RemoveTask(taskID)
player:SendMessage("ÈÎÎñʧ°Ü£¡Ô­Òò£º" .. reason)
player:SendMessage("Äã¿ÉÒԵȴý" .. taskCooldown .. "ÃëºóÖØÐ½ÓÈ¡ÈÎÎñ¡£")
end
```

#### 4. Íæ¼Ò»÷ɱ¹ÖÎïʱ¸üÐÂÈÎÎñ½ø¶È
```lua
-- Íæ¼Ò»÷ɱ¹ÖÎïʱµÄ»Øµ÷º¯Êý
function OnKillMonster(player, monster)
if player:HasTask(taskID) then
-- ¼ì²é»÷ɱµÄ¹ÖÎïÊÇ·ñÊÇÈÎÎñÄ¿±ê
if monster:GetName() == targetMonster then
-- »ñÈ¡Íæ¼Òµ±Ç°µÄÈÎÎñ½ø¶È
local currentKillCount = player:GetTaskProgress(taskID) or 0

-- Èç¹ûÈÎÎñδÍê³É£¬¸üнø¶È
if currentKillCount < targetKillCount then
currentKillCount = currentKillCount + 1
player:SetTaskProgress(taskID, currentKillCount) -- ¸üÐÂÈÎÎñ½ø¶È
player:SendMessage("Äã»÷ɱÁË1Ö»" .. targetMonster .. "£¬µ±Ç°½ø¶È£º" .. currentKillCount .. "/" .. targetKillCount)

-- ¼ì²éÈÎÎñÊÇ·ñÍê³É
if currentKillCount >= targetKillCount then
CompleteTask(player) -- µ÷ÓÃÈÎÎñÍê³Éº¯Êý
end
end
end
end
end
```

#### 5. Íæ¼ÒËÀÍöʱ¸üÐÂËÀÍö´ÎÊý
```lua
-- Íæ¼ÒËÀÍöʱµÄ»Øµ÷º¯Êý
function OnPlayerDeath(player)
if player:HasTask(taskID) then
local deathCount = player:GetTaskData(taskID, "deathCount") or 0
deathCount = deathCount + 1
player:SetTaskData(taskID, "deathCount", deathCount) -- ¸üÐÂËÀÍö´ÎÊý

-- ¼ì²éËÀÍö´ÎÊýÊÇ·ñ³¬¹ýÏÞÖÆ
if deathCount >= maxDeathCount then
FailTask(player, "ËÀÍö´ÎÊý³¬¹ýÏÞÖÆ£¬ÈÎÎñʧ°Ü£¡")
else
player:SendMessage("ÄãÒÑËÀÍö" .. deathCount .. "´Î£¬Ê£Óà´ÎÊý£º" .. (maxDeathCount - deathCount))
end
end
end
```

#### 6. ¼ì²éÈÎÎñʱ¼äÏÞÖÆ
```lua
-- ¶¨Ê±¼ì²éÈÎÎñʱ¼äÏÞÖÆ
function CheckTimeLimit(player)
if player:HasTask(taskID) then
local startTime = player:GetTaskData(taskID, "startTime")
local currentTime = os.time()

-- ¼ì²éÊÇ·ñ³¬Ê±
if currentTime - startTime >= timeLimit then
FailTask(player, "ÈÎÎñʱ¼äÒѵ½£¬ÈÎÎñʧ°Ü£¡")
end
end
end
```

#### 7. Íæ¼ÒµÇ¼ʱ¼ì²éÈÎÎñ״̬
```lua
-- Íæ¼ÒµÇ¼ʱµÄ»Øµ÷º¯Êý
function OnPlayerLogin(player)
if player:HasTask(taskID) then
-- ¼ì²éÈÎÎñÊÇ·ñÒÑÍê³É
local currentKillCount = player:GetTaskProgress(taskID) or 0
if currentKillCount >= targetKillCount then
CompleteTask(player)
else
-- ¼ì²éÈÎÎñÊÇ·ñÒÑʧ°Ü
local startTime = player:GetTaskData(taskID, "startTime")
local currentTime = os.time()
if currentTime - startTime >= timeLimit then
FailTask(player, "ÈÎÎñʱ¼äÒѵ½£¬ÈÎÎñʧ°Ü£¡")
end
end
end
end
```

---

### Èý¡¢¹Ø¼üµã½âÎö

1. **ÈÎÎñÀäȴʱ¼ä**£º
- ʹÓÃ`os.time()`¼Ç¼ÈÎÎñʧ°Üʱ¼ä£¬²¢ÔÚ½ÓÈ¡ÈÎÎñʱ¼ì²éÀäȴʱ¼ä¡£

2. **ÈÎÎñʧ°Ü´¦Àí**£º
- ÔÚÈÎÎñʧ°Üʱ£¬Çå³ýÈÎÎñ½ø¶ÈºÍÊý¾Ý£¬²¢¼Ç¼ʧ°Üʱ¼ä¡£

3. **ÈÎÎñÖØÖÃÂß¼­**£º
- ÈÎÎñʧ°Üºó£¬Íæ¼Ò¿ÉÒÔÖØÐ½ÓÈ¡ÈÎÎñ£¬²»ÊÜʧ°Ü¼Ç¼µÄÓ°Ïì¡£

4. **ÈÎÎñ½ÓÈ¡Ìõ¼þ**£º
- ÔÚ½ÓÈ¡ÈÎÎñʱ£¬¼ì²éÍæ¼ÒµÈ¼¶ºÍÀäȴʱ¼ä¡£

---

### ËÄ¡¢À©Õ¹¹¦ÄÜ

1. **ÈÎÎñʧ°Ü³Í·£**£º
- ¿ÉÒÔÉè¼ÆÈÎÎñʧ°ÜµÄ³Í·£»úÖÆ£¬ÀýÈç¿Û³ýÔª±¦¡¢¾­Ñé»ò×°±¸¡£

2. **ÈÎÎñÖØÊÔ´ÎÊýÏÞÖÆ**£º
- ÏÞÖÆÍæ¼ÒÖØÐ½ÓÈ¡ÈÎÎñµÄ´ÎÊý£¬ÀýÈçÿÌì×î¶àÖØÊÔ3´Î¡£

3. **¶¯Ì¬ÈÎÎñÄѶÈ**£º
- ¸ù¾ÝÍæ¼ÒµÈ¼¶»òÈÎÎñ½ø¶È¶¯Ì¬µ÷ÕûÈÎÎñÄѶȡ£

4. **ÈÎÎñʧ°ÜÌáʾ**£º
- ÔÚÈÎÎñʧ°Üʱ£¬ÌṩÏêϸµÄʧ°ÜÔ­ÒòºÍºóÐø²Ù×÷½¨Òé¡£

---

### Îå¡¢×ܽá

ͨ¹ýʵÏÖÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñµÄ¹¦ÄÜ£¬¿ÉÒÔÌáÉýÍæ¼ÒµÄÓÎÏ·ÌåÑéºÍ²ÎÓë¸Ð¡£±¾ÎÄÒÔʱ¼äÏÞÖÆºÍËÀÍö´ÎÊýÏÞÖÆÎªÀý£¬Ïêϸ½éÉÜÁËÈçºÎÔÚ´«ÆæÉ±¹ÖÈÎÎñ½Å±¾ÖÐʵÏÖÈÎÎñʧ°ÜºóµÄÖØÖÃÂß¼­¡£¿ª·¢Õß¿ÉÒÔ¸ù¾Ýʵ¼ÊÐèÇ󣬽øÒ»²½À©Õ¹ÈÎÎñϵͳµÄ¹¦ÄÜ£¬´òÔì¸ü¼Ó·á¸»¶àÑùµÄÓÎÏ·ÌåÑé¡£

---

### ¸½Â¼£º³£¼ûÎÊÌâÓë½â¾ö·½°¸

1. **ÈÎÎñÀäȴʱ¼ä²»×¼È·**£º
- È·±£Ê¹ÓÃ`os.time()`»ñÈ¡µÄʱ¼äµ¥Î»ÎªÃ룬²¢Ôڽű¾ÖÐͳһʱ¼äµ¥Î»¡£

2. **ÈÎÎñʧ°Üδ´¥·¢**£º
- ¼ì²éÈÎÎñʧ°ÜÌõ¼þµÄÅжÏÂß¼­£¬È·±£Ìõ¼þÂú×ãʱµ÷ÓÃ`FailTask`º¯Êý¡£

3. **ÈÎÎñÖØÖÃÂß¼­´íÎó**£º
- È·±£ÈÎÎñʧ°ÜºóÇå³ýËùÓÐÏà¹ØÊý¾Ý£¬²¢ÔÊÐíÍæ¼ÒÖØÐ½ÓÈ¡ÈÎÎñ¡£

ͨ¹ýÒÔÉÏ·½·¨£¬Äú¿ÉÒÔÇáËÉʵÏÖ´«ÆæÉ±¹ÖÈÎÎñ½Å±¾ÖеÄÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñ¹¦ÄÜ¡£

ÔÚ´«Ææ½Å±¾ÖÐʵÏÖÍæ¼ÒÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñ£¬ÐèÒªÔÚÈÎÎñʧ°ÜµÄÂß¼­ÀïÌí¼ÓÏàÓ¦´¦Àí£¬Í¬Ê±¶ÔÈÎÎñÏà¹ØµÄ±äÁ¿ºÍ״̬½øÐÐÖØÖã¬ÒÔ±ãÍæ¼ÒÄܹ»ÔٴοªÆôÈÎÎñ¡£ÒÔϽáºÏ²»Í¬µÄÈÎÎñʧ°ÜÌõ¼þ£¬Ïêϸ²ûÊöʵÏÖ·½·¨²¢¸ø³öʾÀý½Å±¾£¨ÒÔ³£¼ûµÄ Mir2 ½Å±¾ÓïÑÔΪÀý£©¡£

### »ùÓÚʱ¼äÏÞÖÆÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñ

#### ½Å±¾Ë¼Â·
µ±Íæ¼ÒÔÚÏÞʱɱ¹ÖÈÎÎñÖÐδÄÜÔڹ涨ʱ¼äÄÚÍê³ÉÈÎÎñʱ£¬Åж¨ÈÎÎñʧ°Ü£¬´ËÊ±ÖØÖÃÈÎÎñÏà¹Ø±äÁ¿£¬Íæ¼Ò¿ÉÔٴνÓÊÜÈÎÎñ¡£

#### ʾÀý½Å±¾
```plaintext
// ÈÎÎñ³õʼ»¯½Å±¾£¬É趨ÈÎÎñÐÅÏ¢ºÍ¿ªÊ¼Ê±¼ä
[@SetTimedKillQuest]
#IF
#ACT
// É趨ÈÎÎñÃû³Æ
SET @QuestName ÏÞʱ»÷ɱ½©Ê¬ÈÎÎñ
// É趨Ŀ±ê¹ÖÎïÃû³Æ
SET @TargetMonster ½©Ê¬
// É趨ÐèÒª»÷ɱµÄ¹ÖÎïÊýÁ¿
SET @TargetKillCount 20
// É趨ÈÎÎñʱ¼äÏÞÖÆ£¨µ¥Î»£ºÃ룩
SET @TimeLimit 600
// ¼Ç¼ÈÎÎñ¿ªÊ¼Ê±¼ä
GETDATETIME @StartTime
// ³õʼ»¯Íæ¼Òµ±Ç°»÷ɱÊýÁ¿Îª 0
SET @CurrentKillCount 0
// ÌáÊ¾Íæ¼Ò½ÓÊÜÈÎÎñ
SENDMSG 0 ÄãÒѽÓÊÜÈÎÎñ£º%s£¬ÐèÒªÔÚ %d ÃëÄÚ»÷ɱ %d Ö» %s£¡ @QuestName @TimeLimit @TargetKillCount @TargetMonster

// Íæ¼Ò»÷ɱ¹ÖÎïʱ´¥·¢µÄ½Å±¾
[@KillMonster]
#IF
EQUAL <$KILLMONSTERNAME> @TargetMonster // Åжϻ÷ɱµÄ¹ÖÎïÊÇ·ñΪĿ±ê¹ÖÎï
#ACT
// Ôö¼Óµ±Ç°»÷ɱÊýÁ¿
INC @CurrentKillCount 1
// ÌáÊ¾Íæ¼Òµ±Ç°»÷ɱ½ø¶È
SENDMSG 0 ÄãÒÑ»÷ɱ %d Ö» %s£¬»¹Ðè»÷ɱ %d Ö»Íê³ÉÈÎÎñ¡£ @CurrentKillCount @TargetMonster [@TargetKillCount - @CurrentKillCount]
// ÅжÏÊÇ·ñÍê³ÉÈÎÎñ
IF
EQUAL @CurrentKillCount @TargetKillCount
THENACT
// ÈÎÎñÍê³É£¬·¢·Å½±Àø
ADDMONEY 500 // ½±Àø 500 ½ð±Ò
SENDMSG 0 ¹§Ï²ÄãÍê³ÉÁË %s ÈÎÎñ£¬»ñµÃ 500 ½ð±Ò½±Àø£¡ @QuestName
// ÖØÖÃÈÎÎñ¼ÆÊý
SET @CurrentKillCount 0
ENDIF

// ¶¨Ê±¼ì²éÈÎÎñÊÇ·ñ³¬Ê±
[@CheckQuestTimeout]
#IF
// »ñÈ¡µ±Ç°Ê±¼ä
GETDATETIME @CurrentTime
// ¼ÆËãʱ¼ä²î£¨µ¥Î»£ºÃ룩
SUB @TimeElapsed @CurrentTime @StartTime
// ÅжÏÊÇ·ñ³¬Ê±ÇÒδÍê³ÉÈÎÎñ
GREATER @TimeElapsed @TimeLimit
NOT EQUAL @CurrentKillCount @TargetKillCount
#ACT
// ÈÎÎñʧ°ÜÌáʾ
SENDMSG 0 ºÜÒź¶£¬ÄãδÄÜÔڹ涨ʱ¼äÄÚÍê³É %s ÈÎÎñ£¬ÈÎÎñʧ°Ü£¡ @QuestName
// ÖØÖÃÈÎÎñÏà¹Ø±äÁ¿
SET @CurrentKillCount 0
// ÔÊÐíÍæ¼ÒÔٴνÓÊÜÈÎÎñ£¬ÌáÊ¾Íæ¼Ò¿ÉÔٴνÓÈ¡
SENDMSG 0 Äã¿ÉÒÔÔٴκÍÎÒ¶Ô»°½ÓÊÜ %s ÈÎÎñ¡£ @QuestName
```

### »ùÓÚÍæ¼ÒËÀÍöÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñ

#### ½Å±¾Ë¼Â·
ÈôÍæ¼ÒÔÚɱ¹ÖÈÎÎñÖÐËÀÍöÇÒÈÎÎñδÍê³É£¬Åж¨ÈÎÎñʧ°Ü£¬ÖØÖÃÈÎÎñ±äÁ¿£¬ÈÃÍæ¼ÒÄܹ»ÔٴνÓÊÜÈÎÎñ¡£

#### ʾÀý½Å±¾
```plaintext
// ÈÎÎñ³õʼ»¯½Å±¾£¬É趨ÈÎÎñÐÅÏ¢
[@SetKillQuestWithDeathFail]
#IF
#ACT
// É趨ÈÎÎñÃû³Æ
SET @QuestName ɱ¹Ö·ÀËÀÍöÈÎÎñ
// É趨Ŀ±ê¹ÖÎïÃû³Æ
SET @TargetMonster °ëÊÞÈË
// É趨ÐèÒª»÷ɱµÄ¹ÖÎïÊýÁ¿
SET @TargetKillCount 15
// ³õʼ»¯Íæ¼Òµ±Ç°»÷ɱÊýÁ¿Îª 0
SET @CurrentKillCount 0
// ÌáÊ¾Íæ¼Ò½ÓÊÜÈÎÎñ
SENDMSG 0 ÄãÒѽÓÊÜÈÎÎñ£º%s£¬ÐèÒª»÷ɱ %d Ö» %s£¬ÆÚ¼äËÀÍöÔòÈÎÎñʧ°Ü£¡ @QuestName @TargetKillCount @TargetMonster

// Íæ¼Ò»÷ɱ¹ÖÎïʱ´¥·¢µÄ½Å±¾
[@KillMonster]
#IF
EQUAL <$KILLMONSTERNAME> @TargetMonster // Åжϻ÷ɱµÄ¹ÖÎïÊÇ·ñΪĿ±ê¹ÖÎï
#ACT
// Ôö¼Óµ±Ç°»÷ɱÊýÁ¿
INC @CurrentKillCount 1
// ÌáÊ¾Íæ¼Òµ±Ç°»÷ɱ½ø¶È
SENDMSG 0 ÄãÒÑ»÷ɱ %d Ö» %s£¬»¹Ðè»÷ɱ %d Ö»Íê³ÉÈÎÎñ¡£ @CurrentKillCount @TargetMonster [@TargetKillCount - @CurrentKillCount]
// ÅжÏÊÇ·ñÍê³ÉÈÎÎñ
IF
EQUAL @CurrentKillCount @TargetKillCount
THENACT
// ÈÎÎñÍê³É£¬·¢·Å½±Àø
ADDEXP 8000 // ½±Àø 8000 ¾­ÑéÖµ
SENDMSG 0 ¹§Ï²ÄãÍê³ÉÁË %s ÈÎÎñ£¬»ñµÃ 8000 ¾­ÑéÖµ½±Àø£¡ @QuestName
// ÖØÖÃÈÎÎñ¼ÆÊý
SET @CurrentKillCount 0
ENDIF

// Íæ¼ÒËÀÍöʱ´¥·¢µÄ½Å±¾
[@PlayerDeath]
#IF
NOT EQUAL @CurrentKillCount @TargetKillCount // ÅжÏÈÎÎñÊÇ·ñδÍê³É
#ACT
// ÈÎÎñʧ°ÜÌáʾ
SENDMSG 0 ºÜÒź¶£¬ÄãÔÚÍê³É %s ÈÎÎñ¹ý³ÌÖÐËÀÍö£¬ÈÎÎñʧ°Ü£¡ @QuestName
// ÖØÖÃÈÎÎñÏà¹Ø±äÁ¿
SET @CurrentKillCount 0
// ÔÊÐíÍæ¼ÒÔٴνÓÊÜÈÎÎñ£¬ÌáÊ¾Íæ¼Ò¿ÉÔٴνÓÈ¡
SENDMSG 0 Äã¿ÉÒÔÔٴκÍÎÒ¶Ô»°½ÓÊÜ %s ÈÎÎñ¡£ @QuestName
```

### »ùÓÚ±£»¤¹ÖÎïËÀÍöÈÎÎñʧ°ÜºóÖØÐ½ÓÊÜÈÎÎñ

#### ½Å±¾Ë¼Â·
µ±ÐèÒª±£»¤µÄ¹ÖÎï±»»÷ɱÇÒÈÎÎñδÍê³Éʱ£¬Åж¨ÈÎÎñʧ°Ü£¬ÖØÖÃÈÎÎñ±äÁ¿£¬Ê¹Íæ¼ÒÄÜÖØÐ½ÓÊÜÈÎÎñ¡£

#### ʾÀý½Å±¾
```plaintext
// ÈÎÎñ³õʼ»¯½Å±¾£¬É趨ÈÎÎñÐÅÏ¢
[@SetProtectMonsterQuest]
#IF
#ACT
// É趨ÈÎÎñÃû³Æ
SET @QuestName ±£»¤¹ÖÎïɱ¹ÖÈÎÎñ
// É趨Ŀ±ê¹ÖÎïÃû³Æ
SET @TargetMonster ÷¼÷ù­¼ýÊÖ
// É趨ÐèÒª»÷ɱµÄÄ¿±ê¹ÖÎïÊýÁ¿
SET @TargetKillCount 10
// É趨ÐèÒª±£»¤µÄ¹ÖÎïÃû³Æ
SET @ProtectedMonster µ¾²ÝÈËÊØÎÀ
// ³õʼ»¯Íæ¼Òµ±Ç°»÷ɱĿ±ê¹ÖÎïÊýÁ¿Îª 0
SET @CurrentKillCount 0
// ³õʼ»¯±£»¤¹ÖÎï´æ»î±ê¼ÇΪ 1£¨´æ»î£©
SET @ProtectedMonsterAlive 1
// ÌáÊ¾Íæ¼Ò½ÓÊÜÈÎÎñ
SENDMSG 0 ÄãÒѽÓÊÜÈÎÎñ£º%s£¬ÐèÒª»÷ɱ %d Ö» %s£¬Í¬Ê±±£»¤ %s ´æ»î£¡ @QuestName @TargetKillCount @TargetMonster @ProtectedMonster

// Íæ¼Ò»÷ɱĿ±ê¹ÖÎïʱ´¥·¢µÄ½Å±¾
[@KillTargetMonster]
#IF
EQUAL <$KILLMONSTERNAME> @TargetMonster // Åжϻ÷ɱµÄ¹ÖÎïÊÇ·ñΪĿ±ê¹ÖÎï
#ACT
// Ôö¼Óµ±Ç°»÷ɱÊýÁ¿
INC @CurrentKillCount 1
// ÌáÊ¾Íæ¼Òµ±Ç°»÷ɱ½ø¶È
SENDMSG 0 ÄãÒÑ»÷ɱ %d Ö» %s£¬»¹Ðè»÷ɱ %d Ö»Íê³ÉÈÎÎñ¡£ @CurrentKillCount @TargetMonster [@TargetKillCount - @CurrentKillCount]
// ÅжÏÊÇ·ñÍê³ÉÈÎÎñ
IF
EQUAL @CurrentKillCount @TargetKillCount
EQUAL @ProtectedMonsterAlive 1 // ¼ì²é±£»¤¹ÖÎïÊÇ·ñ´æ»î
THENACT
// ÈÎÎñÍê³É£¬·¢·Å½±Àø
ADDITEM ħ·¨³¤ÅÛ 1 // ½±ÀøÒ»¼þħ·¨³¤ÅÛ
SENDMSG 0 ¹§Ï²ÄãÍê³ÉÁË %s ÈÎÎñ£¬»ñµÃħ·¨³¤ÅÛÒ»¼þ£¡ @QuestName
// ÖØÖÃÈÎÎñ¼ÆÊý
SET @CurrentKillCount 0
ENDIF

// ±£»¤¹ÖÎï±»»÷ɱʱ´¥·¢µÄ½Å±¾
[@ProtectMonsterKilled]
#IF
EQUAL <$KILLMONSTERNAME> @ProtectedMonster
NOT EQUAL @CurrentKillCount @TargetKillCount // ÅжÏÈÎÎñÊÇ·ñδÍê³É
#ACT
// ÉèÖñ£»¤¹ÖÎï´æ»î±ê¼ÇΪ 0£¨ËÀÍö£©
SET @ProtectedMonsterAlive 0
// ÈÎÎñʧ°ÜÌáʾ
SENDMSG 0 ºÜÒź¶£¬%s ±»»÷ɱ£¬ÄãδÍê³É %s ÈÎÎñ£¬ÈÎÎñʧ°Ü£¡ @ProtectedMonster @QuestName
// ÖØÖÃÈÎÎñÏà¹Ø±äÁ¿
SET @CurrentKillCount 0
SET @ProtectedMonsterAlive 1
// ÔÊÐíÍæ¼ÒÔٴνÓÊÜÈÎÎñ£¬ÌáÊ¾Íæ¼Ò¿ÉÔٴνÓÈ¡
SENDMSG 0 Äã¿ÉÒÔÔٴκÍÎÒ¶Ô»°½ÓÊÜ %s ÈÎÎñ¡£ @QuestName
```

### ͨÓÃ×¢ÒâÊÂÏî
- **±äÁ¿ÖØÖÃ**£ºÔÚÈÎÎñʧ°Üʱ£¬ÒªÈ·±£½«ËùÓÐÓëÈÎÎñÏà¹ØµÄ±äÁ¿£¨Èç»÷ɱÊýÁ¿¡¢Ê±¼ä¼Ç¼¡¢´æ»î±ê¼ÇµÈ£©ÖØÖÃΪ³õʼֵ£¬ÒÔ±ãÍæ¼ÒÖØÐ½ÓÊÜÈÎÎñʱÈÎÎñÄÜÕý³£¿ªÊ¼¡£
- **ÈÎÎñÌáʾ**£ºÔÚÈÎÎñʧ°Üºó£¬¼°Ê±ÏòÍæ¼Ò·¢ËÍÌáʾÐÅÏ¢£¬¸æÖªÆäÈÎÎñʧ°Ü£¬²¢ËµÃ÷¿ÉÒÔÔٴνÓÊÜÈÎÎñ£¬·½±ãÍæ¼ÒÁ˽âºóÐø²Ù×÷¡£
- **½Å±¾Î»ÖÃ**£º½«ÉÏÊö½Å±¾Ìí¼Óµ½¶ÔÓ¦µÄÈÎÎñ´¥·¢½Å±¾ÎļþÖУ¬Èç `QManage.txt` »ò `Quest.txt` µÈ£¬¾ßÌåÎļþ·¾¶¸ù¾Ý·þÎñ¶ËµÄÉèÖöø¶¨¡£Ìí¼Óºó±£´æÎļþ²¢ÖØÆô·þÎñ¶Ë£¬Ê¹Ð½ű¾ÉúЧ¡£