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

´«ÆæM2½Å±¾´íÎ󣺴ÓÇå·çÒýÇæµ½ôá·çÒýÇæµÄÇ¨ÒÆÎÊÌâ¼°½â¾ö·½°¸

Èȶȣº
### Ò»¡¢ÎÊÌâ¸ùÔ´Éî¶È·ÖÎö
ÒýÇæÌæ»»µ¼ÖµÄM2½Å±¾´íÎóÊÇ´«Ææ¿ª·¢ÖеĵäÐÍÎÊÌ⣬ÓÈÆäÔÚ **Çå·çÒýÇæ£¨¾É°æ£©Éý¼¶ÖÁôá·çÒýÇæ£¨Ð°棩** ʱ£¬¾ßÌåì¶ÜÌåÏÖÔÚÒÔϲãÃæ£º
1. **½Å±¾ÃüÁîÓï·¨²îÒì**
- Çå·çÒýÇæÊ¹Óô«Í³HEROÒýÇæµÄ¼ò»¯ÃüÁÈç`#IF` `#ACT`£©£¬ôá·çÒýÇæÖ§³ÖÀ©Õ¹²ÎÊý£¨Èç`CHECKVAR`Ð辫ȷ±äÁ¿ÀàÐÍ£©¡£
- ²¿·ÖÃüÁîÓïÒå±ä¸ü£ºÀýÈçÇå·çÒýÇæµÄ`MOV`ĬÈÏÖ§³ÖÄ£ºý¸³Öµ£¬ôá·çÒªÇóÑϸñÀàÐÍÆ¥Å䣨`MOV N$±äÁ¿ ÊýÖµ`Óë`MOV S$±äÁ¿ Îı¾`ÐèÇø·Ö£©¡£

2. **¹¦ÄÜÄ£¿éʵÏÖ²îÒì**
- Çå·çÒýÇæµÄ**NPC¶Ô»°´¥·¢»úÖÆ**¿ÉÄÜÒÀÀµ`QManage.txt`£¬¶øôá·çÒýÇæÐèͨ¹ý`Robot_def`Ŀ¼µÄ¶¨Ê±Æ÷ʵÏÖ¡£
- **Êý¾Ý¿â½á¹¹À©Õ¹**£ºôá·çÒýÇæµÄ`StdItems.DB`ÐÂÔö`Reserved`×ֶΣ¬¾É°æÊý¾ÝÖ±½ÓÇ¨ÒÆ»áµ¼ÖÂM2¼ÓÔØÒì³£¡£

3. **·¾¶ÓëÎļþ¹æ·¶³åÍ»**
- Çå·çÒýÇæÄ¬È϶ÁÈ¡`Envir\Market_Def\`µÄNPC½Å±¾£¬ôá·çÒýÇæ¿ÉÄÜÒªÇó`Envir\QuestDiary\`Ŀ¼ÏµÄÄ£¿é»¯½Å±¾¡£
- ¾É°æ½Å±¾ÖÐÓ²±àÂë·¾¶£¨Èç`D:\MirServer\`£©Óëôá·çÒýÇæµÄÐéÄâ·¾¶Ó³É乿Ôò²»¼æÈÝ¡£

---

### ¶þ¡¢ÏµÍ³ÐÔÐÞ¸´Á÷³Ì

#### **1. ½Å±¾ÃüÁî¼æÈÝÐÔ¸ÄÔì**
**(1) »ù´¡ÃüÁîת»»¶ÔÕÕ±í**

| Çå·çÒýÇæÃüÁî | ôá·çÒýÇæµÈЧÃüÁî | ¹Ø¼ü²îÒì |
|--------------|------------------|----------|
| `#CALL [XXX]` | `#CALL [\QuestDiary\XXX.txt]` | ·¾¶ÐèÍêÕûÉùÃ÷ |
| `CHECK [Ìõ¼þ]` | `CHECKVAR È«¾Ö/¸öÈ˱äÁ¿ ÔËËã·û Öµ` | ÐèÖ¸¶¨±äÁ¿×÷ÓÃÓò |
| `GOTO @±êÇ©` | `GOTO @±êÇ© MAP µØÍ¼Ãû` | ¿çµØÍ¼Ìø×ªÐèÉùÃ÷Ä¿±ê |
| `ADDSKILL ¼¼ÄÜÃû` | `ADDSKILLEX ¼¼ÄÜÃû µÈ¼¶ ¾­Ñé` | ÐÂÔö¾­Ñé²ÎÊý |


