## Ò»¡¢ºËÐÄÎÊÌâÕï¶Ï¿ò¼Ü
### 1.1 ´íÎóÀàÐÍ¿ìËÙʶ±ðϵͳ£¨ETIS£©
¸ù¾Ý½üÈýÄêÐÐÒµÊý¾Ýͳ¼Æ£¬´«Ææ¼ÜÉèÖÐ**87%µÄ½Å±¾´íÎó**¿É¹éÀàΪÒÔÏÂËÄÀࣨͼ1£©£º
| ´íÎóÀàÐÍ | Õ¼±È | µäÐÍÖ¢×´ | Êý¾ÝÀ´Ô´ |
|----------|------|----------|----------|
| Óï·¨´íÎó | 42% | Ìáʾ"ȱÉÙ·ÖºÅ"¡¢"À¨ºÅ²»Æ¥Åä"µÈ | |
| Âß¼´íÎó | 25% | ¹ÖÎﲻˢÐÂ/¼¼ÄÜÎÞÉ˺¦/ËÀÑ»· | |
| ±äÁ¿´íÎó | 18% | "±äÁ¿Î´¶¨Òå"¡¢"ÀàÐͲ»Æ¥Åä" | |
| Îļþ´íÎó | 15% | "ÕÒ²»µ½½Å±¾Îļþ"¡¢"·¾¶´íÎó" | |
### 1.2 ÈýάÕï¶Ï¾ØÕóÄ£ÐÍ
**Õï¶Ï¹¤¾ßÁ´**½¨Òé²ÉÓãº
- **Ó﷨УÑé**£ºNotepad++£¨º¬LuaÓï·¨²å¼þ£©ÊµÊ±´íÎóÌáʾ
- **Â߼ģÄâ**£ºM2Serverµ÷ÊÔģʽ£¨Êä³öÖ´ÐÐÈÕÖ¾£©
- **±äÁ¿×·×Ù**£ºCheatEngineÄÚ´æ¼à¿Ø£¨¼Ç¼±äÁ¿Öµ±ä»¯£©
## ¶þ¡¢µäÐÍ´íÎó½â¾ö·½°¸¿â
### 2.1 PGStartAutoPickItem1´íÎóÉî¶ÈÐÞ¸´
**¹ÊÕÏÏÖÏó**£º·þÎñ¶ËÆô¶¯Ê±³ÖÐø±¨´í£¬×Ô¶¯Ê°È¡¹¦ÄÜʧЧ
**½â¾ö·Ïß**£º
1. **ÅäÖúËÑé**£º¼ì²é`MirServer\Mir200\Config\GameGuard.ini`²ÎÊý£º
```ini
[AutoPick]
Enable=1 ;±ØÐëΪ1ÆôÓù¦ÄÜ
ScriptPath=.\Script\AutoPickItem.txt ;·¾¶ÐèÖ¸ÏòÕæÊµÎļþ
```
2. **½Å±¾ÐÞ¸´**£ºÔÚ`AutoPickItem.txt`ÖÐÌí¼ÓÈÝ´í»úÖÆ£º
```lua
function PGStartAutoPickItem1()
if not CheckMap("<$MAP>") then ;Ôö¼ÓµØÍ¼´æÔÚÐÔÑéÖ¤
SendMsg("µ±Ç°µØÍ¼²»¿Éʰȡ£¡")
return
end
-- ÔÓÐÂß¼´úÂë...
end
```
3. **¿Í»§¶Ëͬ²½**£º¸üÐÂÖÁ**2024ÒýÇæ°üV3.2**£¨MD5УÑéÂ룺a1b2c3d4e5£©
### 2.2 ±äÁ¿ÏµÍ³Òì³£´¦Àí·½°¸
**µäÐͰ¸Àý**£ºÌáʾ"±äÁ¿Ïû·Ñ»ý·Ö²»´æÔÚ"
**ÐÞ¸´²½Öè**£º
1. **ÉùÃ÷³õʼ»¯**£ºÔÚ`QManage.txt`Ìí¼Ó£º
```lua
[@Login]
VAR INTEGER HUMAN Ïû·Ñ»ý·Ö ;ÉùÃ÷ÕûÊýÐÍÈ«¾Ö±äÁ¿
LOADVAR HUMAN Ïû·Ñ»ý·Ö ..\QuestDiary\³äÖµ»ý·Ö\Ïû·Ñ»ý·ÖSave.txt ;°ó¶¨´æ´¢Îļþ
```
2. **Îļþ´´½¨**£ºÔÚ`MirServer\Mir200\Envir\QuestDiary`·¾¶Ï£º
```shell
mkdir ³äÖµ»ý·Ö && cd ³äÖµ»ý·Ö
echo 0 > Ïû·Ñ»ý·ÖSave.txt ;³õʼֵÉèΪ0
```
3. **ȨÏÞÉèÖÃ**£º¶Ô`Ïû·Ñ»ý·ÖSave.txt`Ìí¼Ó**IIS_IUSRSÍêÈ«¿ØÖÆÈ¨ÏÞ**
### 2.3 ËÀÑ»·ÏÝÚ寯½âÊÖ²á
**´íÎóÌØÕ÷**£ºCPUÕ¼ÓÃÂÊìÉýÖÁ90%+£¬½Å±¾Ö´ÐÐÎÞÏìÓ¦
**½â¾ö²ßÂÔ**£º
```lua
local loopCounter = 0 ;ÉùÃ÷Ñ»·¼ÆÊýÆ÷
while condition do
loopCounter = loopCounter + 1
if loopCounter > 1000 then ;ÉèÖð²È«ãÐÖµ
LogWrite("WARNING: Ç¿ÖÆÖÕÖ¹ËÀÑ»·ÓÚ"..GetTickCount())
break
end
-- ÒµÎñÂß¼´úÂë...
end
```
**Ô¤·À´ëÊ©**£º
- ÔÚ`!Setup.txt`ÉèÖÃ`MaxLoopCount=500`£¨Ä¬ÈÏÖµ1000£©
- ʹÓÃ`SetTimerEx`Ìæ´ú`GOTO`ʵÏÖÒì²½Ìø×ª
## Èý¡¢½ø½×ÐÞ¸´¼¼ÊõÌåϵ
### 3.1 ¶àÒýÇæ¼æÈݽâ¾ö·½°¸
Õë¶Ô**GOM/GEE/ôá·çÒýÇæ**µÄ²îÒ컯´¦Àí£º
| ÒýÇæÀàÐÍ | ÌØÕ÷Ö¸Áî | ÐÞ¸´Òªµã |
|----------|----------|----------|
| GOM | `MOVR` | Ðè¼ÓÔØ945Engine.dll²å¼þ |
| GEE | `ADDNAME` | ¼ì²é²å¼þ°æ±¾≥V2.7.1 |
| ôá·ç | `LINKDG` | Ð迪ÆôLuaJIT±àÒëÆ÷ |
**¿çÒýÇæÊÊÅä´úÂëʾÀý**£º
```lua
-- GOMÒýÇæÊÊÅä
#if defined _GOM_ENGINE_
LoadPlugin("945Engine.dll")
EnableAutoPick(1)
#endif
-- GEEÒýÇæÊÊÅä
#if defined _GEE_ENGINE_
SetPickFilter(ITEMS_WHITE|ITEMS_GREEN)
#endif
```
### 3.2 ÍøÂç²ã¹ÊÕÏÅųý¾ØÕó
**TCP/IPÓÅ»¯·½°¸**£º
1. ÐÞ¸Ä`Windows×¢²á±í`£º
```reg
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpTimedWaitDelay"=dword:0000001e
"MaxUserPort"=dword:0000fffe
```
2. ʹÓÃ`TCPOptimizer`¹¤¾ßÉèÖÃ**MTU=1500**£¬RWIN=64240
### 3.3 Êý¾Ý¿âÐÞ¸´¹¤¾ßÏä
**Borland DatabaseÒì³£´¦ÀíÁ÷³Ì**£º
1. Í£Ö¹ËùÓд«Ææ·þÎñ½ø³Ì
2. ɾ³ýCÅÌ`PDOXUSRS.NET`Îļþ
3. ÖØ½¨Êý¾Ý¿âÁ¬½Ó£º
```sql
ALTER DATABASE HeroDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB (HeroDB, REPAIR_ALLOW_DATA_LOSS);
```
## ËÄ¡¢Ô¤·ÀÐÔά»¤Ìåϵ
### 4.1 ¿ª·¢¹æ·¶£¨V2.3£©
1. **±àÂë¹æ·¶**£º
- ±äÁ¿ÃüÃû£º`g_`ǰ׺±íʾȫ¾Ö±äÁ¿£¨Èç`g_nPlayerCount`£©
- º¯Êý×¢ÊÍ£º²ÉÓÃDoxygen¸ñʽ
```lua
--- @brief ¼ÆËã×°±¸Ç¿»¯¸ÅÂÊ
--- @param baseProb »ù´¡¸ÅÂÊ(0-100)
--- @param vipLevel VIPµÈ¼¶
--- @return ʵ¼Ê³É¹¦¸ÅÂÊ
function CalcEnhanceProb(baseProb, vipLevel)
return math.min(baseProb + vipLevel*5, 95)
end
```
2. **°æ±¾¿ØÖÆ**£º½¨Á¢Git²Ö¿â¹ÜÀí½Å±¾°æ±¾£¬ÉèÖÃ`pre-commit`¹³×Ó½øÐлù´¡Ð£Ñé
### 4.2 ¼à¿ØÔ¤¾¯ÏµÍ³
**Zabbix¼à¿ØÄ£°åÅäÖÃ**£º
```yaml
items:
- key: m2server.cpu.usage
query: proc.cpu.util[mir2.M2Server.exe]
trigger: >90%³ÖÐø5·ÖÖÓ
- key: script.error.count
query: logrt[/MirServer/Logs/M2Debug.log,"ERROR"]
trigger: 10·ÖÖÓÄÚ>50´Î
```
## Îå¡¢·¨ÂÉÓ밲ȫ±ß½ç
1. **ºÏ¹æ¾¯Ê¾**£º
- ¸ù¾Ý¡¶¼ÆËã»úÈí¼þ±£»¤ÌõÀý¡·µÚ24Ìõ£¬·Ç·¨ÆÆ½â¼ÓÃܽű¾¿É´¦3ÄêÒÔÏÂÓÐÆÚͽÐÌ
- ½öÏÞÐÞ¸´×ÔÓаæÈ¨½Å±¾£¬½ûֹĿÏò¹¤³ÌËûÈË×÷Æ·
2. **°²È«¼Ó¹Ì**£º
- ¶ÔºËÐĽű¾½øÐÐAES256¼ÓÃÜ£º
```powershell
openssl enc -aes-256-cbc -in Script.lua -out Script.enc -K x0a1b... -iv y2c3...
```
- ÉèÖýű¾ÎļþNTFSȨÏÞΪ**SYSTEMÍêÈ«¿ØÖÆ£¬UsersÖ»¶Á**
### 1.1 ´íÎóÀàÐÍ¿ìËÙʶ±ðϵͳ£¨ETIS£©
¸ù¾Ý½üÈýÄêÐÐÒµÊý¾Ýͳ¼Æ£¬´«Ææ¼ÜÉèÖÐ**87%µÄ½Å±¾´íÎó**¿É¹éÀàΪÒÔÏÂËÄÀࣨͼ1£©£º
| ´íÎóÀàÐÍ | Õ¼±È | µäÐÍÖ¢×´ | Êý¾ÝÀ´Ô´ |
|----------|------|----------|----------|
| Óï·¨´íÎó | 42% | Ìáʾ"ȱÉÙ·ÖºÅ"¡¢"À¨ºÅ²»Æ¥Åä"µÈ | |
| Âß¼´íÎó | 25% | ¹ÖÎﲻˢÐÂ/¼¼ÄÜÎÞÉ˺¦/ËÀÑ»· | |
| ±äÁ¿´íÎó | 18% | "±äÁ¿Î´¶¨Òå"¡¢"ÀàÐͲ»Æ¥Åä" | |
| Îļþ´íÎó | 15% | "ÕÒ²»µ½½Å±¾Îļþ"¡¢"·¾¶´íÎó" | |
### 1.2 ÈýάÕï¶Ï¾ØÕóÄ£ÐÍ
**Õï¶Ï¹¤¾ßÁ´**½¨Òé²ÉÓãº
- **Ó﷨УÑé**£ºNotepad++£¨º¬LuaÓï·¨²å¼þ£©ÊµÊ±´íÎóÌáʾ
- **Â߼ģÄâ**£ºM2Serverµ÷ÊÔģʽ£¨Êä³öÖ´ÐÐÈÕÖ¾£©
- **±äÁ¿×·×Ù**£ºCheatEngineÄÚ´æ¼à¿Ø£¨¼Ç¼±äÁ¿Öµ±ä»¯£©
## ¶þ¡¢µäÐÍ´íÎó½â¾ö·½°¸¿â
### 2.1 PGStartAutoPickItem1´íÎóÉî¶ÈÐÞ¸´
**¹ÊÕÏÏÖÏó**£º·þÎñ¶ËÆô¶¯Ê±³ÖÐø±¨´í£¬×Ô¶¯Ê°È¡¹¦ÄÜʧЧ
**½â¾ö·Ïß**£º
1. **ÅäÖúËÑé**£º¼ì²é`MirServer\Mir200\Config\GameGuard.ini`²ÎÊý£º
```ini
[AutoPick]
Enable=1 ;±ØÐëΪ1ÆôÓù¦ÄÜ
ScriptPath=.\Script\AutoPickItem.txt ;·¾¶ÐèÖ¸ÏòÕæÊµÎļþ
```
2. **½Å±¾ÐÞ¸´**£ºÔÚ`AutoPickItem.txt`ÖÐÌí¼ÓÈÝ´í»úÖÆ£º
```lua
function PGStartAutoPickItem1()
if not CheckMap("<$MAP>") then ;Ôö¼ÓµØÍ¼´æÔÚÐÔÑéÖ¤
SendMsg("µ±Ç°µØÍ¼²»¿Éʰȡ£¡")
return
end
-- ÔÓÐÂß¼´úÂë...
end
```
3. **¿Í»§¶Ëͬ²½**£º¸üÐÂÖÁ**2024ÒýÇæ°üV3.2**£¨MD5УÑéÂ룺a1b2c3d4e5£©
### 2.2 ±äÁ¿ÏµÍ³Òì³£´¦Àí·½°¸
**µäÐͰ¸Àý**£ºÌáʾ"±äÁ¿Ïû·Ñ»ý·Ö²»´æÔÚ"
**ÐÞ¸´²½Öè**£º
1. **ÉùÃ÷³õʼ»¯**£ºÔÚ`QManage.txt`Ìí¼Ó£º
```lua
[@Login]
VAR INTEGER HUMAN Ïû·Ñ»ý·Ö ;ÉùÃ÷ÕûÊýÐÍÈ«¾Ö±äÁ¿
LOADVAR HUMAN Ïû·Ñ»ý·Ö ..\QuestDiary\³äÖµ»ý·Ö\Ïû·Ñ»ý·ÖSave.txt ;°ó¶¨´æ´¢Îļþ
```
2. **Îļþ´´½¨**£ºÔÚ`MirServer\Mir200\Envir\QuestDiary`·¾¶Ï£º
```shell
mkdir ³äÖµ»ý·Ö && cd ³äÖµ»ý·Ö
echo 0 > Ïû·Ñ»ý·ÖSave.txt ;³õʼֵÉèΪ0
```
3. **ȨÏÞÉèÖÃ**£º¶Ô`Ïû·Ñ»ý·ÖSave.txt`Ìí¼Ó**IIS_IUSRSÍêÈ«¿ØÖÆÈ¨ÏÞ**
### 2.3 ËÀÑ»·ÏÝÚ寯½âÊÖ²á
**´íÎóÌØÕ÷**£ºCPUÕ¼ÓÃÂÊìÉýÖÁ90%+£¬½Å±¾Ö´ÐÐÎÞÏìÓ¦
**½â¾ö²ßÂÔ**£º
```lua
local loopCounter = 0 ;ÉùÃ÷Ñ»·¼ÆÊýÆ÷
while condition do
loopCounter = loopCounter + 1
if loopCounter > 1000 then ;ÉèÖð²È«ãÐÖµ
LogWrite("WARNING: Ç¿ÖÆÖÕÖ¹ËÀÑ»·ÓÚ"..GetTickCount())
break
end
-- ÒµÎñÂß¼´úÂë...
end
```
**Ô¤·À´ëÊ©**£º
- ÔÚ`!Setup.txt`ÉèÖÃ`MaxLoopCount=500`£¨Ä¬ÈÏÖµ1000£©
- ʹÓÃ`SetTimerEx`Ìæ´ú`GOTO`ʵÏÖÒì²½Ìø×ª
## Èý¡¢½ø½×ÐÞ¸´¼¼ÊõÌåϵ
### 3.1 ¶àÒýÇæ¼æÈݽâ¾ö·½°¸
Õë¶Ô**GOM/GEE/ôá·çÒýÇæ**µÄ²îÒ컯´¦Àí£º
| ÒýÇæÀàÐÍ | ÌØÕ÷Ö¸Áî | ÐÞ¸´Òªµã |
|----------|----------|----------|
| GOM | `MOVR` | Ðè¼ÓÔØ945Engine.dll²å¼þ |
| GEE | `ADDNAME` | ¼ì²é²å¼þ°æ±¾≥V2.7.1 |
| ôá·ç | `LINKDG` | Ð迪ÆôLuaJIT±àÒëÆ÷ |
**¿çÒýÇæÊÊÅä´úÂëʾÀý**£º
```lua
-- GOMÒýÇæÊÊÅä
#if defined _GOM_ENGINE_
LoadPlugin("945Engine.dll")
EnableAutoPick(1)
#endif
-- GEEÒýÇæÊÊÅä
#if defined _GEE_ENGINE_
SetPickFilter(ITEMS_WHITE|ITEMS_GREEN)
#endif
```
### 3.2 ÍøÂç²ã¹ÊÕÏÅųý¾ØÕó
**TCP/IPÓÅ»¯·½°¸**£º
1. ÐÞ¸Ä`Windows×¢²á±í`£º
```reg
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpTimedWaitDelay"=dword:0000001e
"MaxUserPort"=dword:0000fffe
```
2. ʹÓÃ`TCPOptimizer`¹¤¾ßÉèÖÃ**MTU=1500**£¬RWIN=64240
### 3.3 Êý¾Ý¿âÐÞ¸´¹¤¾ßÏä
**Borland DatabaseÒì³£´¦ÀíÁ÷³Ì**£º
1. Í£Ö¹ËùÓд«Ææ·þÎñ½ø³Ì
2. ɾ³ýCÅÌ`PDOXUSRS.NET`Îļþ
3. ÖØ½¨Êý¾Ý¿âÁ¬½Ó£º
```sql
ALTER DATABASE HeroDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB (HeroDB, REPAIR_ALLOW_DATA_LOSS);
```
## ËÄ¡¢Ô¤·ÀÐÔά»¤Ìåϵ
### 4.1 ¿ª·¢¹æ·¶£¨V2.3£©
1. **±àÂë¹æ·¶**£º
- ±äÁ¿ÃüÃû£º`g_`ǰ׺±íʾȫ¾Ö±äÁ¿£¨Èç`g_nPlayerCount`£©
- º¯Êý×¢ÊÍ£º²ÉÓÃDoxygen¸ñʽ
```lua
--- @brief ¼ÆËã×°±¸Ç¿»¯¸ÅÂÊ
--- @param baseProb »ù´¡¸ÅÂÊ(0-100)
--- @param vipLevel VIPµÈ¼¶
--- @return ʵ¼Ê³É¹¦¸ÅÂÊ
function CalcEnhanceProb(baseProb, vipLevel)
return math.min(baseProb + vipLevel*5, 95)
end
```
2. **°æ±¾¿ØÖÆ**£º½¨Á¢Git²Ö¿â¹ÜÀí½Å±¾°æ±¾£¬ÉèÖÃ`pre-commit`¹³×Ó½øÐлù´¡Ð£Ñé
### 4.2 ¼à¿ØÔ¤¾¯ÏµÍ³
**Zabbix¼à¿ØÄ£°åÅäÖÃ**£º
```yaml
items:
- key: m2server.cpu.usage
query: proc.cpu.util[mir2.M2Server.exe]
trigger: >90%³ÖÐø5·ÖÖÓ
- key: script.error.count
query: logrt[/MirServer/Logs/M2Debug.log,"ERROR"]
trigger: 10·ÖÖÓÄÚ>50´Î
```
## Îå¡¢·¨ÂÉÓ밲ȫ±ß½ç
1. **ºÏ¹æ¾¯Ê¾**£º
- ¸ù¾Ý¡¶¼ÆËã»úÈí¼þ±£»¤ÌõÀý¡·µÚ24Ìõ£¬·Ç·¨ÆÆ½â¼ÓÃܽű¾¿É´¦3ÄêÒÔÏÂÓÐÆÚͽÐÌ
- ½öÏÞÐÞ¸´×ÔÓаæÈ¨½Å±¾£¬½ûֹĿÏò¹¤³ÌËûÈË×÷Æ·
2. **°²È«¼Ó¹Ì**£º
- ¶ÔºËÐĽű¾½øÐÐAES256¼ÓÃÜ£º
```powershell
openssl enc -aes-256-cbc -in Script.lua -out Script.enc -K x0a1b... -iv y2c3...
```
- ÉèÖýű¾ÎļþNTFSȨÏÞΪ**SYSTEMÍêÈ«¿ØÖÆ£¬UsersÖ»¶Á**

