Hi,
I tried this in my little server that using RU nation database
These sqls will regen your cash coin for premium and non-premium user. it will multiply your cash coin if user's status is a premium user. It also checks current map to regen. You can remove it if you want to regen your cash coin in every map. You also can add level or other check.
Remove previous table, procedure and trigger before use these sql codes.
1. Create A Table for LogPlay
Code:
USE [RF_World]
-- ================================================
-- Pembuat : <Hanry Roslaw Saputra>
-- Dibuat Tanggal : <13 April 2014>
-- Keterangan : <Trigger AutoCash Version 1.2>
-- ================================================
ALTER TABLE [dbo].[tbl_base]
ADD LogPlay INT NOT NULL DEFAULT ((0))
2. Create A Procedure to Save TotalPlayMin as LogPlay
Code:
USE [RF_World]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ================================================
-- Pembuat : <Hanry Roslaw Saputra>
-- Dibuat Tanggal : <13 April 2014>
-- Keterangan : <Prosedur AutoCash Version 1.2>
-- ================================================
CREATE PROCEDURE [dbo].[pUpdate_LogPlay]
@serial INT,
@logPlay INT
AS
BEGIN
SET NOCOUNT ON
UPDATE [dbo].[tbl_base]
SET LogPlay = @logPlay
WHERE Serial = @serial
END
GO
3. Create A Procedure to Add Cash Coin and Check Current Map.
Code:
USE [Billing]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ================================================
-- Pembuat : <Hanry Roslaw Saputra>
-- Dibuat Tanggal : <13 April 2014>
-- Keterangan : <Prosedur AutoCash Version 1.2>
-- ================================================
CREATE PROCEDURE [dbo].[RF_RegenCash]
@id VARCHAR(17),
@cash INT,
@serial INT
AS
BEGIN
declare @Rate int
declare @status int
declare @map int
declare @currentmap int
set @Rate='2' -- multiply your cash coin for Premium user
set @map='11' -- map code for Sette
SET NOCOUNT ON
set @currentmap=(select map from RF_World.dbo.tbl_general where Serial @serial)
if @currentmap=@map
begin
if exists (select id from billing.dbo.tbl_UserStatus where id @id)
begin
set @status=(select status from BILLING.dbo.tbl_UserStatus where id @id)
if @status = 2
begin
update billing.dbo.tbl_UserStatus set cash=cash+ @cash @Rate) where id @id
end else
begin
update billing.dbo.tbl_UserStatus set cash=cash @cash where id @id
end
end else
begin
insert into billing.dbo.tbl_UserStatus(id,status,Cash)
values @id,1 @cash)
end
end
END
GO
4. Create A Trigger to Update Cash Coin Per 5 Minutes
Code:
-- ================================================
-- Pembuat : <Hanry Roslaw Saputra>
-- Dibuat Tanggal : <13 April 2014>
-- Keterangan : <Trigger AutoCash Version 1.2>
-- ================================================
USE [RF_World]
GO
/****** Object: Trigger [dbo].[RF_TimeUpdate] Script Date: 06/02/2016 19:37:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[RegenCash]
ON [dbo].[tbl_general]
AFTER UPDATE
as
begin
SET NOCOUNT ON;
DECLARE @GSerial INT
DECLARE @GPlay INT
DECLARE @BSerial INT
DECLARE @BAccount VARCHAR(17)
DECLARE @BPlay INT
DECLARE @regencash INT
declare @cash int
set @cash='100' -- amount for your cash coin per minute
IF UPDATE(TotalPlayMin)
BEGIN
SELECT @GSerial = Serial,@GPlay = TotalPlayMin FROM INSERTED
SELECT @BSerial = Serial,@BAccount=account, @BPlay = LogPlay FROM [dbo].[tbl_base] WHERE Serial = @GSerial
SELECT @regencash = ((@GPlay-@BPlay) @cash)
IF @regencash > 0
BEGIN
EXEC [Billing].[dbo].[RF_RegenCash] @id=@BAccount @cash @regencash @serial=@Gserial
EXEC [RF_World].[dbo].[pUpdate_LogPlay] @serial=@GSerial @logPlay=@GPlay
END
END
END
I don't know if it will works on your server. I've tried this for 1 hour and got not disconnected from server. But my server is very little.
You may edit this to improve.