**(2) ¸ßΣÃüÁîÖØÐ´°¸Àý**
```lua
-- Çå·çÒýÇæ¾É½Å±¾£¨¿ÉÄܱ¨´í£©
[@Main]
#IF
CHECKLEVEL 80
#ACT
GIVE ÍÀÁúµ¶
#SAY
ÁìÈ¡³É¹¦£¡

-- ôá·çÒýÇæÐÞÕý°æ£¨£©
[@Main]
#IF
CHECKLEVELEX >= 80 -- ÐèʹÓÃCHECKLEVELEX¾«È·±È½Ï
#ACT
GIVE ÍÀÁúµ¶ 1 -- ±ØÐëÉùÃ÷ÊýÁ¿²ÎÊý
SENDMSG 6 "ÁìÈ¡³É¹¦£¡" -- Ìæ´ú#SAYʵÏÖ¿çµØÍ¼Ìáʾ
```


#### **2. Îļþ½á¹¹Óë·¾¶ÊÊÅä**
**(1) Ŀ¼¹æ·¶µ÷Õû**
- ½«Ô­`Market_Def\`ϵÄ**¹¦ÄÜÐÍNPC½Å±¾**Ç¨ÒÆÖÁ`QuestDiary\ϵͳģ¿é\`£¬²¢°´¹¦ÄÜ·ÖÀࣨÈç`\³äֵϵͳ\`¡¢`\ÈÎÎñϵͳ\`£©¡£
- ɾ³ý»ò×¢Ê;ɰæ`MapQuest.txt`ÖеÄ**ÒÑ·ÏÆúÈÎÎñ´¥·¢**£¬¸ÄÓÃôá·çµÄ`MapEvent.txt`ʼþÇý¶¯¡£

**(2) ×ÊÔ´ÎļþÓ³Éä**
- ¼ì²é`M2Server.ini`ÖеÄ`ClientPath`²ÎÊý£¬È·±£Ö¸Ïòаæ¿Í»§¶Ë£¨Ðè°üº¬ôá·çÌØÐ§ÎļþÈç`Effect.wzl`£©¡£
- ÈôʹÓÃ΢¶Ë£¬ÐèÔÚ`Pak.txt`ÖÐÉùÃ÷ËùÓÐWIL/WIXÎļþµÄÃÜÂëºÍÓÅÏȼ¶¡£

#### **3. Êý¾Ý¿â×ֶμæÈÝÐÔ´¦Àí**
**(1) ºËÐıí½á¹¹µ÷Õû**

| ±íÃû | ÐÂÔö×Ö¶Î | Çå·çÒýÇæÒÅÁôÎÊÌâ |
|------|----------|------------------|
| Magic.DB | `NeedInnerPower`£¨ÄÚ¹¦ÐèÇó£© | ¾É°æÎ´¶¨Òåµ¼Ö¼¼ÄÜÎÞ·¨Ñ§Ï° |
| StdItems.DB | `Light`£¨×°±¸¹âЧ£© | ÊýÖµ³¬³öôá·ç·¶Î§£¨0-15£©µ¼Ö»¨ÆÁ |
| Monster.DB | `RaceAI`£¨¹ÖÎïAIÀàÐÍ£© | ¾É°æAI´úÂë¿ÉÄÜ´¥·¢ôá·çM2±£»¤»úÖÆ |


**(2) Êý¾ÝÇ¨ÒÆ¹¤¾ßÍÆ¼ö**
- ʹÓÃ**LegacyDBConverter**£¨ôá·ç¹Ù·½¹¤¾ß°ü£©ÅúÁ¿×ª»»¾É°æÊý¾Ý¿â£¬×Ô¶¯Ìî³äȱʧ×Ö¶ÎĬÈÏÖµ¡£
- ¶Ô`StdItems.DB`µÄ`Reserved`×ֶΣ¬ÐèÊÖ¶¯¶¨ÒåÀ©Õ¹ÊôÐÔ£¨Èç`Reserved=1`±íʾ¿É½»Ò×£©¡£

---

### Èý¡¢µ÷ÊÔÓëÑéÖ¤·½·¨ÂÛ

#### **1. ·Ö¶Îʽ½Å±¾²âÊÔ**
**(1) ×¢ÊÍ·¨¶¨Î»´íÎó¶ÎÂä**
```lua
; [@ERROR] Ô­ÎÊÌâ½Å±¾¶Î
; #IF
; CHECKBAGSIZE 5
; #ACT
; GOTO @Reward

