بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
الحقيقه دى هى اولى مشاركاتى فى المنتدى وعلى قدر ما كنت ارغب فى انها تكون مفيده
على نفس القدر مقدرتش لانى بجد مكنتش مستعد
لكن على العموم انا وزميل فاضل ليا عملنا تعديلات بسيطه على مشروع لعبه اونلاين
اللعبه دى اسمها كونكر
المهم بعد الانتهاء من تعديل الاكواد ظهر عندى مشكله خطيره
والى مزود خطورة المشكله انو مفيش اى رسالة خطأ ولا حتى رسالة تحزير فى الكويد لكن اكيد الكود بتاعى ناقص
خلاصة الموضوع وبدون اطاله
السورس الموجود عندى عباره عن لوحة ادارة متصله بقاعدة بيانات من نوع اس كيو ال وصفحات بى اتش بى
وطبعا كلاينت اللعبه
كل دا كويس لكن
استخدمنا السى شارب فى التكويد للتعديل
وظهر عندى المشكله الى جايه دى
المفروض اثناء التحاور ما بين الشخصيات فى اللعبه ان الكلام الى اى اشخصيه بتكتبو بيتنقل للشخصيه المستهدفه
فى نفس الصيغه الى تم صياغة الجمله بيها عند الشخصيه المصدر
بس الى بيحصل غير كدا فلو كانت صياغة الجمله حروف انجليزيه بتتنقل بنفس الشكل بتاعها بدون خطأ
اما اذا كانت حروف عربيه
بيحصل حاجه غريبه
بتتحول كل الحروف المكونه للجمله الى علامات استفهام
عند الشخصيه الى كتبت الجمله وكمان عند الشخصيه الى هتستقبل الجمله
وعلشان اوضح المشكله اكتر دى صور للعبه اثناء التجريب والمشكله موصوفه زى منتو شايفين
لغة البرمجه # C





