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

´«Ææ·þÎñ¶Ë¹ÖÎïѪÁ¿µ÷ÕûÒ쳣ȫ½â£ºÊýÖµÒç³öÓëÊý¾ÝÒçλÉî¶ÈÆÊÎö

Èȶȣº
## Ò»¡¢ºËÐÄÏÖÏóÓëµ×²ãÔ­Àí
### 1. µäÐÍÒì³£±íÏÖ
µ±¿ª·¢Õßͨ¹ý`Monster.DB`»ò¿ÉÊÓ»¯¹¤¾ßµ÷Õû¹ÖÎïѪÁ¿²ÎÊýʱ£¬³£³öÏÖÒÔÏÂÒì³£³¡¾°£º
- **ѪÁ¿ãÐÖµÍ»ÆÆºó¹ÖÎïÃëËÀ**£º½«ÑªÁ¿´Ó1,000µ÷ÕûΪ3,000£¬¹ÖÎïÉú³ÉºóÁ¢¼´ËÀÍö
- **ÊýÖµ¹éÁãÏÖÏó**£ºµ÷Õûºó¹ÖÎïѪÌõÏÔʾΪ0/0£¬ÎÞ·¨±»¹¥»÷
- **ÊôÐÔ´íÂÒ**£º¸ßѪÁ¿¹ÖÎï³öÏÖ¹¥»÷Á¦¹éÁã¡¢ÒÆËÙÒì³£µÈ¸±×÷ÓÃ

### 2. ¼¼ÊõÔ­ÀíÆÊÎö
#### 2.1 ÊýÖµÒç³ö£¨Integer Overflow£©
´«ÆæÒýÇæÆÕ±é²ÉÓÃ**16λ»ò32λÕûÐÍ´æ´¢¹ÖÎïѪÁ¿**£¬µ±ÊýÖµ³¬¹ýÒýÇæ´¦ÀíÉÏÏÞʱ·¢ÉúÒç³ö£º
```
16λÕûÐÍ·¶Î§£º0~65535£¨0xFFFF£©
32λÕûÐÍ·¶Î§£º0~4294967295£¨0xFFFFFFFF£©
```

Èô½«¹ÖÎïѪÁ¿ÉèÖÃΪ65536£¨³¬¹ý16λÉÏÏÞ£©£¬Êµ¼Ê´æ´¢Öµ»á**Ñ­»·¹éÁã**£¬µ¼Ö¹ÖÎïÉú³É¼´ËÀÍö

#### 2.2 Êý¾Ý¿â×Ö¶ÎÏÞÖÆ
´«Í³`Monster.DB`µÄHP×Ö¶ÎĬÈÏʹÓÃ**SmallIntÀàÐÍ**£¨2×Ö½Ú´æ´¢£©£¬²¿·ÖÒýÇæÀ©Õ¹Îª**IntÀàÐÍ**£¨4×Ö½Ú£©¡£Èôδͬ²½ÐÞ¸ÄÊý¾Ý¿â½á¹¹£¬¸ßѪÁ¿Öµ»á±»½Ø¶ÏΪ´íÎóÊýÖµ

#### 2.3 ÒýÇæ¼æÈÝÐԶϲã
ÀϾÉÒýÇæ£¨ÈçBlueM2£©¶Ô¸ßѪÁ¿¹ÖÎïÖ§³Ö²»×㣬±íÏÖΪ£º
- δ¼ÓÔØ´óÊýÖµ´¦Àí²å¼þʱ£¬ÑªÁ¿³¬¹ý21ÒÚÖ±½Ó±ÀÀ£
- M2Server.exeδÆôÓÃ`Large Address Aware`±êÖ¾£¬ÎÞ·¨·ÃÎÊ4GBÒÔÉÏÄÚ´æ¿Õ¼ä

---

## ¶þ¡¢Áùά½â¾ö·½°¸¿â
### ▶ ·½°¸1£ºÊý¾Ý¿â½á¹¹À©Õ¹£¨±Ø×ö²½Ö裩
#### 1.1 ʹÓÃDB CommanderÖ´ÐÐ×Ö¶ÎÀ©ÈÝ
```sql
ALTER TABLE Monster
MODIFY COLUMN HP BIGINT; -- ½«HP×ֶθÄΪ8×Ö½Ú´æ´¢
```