[@Reward]
#ACT
SENDMSG 6 "²âÊÔͨ¹ý£¡"
```

ͨ¹ýÖð¶Î½â³ý×¢Ê͹۲ìM2±¨´í±ä»¯£¬¿É¾«È·Ëø¶¨Òì³£ÃüÁî¡£

**(2) ±äÁ¿×·×ÙÃüÁî**
```lua
#ACT
VARLOG GLOBAL ²ú³ö¼ÆÊý -- ½«±äÁ¿Ð´ÈëM2ÈÕÖ¾
DUMPNPCINFO -- Êä³öµ±Ç°NPC״̬
```


#### **2. ÒýÇæÈÕÖ¾Éî¶È½â¶Á**

| ÈÕÖ¾¹Ø¼ü´Ê | DZÔÚÎÊÌâ | ½â¾ö·½°¸ |
|------------|----------|----------|
| `[Exception] CheckCode:65` | ½Å±¾ËÀÑ­»· | ¼ì²é`GOTO`Ìø×ªÂß¼­ÊÇ·ñÐγɱջ· |
| `Path not found: ...\InnerPower\` | ÄÚ¹¦ÏµÍ³Ä¿Â¼È±Ê§ | ´´½¨Ä¿Â¼²¢·ÅÖÃĬÈÏÅäÖÃÎļþ |
| `Unknown database.Alias: HeroDB` | DBC2000Êý¾Ý¿âδÅäÖà | ÔÚBDE AdministratorÖÐÖØ½¨±ðÃû |


#### **3. ɳºÐ²âÊÔ»·¾³´î½¨**
- ÔÚÐéÄâ»úÖв¿Êð**×îС»¯²âÊÔ·þÎñ¶Ë**£¬½ö±£ÁôºËÐĽű¾ÓëÊý¾Ý¿â¡£
- ʹÓÃ`@ReloadNpc`ÃüÁîÈÈÖØÔØNPC½Å±¾£¬±ÜÃâ·´¸´ÖØÆôM2¡£

---

### ËÄ¡¢Ô¤·À´ëÊ©Óë×ÊÔ´ÍÆ¼ö

#### **1. °æ±¾Ç¨ÒÆ×î¼Ñʵ¼ù**
- **·Ö½×¶ÎÉý¼¶**£ºÏÈÌæ»»`M2Server.exe`Óë`DBServer.exe`£¬ÔÙÖð²½ÒÆÖ²½Å±¾¡£
- **±¸·ÝÓë»Ø¹ö**£ºÊ¹ÓÃ`Git`¶Ô`Envir`Ŀ¼½øÐа汾¿ØÖÆ£¬Ò쳣ʱ¿É¿ìËÙ»¹Ô­¡£

#### **2. ±Ø±¸¹¤¾ßÇåµ¥**

| ¹¤¾ßÃû³Æ | ÓÃ; | À´Ô´ |
|----------|------|------|
| **LFM2Debugger** | ½Å±¾¶Ïµãµ÷ÊÔ | ôá·çÒýÇæ¼¼ÊõÂÛ̳ |
| **PakViewer** | WIL/WIXÎļþУÑé | ´«Ææ¿ª·¢Õß¹¤¾ßÏä |
| **DBC2000ºº»¯°æ** | Êý¾Ý¿â¼æÈÝÐÔ±£ÕÏ | ôá·ç×ÊÔ´Õ¾ |


#### **3. ѧϰ×ÊÔ´ÍÆ¼ö**
- **¡¶ôá·çÒýÇæ½Å±¾ÃüÁî´óÈ«¡·** £ºº­¸ÇËùÓÐаæÃüÁîµÄÓï·¨Óë°¸Àý£¨ÒýÓÃ×Ô£©¡£
- **“ÒýÇæÌæ»»¼æÈÝÐÔ¼ì²é±í”** £º¶Ô±ÈÇå·ç/ôá·çÒýÇæµÄ300+¸ö²îÒìµã¡£

---

### Îå¡¢½áÓï
½â¾öÇå·çתôá·çÒýÇæµÄM2½Å±¾´íÎó£¬Ðè×ñÑ­ **“ÃüÁîÊÊÅä→·¾¶ÐÞÕý→Êý¾Ý¿âÇ¨ÒÆ→·Ö¶Î²âÊÔ”** µÄµÝ½øÂß¼­¡£¿ª·¢ÕßӦɯÓÃÈÕÖ¾·ÖÎö¹¤¾ßÓëɳºÐ»·¾³£¬Í¬Ê±½¨Á¢°æ±¾¹ÜÀí»úÖÆÒÔÓ¦¶Ôµü´ú·çÏÕ¡£¶ÔÓÚ¸´Ôӽű¾ÏµÍ³£¨ÈçÄÚ¹¦¡¢¿ç·þ£©£¬½¨ÒéÖ±½Ó²ÉÓÃôá·ç¹Ù·½ÌṩµÄÄ£¿é»¯Ä£°å£¬¿É½µµÍ80%ÒÔÉϵļæÈÝÐÔÎÊÌâ·¢ÉúÂÊ¡£

#### Ò»¡¢ÒýÑÔ
ÔÚÔËÓªºÍ¹ÜÀí¡¶´«Ææ¡·µÄ¹ý³ÌÖУ¬Éý¼¶ÓÎÏ·ÒýÇæÊÇÒ»¸ö³£¼ûµÄÐèÇó¡£È»¶ø£¬ÒýÇæµÄ¸ü»»ÍùÍù»á´øÀ´Ò»ÏµÁмæÈÝÐÔÎÊÌ⣬ÓÈÆäÊǽű¾´íÎó¡£±¾ÎĽ«Ì½ÌÖµ±Äã´Ó½Ï¾ÉµÄÇå·çÒýÇæÉý¼¶µ½¸üеÄôá·çÒýÇæºóÓöµ½µÄM2½Å±¾´íÎ󣬲¢ÌṩÏêϸµÄ½â¾ö·½°¸¡£

#### ¶þ¡¢ÎÊÌâ±³¾°
ÄãÌáµ½ÔÚʹÓÃÇå·çÒýÇæÊ±Ò»ÇÐÕý³££¬µ«¸ü»»Îªôá·çÒýÇæºó³öÏÖÁËM2ÌáʾµÄ½Å±¾´íÎó¡£Õâͨ³£Òâζ×ÅÐÂÒýÇæÓëÏÖÓеĽű¾ÎļþÖ®¼ä´æÔÚ²»¼æÈݵÄÇé¿ö¡£ÒÔÏÂÊÇ¿ÉÄܵÄÔ­Òò£º

1. **Óï·¨²îÒì**£º²»Í¬°æ±¾µÄÒýÇæ¿ÉÄÜ»áÓв»Í¬µÄ½Å±¾Óï·¨ÒªÇó¡£
2. **API±ä»¯**£ºÐÂÒýÇæ¿ÉÄÜÒýÈëÁËеÄAPI»ò·ÏÆúÁ˾ɵÄAPI£¬µ¼ÖÂÏÖÓнű¾ÎÞ·¨Õý³£ÔËÐС£
3. **ÅäÖÃÎļþµ÷Õû**£ºÄ³Ð©ÅäÖÃÎļþÐèÒª¸ù¾ÝÐÂÒýÇæµÄÒªÇó½øÐе÷Õû¡£

#### Èý¡¢Ïêϸ·ÖÎöÓë½â¾ö·½°¸

##### 1. ¼ì²é½Å±¾Óï·¨
- **²é¿´Îĵµ**£ºÊ×ÏÈ£¬²éÔÄôá·çÒýÇæµÄ¹Ù·½Îĵµ£¬Á˽âÆä½Å±¾Óï·¨µÄ¾ßÌåÒªÇóºÍ±ä»¯¡£È·±£ÄãµÄ½Å±¾·ûºÏ×îй淶¡£
- **ʾÀý¶Ô±È**£º²Î¿¼¹Ù·½ÌṩµÄʾÀý½Å±¾£¬¶Ô±ÈÄãµÄ½Å±¾½á¹¹ºÍÄÚÈÝ£¬ÕÒ³ö¿ÉÄÜ´æÔڵIJ»Ò»ÖÂÖ®´¦¡£

##### 2. ¸üÐÂAPIµ÷ÓÃ
- **ʶ±ð¹ýʱAPI**£º¼ì²éÄãµÄ½Å±¾ÖÐÊÇ·ñÓе÷ÓÃÒѱ»·ÏÆúµÄAPI¡£¿ÉÒÔͨ¹ýËÑË÷ÒýÇæ»ò¹Ù·½ÂÛ̳²éÕÒÕâЩAPIµÄÐÂÌæ´ú·½°¸¡£
- **Ìæ»»API**£º½«ËùÓйýʱµÄAPIÌæ»»ÎªÐÂÒýÇæÖ§³ÖµÄµÈЧAPI¡£ÀýÈ磬Èç¹ûij¸öº¯ÊýÃûÒѸü¸Ä£¬ÐèÏàÓ¦µØÐÞ¸ÄÄãµÄ½Å±¾´úÂë¡£

##### 3. µ÷ÕûÅäÖÃÎļþ
- **ºËÐÄÅäÖÃÎļþ**£º¼ì²é²¢¸üÐÂ`Config.txt`¡¢`System.cfg`µÈºËÐÄÅäÖÃÎļþ£¬È·±£ËüÃÇÓëôá·çÒýÇæµÄÒªÇóÏàÆ¥Åä¡£
- **²å¼þÅäÖÃ**£ºÈç¹ûÄãʹÓÃÁËÈκβå¼þ£¬ÇëÈ·ÈÏÕâЩ²å¼þÊÇ·ñÓëôá·çÒýÇæ¼æÈÝ¡£±ØÒªÊ±£¬ÏÂÔØ×îеIJå¼þ°æ±¾»òѰÕÒÌæ´úÆ·¡£

##### 4. ʹÓõ÷ÊÔ¹¤¾ß
- **ÈÕÖ¾Êä³ö**£ºÆôÓÃÏêϸµÄÈÕÖ¾¼Ç¼¹¦ÄÜ£¬Í¨¹ý²é¿´ÈÕÖ¾ÎļþÀ´¶¨Î»¾ßÌåµÄ´íÎóÐÅÏ¢¡£´ó¶àÊýÒýÇæ¶¼ÌṩÁ˷ḻµÄÈÕ־ѡÏ°ïÖú¿ª·¢Õß¿ìËÙ¶¨Î»ÎÊÌâ¡£
- **Öð²½µ÷ÊÔ**£º²ÉÓ÷ֶε÷ÊԵķ½·¨£¬Öð²½ÔËÐнű¾µÄ²»Í¬²¿·Ö£¬ÒÔÈ·¶¨¾ßÌåÄÄÒ»²¿·ÖÒý·¢ÁË´íÎó¡£

#### ËÄ¡¢Êµ¼ù°¸Àý
¼ÙÉèÄãÔÚ³¢ÊÔ¼ÓÔØÒ»¸öNPC½Å±¾Ê±Óöµ½ÁË´íÎóÌáʾ£º
```plaintext
[Error] Unknown function: OldFunctionName in script file npc_example.txt at line 45.
```
½â¾ö²½ÖèÈçÏ£º
1. **²éÔÄÎĵµ**£ºÔÚôá·çÒýÇæµÄ¹Ù·½ÎĵµÖвéÕÒ`OldFunctionName`µÄÏà¹ØÐÅÏ¢¡£
2. **Ìæ»»API**£º·¢Ïָú¯ÊýÒѱ»ÐµÄ`NewFunctionName`È¡´ú£¬ÓÚÊÇÐ޸Ľű¾£º
```plaintext
// ԭʼ´úÂë
OldFunctionName(param1, param2);

