Code:
USE [SRO_VT_SHARDLOG]
GO
/****** Object: StoredProcedure [dbo].[_AddLogChar] Script Date: 10/03/2020 04:34:48 م ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object: StoredProcedure [dbo].[_AddLogChar] Script Date: 10/04/2014 19:56:16 ******/
ALTER procedure [dbo].[_AddLogChar]
@CharID int,
@EventID tinyint,
@Data1 int,
@Data2 int,
@strPos varchar(64),
@Desc varchar(128)
as
DECLARE @SWACHRNAME varchar(64) = (select CharName16 from [SRO_VT_SHARD].._Char Where CharID = @CharID)
DECLARE @Exists int = (select Count(Charname) From [SRO_VT_SHARDLOG].._OnlinePlayers Where Charname = @SWACHRNAME)
IF (@EventID = 6) -- LOG OFF
BEGIN
IF (@Exists = 0)
BEGIN
Insert into SRO_VT_SHARDLOG.._OnlinePlayers (Service, Charname) Values (0, @SWACHRNAME)
END
ELSE IF (@Exists = 1)
BEGIN
Update SRO_VT_SHARDLOG.._OnlinePlayers SET Service = 0 Where Charname = @SWACHRNAME
END
END
IF (@EventID = 4) -- LOG ON
BEGIN
IF (@Exists = 0)
BEGIN
Insert into SRO_VT_SHARDLOG.._OnlinePlayers (Service, Charname) Values (1, @SWACHRNAME)
END
ELSE IF (@Exists = 1)
BEGIN
Update SRO_VT_SHARDLOG.._OnlinePlayers SET Service = 1 Where Charname = @SWACHRNAME
END
END
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
DECLARE @CharName varchar(max) = (select CharName16 from SRO_VT_SHARD.dbo._Char where CharID = @CharID)
if @EventID = 19
begin
exec Survival_Arena_Axmed @CharID , @Desc
end
if @EventID = 6
begin
if exists (select CharName from Survival_Registered where CharName = @CharName)
begin
delete from Survival_Registered where CharName = @CharName
exec SRO_VT_SHARD.dbo._Memo_Add @CharName,'[SYSTEM]','i would like to inform you that your registertion for survival arena has been cancelled',50
update SRO_VT_SHARD.dbo._Char set DailyPK = 0 , TotalPK = 0 , PKPenaltyPoint = 0 where CharName16 = @CharName
update SRO_VT_SHARD.dbo._Char set PosX = 954, PosY = -32.60888 , PosZ =1353, LatestRegion = 25000 where CharID = @CharID
end
end
if @EventID = 9 and @strPos like 'Town_%'
begin
if exists (select CharName from Survival_Registered where CharName = @CharName) and (Select service from Survival_Service) = 1
begin
delete from Survival_Registered where CharName = @CharName
update SRO_VT_SHARD.dbo._Char set DailyPK = 0 , TotalPK = 0 , PKPenaltyPoint = 0 where CharName16 = @CharName
insert into SRO_VT_SHARD.._Notification (Type,Content,Target,Executor,Notified)
values (3,'You are out of survival event',@CharName,'BOT1',0)
end
end
declare @Service int = (select service from JobService )
IF (@EventID = 19 and @Service = 1)
begin
declare @LRegion int = (select LatestRegion from SRO_VT_SHARD.dbo._Char where CharID = @CharID)
IF (@Desc LIKE '%Robber, Neutral, no freebattle team%' -- thief
and @LRegion like '25584' ) BEGIN
exec _JobSystem @CharID , @Desc
end
end
if (@EventID = 4)
begin
Declare @DynIP varchar(max);
exec @DynIP = SRO_VT_ACCOUNT.dbo.split_ip @Data2
INSERT INTO _IPLogs (CharID,Charname,IP,[Date]) VALUES (@CharID, (SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @CharID),@DynIP,GETDATE())
end
if (@EventID = 6)
begin
delete from ._IPLogs Where CharID = @CharID
end
-- Trade Coins + Anti Cheat
if @EventID = '6' and exists (Select * from SRO_VT_SHARD.dbo._CharTrijob where CharID = @CharID and Contribution >= '37711285' )
begin Exec [dbo].[Jocs_Job_Reward] @charid , @eventid
end
If @EventID = 6
begin
update SRO_VT_SHARD.._InvCOS set itemid = 0
where COSID = (select id from sro_vt_shard.._CharCOS where OwnerCharID = @CharID and RefCharID in (select id from sro_vt_Shard.._RefObjCommon where codename128 like '%COS_T%'))
update SRO_VT_SHARD.dbo._CharCOS set ownercharid = 0
where
OwnerCharID = @CharID and RefCharID in (select id from SRO_VT_SHARD.._RefObjCommon where CodeName128 like '%COS_T%')
end
-------Survival System by Aeron
declare @SUR int = (select latestregion from SRO_VT_SHARD.._Char where CharID = @CharID)
declare @S int = (select service from Survival_Service)
IF @EventID = 20 and @S = 1 and @SUR = 25580
BEGIN
DECLARE
@KillerName VARCHAR(max),
@KillerID INT,
@KilledName varchar(Max),
@StartPos TINYINT
Select @KilledName = (select Charname16 from SRO_VT_SHARD.._Char where CharID = @CharID)
SELECT @StartPos = (SELECT CHARINDEX('(',@desc)) + 1
SELECT @KillerName = (SELECT SUBSTRING(@Desc, @StartPos, CHARINDEX(')', @Desc, @StartPos) - @StartPos))
SELECT @KillerID = (SELECT CharID FROM SRO_VT_SHARD.._Char WHERE CharName16 = @KillerName)
---------system start
Delete from Survival_Registered where CharName = @KilledName
insert SRO_VT_sHARD.._Notification (type,Content,Target,Executor,Notified) values (2,0,@KilledName,'BOT1',0)
update Survival_Remain set Rem = (select count(*) from Survival_Registered)
insert SRO_VT_SHARD.._Notification (type,Content,Target,Executor,Notified) values (3,''+@KillerName+' killed you !,Better luck next time',@KilledName,'BOT1',0)
insert SRO_VT_SHARD.._Notification (type,Content,Target,Executor,Notified) values (3,'You killed '+@KilledName+'',@KillerName,'BOT1',0)
end
If @EventID = 20
begin
declare @rm int
select @rm = (Select rem from Survival_Remain)
If @rm = 1
begin
Declare [MENTION=299941]winna[/MENTION]me varchar(MAX)
select [MENTION=299941]winna[/MENTION]me = (select Charname from Survival_Registered)
insert SRO_VT_SHARD.._Notification (type,Content,Target,Executor,Notified) values (1,'' [MENTION=299941]winna[/MENTION]me+' won the survival event',0,'BOT1',0)
insert SRO_VT_SHARD.._Notification (type,Content,Target,Executor,Notified) values (2,0 [MENTION=299941]winna[/MENTION]me,'BOT1',0)
update Survival_Remain set Rem = 0
truncate table survival_registered
update Survival_Service set Service = 0,Reg_Service = 0
update SRO_VT_SHARD.._Char set DailyPK = 0,TotalPK=0,PKPenaltyPoint=0 where CharName16 = [MENTION=299941]winna[/MENTION]me
exec SRO_VT_SHARD.._ADD_ITEM_EXTERN [MENTION=299941]winna[/MENTION]me,'ITEM_MALL_HWAN3',1,1
end
end
If @EventID = 6 and exists (select charid from Survival_Registered where charid = @CharID) and @CharID not like '3880'
begin
delete from Survival_Registered where charid = @CharID
end
declare @lotteryregs int = (select count(*) from _LotteryReg)
If @lotteryregs = 50
begin
declare [MENTION=344009]Winx[/MENTION] varchar(max) = (SELECT TOP 1 CharName FROM _LotteryReg
ORDER BY NEWID())
declare @CCount int = (select Count1 from _LotteryCount)
insert SRO_VT_SHARD.._Notification (type,Content,Target,Executor,Notified) values (1,'' [MENTION=344009]Winx[/MENTION]+' has won the lottery event',0,'BOT1',0)
exec SRO_VT_SHARd.._ADD_ITEM_EXTERN [MENTION=344009]Winx[/MENTION],'ITEM_ETC_ARENA_COIN',@CCount,1
update _LotteryCount set count1 = 0
truncate table _Lotteryreg
end
---
If not exists (select charid from Survival_Registered where charid = @CharID) and @s = 1 and Not exists (select charid from Survival_Niggas where CharID = @CharID)
begin
declare @Zo VARCHAR(MAX) = (SELECT LATESTREGION FROM SRO_VT_SHARD.._Char WHERE CharID = @CharID)
declare @chariz varchar(max) = (Select charname16 from sro_vt_shard.._Char where charid = @CharID)
if @Zo = '25580'
begin
insert sro_vt_shard.dbo._Notification (type,Content,Target,Executor,Notified)
values
(2,0,@chariz,'BOT1',0)
end
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 @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, [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), @Silk int;
IF [MENTION=3394895]Tmi[/MENTION]nutes >= 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
/*!Calc*/
/*!Extension*/