السلام عليم ورحمة الله وبركاته يمكن العنوان غريب شويه بس هو ده العنوان المناسب. ياريت بس قبل اي حاجه الناس تفهم الموضوع كويس وتقرأ الموضوع كامل الفكرة هي انك هتشوف اي ان بي سي يعجبك وعايز تخليه جرمنت يتلبس وليكن ده مثلاً بس لازم تحدد ان بي سي راجل و التاني بنت تمام ؟
بعديها تخش ملف data بعديها texture وتقعد تدور علي شكل الان بي سي فبتقعد تدور بس متخافش هي دايماً بتبقي تحت خالص والاي دي تبعها دايماً بيبدأ ب 999 تمام بعديها ننسخ الان بي سي تبع الولاد 2 مره و البنات 2 مره و تغير اي دي كل واحد بحيث يكونوا بالشكل ده
بعديها تكيب اي دي الان بي سي بتاعك الي في النافي كات الي انت عايز تخليه جرمنت وتاخدو كوبي بس تمسح الرقم الاخير بعديها تخش في ملف ini في ملف npc وتبحث عن الاي دي الي انت اخدوتوا كوبي من النافي كات (بس لازم تمسح اخر رقم من الاي دي الي انت نسختوا من النافي كات) المهم بعديها تروح عند الكلمة ديه SimpleObjID وتحفظ الرقم المكتوب وتروح لملف c3 وتخش في ملف npc وتدور علي الرقم الي انت لقيتوا جنب الكلمة ديه SimpleObjID هتلاقي مجلدات متسميه بأرقام دور علي الرقم الي انا قولتلك احفظوا تخش جواه وهتلاقي ملف اسمو 1.c3 ده خدوا كوبي وانقلوا لمجلد mesh الي في c3 وتغير اسموا للاي دي الي احنا عملينوا الي هو ده 003117690 و 004117690 اما بالنسبه لجرمنت البنات تروح تعيد نفس الخطوات ترجع للان بي سي البنت وتاخد الاي دي معادا اخر رقم من النافي كات بعد كده تروح تخش في ملف npc الي في ini وتبحث عن الاي دي الي انا قولتلك احفظوا بعد كده تاخد الرقم الي جنب ..... وهكذا نفس الخطوات المهم بعد ما تعمل كل الخطوات ديه هيكون ناقصنا حاجتين هما (شكل الجرمنت علي الارض و شكل الجرمنت وانت لابسوا مش محتاجه غير انك تعملها علي الفوتوشوب) زي كده
هتروح علي الفوتوشوب وتروح لdata بعديها itemminico وتفتح اي ايقونه وتعدل عليها وتخليها زي الجرمنت بتاع الان بي سي الي انت اختراتوا واسهل طريقه هي اعمل screen shot وافضل اقطع في الصورة لحد ما تخليه جرمنت الان بي سي المهم وقت ما تحفظ الصورة احفظها بصيغة dds في ملف itemminico الاسم يكون الاي دي الي احنا عملاناه بس دون الارقام الاولانيه زي كده 117690 يعني بتحذف ال 003 او 004 او 001 او 002 الهم تروح لملف itemminico في فولدر ani تروح تضيف الكود ده
هي مش حلوه لان الجرمنت بيفضل كلوا ثابت يعني لما تنط ايدوا بتفضل ثابته وكده لكن انا نشرت الفكره عشان الناس تقدر تطورها وتبقي احسن
قول الدعاء ده مش هياخد منك وقت
اللهم اغفر للمسلمين والمسلمات الاحياء منهم والاموات استغفر الله العظيم عدد كل شيئ عدد خلقه ورضا نفسه وزنة عرشة ومداد كلماته وعدد ما كان و عدد ما سيكون وعدد الحركات والسكون استغفر الله عدد ما خلق في الارض سبحان الله عدد ما بين ذلك سبحان الله العظيم عدد كل شيئ عدد خلقه ورضا نفسه وزنة عرشة ومداد كلماته وعدد ما كان و عدد ما سيكون وعدد الحركات والسكون سبحان الله عدد ما خلق في الارض سبحان الله عدد ما بين ذلك
namespace CaptainJoe.Database { public unsafe class ActivenessTable { public static void Load(GameClient client) { using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("Activeness").Where("UID", client.Entity.UID)) using (var reader = new MySqlReader(cmd)) { while (reader.Read()) { client.Entity.ClaimedActivenessGift1 = reader.ReadByte("ClaimedGift1"); client.Entity.ClaimedActivenessGift2 = reader.ReadByte("ClaimedGift2"); client.Entity.ClaimedActivenessGift3 = reader.ReadByte("ClaimedGift3"); client.Entity.ChiStudyTimes = reader.ReadByte("ChiStudy"); client.Entity.JiangStudyTimes = reader.ReadByte("JiangStudy"); return; } ActivenessTable.Insert(client); } } public static void Save(GameClient client) { if (client.Entity == null) return; using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("Activeness")) cmd.Set("ClaimedGift1", client.Entity.ClaimedActivenessGift1) .Set("ClaimedGift2", client.Entity.ClaimedActivenessGift2) .Set("ClaimedGift3", client.Entity.ClaimedActivenessGift3) .Set("JiangStudy", client.Entity.JiangStudyTimes) .Set("ChiStudy", client.Entity.ChiStudyTimes) .Where("UID", client.Entity.UID) .Execute(); } public static void Reset(GameClient client) { if (client.Entity == null) return; using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE).Update("Activeness")) cmd.Set("ClaimedGift1", 0) .Set("ClaimedGift2", 0) .Set("ClaimedGift3", 0) .Set("ChiStudy", 0) .Set("JiangStudy", 0) .Where("UID", client.Entity.UID) .Execute(); } private static void Insert(GameClient client) { if (!ActivenessTable.Exists(client.Entity.UID)) { using (var cmd = new MySqlCommand(MySqlCommandType.INSERT).Insert("Activeness")) cmd.Insert("UID", client.Entity.UID).Execute(); } } private static bool Exists(uint UID) { using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("Activeness").Where("UID", UID)) using (var reader = new MySqlReader(cmd)) { while (reader.Read()) { reader.Close(); reader.Dispose(); return true; } return false; } } } }
كلاس GameClient.cs في اي حته
public ushort ActivenessPoints { get { return ActivenessPoint.Points; } set { ActivenessPoint.Points = value; } } public ActivenessPoints ActivenessPoint; public Activeness Activenes;
في نفس الكلاس دور على فويد اسمه ReadyToPlay() في اي حته
ActivenessPoint = new ActivenessPoints(); Activenes = new Activeness(this);
في نفس الكلاس فويد اسمه Shutdown تحت دة
Database.EntityTable.SaveEntity(this, conn);
هتضيف دة
Database.ActivenessTable.Save(this);
في كلاس EntityTable.cs ابحث عن
if (DateTime.Now.DayOfYear != client.LastResetTime.DayOfYear)
تحت القوص حط
Database.ActivenessTable.Reset(client);
في نفس الكلاس برضو ابحث عن
client.Entity.FullyLoaded = true;
فوقيه حط دة
Database.ActivenessTable.Load(client);
في كلاس Entity.cs في اي حته ضيف
public uint ChiStudyTimes = 0;
public byte ClaimedActivenessGift1 = 0; public byte ClaimedActivenessGift2= 0; public byte ClaimedActivenessGift3 = 0; public uint JiangStudyTimes = 0;
كلاس PacketHandler.cs ابحث عن فويد LoginMessage اخره حط دة
#region ActivenessClaimGift case 2822: { ClaimActivenessGift CA = new ClaimActivenessGift(); CA.Deserialize(packet); switch (CA.Type) { case 1: { if (client.Entity.ClaimedActivenessGift1 == 1) return;
//client.Inventory.Add................... break; } case 2: { if (client.Entity.ClaimedActivenessGift2 == 1) return;
//client.Inventory.Add................... break; } case 3: { if (client.Entity.ClaimedActivenessGift3 == 1) return;
//client.Inventory.Add................... break; } } if (CA.Type == 1) client.Entity.ClaimedActivenessGift1 = 1; if (CA.Type == 2) client.Entity.ClaimedActivenessGift2 = 1; if (CA.Type == 3) client.Entity.ClaimedActivenessGift3 = 1; CA.Send(client); break; } #endregion
في كلاس World.cs في فويد CharactersCallBack
#region Activeness if (client.Activenes != null) { if (Time32.Now >= client.Activenes.HalfHourTask.AddMinutes(30)) { client.Activenes.HalfHourTask = Time32.Now; client.Activenes.HalfAnHourOnlineTimes++; if (client.Activenes.HalfAnHourOnlineTimes > 5) client.Activenes.HalfAnHourOnlineTimes = 5; if (client.Activenes.HalfAnHourOnlineTimes == 5) client.Activenes.CompleteHalfAnHourOnline = 1; client.Send(client.Activenes); } } #endregion