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

´«Ææ·þÎñÆ÷¶ËÑ«Õ¼¼Äܽű¾ÊµÏÖ

À´Ô´£º ×÷Õߣº Èȶȣº
±¾ÎĵµÏêϸ½éÉÜÁËÈçºÎÔÚ´«Æ棨Miracle MU£©·þÎñÆ÷¶ËʵÏÖÒ»¸öϵͳ£¬Ê¹µÃÍæ¼ÒÅå´÷Ìض¨µÄÑ«Õ²ÅÄÜ»ñµÃÏàÓ¦µÄ¼¼ÄÜ¡£Ñ«Õ·ÖΪµÀ¡¢Õ¾¡¢·¨ÈýÖÖÖ°ÒµÀàÐÍ£¬²¢ÇÒ¸ù¾ÝµÈ¼¶µÄ²»Í¬¿ÉÒÔ»ñµÃ²»Í¬µÄ¼¼ÄÜ×éºÏ¡£´ËÍ⣬ѫÕ¿ÉÒÔͨ¹ýµÍµÈ¼¶ºÏ³É¸ßµÈ¼¶¡£

## ¹¦ÄÜÐèÇó
1. **Ñ«Õ·ÖÀà**£ºÑ«Õ·ÖΪµÀ¼Ò¡¢Õ½Ê¿ºÍ·¨Ê¦ÈýÖÖÖ°ÒµÀàÐÍ¡£
2. **¼¼Äܼ¯³É**£ºËùÓм¼Äܶ¼¼¯³ÉÔÚÑ«ÕÂÄÚ£¬Åå´÷ÁËÑ«Õ²Żᴥ·¢¼¼ÄÜÀ¸¡£
3. **µÈ¼¶»úÖÆ**£ºÑ«Õ·ֵȼ¶£¬µÈ¼¶Ô½¸ß¼¼ÄÜÔ½¶à¡£
4. **¶¯Ì¬¸üÐÂ**£ºµ±Íæ¼Ò×°±¸»òжÏÂÑ«ÕÂʱ£¬¶¯Ì¬¸üÐÂÆä¼¼ÄÜÀ¸¡£

## ʵÏÖ²½Öè
### 1. ¶¨ÒåÑ«ÕÂÊý¾Ý½á¹¹
ÎÒÃÇÊ×Ïȶ¨ÒåÒ»¸ö°üº¬ËùÓÐÑ«Õ¼°Æä¶ÔÓ¦¼¼ÄܵÄÊý¾Ý½á¹¹¡£

```lua
-- ¶¨ÒåÑ«ÕÂÊý¾Ý½á¹¹
local medals = {
["DaoMedal"] = { name = "µÀ¼ÒÑ«ÕÂ", class = "Daoist", levelSkills = { [1] = "LightningBolt", [2] = "ThunderWave" } },
["ZhanMedal"] = { name = "սʿѫÕÂ", class = "Warrior", levelSkills = { [1] = "IronSkin", [2] = "PowerStrike" } },
["FaMedal"] = { name = "·¨Ê¦Ñ«ÕÂ", class = "Mage", levelSkills = { [1] = "Fireball", [2] = "IceShield" } }
}
```

### 2. »ñÈ¡Íæ¼Òµ±Ç°Åå´÷µÄÑ«ÕÂ
±àдһ¸öº¯ÊýÀ´¼ì²éÍæ¼ÒÊÇ·ñÅå´÷ÁËÌض¨µÄÑ«Õ£¬²¢·µ»ØÑ«ÕÂÐÅÏ¢ºÍÆäµÈ¼¶¡£

```lua
-- »ñÈ¡Íæ¼Òµ±Ç°Åå´÷µÄÑ«ÕÂ
function getPlayerMedal(player)
local medalItem = player:getEquippedItem(EQUIPMENT_SLOT_NECKLACE) -- ¼ÙÉèÑ«Õ´÷ÔÚÏîÁ´²Ûλ
if medalItem and medals[medalItem.name] then
return medals[medalItem.name], medalItem.level
end
return nil, 0
end
```

### 3. ¸üÐÂÍæ¼Ò¼¼ÄÜÀ¸
±àдһ¸öº¯ÊýÀ´¸ù¾ÝÍæ¼ÒÅå´÷µÄÑ«Õ¼°ÆäµÈ¼¶À´¸üÐÂÍæ¼ÒµÄ¼¼ÄÜÀ¸¡£

