الان سيستم AI كامل فيكسد نظام الشخصية الزكية ممكن تلعب مع نفسك بمستويات مختلفة
اهلا وسهلا بالشباب اليوم لقيت عندك في سورس قديم سيستم الشخصية الوهمية او التخيلية
السيستم ده بيخليك تقدر تلعب ارينا مع السيرفر نفسه بشخصية وهمية بتقنية الزكاء الاصطناعي
بعدة مستويات .
فعلا السيستم ده حاجة زي الفل بمعني الكلمة فحبيت انزله ليكم مجاناً
حبيت اعرف الشرح ده نزل قبل كده مش لقيته نزل ولو كان نزل قبل كده مفيش مشكلة
حقوق السيستم بصراحة مش عارف لمين .
بس تم السحب بواسطتي.
الان ندخل علي تركب السيستم.
اولاً هنروح علي فولدر Network
وحمل الملف ده وحطه فيه.
هنفتح الباكت هندلر PacketHandler
هتبحث عن
case "chi":
{
client.Send(new ChiPowers(true).Query(client));
break;
}
ضع تحتها الاكواد ديه
#region MaTrix Epic
case "aibot":
{
ProjectX_V3_Game.Entities.AIBot bot = new ProjectX_V3_Game.Entities.AIBot(ProjectX_V3_Game.Entities.BotLevel.MaTrix);
client.AIBot = new ProjectX_V3_Game.Entities.AIBot(ProjectX_V3_Game.Entities.BotLevel.MaTrix);
bot.LoadBot(ProjectX_V3_Game.Entities.BotType.DuelBot, client);
bot.BeginJumpBot(client);
}
break;
case "baibot":
{
if (Data.Length == 3)
{
var array = LoadEntityUIDs(int.Parse(Data[2]));
int x = int.Parse(Data[1]);
int y = int.Parse(Data[2]);
for (int i = x; i < y; i++)
{
var fClient = new GameClient(null);
fClient.FakeLoad(array[i]);
int xP = Kernel.Random.Sign() * Kernel.Random.Next(8);
int yP = Kernel.Random.Sign() * Kernel.Random.Next(8);
if (fClient.FakeLoaded)
{
fClient.Entity.Teleport(client.Entity.MapID, (ushort)(client.Entity.X + xP), (ushort)(client.Entity.Y + yP));
if (fClient.Booth == null)
{
fClient.Send(new MapStatus() { BaseID = fClient.Map.BaseID, ID = fClient.Map.ID, Status = Database.MapsTable.MapInformations[1036].Status });
fClient.Booth = new Game.ConquerStructures.Booth(fClient, new Data(true) { UID = fClient.Entity.UID });
fClient.Send(new Data(true) { ID = GamePackets.Data.ChangeAction, UID = fClient.Entity.UID, dwParam = 0 });
for (int ii = x; i < y; i++)
{
Game.ConquerStructures.BoothItem item = new Game.ConquerStructures.BoothItem();
item.Cost = 50000;
item.Item = new GamePackets.ConquerItem(true);
item.Item.ID = 613429;
item.Item.UID = AuthClient.nextID; AuthClient.nextID++;
item.Item.Plus = 12;
item.Item.Enchant = 255;
item.Item.Bless = 7;
item.Item.SocketOne = Enums.Gem.SuperDragonGem;
item.Item.SocketTwo = Enums.Gem.SuperDragonGem;
Database.ConquerItemBaseInformation CIBI = null;
CIBI = Database.ConquerItemInformation.BaseInformations[item.Item.ID]; if (CIBI == null)
break;
item.Item.Durability = CIBI.Durability;
item.Item.MaximDurability = CIBI.Durability;
// client.Inventory.Add(item.Item, Game.Enums.ItemUse.CreateAndAdd);
item.Item.Send(fClient);
{
ItemUsage usage = new ItemUsage(true) { ID = ItemUsage.AddItemOnBoothForConquerPoints };
item.Cost_Type = Game.ConquerStructures.BoothItem.CostType.ConquerPoints;
fClient.Booth.ItemList.Add(item.Item.UID, item);
fClient.Send(usage);
Conquer_Online_Server.Network.GamePackets.BoothItem buffer = new Conquer_Online_Server.Network.GamePackets.BoothItem(true);
buffer.Fill(item, fClient.Booth.Base.UID);
fClient.SendScreen(buffer, false);
}
}
}
}
}
}
client.Screen.Reload(null);
break;
}
case "baibot2":
{
Conquer_Online_Server.Database.MySqlCommand Cmd = new Conquer_Online_Server.Database.MySqlCommand(Conquer_Online_Server.Database.MySqlCommandType.SELECT);
Cmd.Select("bots");
Conquer_Online_Server.Database.MySqlReader Reader = new Conquer_Online_Server.Database.MySqlReader(Cmd);
while (Reader.Read())
{
var ID = Reader.ReadUInt32("BotID");
var fClient = new GameClient(null);
fClient.FakeLoadx(ID);
}
// Reader.Close();
// // Reader.Dispose();
client.Screen.Reload(null);
}
break;
#endregion
تمام هتروح علي GameClient او GameState
كلاً علي حسب السورس الخاص بك يا برنس
هتحط البابلكات ديه
public ProjectX_V3_Game.Entities.AIBot AIBot ;
public bool IsAIBot = false
;
تمام وبعد كده هتحط دول برضو
public GenericActionList<BotDelayedActions> BotActions = new GenericActionList<BotDelayedActions>();
public GenericActionList<DelayedActionType> EntityActions = new GenericActionList<DelayedActionType>();
public void Summon()
{
try
{
this.AIBot.LoadBot(ProjectX_V3_Game.Entities.BotType.DuelBot, this);
this.AIBot.BeginJumpBot(this);
aisummoned = true;
EntityActions.RemoveAction(DelayedActionType.Summon);
}
catch { }
}
تمام كده ندخل علي كلاس maps.cs
ونضيف الفويد ده
public void AddAI(Entity entity)
{
if (!this.AIs.ContainsKey(entity.UID))
{
this.AIs.Add(entity.UID, entity);
this.Floor[entity.X, entity.Y, MapObjectType.Player, entity] = false;
}
else
{
this.RemoveEntity(entity);
this.AIs.Add(entity.UID, entity);
this.Floor[entity.X, entity.Y, MapObjectType.Player, entity] = false;
}
}
public void RemoveAI(Entity entity)
{
if (this.AIs.ContainsKey(entity.UID))
{
this.AIs.Remove(entity.UID);
this.Floor[entity.X, entity.Y, MapObjectType.Player, entity] = true;
}
}
تمام كده يا ريس
اتبقي يا برنس الانبيسي اهه
#region AI Challange
case 216341:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Hello friend. I am the challenge master! Have you imagine if u could fight yourself (Clone).");
dialog.Option("I Wish To Try", 1);
dialog.Option("I'll think about it!", 255);
dialog.Send();
break;
}
case 1:
{
dialog.Text("Choose Difficulty you want.");
dialog.Option(" Noob .", 2 + 0);
dialog.Option(" Easy .", 2 + 1);
dialog.Option(" Normal .", 2 + 2);
dialog.Option(" Medium .", 2 + 3);
dialog.Option(" Hard .", 2 + 4);
dialog.Option(" Insane .", 2 + 5);
dialog.Option(" MaTrix .", 2 + 6);
dialog.Option("Nevermind.", 255);
dialog.Send();
break;
}
default:
if ((npcRequest.OptionID >= 2 + 0) && (npcRequest.OptionID <= 2 + 6))
{
client.AIBot = new Conquer_Online_Server.Entities.AIBot((Conquer_Online_Server.Entities.BotLevel)(npcRequest.OptionID - 2));
if (!Constants.PKFreeMaps.Contains(702))
Constants.PKFreeMaps.Add(702);
if (!Kernel.Maps.ContainsKey((int)700L))
{
new Map(700, DMaps.MapPaths[700]);
}
Map map = Kernel.Maps[(int)700];
Map dynamicMap = map.MakeDynamicMap();
client.Entity.Teleport(map.ID, dynamicMap.ID, 50, 50);
client.Time(7);
// client.Entity.Teleport(702,dd 38, 38);
client.EntityActions.AddAction(Conquer_Online_Server.Entities.DelayedActionType.Summon, client.Summon, 6000);
break;
}
else
{
dialog.Text("Invaild Difficulty");
dialog.Option("I Try again", 255);
dialog.Send();
break;
}
}
break;
}
#endregion Challange
تمام كده يا ريس نصيحة بقي للناس الي بتظهر ليه ايرورات
اي ايرور اتأكدو الاول انه مش بسبب اسم البروجكت تمام.
لو بسبب اس البروجكت غيره لأسم البروجكت السورس الخاص بيك.
اي مشاكل انا موجود في التعليقات
وانا هحاول اعملكم فيديو برضو.
ممكن طلب عاوز اعمل لعبتين بكلنت واحد ممكن تقولى ازاى اضبط الموضوع ده
ردحذفطلب ظبط ليك اختيار السيرفر من جوة الكلينت زي TQ
في موضوع في المدونة بيشرح ده بس المشكلة بعد الابجريد مش هينفع الموضوع ده عموماً انا هحاول اتواصل مع شخص معين يضبط لي موضوع بهذه الخدمة وهحاولك انزلها ليكم مجانية مع انها هتكون مكلفة بالنسبة لي
حذفأزال المؤلف هذا التعليق.
ردحذفجالى 27 ايرور
ردحذفhttp://cdn.top4top.co/i_fc2a620b4b1.jpg
بص كمل الاضافة للنهاية تمام
حذفبعد كده
هتروح لكلاس map.cs
وضيف البابلك ده
public static SafeConcurrentDictionary Ais = new SafeConcurrentDictionary();
تحت
public class Map
{
زادو بقو 38 ايرور
ردحذفhttp://cdn.top4top.co/i_7dce95bab31.jpg
http://cdn.top4top.co/i_7dce95bab32.png
http://cdn.top4top.co/i_0230371d003.png
http://cdn.top4top.co/i_0230371d004.png
http://cdn.top4top.co/i_0230371d005.png
اتأكد من انك مغير اسم البروجكتات لأسم بروجكت السورس الي انت شغال عليه
حذفمغيرو والله
حذف