Ramix Sex Ago 13, 2010 1:15 am
esquece nao da assim... deves ter isso mal configurado... pois o loft nao é igual ao binary tens que configurar o appserver para o loft resumindo appserver 2.5.0+
e henrique esta aqui o reflect
1- abres o source
2- abres o Database.cs
3- procura este codigo (atençao que sao dois codigos)
- Código:
C.Skills.Add(S.ID, S);
4- debaixo dos dois codigos adiciona isto
- Código:
if (s.ID == 3060)
C.CanReflect = true;
5- vai ficar assim
- Código:
if (!C.Skills.ContainsKey(s.ID))
C.Skills.Add(s.ID, s);
if (s.ID == 3060)
C.CanReflect = true;
6- abre o characters.cs
7- procura isto
- Código:
public byte BlueNameLasts;
8- por debaixo do codigo adiciona isto
- Código:
public bool CanReflect = false;
9 -procura no character.cs este codigo
- Código:
public void TakeAttack(Mob Attacker, uint Damage, AttackType AT)
10- dentro deste codigo tens este aqui que esta um bocadinho mais a baixo
- Código:
Buff B = BuffOf(SkillsClass.ExtraEffect.Scapegoat);
RemoveBuff(B);
uint Dmg = (uint)(PrepareAttack(2, false) * B.Value);
Attacker.TakeAttack(this, ref Dmg, AttackType.Scapegoat, false);
return;//Will not be damaged
por debaixo desse codigo metes este
- Código:
if (CanReflect)
{
if (MyMath.ChanceSuccess(20))
{
Attacker.GetReflect(ref Damage, AT);
MyClient.AddSend(Packets.String(EntityID, 10, "MagicReflect"));
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Name != MyClient.MyChar.Name)
{
Chaar.MyClient.AddSend(Packets.String(EntityID, 10, "MagicReflect"));
}
}
if (Protection) Damage = 0;
return;
}
}
11- procura no characters.cs este codigo
- Código:
public void TakeAttack(Character Attacker, uint Damage, AttackType AT, bool IsSkill)
12- por cima do codigo adiciona isto
- Código:
public void GetReflect(ref uint Damage, AttackType AT)
{
if (Damage < CurHP)
{
CurHP -= (ushort)Damage;
World.Action(this, Packets.AttackPacket(EntityID, EntityID, Loc.X, Loc.Y, Damage, (byte)AT).Get);
}
else
{
InitAngry(true);
AtkMem.Attacking = false;
AtkMem.Target = 0;
AtkMem.Attacking = false;
AtkMem.Target = 0;
if (!World.FreePKMaps.Contains(Loc.Map))
Alive = false;
CurHP = 0;
// World.Action(this, Packets.AttackPacket(EntityID, EntityID, Loc.X, Loc.Y, Damage, (byte)AT).Get);
World.Action(this, Packets.AttackPacket(EntityID, EntityID, Loc.X, Loc.Y, Damage, (byte)AttackType.Kill).Get);
StatEff.Remove(StatusEffectEn.Cyclone);
StatEff.Remove(StatusEffectEn.FatalStrike);
StatEff.Remove(StatusEffectEn.BlueName);
StatEff.Remove(StatusEffectEn.Flashy);
StatEff.Remove(StatusEffectEn.ShurikenVortex);
BlueName = false;
StatEff.Remove(StatusEffectEn.SuperMan);
StatEff.Remove(StatusEffectEn.XPStart);
StatEff.Remove(StatusEffectEn.Ride);
StatEff.Add(StatusEffectEn.Dead);
DeathHit = DateTime.Now;
}
}
dps por debaixo deste codigo
- Código:
public void TakeAttack(Character Attacker, uint Damage, AttackType AT, bool IsSkill)
procura este codigo la
- Código:
if (BuffOf(SkillsClass.ExtraEffect.Scapegoat).Eff == SkillsClass.ExtraEffect.Scapegoat && MyMath.ChanceSuccess(5))
e por cima dele metes este codigo
- Código:
if (CanReflect)
{
if (MyMath.ChanceSuccess(25))
{
http://Attacker.GetReflect(ref Damage, AT);
MyClient.AddSend(Packets.String(EntityID, 10, "MagicReflect"));
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Name != MyClient.MyChar.Name)
{
Chaar.MyClient.AddSend(Packets.String(EntityID, 10, "MagicReflect"));
}
}
Damage = 0;
return;
}
}
13 Agora vai ao mobs.cs e procura este codigo
- Código:
public void TakeAttack(Mob Attacker, uint Damage, AttackType AT)
por cima dele metes isto.
- Código:
public void GetReflect(ref uint Damage, AttackType AT)
{
if (Damage < CurrentHP)
{
CurrentHP -= Damage;
World.Action(this, Packets.AttackPacket(EntityID, EntityID, Loc.X, Loc.Y, Damage, (byte)AT).Get);
}
else
{
Alive = false;
uint Benefit = CurrentHP;
CurrentHP = 0;
PoisonedInfo = null;
Died = DateTime.Now;
World.Action(this, Packets.AttackPacket(EntityID, EntityID, Loc.X, Loc.Y, Damage, (byte)AttackType.Kill).Get);
World.Action(this, Packets.Status(EntityID, Status.Effect, 2080).Get);
}
}
e ja esta ficas com o reflect no server...