**²Ù×÷ÑéÖ¤**£º
```
SELECT MAX(HP) FROM Monster; -- È·ÈÏÊýÖµÉÏÏÞÍ»ÆÆ42ÒÚ
```


#### 1.2 ÅäÌ×¹¤¾ßÉý¼¶

| ¹¤¾ßÃû³Æ | ×÷Óà | ÏÂÔØÇþµÀ |
|-------------------|-------------------------------|--------------------------|
| DBÀ©Õ¹Æ÷3.0 | ÅúÁ¿×ª»»SmallIntÖÁBIGINT | ´«Ææ¿ª·¢ÕßÁªÃ˹ÙÍø |
| ´óÊýÖµ¼æÈݲ¹¶¡ | ÐÞ¸´M2ServerÊýÖµÒç³ö | GEEÒýÇæ¼¼ÊõÂÛ̳ |


---

### ▶ ·½°¸2£ºÒýÇæ²ÎÊýͬ²½ÐÞÕý
#### 2.1 µ÷ÕûM2Server²ÎÊý
ÔÚ`!Setup.txt`ÖÐÔö¼Ó£º
```ini
[Monster]
MaxHP=2147483647 -- 32λÓзûºÅÕûÐÍ×î´óÖµ
HPCalculation=2 -- ÆôÓôóÊý¼ÆËãģʽ
```


#### 2.2 ÄÚ´æÓÅ»¯ÅäÖÃ
- ¶ÔM2Server.exeÓÒ¼ü→ÊôÐÔ→¼æÈÝÐÔ→¹´Ñ¡"ÒÔ¹ÜÀíÔ±Éí·ÝÔËÐÐ"
- ʹÓÃEditBin¹¤¾ßÌí¼Ó`/LARGEADDRESSAWARE`±êÖ¾£¬Í»ÆÆ2GBÄÚ´æÏÞÖÆ

---

### ▶ ·½°¸3£º½¥½øÊ½ÊýÖµµ÷Õû·¨
#### 3.1 ½×ÌݲâÊÔ·¨
1. ³õʼֵÉ趨Ϊ30,000
2. ÿ´ÎÔö¼Ó50%²¢²âÊÔÎȶ¨ÐÔ£º30,000→45,000→67,500→...
3. ¼Ç¼±ÀÀ£ÁÙ½çµã£¬È·¶¨ÒýÇæÊµ¼ÊÖ§³ÖÉÏÏÞ

#### 3.2 ·Ö½×ѪÁ¿Ä£°å

| ¹ÖÎïµÈ¼¶ | ÍÆ¼öѪÁ¿·¶Î§ | ÊÊÓÃÒýÇæ |
|----------|-------------------|-----------------------|
| ÆÕͨ¹Ö | 1,000~65,535 | ËùÓÐÒýÇæ |
| BOSS | 65,536~2,147,483,647 | GEE/ôá·çµÈÏÖ´úÒýÇæ |
| ÊÀ½çBOSS | 2,147,483,648~9,223,372,036,854,775,807 | 64λ¶¨ÖÆÒýÇæ |


---

### ▶ ·½°¸4£º½Å±¾²¹³¥»úÖÆ
#### 4.1 ¶¯Ì¬ÑªÁ¿ÐÞÕý
ÔÚ`QManage.txt`ÖÐÖ²ÈëѪÁ¿ÐÞ¸´½Å±¾£º
```lua
[@OnMobGen]
#IF
CHECKVAREX <$CURRMONSTER_HP> < 1 -- ¼ì²âÒ쳣ѪÁ¿
#ACT
CALCVAR MOB_HP = <$MAXMONSTER_HP> -- ¶ÁÈ¡Êý¾Ý¿âÀíÂÛÖµ
CHANGEMOBHP <$CURRMONSTER_NAME> <$MOB_HP>
```


