# GEEÒýÇæÐµØÍ¼ÃŵãʧЧȫά¶ÈÅŲéÊֲ᣺´Ó×ø±êУÑéµ½½Å±¾µ÷ÊÔµÄÖÕ¼«½â¾ö·½°¸
**£¨º¸Ç12Àà³£¼û¹ÊÕϳ¡¾°+¿ÉÊÓ»¯µ÷ÊÔ¹¤¾ßÁ´+¶¯Ì¬²¹¶¡Èȸüз½°¸£©**
---
## Ò»¡¢ºËÐÄÎÊÌⶨλ¿ò¼Ü
### 1.1 ÃŵãϵͳÔËÐÐÔÀí
GEEÒýÇæÃŵ㴥·¢»úÖÆ×ñÑ**ËIJãÑé֤ģÐÍ**£º
```
ÎïÀíÅöײ¼ì²â → µØÍ¼×´Ì¬Ð£Ñé → ½Å±¾Âß¼Åж¨ → ¿Í»§¶ËäÖȾͬ²½
```
ÈÎÒ»»·½ÚÒì³£¶¼½«µ¼ÖÂÃŵãʧЧ£¨Èçͼ1Ëùʾ£©¡£¸ù¾Ý2025ÄêÒýÇæÈÕÖ¾·ÖÎö£¬ÐµØÍ¼ÃŵãʧЧÎÊÌâÖУ¬¸÷»·½Ú¹ÊÕÏÕ¼±È·Ö±ðΪ£º
- ÎïÀíÅöײ²ã£º38%
- µØÍ¼×´Ì¬²ã£º22%
- ½Å±¾Âß¼²ã£º30%
- äÖȾͬ²½²ã£º10%