// Ð޸ĺóµÄ´úÂë
NewFunctionName(param1, param2);
```
3. **²âÊÔÐÞ¸Ä**£ºÖØÐÂÆô¶¯·þÎñÆ÷²¢²âÊÔNPC¹¦ÄÜ£¬È·±£ÎÊÌâµÃµ½½â¾ö¡£

#### Îå¡¢×ܽá
´ÓÇå·çÒýÇæÇ¨ÒÆµ½ôá·çÒýÇæËäÈ»´øÀ´ÁËÐÔÄܺ͹¦ÄÜÉϵÄÌáÉý£¬µ«Ò²°éËæ×ÅһЩ¼¼ÊõÌôÕ½¡£Í¨¹ý×Ðϸ¼ì²é½Å±¾Óï·¨¡¢¸üÐÂAPIµ÷Óᢵ÷ÕûÅäÖÃÎļþÒÔ¼°ÀûÓõ÷ÊÔ¹¤¾ß£¬¿ÉÒÔÓÐЧµØ½â¾ö´ó²¿·ÖM2½Å±¾´íÎó¡£Ï£Íû±¾ÎÄÌṩµÄÖ¸µ¼Äܹ»°ïÖúÄã˳ÀûÍê³ÉÇ¨ÒÆ£¬²¢ÈÃÄãµÄ¡¶´«Ææ¡·¸ü¼ÓÎȶ¨¸ßЧµØÔËÐС£Èç¹ûÔÚ¹ý³ÌÖÐÓöµ½ÈκÎÒÉÎÊ»òÀ§ÄÑ£¬½¨Òé²Î¿¼¹Ù·½Îĵµ»òѰÇóÉçÇøµÄ°ïÖúºÍÖ§³Ö¡£