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

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=289)
-   -   New silk System auto free Silk/Hour based on the Online time (https://silkroad4arab.com/vb/showthread.php?t=461170)

Yui 02-11-2012 09:22 PM

New silk System auto free Silk/Hour based on the Online time
 
Hello today i will add new autofree silk system

for silkroad4arab By Yui

Use This Query

كود PHP:

USE SRO_VT_SHARDLOG

BEGIN 
TRY
    
DROP TABLE [_Silk/Hour-Config]
END TRY
BEGIN CATCH END CATCH;

CREATE TABLE [_Silk/Hour-Config] (
    [
Descvarchar(maxNULL,
    [
DefaultSilkint NOT NULL,
    [
Step1Silkint NOT NULL,
    [
Step2Silkint NOT NULL,
    [
Step3Silkint NOT NULL,
    [
RewardSilkint NOT NULL,
    [
WEEKDAYSvarchar(15NULL
    
    CHECK 
(
            [
WEEKDAYSlike 'Monday' OR
            [
WEEKDAYSlike 'Tuesday' OR
            [
WEEKDAYSlike 'Wednesday' OR
            [
WEEKDAYSlike 'Thursday' OR
            [
WEEKDAYSlike 'Friday' OR
            [
WEEKDAYSlike 'Saturday' OR
            [
WEEKDAYSlike 'Sunday'
            
)
);

INSERT INTO [_Silk/Hour-ConfigSELECT 'Rates'12345NULL
INSERT INTO 
[_Silk/Hour-ConfigSELECT 'Requirements'0, (60*24*7), (60*24*30), (60*24*365), 0NULL
INSERT INTO 
[_Silk/Hour-ConfigSELECT 'allowed Day #1'00000'Monday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #2'00000'Tuesday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #3'00000'Wednesday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #4'00000'Thursday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #5'00000'Friday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #6'00000'Saturday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #7'00000'Sunday' 

كود PHP:

USE SRO_VT_SHARDLOG

BEGIN 
TRY
    
DROP TABLE _OnlineOffline
END 
TRY
BEGIN CATCH END CATCH;

CREATE TABLE _OnlineOffline
(
[
No.] int PRIMARY KEY IDENTITY (1,1),
[
CharIDint NOT NULL,
[
Charnamevarchar(64NOT NULL,
[
Statusvarchar(20NOT NULL,
[
Datedatetime NOT NULL,
[
Minutesbigint,
[
tMinutesbigint,
[
eSilkint,
[
mOnlinevarchar(maxNULL,
[
Silk/Hourint NOT NULL,
[
stillOnline@] datetime NULL
);

INSERT INTO _OnlineOffline 
    SELECT CharID
CharName16'OnHold'GETDATE(), 000'0 minute(s)', (SELECT DefaultSilk FROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates'), NULL
    FROM SRO_VT_SHARD
.dbo._Char ORDER BY CharID 

كود PHP:

USE SRO_VT_SHARDLOG

BEGIN 
TRY
    
DROP TABLE [_RandomPlayer&Date]
END TRY
BEGIN CATCH END CATCH;

CREATE TABLE [_RandomPlayer&Date] (
    [
NextDatedatetime DEFAULT NULL,
    [
RefreshedDatedatetime,
    [
CharIDint,
    [
Charnamevarchar(64),
    [
Descvarchar(20NULL
);

INSERT INTO [_RandomPlayer&DateSELECT NULL,NULL,NULL,NULL,'Current'
INSERT INTO [_RandomPlayer&DateSELECT NULL,NULL,NULL,NULL,'Next' 

كود PHP:

USE SRO_VT_SHARD
GO

CREATE PROCEDURE _GetRandomTime 
/*by Yui*/

@TodaysDate datetime,
@
EndDate datetime OUTPUT

AS BEGIN

SET 
@EndDate GETDATE();

WHILE (@
EndDate <= GETDATE())
    
BEGIN
        
DECLARE 
                @
BasicDate    varchar(12) = CONVERT(VARCHAR(10), @TodaysDate120),
                @
Hour        varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*23,0))),
                @
Minutes    varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*59,0))),
                @
Seconds    varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*59,0)))

        
SET @EndDate CONVERT(DATETIME,@BasicDate ' ' + @Hour ':' + @Minutes ':' + @Seconds)
    
END

END 

كود PHP:

USE [SRO_VT_SHARD]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE 
[dbo].[_RandomPlayerID/*by Yui*/

as

Declare @
Random int 1, @Bool bit 0;

WHILE (@
Bool 0)
    
BEGIN
        SET 
@Random ROUND(RAND()*(SELECT MAX(CharIDFROM SRO_VT_SHARD.dbo._Char),0)
        IF 
exists (SELECT CharID FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @Random)
            
BEGIN
                SET 
@Bool /*true*/
            
END
    END
    
return @Random 

كود PHP:

USE [SRO_VT_ACCOUNT]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE 
[dbo].[_extraSilk/*by Yui*/

    
@CharID int,
    @
Silk int

as

Declare @
JID int, @Multiplier int = (SELECT [Silk/HourFROM SRO_VT_SHARDLOG.dbo._OnlineOffline WHERE CharID = @CharID);

SET @JID = (
            
SELECT usert.UserJID FROM SRO_VT_SHARD.dbo._User as usert
            JOIN SRO_VT_SHARD
.dbo._Char as chart on usert.CharID chart.CharID
            WHERE chart
.CharID = @CharID
            
);
            
    IF 
not exists (SELECT JID FROM SK_Silk WHERE JID = @JID)
        
BEGIN
            INSERT INTO SK_Silk SELECT 
@JID000
        END
            
    UPDATE SK_Silk
    SET silk_own 
silk_own + (@Silk*@Multiplier)
    
WHERE JID = @JID 

كود PHP:

USE [SRO_VT_SHARDLOG]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE 
[dbo].[_GetSilkperHour/*by Yui*/

@CharID int

as

Declare @
totalMinutes bigint = (SELECT tMinutes FROM _OnlineOffline WHERE CharID = @CharID), @Silkoutput int;

/*Calculating the Silk/Hour-Amount related to the Online Time*/
SET @Silkoutput 
CASE
    
WHEN @totalMinutes >= (SELECT [Step3SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Requirements'
        
THEN (SELECT [Step3SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
    
WHEN @totalMinutes >= (SELECT [Step2SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Requirements'
        
THEN (SELECT [Step2SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
    
WHEN @totalMinutes >= (SELECT [Step1SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Requirements'
        
THEN (SELECT [Step1SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
    ELSE (
SELECT DefaultSilk FROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
END

RETURN @Silkoutput 

كود PHP:

USE [SRO_VT_SHARDLOG]
GO

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

IF    ( -- 
Skips over the unnecessary Records
        
(@EventID != 11) AND 
        (@
EventID NOT BETWEEN 21 AND 27) AND
        (@
EventID NOT BETWEEN 200 AND 202) AND
        (@
EventID NOT BETWEEN 204 AND 206) AND 
        (@
EventID != 210) AND (@EventID != 214) AND (@EventID != 244)
    )
BEGIN

    
declare @len_pos     int
    
declare @len_desc    int
    set 
@len_pos len(@strPos)
    
set @len_desc len(@Desc)
    if (@
len_pos and @len_desc 0)
    
begin    
        insert _LogEventChar values
(@CharIDGetDate(), @EventID, @Data1, @Data2, @strPos, @Desc)    
    
end
    
else if (@len_pos and @len_desc 0)
    
begin     
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2EventPosvalues(@CharIDGetDate(), @EventID, @Data1, @Data2, @strPos)
    
end
    
else if (@len_pos and @len_desc 0)
    
begin     
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2strDescvalues(@CharIDGetDate(), @EventID, @Data1, @Data2, @Desc)
    
end
    
else
    
begin
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2values(@CharIDGetDate(), @EventID, @Data1, @Data2)
    
end
    
/*Extension*/--> by Yui

IF not exists (SELECT CharID FROM _OnlineOffline WHERE CharID = @CharID)
    
BEGIN
        INSERT INTO _OnlineOffline 
(CharIDCharname, [Status], [Date], [Minutes], [tMinutes], eSilkmOnline, [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-ConfigWHERE [Desclike 'Rates'),
                
NULL
                
);
    
END

IF (@EventID OR @EventID 6)
    
BEGIN

    
IF (@EventID AND ((SELECT [StatusFROM _OnlineOffline WHERE CharID = @CharIDlike 'OnHold'))
        
BEGIN
            UPDATE _OnlineOffline
            SET 
[Status] = 'Offline'
            
WHERE CharID = @CharID
        END
        
    
IF (@EventID AND ((SELECT [StatusFROM _OnlineOffline WHERE CharID = @CharIDlike '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 [Statuslike 'Online'

/*Silk/Hour basic calc*/
IF ((SELECT [tMinutesfrom _OnlineOffline WHERE CharID = @CharID) >= (SELECT [Step1SilkFROM [_Silk/Hour-ConfigWHERE [Desclike '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&DateWHERE [Desclike '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 [Desclike 'Next';
    
END
    
IF ((SELECT NextDate FROM [_RandomPlayer&DateWHERE [Desclike 'Next') <= GETDATE())
    
BEGIN
        UPDATE _OnlineOffline
            SET 
[Silk/Hour] = (SELECT RewardSilk FROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
            
WHERE CharID = (SELECT CharID FROM [_RandomPlayer&DateWHERE [Desclike 'Next');
        Declare
                @
CurSilkperHour int
                @
OldCharID int = (SELECT CharID FROM [_RandomPlayer&DateWHERE [Desclike '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&DateWHERE [Desclike 'Next'),
                
Charname = (SELECT Charname FROM [_RandomPlayer&DateWHERE [Desclike 'Next')
            
WHERE [Desclike '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 [Desclike 'Next'
        
/*!new Random...*/
    
END
    
    
/*Calculation of the silk amount*/
    
Declare @tMinutes bigint = (SELECT [Minutesfrom _OnlineOffline WHERE CharID = @CharID), @Silk int;
    
        IF (@
tMinutes >= 60)
            
BEGIN
                SET 
@Silk CAST(((SELECT [MinutesFROM _OnlineOffline WHERE CharID = @CharID) / 60) as int)
                
UPDATE _OnlineOffline
                SET 
[Minutes] = [Minutes] % 60
                WHERE CharID 
= @CharID
                
            
IF exists (SELECT [WEEKDAYSFROM [_Silk/Hour-ConfigWHERE [WEEKDAYSlike DATENAME(WEEKDAYGETDATE()))
                
BEGIN
                    UPDATE _OnlineOffline
                    SET 
[eSilk] = [eSilk] + (@Silk*[Silk/Hour])
                    
WHERE CharID = @CharID
                    
                    exec SRO_VT_ACCOUNT
.dbo._extraSilk @CharID, @Silk
                END
            END
    
/*Yui*/
    
/*!Extension*/

END -- !Skipping 


lordmax11 02-11-2012 09:44 PM

شكرا يا Yui :groupwave:

™Anas™ 02-11-2012 09:48 PM

تسلم إيدك ياباشا
موضوع رائع جدا
إستمر

ღ♥CarLeTo♥ღ 02-11-2012 09:48 PM

Nice Yui

JanGanSRO 02-11-2012 09:59 PM

طب ححدد المواعيد منين بالظبط ان كل اد ايه يتحط الفرى سيلك و حيتحط سيلك اد ايه بالظبط

دى احددها منين بالظبط

™Anas™ 02-11-2012 10:08 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة JanGanSRO (المشاركة 4404952)
طب ححدد المواعيد منين بالظبط ان كل اد ايه يتحط الفرى سيلك و حيتحط سيلك اد ايه بالظبط

دى احددها منين بالظبط

+1

CriZ 02-11-2012 10:48 PM

طول عمرك فنان
وياريت اشوفك مرة واحدة
تكتب بلعربى :wavetowel2:

Arafa 02-11-2012 10:48 PM

Awesome Work Yui

hosam1eg 02-11-2012 10:57 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة JanGanSRO (المشاركة 4404952)
طب ححدد المواعيد منين بالظبط ان كل اد ايه يتحط الفرى سيلك و حيتحط سيلك اد ايه بالظبط

دى احددها منين بالظبط

+3

Yui 03-11-2012 12:43 AM

Open SQL go SRO_VT_SHARDLOG >>> Tables>>>>>_Silk/Hour-Config


http://im30.gulfup.com/W5ff1.png

™Anas™ 03-11-2012 12:47 AM

اقتباس:

المشاركة الأصلية كتبت بواسطة yui (المشاركة 4405197)
open sql go sro_vt_shardlog >>> tables>>>>>_silk/hour-config


http://im30.gulfup.com/w5ff1.png

تمام يا حبي تسلم
والوقت بالثانيه وللا ؟

Yui 03-11-2012 12:54 AM

اقتباس:

المشاركة الأصلية كتبت بواسطة ™Anas™ (المشاركة 4405205)
تمام يا حبي تسلم
والوقت بالثانيه وللا ؟

Requirements>>>ments=mints

™Anas™ 03-11-2012 12:57 AM

اقتباس:

المشاركة الأصلية كتبت بواسطة yui (المشاركة 4405211)
requirements>>>ments=mints

تسلم بجد
بس أمال لو بسيطه كده إيه كل الكويري دي ؟ ^_^

Yui 03-11-2012 01:03 AM

اقتباس:

المشاركة الأصلية كتبت بواسطة ™Anas™ (المشاركة 4405212)
تسلم بجد
بس أمال لو بسيطه كده إيه كل الكويري دي ؟ ^_^

This Not Just Query This New Silk system

●♥ Marwan1337 ♥● 03-11-2012 01:03 AM

Special Thanks Yui


الساعة الآن 01:25 PM.

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