الموقع العربي الاول للعبة Silkroad Online

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=289)
-   -   .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•. (https://silkroad4arab.com/vb/showthread.php?t=594946)

Dev. iLegend 26-11-2015 07:06 PM

.•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
بسم الله الرحمن الرحيم

احب اقدم موضوع بسيط كدا عشان انا واحد من الناس حصل عندي ان في ناس بتعمل بج بيمسكوا سلاح twohand مع الـ Shield فى نفس الوقت أياً كان بقا 2h , axe , dagger , xbow , staff , etc

انا لما فكرت وشوفت البج بيحصل ازاي ،، لقيته انه بياخد كراش بعد ميعمل البج ،،
وبيفتح بيلاقي السلاح والشيلد ممسوكين للكراكتر ،،
طيب انت بكدا تبدأ تشتغل على EventID بتاع log off او login وتحاول انك تشيل يا الشيلد يا السلاح وتحطهولوا فى ال Inventory بتاعته ،، طيب واحد هيقولي لو الـ Inventory مليانة ،، في الوضع دا عمر ميقدر يخلى ال Inventory مليانة عشان هو لما بيمسك السلاحين بيفضي سلوت بتاعت الشيلد او السلاح من ال Inventory يبقا مهما عمل ايه هو بياخد كراش بعد البج على طول وبيفضي سلوت فى ال inventory ،،

طيب انا عملت الكيوري كدا بسيطة بتحطها فى AddLogChar فى الشارد لوج ،، هتمنع البج دا خالص ،،
وهي اني بشوف الكراكتر اللي جاية ماسكة سلاح وشيلد ولا لأ فى أول خطوة ،،
تانية خطوة هي اني اروح اشوف السلاح دا one hand weapon ولا two hand weapon ،، لو كان twohand weapon يبدأ يشتغل ،،
يجيب ال ID بتاع الشيلد من جدول dbo._Inventory ويشيله من سلوت 7 ويحطه فى السلوت الفاضي اللي فى الـ Inventory ،،

ودي الكيوري ،،

كود PHP:

IF @EventID in (4,6)
Begin
 
Declare @WeaponID Int , @ShieldID Int , @RefWeaponID Int , @Slot Int
 Set 
@WeaponID = (Select ItemID From [SRO_VT_SHARD].[dbo].[_InventoryWhere CharID = @CharID and Slot 6)
 
Set @ShieldID = (Select ItemID From [SRO_VT_SHARD].[dbo].[_InventoryWhere CharID = @CharID and Slot 7)
 IF @
ShieldID and @WeaponID 0
  Begin
   Set 
@RefWeaponID = (Select RefItemID From [SRO_VT_SHARD].[dbo].[_ItemsWhere ID64 = @WeaponID)
   IF @
RefWeaponID Is Not Null and @RefWeaponID in
   
(Select ID From [SRO_VT_SHARD].[dbo].[_RefObjCommonWhere CodeName128 Like 'ITEM_CH_SPEAR_%'
   
Or CodeName128 Like 'ITEM_CH_TBLADE_%' Or CodeName128 Like 'ITEM_CH_BOW_%'
   
Or CodeName128 Like 'ITEM_EU_TSWORD_%' Or CodeName128 Like 'ITEM_EU_AXE_%'
   
Or CodeName128 Like 'ITEM_EU_DAGGER_%' Or CodeName128 Like 'ITEM_EU_CROSSBOW_%'
   
Or CodeName128 Like 'ITEM_EU_TSTAFF_%' Or CodeName128 Like 'ITEM_EU_HARP_%')
   
Begin
    Set 
@Slot = (Select Top 1 Slot From [SRO_VT_SHARD].[dbo].[_InventoryWhere ItemID and CharID = @CharID and Slot 12 Order by Slot)
    IF @
Slot Is Not Null
     Begin
      Update 
[SRO_VT_SHARD].[dbo].[_InventorySet ItemID 0 Where Slot and CharID = @CharID
      Update 
[SRO_VT_SHARD].[dbo].[_InventorySet ItemID = @ShieldID Where Slot = @Slot and CharID = @CharID
     End
   End
  End
End 



أرجوا انها تفيد حد ،،

شكراً ،،

Hamza FiGo 26-11-2015 09:42 PM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
Welcome back ^^

كالعادة موضوع رائع

بس ليا سؤال. الكيوري دا مش هيعمل لاج في السيرفر. لان الموضوع دا مهم فعلا وبتحصل عندي كذا مرة

لان لو بيشوف كل واحد دخل الجيم هيعمل لاج اعتقد !!

Mr.Rover 26-11-2015 09:59 PM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
شكرا على الكويرى الجميلة و استمر

Dangers SrO 27-11-2015 03:03 AM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
Welcome back again ramy
فعلاً موضوع جميل

GM_Jo 27-11-2015 04:50 AM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 



الله ينور عليك

MarOz 27-11-2015 03:14 PM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
عااااااش

HossamEvil 27-11-2015 03:17 PM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
:crazyeyes::crazyeyes:

gotsha 28-11-2015 12:15 AM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Hamza FiGo (المشاركة 5236836)
Welcome back ^^

كالعادة موضوع رائع

بس ليا سؤال. الكيوري دا مش هيعمل لاج في السيرفر. لان الموضوع دا مهم فعلا وبتحصل عندي كذا مرة

لان لو بيشوف كل واحد دخل الجيم هيعمل لاج اعتقد !!

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

Hero 28-11-2015 12:38 AM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
موضوع جميل
بس اعتقد انى محدش يقدر يعمل بج بطريقة دة
دة تبديل ID و كلام بيتعمل ف تابين ف ال SQL متجيش بسهولة دة !!

gotsha 28-11-2015 01:06 AM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
دة الفكرة الخاصه بيا وهيا انى اشيل الشيلد دة بعد ما يحطهاله فى الانفتورى وكمان يديله بلوك 24 ساعه عشان استخدم البج دة وباردوا فيه نوتك بتتبعتله والبوت بيكلمه انا مجربتش البروديسير لكن ظبط الكلام بتاعى عليه ولسا مجربتش لانى معنديش امكانيه تخلينى اجربه دلوقتى نخش على البروديسير :
كود:

IF @EventID in (4,6)
Begin
 declare @Charname4 nvarchar(max) = (select Charname16 from SRO_VT_SHARD.._Char where charid = @CharID)
 Declare @WeaponID Int , @ShieldID Int , @RefWeaponID Int , @Slot Int
 Set @WeaponID = (Select ItemID From [SRO_VT_SHARD].[dbo].[_Inventory] Where CharID = @CharID and Slot = 6)
 Set @ShieldID = (Select ItemID From [SRO_VT_SHARD].[dbo].[_Inventory] Where CharID = @CharID and Slot = 7)
 IF @ShieldID > 0 and @WeaponID > 0
  Begin
  Set @RefWeaponID = (Select RefItemID From [SRO_VT_SHARD].[dbo].[_Items] Where ID64 = @WeaponID)
  IF @RefWeaponID Is Not Null and @RefWeaponID in
  (Select ID From [SRO_VT_SHARD].[dbo].[_RefObjCommon] Where CodeName128 Like 'ITEM_CH_SPEAR_%'
  Or CodeName128 Like 'ITEM_CH_TBLADE_%' Or CodeName128 Like 'ITEM_CH_BOW_%'
  Or CodeName128 Like 'ITEM_EU_TSWORD_%' Or CodeName128 Like 'ITEM_EU_AXE_%'
  Or CodeName128 Like 'ITEM_EU_DAGGER_%' Or CodeName128 Like 'ITEM_EU_CROSSBOW_%'
  Or CodeName128 Like 'ITEM_EU_TSTAFF_%' Or CodeName128 Like 'ITEM_EU_HARP_%')
    Begin
        Set @Slot = (Select Top 1 Slot From [SRO_VT_SHARD].[dbo].[_Inventory] Where ItemID = 0 and CharID = @CharID and Slot > 12 Order by Slot)
    IF @Slot Is Not Null
        begin
          Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = 0 Where Slot = 7 and CharID = @CharID
      Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = 0 Where Slot = @Slot and CharID = @CharID
       
          begin
                                declare @5 smalldatetime , @6 smalldatetime
                                set @5  = getdate() Set @6 = dateadd(day,1,getdate());
                                exec SRO_VT_SHARD.._Block_Loren 'Ban',@Charname4,@1,@2
                                SELECT 'Banned'
                                begin
                          INSERT INTO SRO_VT_SHARD.dbo._Notification(Type, Content, Target,Executor,Notified) VALUES(3,'You are banned because you are cheater for 1day.',@Charname4,'BOT1',0)
                          INSERT INTO SRO_VT_SHARD.dbo._Notification(Type, Content, Target,Executor,Notified) VALUES(7,'Ban.',@Charname4,'BOT1',0)
                          INSERT INTO SRO_VT_SHARD.dbo._Notification(Type, Content, Target,Executor,Notified) VALUES(1,'['+@Charname4 +'] tried to break our system by using his/her double-weapon in the same time.',@Charname4,'BOT1',0)
                End
          End
      End
    End
    End
  End

هتحتاج تكريت التابل دة عندك :
كود:

USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_Block_Loren]    Script Date: 28/11/2015 12:05:19 ص ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[_Block_Loren]
@Type varchar(33),
@Charname varchar(max),
@BeginTime datetime,
@EndTime datetime
as
begin

declare @CharID int = (select CHarID from _Char where Charname16 = @Charname)
declare @UserJID int = (select userJID from _user where charID = @CharID)
DECLARE @ID VARCHAR (64)
DECLARE @Reason VARCHAR(128)
SET @ID = (Select STRuserID FROM SRO_VT_ACCOUNT..TB_User Where JID = @userJID)

        if (@Type in ('Ban','1'))
                begin

                SET @Reason    =    'Ban Reason Here'
                        if not exists (select UserJID from SRO_VT_ACCOUNT..[_Punishment] where UserJID = @UserJID)
                                begin
                                        INSERT SRO_VT_ACCOUNT..[_Punishment]([UserJID],[Type],[Executor],[Shard],[CharName],[CharInfo],[PosInfo] ,[Guide],[Description],[RaiseTime],[BlockStartTime],[BlockEndTime],[PunishTime],[Status])
                                                VALUES (@userJID,1,1,0,@CharName,1,1,@Reason,@Reason,@BeginTime,@BeginTime,@EndTime,@EndTime,0);

                ----------------------------------------------------------
                DECLARE @ReasonID INT
                SET @ReasonID =(Select SerialNo FROM SRO_VT_ACCOUNT.._Punishment Where UserJID = @userJID)
                        if @ReasonID is null
                                begin
                                        set @ReasonID = 15
                                end
                        else
                                begin
                                        set @ReasonID = @ReasonID
                                end
                ----------------------------------------------------------
                INSERT SRO_VT_ACCOUNT..[_BlockedUser]([UserJID],[UserID],[Type],[SerialNo],[TimeBegin],[TimeEnd])
                VALUES(@userJID,@ID,1,@ReasonID,@BeginTime,@EndTime);

                                end
                        else if exists (select UserJID from SRO_VT_ACCOUNT..[_Punishment] where UserJID = @UserJID)
                                begin
                                        Print 'You can not ban this User because he already banned'
                                end
                end
        else if (@Type in ('Unban','2'))
                begin
        if exists (select UserJID from SRO_VT_ACCOUNT.._BlockedUser where UserJID = @UserJID)
                begin
                        DELETE FROM SRO_VT_ACCOUNT..[_BlockedUser] WHERE UserJID = @UserJID
                        DELETE FROM SRO_VT_ACCOUNT..[_Punishment] WHERE UserJID = @UserJID
                end
        else if not exists (select UserJID from SRO_VT_ACCOUNT.._BlockedUser where UserJID = @UserJID)
                begin
                        print 'There is no User called '+ '[' + (convert(varchar(max),@ID)) + ']' + ' and Charname called [' + @Charname+']'
                end
                end
end


Hamza FiGo 28-11-2015 01:19 AM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
بس فعلا بيعمل لاج . ولاج غريب. انا جربته عندي عمل لاج . شيلته لقيت الاج راح اول ما شيلت البروسيدر علي طول

BLACK X™ 28-11-2015 11:33 AM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
موضوع جميل استمر

Dev. iLegend 29-11-2015 07:53 PM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
حمزة ممكن يكون عندك ال AddLogChar مهروس اوامر ،،
وبعدين يا حمزة انا مشغلك الكيوري دي خطوات زي مشرحتها في الموضوع فوق يعني مش هتشتغل على كل الناس اللى بتعمل لوجين ولوج اوف ،، بمعني فى اول خطوة اللى هيعمل لوجين او لوج اوف وهو ماسك شيلد وويبون يكمل ،،
التانية هي انه يشتغل بس لما يلاقي السلاح موجود في الاي دي اللى يكون twohand weapon يعني بمعني اصح عامل البج ،، لو مش عامله وماسك شيلد و one hand weapon هياخد اول خطوة ومش هيكمل ،،
انا شغالة عندي من غير لاج ،،

بالنسبة لـ Hero ،، يا باشا الموضوع مش موضوع تغيير فى جداول الموضوع موضوع بج بيحصل لما بتغير السلاح والشيلد بسرعة فى نص الضربات ،، او لما تعمل تليبورت لأماكن معينة ،، انا معرفش بيتعمل ازاي بس اللي عرفته انه بيديك كراش زي مقولت فى الموضوع ،، ودا فرصة انك ترجعله الشيلد فى الإنفينتوري ،،

بالنسبة لفكرة gotsha هي فكرة كويسة بس من غير Remove shield ،، وبعدين انت ليه تعمل Delete From dbo._Inventory ؟ انت كدا بتشيل السلوت خالص بمعني انه هياخد دي سي اول ميجي الماوس على السلوت الممسوحة دي ،،
عاوز تشيل أيتم اعمل ابديت ItemID = 0 Where Slot = @Slot
هو انك تديله auto banned فكرة جميلة ،،

Hamza FiGo 29-11-2015 07:59 PM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
اقتباس:

اول خطوة اللى هيعمل لوجين او لوج اوف وهو ماسك شيلد وويبون يكمل

هيا اول خطوة دي اللي بتعمل لاج شوية في اللوجن. لان اي حد بيعمل لوجن بيشيك عليه عامل الباج ولا لا. لو عامل يكمل مش عامل يوقف

وهو بيشيك . بيخلي الشخصية وهيا داخلة الجيم تتاخر شوية. الفكرة جميلة طبعا . واعتقد مع جهاز Dedicated محترم مش هيحس باللاج دا

Dev. iLegend 29-11-2015 08:02 PM

رد: .•°« كيوري بسيط لحل مشكلة إستخدام TwoHand Weapon + Shield فى نفس الوقت »°•.
 
وبالنسبة لبعض الداتا بيز اللى بيبقا حجمها كبر اوي من اللوج ،، ياريت صحاب السيرفرات كل شوية يدخلوا يشوفوا جدوال اللوج هيا ايه ويعملولها كلير عشان دا بيأثر أكيد على أداء السيرفر وميحاولش انه يحط كيوريهات كتير فى بروسيدور واحد ،، يوزعهم ويكريت بروسيدورات جديدة ويعملهم Execute by cases عشان متهرس فى بروسيدور واحد ويجبلك لاج ،، بس العامل الأساسي هو كبر حجم الداتا بيز من اللوج ،، والكلام دا عن تجربة ،،


الساعة الآن 05:53 AM.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.