背景:
阅读新闻

如何在特定区域禁止PvP

[日期:2007-09-08] 来源:原创  作者:AD Broken [字体: ]

比如DF和Despise禁止PvP,修改脚本为:

\Scripts\Misc\Notoriety.cs

   public static bool Mobile_AllowHarmful( Mobile from, Mobile target )
  {
   if( from == null || target == null || from.AccessLevel > AccessLevel.Player || target.AccessLevel > AccessLevel.Player )
    return true;

   if( from.Player && ( from.Region.IsPartOf( "Doom Gauntlet" ) ) && target.Player  )
    return false;

   if( from.Player && ( from.Region.Name == "Despise" ) && target.Player  )
    return false;

   Map map = from.Map;

   if( map != null && (map.Rules & MapRules.HarmfulRestrictions) == 0 )
    return true; // In felucca, anything goes

   if( !from.Player && !(from is BaseCreature && (((BaseCreature)from).Controlled || ((BaseCreature)from).Summoned)) )
   {
    if( !CheckAggressor( from.Aggressors, target ) && !CheckAggressed( from.Aggressed, target ) && target is PlayerMobile && ((PlayerMobile)target).CheckYoungProtection( from ) )
     return false;

    return true; // Uncontrolled NPCs are only restricted by the young system
   }

   Guild fromGuild = GetGuildFor( from.Guild as Guild, from );
   Guild targetGuild = GetGuildFor( target.Guild as Guild, target );

   if( fromGuild != null && targetGuild != null && (fromGuild == targetGuild || fromGuild.IsAlly( targetGuild ) || fromGuild.IsEnemy( targetGuild )) )
    return true; // Guild allies or enemies can be harmful

   if( target is BaseCreature && (((BaseCreature)target).Controlled || (((BaseCreature)target).Summoned && from != ((BaseCreature)target).SummonMaster)) )
    return false; // Cannot harm other controlled mobiles

   if( target.Player )
    return false; // Cannot harm other players

   if( !(target is BaseCreature && ((BaseCreature)target).InitialInnocent) )
   {
    if( Notoriety.Compute( from, target ) == Notoriety.Innocent )
     return false; // Cannot harm innocent mobiles
   }

   return true;
  }

请参考并理解其中的内容,然后酌情修改。
收藏 推荐 打印 | 录入:AD Broken | 阅读:
相关新闻