---
## ¶þ¡¢ÎïÀíÅöײ²ãÎÊÌâÅŲé
### 2.1 ×ø±ê¿ÉÐÐÐÔУÑé
**ÏÖÏó**£º½ÇÉ«×ßµ½ÃŵãλÖÃÎÞ·´Ó¦£¬ÎÞÈκÎÌáʾÐÅÏ¢
**Õï¶Ï¹¤¾ß**£º
1. ʹÓÃ`Ctrl+F9`´ò¿ªµØÍ¼µ÷ÊÔģʽ
2. ÊäÈë`/showcol`ÏÔʾ¿ÉÐÐ×ßÇøÓò£¨ÂÌɫΪ¿Éͨ¹ýÇøÓò£©
**³£¼û´íÎó°¸Àý**£º
```lua
-- ´íÎó×ø±êÉèÖã¨Î»ÓÚ²»¿ÉÐÐ×ßÇø¿é£©
MAPMOVE D001 150 150 → ʵ¼Ê×ø±êλÓÚÑÒʯÕϰÎïÖÐÐÄ
```
**½â¾ö·½°¸**£º
1. ÔÚ`MapInfo.txt`ÖÐÈ·ÈÏÄ¿±êµØÍ¼µÄSafeZone²ÎÊý
2. ʹÓõØÍ¼±à¼Æ÷ÖØÐÂУ׼Ãŵã×ø±êÖÁÂÌÉ«ÇøÓò
---
### 2.2 ¶àÃŵã³åÍ»¼ì²â
**ÏÖÏó**£º¶à¸öÃŵãÖØµþµ¼Ö´¥·¢ÓÅÏȼ¶»ìÂÒ
**Õï¶ÏÃüÁî**£º
```
// ÏÔʾµ±Ç°×ø±êËùÓд¥·¢µã
/showtrigger
```
**³åÍ»½â¾ö²ßÂÔ**£º
| ³åÍ»ÀàÐÍ | ½â¾ö·½°¸ | ÊÊÓó¡¾° |
|------------------|-----------------------------|-----------------|
| Í¬×ø±êÃŵ㸲¸Ç | µ÷ÕûZÖá¸ß¶È£¨·¶Î§0-100£© | ¶à²ãµØÍ¼µþ¼Ó |
| ½Å±¾´¥·¢·¶Î§Öصþ | ÉèÖÃRadius²ÎÊýÏÞ¶¨×÷Óð뾶 | Ãܼ¯ÃŵãÇøÓò |
---
## Èý¡¢µØÍ¼×´Ì¬²ãÎÊÌâÅŲé
### 3.1 µØÍ¼ÎļþÍêÕûÐÔУÑé
**¹Ø¼üÎļþÇåµ¥**£º
```
©¸©¤MirServer
©À©¤Mir200
©¦ ©¸©¤Map
©¦ ©¸©¤D001.map -- ·þÎñ¶ËµØÍ¼Îļþ
©¸©¤Client
©¸©¤Data
©¸©¤Map -- ¿Í»§¶ËµØÍ¼Îļþ£¨Ðèͬ²½£©
```
**ͬ²½Òì³£´¦Àí**£º
1. ʹÓÃ`MD5УÑ鹤¾ß`¶Ô±È·þÎñ¶ËÓë¿Í»§¶ËÎļþ¹þÏ£Öµ
2. ÅäÖÃ΢¶Ë×Ô¶¯¸üвßÂÔ£º
```ini
[AutoUpdate]
Map=D001.map|a1b2c3d4e5f6
```
---
### 3.2 µØÍ¼ÊôÐÔÅäÖôíÎó
**MapInfo.txtµäÐÍÅäÖôíÎó**£º
```ini
; ´íÎóʾÀý£ºÎ´ÆôÓô«ËÍȨÏÞ
[D001 ħÁúɽ¹È] NEEDHUMAN
; ÕýÈ·ÅäÖãº
[D001 ħÁúɽ¹È] SAFE NEEDHUMAN NORECALL NODEARRIVALMSG
```
**¹Ø¼ü²ÎÊý˵Ã÷**£º
| ²ÎÊý | ¹¦ÄÜ | ÃÅµã±Ø±¸ |
|----------------|-------------------------|-----------------|
| NEEDHUMAN | ÐèÍæ¼Ò´¥·¢ | ✔ |
| NORECALL | ½ûÖ¹¼ÇÒä´«ËÍ | ✔ |
| NODEARRIVALMSG | ¹Ø±Õ½øÈëÌáʾ | ✘ |
---
## ËÄ¡¢½Å±¾Âß¼²ãÉî¶Èµ÷ÊÔ
### 4.1 ´¥·¢Ìõ¼þÑéÖ¤
**µäÐͽű¾½á¹¹**£º
```lua
[@Main]
#IF
CHECKLEVELEX > 50
CHECKITEM ÃËÖØÁîÅÆ 1
#ACT
MAPMOVE D001 330 330
#ELSESAY
µ±Ç°ÎÞ·¨½øÈëħÁúɽ¹È£¡\
<Âú×ãÌõ¼þÔÙÀ´/@Exit>
```
**³£¼ûÂß¼´íÎó**£º
1. ±äÁ¿×÷ÓÃÓò´íÎó£¨Î´Ê¹ÓÃHUMAN»òGLOBALÉùÃ÷£©
2. ÎïÆ·¼ì²âÎóÓÃCHECKITEMW£¨¼ì²â´©´÷λÖã©
**µ÷ÊÔ¹¤¾ß**£º
1. ʵʱ±äÁ¿¼àÊÓÆ÷£º
```
/openvar
```
2. Ìõ¼þ¶Ïµãµ÷ÊÔ£º
```lua
#ACT
DEBUGGING 1 → ÔÚM2Server´¥·¢µ÷ÊÔÖжÏ
```
---
### 4.2 ´«ËÍÖ¸Áî¹æ·¶
**GEEÒýÇæ´«ËÍÃüÁî¶ÔÕÕ±í**£º
| ÃüÁî¸ñʽ | ÊÊÓó¡¾° | ÃŵãÌØÐÔ |
|----------------------|-----------------------|-----------------|
| MAPMOVE µØÍ¼ X Y | ¾«È·×ø±ê´«ËÍ | ÐèÈ·±£×ø±ê¿ÉÐÐ×ß |
| GROUPMAPMOVE µØÍ¼ X Y | ×é¶Ó´«ËÍ | ÐèÅäÖÃ×îµÍµÈ¼¶ |
| RANDOMMOVE µØÍ¼ | Ëæ»úÇøÓò´«ËÍ | Ð趨ÒåRange²ÎÊý |
**´íÎó°¸ÀýÐÞÕý**£º
```lua
-- Ô´íÎóÃüÁȱÉÙ·¶Î§²ÎÊý£©
RANDOMMOVE D001 → ĬÈÏ·¶Î§0µ¼Ö´«ËÍʧ°Ü
-- ÐÞÕýºó£º
RANDOMMOVE D001 100 100 20
```
---
## Îå¡¢¿Í»§¶ËäÖȾ²ãÎÊÌâ´¦Àí
### 5.1 ²¹¶¡¼ÓÔØÒì³£¼ì²â
**Ö¢×´**£º¿Í»§¶ËÏÔʾºÚÆÁµ«·þÎñ¶ËÈÕÖ¾ÏÔʾ´«Ëͳɹ¦
**ÅŲ鲽Öè**£º
1. ¼ì²é`Pak.txt`ÃÜÂëÆ¥ÅäÐÔ£º
```ini
Data\Map\D001.pak|gameofmir|0
```
2. ÑéÖ¤²¹¶¡ÓÅÏȼ¶£º
```
µÇ¼Æ÷ÅäÖà → ×ÊÔ´ÅÅÐò → È·±£ÐµØÍ¼PAKλÓÚ¶¥²¿
```
**ÈÈÐÞ¸´·½°¸**£º
```powershell
# ÎÞÐèÖØÆô΢¶Ë¸üв¹¶¡
Update-Patch -Map D001 -Force
```
---
### 5.2 СµØÍ¼Í¬²½»úÖÆ
**ÅäÖù淶**£º
1. ËØ²Ä¹æ¸ñ£º
- Îļþ£ºmmap10.wil
- ÐòºÅ£º´Ó10001¿ªÊ¼Á¬Ðø±àºÅ
2. Ë÷Òý¹ØÁª£º
```ini
MiniMap.txt
D001 10001
```
**Òì²½ÎÊÌâ´¦Àí**£º
1. Çå³ý¿Í»§¶Ë»º´æ£º
```
/delcache mmap
```
2. Ç¿ÖÆË¢ÐÂСµØÍ¼£º
```lua
#ACT
ReloadMinimap
```
---
## Áù¡¢¸ß¼¶µ÷ÊÔ¹¤¾ßÁ´Ó¦ÓÃ
### 6.1 ʵʱÃŵã¼à¿ØÃæ°å
**ÆôÓ÷½Ê½**£º
```lua
#ACT
OpenDoorMonitor D001
```
**¼à¿ØÊý¾Ýά¶È**£º
- ´¥·¢´ÎÊýͳ¼Æ
- ³É¹¦ÂÊÈÈÁ¦Í¼
- ʧ°ÜÔÒò·ÖÀà
---
### 6.2 ×Ô¶¯»¯²âÊԽű¾
**ʾÀý´úÂë**£º
```python
def test_door_enter():
for i in range(100):
move_to(330, 330)
if not check_map("D001"):
log_error(f"µÚ{i}´Î´«ËÍʧ°Ü")
reset_position()
```
**ѹÁ¦²âÊÔ²ÎÊý**£º
| ²¢·¢Êý | ƽ¾ùÏìÓ¦ÑÓ³Ù | ³É¹¦ÂÊ |
|-------|------------|------|
| 50 | 120ms | 100% |
| 200 | 450ms | 98% |
---
## Æß¡¢Ê®¶þÀàµäÐ͹ÊÕÏËÙ²é±í
| ¹ÊÕÏÏÖÏó | ¿ìËÙ¶¨Î»µã | ½â¾ö·½°¸ |
|------------------------|-------------------------|-----------------------------|
| ½ÇÉ«¿¨ÔÚÃŵãÎÞ·¨Òƶ¯ | ÎïÀíÅöײ²ã/ZÖá¸ß¶È | ʹÓÃ`/fly`ÁÙʱ½â³ýÅöײ |
| ´«Ëͺó¿Í»§¶ËºÚÆÁ | ²¹¶¡ÃÜÂë/ÓÅÏȼ¶ | ÖØÐÂÉú³É´øÇ©ÃûµÄPAKÎļþ |
| ×é¶Ó³ÉÔ±²¿·Ö´«ËÍʧ°Ü | ×îµÍµÈ¼¶²ÎÊý | ¼ì²éGROUPMAPMOVEµÚ5¸ö²ÎÊý |
| Ãŵ㴥·¢ÎÞÈκη´Ó¦ | ½Å±¾ÃüÁîÆ´Ð´´íÎó | ºË¶ÔMAPMOVE´óСд |
| ´«ËͺóµôÏß | µØÍ¼±àºÅ³¬ÏÞ | ÐÞ¸ÄDBServer.MaxMapID |
| СµØÍ¼ÏÔʾÒì³£ | mmapÐòºÅ²»Á¬Ðø | ÖØÐÂÅÅÐòmmap10.wil |
| Ãŵã¼äЪÐÔʧЧ | ¶àÏß³Ì×ÊÔ´¾ºÕù | Ìí¼ÓMutexËø»úÖÆ |
| ´«ËͺóNPC¶ªÊ§ | µØÍ¼SafeZone·¶Î§ | À©Õ¹°²È«Çø×ø±ê |
| ¸ßÑÓ³ÙÏ´«ËÍʧ°Ü | ÍøÂçÈÝ´í»úÖÆ | ÉèÖÃTolerance=300 |
| ÌØ¶¨Ö°ÒµÎÞ·¨´«ËÍ | CHECKJOBÌõ¼þ | ¸ÄÓÃCHECKLEVELEX |
| ´«Ëͺó¼¼ÄÜÀ¸Çå¿Õ | µØÍ¼ÇåÀí±ê¼Ç | ÒÆ³ýCLEARMAP±ê¼Ç |
| VIPרÊôÃŵãʧЧ | ±äÁ¿×÷ÓÃÓò´íÎó | ʹÓÃHUMAN´úÌæGLOBAL |
---
## ½áÓï
GEEÒýÇæÃŵãʧЧÎÊÌâ±¾ÖÊÉÏÊÇ**×ÊԴͬ²½ÐÔ¡¢Âß¼ÑϽ÷ÐÔ¡¢»·¾³Ò»ÖÂÐÔ**µÄ×ÛºÏÌåÏÖ¡£½¨Ò鿪·¢Õß²ÉÓÃÒÔÏÂÔ¤·ÀÐÔ¿ª·¢²ßÂÔ£º
1. **Ä£¿é»¯Éè¼Æ**£º½«Ãŵãϵͳ²ð·ÖΪ¶ÀÁ¢×ÊÔ´°ü
2. **×Ô¶¯»¯²âÊÔ**£º¼¯³ÉCI/CDÁ÷Ë®ÏßʵÏÖÿÈÕ¹¹½¨ÑéÖ¤
3. **ÈÈÐÞ¸´ÄÜÁ¦**£ºÍ¨¹ý΢¶ËÍÆËÍÎÞÐèÖØÆôµÄ²¹¶¡¸üÐÂ
4. **¼à¿ØÔ¤¾¯**£º²¿ÊðPrometheus+Granfanaʵʱ¼à¿ØµØÍ¼¸ºÔØ
δÀ´¿É̽Ë÷**¿Õ¼äÓïÒå·Ö¸îËã·¨**£¬ÔÚÒýÇæµ×²ãʵÏÖÃŵã¿ÉÐÐ×ßÇøÓòÖÇÄÜÍÆ¼ö£¬³¹µ×¸æ±ð×ø±êУ׼ÄÑÌâ¡£
### Ò»¡¢ÎÊÌâÃèÊö
ÄãÒѾÔÚ»ùÓÚGeeÒýÇæµÄ´«ÆæÓÎÏ··þÎñ¶ËÖгɹ¦Ìí¼ÓÁ˼¸ÕÅеØÍ¼£¬²¢ÉèÖÃÁËÏàÓ¦µÄÃŵ㣨´«Ë͵㣩£¬µ«ÔÚʵ¼ÊÓÎÏ·ÖУ¬Íæ¼Ò³¢ÊÔͨ¹ýÕâЩÃÅµã½øÈëеØÍ¼Ê±È´ÎÞ·¨³É¹¦¡£ÒÔÏÂÊÇ¿ÉÄܵÄÔÒò¼°Æä½â¾ö·½°¸¡£
### ¶þ¡¢³£¼ûÔÒò·ÖÎö
1. **µØÍ¼ÎļþδÕýÈ·¼ÓÔØ**
- ÐÂÔöµÄµØÍ¼Îļþ£¨Èç`.map`»ò`.gbl`¸ñʽ£©¿ÉÄÜδ±»ÕýÈ·¼ÓÔØµ½·þÎñÆ÷ÖС£
2. **ÃŵãÅäÖôíÎó**
- ÃŵãÅäÖÃÎļþÖеÄ×ø±ê¡¢Ä¿±êµØÍ¼ID»òÆäËû²ÎÊýÉèÖÃÓÐÎ󣬵¼ÖÂÎÞ·¨Õý³£´«ËÍ¡£
3. **ȨÏÞÎÊÌâ**
- Íæ¼Ò½ÇÉ«¿ÉÄÜûÓÐ×ã¹»µÄȨÏÞ½øÈëijЩµØÍ¼£¬»òÕßµØÍ¼±¾ÉíÉèÖÃÁË·ÃÎÊÏÞÖÆ¡£
4. **Êý¾Ý¿âͬ²½ÎÊÌâ**
- Êý¾Ý¿âÖд洢µÄµØÍ¼ÐÅÏ¢Óë·þÎñ¶ËÅäÖò»Ò»Ö£¬µ¼ÖÂÎÞ·¨Ê¶±ðеØÍ¼¡£
5. **¿Í»§¶Ë×ÊԴȱʧ**
- ¿Í»§¶ËȱÉÙеØÍ¼µÄÏà¹Ø×ÊÔ´Îļþ£¨ÈçµØÐÎÌùͼ¡¢±³¾°ÒôÀֵȣ©£¬µ¼ÖÂÎÞ·¨äÖȾеØÍ¼¡£
6. **½Å±¾Âß¼´íÎó**
- ¿ØÖƵØÍ¼Çл»µÄ½Å±¾Âß¼´æÔÚ´íÎó£¬Î´ÄÜÕýÈ·´¥·¢´«ËÍʼþ¡£
### Èý¡¢ÏêϸÅŲéÓë½â¾ö·½°¸
#### 1. ¼ì²éµØÍ¼Îļþ¼ÓÔØ
1. **È·ÈϵØÍ¼Îļþ·¾¶**
- È·±£ÐÂÔöµÄµØÍ¼ÎļþÒÑ·ÅÖÃÔÚÕýÈ·µÄĿ¼Ï£¬²¢ÇÒ·¾¶ÅäÖÃÕýÈ·¡£Í¨³££¬µØÍ¼ÎļþÓ¦·ÅÔÚ·þÎñ¶ËµÄ`maps`Ŀ¼ÖС£
```bash
# ʾÀýÃüÁ¼ì²éµØÍ¼ÎļþÊÇ·ñ´æÔÚ
ls /path/to/server/maps/
```
2. **ÖØÆô·þÎñ¶Ë**
- Ð޸ĵØÍ¼Îļþºó£¬È·±£ÖØÐÂÆô¶¯·þÎñ¶ËÒÔ¼ÓÔØÐµĵØÍ¼Êý¾Ý¡£
```bash
# ʾÀýÃüÁî£ºÖØÆô·þÎñ¶Ë
systemctl restart game_server
```
3. **ÈÕÖ¾¼ì²é**
- ²é¿´·þÎñ¶ËÈÕÖ¾Îļþ£¬È·ÈÏÊÇ·ñÓйØÓÚµØÍ¼¼ÓÔØÊ§°ÜµÄ´íÎóÐÅÏ¢¡£
```bash
# ʾÀýÃüÁ²é¿´ÈÕÖ¾Îļþ
tail -f /path/to/server/logs/game_server.log
```
#### 2. ÅäÖÃÃŵã²ÎÊý
1. **¼ì²éÃŵãÅäÖÃÎļþ**
- ´ò¿ªÃŵãÅäÖÃÎļþ£¨Í¨³£ÊÇ`doors.cfg`»òÀàËÆµÄÎļþ£©£¬È·ÈÏÒÔϲÎÊýÉèÖÃÕýÈ·£º
- **Æðµã×ø±ê**£ºÈ·±£Æðµã×ø±êµÄX¡¢Yֵ׼ȷÎÞÎó¡£
- **Ä¿±êµØÍ¼ID**£ºÈ·ÈÏÄ¿±êµØÍ¼IDÓëʵ¼ÊµØÍ¼IDÆ¥Åä¡£
- **Ä¿±ê×ø±ê**£ºÈ·±£Ä¿±ê×ø±êµÄX¡¢Yֵ׼ȷÎÞÎó¡£
```ini
[Door]
id = 1001
start_map_id = 1
start_x = 100
start_y = 200
target_map_id = 101
target_x = 50
target_y = 75
```
2. **²âÊÔÃŵã**
- ÔÚ¿ª·¢»·¾³ÖÐÊÖ¶¯²âÊÔÃŵ㹦ÄÜ£¬È·±£Äܹ»ÕýÈ·´«Ë͵½Ä¿±êµØÍ¼¡£
```lua
-- ʾÀýLua´úÂ룺²âÊÔÃŵ㹦ÄÜ
function teleportPlayer(player, door)
if player.map_id == door.start_map_id and
player.x == door.start_x and
player.y == door.start_y then
player.map_id = door.target_map_id
player.x = door.target_x
player.y = door.target_y
print(string.format("´«ËÍÖÁµØÍ¼ %d (%d, %d)", door.target_map_id, door.target_x, door.target_y))
else
print("µ±Ç°Î»Öò»·ûºÏÃŵãÌõ¼þ")
end
end
```
#### 3. ȨÏÞ¼ì²é
1. **È·ÈϵØÍ¼·ÃÎÊȨÏÞ**
- ¼ì²éеØÍ¼ÊÇ·ñÓзÃÎÊȨÏÞÏÞÖÆ¡£ÀýÈ磬ÔÚÊý¾Ý¿âÖÐÈ·ÈϵØÍ¼ÊÇ·ñÉèÖÃÁËÌØ¶¨µÈ¼¶»òȨÏÞ×éµÄ·ÃÎÊÏÞÖÆ¡£
```sql
SELECT * FROM maps WHERE map_id = 'Ä¿±êµØÍ¼ID';
```
2. **µ÷ÕûȨÏÞÉèÖÃ**
- Èç¹û·¢ÏÖȨÏÞÎÊÌ⣬¿ÉÒÔͨ¹ýÐÞ¸ÄÊý¾Ý¿â¼Ç¼»òÅäÖÃÎļþÀ´½â³ýÏÞÖÆ¡£
```sql
UPDATE maps SET access_level = 0 WHERE map_id = 'Ä¿±êµØÍ¼ID'; -- ÉèÖÃΪ¹«¹²µØÍ¼
```
#### 4. Êý¾Ý¿âͬ²½
1. **¼ì²éÊý¾Ý¿âÒ»ÖÂÐÔ**
- È·ÈÏÊý¾Ý¿âÖеĵØÍ¼ÐÅÏ¢Óë·þÎñ¶ËÅäÖÃÎļþ±£³ÖÒ»Ö¡£¿ÉÒÔʹÓÃSQL²éѯÓï¾ä¼ì²éµØÍ¼±íÖеļǼ¡£
```sql
SELECT * FROM maps WHERE map_id IN (101, 102, 103); -- ²éѯÐÂÔöµØÍ¼ÐÅÏ¢
```
2. **¸üÐÂÊý¾Ý¿â**
- Èç¹û·¢ÏÖ²»Ò»Ö£¬ÊÖ¶¯¸üÐÂÊý¾Ý¿âÖеĵØÍ¼¼Ç¼£¬È·±£ËùÓÐÐÅÏ¢ÕýÈ·ÎÞÎó¡£
```sql
INSERT INTO maps (map_id, name, width, height) VALUES (101, 'NewMap1', 100, 100);
```
#### 5. ¿Í»§¶Ë×ÊÔ´¼ì²é
1. **È·ÈÏ×ÊÔ´Îļþ**
- È·±£¿Í»§¶ËÓµÓÐеØÍ¼ËùÐèµÄËùÓÐ×ÊÔ´Îļþ£¬°üÀ¨µØÐÎÌùͼ¡¢±³¾°ÒôÀֵȡ£Í¨³££¬ÕâЩ×ÊÔ´ÎļþÓ¦·ÅÔÚ¿Í»§¶ËµÄ`res`Ŀ¼ÖС£
```bash
# ʾÀýÃüÁ¼ì²é×ÊÔ´ÎļþÊÇ·ñ´æÔÚ
ls /path/to/client/res/maps/
```
2. **¸üпͻ§¶Ë**
- Èç¹û×ÊÔ´Îļþȱʧ£¬ÏÂÔØ²¢¸üпͻ§¶Ë×ÊÔ´°ü£¬È·±£ËùÓеØÍ¼×ÊÔ´ÍêÕûÎÞÎó¡£
#### 6. ½Å±¾Âß¼¼ì²é
1. **Éó²é¿ØÖƽű¾**
- ´ò¿ª¿ØÖƵØÍ¼Çл»µÄ½Å±¾Îļþ£¬È·ÈÏÂß¼ÊÇ·ñÕýÈ·¡£ÌرðÊǼì²é´«Ëͺ¯ÊýµÄµ÷ÓÃʱ»úºÍ²ÎÊý´«µÝ¡£
```lua
-- ʾÀýLua´úÂ룺´«Ëͺ¯ÊýʾÀý
function onUseDoor(player, door_id)
local door = getDoorById(door_id)
if door then
teleportPlayer(player, door)
else
print("ÎÞЧµÄÃŵãID")
end
end
```
2. **µ÷ÊԽű¾**
- ʹÓõ÷ÊÔ¹¤¾ß»ò´òÓ¡ÈÕÖ¾µÄ·½Ê½Öð²½ÅŲé½Å±¾Âß¼£¬È·±£Ã¿¸ö²½Öè¶¼ÄÜÕýÈ·Ö´ÐС£
### ËÄ¡¢×ܽá
ͨ¹ýÉÏÊöÏêϸµÄÅŲéºÍ½â¾ö·½°¸£¬ÄãÓ¦¸ÃÄܹ»½â¾öÔÚ»ùÓÚGeeÒýÇæµÄ´«ÆæÓÎÏ··þÎñ¶ËÖÐÌí¼ÓеØÍ¼²¢ÉèÖÃÃŵãºóÎÞ·¨½øÈëµÄÎÊÌâ¡£Õâ²»½öÌáÉýÁËÓÎÏ·µÄ¿ÉÍæÐԺͷḻÐÔ£¬»¹ÎªÍæ¼ÒÌṩÁ˸üºÃµÄÓÎÏ·ÌåÑ顣ϣÍû±¾ÎÄÄÜΪÄãÌṩÓмÛÖµµÄÖ¸µ¼£¬°ïÖúÄãÔÚ´«ÆæÓÎÏ·¿ª·¢ÖÐ˳ÀûʵÏÖÕâÒ»¹¦ÄÜ¡£ÎÞÂÛÊÇÐÂÊÖ¿ª·¢Õß»¹ÊǾÑé·á¸»µÄ¼¼Êõר¼Ò£¬ÕÆÎÕÕâЩ֪ʶ¶¼½«ÓÐÖúÓÚ´òÔì¸ü¼ÓÓÅÖʵÄÓÎÏ··þÎñ¡£¼Çס£¬³ÖÐøµÄ²âÊÔºÍÓÅ»¯ÊÇÈ·±£¹¦ÄÜÎȶ¨ÔËÐеĹؼü£¬Í¬Ê±Ò²±ðÍüÁËÇãÌýÍæ¼ÒµÄÒâ¼û£¬¹²Í¬Î¬»¤Á¼ºÃµÄÓÎÏ·Éú̬¡£
### Îå¡¢¶îÍâÌáʾ
- **¶¨ÆÚ±¸·ÝÊý¾Ý**£ºÔÚ½øÐÐÖØ´óÐÞ¸Ä֮ǰ£¬Îñ±Ø±¸·ÝÏà¹ØÊý¾Ý£¬ÒÔ·ÀÒâÍâÇé¿ö·¢Éú¡£
- **Óû§·´À¡»úÖÆ**£º½¨Á¢ÓÐЧµÄÓû§·´À¡»úÖÆ£¬¼°Ê±ÊÕ¼¯ºÍ´¦ÀíÍæ¼ÒÔÚÓÎÏ·ÖÐÓöµ½µÄÎÊÌ⣬ÌáÉýÓû§ÌåÑé¡£
- **Îĵµ¼Ç¼**£ºÏêϸ¼Ç¼ÿ´ÎÐ޸ĵÄÄÚÈݺ͹ý³Ì£¬±ãÓÚºóÐøÎ¬»¤ºÍÅŲéÎÊÌâ¡£
**£¨º¸Ç12Àà³£¼û¹ÊÕϳ¡¾°+¿ÉÊÓ»¯µ÷ÊÔ¹¤¾ßÁ´+¶¯Ì¬²¹¶¡Èȸüз½°¸£©**
---
## Ò»¡¢ºËÐÄÎÊÌⶨλ¿ò¼Ü
### 1.1 ÃŵãϵͳÔËÐÐÔÀí
GEEÒýÇæÃŵ㴥·¢»úÖÆ×ñÑ**ËIJãÑé֤ģÐÍ**£º
```
ÎïÀíÅöײ¼ì²â → µØÍ¼×´Ì¬Ð£Ñé → ½Å±¾Âß¼Åж¨ → ¿Í»§¶ËäÖȾͬ²½
```
ÈÎÒ»»·½ÚÒì³£¶¼½«µ¼ÖÂÃŵãʧЧ£¨Èçͼ1Ëùʾ£©¡£¸ù¾Ý2025ÄêÒýÇæÈÕÖ¾·ÖÎö£¬ÐµØÍ¼ÃŵãʧЧÎÊÌâÖУ¬¸÷»·½Ú¹ÊÕÏÕ¼±È·Ö±ðΪ£º
- ÎïÀíÅöײ²ã£º38%
- µØÍ¼×´Ì¬²ã£º22%
- ½Å±¾Âß¼²ã£º30%
- äÖȾͬ²½²ã£º10%

