ÒÔÏÂÊÇһЩ HERO ÒýÇæµ¥»ú´«Ææ·þÎñ¶ËµÄ PVP ½Å±¾´úÂëʾÀý£º
1. **»ù´¡ PVP É˺¦¼ÆËã½Å±¾**£º
```
(@PlayerkillPlayer)
{
# »ñÈ¡¹¥»÷Õߺͱ»¹¥»÷ÕßµÄÐÅÏ¢
$Attacker = $Killer;
$Target = $Dead;
# ¶¨Òå»ù´¡É˺¦Öµ
$BaseDamage = 10;
# ¸ù¾Ý¹¥»÷ÕßµÄÊôÐÔ£¨Èç¹¥»÷Á¦£©Ôö¼ÓÉ˺¦
$AttackerAttack = $Attacker.GetAttack();
$Damage = $BaseDamage + $AttackerAttack;
# ¿Û³ý±»¹¥»÷ÕßµÄÉúÃüÖµ
$Target.SetHP($Target.GetHP() - $Damage);
# ·¢ËÍÉ˺¦ÐÅÏ¢¸øÍæ¼Ò
SendMsgToPlayer($Attacker, "Äã¶Ô [ $Target.Name ] Ôì³ÉÁË [ $Damage ] µãÉ˺¦£¡");
SendMsgToPlayer($Target, "Äã±» [ $Attacker.Name ] ¹¥»÷£¬Êܵ½ÁË [ $Damage ] µãÉ˺¦£¡");
}
```
ÔÚÕâ¸ö½Å±¾ÖУ¬µ±Íæ¼Ò¹¥»÷ÆäËûÍæ¼Òʱ£¬»á»ñÈ¡¹¥»÷Õߺͱ»¹¥»÷ÕßµÄÐÅÏ¢£¬¼ÆËã³öÉ˺¦Öµ²¢¿Û³ý±»¹¥»÷ÕßµÄÉúÃüÖµ£¬Í¬Ê±ÏòË«·½Íæ¼Ò·¢ËÍÉ˺¦ÐÅÏ¢¡£
2. **PVP ¼¼Äܽű¾**£º
```
(@SkillCast_SpecialPVPskill)
{
# »ñÈ¡¼¼ÄÜʹÓÃÕß
$Caster = $SkillCaster;
# ¶¨Òå¼¼ÄܵÄÌØÊâЧ¹û£¬±ÈÈç±¾´Î¼¼ÄÜʹÉ˺¦·±¶
$DamageMultiplier = 2;
# »ñȡĿ±êÍæ¼Ò
$Target = $TargetPlayer;
# ¼ÆËã¼¼ÄÜÉ˺¦
$BaseDamage = 20;
$SkillDamage = $BaseDamage * $DamageMultiplier;
# ¿Û³ýÄ¿±êÍæ¼ÒµÄÉúÃüÖµ
$Target.SetHP($Target.GetHP() - $SkillDamage);
# ·¢Ëͼ¼ÄÜʹÓÃÐÅÏ¢
SendMsgToPlayer($Caster, "ÄãʹÓÃÁËÌØÊâ PVP ¼¼ÄÜ£¬¶Ô [ $Target.Name ] Ôì³ÉÁË [ $SkillDamage ] µãÉ˺¦£¡");
SendMsgToPlayer($Target, "Äã±» [ $Caster.Name ] µÄÌØÊâ¼¼Äܹ¥»÷£¬Êܵ½ÁË [ $SkillDamage ] µãÉ˺¦£¡");
}
```
´Ë½Å±¾¶¨ÒåÁËÒ»¸öÌØÊâµÄ PVP ¼¼ÄÜ£¬µ±Íæ¼ÒʹÓøü¼ÄÜʱ£¬»á¸ù¾ÝÉ趨µÄÉ˺¦±¶Êý¼ÆËã³ö¼¼ÄÜÉ˺¦£¬²¢¶ÔÄ¿±êÍæ¼ÒÔì³ÉÉ˺¦£¬Í¬Ê±·¢Ëͼ¼ÄÜʹÓÃÐÅÏ¢¸øË«·½Íæ¼Ò¡£
3. **PVP ÇøÓòÏÞÖÆ½Å±¾**£º
```
(@MapEnter_PVPArea)
{
# ÉèÖÃÍæ¼Ò½øÈë PVP ÇøÓòºóµÄ PVP ״̬Ϊ¿É¹¥»÷
$Player.SetPVPStatus(1);
}
(@MapLeave_PVPArea)
{
# ÉèÖÃÍæ¼ÒÀ뿪 PVP ÇøÓòºóµÄ PVP ״̬Ϊ²»¿É¹¥»÷
$Player.SetPVPStatus(0);
}
```
Õâ×é½Å±¾ÓÃÓÚÏÞÖÆÍæ¼ÒÔÚÌØ¶¨ÇøÓòÄÚµÄ PVP ÐÐΪ¡£µ±Íæ¼Ò½øÈëÖ¸¶¨µÄ PVP ÇøÓòʱ£¬Æä PVP ״̬±»ÉèÖÃΪ¿É¹¥»÷£»µ±Íæ¼ÒÀ뿪¸ÃÇøÓòʱ£¬PVP ״̬±»ÉèÖÃΪ²»¿É¹¥»÷¡£
4. **PVP ʤÀû½±Àø½Å±¾**£º
```
(@PlayerWinPVP)
{
# »ñȡʤÀûµÄÍæ¼Ò
$Winner = $Killer;
# Ôö¼ÓʤÀûÍæ¼ÒµÄ¾ÑéºÍ½ð±Ò½±Àø
$Winner.AddExp(1000);
$Winner.AddGold(5000);
# ·¢Ëͽ±ÀøÐÅÏ¢
SendMsgToPlayer($Winner, "ÄãÔÚ PVP Õ½¶·Öлñʤ£¬»ñµÃÁË 1000 µã¾ÑéºÍ 5000 ½ð±ÒµÄ½±Àø£¡");
}
```
¸Ã½Å±¾ÔÚÍæ¼ÒÓ®µÃ PVP Õ½¶·ºó£¬¸øÓèÍæ¼ÒÒ»¶¨ÊýÁ¿µÄ¾ÑéºÍ½ð±Ò½±Àø£¬²¢·¢Ëͽ±ÀøÐÅÏ¢¸æÖªÍæ¼Ò¡£
5. **µ¥Ìô·¿¼ä½Å±¾**£º
```
(@main)
{
#SAY ÕâÀïÊǾº¼¼pk³¡Ëù£¬Âú×ãÍæ¼Òµ¥ÌôÐèÒª
#SAY ÿ¸ö·¿¼äÖ»¿ÉÈÝÄÉÁ½¸öÈË£¬²»ÄܺÈÒ©¡¢Ëæ»ú¡¢»Ø³Ç
<1ºÅpk·¿¼ä/@1hao><2ºÅpk·¿¼ä/@2hao><3ºÅpk·¿¼ä/@3hao>
<4ºÅpk·¿¼ä/@4hao><5ºÅpk·¿¼ä/@5hao><6ºÅpk·¿¼ä/@6hao>
}
(@1hao)
{
#if
checkrangehumcount pk001 14 14 10 < 2
#act
mapmove pk001
guildnoticemsg 244 215 %s ½øÈëÁË¡¾1ºÅpk·¿¼ä¡¿ÓëÈ˶Ծö¡£
#elseact
messagebox ¸Ã·¿¼äÂúÔ±£¬Çëµ½±ðµÄ·¿¼ä´òÈ¥
break
}
(@2hao)
{
#if
checkrangehumcount pk002 14 14 10 < 2
#act
mapmove pk002
guildnoticemsg 244 215 %s ½øÈëÁË¡¾2ºÅpk·¿¼ä¡¿ÓëÈ˶Ծö¡£
#elseact
messagebox ¸Ã·¿¼äÂúÔ±£¬Çëµ½±ðµÄ·¿¼ä´òÈ¥
break
}
// ÆäËû·¿¼äµÄ½Å±¾ÀàËÆ
```
ÕâÊÇÒ»¸öµ¥Ìô·¿¼äµÄ½Å±¾Ê¾Àý£¬Íæ¼Ò¿ÉÒÔÑ¡Ôñ½øÈ벻ͬµÄ·¿¼ä½øÐе¥Ìô£¬Ã¿¸ö·¿¼äÓÐÈËÔ±ÊýÁ¿ÏÞÖÆ£¬µ±·¿¼äÂúԱʱ»áÌáÊ¾Íæ¼ÒÑ¡ÔñÆäËû·¿¼ä¡£
1. **»ù´¡ PVP É˺¦¼ÆËã½Å±¾**£º
```
(@PlayerkillPlayer)
{
# »ñÈ¡¹¥»÷Õߺͱ»¹¥»÷ÕßµÄÐÅÏ¢
$Attacker = $Killer;
$Target = $Dead;
# ¶¨Òå»ù´¡É˺¦Öµ
$BaseDamage = 10;
# ¸ù¾Ý¹¥»÷ÕßµÄÊôÐÔ£¨Èç¹¥»÷Á¦£©Ôö¼ÓÉ˺¦
$AttackerAttack = $Attacker.GetAttack();
$Damage = $BaseDamage + $AttackerAttack;
# ¿Û³ý±»¹¥»÷ÕßµÄÉúÃüÖµ
$Target.SetHP($Target.GetHP() - $Damage);
# ·¢ËÍÉ˺¦ÐÅÏ¢¸øÍæ¼Ò
SendMsgToPlayer($Attacker, "Äã¶Ô [ $Target.Name ] Ôì³ÉÁË [ $Damage ] µãÉ˺¦£¡");
SendMsgToPlayer($Target, "Äã±» [ $Attacker.Name ] ¹¥»÷£¬Êܵ½ÁË [ $Damage ] µãÉ˺¦£¡");
}
```
ÔÚÕâ¸ö½Å±¾ÖУ¬µ±Íæ¼Ò¹¥»÷ÆäËûÍæ¼Òʱ£¬»á»ñÈ¡¹¥»÷Õߺͱ»¹¥»÷ÕßµÄÐÅÏ¢£¬¼ÆËã³öÉ˺¦Öµ²¢¿Û³ý±»¹¥»÷ÕßµÄÉúÃüÖµ£¬Í¬Ê±ÏòË«·½Íæ¼Ò·¢ËÍÉ˺¦ÐÅÏ¢¡£
2. **PVP ¼¼Äܽű¾**£º
```
(@SkillCast_SpecialPVPskill)
{
# »ñÈ¡¼¼ÄÜʹÓÃÕß
$Caster = $SkillCaster;
# ¶¨Òå¼¼ÄܵÄÌØÊâЧ¹û£¬±ÈÈç±¾´Î¼¼ÄÜʹÉ˺¦·±¶
$DamageMultiplier = 2;
# »ñȡĿ±êÍæ¼Ò
$Target = $TargetPlayer;
# ¼ÆËã¼¼ÄÜÉ˺¦
$BaseDamage = 20;
$SkillDamage = $BaseDamage * $DamageMultiplier;
# ¿Û³ýÄ¿±êÍæ¼ÒµÄÉúÃüÖµ
$Target.SetHP($Target.GetHP() - $SkillDamage);
# ·¢Ëͼ¼ÄÜʹÓÃÐÅÏ¢
SendMsgToPlayer($Caster, "ÄãʹÓÃÁËÌØÊâ PVP ¼¼ÄÜ£¬¶Ô [ $Target.Name ] Ôì³ÉÁË [ $SkillDamage ] µãÉ˺¦£¡");
SendMsgToPlayer($Target, "Äã±» [ $Caster.Name ] µÄÌØÊâ¼¼Äܹ¥»÷£¬Êܵ½ÁË [ $SkillDamage ] µãÉ˺¦£¡");
}
```
´Ë½Å±¾¶¨ÒåÁËÒ»¸öÌØÊâµÄ PVP ¼¼ÄÜ£¬µ±Íæ¼ÒʹÓøü¼ÄÜʱ£¬»á¸ù¾ÝÉ趨µÄÉ˺¦±¶Êý¼ÆËã³ö¼¼ÄÜÉ˺¦£¬²¢¶ÔÄ¿±êÍæ¼ÒÔì³ÉÉ˺¦£¬Í¬Ê±·¢Ëͼ¼ÄÜʹÓÃÐÅÏ¢¸øË«·½Íæ¼Ò¡£
3. **PVP ÇøÓòÏÞÖÆ½Å±¾**£º
```
(@MapEnter_PVPArea)
{
# ÉèÖÃÍæ¼Ò½øÈë PVP ÇøÓòºóµÄ PVP ״̬Ϊ¿É¹¥»÷
$Player.SetPVPStatus(1);
}
(@MapLeave_PVPArea)
{
# ÉèÖÃÍæ¼ÒÀ뿪 PVP ÇøÓòºóµÄ PVP ״̬Ϊ²»¿É¹¥»÷
$Player.SetPVPStatus(0);
}
```
Õâ×é½Å±¾ÓÃÓÚÏÞÖÆÍæ¼ÒÔÚÌØ¶¨ÇøÓòÄÚµÄ PVP ÐÐΪ¡£µ±Íæ¼Ò½øÈëÖ¸¶¨µÄ PVP ÇøÓòʱ£¬Æä PVP ״̬±»ÉèÖÃΪ¿É¹¥»÷£»µ±Íæ¼ÒÀ뿪¸ÃÇøÓòʱ£¬PVP ״̬±»ÉèÖÃΪ²»¿É¹¥»÷¡£
4. **PVP ʤÀû½±Àø½Å±¾**£º
```
(@PlayerWinPVP)
{
# »ñȡʤÀûµÄÍæ¼Ò
$Winner = $Killer;
# Ôö¼ÓʤÀûÍæ¼ÒµÄ¾ÑéºÍ½ð±Ò½±Àø
$Winner.AddExp(1000);
$Winner.AddGold(5000);
# ·¢Ëͽ±ÀøÐÅÏ¢
SendMsgToPlayer($Winner, "ÄãÔÚ PVP Õ½¶·Öлñʤ£¬»ñµÃÁË 1000 µã¾ÑéºÍ 5000 ½ð±ÒµÄ½±Àø£¡");
}
```
¸Ã½Å±¾ÔÚÍæ¼ÒÓ®µÃ PVP Õ½¶·ºó£¬¸øÓèÍæ¼ÒÒ»¶¨ÊýÁ¿µÄ¾ÑéºÍ½ð±Ò½±Àø£¬²¢·¢Ëͽ±ÀøÐÅÏ¢¸æÖªÍæ¼Ò¡£
5. **µ¥Ìô·¿¼ä½Å±¾**£º
```
(@main)
{
#SAY ÕâÀïÊǾº¼¼pk³¡Ëù£¬Âú×ãÍæ¼Òµ¥ÌôÐèÒª
#SAY ÿ¸ö·¿¼äÖ»¿ÉÈÝÄÉÁ½¸öÈË£¬²»ÄܺÈÒ©¡¢Ëæ»ú¡¢»Ø³Ç
<1ºÅpk·¿¼ä/@1hao><2ºÅpk·¿¼ä/@2hao><3ºÅpk·¿¼ä/@3hao>
<4ºÅpk·¿¼ä/@4hao><5ºÅpk·¿¼ä/@5hao><6ºÅpk·¿¼ä/@6hao>
}
(@1hao)
{
#if
checkrangehumcount pk001 14 14 10 < 2
#act
mapmove pk001
guildnoticemsg 244 215 %s ½øÈëÁË¡¾1ºÅpk·¿¼ä¡¿ÓëÈ˶Ծö¡£
#elseact
messagebox ¸Ã·¿¼äÂúÔ±£¬Çëµ½±ðµÄ·¿¼ä´òÈ¥
break
}
(@2hao)
{
#if
checkrangehumcount pk002 14 14 10 < 2
#act
mapmove pk002
guildnoticemsg 244 215 %s ½øÈëÁË¡¾2ºÅpk·¿¼ä¡¿ÓëÈ˶Ծö¡£
#elseact
messagebox ¸Ã·¿¼äÂúÔ±£¬Çëµ½±ðµÄ·¿¼ä´òÈ¥
break
}
// ÆäËû·¿¼äµÄ½Å±¾ÀàËÆ
```
ÕâÊÇÒ»¸öµ¥Ìô·¿¼äµÄ½Å±¾Ê¾Àý£¬Íæ¼Ò¿ÉÒÔÑ¡Ôñ½øÈ벻ͬµÄ·¿¼ä½øÐе¥Ìô£¬Ã¿¸ö·¿¼äÓÐÈËÔ±ÊýÁ¿ÏÞÖÆ£¬µ±·¿¼äÂúԱʱ»áÌáÊ¾Íæ¼ÒÑ¡ÔñÆäËû·¿¼ä¡£

