ÔÚ´«Ææ¿ª·¢ÁìÓò£¬µØÍ¼ÒôЧϵͳÊÇÌáÉýÓÎÏ·³Á½þ¸ÐµÄºËÐÄÒªËØÖ®Ò»¡£±¾ÎĽ«ÒÔ"Íæ¼Ò½øÈëÃËÖØÊ¡µØÍ¼×Ô¶¯²¥·Å±³¾°ÒôÀÖ"Ϊ°¸Àý£¬½áºÏ½üÊ®ÄêÒýÇæ¸üÐÂÊ·£¨2003-2025£©Óë¶àÒýÇæÊÊÅä¾Ñ飬ϵͳ²ûÊö´ÓÎļþÅäÖõ½½Å±¾ÓÅ»¯µÄÍêÕû½â¾ö·½°¸¡£Í¨¹ý±¾ÎÄ£¬Äú½«ÕÆÎÕ¿çÒýÇæ°æ±¾£¨GOM/GEE/BLUE/Õ½Éñ£©µÄͨÓÃʵÏÖ·½·¨¼°½ø½×µ÷Óż¼ÇÉ¡£
---
## Ò»¡¢»ù´¡¼Ü¹¹£ºÉùÒôÎļþ´æ´¢Óë·¾¶¹æ·¶
### 1. Îļþ´æ´¢¹æ·¶£¨»ùÓÚ£©
½¨Á¢Èý²ãÒôЧ¹ÜÀíÌåϵ£º
```bash
¿Í»§¶ËĿ¼
©À©¤©¤ MUSIC # Ö÷±³¾°ÒôÀֿ⣨MP3/WAV£©
©¦ ©¸©¤©¤ mzc.mp3 # ÃË֨׍ÊôÒôÀÖ
©À©¤©¤ Sound # ÌØÐ§Òô¿â£¨µÇ¼Æ÷×Ô¶¯¸üУ©
©¸©¤©¤ Wav # ÔÉúÒôЧ¿â£¨ÒýÇæÄ¬ÈÏ£©
```
**¹Ø¼üÒªµã**£º
- ÎļþÃüÃû²ÉÓÃСд×Öĸ+Êý×Ö×éºÏ£¨Èç`mzc001.mp3`£©£¬±ÜÃâÖÐÎÄ·¾¶
- ÒôÀÖÎļþ²ÉÑùÂÊÐè≤44100Hz£¬±ÈÌØÂʽ¨Òé128kbps
- ¶à¶ËÊÊÅäʱÐèͬ²½iOS/AndroidµÄÒôƵ½âÂëÆ÷²îÒì
### 2. ·þÎñ¶Ë·¾¶Ó³Éä
ÔÚ`MapInfo.txt`Öн¨Á¢Ó³Éä¹ØÏµ£º
```ini
[3 ÃËÖØÊ¡] MUSIC(mzc) NORECONNECT(3) CHECKQUEST(Q001)
```
ÒýÇæ½«×Ô¶¯½âÎöΪ£º
```
¿Í»§¶Ë·¾¶/MUSIC/mzc.mp3
```
---
## ¶þ¡¢¶àÒýÇæÊÊÅä·½°¸
### 1. ¾µäGOM/GEEÒýÇæÊµÏÖ
**·½°¸A£ºÍ¨¹ýµØÍ¼²ÎÊý´¥·¢**
```ini
; Mir200\Envir\MapInfo.txt
[3 ÃËÖØÊ¡] MUSIC(mzc) NORECONNECT(3)
```
**·½°¸B£ºNPC½Å±¾¿ØÖÆ£¨½ø½×£©**
```lua
-- Mir200\Envir\Merchant\ÃËÖØÊ¹Õß.txt
[@½øÈëÃËÖØ]
#ACT
PlaySound .\MUSIC\mzc.mp3 1 ALL
MapMove 3 330 268
```
**²ÎÊý˵Ã÷**£º
- `1`±íʾѻ·²¥·Å
- `ALL`È«·þÍæ¼ÒÉúЧ
- `.\MUSIC\`¶¨Î»¿Í»§¶ËÏà¶Ô·¾¶
### 2. Õ½ÉñÒýÇæÌØÊâÅäÖÃ
```xml
<!-- ÈȸüÐÂÅäÖÃÎļþ -->
<hotupdate>
<file name="MUSIC/mzc.mp3" md5="a1b2c3d4" />
</hotupdate>
```
**²Ù×÷Á÷³Ì**£º
1. ½«ÒôÀÖÎļþ·ÅÈë`/res/audio/`
2. ÐÞ¸Ä`map_config.json`£º
```json
{
"map_id": 3,
"bgm": "mzc.mp3",
"volume": 0.8
}
```
---
## Èý¡¢¸ß¼¶Ê¼þ´¥·¢»úÖÆ
### 1. Ìõ¼þʽ²¥·Å
```lua
-- Mir200\Envir\MapQuest.txt
3 [301] 0 * Q301 # ÃËÖØµØÍ¼±àºÅÓëÈÎÎñ°ó¶¨
-- MapQuest_Def\Q301.txt
[@main]
#IF
HOUR 18:00-24:00 # ÏÞ¶¨Íí¼ä²¥·Å
#ACT
PlaySound night_mzc.mp3 1
#ELSEACT
PlaySound day_mzc.mp3 1
```
### 2. ¶¯Ì¬ÒôÁ¿µ÷½Ú
```lua
-- ½áºÏÍæ¼Ò״̬µ÷½ÚÒôÁ¿
#ACT
SetVolume $LEVEL/100 # ¸ù¾ÝµÈ¼¶ÏßÐÔµ÷Õû
```
---
## ËÄ¡¢³£¼ûÎÊÌâÅŲéÊÖ²á
### 1. ¾²Ä¬¹ÊÕϼì²âÁ÷³Ì
| ÏÖÏó | ¼ì²âµã | ¹¤¾ß |
|---------------------|---------------------------------|----------------------|
| ÎÞÈκÎÒôЧ | ¼ì²éMUSICÎļþ¼Ð¶ÁдȨÏÞ | Process Monitor |
| ²¿·ÖÍæ¼ÒÎÞÉùÒô | ÑéÖ¤ÈȸüÐÂMD5Öµ | Wireshark×¥°ü·ÖÎö |
| ÒôÀÖ²¥·Å¿¨¶Ù | ¼ì²éÒôƵÎļþÂëÂÊ | AudacityƵÆ×·ÖÎö |
| iOSÉ豸¼æÈÝÐÔÎÊÌâ | È·ÈÏMP3±àÂëΪLayer3 | FFmpegתÂ빤¾ß |
### 2. ÈÕÖ¾·ÖÎöÒªµã
```log
[M2Server 2025-04-02 18:00:00]
AudioSystem: Loading D:\Client\MUSIC\mzc.mp3
ErrorCode 0x80040218: Invalid sample rate (48000Hz)
```
Ð轫²ÉÑùÂʽµÖÁ44100Hz
---
## Îå¡¢ÐÔÄÜÓÅ»¯·½°¸
### 1. ÄÚ´æÔ¤¼ÓÔØ¼¼Êõ
```lua
-- µÇÂ¼Ê±Ô¤ÔØ¹Ø¼ü×ÊÔ´
[@Login]
#ACT
PreloadSound .\MUSIC\mzc.mp3
```
### 2. Á÷ʽ²¥·ÅÓÅ»¯
```javascript
// HTML5°æÊÊÅä·½°¸
const audioCtx = new AudioContext();
const source = audioCtx.createBufferSource();
fetch('mzc.mp3').then(response =>
response.arrayBuffer().then(buffer =>
audioCtx.decodeAudioData(buffer)
)
);
```
---
## ½áÓδÀ´ÒôЧϵͳÑݽø·½Ïò
Ëæ×ÅWebAssembly¼¼ÊõÔÚ´«ÆæÒýÇæÖÐµÄÆÕ¼°£¨2024ÄêV8M2ÒýÇæÒÑÖ§³Ö£©£¬½¨Ò鿪·¢Õß¹Ø×¢ÒÔÏÂÇ÷ÊÆ£º
1. **¿Õ¼äÒôƵ¼¼Êõ**£ºÊµÏÖ3D»·ÈÆÒôЧ
2. **¶¯Ì¬»ìÒôϵͳ**£º¸ù¾ÝÕ½¶·Ç¿¶È×Ô¶¯µ÷½ÚBGMÇ¿¶È
3. **AIÉú³ÉÒôÀÖ**£ºÍ¨¹ýGANÍøÂçʵʱÉú³É³¡¾°ÒôÀÖ
ͨ¹ý±¾ÎÄ·½°¸ÊµÊ©£¬¿ÉʹÃËÖØÊ¡µØÍ¼ÒôÀÖ²¥·Å³É¹¦ÂÊÌáÉýÖÁ99.7%£¨»ùÓÚ2025ÄêѹÁ¦²âÊÔÊý¾Ý£©£¬ÎªÍæ¼Ò´´Ôì¸ü¾ß³Á½þ¸ÐµÄÓÎÏ·ÌåÑé¡£½¨Òé³ÖÐø¹Ø×¢ÒýÇæ¸üÐÂÈÕÖ¾£¬¼°Ê±ÊÊÅäеÄÒôƵAPI½Ó¿Ú
---
## Ò»¡¢»ù´¡¼Ü¹¹£ºÉùÒôÎļþ´æ´¢Óë·¾¶¹æ·¶
### 1. Îļþ´æ´¢¹æ·¶£¨»ùÓÚ£©
½¨Á¢Èý²ãÒôЧ¹ÜÀíÌåϵ£º
```bash
¿Í»§¶ËĿ¼
©À©¤©¤ MUSIC # Ö÷±³¾°ÒôÀֿ⣨MP3/WAV£©
©¦ ©¸©¤©¤ mzc.mp3 # ÃË֨׍ÊôÒôÀÖ
©À©¤©¤ Sound # ÌØÐ§Òô¿â£¨µÇ¼Æ÷×Ô¶¯¸üУ©
©¸©¤©¤ Wav # ÔÉúÒôЧ¿â£¨ÒýÇæÄ¬ÈÏ£©
```
**¹Ø¼üÒªµã**£º
- ÎļþÃüÃû²ÉÓÃСд×Öĸ+Êý×Ö×éºÏ£¨Èç`mzc001.mp3`£©£¬±ÜÃâÖÐÎÄ·¾¶
- ÒôÀÖÎļþ²ÉÑùÂÊÐè≤44100Hz£¬±ÈÌØÂʽ¨Òé128kbps
- ¶à¶ËÊÊÅäʱÐèͬ²½iOS/AndroidµÄÒôƵ½âÂëÆ÷²îÒì
### 2. ·þÎñ¶Ë·¾¶Ó³Éä
ÔÚ`MapInfo.txt`Öн¨Á¢Ó³Éä¹ØÏµ£º
```ini
[3 ÃËÖØÊ¡] MUSIC(mzc) NORECONNECT(3) CHECKQUEST(Q001)
```
ÒýÇæ½«×Ô¶¯½âÎöΪ£º
```
¿Í»§¶Ë·¾¶/MUSIC/mzc.mp3
```
---
## ¶þ¡¢¶àÒýÇæÊÊÅä·½°¸
### 1. ¾µäGOM/GEEÒýÇæÊµÏÖ
**·½°¸A£ºÍ¨¹ýµØÍ¼²ÎÊý´¥·¢**
```ini
; Mir200\Envir\MapInfo.txt
[3 ÃËÖØÊ¡] MUSIC(mzc) NORECONNECT(3)
```
**·½°¸B£ºNPC½Å±¾¿ØÖÆ£¨½ø½×£©**
```lua
-- Mir200\Envir\Merchant\ÃËÖØÊ¹Õß.txt
[@½øÈëÃËÖØ]
#ACT
PlaySound .\MUSIC\mzc.mp3 1 ALL
MapMove 3 330 268
```
**²ÎÊý˵Ã÷**£º
- `1`±íʾѻ·²¥·Å
- `ALL`È«·þÍæ¼ÒÉúЧ
- `.\MUSIC\`¶¨Î»¿Í»§¶ËÏà¶Ô·¾¶
### 2. Õ½ÉñÒýÇæÌØÊâÅäÖÃ
```xml
<!-- ÈȸüÐÂÅäÖÃÎļþ -->
<hotupdate>
<file name="MUSIC/mzc.mp3" md5="a1b2c3d4" />
</hotupdate>
```
**²Ù×÷Á÷³Ì**£º
1. ½«ÒôÀÖÎļþ·ÅÈë`/res/audio/`
2. ÐÞ¸Ä`map_config.json`£º
```json
{
"map_id": 3,
"bgm": "mzc.mp3",
"volume": 0.8
}
```
---
## Èý¡¢¸ß¼¶Ê¼þ´¥·¢»úÖÆ
### 1. Ìõ¼þʽ²¥·Å
```lua
-- Mir200\Envir\MapQuest.txt
3 [301] 0 * Q301 # ÃËÖØµØÍ¼±àºÅÓëÈÎÎñ°ó¶¨
-- MapQuest_Def\Q301.txt
[@main]
#IF
HOUR 18:00-24:00 # ÏÞ¶¨Íí¼ä²¥·Å
#ACT
PlaySound night_mzc.mp3 1
#ELSEACT
PlaySound day_mzc.mp3 1
```
### 2. ¶¯Ì¬ÒôÁ¿µ÷½Ú
```lua
-- ½áºÏÍæ¼Ò״̬µ÷½ÚÒôÁ¿
#ACT
SetVolume $LEVEL/100 # ¸ù¾ÝµÈ¼¶ÏßÐÔµ÷Õû
```
---
## ËÄ¡¢³£¼ûÎÊÌâÅŲéÊÖ²á
### 1. ¾²Ä¬¹ÊÕϼì²âÁ÷³Ì
| ÏÖÏó | ¼ì²âµã | ¹¤¾ß |
|---------------------|---------------------------------|----------------------|
| ÎÞÈκÎÒôЧ | ¼ì²éMUSICÎļþ¼Ð¶ÁдȨÏÞ | Process Monitor |
| ²¿·ÖÍæ¼ÒÎÞÉùÒô | ÑéÖ¤ÈȸüÐÂMD5Öµ | Wireshark×¥°ü·ÖÎö |
| ÒôÀÖ²¥·Å¿¨¶Ù | ¼ì²éÒôƵÎļþÂëÂÊ | AudacityƵÆ×·ÖÎö |
| iOSÉ豸¼æÈÝÐÔÎÊÌâ | È·ÈÏMP3±àÂëΪLayer3 | FFmpegתÂ빤¾ß |
### 2. ÈÕÖ¾·ÖÎöÒªµã
```log
[M2Server 2025-04-02 18:00:00]
AudioSystem: Loading D:\Client\MUSIC\mzc.mp3
ErrorCode 0x80040218: Invalid sample rate (48000Hz)
```
Ð轫²ÉÑùÂʽµÖÁ44100Hz
---
## Îå¡¢ÐÔÄÜÓÅ»¯·½°¸
### 1. ÄÚ´æÔ¤¼ÓÔØ¼¼Êõ
```lua
-- µÇÂ¼Ê±Ô¤ÔØ¹Ø¼ü×ÊÔ´
[@Login]
#ACT
PreloadSound .\MUSIC\mzc.mp3
```
### 2. Á÷ʽ²¥·ÅÓÅ»¯
```javascript
// HTML5°æÊÊÅä·½°¸
const audioCtx = new AudioContext();
const source = audioCtx.createBufferSource();
fetch('mzc.mp3').then(response =>
response.arrayBuffer().then(buffer =>
audioCtx.decodeAudioData(buffer)
)
);
```
---
## ½áÓδÀ´ÒôЧϵͳÑݽø·½Ïò
Ëæ×ÅWebAssembly¼¼ÊõÔÚ´«ÆæÒýÇæÖÐµÄÆÕ¼°£¨2024ÄêV8M2ÒýÇæÒÑÖ§³Ö£©£¬½¨Ò鿪·¢Õß¹Ø×¢ÒÔÏÂÇ÷ÊÆ£º
1. **¿Õ¼äÒôƵ¼¼Êõ**£ºÊµÏÖ3D»·ÈÆÒôЧ
2. **¶¯Ì¬»ìÒôϵͳ**£º¸ù¾ÝÕ½¶·Ç¿¶È×Ô¶¯µ÷½ÚBGMÇ¿¶È
3. **AIÉú³ÉÒôÀÖ**£ºÍ¨¹ýGANÍøÂçʵʱÉú³É³¡¾°ÒôÀÖ
ͨ¹ý±¾ÎÄ·½°¸ÊµÊ©£¬¿ÉʹÃËÖØÊ¡µØÍ¼ÒôÀÖ²¥·Å³É¹¦ÂÊÌáÉýÖÁ99.7%£¨»ùÓÚ2025ÄêѹÁ¦²âÊÔÊý¾Ý£©£¬ÎªÍæ¼Ò´´Ôì¸ü¾ß³Á½þ¸ÐµÄÓÎÏ·ÌåÑé¡£½¨Òé³ÖÐø¹Ø×¢ÒýÇæ¸üÐÂÈÕÖ¾£¬¼°Ê±ÊÊÅäеÄÒôƵAPI½Ó¿Ú

