المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مشكله في اسكله TwilightDance هنا


uncelsam
2019-06-26, 02:40 AM
المشكله ان الاسكله مش مظبوطه في الشكل او بمعني اصح بتيجي في نص الشاشه ده اخرها انا عاوزها تجيب لاخر الشاشه

Users
2019-06-26, 09:52 PM
ولا تزعل نفسك اى سورس اسحب افيكت الاسكله وضيفة عندك انا لو فاتح من الجهاز كان بعتهولك جرب وقولنا

uncelsam
2019-06-27, 04:03 AM
شكرا جزيرا

محمد ياسر
2019-06-28, 09:18 AM
المشكله اتحلت ولا لسه ؟

uncelsam
2019-06-28, 03:46 PM
المشكله اتحلت ولا لسه ؟

انا عملت زي ما المحترم قال وسحبت الايفكت بس بردو زي ماهيا
وهيا المفروض تجيب لاخر الشاشه وسورسي نوعه msg

Users
2019-06-28, 08:45 PM
ممكن تورينىا كود الافكت الى سحبته
وانا اسف انى مش قادر اقدم المساعده كامله لانى شغال طول اليوم وبفتح من موبايل عشان افيد على قد ما ربنا يقدرنى

uncelsam
2019-06-30, 02:45 AM
ربنا يعينك يصاحبي

محمد ياسر
2019-07-28, 04:10 PM
معلش يارايد شوف الموضوع ده

Tefa
2019-07-28, 10:04 PM
Handle.cs
سيرش علي TwilightAction
و بدله ب ده

private void TwilightAction(Player attacker, MsgMagicEffect suse, SpellInformation spell, ushort X, ushort Y)
{
byte dist = (byte)spell.Distance;
var map = attacker.Owner.Map;

var algo = new InLineAlgorithm(attacker.X, X, attacker.Y, Y, dist);

var count = (double)algo.lcoords.Count / 3;
int i = 1;
var myx = attacker.X;
var myy = attacker.Y;
Server.Thread.DelayedTask.StartDelayedTask(() =>
{
var selected = (i * (int)count) - 2;
selected = Math.Min(algo.lcoords.Count - 1, selected);
X = (ushort)algo.lcoords[selected].X;
Y = (ushort)algo.lcoords[selected].Y;


MsgMapItem floorItem = new MsgMapItem(true);
floorItem.MapObjType = MapObjectType.FloorSpell;
floorItem.ItemID = MsgMapItem.Twilight;
floorItem.ItemColor = (Enums.Color)(i + 1);
floorItem.MapID = attacker.MapID;
floorItem.Type = MsgMapItem.Effect;
floorItem.X = X;
floorItem.Y = Y;
floorItem.OnFloor = Time32.Now;
floorItem.Owner = attacker.Owner;
while (map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.MsgMapItem.FloorUID.Next;
map.AddFloorItem(floorItem);

attacker.Owner.SendScreenSpawn(floorItem, true);

if (i != 0)
{
MsgAction data = new Network.GamePackets.MsgAction(true);
data.UID = attacker.UID;
data.X2 = X;
data.Y2 = Y;
data.ID = MsgAction.Mode.RemoveTrap;
data.wParam1 = myx;
data.wParam2 = myy;
attacker.Owner.SendScreen(data, true);

//double percent = 1;
//switch (i)
//{
// case 1:
// percent = 0.92;
// break;
// case 2:
// percent = 1.02;
// break;
// case 3:
// percent = 1.2;
// break;
//}


foreach (Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
{
bool hit = false;
var selected2 = Math.Max(0, i - 1) * (int)count;
selected2 = Math.Min(algo.lcoords.Count - 1, selected2);
if (Kernel.GetDistance(_obj.X, _obj.Y, (ushort)algo.lcoords[selected].X, (ushort)algo.lcoords[selected].Y) <= spell.Range)
hit = true;
//for (int j = selected2; j < selected; j++)
// if (Kernel.GetDistance(_obj.X, _obj.Y, (ushort)algo.lcoords[j].X, (ushort)algo.lcoords[j].Y) <= spell.Range)
// hit = true;
if (hit)
{
if (_obj.MapObjType == MapObjectType.Monster)
{
attacked = _obj as Player;
if (CanAttack(attacker, attacked, spell, attack.InteractType == MsgInteract.Melee))
{
var damage = Game.Attacking.Calculate.Melee(attacker, attacked, ref attack);
ReceiveAttack(attacker, attacked, attack, ref damage, spell);

suse.AddTarget(attacked.UID, damage, attack);
}
}
else if (_obj.MapObjType == MapObjectType.Player)
{
attacked = _obj as Player;
if (attacked.ContainsFlag((ulong)MsgUpdate.Flags.Inte nsify))
{
attacked.RemoveFlag((ulong)MsgUpdate.Flags.Intensi fy);
attacked.IntensifyPercent = 0;
}
if (CanAttack(attacker, attacked, spell, attack.InteractType == MsgInteract.Melee))
{
var damage = Game.Attacking.Calculate.Melee(attacker, attacked, ref attack);
damage = (uint)(damage * spell.IncreaseDMG);
damage = (uint)(damage / spell.DecreaseDMG);
//damage = (uint)((double)(damage * percent));
ReceiveAttack(attacker, attacked, attack, ref damage, spell);

suse.AddTarget(attacked.UID, damage, attack);
}

}
else if (_obj.MapObjType == MapObjectType.SobNpc)
{
var attackedsob = _obj as MsgNpcInfoEX;
if (CanAttack(attacker, attackedsob, spell))
{
var damage = Game.Attacking.Calculate.Melee(attacker, attackedsob, ref attack);

ReceiveAttack(attacker, attackedsob, attack, damage, spell);

suse.AddTarget(attackedsob.UID, damage, attack);
}
}
}
}

if (suse.Targets.Count > 0)
attacker.Owner.SendScreen(suse, true);
suse.Targets.Clear();
}
i++;
}, 0, 2, 250);
}
بعدها روح للاسكله
و بدلها ب دي
#region TwilightDance
case 12070:
{
if (CanUseSpell(spell, attacker.Owner))
{
PrepareSpell(spell, attacker.Owner);
MsgMagicEffect suse = new MsgMagicEffect(true);
suse.Attacker = attacker.UID;
suse.Attacker1 = attacker.UID;
suse.SpellID = spell.ID;
suse.SpellLevel = spell.Level;

TwilightAction(attacker, suse, spell, X, Y);
attacker.Stamina -= 20;
attacker.Owner.SendScreen(suse, true);
attacker.AttackPacket = null;

}
break;
}
#endregion
في انتظار ردك