السلام عليكم ورحمة الله وبركاته
من كام يوم شفت موضوع هنا ان الجانج مش بيفتح في التون تقريبا ولما بيفتح بيزود اتاك
انحل المشاكل ده وانخلي الجانج يشتغل في اي مكان ماعدا الماركت
اول حاجة هتخش على Constants.cs
و تدور على
كود:
public static readonly System.Collections.Generic.List<ushort> PKFreeMaps = new System.Collections.Generic.List<ushort>()
تضيف فوقيه على طول الفويد دا
كود:
public static readonly System.Collections.Generic.List<ushort> PKJiangHu = new System.Collections.Generic.List<ushort>()
{
1011,
1015,
1020,
1000
};
بعد كده روح لكلاس Handle.cs
و تبحث عن
كود:
public static bool CanAttack(Game.Entity attacker, Game.Entity attacked, Database.SpellInformation spell, bool melee)
و تقفلو من السالب و تبدلو بالكود دا
كود:
public static bool CanAttack(Game.Entity attacker, Game.Entity attacked, Database.SpellInformation spell, bool melee)
{
if (attacker.EntityFlag == EntityFlag.Player)
if (attacker.PKMode == Enums.PKMode.JiangHu)
if (Constants.PKJiangHu.Contains(attacker.Owner.Map.ID))
if (attacked.EntityFlag == EntityFlag.Player)
if (attacked.PKMode == Enums.PKMode.JiangHu)
if (Constants.PKJiangHu.Contains(attacked.Owner.Map.ID))
return true;
if (attacked.EntityFlag == EntityFlag.Monster)
if (attacked.MonsterInfo.ID == MonsterInformation.ReviverID)
return false;
if (attacked.Dead) return false;
if (attacker.EntityFlag == EntityFlag.Player)
if (attacker.Owner.WatchingElitePKMatch != null)
return false;
if (attacked.EntityFlag == EntityFlag.Player)
if (attacked.Owner.WatchingElitePKMatch != null)
return false;
if (attacker.EntityFlag == EntityFlag.Player)
if (attacked != null && attacked.EntityFlag == EntityFlag.Player)
if (attacker.Owner.InTeamQualifier() && attacked.Owner.InTeamQualifier())
return !attacker.Owner.Team.IsTeammate(attacked.UID);
if (attacker.MapID == CaptureTheFlag.MapID)
if (!CaptureTheFlag.Attackable(attacker) || !CaptureTheFlag.Attackable(attacked))
return false;
if (attacker.MapID == DeathMatch.MAPID)
return attacker.TeamDeathMatchTeamKey != attacked.TeamDeathMatchTeamKey;
if (spell != null)
if (spell.CanKill && attacker.EntityFlag == EntityFlag.Player && Constants.PKForbiddenMaps.Contains(attacker.Owner.Map.ID) && attacked.EntityFlag == EntityFlag.Player && (attacker.TalentStaus == 0))
return false;
if (attacker.EntityFlag == EntityFlag.Player)
if (attacker.Owner.WatchingGroup != null)
return false;
if (attacked == null)
return false;
if (attacked.Dead)
{
attacker.AttackPacket = null;
return false;
}
if (attacker.EntityFlag == EntityFlag.Player && attacked.EntityFlag == EntityFlag.Player)
if ((attacker.Owner.InQualifier() && attacked.Owner.IsWatching()) || (attacked.Owner.InQualifier() && attacker.Owner.IsWatching()))
return false;
if (attacker.EntityFlag == EntityFlag.Player)
if (Time32.Now < attacker.Owner.CantAttack)
return false;
if (attacked.EntityFlag == EntityFlag.Monster)
{
if (attacked.Companion)
{
if (Constants.PKForbiddenMaps.Contains(attacker.Owner.Map.ID))
{
if (attacked.Owner == attacker.Owner)
return false;
if (attacker.PKMode != Conquer_Online_Server.Game.Enums.PKMode.PK &&
attacker.PKMode != Conquer_Online_Server.Game.Enums.PKMode.Team)
return false;
else
{
attacker.AddFlag(Network.GamePackets.Update.Flags.FlashingName);
attacker.FlashingNameStamp = Time32.Now;
attacker.FlashingNameTime = 10;
return true;
}
}
}
if (attacked.Name.Contains("[P|O|L|I|C|E]"))
{
if (attacker.PKMode != Conquer_Online_Server.Game.Enums.PKMode.PK &&
attacker.PKMode != Conquer_Online_Server.Game.Enums.PKMode.Team)
return false;
else
{
attacker.AddFlag(Network.GamePackets.Update.Flags.FlashingName);
attacker.FlashingNameStamp = Time32.Now;
attacker.FlashingNameTime = 10;
return true;
}
}
else
return true;
}
else
{
if (attacked.EntityFlag == EntityFlag.Player)
if (!attacked.Owner.Attackable)
return false;
if (attacker.EntityFlag == EntityFlag.Player)
if (attacker.Owner.WatchingGroup == null)
if (attacked.EntityFlag == EntityFlag.Player)
if (attacked.Owner.WatchingGroup != null)
return false;
if (spell != null)
{//Ahmed Samak : fixing the scatter on fly issue .. the condition below to constraint the cecking for the attacked is on ground or not on any spell except the scatter.
if (spell.ID != 8001)
{
if (spell.OnlyGround)
if (attacked.ContainsFlag(Update.Flags.Fly))
return false;
if (melee && attacked.ContainsFlag(Update.Flags.Fly))
return false;
}
}
if (spell != null)
{
if (spell.ID == 6010)
{
if (attacked.ContainsFlag(Update.Flags.Fly))
return false;
}
}
if (spell != null)
{
if (spell.ID == 10381)
{
if (attacked.ContainsFlag(Update.Flags.Fly))
return false;
}
}
if (spell != null)
{
if (spell.ID == 6000)
{
if (attacked.ContainsFlag(Update.Flags.Fly))
return false;
}
}
if (spell != null)
{
if (spell.ID == 5030)
{
if (attacked.ContainsFlag(Update.Flags.Fly))
return false;
}
}
if (spell == null)
{
if (attacked.ContainsFlag(Update.Flags.Fly))
return false;
}
if (Constants.PKForbiddenMaps.Contains(attacker.Owner.Map.ID))
{
if (attacker.PKMode == Enums.PKMode.JiangHu)
{
if (attacked == null)
{
return false;
}
if ((attacker.TalentStaus >= 1) && (attacked.TalentStaus == 0))
{
attacker.Owner.Send(new Message("Sorry You Can't Attack Players Not in Jiang Hu Mode", System.Drawing.Color.Red, 0x7dc));
attacker.AttackPacket = null;
return false;
}
if (((attacker.TalentStaus >= 1) && (attacked.TalentStaus >= 1)) && Allyss(attacker, attacked))
{
attacker.AttackPacket = null;
return false;
}
if (((attacked.EntityFlag == EntityFlag.Player) && (attacker.EntityFlag == EntityFlag.Player)) &&
((attacker.TalentStaus >= 1) && (attacked.TalentStaus >= 1)) &&
(Constants.PKJiangHu.Contains(attacker.Owner.Map.ID)))
{
if ((attacker.EntityFlag == EntityFlag.Player) && (attacker.Owner.WatchingGroup != null))
{
return false;
}
if (attacked.Dead)
{
attacker.AttackPacket = null;
return false;
}
}
return true;
}
if (((attacker.PKMode == Enums.PKMode.PK) || (attacker.PKMode == Enums.PKMode.Team)) || ((spell != null) && spell.CanKill))
{
attacker.Owner.Send(Constants.PKForbidden);
attacker.AttackPacket = null;
}
return false;
}
if (attacker.PKMode == Conquer_Online_Server.Game.Enums.PKMode.Capture)
{
if (attacked.ContainsFlag(Update.Flags.FlashingName) || attacked.PKPoints > 99)
{
return true;
}
}
if (attacker.PKMode == Conquer_Online_Server.Game.Enums.PKMode.Peace)
{
return false;
}
if (attacker.UID == attacked.UID)
return false;
if (attacker.PKMode == Conquer_Online_Server.Game.Enums.PKMode.Team)
{
if (attacker.Owner.Team != null)
{
if (attacker.Owner.Team.IsTeammate(attacked.UID))
{
attacker.AttackPacket = null;
return false;
}
}
if (attacker.GuildID == attacked.GuildID && attacker.GuildID != 0)
{
attacker.AttackPacket = null;
return false;
}
if (attacker.ClanId == attacked.ClanId && attacker.ClanId != 0)
{
attacker.AttackPacket = null;
return false;
}
if (attacker.Owner.Friends.ContainsKey(attacked.UID))
{
attacker.AttackPacket = null;
return false;
}
if (attacker.Owner.Guild != null)
{
if (attacker.Owner.Guild.Ally.ContainsKey(attacked.GuildID))
{
attacker.AttackPacket = null;
return false;
}
}
if (attacker.ClanId != 0)
{
if (attacker.GetClan.Allies.ContainsKey(attacked.ClanId))
{
attacker.AttackPacket = null;
return false;
}
}
}
if (spell != null)
if (spell.OnlyGround)
if (attacked.ContainsFlag(Update.Flags.Fly))
return false;
if (spell != null)
if (!spell.CanKill)
return true;
if (attacker.PKMode != Conquer_Online_Server.Game.Enums.PKMode.PK &&
attacker.PKMode != Conquer_Online_Server.Game.Enums.PKMode.Team && attacked.PKPoints < 99)
{
attacker.AttackPacket = null;
return false;
}
if (attacker.PKMode == Enums.PKMode.JiangHu)
{
if (attacked == null)
{
return false;
}
if (((attacker.TalentStaus >= 1) && (attacked.TalentStaus == 0)) && Allyss(attacker, attacked))
{
attacker.AttackPacket = null;
return false;
}
if (((attacked.EntityFlag == EntityFlag.Player) &&
(attacker.EntityFlag == EntityFlag.Player)) &&
((attacker.TalentStaus >= 1) && (attacked.TalentStaus >= 1)) &&
(Constants.PKJiangHu.Contains(attacker.Owner.Map.ID)))
{
if ((attacker.EntityFlag == EntityFlag.Player) && (attacker.Owner.WatchingGroup != null))
{
return false;
}
if (attacked.Dead)
{
attacker.AttackPacket = null;
return false;
}
}
return true;
}
if (((attacker.TalentStaus == 0) && (attacked.TalentStaus >= 1)) && Allyss(attacker, attacked))
{
attacker.AttackPacket = null;
return false;
}
else
{
if (!attacked.ContainsFlag(Update.Flags.FlashingName))
{
if (!attacked.ContainsFlag(Update.Flags.BlackName))
{
if (Constants.PKFreeMaps.Contains(attacker.MapID))
return true;
//if (Constants.PKJiangHu.Contains(attacker.MapID))
// return true;
if (Constants.Damage1Map.Contains(attacker.MapID))
return true;
if (attacker.Owner.Map.BaseID == 700)
return true;
attacker.AddFlag(Network.GamePackets.Update.Flags.FlashingName);
attacker.FlashingNameStamp = Time32.Now;
attacker.FlashingNameTime = 10;
}
}
}
return true;
}
}
و بعد كدا تفتح Entity.cs
و تبحث عن
كود:
if (Constants.PKFreeMaps.Contains(killer.MapID))
goto Over;
و تضيف تحتو الكود دا
كود:
if (Constants.PKJiangHu.Contains(killer.MapID) && killer.PKMode == Enums.PKMode.JiangHu)
goto Over;