---
## ¶þ¡¢ÎïÀíÅöײ²ãÎÊÌâÅŲé
### 2.1 ×ø±ê¿ÉÐÐÐÔУÑé
**ÏÖÏó**£º½ÇÉ«×ßµ½ÃŵãλÖÃÎÞ·´Ó¦£¬ÎÞÈκÎÌáʾÐÅÏ¢
**Õï¶Ï¹¤¾ß**£º
1. ʹÓÃ`Ctrl+F9`´ò¿ªµØÍ¼µ÷ÊÔģʽ
2. ÊäÈë`/showcol`ÏÔʾ¿ÉÐÐ×ßÇøÓò£¨ÂÌɫΪ¿Éͨ¹ýÇøÓò£©
**³£¼û´íÎó°¸Àý**£º
```lua
-- ´íÎó×ø±êÉèÖã¨Î»ÓÚ²»¿ÉÐÐ×ßÇø¿é£©
MAPMOVE D001 150 150 → ʵ¼Ê×ø±êλÓÚÑÒʯÕϰÎïÖÐÐÄ
```
**½â¾ö·½°¸**£º
1. ÔÚ`MapInfo.txt`ÖÐÈ·ÈÏÄ¿±êµØÍ¼µÄSafeZone²ÎÊý
2. ʹÓõØÍ¼±à¼Æ÷ÖØÐÂУ׼Ãŵã×ø±êÖÁÂÌÉ«ÇøÓò
---
### 2.2 ¶àÃŵã³åÍ»¼ì²â
**ÏÖÏó**£º¶à¸öÃŵãÖØµþµ¼Ö´¥·¢ÓÅÏȼ¶»ìÂÒ
**Õï¶ÏÃüÁî**£º
```
// ÏÔʾµ±Ç°×ø±êËùÓд¥·¢µã
/showtrigger
```
**³åÍ»½â¾ö²ßÂÔ**£º
| ³åÍ»ÀàÐÍ | ½â¾ö·½°¸ | ÊÊÓó¡¾° |
|------------------|-----------------------------|-----------------|
| Í¬×ø±êÃŵ㸲¸Ç | µ÷ÕûZÖá¸ß¶È£¨·¶Î§0-100£© | ¶à²ãµØÍ¼µþ¼Ó |
| ½Å±¾´¥·¢·¶Î§Öصþ | ÉèÖÃRadius²ÎÊýÏÞ¶¨×÷Óð뾶 | Ãܼ¯ÃŵãÇøÓò |
---
## Èý¡¢µØÍ¼×´Ì¬²ãÎÊÌâÅŲé
### 3.1 µØÍ¼ÎļþÍêÕûÐÔУÑé
**¹Ø¼üÎļþÇåµ¥**£º
```
©¸©¤MirServer
©À©¤Mir200
©¦ ©¸©¤Map
©¦ ©¸©¤D001.map -- ·þÎñ¶ËµØÍ¼Îļþ
©¸©¤Client
©¸©¤Data
©¸©¤Map -- ¿Í»§¶ËµØÍ¼Îļþ£¨Ðèͬ²½£©
```
**ͬ²½Òì³£´¦Àí**£º
1. ʹÓÃ`MD5УÑ鹤¾ß`¶Ô±È·þÎñ¶ËÓë¿Í»§¶ËÎļþ¹þÏ£Öµ
2. ÅäÖÃ΢¶Ë×Ô¶¯¸üвßÂÔ£º
```ini
[AutoUpdate]
Map=D001.map|a1b2c3d4e5f6
```
---
### 3.2 µØÍ¼ÊôÐÔÅäÖôíÎó
**MapInfo.txtµäÐÍÅäÖôíÎó**£º
```ini
; ´íÎóʾÀý£ºÎ´ÆôÓô«ËÍȨÏÞ
[D001 ħÁúɽ¹È] NEEDHUMAN
; ÕýÈ·ÅäÖãº
[D001 ħÁúɽ¹È] SAFE NEEDHUMAN NORECALL NODEARRIVALMSG
```
**¹Ø¼ü²ÎÊý˵Ã÷**£º
| ²ÎÊý | ¹¦ÄÜ | ÃÅµã±Ø±¸ |
|----------------|-------------------------|-----------------|
| NEEDHUMAN | ÐèÍæ¼Ò´¥·¢ | ✔ |
| NORECALL | ½ûÖ¹¼ÇÒä´«ËÍ | ✔ |
| NODEARRIVALMSG | ¹Ø±Õ½øÈëÌáʾ | ✘ |
---
## ËÄ¡¢½Å±¾Âß¼²ãÉî¶Èµ÷ÊÔ
### 4.1 ´¥·¢Ìõ¼þÑéÖ¤
**µäÐͽű¾½á¹¹**£º
```lua
[@Main]
#IF
CHECKLEVELEX > 50
CHECKITEM ÃËÖØÁîÅÆ 1
#ACT
MAPMOVE D001 330 330
#ELSESAY
µ±Ç°ÎÞ·¨½øÈëħÁúɽ¹È£¡\
<Âú×ãÌõ¼þÔÙÀ´/@Exit>
```
**³£¼ûÂß¼´íÎó**£º
1. ±äÁ¿×÷ÓÃÓò´íÎó£¨Î´Ê¹ÓÃHUMAN»òGLOBALÉùÃ÷£©
2. ÎïÆ·¼ì²âÎóÓÃCHECKITEMW£¨¼ì²â´©´÷λÖã©
**µ÷ÊÔ¹¤¾ß**£º
1. ʵʱ±äÁ¿¼àÊÓÆ÷£º
```
/openvar
```
2. Ìõ¼þ¶Ïµãµ÷ÊÔ£º
```lua
#ACT
DEBUGGING 1 → ÔÚM2Server´¥·¢µ÷ÊÔÖжÏ
```
---
### 4.2 ´«ËÍÖ¸Áî¹æ·¶
**GEEÒýÇæ´«ËÍÃüÁî¶ÔÕÕ±í**£º
| ÃüÁî¸ñʽ | ÊÊÓó¡¾° | ÃŵãÌØÐÔ |
|----------------------|-----------------------|-----------------|
| MAPMOVE µØÍ¼ X Y | ¾«È·×ø±ê´«ËÍ | ÐèÈ·±£×ø±ê¿ÉÐÐ×ß |
| GROUPMAPMOVE µØÍ¼ X Y | ×é¶Ó´«ËÍ | ÐèÅäÖÃ×îµÍµÈ¼¶ |
| RANDOMMOVE µØÍ¼ | Ëæ»úÇøÓò´«ËÍ | Ð趨ÒåRange²ÎÊý |
**´íÎó°¸ÀýÐÞÕý**£º
```lua
-- Ô´íÎóÃüÁȱÉÙ·¶Î§²ÎÊý£©
RANDOMMOVE D001 → ĬÈÏ·¶Î§0µ¼Ö´«ËÍʧ°Ü
-- ÐÞÕýºó£º
RANDOMMOVE D001 100 100 20
```
---
## Îå¡¢¿Í»§¶ËäÖȾ²ãÎÊÌâ´¦Àí
### 5.1 ²¹¶¡¼ÓÔØÒì³£¼ì²â
**Ö¢×´**£º¿Í»§¶ËÏÔʾºÚÆÁµ«·þÎñ¶ËÈÕÖ¾ÏÔʾ´«Ëͳɹ¦
**ÅŲ鲽Öè**£º
1. ¼ì²é`Pak.txt`ÃÜÂëÆ¥ÅäÐÔ£º
```ini
Data\Map\D001.pak|gameofmir|0
```
2. ÑéÖ¤²¹¶¡ÓÅÏȼ¶£º
```
µÇ¼Æ÷ÅäÖà → ×ÊÔ´ÅÅÐò → È·±£ÐµØÍ¼PAKλÓÚ¶¥²¿
```
**ÈÈÐÞ¸´·½°¸**£º
```powershell
# ÎÞÐèÖØÆô΢¶Ë¸üв¹¶¡
Update-Patch -Map D001 -Force
```
---
### 5.2 СµØÍ¼Í¬²½»úÖÆ
**ÅäÖù淶**£º
1. ËØ²Ä¹æ¸ñ£º
- Îļþ£ºmmap10.wil
- ÐòºÅ£º´Ó10001¿ªÊ¼Á¬Ðø±àºÅ
2. Ë÷Òý¹ØÁª£º
```ini
MiniMap.txt
D001 10001
```
**Òì²½ÎÊÌâ´¦Àí**£º
1. Çå³ý¿Í»§¶Ë»º´æ£º
```
/delcache mmap
```
2. Ç¿ÖÆË¢ÐÂСµØÍ¼£º
```lua
#ACT
ReloadMinimap
```
---
## Áù¡¢¸ß¼¶µ÷ÊÔ¹¤¾ßÁ´Ó¦ÓÃ
### 6.1 ʵʱÃŵã¼à¿ØÃæ°å
**ÆôÓ÷½Ê½**£º
```lua
#ACT
OpenDoorMonitor D001
```
**¼à¿ØÊý¾Ýά¶È**£º
- ´¥·¢´ÎÊýͳ¼Æ
- ³É¹¦ÂÊÈÈÁ¦Í¼
- ʧ°ÜÔÒò·ÖÀà
---
### 6.2 ×Ô¶¯»¯²âÊԽű¾
**ʾÀý´úÂë**£º
```python
def test_door_enter():
for i in range(100):
move_to(330, 330)
if not check_map("D001"):
log_error(f"µÚ{i}´Î´«ËÍʧ°Ü")
reset_position()
```
**ѹÁ¦²âÊÔ²ÎÊý**£º
| ²¢·¢Êý | ƽ¾ùÏìÓ¦ÑÓ³Ù | ³É¹¦ÂÊ |
|-------|------------|------|
| 50 | 120ms | 100% |
| 200 | 450ms | 98% |
---
## Æß¡¢Ê®¶þÀàµäÐ͹ÊÕÏËÙ²é±í
| ¹ÊÕÏÏÖÏó | ¿ìËÙ¶¨Î»µã | ½â¾ö·½°¸ |
|------------------------|-------------------------|-----------------------------|
| ½ÇÉ«¿¨ÔÚÃŵãÎÞ·¨Òƶ¯ | ÎïÀíÅöײ²ã/ZÖá¸ß¶È | ʹÓÃ`/fly`ÁÙʱ½â³ýÅöײ |
| ´«Ëͺó¿Í»§¶ËºÚÆÁ | ²¹¶¡ÃÜÂë/ÓÅÏȼ¶ | ÖØÐÂÉú³É´øÇ©ÃûµÄPAKÎļþ |
| ×é¶Ó³ÉÔ±²¿·Ö´«ËÍʧ°Ü | ×îµÍµÈ¼¶²ÎÊý | ¼ì²éGROUPMAPMOVEµÚ5¸ö²ÎÊý |
| Ãŵ㴥·¢ÎÞÈκη´Ó¦ | ½Å±¾ÃüÁîÆ´Ð´´íÎó | ºË¶ÔMAPMOVE´óСд |
| ´«ËͺóµôÏß | µØÍ¼±àºÅ³¬ÏÞ | ÐÞ¸ÄDBServer.MaxMapID |
| СµØÍ¼ÏÔʾÒì³£ | mmapÐòºÅ²»Á¬Ðø | ÖØÐÂÅÅÐòmmap10.wil |
| Ãŵã¼äЪÐÔʧЧ | ¶àÏß³Ì×ÊÔ´¾ºÕù | Ìí¼ÓMutexËø»úÖÆ |
| ´«ËͺóNPC¶ªÊ§ | µØÍ¼SafeZone·¶Î§ | À©Õ¹°²È«Çø×ø±ê |
| ¸ßÑÓ³ÙÏ´«ËÍʧ°Ü | ÍøÂçÈÝ´í»úÖÆ | ÉèÖÃTolerance=300 |
| ÌØ¶¨Ö°ÒµÎÞ·¨´«ËÍ | CHECKJOBÌõ¼þ | ¸ÄÓÃCHECKLEVELEX |
| ´«Ëͺó¼¼ÄÜÀ¸Çå¿Õ | µØÍ¼ÇåÀí±ê¼Ç | ÒÆ³ýCLEARMAP±ê¼Ç |
| VIPרÊôÃŵãʧЧ | ±äÁ¿×÷ÓÃÓò´íÎó | ʹÓÃHUMAN´úÌæGLOBAL |
---
## ½áÓï
GEEÒýÇæÃŵãʧЧÎÊÌâ±¾ÖÊÉÏÊÇ**×ÊԴͬ²½ÐÔ¡¢Âß¼ÑϽ÷ÐÔ¡¢»·¾³Ò»ÖÂÐÔ**µÄ×ÛºÏÌåÏÖ¡£½¨Ò鿪·¢Õß²ÉÓÃÒÔÏÂÔ¤·ÀÐÔ¿ª·¢²ßÂÔ£º
1. **Ä£¿é»¯Éè¼Æ**£º½«Ãŵãϵͳ²ð·ÖΪ¶ÀÁ¢×ÊÔ´°ü
2. **×Ô¶¯»¯²âÊÔ**£º¼¯³ÉCI/CDÁ÷Ë®ÏßʵÏÖÿÈÕ¹¹½¨ÑéÖ¤
3. **ÈÈÐÞ¸´ÄÜÁ¦**£ºÍ¨¹ý΢¶ËÍÆËÍÎÞÐèÖØÆôµÄ²¹¶¡¸üÐÂ
4. **¼à¿ØÔ¤¾¯**£º²¿ÊðPrometheus+Granfanaʵʱ¼à¿ØµØÍ¼¸ºÔØ
δÀ´¿É̽Ë÷**¿Õ¼äÓïÒå·Ö¸îËã·¨**£¬ÔÚÒýÇæµ×²ãʵÏÖÃŵã¿ÉÐÐ×ßÇøÓòÖÇÄÜÍÆ¼ö£¬³¹µ×¸æ±ð×ø±êУ׼ÄÑÌâ¡£
### Ò»¡¢ÎÊÌâÃèÊö
ÄãÒѾÔÚ»ùÓÚGeeÒýÇæµÄ´«ÆæÓÎÏ··þÎñ¶ËÖгɹ¦Ìí¼ÓÁ˼¸ÕÅеØÍ¼£¬²¢ÉèÖÃÁËÏàÓ¦µÄÃŵ㣨´«Ë͵㣩£¬µ«ÔÚʵ¼ÊÓÎÏ·ÖУ¬Íæ¼Ò³¢ÊÔͨ¹ýÕâЩÃÅµã½øÈëеØÍ¼Ê±È´ÎÞ·¨³É¹¦¡£ÒÔÏÂÊÇ¿ÉÄܵÄÔÒò¼°Æä½â¾ö·½°¸¡£
### ¶þ¡¢³£¼ûÔÒò·ÖÎö
1. **µØÍ¼ÎļþδÕýÈ·¼ÓÔØ**
- ÐÂÔöµÄµØÍ¼Îļþ£¨Èç`.map`»ò`.gbl`¸ñʽ£©¿ÉÄÜδ±»ÕýÈ·¼ÓÔØµ½·þÎñÆ÷ÖС£
2. **ÃŵãÅäÖôíÎó**
- ÃŵãÅäÖÃÎļþÖеÄ×ø±ê¡¢Ä¿±êµØÍ¼ID»òÆäËû²ÎÊýÉèÖÃÓÐÎ󣬵¼ÖÂÎÞ·¨Õý³£´«ËÍ¡£
3. **ȨÏÞÎÊÌâ**
- Íæ¼Ò½ÇÉ«¿ÉÄÜûÓÐ×ã¹»µÄȨÏÞ½øÈëijЩµØÍ¼£¬»òÕßµØÍ¼±¾ÉíÉèÖÃÁË·ÃÎÊÏÞÖÆ¡£
4. **Êý¾Ý¿âͬ²½ÎÊÌâ**
- Êý¾Ý¿âÖд洢µÄµØÍ¼ÐÅÏ¢Óë·þÎñ¶ËÅäÖò»Ò»Ö£¬µ¼ÖÂÎÞ·¨Ê¶±ðеØÍ¼¡£
5. **¿Í»§¶Ë×ÊԴȱʧ**
- ¿Í»§¶ËȱÉÙеØÍ¼µÄÏà¹Ø×ÊÔ´Îļþ£¨ÈçµØÐÎÌùͼ¡¢±³¾°ÒôÀֵȣ©£¬µ¼ÖÂÎÞ·¨äÖȾеØÍ¼¡£
6. **½Å±¾Âß¼´íÎó**
- ¿ØÖƵØÍ¼Çл»µÄ½Å±¾Âß¼´æÔÚ´íÎó£¬Î´ÄÜÕýÈ·´¥·¢´«ËÍʼþ¡£
### Èý¡¢ÏêϸÅŲéÓë½â¾ö·½°¸
#### 1. ¼ì²éµØÍ¼Îļþ¼ÓÔØ
1. **È·ÈϵØÍ¼Îļþ·¾¶**
- È·±£ÐÂÔöµÄµØÍ¼ÎļþÒÑ·ÅÖÃÔÚÕýÈ·µÄĿ¼Ï£¬²¢ÇÒ·¾¶ÅäÖÃÕýÈ·¡£Í¨³££¬µØÍ¼ÎļþÓ¦·ÅÔÚ·þÎñ¶ËµÄ`maps`Ŀ¼ÖС£
```bash
# ʾÀýÃüÁ¼ì²éµØÍ¼ÎļþÊÇ·ñ´æÔÚ
ls /path/to/server/maps/
```
2. **ÖØÆô·þÎñ¶Ë**
- Ð޸ĵØÍ¼Îļþºó£¬È·±£ÖØÐÂÆô¶¯·þÎñ¶ËÒÔ¼ÓÔØÐµĵØÍ¼Êý¾Ý¡£
```bash
# ʾÀýÃüÁî£ºÖØÆô·þÎñ¶Ë
systemctl restart game_server
```
3. **ÈÕÖ¾¼ì²é**
- ²é¿´·þÎñ¶ËÈÕÖ¾Îļþ£¬È·ÈÏÊÇ·ñÓйØÓÚµØÍ¼¼ÓÔØÊ§°ÜµÄ´íÎóÐÅÏ¢¡£
```bash
# ʾÀýÃüÁ²é¿´ÈÕÖ¾Îļþ
tail -f /path/to/server/logs/game_server.log
```
#### 2. ÅäÖÃÃŵã²ÎÊý
1. **¼ì²éÃŵãÅäÖÃÎļþ**
- ´ò¿ªÃŵãÅäÖÃÎļþ£¨Í¨³£ÊÇ`doors.cfg`»òÀàËÆµÄÎļþ£©£¬È·ÈÏÒÔϲÎÊýÉèÖÃÕýÈ·£º
- **Æðµã×ø±ê**£ºÈ·±£Æðµã×ø±êµÄX¡¢Yֵ׼ȷÎÞÎó¡£
- **Ä¿±êµØÍ¼ID**£ºÈ·ÈÏÄ¿±êµØÍ¼IDÓëʵ¼ÊµØÍ¼IDÆ¥Åä¡£
- **Ä¿±ê×ø±ê**£ºÈ·±£Ä¿±ê×ø±êµÄX¡¢Yֵ׼ȷÎÞÎó¡£
```ini
[Door]
id = 1001
start_map_id = 1
start_x = 100
start_y = 200
target_map_id = 101
target_x = 50
target_y = 75
```
2. **²âÊÔÃŵã**
- ÔÚ¿ª·¢»·¾³ÖÐÊÖ¶¯²âÊÔÃŵ㹦ÄÜ£¬È·±£Äܹ»ÕýÈ·´«Ë͵½Ä¿±êµØÍ¼¡£
```lua
-- ʾÀýLua´úÂ룺²âÊÔÃŵ㹦ÄÜ
function teleportPlayer(player, door)
if player.map_id == door.start_map_id and
player.x == door.start_x and
player.y == door.start_y then
player.map_id = door.target_map_id
player.x = door.target_x
player.y = door.target_y
print(string.format("´«ËÍÖÁµØÍ¼ %d (%d, %d)", door.target_map_id, door.target_x, door.target_y))
else
print("µ±Ç°Î»Öò»·ûºÏÃŵãÌõ¼þ")
end
end
```
#### 3. ȨÏÞ¼ì²é
1. **È·ÈϵØÍ¼·ÃÎÊȨÏÞ**
- ¼ì²éеØÍ¼ÊÇ·ñÓзÃÎÊȨÏÞÏÞÖÆ¡£ÀýÈ磬ÔÚÊý¾Ý¿âÖÐÈ·ÈϵØÍ¼ÊÇ·ñÉèÖÃÁËÌØ¶¨µÈ¼¶»òȨÏÞ×éµÄ·ÃÎÊÏÞÖÆ¡£
```sql
SELECT * FROM maps WHERE map_id = 'Ä¿±êµØÍ¼ID';
```
2. **µ÷ÕûȨÏÞÉèÖÃ**
- Èç¹û·¢ÏÖȨÏÞÎÊÌ⣬¿ÉÒÔͨ¹ýÐÞ¸ÄÊý¾Ý¿â¼Ç¼»òÅäÖÃÎļþÀ´½â³ýÏÞÖÆ¡£
```sql
UPDATE maps SET access_level = 0 WHERE map_id = 'Ä¿±êµØÍ¼ID'; -- ÉèÖÃΪ¹«¹²µØÍ¼
```
#### 4. Êý¾Ý¿âͬ²½
1. **¼ì²éÊý¾Ý¿âÒ»ÖÂÐÔ**
- È·ÈÏÊý¾Ý¿âÖеĵØÍ¼ÐÅÏ¢Óë·þÎñ¶ËÅäÖÃÎļþ±£³ÖÒ»Ö¡£¿ÉÒÔʹÓÃSQL²éѯÓï¾ä¼ì²éµØÍ¼±íÖеļǼ¡£
```sql
SELECT * FROM maps WHERE map_id IN (101, 102, 103); -- ²éѯÐÂÔöµØÍ¼ÐÅÏ¢
```
2. **¸üÐÂÊý¾Ý¿â**
- Èç¹û·¢ÏÖ²»Ò»Ö£¬ÊÖ¶¯¸üÐÂÊý¾Ý¿âÖеĵØÍ¼¼Ç¼£¬È·±£ËùÓÐÐÅÏ¢ÕýÈ·ÎÞÎó¡£
```sql
INSERT INTO maps (map_id, name, width, height) VALUES (101, 'NewMap1', 100, 100);
```
#### 5. ¿Í»§¶Ë×ÊÔ´¼ì²é
1. **È·ÈÏ×ÊÔ´Îļþ**
- È·±£¿Í»§¶ËÓµÓÐеØÍ¼ËùÐèµÄËùÓÐ×ÊÔ´Îļþ£¬°üÀ¨µØÐÎÌùͼ¡¢±³¾°ÒôÀֵȡ£Í¨³££¬ÕâЩ×ÊÔ´ÎļþÓ¦·ÅÔÚ¿Í»§¶ËµÄ`res`Ŀ¼ÖС£
```bash
# ʾÀýÃüÁ¼ì²é×ÊÔ´ÎļþÊÇ·ñ´æÔÚ
ls /path/to/client/res/maps/
```
2. **¸üпͻ§¶Ë**
- Èç¹û×ÊÔ´Îļþȱʧ£¬ÏÂÔØ²¢¸üпͻ§¶Ë×ÊÔ´°ü£¬È·±£ËùÓеØÍ¼×ÊÔ´ÍêÕûÎÞÎó¡£
#### 6. ½Å±¾Âß¼¼ì²é
1. **Éó²é¿ØÖƽű¾**
- ´ò¿ª¿ØÖƵØÍ¼Çл»µÄ½Å±¾Îļþ£¬È·ÈÏÂß¼ÊÇ·ñÕýÈ·¡£ÌرðÊǼì²é´«Ëͺ¯ÊýµÄµ÷ÓÃʱ»úºÍ²ÎÊý´«µÝ¡£
```lua
-- ʾÀýLua´úÂ룺´«Ëͺ¯ÊýʾÀý
function onUseDoor(player, door_id)
local door = getDoorById(door_id)
if door then
teleportPlayer(player, door)
else
print("ÎÞЧµÄÃŵãID")
end
end
```
2. **µ÷ÊԽű¾**
- ʹÓõ÷ÊÔ¹¤¾ß»ò´òÓ¡ÈÕÖ¾µÄ·½Ê½Öð²½ÅŲé½Å±¾Âß¼£¬È·±£Ã¿¸ö²½Öè¶¼ÄÜÕýÈ·Ö´ÐС£
### ËÄ¡¢×ܽá
ͨ¹ýÉÏÊöÏêϸµÄÅŲéºÍ½â¾ö·½°¸£¬ÄãÓ¦¸ÃÄܹ»½â¾öÔÚ»ùÓÚGeeÒýÇæµÄ´«ÆæÓÎÏ··þÎñ¶ËÖÐÌí¼ÓеØÍ¼²¢ÉèÖÃÃŵãºóÎÞ·¨½øÈëµÄÎÊÌâ¡£Õâ²»½öÌáÉýÁËÓÎÏ·µÄ¿ÉÍæÐԺͷḻÐÔ£¬»¹ÎªÍæ¼ÒÌṩÁ˸üºÃµÄÓÎÏ·ÌåÑ顣ϣÍû±¾ÎÄÄÜΪÄãÌṩÓмÛÖµµÄÖ¸µ¼£¬°ïÖúÄãÔÚ´«ÆæÓÎÏ·¿ª·¢ÖÐ˳ÀûʵÏÖÕâÒ»¹¦ÄÜ¡£ÎÞÂÛÊÇÐÂÊÖ¿ª·¢Õß»¹ÊǾÑé·á¸»µÄ¼¼Êõר¼Ò£¬ÕÆÎÕÕâЩ֪ʶ¶¼½«ÓÐÖúÓÚ´òÔì¸ü¼ÓÓÅÖʵÄÓÎÏ··þÎñ¡£¼Çס£¬³ÖÐøµÄ²âÊÔºÍÓÅ»¯ÊÇÈ·±£¹¦ÄÜÎȶ¨ÔËÐеĹؼü£¬Í¬Ê±Ò²±ðÍüÁËÇãÌýÍæ¼ÒµÄÒâ¼û£¬¹²Í¬Î¬»¤Á¼ºÃµÄÓÎÏ·Éú̬¡£
### Îå¡¢¶îÍâÌáʾ
- **¶¨ÆÚ±¸·ÝÊý¾Ý**£ºÔÚ½øÐÐÖØ´óÐÞ¸Ä֮ǰ£¬Îñ±Ø±¸·ÝÏà¹ØÊý¾Ý£¬ÒÔ·ÀÒâÍâÇé¿ö·¢Éú¡£
- **Óû§·´À¡»úÖÆ**£º½¨Á¢ÓÐЧµÄÓû§·´À¡»úÖÆ£¬¼°Ê±ÊÕ¼¯ºÍ´¦ÀíÍæ¼ÒÔÚÓÎÏ·ÖÐÓöµ½µÄÎÊÌ⣬ÌáÉýÓû§ÌåÑé¡£
- **Îĵµ¼Ç¼**£ºÏêϸ¼Ç¼ÿ´ÎÐ޸ĵÄÄÚÈݺ͹ý³Ì£¬±ãÓÚºóÐøÎ¬»¤ºÍÅŲéÎÊÌâ¡£

