½â¾ö“½öÃËÖØÉúЧ”Ó듼¼ÄÜÎó´¥·¢”µÄÆß´óºËÐÄÎÊÌâ**
Óû§¸´ÖƵĺìÃûÎäÆ÷½Å±¾´æÔÚÁ½¸öºËÐÄÒì³££º
1. **µØÍ¼ÏÞÖÆÎÊÌâ**£ººìÃûЧ¹û½öÔÚÃËÖØµØÍ¼´¥·¢£¬ÆäËûµØÍ¼ÎÞЧ¡£
2. **¹¥»÷ÀàÐÍÎóÅÐ**£ºËùÓм¼Äܹ¥»÷¾ù»á´¥·¢ºìÃû£¬ÓëÔ¤ÆÚµÄÆÕͨ¹¥»÷ÏÞ¶¨²»·û¡£
ÒÔÏÂΪ½Å±¾ºËÐÄÂß¼ÓëÎÊÌâ²ð½â£¨»ùÓÚÓû§Ìṩ´úÂ룩£º
```lua
[@MUZHUANG] ; Ö÷´¥·¢Æ÷
#IF
checkitemw ÆÆ¹ÝÕä½£(ºì) 1 ; ¼ì²âÎäÆ÷´æÔÚ
CHECKHITMONNAME <$STR(S0)> ; »ñÈ¡±»¹¥»÷ÕßÃû×Ö´æÈëS0
#ACT
Goto @¼ì²âaa ; Ìø×ª°²È«Çø¼ì²â
BREAK
...
[@¼ì²âaa] ; °²È«Çø¼ì²â·ÖÖ§
#IF
InSafeZone ; ¼ì²â¹¥»÷ÕßÊÇ·ñÔÚ°²È«Çø
#ELSEACT
Goto @¼ì²âaq ; Ìø×ªÄ¿±ê°²È«Çø¼ì²â
...
[@¼ì²âaq]
#IF
S0.InSafeZone ; ¼ì²âÄ¿±êÊÇ·ñÔÚ°²È«Çø
#ELSEACT
S0.CHANGEPKPOINT + 300 ; Ôö¼ÓÄ¿±êPKÖµ
SendCenterMsg 255 150 ¾¯¸æ:¡¾<$STR(S0)>¡¿±»¡¾<$USERNAME>¡¿µÄÎäÆ÷»÷ÖÐ...
```
---
### ÎÊÌâÒ»£ººìÃûЧ¹û½öÏÞÃËÖØµØÍ¼
#### ÔÒò·ÖÎö
1. **HITMON´¥·¢Æ÷δȫ¾Ö°ó¶¨**
- ½Å±¾Í¨¹ý `HITMON(@MUZHUANG)` °ó¶¨µ½µØÍ¼²ÎÊý£¬µ«Óû§¿ÉÄܽöÔÚÃËÖØµØÍ¼µÄ `MapInfo.txt` ÖÐÌí¼ÓÁ˸ÃÖ¸ÁÈç `[3ÃËÖØÊ¡]` ºóÌí¼Ó `HITMON(@MUZHUANG)`£©£¬¶øÆäËûµØÍ¼Î´ÅäÖá£
- **ÑéÖ¤·½·¨**£º¼ì²é `Mir200\Envir\MapInfo.txt` ÖÐËùÓÐÐè´¥·¢ºìÃûµÄµØÍ¼ÊÇ·ñ°üº¬ `HITMON(@MUZHUANG)`¡£
#### ½â¾ö·½°¸
**²½Öè1£ºÈ«¾ÖµØÍ¼ÅäÖÃ**
- ÔÚ `MapInfo.txt` ÖÐΪËùÓÐÐè´¥·¢ºìÃûµÄµØÍ¼Ìí¼ÓÖ¸Á
```ini
[0 ±ÈÆæÊ¡] HITMON(@MUZHUANG) ; ʾÀý£º±ÈÆæÊ¡
[2 ÎÖÂêÉÁÖ] HITMON(@MUZHUANG)
```
- **×¢Òâ**£ºÈôµØÍ¼ÒÑÓÐÆäËû `HITMON` Ö¸ÁÈç¾ÑéÖí½Å±¾£©£¬ÐèºÏ²¢´¥·¢Æ÷£º
```lua
[@MUZHUANG]
#IF
CHECKHITMONNAME ¾ÑéÖí ; Ô¾ÑéÖí¼ì²â
#ACT
CHANGEEXP + 150000
#ELSEACT
GOTO @ºìÃûÎäÆ÷ ; Ìø×ªÖÁºìÃûÎäÆ÷Âß¼
```
**²½Öè2£ºÖØÆô·þÎñÆ÷**
- Ð޸ĺóÐèÖØÆô·þÎñ¶Ë»òʹÓà `@ReloadNpc` ÖØÔØµØÍ¼ÅäÖá£
---
### ÎÊÌâ¶þ£º¼¼Äܹ¥»÷Îó´¥·¢ºìÃû
#### ÔÒò·ÖÎö
1. **´¥·¢Æ÷°ó¶¨´íÎó**
- `HITMON` ĬÈÏÏìÓ¦ËùÓй¥»÷ÐÐΪ£¨°üÀ¨¼¼ÄÜ£©£¬¶øÓû§ÆÚÍû½öÏÞÆÕͨ¹¥»÷´¥·¢¡£
- **¶Ô±È²Î¿¼**£º±ê×¼ºìÃû½Å±¾Ó¦°ó¶¨µ½ `[@Attack]` ±êÇ©£¨ÆÕͨ¹¥»÷ʼþ£©£¬¶ø·Ç `HITMON` µØÍ¼´¥·¢Æ÷¡£
2. **ȱÉÙ¹¥»÷ÀàÐͼì²â**
- δʹÓà `CHECKATTACKTYPE` »ò `CHECKCURRTARGETRACE` Çø·Ö¹¥»÷ÀàÐÍ¡£
#### ½â¾ö·½°¸
**·½°¸Ò»£º¸ÄÓÃ[@Attack]´¥·¢Æ÷**
```lua
[@Attack] ; °ó¶¨µ½ÆÕͨ¹¥»÷ʼþ
#IF
checkitemw ÆÆ¹ÝÕä½£(ºì) 1 ; ¼ì²âÎäÆ÷
Random 30 ; 30%¸ÅÂÊ´¥·¢£¨¿ÉÑ¡£©
CHECKCURRTARGETRACE = 0 ; ¼ì²âÄ¿±êÎªÍæ¼Ò£¨0=Íæ¼Ò£¬1=¹ÖÎ
#ACT
Goto @¼ì²âaa ; Ìø×ª°²È«Çø¼ì²â
```
**ÓÅÊÆ**£º¾«×¼ÏÞ¶¨ÆÕͨ¹¥»÷£¬±ÜÃâ¼¼ÄÜÎó´¥·¢¡£
**·½°¸¶þ£ºÔö¼Ó¹¥»÷ÀàÐ͹ýÂË**
ÔÚÏÖÓнű¾ÖÐÌí¼ÓÌõ¼þ£º
```lua
[@MUZHUANG]
#IF
checkitemw ÆÆ¹ÝÕä½£(ºì) 1
CHECKHITMONNAME <$STR(S0)>
CHECKATTACKTYPE = 0 ; 0=ÆÕͨ¹¥»÷£¬1=¼¼Äܹ¥»÷£¨ÐèÑéÖ¤ÒýÇæÖ§³Ö£©
#ACT
Goto @¼ì²âaa
```
**×¢Òâ**£ºÐèÈ·ÈÏÒýÇæÊÇ·ñÖ§³Ö `CHECKATTACKTYPE` ÃüÁî¡£
---
### ÎÊÌâÈý£º°²È«Çø¼ì²âÂ߼ȱÏÝ
#### ©¶´·ÖÎö
1. **Ë«ÖØ¼ì²âÈßÓà**
- µ±Ç°½Å±¾Ïȼì²â¹¥»÷ÕßλÖã¨`InSafeZone`£©£¬ÔÙ¼ì²âÄ¿±êλÖã¨`S0.InSafeZone`£©¡£
- **ì¶Üµã**£ºÈô¹¥»÷ÕßÔÚ°²È«ÇøÍ⵫Ŀ±êÔÚ°²È«ÇøÄÚ£¬ÈÔ»áÖ´ÐÐ `CHANGEPKPOINT`£¬µ« `S0.InSafeZone` ¿ÉÄÜÒòÒýÇæ±£»¤»úÖÆÎÞ·¨ÉúЧ¡£
2. **±äÁ¿´«µÝ·çÏÕ**
- `S0` ´æ´¢Ä¿±êÃû×Ö£¬µ«²¿·ÖÒýÇæÔÚ°²È«ÇøÄÚ¹¥»÷ʱ»áÇå¿Õ `S0`£¬µ¼Ö½ű¾±¨´í¡£
#### ÓÅ»¯·½°¸
**²½Öè1£º¾«¼ò¼ì²âÂß¼**
```lua
[@¼ì²âaa]
#IF
!InSafeZone ; ¹¥»÷Õß²»ÔÚ°²È«Çø
CHECKTARGETINSAFEZONE = 0 ; Ä¿±ê²»ÔÚ°²È«Çø£¨Í¨ÓÃÃüÁ
#ACT
S0.CHANGEPKPOINT + 300
SendCenterMsg...
```
**¹Ø¼üµã**£º
- ʹÓà `CHECKTARGETINSAFEZONE` Ìæ´ú `S0.InSafeZone`£¬±ÜÃâ±äÁ¿Ê§Ð§¡£
- `!` ·ûºÅ±íʾÂß¼·Ç£¨²¿·ÖÒýÇæÖ§³Ö£©¡£
**²½Öè2£ºÔö¼ÓÈÝ´í´¦Àí**
```lua
#ELSEACT
MessageBox °²È«ÇøÄÚ½ûÖ¹PK£¡
CLOSE
```
---
### ÎÊÌâËÄ£º¶àÎäÆ÷½Å±¾ÈßÓà
#### ´úÂëÈßÓàÎÊÌâ
- Óû§ÎªËİÑÎäÆ÷±àдÁËÖØ¸´µÄ¼ì²â·ÖÖ§£¨@¼ì²âaa¡¢@¼ì²âd¡¢@¼ì²âA¡¢@¼ì²âdd£©£¬µ¼ÖÂά»¤À§ÄÑ¡£
#### ÓÅ»¯·½°¸
**ʹÓö¯Ì¬±äÁ¿Í³Ò»´¦Àí**
```lua
[@MUZHUANG]
#IF
CHECKHITMONNAME <$STR(S0)>
#ACT
; ±éÀúºìÃûÎäÆ÷Áбí
MOVR P0 0 ; Ëæ»úÖÖ×Ó
WHILE P0 < 4 ; 4°ÑÎäÆ÷
INC P0 1
GETSTR S$ÎäÆ÷ <$STR(P0)> "ºìÃûÎäÆ÷Áбí.txt" ; ´ÓÎļþ¶ÁÈ¡ÎäÆ÷Ãû
#IF
checkitemw <$STR(S$ÎäÆ÷)> 1
#ACT
MOV S$µ±Ç°ÎäÆ÷ <$STR(S$ÎäÆ÷)>
GOTO @°²È«Çø¼ì²â
BREAK
ENDWHILE
```
**ÅäÌ×Îļþ**£º´´½¨ `ºìÃûÎäÆ÷Áбí.txt`£¬Ã¿ÐÐдÈëÎäÆ÷Ãû£¨Èç `ÆÆ¹ÝÕä½£(ºì)`£©¡£
---
### ÎÊÌâÎ壺PKÖµµþ¼ÓÒì³£
#### DZÔÚ·çÏÕ
- ÿ´Î¹¥»÷¹Ì¶¨Ôö¼Ó300µãPKÖµ£¬¿ÉÄܵ¼ÖÂÍæ¼Ò˲¼äºìÃû£¬ÆÆ»µÆ½ºâ¡£
#### ƽºâÐÔµ÷Õû
**·½°¸Ò»£º¸ÅÂÊ´¥·¢ÓëÌݶÈÀÛ¼Ó**
```lua
#IF
Random 50 ; 50%¸ÅÂÊ´¥·¢
#ACT
; ¸ù¾Ýµ±Ç°PKÖµ¶¯Ì¬µ÷ÕûÔöÁ¿
CALCULATE PK_INCREMENT = <$PKPOINT> / 100 + 100 ; ʾÀý¹«Ê½
S0.CHANGEPKPOINT + <$STR(PK_INCREMENT)>
```
**·½°¸¶þ£ºÒýÈëË¥¼õ»úÖÆ**
```lua
#IF
#ACT
; ÈôÄ¿±êÒÑÓкìÃûBUFF£¬¼õÉÙÔöÁ¿
CHECKBUFF "ºìÃû³Í·£" S0
#SAY
S0.CHANGEPKPOINT + 150 ; ¼õ°ëµþ¼Ó
#ELSEACT
S0.CHANGEPKPOINT + 300
ADDBUFF "ºìÃû³Í·£" S0 600 ; ³ÖÐø10·ÖÖÓ
```
---
### ÎÊÌâÁù£ºÌáʾÐÅÏ¢Óëµ÷ÊÔ
#### ÔöÇ¿¿É¶ÁÐÔ
1. **ȾɫÓ붨λÌáʾ**
```lua
SendCenterMsg 251 70 "¾¯¸æ:¡¾{<$STR(S0)>/250}¡¿±»¡¾{<$USERNAME>/245}¡¿µÄ{<$STR(S$µ±Ç°ÎäÆ÷)/249}»÷ÖУ¡"
```
- ʹÓà `{}` °ü¹üȾɫ´úÂ루ÐèÒýÇæÖ§³Ö£©¡£
2. **µ÷ÊÔÈÕÖ¾**
```lua
#ACT
SENDMSG 5 "DEBUG: ¹¥»÷Õß=<$USERNAME>, Ä¿±ê=<$STR(S0)>, ÎäÆ÷=<$STR(S$µ±Ç°ÎäÆ÷)>"
```
---
### ×îÖÕÍêÕû½Å±¾Ê¾Àý
```lua
; ºìÃûÎäÆ÷Ö÷Âß¼
[@Attack]
#IF
CHECKCURRTARGETRACE = 0 ; Ä¿±êÎªÍæ¼Ò
!InSafeZone ; ¹¥»÷Õß²»ÔÚ°²È«Çø
CHECKTARGETINSAFEZONE = 0 ; Ä¿±ê²»ÔÚ°²È«Çø
#ACT
GOTO @¼ì²âºìÃûÎäÆ÷
[@¼ì²âºìÃûÎäÆ÷]
#ACT
MOVR P0 0
WHILE P0 < 4
INC P0 1
GETSTR S$ÎäÆ÷ <$STR(P0)> "ºìÃûÎäÆ÷Áбí.txt"
#IF
checkitemw <$STR(S$ÎäÆ÷)> 1
Random 30 ; 30%´¥·¢¸ÅÂÊ
#ACT
MOV S$µ±Ç°ÎäÆ÷ <$STR(S$ÎäÆ÷)>
GOTO @Ö´ÐкìÃû
BREAK
ENDWHILE
[@Ö´ÐкìÃû]
#IF
#ACT
S0.CHANGEPKPOINT + 300
SendCenterMsg 255 150 "¾¯¸æ:¡¾<$STR(S0)>¡¿±»¡¾<$USERNAME>¡¿µÄ{<$STR(S$µ±Ç°ÎäÆ÷)/249}»÷ÖУ¡"
ADDBUFF "ºìÃû±ê¼Ç" S0 600 ; ·ÀÖ¹ÖØ¸´µþ¼Ó
#ELSEACT
MessageBox ¹¥»÷Ìõ¼þ²»Âú×㣡
CLOSE
```
---
### ×ܽáÓëÑéÖ¤Á÷³Ì
1. **ÅäÖÃÑéÖ¤**£ºÈ·ÈÏËùÓеØÍ¼µÄ `HITMON` Ö¸Áî»ò¸ÄÓà `[@Attack]`¡£
2. **¹¥»÷²âÊÔ**£ºÔÚÃËÖØ/Ò°Íâ·Ö±ðÓÃÆÕͨ¹¥»÷Óë¼¼ÄÜÑéÖ¤´¥·¢Âß¼¡£
3. **ÈÕÖ¾¼à¿Ø**£ºÍ¨¹ý `M2Server` µÄµ÷ÊÔ´°¿Ú²é¿´½Å±¾±¨´í¡£
4. **ƽºâµ÷Õû**£º¸ù¾Ý·þÎñÆ÷·´À¡µ÷ÕûPKÖµÔöÁ¿Óë´¥·¢¸ÅÂÊ¡£
ͨ¹ýÉÏÊöÓÅ»¯£¬¿ÉʵÏÖÈ«µØÍ¼¾«×¼´¥·¢µÄºìÃûÎäÆ÷ϵͳ£¬Í¬Ê±¹æ±Ü¼¼ÄÜÎóÅÐÓë°²È«ÇøÂ©¶´£¬ÌáÉýÓÎϷƽºâÐÔÓë½Å±¾Îȶ¨ÐÔ¡£
Óû§¸´ÖƵĺìÃûÎäÆ÷½Å±¾´æÔÚÁ½¸öºËÐÄÒì³££º
1. **µØÍ¼ÏÞÖÆÎÊÌâ**£ººìÃûЧ¹û½öÔÚÃËÖØµØÍ¼´¥·¢£¬ÆäËûµØÍ¼ÎÞЧ¡£
2. **¹¥»÷ÀàÐÍÎóÅÐ**£ºËùÓм¼Äܹ¥»÷¾ù»á´¥·¢ºìÃû£¬ÓëÔ¤ÆÚµÄÆÕͨ¹¥»÷ÏÞ¶¨²»·û¡£
ÒÔÏÂΪ½Å±¾ºËÐÄÂß¼ÓëÎÊÌâ²ð½â£¨»ùÓÚÓû§Ìṩ´úÂ룩£º
```lua
[@MUZHUANG] ; Ö÷´¥·¢Æ÷
#IF
checkitemw ÆÆ¹ÝÕä½£(ºì) 1 ; ¼ì²âÎäÆ÷´æÔÚ
CHECKHITMONNAME <$STR(S0)> ; »ñÈ¡±»¹¥»÷ÕßÃû×Ö´æÈëS0
#ACT
Goto @¼ì²âaa ; Ìø×ª°²È«Çø¼ì²â
BREAK
...
[@¼ì²âaa] ; °²È«Çø¼ì²â·ÖÖ§
#IF
InSafeZone ; ¼ì²â¹¥»÷ÕßÊÇ·ñÔÚ°²È«Çø
#ELSEACT
Goto @¼ì²âaq ; Ìø×ªÄ¿±ê°²È«Çø¼ì²â
...
[@¼ì²âaq]
#IF
S0.InSafeZone ; ¼ì²âÄ¿±êÊÇ·ñÔÚ°²È«Çø
#ELSEACT
S0.CHANGEPKPOINT + 300 ; Ôö¼ÓÄ¿±êPKÖµ
SendCenterMsg 255 150 ¾¯¸æ:¡¾<$STR(S0)>¡¿±»¡¾<$USERNAME>¡¿µÄÎäÆ÷»÷ÖÐ...
```
---
### ÎÊÌâÒ»£ººìÃûЧ¹û½öÏÞÃËÖØµØÍ¼
#### ÔÒò·ÖÎö
1. **HITMON´¥·¢Æ÷δȫ¾Ö°ó¶¨**
- ½Å±¾Í¨¹ý `HITMON(@MUZHUANG)` °ó¶¨µ½µØÍ¼²ÎÊý£¬µ«Óû§¿ÉÄܽöÔÚÃËÖØµØÍ¼µÄ `MapInfo.txt` ÖÐÌí¼ÓÁ˸ÃÖ¸ÁÈç `[3ÃËÖØÊ¡]` ºóÌí¼Ó `HITMON(@MUZHUANG)`£©£¬¶øÆäËûµØÍ¼Î´ÅäÖá£
- **ÑéÖ¤·½·¨**£º¼ì²é `Mir200\Envir\MapInfo.txt` ÖÐËùÓÐÐè´¥·¢ºìÃûµÄµØÍ¼ÊÇ·ñ°üº¬ `HITMON(@MUZHUANG)`¡£
#### ½â¾ö·½°¸
**²½Öè1£ºÈ«¾ÖµØÍ¼ÅäÖÃ**
- ÔÚ `MapInfo.txt` ÖÐΪËùÓÐÐè´¥·¢ºìÃûµÄµØÍ¼Ìí¼ÓÖ¸Á
```ini
[0 ±ÈÆæÊ¡] HITMON(@MUZHUANG) ; ʾÀý£º±ÈÆæÊ¡
[2 ÎÖÂêÉÁÖ] HITMON(@MUZHUANG)
```
- **×¢Òâ**£ºÈôµØÍ¼ÒÑÓÐÆäËû `HITMON` Ö¸ÁÈç¾ÑéÖí½Å±¾£©£¬ÐèºÏ²¢´¥·¢Æ÷£º
```lua
[@MUZHUANG]
#IF
CHECKHITMONNAME ¾ÑéÖí ; Ô¾ÑéÖí¼ì²â
#ACT
CHANGEEXP + 150000
#ELSEACT
GOTO @ºìÃûÎäÆ÷ ; Ìø×ªÖÁºìÃûÎäÆ÷Âß¼
```
**²½Öè2£ºÖØÆô·þÎñÆ÷**
- Ð޸ĺóÐèÖØÆô·þÎñ¶Ë»òʹÓà `@ReloadNpc` ÖØÔØµØÍ¼ÅäÖá£
---
### ÎÊÌâ¶þ£º¼¼Äܹ¥»÷Îó´¥·¢ºìÃû
#### ÔÒò·ÖÎö
1. **´¥·¢Æ÷°ó¶¨´íÎó**
- `HITMON` ĬÈÏÏìÓ¦ËùÓй¥»÷ÐÐΪ£¨°üÀ¨¼¼ÄÜ£©£¬¶øÓû§ÆÚÍû½öÏÞÆÕͨ¹¥»÷´¥·¢¡£
- **¶Ô±È²Î¿¼**£º±ê×¼ºìÃû½Å±¾Ó¦°ó¶¨µ½ `[@Attack]` ±êÇ©£¨ÆÕͨ¹¥»÷ʼþ£©£¬¶ø·Ç `HITMON` µØÍ¼´¥·¢Æ÷¡£
2. **ȱÉÙ¹¥»÷ÀàÐͼì²â**
- δʹÓà `CHECKATTACKTYPE` »ò `CHECKCURRTARGETRACE` Çø·Ö¹¥»÷ÀàÐÍ¡£
#### ½â¾ö·½°¸
**·½°¸Ò»£º¸ÄÓÃ[@Attack]´¥·¢Æ÷**
```lua
[@Attack] ; °ó¶¨µ½ÆÕͨ¹¥»÷ʼþ
#IF
checkitemw ÆÆ¹ÝÕä½£(ºì) 1 ; ¼ì²âÎäÆ÷
Random 30 ; 30%¸ÅÂÊ´¥·¢£¨¿ÉÑ¡£©
CHECKCURRTARGETRACE = 0 ; ¼ì²âÄ¿±êÎªÍæ¼Ò£¨0=Íæ¼Ò£¬1=¹ÖÎ
#ACT
Goto @¼ì²âaa ; Ìø×ª°²È«Çø¼ì²â
```
**ÓÅÊÆ**£º¾«×¼ÏÞ¶¨ÆÕͨ¹¥»÷£¬±ÜÃâ¼¼ÄÜÎó´¥·¢¡£
**·½°¸¶þ£ºÔö¼Ó¹¥»÷ÀàÐ͹ýÂË**
ÔÚÏÖÓнű¾ÖÐÌí¼ÓÌõ¼þ£º
```lua
[@MUZHUANG]
#IF
checkitemw ÆÆ¹ÝÕä½£(ºì) 1
CHECKHITMONNAME <$STR(S0)>
CHECKATTACKTYPE = 0 ; 0=ÆÕͨ¹¥»÷£¬1=¼¼Äܹ¥»÷£¨ÐèÑéÖ¤ÒýÇæÖ§³Ö£©
#ACT
Goto @¼ì²âaa
```
**×¢Òâ**£ºÐèÈ·ÈÏÒýÇæÊÇ·ñÖ§³Ö `CHECKATTACKTYPE` ÃüÁî¡£
---
### ÎÊÌâÈý£º°²È«Çø¼ì²âÂ߼ȱÏÝ
#### ©¶´·ÖÎö
1. **Ë«ÖØ¼ì²âÈßÓà**
- µ±Ç°½Å±¾Ïȼì²â¹¥»÷ÕßλÖã¨`InSafeZone`£©£¬ÔÙ¼ì²âÄ¿±êλÖã¨`S0.InSafeZone`£©¡£
- **ì¶Üµã**£ºÈô¹¥»÷ÕßÔÚ°²È«ÇøÍ⵫Ŀ±êÔÚ°²È«ÇøÄÚ£¬ÈÔ»áÖ´ÐÐ `CHANGEPKPOINT`£¬µ« `S0.InSafeZone` ¿ÉÄÜÒòÒýÇæ±£»¤»úÖÆÎÞ·¨ÉúЧ¡£
2. **±äÁ¿´«µÝ·çÏÕ**
- `S0` ´æ´¢Ä¿±êÃû×Ö£¬µ«²¿·ÖÒýÇæÔÚ°²È«ÇøÄÚ¹¥»÷ʱ»áÇå¿Õ `S0`£¬µ¼Ö½ű¾±¨´í¡£
#### ÓÅ»¯·½°¸
**²½Öè1£º¾«¼ò¼ì²âÂß¼**
```lua
[@¼ì²âaa]
#IF
!InSafeZone ; ¹¥»÷Õß²»ÔÚ°²È«Çø
CHECKTARGETINSAFEZONE = 0 ; Ä¿±ê²»ÔÚ°²È«Çø£¨Í¨ÓÃÃüÁ
#ACT
S0.CHANGEPKPOINT + 300
SendCenterMsg...
```
**¹Ø¼üµã**£º
- ʹÓà `CHECKTARGETINSAFEZONE` Ìæ´ú `S0.InSafeZone`£¬±ÜÃâ±äÁ¿Ê§Ð§¡£
- `!` ·ûºÅ±íʾÂß¼·Ç£¨²¿·ÖÒýÇæÖ§³Ö£©¡£
**²½Öè2£ºÔö¼ÓÈÝ´í´¦Àí**
```lua
#ELSEACT
MessageBox °²È«ÇøÄÚ½ûÖ¹PK£¡
CLOSE
```
---
### ÎÊÌâËÄ£º¶àÎäÆ÷½Å±¾ÈßÓà
#### ´úÂëÈßÓàÎÊÌâ
- Óû§ÎªËİÑÎäÆ÷±àдÁËÖØ¸´µÄ¼ì²â·ÖÖ§£¨@¼ì²âaa¡¢@¼ì²âd¡¢@¼ì²âA¡¢@¼ì²âdd£©£¬µ¼ÖÂά»¤À§ÄÑ¡£
#### ÓÅ»¯·½°¸
**ʹÓö¯Ì¬±äÁ¿Í³Ò»´¦Àí**
```lua
[@MUZHUANG]
#IF
CHECKHITMONNAME <$STR(S0)>
#ACT
; ±éÀúºìÃûÎäÆ÷Áбí
MOVR P0 0 ; Ëæ»úÖÖ×Ó
WHILE P0 < 4 ; 4°ÑÎäÆ÷
INC P0 1
GETSTR S$ÎäÆ÷ <$STR(P0)> "ºìÃûÎäÆ÷Áбí.txt" ; ´ÓÎļþ¶ÁÈ¡ÎäÆ÷Ãû
#IF
checkitemw <$STR(S$ÎäÆ÷)> 1
#ACT
MOV S$µ±Ç°ÎäÆ÷ <$STR(S$ÎäÆ÷)>
GOTO @°²È«Çø¼ì²â
BREAK
ENDWHILE
```
**ÅäÌ×Îļþ**£º´´½¨ `ºìÃûÎäÆ÷Áбí.txt`£¬Ã¿ÐÐдÈëÎäÆ÷Ãû£¨Èç `ÆÆ¹ÝÕä½£(ºì)`£©¡£
---
### ÎÊÌâÎ壺PKÖµµþ¼ÓÒì³£
#### DZÔÚ·çÏÕ
- ÿ´Î¹¥»÷¹Ì¶¨Ôö¼Ó300µãPKÖµ£¬¿ÉÄܵ¼ÖÂÍæ¼Ò˲¼äºìÃû£¬ÆÆ»µÆ½ºâ¡£
#### ƽºâÐÔµ÷Õû
**·½°¸Ò»£º¸ÅÂÊ´¥·¢ÓëÌݶÈÀÛ¼Ó**
```lua
#IF
Random 50 ; 50%¸ÅÂÊ´¥·¢
#ACT
; ¸ù¾Ýµ±Ç°PKÖµ¶¯Ì¬µ÷ÕûÔöÁ¿
CALCULATE PK_INCREMENT = <$PKPOINT> / 100 + 100 ; ʾÀý¹«Ê½
S0.CHANGEPKPOINT + <$STR(PK_INCREMENT)>
```
**·½°¸¶þ£ºÒýÈëË¥¼õ»úÖÆ**
```lua
#IF
#ACT
; ÈôÄ¿±êÒÑÓкìÃûBUFF£¬¼õÉÙÔöÁ¿
CHECKBUFF "ºìÃû³Í·£" S0
#SAY
S0.CHANGEPKPOINT + 150 ; ¼õ°ëµþ¼Ó
#ELSEACT
S0.CHANGEPKPOINT + 300
ADDBUFF "ºìÃû³Í·£" S0 600 ; ³ÖÐø10·ÖÖÓ
```
---
### ÎÊÌâÁù£ºÌáʾÐÅÏ¢Óëµ÷ÊÔ
#### ÔöÇ¿¿É¶ÁÐÔ
1. **ȾɫÓ붨λÌáʾ**
```lua
SendCenterMsg 251 70 "¾¯¸æ:¡¾{<$STR(S0)>/250}¡¿±»¡¾{<$USERNAME>/245}¡¿µÄ{<$STR(S$µ±Ç°ÎäÆ÷)/249}»÷ÖУ¡"
```
- ʹÓà `{}` °ü¹üȾɫ´úÂ루ÐèÒýÇæÖ§³Ö£©¡£
2. **µ÷ÊÔÈÕÖ¾**
```lua
#ACT
SENDMSG 5 "DEBUG: ¹¥»÷Õß=<$USERNAME>, Ä¿±ê=<$STR(S0)>, ÎäÆ÷=<$STR(S$µ±Ç°ÎäÆ÷)>"
```
---
### ×îÖÕÍêÕû½Å±¾Ê¾Àý
```lua
; ºìÃûÎäÆ÷Ö÷Âß¼
[@Attack]
#IF
CHECKCURRTARGETRACE = 0 ; Ä¿±êÎªÍæ¼Ò
!InSafeZone ; ¹¥»÷Õß²»ÔÚ°²È«Çø
CHECKTARGETINSAFEZONE = 0 ; Ä¿±ê²»ÔÚ°²È«Çø
#ACT
GOTO @¼ì²âºìÃûÎäÆ÷
[@¼ì²âºìÃûÎäÆ÷]
#ACT
MOVR P0 0
WHILE P0 < 4
INC P0 1
GETSTR S$ÎäÆ÷ <$STR(P0)> "ºìÃûÎäÆ÷Áбí.txt"
#IF
checkitemw <$STR(S$ÎäÆ÷)> 1
Random 30 ; 30%´¥·¢¸ÅÂÊ
#ACT
MOV S$µ±Ç°ÎäÆ÷ <$STR(S$ÎäÆ÷)>
GOTO @Ö´ÐкìÃû
BREAK
ENDWHILE
[@Ö´ÐкìÃû]
#IF
#ACT
S0.CHANGEPKPOINT + 300
SendCenterMsg 255 150 "¾¯¸æ:¡¾<$STR(S0)>¡¿±»¡¾<$USERNAME>¡¿µÄ{<$STR(S$µ±Ç°ÎäÆ÷)/249}»÷ÖУ¡"
ADDBUFF "ºìÃû±ê¼Ç" S0 600 ; ·ÀÖ¹ÖØ¸´µþ¼Ó
#ELSEACT
MessageBox ¹¥»÷Ìõ¼þ²»Âú×㣡
CLOSE
```
---
### ×ܽáÓëÑéÖ¤Á÷³Ì
1. **ÅäÖÃÑéÖ¤**£ºÈ·ÈÏËùÓеØÍ¼µÄ `HITMON` Ö¸Áî»ò¸ÄÓà `[@Attack]`¡£
2. **¹¥»÷²âÊÔ**£ºÔÚÃËÖØ/Ò°Íâ·Ö±ðÓÃÆÕͨ¹¥»÷Óë¼¼ÄÜÑéÖ¤´¥·¢Âß¼¡£
3. **ÈÕÖ¾¼à¿Ø**£ºÍ¨¹ý `M2Server` µÄµ÷ÊÔ´°¿Ú²é¿´½Å±¾±¨´í¡£
4. **ƽºâµ÷Õû**£º¸ù¾Ý·þÎñÆ÷·´À¡µ÷ÕûPKÖµÔöÁ¿Óë´¥·¢¸ÅÂÊ¡£
ͨ¹ýÉÏÊöÓÅ»¯£¬¿ÉʵÏÖÈ«µØÍ¼¾«×¼´¥·¢µÄºìÃûÎäÆ÷ϵͳ£¬Í¬Ê±¹æ±Ü¼¼ÄÜÎóÅÐÓë°²È«ÇøÂ©¶´£¬ÌáÉýÓÎϷƽºâÐÔÓë½Å±¾Îȶ¨ÐÔ¡£

