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

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=289)
-   -   How To Create Temporary ITems with time Easy Way -- عمل أيتم مؤقت في السيرفر (https://silkroad4arab.com/vb/showthread.php?t=638989)

محمد منتصر 15-10-2023 12:33 AM

How To Create Temporary ITems with time Easy Way -- عمل أيتم مؤقت في السيرفر
 
بسم الله والصلاة والسلام علي رسول الله
بقالي كتير اوي منزلتش حاجة هنا فكنت حابب أشارككم السيستم الصغير ده أكيد فيه ناس محتاجه حاجة زي كده
فيديو توضيحي للسيستم
الفيديو : https://www.youtube.com/watch?v=nrxKXP04CqA
الأول هشرحلكم هو عبارة عن أيه
1- ده سيستم وظيفته أنه بيسجل الأيتم اللي انت بتحددها في ال npc لما حد يشتريها ويضيفها في تابل بوقت الشراء بتاعتها طيب ايه الفايدة ؟
فايدته انك لما بتيجي بعد كده تحدد في السيستم نفسه الوقت بقي علي التابل ده بيبدأ يجمع كل الأيتم اللي عدي عليها هنقول مثلا 5 ايام زي ما انا عامل وهيمسح كل الايتم دي من البلاير مش هسيبيها معاه وبكده الأيتم بقي مؤقت بوقت مش دايم معاه ممكن انت تضيف ايتم جديده مثلا بدامج قليل عن الطبيعية وتحطها للبلاير الجديدة تلعب بيها وتخليها يوم مثلا وتختفي وممكن تحدد من الفلتر بعد كده مثلا انه يضيف الشخص اللي اشتري ايتم في تابل ولو بعد كده جه يشتري يعمل check علي التابل ده لو لقيه موجود مش هيبيع معاه وبكده انت هتخليه hwid/limited
2- ممكن تشغل السيستم ده في إنك بعد كده تنزل أيتم جديد او دجري جديد للبلاير يجربوه وبعدين تحدده في التابل الموجود ومجرد ما تسجل ال id بتاع الايتم طبيعي هيتمسح اول ما يعدي عليه الوقت بتاعه
3- ممكن مثلا تعملها ايفنت علي جوائز ويكون الريورد ايتم مؤقت من ده مثلا ( ملحوظة السيستم عامله يشتغل علي البيع والشراء بس يعني لما تشتري من الnpc هيسجل غير كده لو نزلته من الكونسول مش هيتلغي تاني )
فأنت ممكن تعدل بقي يسجل امتي زي ما تحب او تضيف الايتم ف التابل يدوي وتديه للناس في ايفنتات
4- السيستم بيمسح الأيتم من كل مكان بيعمل تتبع للأيتم مش للأكونت يعني حتي لو اتنقل من أكونت للتاني فبرده هيتمسح عادي مفيش مشكلة ( pet/storage/storge guild / inventory) هيتمسح من كل دول مش هيبقي موجود فمتقلقش

نيجي بقي للشغل ركزوا معايا
أول حاجة هتعملها هتروح تعمل Create للتابل ده

كود:

USE YourDatabaseName
GO

/****** Object:  Table [dbo].[Temp_itemID]  #Mohamed_Montaser #T0P  Script Date: 10/14/2023 11:32:34 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Temp_itemID](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [ItemID] [int] NOT NULL,
        [CodeName] [varchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO


بعد ما عملنا التابل هنروح علي الداتا بيز نجيب الايتم اللي احنا عايزين نشغل السيستم ده عليها ممكن تستخدم الكويري ده هينجز معاه
كود:

SELECT ID,CodeName128 FROM SRO_VT_SHARD.._RefObjCommon WHERE CodeName128 LIKE '%CODENAME%'

بعد كده خد الايتم اللي طلعتها وحطها ف التابل الأولاني اللي فوق ده لحد هنا الدنيا تمام زي الفل

نيجي علي الجزء التاني بقي التسجيل
هتروح علي ال sql وهتعمل Create للتابل ده

كود:

USE YourDatabaseName
GO

/****** Object:  Table [dbo].[_Temporary_items]  #Mohamed_Montaser #T0P Script Date: 10/14/2023 11:31:18 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[_Temporary_items](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [CharName] [varchar](30) NOT NULL,
        [CharID] [int] NOT NULL,
        [UserJid] [int] NOT NULL,
        [ID64] [int] NOT NULL,
        [ItemID] [int] NOT NULL,
        [ItemSerial] [bigint] NOT NULL,
        [ItemCodeName] [varchar](max) NOT NULL,
        [ShopCodeName] [varchar](max) NULL,
        [Timer] [datetime] NOT NULL,
        [Stats] [varchar](50) NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO


تمام لحد هنا عملنا الجدول اللي هنسجل فيه بيانات الايتم طبعا انا عامل الجدول ده هيسجل بيانات الايتم بكل تفاصيله حتي ال npc اللي هتشتري منه والtab رقم كام وبيانات الاكونت والuserjid وكل التفاصيل اللي هتحتاجها
:Emoji20:

بعد ما عملت Create للتابل ده ناقص اخر حاجة وهي السيستم نفسه بقي هتروح علي SRO_VT_SHARDLOG/AddLogItem

وهتضيف السيستم في اخر البرسيدور زي ما هو كده

كود:

---- RECORD TEMPORARY ITEMS  #mohamed_montaser

IF (@Operation in (32,35))

DECLARE @TimerWeapon INT = -5  -- Time Down to remove items per days  #T0P

BEGIN

        IF (@ItemRefID IN (SELECT ItemID from TOOL_SYSTEM..Temp_itemID))

        BEGIN


                ---//////
                DECLARE  @CharNameTemp varchar (35), @ID64Temp INT , @itemCodeNameTemp varchar (Max) ,@NPCTEMP VARCHAR (MAX), @UserTemp INT,@CharNameTempMsg Varchar (35)
                SET @CharNameTemp = (SELECT CharName16 FROM SRO_VT_SHARD.._Char WHERE CharID = @CharID )
                SET @ID64Temp = (SELECT ID64 FROM SRO_VT_SHARD.._Items WHERE Serial64 = @ItemSerial )
                SET @itemCodeNameTemp = ( SELECT CodeName128 From SRO_VT_SHARD.._RefObjCommon where ID = @ItemRefID)
                SET @NPCTEMP  = (SELECT RefTabCodeName FROM SRO_VT_SHARD.._RefShopGoods WHERE RefPackageItemCodeName = 'PACKAGE_' +@itemCodeNameTemp)
                SET @UserTemp = ( SELECT UserJID FROM SRO_VT_SHARD.._User WHERE CharID = @CharID )
                SET @CharNameTempMsg = (SELECT CharName16 FROM SRO_VT_SHARD.._Char WHERE CharID = @CharID )

                --DECLARE @MgsDetalis VARCHAR (MAX) = 'Hello Dear ['+@CharNameTemp+'] YOUR CharID Is ['+CONVERT (VARCHAR,@CharID)+'] ITEM ID64 IS ['+CONVERT (VARCHAR,@ID64Temp)+'] And Item Serial is ['+CONVERT (VARCHAR,@ItemSerial)+'] AND ItemID is ['+CONVERT (VARCHAR,@ItemRefID)+'] And Item CodeName Is ['+@itemCodeNameTemp+'] The Time is '+ CONVERT(VARCHAR, GETDATE(), 120)
                --INSERT INTO ZOLA_VT_FILTER.._AutoNotice VALUES (@MgsDetalis,@CharNameTemp,0,GETDATE())
                INSERT INTO TOOL_SYSTEM.._Temporary_items  VALUES (@CharNameTemp,@CharID,@UserTemp,@ID64Temp,@ItemRefID,@ItemSerial,@itemCodeNameTemp,@NPCTEMP,GETDATE(),'ADDED')

        END
                -- Check if items need to be removed based on the timer
      IF (SELECT COUNT(*) FROM TOOL_SYSTEM.._Temporary_items WHERE Timer < DATEADD(DAY, @TimerWeapon, GETDATE())) > 0

        BEGIN
                        UPDATE inv  -- remove from inventory
                        SET inv.ItemID = 0
                        FROM SRO_VT_SHARD.._Inventory AS inv
                        INNER JOIN SRO_VT_SHARD.._Items AS itm ON inv.ItemID = itm.ID64
                        INNER JOIN TOOL_SYSTEM.._Temporary_items AS temp ON itm.Serial64 = temp.ItemSerial
                        WHERE temp.Timer < DATEADD(DAY, @TimerWeapon, GETDATE());

                        UPDATE Chest  ---- remove from Storage
                        SET Chest.ItemID = 0
                        FROM SRO_VT_SHARD.._Chest AS Chest
                        INNER JOIN SRO_VT_SHARD.._Items AS I ON Chest.ItemID = I.ID64
                        INNER JOIN TOOL_SYSTEM.._Temporary_items AS temp ON i.Serial64 = temp.ItemSerial
                        WHERE temp.Timer < DATEADD(DAY, @TimerWeapon, GETDATE());

                        UPDATE PET  -- remove from pet
                        SET PET.ItemID = 0
                        FROM SRO_VT_SHARD.._InvCOS AS PET
                        INNER JOIN SRO_VT_SHARD.._Items AS I ON PET.ItemID = I.ID64
                        INNER JOIN TOOL_SYSTEM.._Temporary_items AS temp ON i.Serial64 = temp.ItemSerial
                        WHERE temp.Timer < DATEADD(DAY, @TimerWeapon, GETDATE());

                        UPDATE G
                        SET G.ItemID = 0 -- remove from storage guild
                        FROM SRO_VT_SHARD.._GuildChest AS G
                        INNER JOIN SRO_VT_SHARD.._Items AS I ON G.ItemID = I.ID64
                        INNER JOIN TOOL_SYSTEM.._Temporary_items AS temp ON i.Serial64 = temp.ItemSerial
                        WHERE temp.Timer < DATEADD(DAY, @TimerWeapon, GETDATE());

                        UPDATE temp
                        SET temp.Stats = 'DELETED'
                        FROM TOOL_SYSTEM.._Temporary_items AS temp
                        INNER JOIN SRO_VT_SHARD.._Items AS itm ON temp.ItemSerial = itm.Serial64
                        WHERE temp.Timer < DATEADD(DAY, @TimerWeapon, GETDATE());
        END

END


وبكده نكون خلصنا شرح السيتسم وكل الحاجات اللي محتاجها فيه
ملحوظة تاني : الرقم اللي بالاحمر ده عدد الأيام دايما بالسالب انت غيرها بقي زي ما تحب الايتم يقعد كام يوم انا عامله يقعد 5 ايام شوف انت اللي يعجبك بقي

كلمة شكر تكفي :Emoji15::Emoji12:

Last_Fiddler 01-01-2024 06:34 PM

رد: How To Create Temporary ITems with time Easy Way -- عمل أيتم مؤقت في السيرفر
 
تسلم ايدك فكره جميله
بس في ناس هتخد وبي وبست بس وطبعا المفروض يضيفو الايتم في التاب وانت كاتب بس في ناس مش هتعرف النطه دي ممكن تضيفلهم اي نوع ايتم ويكررو شبهه
وتقبل رايي:Emoji2:

محمد منتصر 14-04-2024 01:11 AM

رد: How To Create Temporary ITems with time Easy Way -- عمل أيتم مؤقت في السيرفر
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Last_Fiddler (المشاركة 5391168)
تسلم ايدك فكره جميله
بس في ناس هتخد وبي وبست بس وطبعا المفروض يضيفو الايتم في التاب وانت كاتب بس في ناس مش هتعرف النطه دي ممكن تضيفلهم اي نوع ايتم ويكررو شبهه
وتقبل رايي:Emoji2:

حبيبي ان شاء الله


الساعة الآن 09:47 AM.

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