## Ò»¡¢ÐлáÕ½µØÍ¼½Å±¾ºËÐIJÎÊý¼Ü¹¹
### 1.1 »ù´¡²ÎÊý¶¨ÒåÄ£¿é
ÐлáÕ½µØÍ¼½Å±¾µÄºËÐIJÎÊýÌåϵÓÉ**µØÍ¼ÅäÖÃ**¡¢**ʱ¼ä¿ØÖÆ**¡¢**ʤ¸ºÅж¨**Èý´óÄ£¿é¹¹³É£º
- **µØÍ¼ÅäÖÃ**£º°üº¬`[GuildMap]`×Ö¶ÎϵĵØÍ¼±àºÅ£¨MapID£©¡¢×î´óÈËÊý£¨MaxUser£©¡¢°²È«Çø×ø±ê£¨SafeZone£©µÈ
- **ʱ¼ä¿ØÖÆ**£ºÍ¨¹ý`GuildWarTime`¶¨Ò忪սʱ¶Î£¨Èç20:00-21:00£©£¬`GuildWarDay`ÉèÖÿª·ÅÖÜÆÚ£¨Ã¿ÖÜÁù£©
- **ʤ¸ºÌõ¼þ**£º°üÀ¨`GuildWarKillScore`£¨»÷ɱ»ý·ÖÖÆ£©¡¢`GuildWarHoldTime`£¨¾ÝµãÕ¼Áìʱ³¤£©Á½ÖÖÅж¨Ä£Ê½
µäÐͽű¾Æ¬¶ÎʾÀý£º
```plaintext
[GuildMap]
MapID = G001
MaxUser = 200
SafeZone = 330,330
GuildWarTime = 20:00-21:00
GuildWarDay = 6
WinCondition = KillScore 3000
```
### 1.2 ¶¯Ì¬²ÎÊý½»»¥»úÖÆ
ÐлáÕ½¹ý³ÌÖÐÉæ¼°**ʵʱÊý¾Ý½»»»**Óë**¶àϵͳÁª¶¯**£º
- **»ý·Öϵͳ**£ºÍ¨¹ý`SetGuildVar`´æ´¢Ðлáʵʱ»ý·Ö£¬ÐèÅäºÏ`QuestDiary\GuildWarScore.txt`³Ö¾Ã»¯¼Ç¼
- **¸´»î»úÖÆ**£º`@GuildWarDie`ʼþ´¥·¢¸´»îµã´«ËÍ£¬ÐèУÑé`MapMove`×ø±êÊÇ·ñÔÚ°²È«Çø·¶Î§ÄÚ
- **½±Àø·¢·Å**£ºÊ¤¸ºÅж¨ºóµ÷ÓÃ`GiveGuildItem`Ðè¹ØÁª`GuildWarehouse`ÎïÆ·Êý¾Ý¿â
## ¶þ¡¢µäÐÍ´íÎóÀàÐÍÓë³ÉÒò·ÖÎö
### 2.1 ²ÎÊý¸ñʽ´íÎó£¨Õ¼±È38%£©
- **×ø±êÔ½½ç**£º°²È«Çø×ø±ê³¬³öµØÍ¼±ß½çµ¼ÖÂÍæ¼Ò¿¨Î»£¨ÈçµØÍ¼³ß´ç500x500È´ÉèÖÃSafeZone=600,600£©
- **ʱ¼ä¸ñʽÒì³£**£º`GuildWarTime`²ÉÓÃ12Ð¡Ê±ÖÆÎ´±ê×¢AM/PMÒý·¢Ê±¶Î´íÂÒ
- **±äÁ¿ÀàÐͳåÍ»**£º½«×Ö·û´®¸³Öµ¸øÊýÖµÐͱäÁ¿£¨Èç`SetGuildVar KillScore = "Èýǧ"`£©
### 2.2 ·¾¶ÒýÓôíÎó£¨Õ¼±È29%£©
- **Ïà¶Ô·¾¶Ê§Ð§**£º`#CALL [..\QuestDiary\ÐлáÕ½\GuildWarMain.txt]`ÔÚ¶à²ãǶÌ×µ÷ÓÃʱ·¾¶½âÎö´íÎó
- **ÎļþȨÏÞ²»×ã**£º`GuildWarLog.txt`ÈÕÖ¾Îļþ±»ÉèÖÃΪֻ¶Áµ¼ÖÂдÈëʧ°Ü
- **±àÂë¸ñʽ³åÍ»**£ºANSI±àÂëµÄ½Å±¾µ÷ÓÃUTF-8¸ñʽµÄ½±ÀøÅäÖÃÎļþÒý·¢ÂÒÂë
### 2.3 Â߼ѻ·´íÎó£¨Õ¼±È22%£©
- **ÎÞÏÞ¹¥·ÀÅж¨**£ºÎ´ÉèÖÃ`Break`Ìõ¼þµÄ`While`Ñ»·µ¼ÖÂCPUÕ¼ÓÃÂÊ100%
- **½±ÀøÖظ´·¢·Å**£º`#IF`Åж¨È±ÉÙ`CheckGuildItem`¼ì²âÒý·¢Ê¤·½¶à´ÎÁìÈ¡½±Àø
- **µØÍ¼×´Ì¬²»Í¬²½**£º½áÊøÊ¼þδµ÷ÓÃ`ClearMapMon`Çå¹Öµ¼Ö²ÐÁô¹ÖÎïÓ°ÏìÏÂÒ»³¡Õ½¶·
## Èý¡¢ÊµÕ½ÐÞ¸´°¸ÀýÏê½â
### 3.1 °¸ÀýÒ»£º¸´»îµãʧЧ
- **ÏÖÏó**£ºÍæ¼ÒËÀÍöºó´«ËÍÖÁµØÍ¼Íâ×ø±ê
- **Õï¶ÏÁ÷³Ì**£º
1. ¼ì²é`@GuildWarDie`ʼþÖеÄ`MapMove`Ö¸Áî
2. Ñé֤Ŀ±ê×ø±êÊÇ·ñÔÚ`[SafeZone]`¶¨Ò巶ΧÄÚ
3. ²é¿´µØÍ¼Îļþ`G001.map`µÄʵ¼Ê³ß´ç
- **ÐÞ¸´·½°¸**£º
```plaintext
[@GuildWarDie]
#IF
#ACT
MapMove G001 330 330 ; ÐÞÕýΪ°²È«ÇøÖÐÐÄ×ø±ê
SendMsg 5 ÒÑÔÚ°²È«Çø¸´»î
```
### 3.2 °¸Àý¶þ£º»ý·Ö²»ÀÛ¼Æ
- **ÏÖÏó**£º»÷ɱµÐÈ˺óÐлá»ý·Öδ¸üÐÂ
- **ÅŲ鲽Öè**£º
1. È·ÈÏ`KillScore`±äÁ¿ÊÇ·ñͨ¹ý`SetGuildVar`ÉùÃ÷
2. ¼ì²é`QuestDiary\GuildWarScore.txt`дÈëȨÏÞ
3. ʹÓÃM2ÒýÇæµ÷ÊÔģʽ¸ú×Ù±äÁ¿±ä»¯
- **¸ù±¾ÔÒò**£ºÎ´³õʼ»¯»ý·Ö´æ´¢Îļþ
- **½â¾ö·½°¸**£º
```plaintext
[GuildWarMain]
#IF
#ACT
VarFile GuildVar ..\QuestDiary\ÐлáÕ½\GuildWarScore.txt ; Ôö¼Ó´æ´¢Îļþ³õʼ»¯
```
## ËÄ¡¢ÏµÍ³»¯½â¾ö·½°¸Ìåϵ
### 4.1 ²ÎÊýÑéÖ¤¹¤¾ßÁ´
- **×ø±êУÑéÆ÷**£º¿ª·¢`MapCoordCheck.exe`×Ô¶¯¼ì²â×ø±êÓÐЧÐÔ£¨Êä³öXML±¨¸æ£©
- **ʱ¼ä¸ñʽת»»Æ÷**£º½«`GuildWarTime`ת»»ÎªUnixʱ¼ä´Á½øÐгåÍ»¼ì²â
- **±äÁ¿×·×Ù²å¼þ**£ºÔÚM2ÒýÇæÖм¯³É`VarDebugger.dll`ʵʱ¼à¿Ø±äÁ¿×´Ì¬
### 4.2 ÈÝ´í´¦Àí»úÖÆ
- **Ë«»º³åдÈë**£º¶Ô»ý·ÖÊý¾Ý²ÉÓÃ`WriteFileTemp`+`ReplaceFile`Ô×Ó²Ù×÷
- **Òì³£ÈÛ¶Ï**£ºµ±µ¥³¡Õ½¶·³¬¹ý3Сʱ×Ô¶¯´¥·¢`StopGuildWar`±£»¤»úÖÆ
- **״̬»Ø¹ö**£ºÍ¨¹ý`GuildWarSnapshot`ÿ5·ÖÖÓ±£´æÕ½³¡¿ìÕÕ
### 4.3 ÐÔÄÜÓÅ»¯·½°¸
- **ÄÚ´æ·ÖÒ³**£º½«Æµ·±¶ÁдµÄÐлáÊý¾Ý·ÖÅäÖÁ¶ÀÁ¢ÄÚ´æ³Ø
- **ʼþ¹ýÂË**£ºÍ¨¹ý`SetOnTimer`ºÏ²¢ÏàËÆÊ¼þ¼õÉٻص÷´ÎÊý
- **Òì²½ÈÕÖ¾**£º²ÉÓÃ`LogAsyncWriter`Ï̷߳ÖÀëÈÕ־дÈë²Ù×÷
## Îå¡¢×î¼Ñʵ¼ùÓëÔ¤·À´ëÊ©
1. **Èýά²âÊÔ·¨**£º
- ѹÁ¦²âÊÔ£º500ÈËͬͼս¶·³ÖÐø1Сʱ
- ±ß½ç²âÊÔ£ºÊäÈë0»ý·Ö¡¢24:00ʱ¼äµÈ¼«¶Ë²ÎÊý
- »Ø¹ö²âÊÔ£ºÇ¿Öƶϵç½âËøÐлá²Ö¿âÎïÆ·×´Ì¬
2. **°æ±¾¿ØÖƹ淶**£º
- ¶Ô`Envir\GuildWar`Ŀ¼ʵʩGit·ÖÖ§¹ÜÀí
- ÿ´ÎÐÞ¸ÄÖ´ÐÐ`diff GuildWarMain.txt > changelog.md`
3. **¼à¿ØÌåϵ´î½¨**£º
- ͨ¹ýZabbix¼à¿ØM2ÒýÇæÄÚ´æÕ¼ÓÃÂÊ
- ÅäÖÃElasticsearchÊÕ¼¯Õ½³¡Ê¼þÈÕÖ¾
### 1.1 »ù´¡²ÎÊý¶¨ÒåÄ£¿é
ÐлáÕ½µØÍ¼½Å±¾µÄºËÐIJÎÊýÌåϵÓÉ**µØÍ¼ÅäÖÃ**¡¢**ʱ¼ä¿ØÖÆ**¡¢**ʤ¸ºÅж¨**Èý´óÄ£¿é¹¹³É£º
- **µØÍ¼ÅäÖÃ**£º°üº¬`[GuildMap]`×Ö¶ÎϵĵØÍ¼±àºÅ£¨MapID£©¡¢×î´óÈËÊý£¨MaxUser£©¡¢°²È«Çø×ø±ê£¨SafeZone£©µÈ
- **ʱ¼ä¿ØÖÆ**£ºÍ¨¹ý`GuildWarTime`¶¨Ò忪սʱ¶Î£¨Èç20:00-21:00£©£¬`GuildWarDay`ÉèÖÿª·ÅÖÜÆÚ£¨Ã¿ÖÜÁù£©
- **ʤ¸ºÌõ¼þ**£º°üÀ¨`GuildWarKillScore`£¨»÷ɱ»ý·ÖÖÆ£©¡¢`GuildWarHoldTime`£¨¾ÝµãÕ¼Áìʱ³¤£©Á½ÖÖÅж¨Ä£Ê½
µäÐͽű¾Æ¬¶ÎʾÀý£º
```plaintext
[GuildMap]
MapID = G001
MaxUser = 200
SafeZone = 330,330
GuildWarTime = 20:00-21:00
GuildWarDay = 6
WinCondition = KillScore 3000
```
### 1.2 ¶¯Ì¬²ÎÊý½»»¥»úÖÆ
ÐлáÕ½¹ý³ÌÖÐÉæ¼°**ʵʱÊý¾Ý½»»»**Óë**¶àϵͳÁª¶¯**£º
- **»ý·Öϵͳ**£ºÍ¨¹ý`SetGuildVar`´æ´¢Ðлáʵʱ»ý·Ö£¬ÐèÅäºÏ`QuestDiary\GuildWarScore.txt`³Ö¾Ã»¯¼Ç¼
- **¸´»î»úÖÆ**£º`@GuildWarDie`ʼþ´¥·¢¸´»îµã´«ËÍ£¬ÐèУÑé`MapMove`×ø±êÊÇ·ñÔÚ°²È«Çø·¶Î§ÄÚ
- **½±Àø·¢·Å**£ºÊ¤¸ºÅж¨ºóµ÷ÓÃ`GiveGuildItem`Ðè¹ØÁª`GuildWarehouse`ÎïÆ·Êý¾Ý¿â
## ¶þ¡¢µäÐÍ´íÎóÀàÐÍÓë³ÉÒò·ÖÎö
### 2.1 ²ÎÊý¸ñʽ´íÎó£¨Õ¼±È38%£©
- **×ø±êÔ½½ç**£º°²È«Çø×ø±ê³¬³öµØÍ¼±ß½çµ¼ÖÂÍæ¼Ò¿¨Î»£¨ÈçµØÍ¼³ß´ç500x500È´ÉèÖÃSafeZone=600,600£©
- **ʱ¼ä¸ñʽÒì³£**£º`GuildWarTime`²ÉÓÃ12Ð¡Ê±ÖÆÎ´±ê×¢AM/PMÒý·¢Ê±¶Î´íÂÒ
- **±äÁ¿ÀàÐͳåÍ»**£º½«×Ö·û´®¸³Öµ¸øÊýÖµÐͱäÁ¿£¨Èç`SetGuildVar KillScore = "Èýǧ"`£©
### 2.2 ·¾¶ÒýÓôíÎó£¨Õ¼±È29%£©
- **Ïà¶Ô·¾¶Ê§Ð§**£º`#CALL [..\QuestDiary\ÐлáÕ½\GuildWarMain.txt]`ÔÚ¶à²ãǶÌ×µ÷ÓÃʱ·¾¶½âÎö´íÎó
- **ÎļþȨÏÞ²»×ã**£º`GuildWarLog.txt`ÈÕÖ¾Îļþ±»ÉèÖÃΪֻ¶Áµ¼ÖÂдÈëʧ°Ü
- **±àÂë¸ñʽ³åÍ»**£ºANSI±àÂëµÄ½Å±¾µ÷ÓÃUTF-8¸ñʽµÄ½±ÀøÅäÖÃÎļþÒý·¢ÂÒÂë
### 2.3 Â߼ѻ·´íÎó£¨Õ¼±È22%£©
- **ÎÞÏÞ¹¥·ÀÅж¨**£ºÎ´ÉèÖÃ`Break`Ìõ¼þµÄ`While`Ñ»·µ¼ÖÂCPUÕ¼ÓÃÂÊ100%
- **½±ÀøÖظ´·¢·Å**£º`#IF`Åж¨È±ÉÙ`CheckGuildItem`¼ì²âÒý·¢Ê¤·½¶à´ÎÁìÈ¡½±Àø
- **µØÍ¼×´Ì¬²»Í¬²½**£º½áÊøÊ¼þδµ÷ÓÃ`ClearMapMon`Çå¹Öµ¼Ö²ÐÁô¹ÖÎïÓ°ÏìÏÂÒ»³¡Õ½¶·
## Èý¡¢ÊµÕ½ÐÞ¸´°¸ÀýÏê½â
### 3.1 °¸ÀýÒ»£º¸´»îµãʧЧ
- **ÏÖÏó**£ºÍæ¼ÒËÀÍöºó´«ËÍÖÁµØÍ¼Íâ×ø±ê
- **Õï¶ÏÁ÷³Ì**£º
1. ¼ì²é`@GuildWarDie`ʼþÖеÄ`MapMove`Ö¸Áî
2. Ñé֤Ŀ±ê×ø±êÊÇ·ñÔÚ`[SafeZone]`¶¨Ò巶ΧÄÚ
3. ²é¿´µØÍ¼Îļþ`G001.map`µÄʵ¼Ê³ß´ç
- **ÐÞ¸´·½°¸**£º
```plaintext
[@GuildWarDie]
#IF
#ACT
MapMove G001 330 330 ; ÐÞÕýΪ°²È«ÇøÖÐÐÄ×ø±ê
SendMsg 5 ÒÑÔÚ°²È«Çø¸´»î
```
### 3.2 °¸Àý¶þ£º»ý·Ö²»ÀÛ¼Æ
- **ÏÖÏó**£º»÷ɱµÐÈ˺óÐлá»ý·Öδ¸üÐÂ
- **ÅŲ鲽Öè**£º
1. È·ÈÏ`KillScore`±äÁ¿ÊÇ·ñͨ¹ý`SetGuildVar`ÉùÃ÷
2. ¼ì²é`QuestDiary\GuildWarScore.txt`дÈëȨÏÞ
3. ʹÓÃM2ÒýÇæµ÷ÊÔģʽ¸ú×Ù±äÁ¿±ä»¯
- **¸ù±¾ÔÒò**£ºÎ´³õʼ»¯»ý·Ö´æ´¢Îļþ
- **½â¾ö·½°¸**£º
```plaintext
[GuildWarMain]
#IF
#ACT
VarFile GuildVar ..\QuestDiary\ÐлáÕ½\GuildWarScore.txt ; Ôö¼Ó´æ´¢Îļþ³õʼ»¯
```
## ËÄ¡¢ÏµÍ³»¯½â¾ö·½°¸Ìåϵ
### 4.1 ²ÎÊýÑéÖ¤¹¤¾ßÁ´
- **×ø±êУÑéÆ÷**£º¿ª·¢`MapCoordCheck.exe`×Ô¶¯¼ì²â×ø±êÓÐЧÐÔ£¨Êä³öXML±¨¸æ£©
- **ʱ¼ä¸ñʽת»»Æ÷**£º½«`GuildWarTime`ת»»ÎªUnixʱ¼ä´Á½øÐгåÍ»¼ì²â
- **±äÁ¿×·×Ù²å¼þ**£ºÔÚM2ÒýÇæÖм¯³É`VarDebugger.dll`ʵʱ¼à¿Ø±äÁ¿×´Ì¬
### 4.2 ÈÝ´í´¦Àí»úÖÆ
- **Ë«»º³åдÈë**£º¶Ô»ý·ÖÊý¾Ý²ÉÓÃ`WriteFileTemp`+`ReplaceFile`Ô×Ó²Ù×÷
- **Òì³£ÈÛ¶Ï**£ºµ±µ¥³¡Õ½¶·³¬¹ý3Сʱ×Ô¶¯´¥·¢`StopGuildWar`±£»¤»úÖÆ
- **״̬»Ø¹ö**£ºÍ¨¹ý`GuildWarSnapshot`ÿ5·ÖÖÓ±£´æÕ½³¡¿ìÕÕ
### 4.3 ÐÔÄÜÓÅ»¯·½°¸
- **ÄÚ´æ·ÖÒ³**£º½«Æµ·±¶ÁдµÄÐлáÊý¾Ý·ÖÅäÖÁ¶ÀÁ¢ÄÚ´æ³Ø
- **ʼþ¹ýÂË**£ºÍ¨¹ý`SetOnTimer`ºÏ²¢ÏàËÆÊ¼þ¼õÉٻص÷´ÎÊý
- **Òì²½ÈÕÖ¾**£º²ÉÓÃ`LogAsyncWriter`Ï̷߳ÖÀëÈÕ־дÈë²Ù×÷
## Îå¡¢×î¼Ñʵ¼ùÓëÔ¤·À´ëÊ©
1. **Èýά²âÊÔ·¨**£º
- ѹÁ¦²âÊÔ£º500ÈËͬͼս¶·³ÖÐø1Сʱ
- ±ß½ç²âÊÔ£ºÊäÈë0»ý·Ö¡¢24:00ʱ¼äµÈ¼«¶Ë²ÎÊý
- »Ø¹ö²âÊÔ£ºÇ¿Öƶϵç½âËøÐлá²Ö¿âÎïÆ·×´Ì¬
2. **°æ±¾¿ØÖƹ淶**£º
- ¶Ô`Envir\GuildWar`Ŀ¼ʵʩGit·ÖÖ§¹ÜÀí
- ÿ´ÎÐÞ¸ÄÖ´ÐÐ`diff GuildWarMain.txt > changelog.md`
3. **¼à¿ØÌåϵ´î½¨**£º
- ͨ¹ýZabbix¼à¿ØM2ÒýÇæÄÚ´æÕ¼ÓÃÂÊ
- ÅäÖÃElasticsearchÊÕ¼¯Õ½³¡Ê¼þÈÕÖ¾

