مشاهدة النسخة كاملة : مشكلة بخصوص اسكلة النينجا ToxicFog
MRonlineGvrix
2019-08-06, 04:44 PM
صورة من الاسكلة (تم تعديل الموضوع بناء على طلب المشرف )
عفواً لايمكن عرض الروابط في الإرشيف
المشكلة هيا لوضربت بيها اى لاعب مش بتائر فى خالص ولو دمو ناقص بتعمل العكس بتزود دمو
ودا ريجون الاسكلة فى السورس
case 6001://toxicfog
{
if (CanUseSpell(spell, attacker.Owner))
{
PrepareSpell(spell, attacker.Owner);
SpellUse suse = new SpellUse(true);
suse.Attacker = attacker.UID;
suse.SpellID = spell.ID;
suse.SpellLevel = spell.Level;
suse.X = X;
suse.Y = Y;
if (Kernel.GetDistance(attacker.X, attacker.Y, X, Y) <= spell.Distance)
{
foreach (Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
{
if (_obj.MapObjType == MapObjectType.Entity || _obj.MapObjType == MapObjectType.Monster)
{
attacked = _obj as Entity;
if (attacked.MapObjType == MapObjectType.Monster)
if (attacked.MonsterInfo.Boss)
continue;
if (Kernel.GetDistance(X, Y, attacked.X, attacked.Y) <= spell.Range)
{
if (CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
{
int potDifference = attacker.BattlePower - attacked.BattlePower;
int rate = spell.Percent + potDifference - 20;
if (Kernel.Rate(rate))
{
attacked.ToxicFogStamp = Time32.Now;
attacked.ToxicFogLeft = 7;
attacked.ToxicFogPercent = spell.PowerPercent;
attacked.AddFlag(Update.Flags.Poisoned);
suse.AddTarget(attacked.UID, 1, null);
}
else
{
suse.AddTarget(attacked.UID, 0, null);
suse.Targets[attacked.UID].Hit = false;
}
}
}
}
}
}
else
{
attacker.AttackPacket = null;
}
attacker.Owner.SendScreen(suse, true);
}
break;
}
Hassan Emprator
2019-08-06, 04:46 PM
طيب يحبي ما انا بعتلك حلها مشفتهوش ليه ؟
MRonlineGvrix
2019-08-06, 04:51 PM
طيب يحبي ما انا بعتلك حلها مشفتهوش ليه ؟
تم حل اسكلة 1 بس من الحلول الى حلتهالى
وشكرتك فيها وشكرا لتانى مرة يباشا
هتدخل علي world و تبحث عن #region ToxicFog
لقيتها بدلها ب دي هيجيلك ايرور في Player غيرها ل Entity
#region ToxicFog
if (client.Player.ToxicFogLeft > 0)
{
if (Now >= client.Player.ToxicFogStamp.AddSeconds(2))
{
float Percent = client.Player.ToxicFogPercent;
if (client.Player.Detoxication != 0)
{
float immu = 1 - client.Player.Detoxication / 100F;
Percent = Percent * immu;
}
client.Player.ToxicFogLeft--;
if (client.Player.ToxicFogLeft == 0)
{
client.Player.RemoveFlag(Update.Flags.Poisoned);
return;
}
client.Player.ToxicFogStamp = Now;
if (client.Player.Hitpoints > 1)
{
uint damage = Game.Attacking.Calculate.Percent(client.Player, Percent);
if (client.Player.ContainsFlag2(Network.GamePackets.U pdate.Flags2.AzureShield))
{
if (damage > client.Player.AzureShieldDefence)
{
damage -= client.Player.AzureShieldDefence;
Game.Attacking.Calculate.CreateAzureDMG(client.Pla yer.AzureShieldDefence, client.Player, client.Player);
client.Player.RemoveFlag2(Network.GamePackets.Upda te.Flags2.AzureShield);
}
else
{
Game.Attacking.Calculate.CreateAzureDMG((uint)dama ge, client.Player, client.Player);
client.Player.AzureShieldDefence -= (ushort)damage;
client.Player.AzureShieldPacket();
damage = 1;
}
}
else
client.Player.Hitpoints -= damage;
Network.GamePackets.SpellUse suse = new Network.GamePackets.SpellUse(true);
suse.Attacker = client.Player.UID;
suse.SpellID = 10010;
suse.AddTarget(client.Player, damage, null);
client.SendScreen(suse, true);
// if (client != null)
// client.UpdateQualifier(client.ArenaStatistic.PlayW ith, client, damage);//
}
}
}
else
{
if (client.Player.ContainsFlag(Update.Flags.Poisoned) )
client.Player.RemoveFlag(Update.Flags.Poisoned);
}
#endregion
طب ملقتهاش ابحث عن private void BuffersCallback(
و حط الكود الي فوق ده تحتها
MRonlineGvrix
2019-08-06, 05:13 PM
جارى التجربة انتظر الرد
في انتظار الرد باذن الله تم حل كل المشاكل في البوست الاخر
MRonlineGvrix
2019-08-06, 05:25 PM
المشكلة زى مهيا وصورة للتوضيح اهى بعد اضافا حضرتك
عفواً لايمكن عرض الروابط في الإرشيف
ولو الدم ناقص بتزودو كمان يعنى المهارة بتعمل العكس بظبط بدل متنقص الدم بتزودو ولو الدم كامل ولا اكن ضرتو ولا اى حاج
وشكرا للمساعدة
:emoji2:
دا الرجون بظبط
#region ToxicFog
if (client.Entity.ToxicFogLeft > 0)
{
if (Now >= client.Entity.ToxicFogStamp.AddSeconds(2))
{
float Percent = client.Entity.ToxicFogPercent;
if (client.Entity.Detoxication != 0)
{
float immu = 1 - client.Entity.Detoxication / 100F;
Percent = Percent * immu;
}
client.Entity.ToxicFogLeft--;
if (client.Entity.ToxicFogLeft == 0)
{
client.Entity.RemoveFlag(Update.Flags.Poisoned);
return;
}
client.Entity.ToxicFogStamp = Now;
if (client.Entity.Hitpoints > 1)
{
uint damage = Game.Attacking.Calculate.Percent(client.Entity, Percent);
if (client.Entity.ContainsFlag2(Network.GamePackets.U pdate.Flags2.AzureShield))
{
if (damage > client.Entity.AzureShieldDefence)
{
damage -= client.Entity.AzureShieldDefence;
Game.Attacking.Calculate.CreateAzureDMG(client.Ent ity.AzureShieldDefence, client.Entity, client.Entity);
client.Entity.RemoveFlag2(Network.GamePackets.Upda te.Flags2.AzureShield);
}
else
{
Game.Attacking.Calculate.CreateAzureDMG((uint)dama ge, client.Entity, client.Entity);
client.Entity.AzureShieldDefence -= (ushort)damage;
client.Entity.AzureShieldPacket();
damage = 1;
}
}
else
client.Entity.Hitpoints -= damage;
Network.GamePackets.SpellUse suse = new Network.GamePackets.SpellUse(true);
suse.Attacker = client.Entity.UID;
suse.SpellID = 10010;
suse.AddTarget(client.Entity, damage, null);
client.SendScreen(suse, true);
if (client != null)
client.UpdateQualifier(damage, true);
}
}
}
else
{
if (client.Entity.ContainsFlag(Update.Flags.Poisoned) )
client.Entity.RemoveFlag(Update.Flags.Poisoned);
}
#endregion
الريجون الى انتا بعتو كان فى ايرور فى فى الكود دا client.UpdateQualifier(client.ArenaStatistic.PlayW ith, client, damage);//
خليتو كدا client.UpdateQualifier(damage, true);
جرب روح مابه تانيه غير تون لو قلبك نقص تحت
suse.AddTarget(client.Player, damage, null);
ضيف
client.Player.Hitpoints -= damage;
متابع
MRonlineGvrix
2019-08-06, 06:30 PM
تم الحل شكرا جداجدا جدا
الف شكرا منتدى جميل جدا
vBulletin® v3.8.8 Beta 1, Copyright ©2000-2024, TranZ by code