بسم الله الرحمن الرحيم وبه نستعين
اليوم هشرح ازاى تخلى اى صفحه فى الكون تشتغل على سورس اليكس بدون روت احبائى فى الله بس رنك الجيلدات لانه ده حواره طويل ومحتاج الواحد يغير الباكتات بتاعته بالكامل وبصراحه هو ملهوش لازمه اصلا معرفش هما بيحطوه ليه اصلا فى الموقع
اول حاجه هتروح لكلاس MsgNewRole وده معروف انه لاى شخصية جديدة هتتعمل هيحصلها الى فى الكلاس ده
هتبحث فى الكلاس ده عن الكود ده
كود:
client.ClientFlag |= Client.ServerFlag.CreateCharacterSucces;
هتقوم جى فوقيه وراشق الكود ده
كود:
Program.INSERTPlayerFromFileToSql(client);
بعد كدا هتروح على كلاس Program وتبحث عن الكود ده
كود:
public static void SaveDBPayers(
بعد كدا هتبدل الفويد كلو بالفويد ده
كود:
public static void SaveDBPayers(Extensions.Time32 clock, GameClient client)
{
if (clock > SaveDBStamp)
{
if (Database.Server.FullLoading && !Program.ServerConfig.IsInterServer)
{
foreach (var user in Database.Server.GamePoll.Values)
{
if (user.OnInterServer)
continue;
if ((user.ClientFlag & Client.ServerFlag.LoginFull) == Client.ServerFlag.LoginFull)
{
user.ClientFlag |= Client.ServerFlag.QueuesSave;
Database.ServerDatabase.LoginQueue.TryEnqueue(user);
}
}
UpdatePlayerFromFileToSql(client);
Database.Server.SaveDatabase();
MyConsole.WriteLine("Database got saved ! ");
}
SaveDBStamp.Value = clock.Value + KernelThread.SaveDatabaseStamp;
}
}
كدا انت ضفت الابديت والانسرت تمام كدا هنعمل بقا الفكره بتاعت الاونلاين بحيث انك اول ما تفتح تتحول اونلاين و اول ما تقفل الاونلاين يروح من الموقع
هتبحث عن الفويد ده
كود:
public unsafe static void Game_Disconnect(
وهتروح لكلمة الاميل بيقفل وده مش محتاجه كتابه وهتحط الاكواد ده
كود:
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
{
cmd.Update("entities").Set("Online", 0).Where("UID", client.Player.UID).Execute();
}
كدا بقا لو الاكونت قفل هيتعمل فى الداتا بيز وفى الموقع انه قفل
نيجى بقا لحوار اول ما يفتح يتكتب انه اونلاين
هتروح على كلاس MsgLoginClient وتنزل تحت خالص لغيت الكود ده
كود:
Project_Terror_v2.ServerSockets.LoginController.LoggedIn(client.Socket.RemoteIp);
وهتحط الاكواد ده بردوه
كود:
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
{
cmd.Update("entities").Set("Online", 1).Where("UID", client.Player.UID).Execute();
}
كدا اصبح اللاعب اول ما يفتح هيظهر فى الموقع وفى الداتا بيز ان هفتح نيجى بقا لحل الايرورات بتاعت الاضافات ده كلها
اول حاجه الايرورات بسبب ان الاضافه لسه ما كملتهاش
هروح لكلاس Program ونحط الفودين دول فى اى حته مش هتفرق
كود:
public static void UpdatePlayerFromFileToSql(GameClient client)
{
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
{
cmd.Update("entities")
.Set("HairStyle",client.Player.Hair)
.Set("Class", client.Player.Class)
.Set("Money", client.Player.Money)
.Set("ConquerPoints", client.Player.ConquerPoints)
.Set("Body", client.Player.Body)
.Set("Face", client.Player.Face)
.Set("Level", client.Player.Level)
.Set("Strength", client.Player.Strength)
.Set("Agility", client.Player.Agility)
.Set("Vitality", client.Player.Vitality)
.Set("Spirit", client.Player.Spirit)
.Set("Atributes", client.Player.Atributes)
.Set("Hitpoints", client.Player.HitPoints)
.Set("Mana", client.Player.Mana)
.Set("MapID", client.Player.Map)
.Set("X", client.Player.X)
.Set("Y", client.Player.Y)
.Set("PKPoints", client.Player.PKPoints)
.Set("Experience", client.Player.Experience)
.Set("QuizPoints", client.Player.QuizPoints)
.Set("Reborn", client.Player.Reborn)
.Set("1stClass", client.Player.FirstClass)
.Set("2ndClass", client.Player.SecoundeClass)
.Set("3rdClass", client.Player.Class)
.Set("Spouse", client.Player.Spouse)
.Set("WarehousePW", client.Player.SecurityPassword)
.Set("MoneySave", client.Player.WHMoney)
.Set("FirstRebornClass", client.Player.FirstClass)
.Set("SecondRebornClass", client.Player.SecoundeClass)
.Set("FirstRebornLevel", client.Player.FirstRebornLevel)
.Set("SecondRebornLevel", client.Player.SecoundeRebornLevel)
.Set("EnlightenPoints", client.Player.Enilghten)
.Set("GuildID", client.Player.GuildID)
.Set("GuildRank", client.Player.GuildRank)
.Set("GuildSilverDonation", client.Player.MyGuild.RankSilversDonations)
.Set("GuildConquerPointDonation", client.Player.MyGuild.RankCPDonations)
.Set("VIPLevel", client.Player.VipLevel)
.Set("ClanId", client.Player.ClanUID)
.Set("ClanDonation", client.Player.MyClan.Donation)
.Set("ClanRank", client.Player.ClanRank)
.Where("UID", client.Player.UID)
.Execute();
}
}
public static void INSERTPlayerFromFileToSql(GameClient client)
{
using (var cmd = new MySqlCommand(MySqlCommandType.INSERT))
{
cmd.Update("entities")
.Insert("HairStyle", client.Player.Hair)
.Insert("Class", client.Player.Class)
.Insert("Money", client.Player.Money)
.Insert("ConquerPoints", client.Player.ConquerPoints)
.Insert("Body", client.Player.Body)
.Insert("Face", client.Player.Face)
.Insert("Level", client.Player.Level)
.Insert("Strength", client.Player.Strength)
.Insert("Agility", client.Player.Agility)
.Insert("Vitality", client.Player.Vitality)
.Insert("Spirit", client.Player.Spirit)
.Insert("Atributes", client.Player.Atributes)
.Insert("Hitpoints", client.Player.HitPoints)
.Insert("Mana", client.Player.Mana)
.Insert("MapID", client.Player.Map)
.Insert("X", client.Player.X)
.Insert("Y", client.Player.Y)
.Insert("PKPoints", client.Player.PKPoints)
.Insert("Experience", client.Player.Experience)
.Insert("QuizPoints", client.Player.QuizPoints)
.Insert("Reborn", client.Player.Reborn)
.Insert("1stClass", client.Player.FirstClass)
.Insert("2ndClass", client.Player.SecoundeClass)
.Insert("3rdClass", client.Player.Class)
.Insert("Spouse", client.Player.Spouse)
.Insert("WarehousePW", client.Player.SecurityPassword)
.Insert("MoneySave", client.Player.WHMoney)
.Insert("FirstRebornClass", client.Player.FirstClass)
.Insert("SecondRebornClass", client.Player.SecoundeClass)
.Insert("FirstRebornLevel", client.Player.FirstRebornLevel)
.Insert("SecondRebornLevel", client.Player.SecoundeRebornLevel)
.Insert("EnlightenPoints", client.Player.Enilghten)
.Insert("VIPLevel", client.Player.VipLevel)
.Where("UID", client.Player.UID)
.Execute();
}
}
كدا مش هيفضل الا ايرور واحد الايرور هيجيلك فى السطر ده تحديدا
كود:
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
وده مش بسبب نقص فى الكود ولا حاجه بس الحل بتاعه انك هترزع النيم اسبيس ده فوق خالص فى كل كلاس يظهرلك فى الايرور فى السطر ده وكمان الكلمه نفسها ممكن تتغير علشان لو جالك ايرور فى الكلمة هقولك كل الكلامات المحتملة فيها
كود:
using Project2D.Database;
او
كود:
using COServer.Database;
او
كود:
using MsgServer.Database;
او لو واحد مغير اسم البروجكت وحاطط اسمه والكلام ده يحط الاسم الصح مكانها والمشكلة هتتحل
هنيجى بقا لحته كدا هى مش مشكلة ولا حاجه ومش هتاثر بس الاحتياط واجب دلوقتى الشخص نفسه ممكن يغير الاسم بتاعه عادى ؟ وده وارد جدا ساعتها مش احتمال يحصل مشاكل ؟ هقولك هيحصل طبعا مشاكل بسبب ان احنا عاملين اضافه للداتا بيز من غير تحديث فالحل ايه بقا ياعم تع تع هقولك الحل بسيط جدا
هتبحث عن كلاس MsgNameChange وتروح للكود ده
كود:
case ActionID.Request:
وتروح عند سطر تم تغير الاسم وتحط الاكواد ده
كود:
using (var cmd = new MySqlCommand(MySqlCommandType.UPDATE))
{
cmd.Update("entities").Set("Name", Name).Where("UID", user.Player.UID).Execute();
}
ودا رابط ال sql
عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع
وبكدا يكون الاضافة خلصت واى صفحه على النت هتجيبها الاونلاين شغال والرنكات شغاله وكل حاجه ومش مضر اصلا بعد كدا تحمل صفحات اليكس والبتاع ده الى بيعملوا انهم يمسحوا الرنكات ويمسحوا الاضافات وكل حاجه ويكون الصفحه اخرها تسجل فقط وتغير الباسورد علشان ما يتعبوش نفسهم