Did anyone ever do it better? NO, because they're so fucking marvelous
so i decided to try being "fucking marvelous" doing that system.
HI GUYS! a few hours I have been provocative by a server super system
without mention any names so i am here today to release that system
so what that system do or how it works? well
Explanation:
Quote:
|
automatic skill up system. It adds all available skills to your own char based on Mastery and MasteryLevel to a Specific level you will have to choice it its really simple
|
Procedure:
Code:
USE [SRO_VT_ERIUS]
GO
/****** Object: StoredProcedure [dbo].[Ed_UPDATE_CHARSKILLS] Script Date: 7/30/2017 12:52:05 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/**
version : 2
author : Syloxx
created date: 2015-05-01
description : add all aviable skills to character.
return value :
0 = No Errors
100 = The charname does not exists.
101 = Unknown Error.
**/
CREATE PROCEDURE [dbo].[Ed_UPDATE_CHARSKILLS]
@CharID nvarchar(30)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @intReturnValue int
, @intCharID int
, @intSkillID int
/**_# Rollback and return if inside an uncommittable transaction.*/
IF XACT_STATE() = -1
BEGIN
SET @intReturnValue = 1
GOTO ErrorHandler
END
BEGIN TRY
SELECT @intCharID = CharID
FROM SRO_VT_SHARD.dbo._Char WITH (NOLOCK)
WHERE CharID = @CharID
IF (@intCharID IS NULL OR @intCharID = 0)
BEGIN
SET @intReturnValue = 100
GOTO ErrorHandler
END
/**_# [_CharSkill] DELETE FROM TABLE*/
DELETE FROM SRO_VT_SHARD.dbo._CharSkill WHERE CharID = @intCharID AND SkillID NOT IN (SELECT SkillID FROM SRO_VT_SHARD.dbo._RefCharDefault_Skill)
/**_# [UPDATE_SKILL_CURSOR] CREATE AND EXECUTE*/
DECLARE UPDATE_SKILL_CURSOR CURSOR FOR
SELECT RS.ID
FROM
(
SELECT Basic_Group
, MAX(Basic_Level) AS Basic_Level
FROM SRO_VT_SHARD.dbo._RefSkill RS
JOIN SRO_VT_SHARD.dbo._CharSkillMastery CSM
ON RS.ReqCommon_Mastery1 = CSM.MasteryID
WHERE RS.Service = 1
AND RS.ID NOT IN (SELECT SkillID FROM SRO_VT_SHARD.dbo._RefCharDefault_Skill)
AND RS.ReqCommon_MasteryLevel1 <= CSM.Level
AND CSM.CharID = @intCharID
GROUP BY Basic_Group
) MGS
JOIN SRO_VT_SHARD.dbo._RefSkill RS
ON RS.Basic_Group = MGS.Basic_Group
AND RS.Basic_Level = MGS.Basic_Level
WHERE RS.ReqLearn_SP != 0
OPEN UPDATE_SKILL_CURSOR
FETCH NEXT FROM UPDATE_SKILL_CURSOR INTO @intSkillID
WHILE @@FETCH_STATUS = 0
BEGIN
/**_# [_CharSkill] INSERT INTO TABLE*/
INSERT INTO SRO_VT_SHARD.dbo._CharSkill (CharID, SkillID, Enable)
VALUES (@intCharID, @intSkillID, 1)
FETCH NEXT FROM UPDATE_SKILL_CURSOR INTO @intSkillID
END
CLOSE UPDATE_SKILL_CURSOR
DEALLOCATE UPDATE_SKILL_CURSOR
END TRY
BEGIN CATCH
SET @intReturnValue = 101
GOTO ErrorHandler
END CATCH
RETURN 0
ErrorHandler:
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION
RETURN @intReturnValue
AddLogChar:
Code:
IF @EventID = 22 AND @Data2<=60
BEGIN
DECLARE @intReturnValue int
EXEC @intReturnValue = SRO_VT_ERIUS.dbo.Ed_UPDATE_CHARSKILLS @CharID
SELECT @intReturnValue AS ReturnValue
END
Tutorial:
-Add the Procedure to the Database name you choice.
- Add The Second Procedure to your LOG_DB.dbo.AddLogChar
-@Data2<=60 "60 is the level you will choice!
Cheeeeeers
Original Procedure was taken from "Syloxx"
Re-coded by me, to meet the condition