تسجيل الدخول دائمآ
ط·آ§ط¸â€‍ط·آ¥ط·آ¹ط¸â€‍ط·آ§ط¸â€ ط·آ§ط·ع¾
قديم 02-11-2012, 09:22 PM   #1

Yui
عضو فعال





• الانـتـسـاب » Sep 2012
• رقـم العـضـويـة » 105332
• المشـــاركـات » 319
• الـدولـة »
• الـهـوايـة » Hex,PHP,C#,SQL
• اسـم الـسـيـرفـر » No Server
• الـجـنـس » Male
• نقـاط التقييم » 43
Yui صـاعـد

Yui غير متواجد حالياً


إرسال رسالة عبر Yahoo إلى Yui

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] (
    [
Desc] varchar(max) NULL,
    [
DefaultSilk] int NOT NULL,
    [
Step1Silk] int NOT NULL,
    [
Step2Silk] int NOT NULL,
    [
Step3Silk] int NOT NULL,
    [
RewardSilk] int NOT NULL,
    [
WEEKDAYS] varchar(15) NULL
    
    CHECK 
(
            [
WEEKDAYS] like 'Monday' OR
            [
WEEKDAYS] like 'Tuesday' OR
            [
WEEKDAYS] like 'Wednesday' OR
            [
WEEKDAYS] like 'Thursday' OR
            [
WEEKDAYS] like 'Friday' OR
            [
WEEKDAYS] like 'Saturday' OR
            [
WEEKDAYS] like 'Sunday'
            
)
);

INSERT INTO [_Silk/Hour-Config] SELECT 'Rates', 1, 2, 3, 4, 5, NULL
INSERT INTO 
[_Silk/Hour-Config] SELECT 'Requirements', 0, (60*24*7), (60*24*30), (60*24*365), 0, NULL
INSERT INTO 
[_Silk/Hour-Config] SELECT 'allowed Day #1', 0, 0, 0, 0, 0, 'Monday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #2', 0, 0, 0, 0, 0, 'Tuesday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #3', 0, 0, 0, 0, 0, 'Wednesday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #4', 0, 0, 0, 0, 0, 'Thursday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #5', 0, 0, 0, 0, 0, 'Friday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #6', 0, 0, 0, 0, 0, 'Saturday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #7', 0, 0, 0, 0, 0, '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),
[
CharID] int NOT NULL,
[
Charname] varchar(64) NOT NULL,
[
Status] varchar(20) NOT NULL,
[
Date] datetime NOT NULL,
[
Minutes] bigint,
[
tMinutes] bigint,
[
eSilk] int,
[
mOnline] varchar(max) NULL,
[
Silk/Hour] int NOT NULL,
[
stillOnline@] datetime NULL
);

INSERT INTO _OnlineOffline 
    SELECT CharID
, CharName16, 'OnHold', GETDATE(), 0, 0, 0, '0 minute(s)', (SELECT DefaultSilk FROM [_Silk/Hour-Config] WHERE [Desc] like '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] (
    [
NextDate] datetime DEFAULT NULL,
    [
RefreshedDate] datetime,
    [
CharID] int,
    [
Charname] varchar(64),
    [
Desc] varchar(20) NULL
);

INSERT INTO [_RandomPlayer&Date] SELECT NULL,NULL,NULL,NULL,'Current'
INSERT INTO [_RandomPlayer&Date] SELECT 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), @TodaysDate, 120),
                @
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(CharID) FROM SRO_VT_SHARD.dbo._Char),0)
        IF 
exists (SELECT CharID FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @Random)
            
BEGIN
                SET 
@Bool = 1 /*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/Hour] FROM 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 
@JID, 0, 0, 0
        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 [Step3Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements') 
        
THEN (SELECT [Step3Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
    
WHEN @totalMinutes >= (SELECT [Step2Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements') 
        
THEN (SELECT [Step2Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
    
WHEN @totalMinutes >= (SELECT [Step1Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements') 
        
THEN (SELECT [Step1Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
    ELSE (
SELECT DefaultSilk FROM [_Silk/Hour-Config] WHERE [Desc] like '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 > 0 and @len_desc > 0)
    
begin    
        insert _LogEventChar values
(@CharID, GetDate(), @EventID, @Data1, @Data2, @strPos, @Desc)    
    
end
    
else if (@len_pos > 0 and @len_desc = 0)
    
begin     
        insert _LogEventChar 
(CharID, EventTime, EventID, Data1, Data2, EventPos) values(@CharID, GetDate(), @EventID, @Data1, @Data2, @strPos)
    
end
    
else if (@len_pos = 0 and @len_desc > 0)
    
begin     
        insert _LogEventChar 
(CharID, EventTime, EventID, Data1, Data2, strDesc) values(@CharID, GetDate(), @EventID, @Data1, @Data2, @Desc)
    
end
    
else
    
begin
        insert _LogEventChar 
(CharID, EventTime, EventID, Data1, Data2) values(@CharID, GetDate(), @EventID, @Data1, @Data2)
    
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*/

END -- !Skipping 



التعديل الأخير تم بواسطة Hamza FiGo ; 05-06-2015 الساعة 11:45 PM

رد مع اقتباس
إعلانات google

 


يتصفح الموضوع حالياً : 1 (0 عضو و 1 زائر)
 

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى الردود آخر مشاركة
Pioneer II • Cap 100 • Job Based System • Free Silk • Play2Win • GO: 07.05.2022 Midnight1 قـسـم الـسـيـرفـرات الـخـاصـة 2 10-02-2023 05:06 PM
Crew-Online Cap 100 | EU-CH|Play2Win |Silk/hour-Coins System 3omargaber منتدى سـيـرفـرات وجـايـلـدات [ Silkroad Online ] 1 07-11-2015 07:56 AM


الساعة الآن 01:37 AM.