```lua
-- ¸üÐÂÍæ¼Ò¼¼ÄÜÀ¸
function updatePlayerSkills(player)
local medal, level = getPlayerMedal(player)
player:clearSkills() -- Çå¿ÕÔ­Óм¼ÄÜ

if medal and level > 0 then
for i = 1, level do
local skillName = medal.levelSkills[i]
if skillName then
player:addSkill(skillName)
end
end
end
end
```

### 4. ¼àÌý×°±¸±ä»¯Ê¼þ
ͨ¹ý¼àÌýÍæ¼Ò×°±¸ºÍжÏÂ×°±¸µÄʼþ£¬¶¯Ì¬¸üÐÂÍæ¼ÒµÄ¼¼ÄÜ¡£

```lua
-- ¼àÌýÍæ¼Ò×°±¸±ä»¯Ê¼þ
addEventHandler("onPlayerEquipItem", function(player, item, slot)
updatePlayerSkills(player)
end)

-- ¼àÌýÍæ¼ÒжÏÂ×°±¸Ê¼þ
addEventHandler("onPlayerUnequipItem", function(player, item, slot)
updatePlayerSkills(player)
end)
```

### 5. ³õʼ»¯Íæ¼Ò¼¼ÄÜ
ÔÚÍæ¼ÒµÇ¼ʱ£¬³õʼ»¯Æä¼¼ÄÜÀ¸¡£

```lua
-- ³õʼ»¯Íæ¼Ò¼¼ÄÜ
addEventHandler("onPlayerLogin", function(player)
updatePlayerSkills(player)
end)
```

## ÍêÕû´úÂë
ÒÔÏÂÊÇÍêÕûµÄLua½Å±¾´úÂ룬ʵÏÖÁËÉÏÊö¹¦ÄÜ£º

-- ¶¨ÒåÑ«ÕÂÊý¾Ý½á¹¹
local medals = {
["DaoMedal"] = { name = "µÀ¼ÒÑ«ÕÂ", class = "Daoist", levelSkills = { [1] = "LightningBolt", [2] = "ThunderWave" } },
["ZhanMedal"] = { name = "սʿѫÕÂ", class = "Warrior", levelSkills = { [1] = "IronSkin", [2] = "PowerStrike" } },
["FaMedal"] = { name = "·¨Ê¦Ñ«ÕÂ", class = "Mage", levelSkills = { [1] = "Fireball", [2] = "IceShield" } }
}

-- »ñÈ¡Íæ¼Òµ±Ç°Åå´÷µÄÑ«ÕÂ
function getPlayerMedal(player)
local medalItem = player:getEquippedItem(EQUIPMENT_SLOT_NECKLACE) -- ¼ÙÉèÑ«Õ´÷ÔÚÏîÁ´²Ûλ
if medalItem and medals[medalItem.name] then
return medals[medalItem.name], medalItem.level
end
return nil, 0
end

-- ¸üÐÂÍæ¼Ò¼¼ÄÜÀ¸
function updatePlayerSkills(player)
local medal, level = getPlayerMedal(player)
player:clearSkills() -- Çå¿ÕÔ­Óм¼ÄÜ

if medal and level > 0 then
for i = 1, level do
local skillName = medal.levelSkills[i]
if skillName then
player:addSkill(skillName)
end
end
end
end

-- ¼àÌýÍæ¼Ò×°±¸±ä»¯Ê¼þ
addEventHandler("onPlayerEquipItem", function(player, item, slot)
updatePlayerSkills(player)
end)

-- ¼àÌýÍæ¼ÒжÏÂ×°±¸Ê¼þ
addEventHandler("onPlayerUnequipItem", function(player, item, slot)
updatePlayerSkills(player)
end)

-- ³õʼ»¯Íæ¼Ò¼¼ÄÜ
addEventHandler("onPlayerLogin", function(player)
updatePlayerSkills(player)
end)

## ½áÂÛ
ͨ¹ýÉÏÊö²½Ö裬ÎÒÃÇ¿ÉÒÔʵÏÖÒ»¸öÍêÉƵÄϵͳ£¬Ê¹µÃÍæ¼ÒÅå´÷Ìض¨µÄÑ«Õ²ÅÄÜ»ñµÃÏàÓ¦µÄ¼¼ÄÜ£¬²¢ÇÒ¿ÉÒÔ¸ù¾ÝÑ«Õµĵȼ¶»ñµÃ²»Í¬ÊýÁ¿µÄ¼¼ÄÜ¡£Ï£ÍûÕâƪÎĵµ¶ÔÄãÓÐËù°ïÖú£¡