عرض مشاركة واحدة
احصائياتى

الردود
29

المشاهدات
1561
 
Uchiha T3Alo
.:: عضو خبير ::.

المشاركات
563

+التقييم
0.23

تاريخ التسجيل
Mar 2020

الاقامة
Giza

نظام التشغيل
Windows 10 Pro

رقم العضوية
3670
2020-06-11, 04:30 AM
المشاركة 1
2020-06-11, 04:30 AM
المشاركة 1
Important كيفيه جعل سورس اليكس يقبل اى صفحة بالرنكات بتاعتها
بسم الله الرحمن الرحيم وبه نستعين


اليوم هشرح ازاى تخلى اى صفحه فى الكون تشتغل على سورس اليكس بدون روت احبائى فى الله بس رنك الجيلدات لانه ده حواره طويل ومحتاج الواحد يغير الباكتات بتاعته بالكامل وبصراحه هو ملهوش لازمه اصلا معرفش هما بيحطوه ليه اصلا فى الموقع


اول حاجه هتروح لكلاس 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

عفواً لايمكن عرض الرابط إلا بعد الرد على الموضوع


وبكدا يكون الاضافة خلصت واى صفحه على النت هتجيبها الاونلاين شغال والرنكات شغاله وكل حاجه ومش مضر اصلا بعد كدا تحمل صفحات اليكس والبتاع ده الى بيعملوا انهم يمسحوا الرنكات ويمسحوا الاضافات وكل حاجه ويكون الصفحه اخرها تسجل فقط وتغير الباسورد علشان ما يتعبوش نفسهم



التعديل الأخير تم بواسطة Hassan Emprator ; 2020-06-11 الساعة 07:17 AM