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

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الاسئلة و الاستفسارات لعمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=226)
-   -   مشكلة في السيلك (https://silkroad4arab.com/vb/showthread.php?t=635197)

Mostafa Shaaban 24-06-2020 11:32 PM

رد: مشكلة في السيلك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة [GM]RAMBO (المشاركة 5380986)
بدال بيفضل يجيلك لما بتعمل تيليبورت بعد م بتموت يبقي المشكلة ف البروسيدر ممكن يكون فية حاجة غلط ف باقي التابات حاول تراجع علية كلة من الاول

دا كل البروسيدر انا مش شايف اي حاجه غلط فيه
USE [SRO_VT_SHARDLOG]
GO
/****** Object: StoredProcedure [dbo].[_AddLogChar] Script Date: 6/24/2020 10:31:40 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER procedure [dbo].[_AddLogChar]
@CharID int,
@EventID tinyint,
@Data1 int,
@Data2 int,
@strPos varchar(64),
@Desc varchar(128)
as


-- Main Declares
DECLARE @GM_Prim int =(select sec_primary from SRO_VT_ACCOUNT.dbo.TB_User as us inner join SRO_VT_SHARD.dbo._User as us2
on us.JID = us2.UserJID where CharID = @CharID)
DECLARE @CharName varchar(50) = (SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @CharID )

--------------
-----------------------------------------------------------------
---------------------------- Pvp & Job Event VORTEX-------------
-----------------------------------------------------------------
IF @EventID = '20'
BEGIN
DECLARE @KilledName VARCHAR(512) = @Desc
---------------------------- Pvp War Section -------------------------------------------
Declare @RunPvp varchar(100) = (Select Run From [SRO_VT_XEVENT].[dbo].[Settings_Basic] Where [Event] like 'Pvp war')
Declare @ServicePvp int = (Select [Service] From [SRO_VT_XEVENT].[dbo].[Settings_Basic] Where [Event] like 'Pvp war')
IF(@RunPvp='ON' And @ServicePvp = '1')
BEGIN
Exec [SRO_VT_XEVENT].[dbo].[EVENT_PVP_PROC] @CharID , @EventID , @KilledName , 3 , @Desc
END
---------------------------- Job War Section -------------------------------------------
Declare @RunJob varchar(100) = (Select Run From [SRO_VT_XEVENT].[dbo].[Settings_Basic] Where [Event] like 'Job war')
Declare @ServiceJob int = (Select [Service] From [SRO_VT_XEVENT].[dbo].[Settings_Basic] Where [Event] like 'Job war')
IF(@RunJob='ON' And @ServiceJob = '1')
BEGIN
Exec [SRO_VT_XEVENT].[dbo].[EVENT_JOB_PROC] @CharID , @EventID , @KilledName , 3 , @Desc
END
---------------------------- GM Kill Section -------------------------------------------
Declare @RunGM varchar(100) = (Select Run From [SRO_VT_XEVENT].[dbo].[Settings_Basic] Where [Event] like 'GM Kill')
Declare @ServiceGM int = (Select [Service] From [SRO_VT_XEVENT].[dbo].[Settings_Basic] Where [Event] like 'GM Kill')
IF(@RunGM ='ON' And @ServiceGM = '1')
BEGIN
Exec [SRO_VT_XEVENT].[dbo].[EVENT_GM_KILL_PROC] @CharID , @EventID , @KilledName , 3 , @Desc
END
END
---------------------------------------------------------------
-----------------Jop For Each Star
-----------------------------------------------------------------
IF (@EventID = 6)
BEGIN
EXEC [SRO_VT_SHARDLOG].[dbo].[_Job_Coin] @CharID
END
/* Job Top Count */
IF (@EventID = 9 OR @EventID = 11)
BEGIN
EXEC [SRO_VT_SHARDLOG].[dbo].[Top_Job_Count] @CharID
END

-- Job System
IF @EventID = '19'
BEGIN
-- Renew for the nex day
IF EXISTS (SELECT CharID FROM SRO_VT_XEVENT.dbo._JobDay WHERE isDat < GETDATE())
BEGIN
DELETE FROM SRO_VT_XEVENT.dbo._JobDay WHERE CharID = @CharID
DELETE FROM SRO_VT_XEVENT.DBO._JobNewSys WHERE KillerID = @CharID
END
IF EXISTS (SELECT *
FROM SRO_VT_SHARD.dbo._Char
WITH(NOLOCK) WHERE CharID = @CharID
AND CurLevel >= '90')

BEGIN

EXEC SRO_VT_XEVENT.dbo.[_JobNewJobS] @CharID,@Desc

END
END
---
--- Wanted System
if @EventID = '19' -- EventID Killing
BEGIN
IF (@Desc LIKE '%Trader, Neutral, no freebattle team%' -- Trader
OR @Desc LIKE '%Hunter, Neutral, no freebattle team%' -- Hunter
OR @Desc LIKE '%Robber, Neutral, no freebattle team%' -- Thief
) BEGIN

DECLARE @ReqLevel INT = 0
SELECT @KilledName = REPLACE(@KilledName, LEFT(@KilledName, CHARINDEX('(', @KilledName)), '')
SELECT @KilledName = REPLACE(@KilledName, RIGHT(@KilledName, CHARINDEX(')', REVERSE(@KilledName))), '')
SELECT @ReqLevel = CurLevel FROM [SRO_VT_SHARD].[dbo].[_Char] WHERE CharName16 = @KilledName


if @ReqLevel >= 90
BEGIN
Exec SRO_VT_XEVENT.dbo.[_Wanted] @CharID , @EventID , @KilledName
END
END
END



IF @EventID = '20' -- if dies
BEGIN
IF (@Desc LIKE '%Trader, Neutral, no freebattle team%' -- Trader
OR @Desc LIKE '%Hunter, Neutral, no freebattle team%' -- Hunter
OR @Desc LIKE '%Robber, Neutral, no freebattle team%' -- Thief
) BEGIN


UPDATE SRO_VT_XEVENT.dbo._RowKills SET Kills = '0' WHERE KillerID = @CharID


IF EXISTS (SELECT * FROM SRO_VT_SHARD.dbo._TimedJob WITH(NOLOCK) WHERE CharID = @CharID AND (
JobID = '33862' OR JobID BETWEEN '50021' AND '50024'))
BEGIN
DELETE FROM SRO_VT_SHARD.dbo._TimedJob WHERE CharID = @CharID AND (
JobID = '33862' OR JobID BETWEEN '50021' AND '50024')


-- MSG SEND
INSERT INTO SRO_VT_XEVENT.dbo._Chat ([send] ,[sendto],[Message],[date]) VALUES
('0',@CharName,'Your dead , wanted buff taked.',GETDATE())


END
END
END
----

/* Job Loggout Trader / Thief / Hunter */
IF @EventID = '6'
BEGIN
EXEC SRO_VT_XEVENT.dbo._JobLogOut @CharID
END

/* DailyReward System */
IF @EventID = '4'
BEGIN
EXEC SRO_VT_XEVENT.dbo.[_DailyRew] @CharID
END


----------------------------

/*Extension*/--> by Yui

IF not exists (SELECT CharID FROM _OnlineOffline WHERE CharID = @CharID)
BEGIN
INSERT INTO _OnlineOffline (CharID, Charname, [Status], [Date], [Minutes], [tMinutes], eSilk, mOnline, [Silk/Hour], [stillOnline@])
VALUES (
@CharID,
(SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @CharID),
'OnHold',
GETDATE(),
0,0,0,
NULL,(SELECT DefaultSilk FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates'),
NULL
);
END

IF (@EventID = 4 OR @EventID = 6)
BEGIN

IF (@EventID = 6 AND ((SELECT [Status] FROM _OnlineOffline WHERE CharID = @CharID) like 'OnHold'))
BEGIN
UPDATE _OnlineOffline
SET [Status] = 'Offline'
WHERE CharID = @CharID
END

IF (@EventID = 6 AND ((SELECT [Status] FROM _OnlineOffline WHERE CharID = @CharID) like 'Online'))
BEGIN
UPDATE _OnlineOffline
SET
[Status] = 'Offline',
[Minutes] = [Minutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
[tMinutes] = [tMinutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
[mOnline] = NULL,
[stillOnline@] = NULL
WHERE CharID = @CharID
END

IF (@EventID = 4)
BEGIN
UPDATE _OnlineOffline
SET
[Status] = 'Online',
[Date] = GETDATE(),
[stillOnline@] = GETDATE()
WHERE CharID = @CharID
END
END


UPDATE _OnlineOffline
SET
[mOnline] = CAST((DATEDIFF(MINUTE,[Date],GETDATE()))as varchar(max)) + ' minute(s) Online',
[Minutes] = [Minutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
[tMinutes] = [tMinutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
[stillOnline@] = GETDATE()
WHERE [Status] like 'Online'

/*Silk/Hour basic calc*/
IF ((SELECT [tMinutes] from _OnlineOffline WHERE CharID = @CharID) >= (SELECT [Step1Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements'))
BEGIN
Declare @sph int;
exec @sph = [_GetSilkperHour] @CharID
UPDATE _OnlineOffline SET [Silk/Hour] = @sph WHERE CharID = @CharID
END
/*!Silk/Hour basic calc*/

IF (((SELECT NextDate FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next') IS NULL))
BEGIN
DECLARE @FirstDate datetime, @Today datetime = GETDATE(), @FirstCharID int;

exec @FirstCharID = SRO_VT_SHARD.dbo._RandomPlayerID
exec SRO_VT_SHARD.dbo._GetRandomTime @Today, @FirstDate OUTPUT

UPDATE [_RandomPlayer&Date]
SET
NextDate = @FirstDate,
RefreshedDate = GETDATE(),
CharID = @FirstCharID,
Charname = (SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @FirstCharID)
WHERE [Desc] like 'Next';
END

IF ((SELECT NextDate FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next') <= GETDATE())
BEGIN
UPDATE _OnlineOffline
SET [Silk/Hour] = (SELECT RewardSilk FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
WHERE CharID = (SELECT CharID FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next');
Declare
@CurSilkperHour int,
@OldCharID int = (SELECT CharID FROM [_RandomPlayer&Date] WHERE [Desc] like 'Current');
IF (@OldCharID IS NOT NULL)
BEGIN
exec @CurSilkperHour = _GetSilkperHour @OldCharID
UPDATE _OnlineOffline
SET [Silk/Hour] = @CurSilkperHour
WHERE CharID = @OldCharID;
END
UPDATE [_RandomPlayer&Date]
SET
NextDate = NULL,
RefreshedDate = GETDATE(),
CharID = (SELECT CharID FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next'),
Charname = (SELECT Charname FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next')
WHERE [Desc] like 'Current'

/*new Random Time of Today+1*/
DECLARE @NextDate datetime, @Tomorrow datetime = GETDATE()+1, @NewCharID int;

exec @NewCharID = SRO_VT_SHARD.dbo._RandomPlayerID
exec SRO_VT_SHARD.dbo._GetRandomTime @Tomorrow, @NextDate OUTPUT

UPDATE [_RandomPlayer&Date]
SET
NextDate = @NextDate,
RefreshedDate = GETDATE(),
CharID = @NewCharID,
Charname = (SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @NewCharID)
WHERE [Desc] like 'Next'
/*!new Random...*/
END

/*Calculation of the silk amount*/
Declare @tMinutes bigint = (SELECT [Minutes] from _OnlineOffline WHERE CharID = @CharID), @Silk int;

IF (@tMinutes >= 60)
BEGIN
SET @Silk = CAST(((SELECT [Minutes] FROM _OnlineOffline WHERE CharID = @CharID) / 60) as int)
UPDATE _OnlineOffline
SET [Minutes] = [Minutes] % 60
WHERE CharID = @CharID

IF exists (SELECT [WEEKDAYS] FROM [_Silk/Hour-Config] WHERE [WEEKDAYS] like DATENAME(WEEKDAY, GETDATE()))
BEGIN
UPDATE _OnlineOffline
SET [eSilk] = [eSilk] + (@Silk*[Silk/Hour])
WHERE CharID = @CharID

exec SRO_VT_ACCOUNT.dbo._extraSilk @CharID, @Silk
END
END
/*Yui*/

/*!Extension*/

IF (@EventID = 6)
BEGIN
UPDATE [SRO_VT_SHARD].[dbo]._Char
set ItemPoints = (
SELECT
ISNULL((sum(ISNULL(Binding.nOptValue, 0)) + sum(ISNULL(OptLevel, 0))), 0) as ItemPoints
FROM [SRO_VT_SHARD].[dbo].[_Inventory] as inventory WITH (NOLOCK)
join [SRO_VT_SHARD].[dbo]._Items as Items WITH (NOLOCK) on Items.ID64 = inventory.ItemID
join [SRO_VT_SHARD].[dbo]._RefObjCommon as Common on Items.RefItemId = Common.ID
left join [SRO_VT_SHARD].[dbo]._BindingOptionWithItem as Binding WITH (NOLOCK) on Binding.nItemDBID = Items.ID64
where
inventory.slot < 13 and
inventory.slot != 8 and
inventory.slot != 7 and
inventory.CharID = _Char.CharID
) WHERE _Char.CharID = @CharID

Declare @GuildID int;
SELECT @GuildID = GuildID FROM [SRO_VT_SHARD].[dbo]._Char WITH (NOLOCK) WHERE _Char.CharID = @CharID

IF (@GuildID > 0)
BEGIN
UPDATE [SRO_VT_SHARD].[dbo]._Guild
set ItemPoints = (
SELECT
SUM(Char.ItemPoints) as ItemPoints
FROM [SRO_VT_SHARD].[dbo]._Char as Char WITH (NOLOCK)
where
Char.GuildID = _Guild.ID
) WHERE _Guild.ID = @GuildID
END
End

Mostafa Shaaban 25-06-2020 01:05 AM

رد: مشكلة في السيلك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Mohamed Hitler (المشاركة 5380917)
وريني Producer السيستم

??

RAMBO 25-06-2020 01:33 AM

رد: مشكلة في السيلك
 
طيب خش ع الـ table دة SK_SilkChange_BY_Web لو لاقيت فية حاجة امسح كل الي فية و اعمل ريستارت للسيرفر فايلز و جرب

RAMBO 25-06-2020 07:35 PM

رد: مشكلة في السيلك
 
عملت افضل جواب بس ماقولتش المشكلة اتحلت ولا لا لو اتحلت ياريت تقول عشان نقفل الموضوع

Mostafa Shaaban 25-06-2020 09:03 PM

رد: مشكلة في السيلك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة RAMBO (المشاركة 5381023)
عملت افضل جواب بس ماقولتش المشكلة اتحلت ولا لا لو اتحلت ياريت تقول عشان نقفل الموضوع

عملت اللي حضرتك قولت عليه وعملت clean for All Database اشتغلت تمام
الف شكر :]

RAMBO 25-06-2020 09:14 PM

رد: مشكلة في السيلك
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Mostafa Shaaban (المشاركة 5381029)
عملت اللي حضرتك قولت عليه وعملت clean for All Database اشتغلت تمام
الف شكر :]

العفو و بالتوفيق ان شاء الله

##


الساعة الآن 08:15 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.