دى كانت صور للمشكله
الى جاى ده هو الكود المسئول عن الشات
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Threading;
using System.Text;
using System.IO;
namespace NewestCOServer.PacketHandling
{
public class Chat
{
public static void Handle(Main.GameClient GC, byte[] Data)
{
MemoryStream MS = new MemoryStream(Data);
BinaryReader BR = new BinaryReader(MS);
BR.ReadBytes(8);
ushort ChatType = (ushort)BR.ReadUInt32();
BR.ReadBytes(13);
string From = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadByte()));
string To = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadByte()));
BR.ReadByte();
string Message = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadByte()));
BR.Close();
MS.Close();
#region BadWords
Message = Message.Replace("http:/", "****");
Message = Message.Replace(".net", "****");
Message = Message.Replace(".com", "****");
Message = Message.Replace(".tk", "****");
Message = Message.Replace("www", "****");
Message = Message.Replace("damn", "****");
Message = Message.Replace("***", "****");
Message = Message.Replace("shit", "****");
Message = Message.Replace("stupid", "******");
Message = Message.Replace("wtf", "***");
Message = Message.Replace("idiot", "*****");
Message = Message.Replace("***er", "******");
#endregion
if (ChatType == 2104 && GC.MyChar.MyShop != null)
GC.MyChar.MyShop.Hawk = Message;
try
{
if (Message[0] == '/')
{
string[] Cmd = Message.Split(' ');
if (Cmd[0] == "/players")
{
GC.LocalMessage(2000, "Players Online: " + Game.World.H_Chars.Count);
string eMsg = "";
foreach (Game.Character C in Game.World.H_Chars.Values)
eMsg += C.Name + ", ";
if (eMsg.Length > 1)
eMsg = eMsg.Remove(eMsg.Length - 2, 2);
GC.LocalMessage(2000, eMsg);
}
/*
if (Cmd[0] == "/dc")
{
GC.Disconnect();
return;
}
if (Cmd[0] == "/join")
{
// if (GC.MyChar.PKEvent == true)
{
GC.MyChar.Teleport(1005, 50, 50);
GC.AddSend(Packets.ChatMessage(0, "SYSTEM", GC.MyChar.Name, "Congratulations! He/She " + GC.MyChar.Name + ". Join in PkMap", 2001, 0));
}
}
if (Cmd[0] == "/players")
{
GC.LocalMessage(2000, "Players Online: " + Game.World.H_Chars.Count);
string eMsg = "";
foreach (Game.Character C in Game.World.H_Chars.Values)
eMsg += C.Name + ", ";
if (eMsg.Length > 1)
eMsg = eMsg.Remove(eMsg.Length - 2, 2);
GC.LocalMessage(2000, eMsg);
}
if (Cmd[0] == "/forcerevive")
{
if (!GC.MyChar.Alive)
{
if (DateTime.Now > GC.MyChar.DeathHit.AddSeconds(20))
{
GC.MyChar.Ghost = false;
GC.MyChar.BlueName = false;
GC.MyChar.CurHP = (ushort)GC.MyChar.MaxHP;
GC.MyChar.Alive = true;
GC.MyChar.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.Dead);
GC.MyChar.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.BlueName);
GC.MyChar.Body = GC.MyChar.Body;
GC.MyChar.Hair = GC.MyChar.Hair;
GC.MyChar.Equips.Send(GC, false);
if (GC.MyChar.Loc.Map == 1038 && Features.GuildWars.War)
GC.MyChar.Teleport(6001, 32, 72);
else
{
if (GC.MyChar.PKPoints >= 100)
GC.MyChar.Teleport(6000, 32, 72);
else
{
foreach (ushort[] Point in Database.RevPoints)
if (Point[0] == GC.MyChar.Loc.Map)
{
GC.MyChar.Teleport(Point[1], Point[2], Point[3]);
break;
}
}
}
}
}
}
if (Cmd[0] == "/revivehere" || Cmd[0] == "/rh")
{
if (!GC.MyChar.Alive)
{
if (DateTime.Now > GC.MyChar.DeathHit.AddSeconds(20))
{
if (GC.MyChar.BlessingLasts > 0)
{
GC.MyChar.Ghost = false;
GC.MyChar.BlueName = false;
GC.MyChar.CurHP = (ushort)GC.MyChar.MaxHP;
GC.MyChar.Alive = true;
GC.MyChar.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.Dead);
GC.MyChar.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.BlueName);
GC.MyChar.Body = GC.MyChar.Body;
GC.MyChar.Hair = GC.MyChar.Hair;
GC.MyChar.Equips.Send(GC, false);
if (GC.MyChar.Loc.Map == 1038)
if (Features.GuildWars.War)
{
GC.LocalMessage(2005, "You cant revive here while guild war is on.");
}
else
{
GC.MyChar.Teleport(GC.MyChar.Loc.Map, GC.MyChar.Loc.X, GC.MyChar.Loc.Y);
}
}
}
}
}
*/
if (GC.MyChar.GM == "GM")
{
if (Cmd[0] == "/dc")
{
GC.Disconnect();
return;
}
if(Cmd[0] == "/restart")
{
Program.WaitForRestart();
}
if (Cmd[0] == "/find")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
GC.MyChar.Teleport(C.Loc.Map, C.Loc.X, C.Loc.Y);
}
if (Cmd[0] == "/mapefect")
{
/*
* /effect eidolon
/effect ErLongTengFei
LiuLiuDaShun
zf2-e355
zf2-e355 < -- b;essss
* */
GC.MyChar.MyClient.AddSend(Packets.CoordonateEffect(GC.MyChar.Loc.X, GC.MyChar.Loc.Y, "cantask"));
//GC.MyChar.StatEff.Add(NewestCOServer.Game.StatusEffectEn.MonthlyPKChampion);
// GC.MyChar.MyClient.AddSend(Packets.String(GC.MyChar.EntityID, 10, "scholar"));
//GC.MyChar.MyClient.AddSend(Packets.String(GC.MyChar.EntityID, 10, "end_task"));//flower-rainr
// GC.MyChar.Killmap = 1;//cantask
}
if (Cmd[0] == "/efect")
{
GC.MyChar.MyClient.AddSend(Packets.String(GC.MyChar.EntityID, 10, Cmd[1]));
//GC.MyChar.MyClient.AddSend(Packets.String(GC.MyChar.EntityID, 10, "end_task"));//flower-rainr
// GC.MyChar.Killmap = 1;//cantask
}
if (Cmd[0] == "/rev" || Cmd[0] == "/rh")
{
if (!GC.MyChar.Alive)
{
if (DateTime.Now > GC.MyChar.DeathHit.AddSeconds(20))
{
if (GC.MyChar.BlessingLasts > 0)
{
GC.MyChar.Ghost = false;
GC.MyChar.BlueName = false;
GC.MyChar.CurHP = (ushort)GC.MyChar.MaxHP;
GC.MyChar.Alive = true;
GC.MyChar.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.Dead);
GC.MyChar.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.BlueName);
GC.MyChar.Body = GC.MyChar.Body;
GC.MyChar.Hair = GC.MyChar.Hair;
GC.MyChar.Equips.Send(GC, false);
if (GC.MyChar.Loc.Map == 1038)
if (Features.GuildWars.War)
{
GC.LocalMessage(2005, "You cant revive here while guild war is on.");
}
else
{
GC.MyChar.Teleport(GC.MyChar.Loc.Map, GC.MyChar.Loc.X, GC.MyChar.Loc.Y);
}
}
}
}
}
if (Cmd[0] == "/srtrue")
{
if (GC.AuthInfo.Status == "[PM]")
Game.World.SteedTornament.sr = true;
Game.World.SendMsgToAll("Server", "Steed Race start in 2 min!go TwinCity at 424 361 for join to tornament!", 2011, 0);
new Thread(new ThreadStart(delegate()
{
Console.WriteLine("Steed Race Activated (via Console).");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Steed Race will start in 1 minutes and 30 Seconds! go TwinCity at 424 361 for join to tornament!", 2011, 0);
Console.WriteLine("1 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Steed Race will start in 1 minutes! go TwinCity at 424 361 for join to tornament!", 2011, 0);
Console.WriteLine("1 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Steed Race will start in 30 Seconds! go TwinCity at 424 361 for join to tornament!", 2011, 0);
Console.WriteLine("30 seconds Left");
Thread.Sleep(30000);//30 seconds
Game.World.SendMsgToAll("Server", "Steed Race will start ", 2011, 0);
Console.WriteLine("Steed Race will start ");
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.srjoin == 1)
{
Game.Item I = GC.MyChar.Equips.Get(12);
if (I.ID == 300000)
{
if (Chaar.srjoin == 1)
{
if (!Chaar.StatEff.Contains(NewestCOServer.Game.StatusEffectEn.Ride))
{ Chaar.StatEff.Add(NewestCOServer.Game.StatusEffectEn.Ride); }
Chaar.Teleport(1950, 049, 148);
}
}
else
{ GC.MyChar.srjoin = 0; GC.LocalMessage(2001, "Sorry you dont have steed"); GC.LocalMessage(2001, "Sorry you dont have steed"); GC.LocalMessage(2001, "Sorry you dont have steed"); GC.LocalMessage(2001, "Sorry you dont have steed"); GC.LocalMessage(2001, "Sorry you dont have steed"); }
// else if (Chaar.srjoin == 0)
//{
// Chaar.StatEff.Add(NewestCOServer.Game.StatusEffectEn.Ride);
// Chaar.Teleport(1950, 049, 148);
//}
}
}
Game.World.SteedTornament.sr = false;
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 9 minutes", 2011, 0);
Console.WriteLine("9 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 8 minutes", 2011, 0);
Console.WriteLine("8 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 7 minutes", 2011, 0);
Console.WriteLine("7 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 6 minutes", 2011, 0);
Console.WriteLine("6 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 5 minutes", 2011, 0);
Console.WriteLine("5 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 4 minutes", 2011, 0);
Console.WriteLine("4 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 3 minutes", 2011, 0);
Console.WriteLine("3 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 2 minutes", 2011, 0);
Console.WriteLine("2 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 1 minutes", 2011, 0);
Console.WriteLine("1 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Steed Race will finish in 30 seconds! ", 2011, 0);
Console.WriteLine("Steed Race will finish in 30 seconds!");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Steed Race has finished! ", 2011, 0);
Console.WriteLine("Steed Race whas finished");
// Features.SteedRace.WaiForWin(true, GC);
}
)).Start();
}
if (Cmd[0] == "/1")
{
GC.MyChar.Avatar = ushort.Parse(Cmd[1]);
}
if (Cmd[0] == "/b")
{
GC.MyChar.Body = ushort.Parse(Cmd[1]);
}
if (Cmd[0] == "/f")
{
Struct.Flowers F = GC.MyChar.Flowers;
string ToSend = F.RedRoses.ToString() + " " + F.RedRoses2day.ToString() + " " + F.Lilies.ToString() + " " + F.Lilies2day.ToString() + " ";
ToSend += F.Orchads.ToString() + " " + F.Orchads2day.ToString() + " " + F.Tulips.ToString() + " " + F.Tulips2day.ToString();
// F.Lilies = 1;
// GC.MyChar.Flori = 1;
GC.AddSend(Packets.FlowerPacket(ToSend));
}
if (Cmd[0] == "/closeserver")
{
foreach (Game.Character C in Game.World.H_Chars.Values)
try
{
C.MyClient.LogOff(true);
}
catch { continue; }
Database.SaveKOs();
Features.Guilds.SaveGuilds();
Features.SkillsClass.Save();
Environment.Exit(0);
System.Diagnostics.Process.Start("NewestCOServer.exe");
}
if (Cmd[0] == "/dropevent")
{
try
{
if (Program.DropEventTimer == null)
{
bool start = true;
if (Cmd[1].ToLower() == "dragonball")
{
Program.DropEventType = "dragonball";
Program.SaveOldRate = DropRates.DragonBall;
DropRates.DragonBall = (DropRates.DragonBall * int.Parse(Cmd[3]));
}
else if (Cmd[1].ToLower() == "meteor")
{
Program.DropEventType = "meteor";
Program.SaveOldRate = DropRates.Meteor;
DropRates.Meteor = (DropRates.Meteor * int.Parse(Cmd[3]));
}
else if (Cmd[1].ToLower() == "minicpbag")
{
Program.DropEventType = "minicpbag";
Program.SaveOldRate = DropRates.CPMiniBag;
DropRates.CPMiniBag = (DropRates.CPMiniBag == 0 ? 1 : DropRates.CPMiniBag * int.Parse(Cmd[3]));
}
else if (Cmd[1].ToLower() == "cpbag")
{
Program.DropEventType = "cpbag";
Program.SaveOldRate = DropRates.CPBag;
DropRates.CPBag = (DropRates.CPBag == 0 ? 1 : DropRates.CPBag * int.Parse(Cmd[3]));
}
else
start = false;
if (start)
{
Program.DropEventTimer = new System.Timers.Timer();
Program.DropEventTimer.Interval = (int.Parse(Cmd[2]) * 60000);
Program.DropEventTimer.Elapsed += new System.Timers.ElapsedEventHandler(Program.QuestDropDone);
Program.DropEventTimer.Start();
Game.World.SendMsgToAll("Server", "[Event] Server will drop " + Cmd[1] + "s " + Cmd[3] + "x for " + Cmd[2] + " minutes.", 2011, 0);
}
else
GC.LocalMessage(2001, "Item name is not a dropevent!");
}
else
GC.LocalMessage(2001, "There is a running event, you must wait it end to start a new!");
}
catch { GC.LocalMessage(2001, "Wrongs values!"); GC.LocalMessage(2001, "Format: /questdrop ItemName Minutes Timers"); GC.LocalMessage(2001, "Example: /questdrop dragonball 15 1000 its in up the rates to 1000x in 15 minutos."); }
}
if (Cmd[0] == "/itemtest")
{
Game.Item I = new NewestCOServer.Game.Item();
I.Effect = NewestCOServer.Game.Item.RebornEffect.Shield;
I.ID = 410329;
I.Plus = 12;
I.Soc1 = NewestCOServer.Game.Item.Gem.SuperDragonGem;
I.Soc2 = NewestCOServer.Game.Item.Gem.SuperRainbowGem;
I.Bless = 5;
I.Enchant = 200;
I.UID = (uint)Program.Rnd.Next(10000000);
GC.AddSend(Packets.AddItem(I, 0));
}
if (Cmd[0] == "/drop")
{
uint DropID = 0;
Random Rnd = new Random();
string DropWhat = Cmd[1].ToLower();
byte HowMany = (byte)Math.Min(ushort.Parse(Cmd[2]), (ushort)255);
switch (DropWhat)
{
case "dragonball": DropID = 1088000; break;
case "meteor": DropID = 1088001; break;
case "pointcard": DropID = 780000; break;
case "moonbox": DropID = 721080; break;
case "bag": DropID = 729910; break;
case "ball": DropID = 723834; break;
}
Game.DroppedItem DI = new Game.DroppedItem();
DI.DropTime = DateTime.Now;
DI.UID = (uint)Rnd.Next(10000000);
DI.Loc = new Game.Location();
DI.Loc.Map = GC.MyChar.Loc.Map;
DI.Info = new Game.Item();
DI.Info.ID = DropID;
DI.Info.UID = (uint)Rnd.Next(10000000);
for (int x = 0; x < HowMany; x++)
{
DI.Loc.X = (ushort)(GC.MyChar.Loc.X + Rnd.Next(15) - Rnd.Next(15));
DI.Loc.Y = (ushort)(GC.MyChar.Loc.Y + Rnd.Next(15) - Rnd.Next(15));
if (!DI.FindPlace((Hashtable)Game.World.H_Items[GC.MyChar.Loc.Map])) continue;
DI.Drop();
}
}
#region remove top
if (Cmd[0] == "/removetrojan")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopTrojan -= 1;
C.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.TopTrojan);
}
if (Cmd[0] == "/removeweek")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.WeeklyPKChampion += 1;
C.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.WeeklyPKChampion);
}
if (Cmd[0] == "/removewater")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopWaterTaoist -= 1;
C.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.TopWaterTaoist);
}
if (Cmd[0] == "/removewarrior")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopWarrior -= 1;
C.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.TopWarrior);
}
if (Cmd[0] == "/removeninja")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopNinja -= 1;
C.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.TopNinja);
}
if (Cmd[0] == "/removearcher")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopArcher -= 1;
C.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.TopArcher);
}
if (Cmd[0] == "/removegl")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopGuildLeader -= 1;
C.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.TopGuildLeader);
}
if (Cmd[0] == "/removedl")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopDeputyLeader -= 1;
C.StatEff.Remove(NewestCOServer.Game.StatusEffectEn.TopDeputyLeader);
}
#endregion
#region Add Top Halos
if (Cmd[0] == "/toptrojan")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopTrojan += 1;
C.StatEff.Add(NewestCOServer.Game.StatusEffectEn.TopTrojan);
}
if (Cmd[0] == "/topgl")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopGuildLeader += 1;
C.StatEff.Add(NewestCOServer.Game.StatusEffectEn.TopGuildLeader);
}
if (Cmd[0] == "/topdl")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopDeputyLeader += 1;
C.StatEff.Add(NewestCOServer.Game.StatusEffectEn.TopDeputyLeader);
}
if (Cmd[0] == "/toparcher")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopArcher += 1;
C.StatEff.Add(NewestCOServer.Game.StatusEffectEn.TopArcher);
}
if (Cmd[0] == "/topwater")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopWaterTaoist += 1;
C.StatEff.Add(NewestCOServer.Game.StatusEffectEn.TopWaterTaoist);
}
if (Cmd[0] == "/topwarior")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopWarrior += 1;
C.StatEff.Add(NewestCOServer.Game.StatusEffectEn.TopWarrior);
}
if (Cmd[0] == "/topninja")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.TopNinja += 1;
C.StatEff.Add(NewestCOServer.Game.StatusEffectEn.TopNinja);
}
if (Cmd[0] == "/topweek")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.WeeklyPKChampion += 1;
C.StatEff.Add(NewestCOServer.Game.StatusEffectEn.WeeklyPKChampion);
}
#endregion
if (Cmd[0] == "/ctele")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
GC.MyChar.Teleport(C.Loc.Map, C.Loc.X, C.Loc.Y);
}
if (Cmd[0] == "/seff")
GC.AddSend(Packets.Status(GC.MyChar.EntityID, Game.Status.Effect, ulong.Parse(Cmd[1])));
if (Cmd[0] == "/vipto")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.VipLevel = byte.Parse(Cmd[2]);
GC.AddSend(Packets.ChatMessage(0, "SYSTEM", GC.MyChar.Name, "Congratulations! " + C.Name + "is vip level " + C.VipLevel + ". Thank you for donating.", 2001, 0));
}
if (Cmd[0] == "/spawn")
{
if (Cmd.Length == 3)
{
GC.SpawnOnHold = !GC.SpawnOnHold;
if (GC.SpawnOnHold)
{
GC.SpawnXStart = GC.MyChar.Loc.X;
GC.SpawnYStart = GC.MyChar.Loc.Y;
GC.LocalMessage(2000, "Starting to create spawn; Spawn starts: " + GC.SpawnXStart + ", " + GC.SpawnYStart);
}
else
{
GC.LocalMessage(2000, "Ending the spawn.");
StreamWriter SW = new StreamWriter(@"OldCODB\MobSpawns.txt", true);
SW.WriteLine(Cmd[1] + " " + Cmd[2] + " " + GC.MyChar.Loc.Map + " " + GC.SpawnXStart + " " + GC.SpawnYStart + " " + GC.MyChar.Loc.X + " " + GC.MyChar.Loc.Y);
SW.Flush();
SW.Close();
}
}
}
if (Cmd[0] == "/try")
GC.AddSend(Packets.GeneralData(GC.MyChar.EntityID, 0, 0, 0, byte.Parse(Cmd[1])));
/* if (Cmd[0] == "/shopflag")
{
Game.NPC N = new NewestCOServer.Game.NPC(1234.ToString() + ' ' + 1080 + ' ' + 16 + ' ' + 6 + ' ' + 0 + ' ' + GC.MyChar.Loc.Map + ' ' + GC.MyChar.Loc.X + ' ' + GC.MyChar.Loc.Y);
Game.World.Spawn(N);
}*/
if (Cmd[0] == "/guard")
{
StreamWriter SW = new StreamWriter(@"OldCODB\MobSpawns.txt", true);
SW.WriteLine(97 + " " + 1 + " " + GC.MyChar.Loc.Map + " " + GC.MyChar.Loc.X + " " + GC.MyChar.Loc.Y + " " + GC.MyChar.Loc.X + " " + GC.MyChar.Loc.Y);
SW.Flush();
SW.Close();
}
/* if (Cmd[0] == "/addnpc")
{//uid type flags avatar
//StreamWriter SW = new StreamWriter(@"OldCODB\NPCs.txt", true);
//SW.WriteLine(Cmd[1] + ' ' + Cmd[2] + ' ' + Cmd[3] + ' ' + GC.MyChar.Direction + ' ' + Cmd[4] + ' ' + GC.MyChar.Loc.Map + ' ' + GC.MyChar.Loc.X + ' ' + GC.MyChar.Loc.Y);
//SW.Flush();
//SW.Close();
Game.NPC N = new NewestCOServer.Game.NPC(Cmd[1] + ' ' + Cmd[2] + ' ' + Cmd[3] + ' ' + GC.MyChar.Direction + ' ' + Cmd[4] + ' ' + GC.MyChar.Loc.Map + ' ' + GC.MyChar.Loc.X + ' ' + GC.MyChar.Loc.Y);
//Game.World.H_NPCs.Add(N.EntityID, N);
Game.World.Spawn(N);
}*/
if (Cmd[0] == "/c")
{
Game.World.SendMsgToAll(GC.MyChar.Name, GC.MyChar.Name + ": " + Message.Remove(0, 3), 2011, 0);
}
if (Cmd[0] == "/try")
{
GC.AddSend(Packets.GeneralData(GC.MyChar.EntityID, 1, GC.MyChar.Loc.X, GC.MyChar.Loc.Y, byte.Parse(Cmd[1])));
}
if (Cmd[0] == "/appr")
GC.AddSend(Packets.MentorApprenticePacket(GC.MyChar.EntityID, (uint)Program.Rnd.Next(1000001, 19999999), Cmd[1], byte.Parse(Cmd[2]), 1));
if (Cmd[0] == "/protect")
GC.MyChar.Protection = !GC.MyChar.Protection;
if (Cmd[0] == "/effect")
GC.AddSend(Packets.String(GC.MyChar.EntityID, 10, Cmd[1]));
if (Cmd[0] == "/exp")
GC.MyChar.Experience = ulong.Parse(Cmd[1]);
if (Cmd[0] == "/pkp")
GC.MyChar.PKPoints = ushort.Parse(Cmd[1]);
if (Cmd[0] == "/atk")
GC.AddSend(Packets.AttackPacket(GC.MyChar.EntityID, GC.MyChar.EntityID, GC.MyChar.Loc.X, GC.MyChar.Loc.Y, 9999, byte.Parse(Cmd[1])));
if (Cmd[0] == "/arrest")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.Teleport(6001, 35, 90);
}
if (Cmd[0] == "/mana")
GC.MyChar.CurMP = (ushort)GC.MyChar.MaxMP;
if (Cmd[0] == "/newguild")
{
if (GC.MyChar.MyGuild == null)
{
try
{
ushort NewGuildID = (ushort)Program.Rnd.Next(ushort.MaxValue);
while (Features.Guilds.AllTheGuilds.Contains(NewGuildID))
NewGuildID = (ushort)Program.Rnd.Next(ushort.MaxValue);
Features.Guilds.CreateNewGuild(Cmd[1], NewGuildID, GC.MyChar);
Game.World.Spawn(GC.MyChar, false);
GC.AddSend(Packets.GuildInfo(GC.MyChar.MyGuild, GC.MyChar));
GC.AddSend(Packets.String(GC.MyChar.MyGuild.GuildID, (byte)Game.StringType.GuildName, GC.MyChar.MyGuild.GuildName));
}
catch (Exception Exc) { Program.WriteLine(Exc); }
}
}
if (Cmd[0] == "/tryatk")
GC.AddSend(Packets.AttackPacket(GC.MyChar.EntityID, GC.MyChar.EntityID, GC.MyChar.Loc.X, GC.MyChar.Loc.Y, 300, byte.Parse(Cmd[1])));
if (Cmd[0] == "/skill")
if (Cmd[0] == "/robot1")
{
string Account = "";
string Name = Cmd[1];
Game.Robot R = Database.LoadAsRobot(Name, ref Account);
if (R != null)
R.Init(Account);
}
if (Cmd[0] == "/reborn")
{
GC.MyChar.Reborns = byte.Parse(Cmd[1]);
}
}
if (GC.MyChar.PM == "PM" || GC.MyChar.GM == "GM")
{
if (GC.MyChar.PM == "PM" || GC.MyChar.GM== "GM")// || GC.AuthInfo.Status == "[PM]")
{
/* if (Cmd[0] == "/dison")
{
foreach (Game.Character C in Game.World.H_Chars.Values)
{
if (GC.MyChar.DisCityON)
Game.World.SendMsgToAll("SYSTEM", "The Dis City quest has been started! Run to ApeMountain and find SolarSaint(530,482)!", 2011, 0);
}
}
if (Cmd[0] == "/disoff")
{
foreach (Game.Character C in Game.World.H_Chars.Values)
{
if (!GC.MyChar.DisCityON)
Game.World.SendMsgToAll("SYSTEM", "The entrance of Dis City quest now is blocked! Who don't get in try your luck next time!", 2011, 0);
}
}*/
if (Cmd[0] == "/day")
{
Game.World.ScreenColor = 0;
foreach (Game.Character C in Game.World.H_Chars.Values)
try
{
C.MyClient.AddSend(Packets.GeneralData(C.EntityID, Game.World.ScreenColor, 0, 0, 104));
GC.LocalMessage(2011, "Hayy Good Day Guy's.What's UP?");
}
catch { }
}
if (Cmd[0] == "/night")
{
Game.World.ScreenColor = 5855577;
foreach (Game.Character C in Game.World.H_Chars.Values)
try
{
C.MyClient.AddSend(Packets.GeneralData(C.EntityID, Game.World.ScreenColor, 0, 0, 104));
GC.LocalMessage(2011, "Good Night Server Players.");
}
catch { }
}
if (Cmd[0] == "/night1")
{
Game.World.ScreenColor = 5355577;
foreach (Game.Character C in Game.World.H_Chars.Values)
try
{
C.MyClient.AddSend(Packets.GeneralData(C.EntityID, Game.World.ScreenColor, 0, 0, 104));
}
catch { }
}
if (Cmd[0] == "/night2")
{
Game.World.ScreenColor = 6908265;
foreach (Game.Character C in Game.World.H_Chars.Values)
try
{
C.MyClient.AddSend(Packets.GeneralData(C.EntityID, Game.World.ScreenColor, 0, 0, 104));
}
catch { }
}
}
if (GC.MyChar.PM == "PM" || GC.MyChar.GM == "GM")
{
if (Cmd[0] == "/restart")
{
Program.WaitForRestart();
}
if (Cmd[0] == "/pkt")
{
if (NewestCOServer.Features.PKTournament.Stage == NewestCOServer.Features.PKTournamentStage.None)
{
NewestCOServer.Features.PKTournament.StartTournament();
Console.WriteLine("PK Tournament started!");
}
else
{
Console.WriteLine("PK Tournament is already in progress!");
}
}
if (Cmd[0] == "/lucky")
GC.LocalMessage(2000, "Lucky time: " + GC.MyChar.LuckyTime);
if (Cmd[0] == "/robot")
{
string Account = "";
string Name = Cmd[1];
if (Game.World.CharacterFromName(Name) == null)
{
Game.Robot R = Database.LoadAsRobot(Name, ref Account);
if (R != null)
R.Init(Account);
}
}
}
if (Cmd[0] == "/dmtrue")
{
Game.World.dm = true;
Game.World.SendMsgToAll("Server", "DeathMatch start in 2 min!go TwinCity at 424 361 for join to tornament!", 2011, 0);
new Thread(new ThreadStart(delegate()
{
Console.WriteLine("DeathMatch Activated (via Console).");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "DeathMatch will start in 1 minutes and 30 Seconds! go TwinCity at 424 361 for join to tornament!", 2011, 0);
Console.WriteLine("1 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "DeathMatch will start in 1 minutes! go TwinCity at 424 361 for join to tornament!", 2011, 0);
Console.WriteLine("1 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "DeathMatch will start in 30 Seconds! go TwinCity at 424 361 for join to tornament!", 2011, 0);
Console.WriteLine("30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "DeathMatch will start ", 2011, 0);
Console.WriteLine("DeathMatch will start ");
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.dmjoin == 1)
{
if (Chaar.dmblack == 1)
{
Game.Item I = GC.MyChar.Equips.Get(9);
if (I.ID >= 181305 && I.ID <= 191905)
{ return; }
Chaar.AddItemPos(181525);
Chaar.Teleport(1090, 121, 70);
}
else if (Chaar.dmblue == 1)
{
Game.Item I = GC.MyChar.Equips.Get(9);
if (I.ID >= 181305 && I.ID <= 191905)
{ return; }
Chaar.AddItemPos(181825);
Chaar.Teleport(1090, 144, 152);
}
else if (Chaar.dmred == 1)
{
Game.Item I = GC.MyChar.Equips.Get(9);
if (I.ID >= 181305 && I.ID <= 191905)
{ return; }
Chaar.AddItemPos(181625);
Chaar.Teleport(1090, 43, 67);
}
}
}
Game.World.dm = false;
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 9 minutes", 2011, 0);
Console.WriteLine("9 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 8 minutes", 2011, 0);
Console.WriteLine("8 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 7 minutes", 2011, 0);
Console.WriteLine("7 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 6 minutes", 2011, 0);
Console.WriteLine("6 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 5 minutes", 2011, 0);
Console.WriteLine("5 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 4 minutes", 2011, 0);
Console.WriteLine("4 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 3 minutes", 2011, 0);
Console.WriteLine("3 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 2 minutes", 2011, 0);
Console.WriteLine("2 Minutes Left");
Thread.Sleep(60000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 1 minutes", 2011, 0);
Console.WriteLine("1 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish in 30 seconds! ", 2011, 0);
Console.WriteLine("DeathMatch will finish in 30 seconds!");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "DeathMatch will finish! ", 2011, 0);
Console.WriteLine("DeathMatch will finish");
#region wins
if (Game.World.Dmscore.blackscore > Game.World.Dmscore.bluescore)
{
if (Game.World.Dmscore.blackscore > Game.World.Dmscore.redscore)
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
Chaar.dmred = 0;
if (Chaar.dmblack == 1)
{
Chaar.dmblack = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! black team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
else
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblack = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
if (Chaar.dmred == 1)
{
Chaar.dmred = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! red team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
}
else if (Game.World.Dmscore.blackscore < Game.World.Dmscore.bluescore)
{
if (Game.World.Dmscore.bluescore > Game.World.Dmscore.redscore)
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblack = 0;
Chaar.dmjoin = 0;
Chaar.dmred = 0;
if (Chaar.dmblue == 1)
{
Chaar.dmblue = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! blue team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
} return;
}
else
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblack = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
if (Chaar.dmred == 1)
{
Chaar.dmred = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! red team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
}
else if (Game.World.Dmscore.blackscore > Game.World.Dmscore.redscore)
{
if (Game.World.Dmscore.blackscore > Game.World.Dmscore.bluescore)
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
Chaar.dmred = 0;
if (Chaar.dmblack == 1)
{
Chaar.dmblack = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! black team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
else
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblack = 0;
Chaar.dmjoin = 0;
Chaar.dmred = 0;
if (Chaar.dmblue == 1)
{
Chaar.dmblue = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! blue team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
}
else if (Game.World.Dmscore.blackscore < Game.World.Dmscore.redscore)
{
if (Game.World.Dmscore.redscore > Game.World.Dmscore.blackscore)
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblack = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
if (Chaar.dmred == 1)
{
Chaar.dmred = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! red team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
else
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
Chaar.dmred = 0;
if (Chaar.dmblack == 1)
{
Chaar.dmblack = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! black team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
}
else if (Game.World.Dmscore.bluescore > Game.World.Dmscore.redscore)
{
if (Game.World.Dmscore.bluescore > Game.World.Dmscore.blackscore)
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblack = 0;
Chaar.dmjoin = 0;
Chaar.dmred = 0;
if (Chaar.dmblue == 1)
{
Chaar.dmblue = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! blue team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
else
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
Chaar.dmred = 0;
if (Chaar.dmblack == 1)
{
Chaar.dmblack = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! black team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
}
else if (Game.World.Dmscore.bluescore < Game.World.Dmscore.redscore)
{
if (Game.World.Dmscore.redscore > Game.World.Dmscore.blackscore)
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblack = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
if (Chaar.dmred == 1)
{
Chaar.dmred = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! red team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
else
{
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
if (Chaar.Loc.Map == 1090)
{
Chaar.Teleport(1002, 390, 323);
Game.World.DeathMatch.teamblack = 0;
Game.World.DeathMatch.teamblue = 0;
Game.World.DeathMatch.teamred = 0;
Game.World.Dmscore.blackscore = 0;
Game.World.Dmscore.bluescore = 0;
Game.World.Dmscore.redscore = 0;
Chaar.dmblue = 0;
Chaar.dmjoin = 0;
Chaar.dmred = 0;
if (Chaar.dmblack == 1)
{
Chaar.dmblack = 0;
Chaar.CPs += 10000;
Game.World.SendMsgToAll("Server", "Congration! black team win DeathMatch ,all members win 10.000CPs", 2011, 0);
}
}
}
return;
}
}
#endregion
}
)).Start();
}
if (Cmd[0] == "/discityoffgm") { Game.World.DisCity.dis = false; }
if (Cmd[0] == "/discityon")
{
Game.World.SendMsgToAll("Server", "Dis City will start in 5 minutes! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
new Thread(new ThreadStart(delegate()
{
Console.WriteLine("Dis City Activated (via Console).");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 4 minutes and 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("4 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 4 minutes! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("4 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 3 minutes and 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("3 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 3 minutes! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("3 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 2 minutes and 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("2 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 2 minutes! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("2 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 1 minut and 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("1 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 1 minut! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("1 Minute Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will start in 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("30 Seconds Left");
Thread.Sleep(30000);
//Game.World.SendMsgToAll("Server", "Server Maintenance for 30 minutes! Please Log off to prevent data loss!", 2011, 0);
Thread.Sleep(5000);
Console.WriteLine("Dis City will start! Hurry and find Solar Saint and claim Exp worth half an ExpBall!");
Game.World.DisCity.dis = true;
Game.World.DisCity.DisMax1 = 0;
Game.World.DisCity.DisMax2 = 0;
Console.WriteLine("Dis CityOff Activated (via Console).");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc in 4 minutes and 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("4 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc start in 4 minutes! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("4 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc in 3 minutes and 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("3 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc in 3 minutes! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("3 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc in 2 minutes and 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("2 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc in 2 minutes! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("2 Minutes Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc in 1 minut and 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("1 Minutes 30 seconds Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc in 1 minut! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("1 Minute Left");
Thread.Sleep(30000);
Game.World.SendMsgToAll("Server", "Dis City will off Npc in 30 Seconds! Hurry and find Solar Saint and claim Exp worth half an ExpBall!", 2011, 0);
Console.WriteLine("30 Seconds Left");
Thread.Sleep(30000);
//Game.World.SendMsgToAll("Server", "Server Maintenance for 30 minutes! Please Log off to prevent data loss!", 2011, 0);
Thread.Sleep(5000);
Console.WriteLine("Dis City will join is OFF! Hurry and dont find Solar Saint and claim Exp worth half an ExpBall!");
Game.World.DisCity.dis = false;
}
)).Start();
}
if (Cmd[0] == "/gwon" && !Features.GuildWars.War)
{
Features.GuildWars.StartWar();
Game.World.Gw = true;
}
if (Cmd[0] == "/gwoff" && Features.GuildWars.War)
{
Game.World.SendMsgToAll("Server", "Guild War finish in 60 Minutes! Falmes stones quest has Started", 2011, 0);
foreach (DictionaryEntry DE in Game.World.H_Chars)
{
Game.Character Chaar = (Game.Character)DE.Value;
{ Chaar.flames = 0; }
}
new Thread(new ThreadStart(delegate()
{
Console.WriteLine("Guild War finished Activated (via Console).");
Thread.Sleep(15 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 45 Minutes! Same and Falmes stones quest", 2011, 0);
Console.WriteLine("GuildWar finish in 45 Minutes! Same and Falmes stones quest");
Thread.Sleep(5 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 40 Minutes! Same and Falmes stones quest", 2011, 0);
Console.WriteLine("GuildWar finish in 40 Minutes! Same and Falmes stones quest");
Thread.Sleep(5 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 35 Minutes! Same and Falmes stones quest", 2011, 0);
Console.WriteLine("GuildWar finish in 35 Minutes! Same and Falmes stones quest");
Thread.Sleep(5 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 30 Minutes! Flame 10 has started find at (62,59)", 2011, 0);
Console.WriteLine("GuildWar finish in 30 Minutes! Same and Falmes stones quest");
Game.World.flame10 = true;
Thread.Sleep(5 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 25 Minutes! Find Flame 10 at (62,59), for finish quest", 2011, 0);
Console.WriteLine("GuildWar finish in 25 Minutes! Same and Falmes stones quest");
Thread.Sleep(5 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 20 Minutes! Find Flame 10 at (62,59), for finish quest", 2011, 0);
Console.WriteLine("GuildWar finish in 20 Minutes! Same and Falmes stones quest");
Thread.Sleep(5 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 15 Minutes! Find Flame 10 at (62,59), for finish quest", 2011, 0);
Console.WriteLine("GuildWar finish in 15 Minutes! Same and Falmes stones quest");
Thread.Sleep(5 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 10 Minutes! Find Flame 10 at (62,59), for finish quest", 2011, 0);
Console.WriteLine("GuildWar finish in 10 Minutes! Same and Falmes stones quest");
Thread.Sleep(5 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 5 Minutes! Find Flame 10 at (62,59), for finish quest", 2011, 0);
Console.WriteLine("GuildWar finish in 5 Minutes! Same and Falmes stones quest");
Thread.Sleep(3 * 60000);
Game.World.SendMsgToAll("Server", "GuildWar finish in 2 min! Find Flame 10 at (62,59), for finish quest", 2011, 0);
Console.WriteLine("GuildWar finish in 45 Minutes! Same and Falmes stones quest");
Game.World.flamestonequest = false;
Game.World.flame10 = false;
Features.GuildWars.FinishWar();
// Game.World.SendMsgToAll("SYSTEM", "Guild War has Finished!", 2011, 0);
Game.World.Gw = false;
Database.TopGuildReset();
}
)).Start();
}
if (Cmd[0] == "/gems")
{
if (GC.MyChar.Inventory.Count <= 32)
{
GC.MyChar.AddItem(700001);
GC.MyChar.AddItem(700011);
GC.MyChar.AddItem(700021);
GC.MyChar.AddItem(700031);
GC.MyChar.AddItem(700041);
GC.MyChar.AddItem(700051);
GC.MyChar.AddItem(700061);
GC.MyChar.AddItem(700071);
GC.MyChar.AddItem(700101);
GC.MyChar.AddItem(700121);
}
}
if (Cmd[0] == "/eqlow")
{
for (byte i = 1; i < 9; i++)
if (i != 7)
{
Game.Item I = GC.MyChar.Equips.Get(i);
if (I.ID != 0)
{
Game.ItemIDManipulation IDM = new NewestCOServer.Game.ItemIDManipulation(I.ID);
IDM.LowestLevel(i);
I.ID = IDM.ToID();
GC.AddSend(Packets.AddItem(I, i));
}
}
}
if (Cmd[0] == "/recall")
{
if (Cmd[1] != "all")
{
if (GC.AuthInfo.Status == "[PM]")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null && C != GC.MyChar)
C.Teleport(GC.MyChar.Loc.Map, GC.MyChar.Loc.X, GC.MyChar.Loc.Y);
}
}
else
{
foreach (Game.Character C in Game.World.H_Chars.Values)
C.Teleport(GC.MyChar.Loc.Map, GC.MyChar.Loc.X, GC.MyChar.Loc.Y);
}
}
if (Cmd[0] == "/steed")
{
Game.Item I = new NewestCOServer.Game.Item();
I.ID = 300000;
I.Plus = byte.Parse(Cmd[1]);
I.MaxDur = I.DBInfo.Durability;
I.CurDur = I.MaxDur;
I.Effect = NewestCOServer.Game.Item.RebornEffect.Horsie;
I.TalismanProgress = BitConverter.ToUInt32(new byte[4] { byte.Parse(Cmd[4]), byte.Parse(Cmd[3]), byte.Parse(Cmd[2]), 0 }, 0);
I.UID = (uint)Program.Rnd.Next(10000000);
GC.MyChar.AddFullItem(I.ID, I.Bless, I.Plus, I.Enchant, I.Soc1, I.Soc2, I.Color, I.Progress, I.TalismanProgress, I.Effect, I.FreeItem, I.CurDur, I.MaxDur,I.Suspicious,I.Locked);
// GC.MyChar.AddItem(I.ID);
}
if (Cmd[0] == "/quiz")
if (!Features.QuizShow.QuizON)
Features.QuizShow.Start();
if (Cmd[0] == "/mb")
GC.MyChar.AddItem(721080);
if (Cmd[0] == "/status")
GC.AddSend(Packets.Status(GC.MyChar.EntityID, (NewestCOServer.Game.Status)byte.Parse(Cmd[1]), ulong.Parse(Cmd[2])));
if (Cmd[0] == "/xp")
{
GC.MyChar.StatEff.Add(NewestCOServer.Game.StatusEffectEn.XPStart);
GC.MyChar.Buffs.Add(new Game.Buff() { StEff = NewestCOServer.Game.StatusEffectEn.XPStart, Lasts = 20, Started = DateTime.Now, Eff = NewestCOServer.Features.SkillsClass.ExtraEffect.None });
}
if (Cmd[0] == "/mana")
GC.MyChar.CurMP = (ushort)GC.MyChar.MaxMP;
if (Cmd[0] == "/newguild")
{
if (GC.MyChar.MyGuild == null)
{
try
{
ushort NewGuildID = (ushort)Program.Rnd.Next(ushort.MaxValue);
while (Features.Guilds.AllTheGuilds.Contains(NewGuildID))
NewGuildID = (ushort)Program.Rnd.Next(ushort.MaxValue);
Features.Guilds.CreateNewGuild(Cmd[1], NewGuildID, GC.MyChar);
Game.World.Spawn(GC.MyChar, false);
GC.AddSend(Packets.GuildInfo(GC.MyChar.MyGuild, GC.MyChar));
GC.AddSend(Packets.String(GC.MyChar.MyGuild.GuildID, (byte)Game.StringType.GuildName, GC.MyChar.MyGuild.GuildName));
}
catch (Exception Exc) { Program.WriteLine(Exc); }
}
}
if (Cmd[0] == "/skill")
GC.MyChar.RWSkill(new Game.Skill() { ID = ushort.Parse(Cmd[1]), Lvl = byte.Parse(Cmd[2]), Exp = 0 });
if (Cmd[0] == "/prof")
GC.MyChar.RWProf(new Game.Prof() { ID = ushort.Parse(Cmd[1]), Lvl = byte.Parse(Cmd[2]), Exp = 0 });
if (Cmd[0] == "/blue")
GC.MyChar.BlueName = !GC.MyChar.BlueName;
if (Cmd[0] == "/level")
{
GC.MyChar.Experience = 0;
GC.MyChar.Level = byte.Parse(Cmd[1]);
}
if (Cmd[0] == "/Banned")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.banned = 1;
C.BanBy = GC.MyChar.Name;
Game.World.SendMsgToAll("Server", " " + C.Name + " was Banned by The [PM]/[GM] " + GC.MyChar.Name + "!", 2011, 0);
C.MyClient.Disconnect();
}
/* if (Cmd[0] == "/UnBanned")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
// if (C != null)
C.banned = 0;
C.BanBy = "";
Game.World.SendMsgToAll("Server", " " + C.Name + " was UnBanned by The [PM]/[GM] " + GC.MyChar.Name + "!", 2011, 0);
}*/
if (Cmd[0] == "/kick")
{
Game.Character C = Game.World.CharacterFromName(Cmd[1]);
if (C != null)
C.MyClient.Disconnect();
string coment = (Cmd[2]);
Game.World.SendMsgToAll("Server", "The [PM]/[GM]" + GC.MyChar.Name + " kick" + C.Name + " whit the message " + coment + "", 2011, 0);
}
if (Cmd[0] == "/scroll")
{
if (Cmd[1] == "tc")
{
GC.MyChar.Teleport(1002, 431, 379);
}
if (Cmd[1] == "tg")
{
GC.MyChar.Teleport(1039, 200, 200);
}
if (Cmd[1] == "ja")
{
GC.MyChar.Teleport(6000, 30, 75);
}
if (Cmd[1] == "am")
{
GC.MyChar.Teleport(1020, 567, 576);
}
if (Cmd[1] == "dc")
{
GC.MyChar.Teleport(1000, 500, 650);
}
if (Cmd[1] == "mc")
{
GC.MyChar.Teleport(1001, 316, 642);
}
if (Cmd[1] == "bi")
{
GC.MyChar.Teleport(1015, 723, 573);
}
if (Cmd[1] == "pc")
{
GC.MyChar.Teleport(1011, 190, 271);
}
if (Cmd[1] == "ma")
{
GC.MyChar.Teleport(1036, 200, 200);
}
if (Cmd[1] == "pka")
{
GC.MyChar.Teleport(1005, 52, 69);
}
if (Cmd[1] == "lotto")
{
GC.MyChar.Teleport(700, 52, 69);
}
if (Cmd[1] == "srs")
{
GC.MyChar.Teleport(1950, 049, 148);
}
if (Cmd[1] == "sre")
{
GC.MyChar.Teleport(1950, 495, 361);
}
}
if (Cmd[0] == "/mob")
GC.AddSend(Packets.SpawnEntity(ushort.Parse(Cmd[1]), "***Face" + Cmd[1], GC.MyChar.Loc));
if (Cmd[0] == "/vp")
GC.LocalMessage(2000, "You have " + GC.MyChar.VP + " virtue points.");
if (Cmd[0] == "/map")
GC.LocalMessage(2000, "The ID of the map you are on is " + GC.MyChar.Loc.Map);
if (Cmd[0] == "/job")
GC.MyChar.Job = byte.Parse(Cmd[1]);
if (Cmd[0] == "/silvers")
GC.MyChar.Silvers = uint.Parse(Cmd[1]);
if (Cmd[0] == "/reallot")
{
GC.MyChar.StatPoints += GC.MyChar.Spi;
GC.MyChar.StatPoints += GC.MyChar.Str;
GC.MyChar.StatPoints += GC.MyChar.Vit;
GC.MyChar.StatPoints += GC.MyChar.Agi;
GC.MyChar.Agi = GC.MyChar.Spi = GC.MyChar.Str = GC.MyChar.Vit = 0;
}
if (Cmd[0] == "/str")
GC.MyChar.Str += ushort.Parse(Cmd[1]);
if (Cmd[0] == "/agi")
GC.MyChar.Agi += ushort.Parse(Cmd[1]);
if (Cmd[0] == "/vit")
GC.MyChar.Vit += ushort.Parse(Cmd[1]);
if (Cmd[0] == "/spi")
GC.MyChar.Spi += ushort.Parse(Cmd[1]);
if (Cmd[0] == "/cps")
GC.MyChar.CPs = uint.Parse(Cmd[1]);
if (Cmd[0] == "/mm")
GC.MyChar.Teleport(ushort.Parse(Cmd[1]), ushort.Parse(Cmd[2]), ushort.Parse(Cmd[3]));
if (Cmd[0] == "/item")
{
uint ID = 0;
foreach (DatabaseItem DI in Database.DatabaseItems.Values)
if (DI.Name == Cmd[1])
{
ID = DI.ID;
Game.ItemIDManipulation e = new Game.ItemIDManipulation(ID);
Game.Item.ItemQuality Quality = e.Quality;
if (Cmd[2].ToLower() == "refined") Quality = Game.Item.ItemQuality.Refined;
else if (Cmd[2].ToLower() == "unique") Quality = Game.Item.ItemQuality.Unique;
else if (Cmd[2].ToLower() == "elite") Quality = Game.Item.ItemQuality.Elite;
else if (Cmd[2].ToLower() == "super") Quality = Game.Item.ItemQuality.Super;
else if (Cmd[2].ToLower() == "simple") Quality = Game.Item.ItemQuality.Simple;
else if (Cmd[2].ToLower() == "fixed") Quality = Game.Item.ItemQuality.Fixed;
else if (Cmd[2].ToLower() == "poor") Quality = Game.Item.ItemQuality.Poor;
else if (Cmd[2].ToLower() == "normal") Quality = Game.Item.ItemQuality.Normal;
if (e.Quality == Quality)
break;
}
if (ID != 0 && GC.MyChar.Inventory.Count < 40)
{
Game.ItemIDManipulation e = new Game.ItemIDManipulation(ID);
Game.Item.ItemQuality Quality = e.Quality;
bool change = true;
if (Cmd[2].ToLower() == "refined") Quality = Game.Item.ItemQuality.Refined;
else if (Cmd[2].ToLower() == "unique") Quality = Game.Item.ItemQuality.Unique;
else if (Cmd[2].ToLower() == "elite") Quality = Game.Item.ItemQuality.Elite;
else if (Cmd[2].ToLower() == "super") Quality = Game.Item.ItemQuality.Super;
else if (Cmd[2].ToLower() == "simple") Quality = Game.Item.ItemQuality.Simple;
else if (Cmd[2].ToLower() == "fixed") Quality = Game.Item.ItemQuality.Fixed;
else if (Cmd[2].ToLower() == "poor") Quality = Game.Item.ItemQuality.Poor;
else if (Cmd[2].ToLower() == "normal") Quality = Game.Item.ItemQuality.Normal;
else change = false;
if (change)
e.QualityChange(Quality);
ID = e.ToID();
if (!Database.DatabaseItems.ContainsKey(ID))
{
return;
}
Game.Item I = new NewestCOServer.Game.Item();
if (e.Part(0, 2) == 11 || e.Part(0, 2) == 13 || e.Part(0, 3) == 123 || e.Part(0, 3) == 141 || e.Part(0, 3) == 142)
I.Color = NewestCOServer.Game.Item.ArmorColor.Orange;
//I.FreeItem = true;
I.ID = ID;
I.UID = (uint)Program.Rnd.Next(10000000);
try
{
I.MaxDur = I.DBInfo.Durability;
I.CurDur = I.MaxDur;
}
catch (Exception Exc) { Program.WriteLine(Exc); }
try
{
I.Plus = byte.Parse(Cmd[3]);
}
catch { }
try
{
I.Bless = byte.Parse(Cmd[4]);
}
catch { }
try
{
I.Enchant = byte.Parse(Cmd[5]);
}
catch { }
try
{
I.Soc1 = (Game.Item.Gem)byte.Parse(Cmd[6]);
}
catch { }
try
{
I.Soc2 = (Game.Item.Gem)byte.Parse(Cmd[7]);
}
catch { }
try
{
if (Cmd[8].ToLower() == "Poison")
{
I.Effect = NewestCOServer.Game.Item.RebornEffect.Poison;
}
else if (Cmd[8].ToLower() == "HP")
{
I.Effect = NewestCOServer.Game.Item.RebornEffect.HP;
}
else if (Cmd[8].ToLower() == "MP")
{
I.Effect = NewestCOServer.Game.Item.RebornEffect.MP;
}
else if (Cmd[8].ToLower() == "Shield")
{
I.Effect = NewestCOServer.Game.Item.RebornEffect.Shield;
}
else if (Cmd[8].ToLower() == "Horsie")
{
I.Effect = NewestCOServer.Game.Item.RebornEffect.Horsie;
}
else
I.Effect = NewestCOServer.Game.Item.RebornEffect.None;
}
catch { }
GC.MyChar.AddFullItem(I.ID, I.Bless, I.Plus, I.Enchant, I.Soc1, I.Soc2, I.Color, I.Progress, I.TalismanProgress, I.Effect, I.FreeItem, I.CurDur, I.MaxDur,I.Suspicious,I.Locked);
}
}
}
}
else
Game.World.Chat(GC.MyChar, ChatType, From, To, Message );
}
catch { }
}
}
}انا اسف جدا لو الموضع صعب بس فعلا انا تعبت جدى مع المشكله دى ولو حد يعرف يعدل الكود علشان يقبل كل الجمل
اكون شاكل جدا جدا
واتمنى انى مش اكون عضو رزل
وقريب ان شاء الله هينطلق مشروعى لو الكود دا اكتمل بالشكل الى فى دماغى
والسلام خير ختام