uncelsam
2019-06-26, 02:40 AM
المشكله ان الاسكله مش مظبوطه في الشكل او بمعني اصح بتيجي في نص الشاشه ده اخرها انا عاوزها تجيب لاخر الشاشه
Users
2019-06-26, 09:52 PM
ولا تزعل نفسك اى سورس اسحب افيكت الاسكله وضيفة عندك انا لو فاتح من الجهاز كان بعتهولك جرب وقولنا
uncelsam
2019-06-28, 03:46 PM
المشكله اتحلت ولا لسه ؟
انا عملت زي ما المحترم قال وسحبت الايفكت بس بردو زي ماهيا
وهيا المفروض تجيب لاخر الشاشه وسورسي نوعه msg
Users
2019-06-28, 08:45 PM
ممكن تورينىا كود الافكت الى سحبته
وانا اسف انى مش قادر اقدم المساعده كامله لانى شغال طول اليوم وبفتح من موبايل عشان افيد على قد ما ربنا يقدرنى
محمد ياسر
2019-07-28, 04:10 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
في انتظار ردك