قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة[ قسم متخصص فى شروحات و البرامج في عمل السيرفرات الخاصة ] [ يرجى عدم وضع الأسئلة والاستفسارات في هذا القسم ]
السلام عليكم ورحمة الله وبركاته
أولاً شكرا على تعبك فى عمل السيستم بس في بعض الملاحظات والتعديلات البسيطة اللى ممكن انت مخدتش بالك منها ..
وأرجوا ان تتقبل ان كانت نصيحة او انتقاد او تعديل ..
نبدأ على بركة الله
نبدأ بالانتقاد ..
بص يا باشا السيستم دا معلش لو حد عامل موضوع زي يونك رانك او latest unique kills على موقع اللعبة يبقا انت كدا بوظتله الدنيا عشان انت بالطريقة بتاعتك دي بيمسح اليونك لوج اللى بيتحسب عليه الرانك او اخر 50 يونك ع السايت اول بأول يعني لو حد عنده رانك او عامل اخر يونكات ماتت ع السايت يبقا الدنيا معاه خربت ..
غير كدا لو انت عايز اللى يموت اليونك ياخد ريوارد ممكن تضيف دروب لليونك بالريوارد اللى انت عايزها وخلاص
نخش ع النصيحة
اما تيجي تعمل بروسيدور حط فى الشروط Else عشان دي بتدور ع الشرط اللي متطابق فى الشروط كلها وتحققه وتتجاهل الباقي ودي افضل حاجة عشان تحط اكتر من شرطين وحاول تخلي شغلك ديماً على الـ CharID عشان دا مش بيتغير لكن charname16 دا بيتغير بالـ Charname Change scroll ..
نيجي للتعديلات ..
انت ليه عامل عشان يشتغل لازم يعمل تيليبورت قبل متعدي 5 دقايق على قتل اليونك فى الخطوة دي
كود PHP:
And time <= @Now+DATEADD(MINUTE,5,0)
طب افرض هو كان بوت ولا حاجة ولا أخد DC بعد مقتل اليونك قبل ميعمل تليبورت ! وكذلك انت مش محدد اسم الكراكتر اللى هتشتغل عليه وتشغل الـ Procedure بيه اللى هو
كود PHP:
@Charname16
وكذلك ليه تخليه يعمل تليبورت مرتين ! منتا ممكن تخلى الـ Procedure يشتغل مرتين ورا بعض انك تستخدم 2x EventID زي منا موضح كدا بالتعديل
كود PHP:
Declare @Charname16 Varchar(max) = (Select CharName16 From SH_OWOJuStiCe.._Char Where CharID = @CharID) IF (@EventID = 9 or @EventID = 11) And Exists (Select * From ACC_OWOJuStiCe..srZor_uniques Where Charname = @CharName16) Begin Exec [_UniqueKillerJuStiCe] @Charname16 END
طيب بالنسبة للـ Procedure دا
كود PHP:
[dbo].[_UniqueKillerJuStiCe]
بغض النظر انك المفروض تستخدم
كود PHP:
Else IF
فا الـ Procedure مليان اخطاء مش أخطاء اكواد لأ اخطاء سيستم ..
مثلاً اول خطوة دي
كود PHP:
If @TakeReward = 0 Begin exec SH_OWOJuStiCe.._ADD_ITEM_EXTERN @CharName16,'ITEM_ETC_SD_TOKEN_01',500,1 Update LOG_OWOJuStiCe.._UniqueKillsJuStiCe Set TakeReward = 1 , KillsTimes = @KillsTimes+1 Where CharName = @CharName16 END
انت روحت جيبت الـ TakeReward من الجدول اللى انت عملتله كريت
لو لقاها 0 طيب منا ممكن تستبدلها بـ
كود PHP:
IF EXISTS (Select * From _UniqueKillsJuStiCe Where CharID = @CharID)
المهم يعمل Execute procedure _ADD_ITEM_EXTERN عشان يضيف الريوارد تمام .. وتاني خطوة يعدل ع الجدول بأسم الكراكتر ويخلي ال TakeReward = 1 ويزود الـ KillsTimes +1 تمام ..
يبقا اللى نفهمه من الخطوة دي لو راح لقى الكراكتر موجود ليها row فى الجدول اللى انت مكريته والـ TakeReward = 0 يعدل عليه ويضيف الريوارد ..
تاني خطوة دي
كود PHP:
If Not Exists (Select * From _UniqueKillsJuStiCe Where CharID = @CharID) Begin Insert Into _UniqueKillsJuStiCe (CharName, CharID, TakeReward, KillsTimes) VALUES (@CharName16, @CharID, 0, 1) Update _UniqueKillsJuStiCe Set TakeReward = 1 , KillsTimes = 1 Where CharName = @CharName16 And KillsTimes = NULL exec SH_OWOJuStiCe.._ADD_ITEM_EXTERN @CharName16,'ITEM_ETC_SD_TOKEN_01',500,1 END
لو راح وملقاش الكركتر ليها row فى الجدول يدخل new row للكراكتر بالقيم اللى انت محددها وبعدين يعدل عليه طيب متدخل القيم على طول اللى انت معدلها بدل متدخل insert new row وبعدين تعدل عليه!
طيب المشكلة هنا فى حاجة انت دخلت القيم دي فى الاول
كود PHP:
VALUES (@CharName16, @CharID, 0, 1)
وعدلت عليها بالكيوري دي
كود PHP:
Update _UniqueKillsJuStiCe Set TakeReward = 1 , KillsTimes = 1 Where CharName = @CharName16 And KillsTimes = NULL
طيب ما كدا مش هيعدل التعديل اللى انت محدده فى الكيوري عارف ليه ؟
عشان دي
كود PHP:
And KillsTimes = NULL
انت ضايفها اصلاً بالـ insert الـ Value = 1 ازاي حاططله الشرط ان الـ KillsTimes لازم تكون NULL عشان يعدل !!
وبعدين يدي الريوارد تمام ..
نيجي لأخر خطوة ..
كود PHP:
If @TakeReward = 1 Begin Delete From ACC_OWOJuStiCe..srZor_uniques Where Charname = @CharName16 Update LOG_OWOJuStiCe.._UniqueKillsJuStiCe Set TakeReward = 0 Where CharName = @CharName16 End
الخطوة دي تمام مفهاش أخطاء وهي انه بعد معدل وخلى TakeReward = 1 يروح يمسح اللوج ويرجعها = 0 عشان الـ kill اللى بعده ..
بس الصراحة انت هارس فى الـ Procedure حاجات كتير ملهاش لازمة وممكن تختصرها فى 2x case مش اكتر ..
حاجة اخيرة نسيت اكتبها
انت مش محدد نوع اليونيك وبكدا الريوارد دي هتروح على اي يونيك بينزل بنوتيك اياً كان بقا TG Demon Yuno Jupiter
بص هوضحلك فكرة حلوة .. متخليهوش يمسح حاجة من الـ srZor_uniques ضيف عامود جديد بأسم reward ومع التليبورت الاولانية عدل بأسماء اليونيكات عدد الريوارد اللى انت تحدده لكل يونيك
واما تدي الريوارد رجعه 0 عشان ميحسبوش بعد كدا واشتغل ع الـ new kills بال NULL مش بالـ 0 بكدا هتسهل عليك كتيير وتقدر تتحكم فى كل يونيك يدي كام كوين او كام سيلك .. كدا يعني ..
المشاركة الأصلية كتبت بواسطة _Miss_AngeL_
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
انت عدلت علي اخطاءه ، بس في نفس الوقت فيه حاجا لازم تفهمها . السيستم ده لو اتعمل في اكتر من 3 سطور يبقي الي عمله مبيفهمش حاجا ! متختلفش كتير عنه ^^ .. تقبل النقد بقي زيك زي الراجل الي انت انتقدته ده
بص يا برنس انا لو هعمل سيستم مش هاخد حاجة اعدل عليها انا مجرد اني قولتله اخطاؤه وعلى فكرة شوف انا قايله ايه فى الجملة دي ..
اقتباس:
بس الصراحة انت هارس فى الـ Procedure حاجات كتير ملهاش لازمة وممكن تختصرها فى 2x case مش اكتر ..
وانا لو عملته مش هعمل العك دا كله ومش هخليه يمسح لوج واحد من srZor_uniques عشان لو حد مشغل حاجة عليه مبقاش بهدلتله الدنيا !
وكلامي اللى فات كان مجرد رأي وتعديلات للأحسن بمجرد اني بصيت دقيقتين ع الـ Procedure
المشاركة الأصلية كتبت بواسطة Lazcano
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
بص يا برنس انا لو هعمل سيستم مش هاخد حاجة اعدل عليها انا مجرد اني قولتله اخطاؤه وعلى فكرة شوف انا قايله ايه فى الجملة دي ..
وانا لو عملته مش هعمل العك دا كله ومش هخليه يمسح لوج واحد من srZor_uniques عشان لو حد مشغل حاجة عليه مبقاش بهدلتله الدنيا !
وكلامي اللى فات كان مجرد رأي وتعديلات للأحسن بمجرد اني بصيت دقيقتين ع الـ Procedure
المشاركة الأصلية كتبت بواسطة Lazcano
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
السلام عليكم ورحمة الله وبركاته
أولاً شكرا على تعبك فى عمل السيستم بس في بعض الملاحظات والتعديلات البسيطة اللى ممكن انت مخدتش بالك منها ..
وأرجوا ان تتقبل ان كانت نصيحة او انتقاد او تعديل ..
نبدأ على بركة الله
نبدأ بالانتقاد ..
بص يا باشا السيستم دا معلش لو حد عامل موضوع زي يونك رانك او latest unique kills على موقع اللعبة يبقا انت كدا بوظتله الدنيا عشان انت بالطريقة بتاعتك دي بيمسح اليونك لوج اللى بيتحسب عليه الرانك او اخر 50 يونك ع السايت اول بأول يعني لو حد عنده رانك او عامل اخر يونكات ماتت ع السايت يبقا الدنيا معاه خربت ..
غير كدا لو انت عايز اللى يموت اليونك ياخد ريوارد ممكن تضيف دروب لليونك بالريوارد اللى انت عايزها وخلاص
نخش ع النصيحة
اما تيجي تعمل بروسيدور حط فى الشروط Else عشان دي بتدور ع الشرط اللي متطابق فى الشروط كلها وتحققه وتتجاهل الباقي ودي افضل حاجة عشان تحط اكتر من شرطين وحاول تخلي شغلك ديماً على الـ CharID عشان دا مش بيتغير لكن charname16 دا بيتغير بالـ Charname Change scroll ..
نيجي للتعديلات ..
انت ليه عامل عشان يشتغل لازم يعمل تيليبورت قبل متعدي 5 دقايق على قتل اليونك فى الخطوة دي
كود PHP:
And time <= @Now+DATEADD(MINUTE,5,0)
طب افرض هو كان بوت ولا حاجة ولا أخد DC بعد مقتل اليونك قبل ميعمل تليبورت ! وكذلك انت مش محدد اسم الكراكتر اللى هتشتغل عليه وتشغل الـ Procedure بيه اللى هو
كود PHP:
@Charname16
وكذلك ليه تخليه يعمل تليبورت مرتين ! منتا ممكن تخلى الـ Procedure يشتغل مرتين ورا بعض انك تستخدم 2x EventID زي منا موضح كدا بالتعديل
كود PHP:
Declare @Charname16 Varchar(max) = (Select CharName16 From SH_OWOJuStiCe.._Char Where CharID = @CharID)
IF (@EventID = 9 or @EventID = 11) And Exists (Select * From ACC_OWOJuStiCe..srZor_uniques Where Charname = @CharName16)
Begin
Exec [_UniqueKillerJuStiCe] @Charname16
END
طيب بالنسبة للـ Procedure دا
كود PHP:
[dbo].[_UniqueKillerJuStiCe]
بغض النظر انك المفروض تستخدم
كود PHP:
Else IF
فا الـ Procedure مليان اخطاء مش أخطاء اكواد لأ اخطاء سيستم ..
مثلاً اول خطوة دي
كود PHP:
If @TakeReward = 0
Begin
exec SH_OWOJuStiCe.._ADD_ITEM_EXTERN @CharName16,'ITEM_ETC_SD_TOKEN_01',500,1
Update LOG_OWOJuStiCe.._UniqueKillsJuStiCe Set TakeReward = 1 , KillsTimes = @KillsTimes+1 Where CharName = @CharName16
END
انت روحت جيبت الـ TakeReward من الجدول اللى انت عملتله كريت
لو لقاها 0 طيب منا ممكن تستبدلها بـ
كود PHP:
IF EXISTS (Select * From _UniqueKillsJuStiCe Where CharID = @CharID)
المهم يعمل Execute procedure _ADD_ITEM_EXTERN عشان يضيف الريوارد تمام .. وتاني خطوة يعدل ع الجدول بأسم الكراكتر ويخلي ال TakeReward = 1 ويزود الـ KillsTimes +1 تمام ..
يبقا اللى نفهمه من الخطوة دي لو راح لقى الكراكتر موجود ليها row فى الجدول اللى انت مكريته والـ TakeReward = 0 يعدل عليه ويضيف الريوارد ..
تاني خطوة دي
كود PHP:
If Not Exists (Select * From _UniqueKillsJuStiCe Where CharID = @CharID)
Begin
Insert Into _UniqueKillsJuStiCe (CharName, CharID, TakeReward, KillsTimes) VALUES (@CharName16, @CharID, 0, 1)
Update _UniqueKillsJuStiCe Set TakeReward = 1 , KillsTimes = 1 Where CharName = @CharName16 And KillsTimes = NULL
exec SH_OWOJuStiCe.._ADD_ITEM_EXTERN @CharName16,'ITEM_ETC_SD_TOKEN_01',500,1
END
لو راح وملقاش الكركتر ليها row فى الجدول يدخل new row للكراكتر بالقيم اللى انت محددها وبعدين يعدل عليه طيب متدخل القيم على طول اللى انت معدلها بدل متدخل insert new row وبعدين تعدل عليه!
طيب المشكلة هنا فى حاجة انت دخلت القيم دي فى الاول
كود PHP:
VALUES (@CharName16, @CharID, 0, 1)
وعدلت عليها بالكيوري دي
كود PHP:
Update _UniqueKillsJuStiCe Set TakeReward = 1 , KillsTimes = 1 Where CharName = @CharName16 And KillsTimes = NULL
طيب ما كدا مش هيعدل التعديل اللى انت محدده فى الكيوري عارف ليه ؟
عشان دي
كود PHP:
And KillsTimes = NULL
انت ضايفها اصلاً بالـ insert الـ Value = 1 ازاي حاططله الشرط ان الـ KillsTimes لازم تكون NULL عشان يعدل !!
وبعدين يدي الريوارد تمام ..
نيجي لأخر خطوة ..
كود PHP:
If @TakeReward = 1
Begin
Delete From ACC_OWOJuStiCe..srZor_uniques Where Charname = @CharName16
Update LOG_OWOJuStiCe.._UniqueKillsJuStiCe Set TakeReward = 0 Where CharName = @CharName16
End
الخطوة دي تمام مفهاش أخطاء وهي انه بعد معدل وخلى TakeReward = 1 يروح يمسح اللوج ويرجعها = 0 عشان الـ kill اللى بعده ..
بس الصراحة انت هارس فى الـ Procedure حاجات كتير ملهاش لازمة وممكن تختصرها فى 2x case مش اكتر ..
ارجوا ان اكون وضحت شرح يوصلك لأنك تبقا محترف
معلش بقا مش منسق
تقبل مروري
اولاً : شكرا على الملحظات
ثانياً : انا قايل لن ده بيمسح Log الـيونيك
ثالثاً : كان فى واحد محتاج الموضوع فعملته بسرعه و زى ما طلع بقا
و _Miss_AngeL بدل الكلمتين القولتوهم دول كان مككن تعمل بيهم الـSystem الـ فى 3 سطور