#### 4.2 ÈÕÖ¾¼à¿ØÄ£¿é
```powershell
# ʵʱ¼à¿ØM2ServerÈÕÖ¾
Get-Content "D:\MirServer\Logs\M2Debug.log" -Wait | Select-String "HP Error"
```


---

### ▶ ·½°¸5£ºÓ²¼þ¼¶ÓÅ»¯
#### 5.1 ÄÚ´æ³ØÅäÖÃ
ÔÚ`M2Server.ini`ÖÐÆôÓôóÄÚ´æ·ÖÅ䣺
```ini
[Memory]
HeapSize=4096 -- µ¥Î»MB£¬½¨ÒéÉèÖÃΪÎïÀíÄÚ´æµÄ75%
UseMemPool=1 -- ÆôÓÃÄÚ´æ³Ø¼õÉÙË鯬
```


#### 5.2 ¶àºËCPUÇ׺ÍÐÔ
ͨ¹ýÈÎÎñ¹ÜÀíÆ÷→ÏêϸÐÅÏ¢→ÉèÖÃÏà¹ØÐÔ→°ó¶¨M2Serverµ½ÎïÀíºËÐÄ£¨±Ü¿ª³¬Ï̺߳ËÐÄ£©

---

### ▶ ·½°¸6£ºÒì³£»Ø¹ö²ßÂÔ
#### 6.1 °æ±¾¿ØÖÆ
ʹÓÃGit¶Ô`Monster.DB`½øÐбä¸ü¹ÜÀí£º
```bash
git commit -m "Ѫħµ÷ÕûÖÁ50Íò"
git tag MobHP_20250404
```


#### 6.2 ×Ô¶¯»Ø¹ö½Å±¾
```python
# ѪÁ¿Ò쳣ʱ×Ô¶¯»Ö¸´±¸·Ý
import sqlite3
if current_hp > safe_threshold:
conn = sqlite3.connect('Monster.DB')
conn.execute('UPDATE Monster SET HP = ? WHERE Name = ?', (backup_hp, mob_name))
```


---

## Èý¡¢ÏÖ´úÒýÇæ¼¼ÊõÑݽø
### 2025Äê64λÒýÇæ½â¾ö·½°¸

| ÒýÇæÃû³Æ | ѪÁ¿ÉÏÏÞ | ºËÐļ¼Êõ |
|--------------|-----------------------------------|-------------------------------|
| Áú×åÒýÇæ | 9,223¾©£¨64λÓзûºÅÕûÐÍ£© | ·Ö²¼Ê½ÄÚ´æ¹ÜÀí |
| Á¿×ÓÒýÇæ | ÀíÂÛÎÞÉÏÏÞ£¨×Ö·û´®´æ´¢£© | Çø¿éÁ´Ê½·Ö¶ÎУÑé |
| Ììñ·ÒýÇæ | ¶¯Ì¬À©Õ¹£¨°´Ðè·ÖÅ䣩 | ÔÆÔ­Éú¼Ü¹¹+µ¯ÐÔ¼ÆËã |


---

## ËÄ¡¢¹¥·À¶Ô¿¹ÓëÊýÖµ°²È«
### 1. ·´ÆÆ½â´ëÊ©
- **ÊýÖµ»ìÏý**£ºÊµ¼ÊѪÁ¿=ÏÔʾֵ×Ëæ»úϵÊý£¨´æ´¢ÓÚ¼ÓÃÜÅäÖÃÎļþ£©
- **ÄÚ´æÐ£Ñé**£ºM2Serverʵʱ¼à¿ØHPÄÚ´æµØÖ·£¬·¢ÏÖ´Û¸ÄÁ¢¼´Ìß³öÍæ¼Ò

### 2. ѹÁ¦²âÊÔ·½°¸
ʹÓÃJMeterÄ£ÄâǧÈËͬʱ¹¥»÷¸ßѪÁ¿BOSS£¬¼à²âÒÔÏÂÖ¸±ê£º
- ÄÚ´æÐ¹Â©ÂÊ£¨Ó¦<0.1%/Сʱ£©
- Êý¾Ý°ü¶ªÊ§ÂÊ£¨Ó¦<0.01%£©
- CPUºËÐĸºÔؾùºâ¶È£¨²îÒì<15%£©