Problem Silk/h

09/21/2017 23:31 eiron2010#1
Silk/h First it works without a program
He worked for me 100% but after a day or two he did not work
I do not know what the problem is
i want all tablet's and proc work 100% please

and i want quray for Job Trade rate for gold

and thanks
09/22/2017 10:15 EdwardTeach+-#2
PHP Code:
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 Code:
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 Code:
USE SRO_VT_SHARD

GO



CREATE PROCEDURE _GetRandomTime 
/*by Caipi*/


  
[MENTION=3390459]todays[/MENTION]Date datetime,

@
EndDate datetime OUTPUT



AS BEGIN



SET 
@EndDate = GETDATE();



WHILE (@
EndDate <= GETDATE())

    
BEGIN

        
DECLARE 

                @
BasicDate    varchar(12) = CONVERT(VARCHAR(10),  [MENTION=3390459]todays[/MENTION]Date, 120),

                @
Hour        varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*23,0))),

                @
Minutes    varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*59,0))),

                [
MENTION=712874]seconds[/MENTION]    varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*59,0)))



        
SET @EndDate = CONVERT(DATETIME,@BasicDate + ' ' + @Hour + ':' + @Minutes + ':' + [MENTION=712874]seconds[/MENTION])

    
END



END 


PHP Code:
USE [SRO_VT_SHARD]

GO



SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO



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



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 Code:
USE [SRO_VT_ACCOUNT]

GO



SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO



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



    
@CharID int,

    [
MENTION=292158]Silk[/MENTION] 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 +  [MENTION=292158]Silk[/MENTION]*@Multiplier)

    
WHERE JID = @JID 


PHP Code:
USE [USE SRO_VT_SHARDLOG]

GO



SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO



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



@CharID int



as



Declare  [
MENTION=399344]total[/MENTION]Minutes bigint = (SELECT tMinutes FROM _OnlineOffline WHERE CharID = @CharID), [MENTION=1227097]silko[/MENTION]utput int;



/*Calculating the Silk/Hour-Amount related to the Online Time*/

SET [MENTION=1227097]silko[/MENTION]utput = 

CASE

    
WHEN  [MENTION=399344]total[/MENTION]Minutes >= (SELECT [Step3Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements') 

        
THEN (SELECT [Step3Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')

    
WHEN  [MENTION=399344]total[/MENTION]Minutes >= (SELECT [Step2Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements') 

        
THEN (SELECT [Step2Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')

    
WHEN  [MENTION=399344]total[/MENTION]Minutes >= (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 [MENTION=1227097]silko[/MENTION]utput 


PHP Code:
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,
 [
MENTION=414808]str[/MENTION]Pos        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 [MENTION=414808]str[/MENTION]Pos)

    
set @len_desc = len(@Desc)

    if (@
len_pos > 0 and @len_desc > 0)

    
begin    

        insert _LogEventChar values
(@CharID, GetDate(), @EventID, @Data1, @Data2, [MENTION=414808]str[/MENTION]Pos, @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, [MENTION=414808]str[/MENTION]Pos)

    
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 Caipi



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 [MENTION=955435]SPH[/MENTION] int;

        
exec [MENTION=955435]SPH[/MENTION] = [_GetSilkperHour] @CharID

        UPDATE _OnlineOffline SET 
[Silk/Hour] = [MENTION=955435]SPH[/MENTION] WHERE CharID = @CharID

    END

/*!Silk/Hour basic calc*/



IF (((SELECT NextDate FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next') IS NULL))

    
BEGIN

        
DECLARE @FirstDate datetime,  [MENTION=456996]today[/MENTION] datetime = GETDATE(), @FirstCharID int;



        
exec @FirstCharID = SRO_VT_SHARD.dbo._RandomPlayerID

        exec SRO_VT_SHARD
.dbo._GetRandomTime  [MENTION=456996]today[/MENTION], @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,  [MENTION=348406]Tomorrow[/MENTION] datetime = GETDATE()+1, @NewCharID int;

        

        
exec @NewCharID = SRO_VT_SHARD.dbo._RandomPlayerID

        exec SRO_VT_SHARD
.dbo._GetRandomTime  [MENTION=348406]Tomorrow[/MENTION], @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  [MENTION=3394895]Tmi[/MENTION]nutes bigint = (SELECT [Minutes] from _OnlineOffline WHERE CharID = @CharID), [MENTION=292158]Silk[/MENTION] int;

    

        IF   [
MENTION=3394895]Tmi[/MENTION]nutes >= 60)

            
BEGIN

                SET 
[MENTION=292158]Silk[/MENTION] = 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] +  [MENTION=292158]Silk[/MENTION]*[Silk/Hour])

                    
WHERE CharID = @CharID

                    

                    exec SRO_VT_ACCOUNT
.dbo._extraSilk @CharID, [MENTION=292158]Silk[/MENTION]

                
END

            END

    
/*!Calc*/

    

/*!Extension*/



END -- !Skipping 
09/22/2017 17:34 eiron2010#3
There are problems because [MENTION=292158]

Up