- Joined
- Sep 11, 2008
- Messages
- 719
- Reaction score
- 122
if you know how to add Stored Proc on MSSQL or PHP..
you can do that...
you can do that...
Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!
Join Today!Can someone rewrite this code for EP8? ☺
You can re-write it by your own skills ,
check the database -> [dbo].[cabal_character_table] , expand it goto stored proc find -> get_cabal_character_ex
The def with ep8 and this code is the tables you should supply the code with ep8 tables has ...
besides you only working with cabal_character_table check the tables and the stored proc...
Thankyousomuch for the hint, but I can only find get_cabal_character and set_cabal_character_ex
ALTER TABLE [dbo].[cabal_character_table]
ADD
[Reset] [int] NULL DEFAULT (0)
GO
USE [Server01]
GO
/****** Object: StoredProcedure [dbo].[get_cabal_character] Script Date: 7/6/2019 9:54:16 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[get_cabal_character](@characteridx INT, @channelidx INT, @userip CHAR(16), @WorldAuthKey int)
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @USERNUM INT
SET @USERNUM = @CHARACTERIDX/8
-- CHARACTER
DECLARE @LOGOUT_TIME DATETIME, @LOGIN_TIME DATETIME, @OLDRESTTIME AS INT, @RESTTIME AS INT
DECLARE
@CH_WORLDIDX INT,
@CH_POSITION INT,
@CH_LEV INT,
@CH_EXP BIGINT,
@CH_STR INT,
@CH_DEX INT,
@CH_INT INT,
@CH_PNT INT,
@CH_RANK INT,
@CH_ALZ BIGINT,
@CH_STYLE INT,
@CH_FLAGS INT,
@CH_HP INT,
@CH_MP INT,
@CH_SP INT,
@CH_DP INT,
@CH_DPLASTTIME INT,
@CH_SWDPNT INT,
@CH_MAGPNT INT,
@CH_RANKEXP INT,
@CH_PENALTYEXP INT,
@CH_WARPBFIELD INT,
@CH_MAPSBFIELD INT,
@CH_NAME VARCHAR(50),
@CH_RP INT,
@CH_REPUTATION INT,
@CH_PKPENALTY INT,
@CH_NATION TINYINT,
@CRAFTLEVEL0 INT,
@CRAFTLEVEL1 INT,
@CRAFTLEVEL2 INT,
@CRAFTLEVEL3 INT,
@CRAFTLEVEL4 INT,
@CRAFTEXP0 INT,
@CRAFTEXP1 INT,
@CRAFTEXP2 INT,
@CRAFTEXP3 INT,
@CRAFTEXP4 INT,
@CRAFTFLAGS VARBINARY(16),
@RESERVED BIGINT
SELECT
@CH_WORLDIDX = WORLDIDX,
@CH_POSITION = POSITION,
@CH_LEV = LEV,
@CH_EXP = EXP,
@CH_STR = STR,
@CH_DEX = DEX,
@CH_INT = INT,
@CH_PNT = PNT,
@CH_RANK = RANK,
@CH_ALZ = ALZ,
@CH_STYLE = STYLE,
@CH_FLAGS = FLAGS,
@CH_HP = HP,
@CH_MP = MP,
@CH_SP = SP,
@CH_SWDPNT = SWDPNT,
@CH_MAGPNT = MAGPNT,
@CH_RANKEXP = RANKEXP,
@CH_PENALTYEXP = PENALTYEXP,
@CH_WARPBFIELD = WARPBFIELD,
@CH_MAPSBFIELD = MAPSBFIELD,
@CH_NAME = NAME,
@CH_RP = ISNULL(RP, 0),
@CH_REPUTATION = REPUTATION,
@CH_PKPENALTY = PKPENALTY,
@CH_NATION = NATION,
@LOGOUT_TIME = LOGOUTTIME,
@RESERVED = RESERVED1
FROM CABAL_CHARACTER_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
SELECT -1
COMMIT TRAN
RETURN
END
IF @CH_NATION = 3 -- GM
BEGIN
DECLARE @RegisteredIP BIT
exec cabal_sp_linked_gm_ip_check @userip, @RegisteredIP OUTPUT
IF(@RegisteredIP = 0)
BEGIN
SELECT -1
COMMIT TRAN
RETURN
END
END
IF @LOGOUT_TIME IS NULL
BEGIN
SET @LOGOUT_TIME = GETDATE()
END
SET @LOGIN_TIME = GETDATE()
SET @RESTTIME = DATEDIFF( MINUTE, @LOGOUT_TIME, @LOGIN_TIME)
SET @CH_RP = @CH_RP + @RESTTIME
IF(@CH_RP > 10080)
BEGIN
SET @CH_RP = 10080
END
UPDATE CABAL_CHARACTER_TABLE SET
RP =@CH_RP,
LOGINTIME=@LOGIN_TIME,
LOGOUTTIME=@LOGIN_TIME,
CHANNELIDX=@CHANNELIDX
WHERE CHARACTERIDX = @CHARACTERIDX
--------------------------------------------------------------------------------------------------------------------------------------------
--
-- Reset System
-- Author: chacina
-- Mod: guybrush,Goldenheaven
--
--------------------------------------------------------------------------------------------------------------------------------------------
DECLARE
@MaxLevel int,
@ResetPoint int,
@AlzReq bigint,
@STR_ int,
@DEX_ int,
@INT_ int,
@HP_ int,
@MP_ int,
@WorldIdx_ int,
@Position_ int,
@ClassReset_ int,
@SPPoint int,
@resetlimit int,
@reset int
-- Basic Config
--------------------------------------------------------------------------------------------------------------------------------------------
SET @MaxLevel = 200 -- Level for reset
SET @resetlimit = 3 -- Level for reset
SET @ResetPoint = 250 -- Point for add after reset
SET @SPPoint = 250 -- Point for add after reset
SET @AlzReq = 1000000 -- Alz required for reset
SET @ClassReset_ = dbo.SplitStyle('BattleStyle',@CH_STYLE)
-- getting the reset number
set @reset= (select reset from cabal_character_table where CharacterIdx=@CHARACTERIDX)
IF(@reset<=@resetlimit and @CH_LEV = @MaxLevel)
BEGIN
-- Class Config
--------------------------------------------------------------------------------------------------------------------------------------------
--Warrior
IF(@ClassReset_=1)
BEGIN
SET @STR_ = 24 -- STR after you reset
SET @DEX_ = 8 -- DEX after you reset
SET @INT_ = 3 -- INT after you reset
SET @HP_ = 3276850 -- HP after you reset
SET @MP_ = 1310740 -- MP after you reset
SET @WorldIdx_ = 1 -- You will born in this world
SET @Position_ = 1376293 -- Coordenate
END
--wizard
ELSE IF(@ClassReset_=2)
BEGIN
SET @STR_ = 3 -- STR after you reset
SET @DEX_ = 6 -- DEX after you reset
SET @INT_ = 26 -- INT after you reset
SET @HP_ = 2621480 -- HP after you reset
SET @MP_ = 2293795 -- MP after you reset
SET @WorldIdx_ = 2 -- You will born in this world
SET @Position_ = 4915405 -- Coordenate
END
--blader
ELSE IF(@ClassReset_=3)
BEGIN
SET @STR_ = 16 -- STR after you reset
SET @DEX_ = 16 -- DEX after you reset
SET @INT_ = 3 -- INT after you reset
SET @HP_ = 3276850 -- HP after you reset
SET @MP_ = 1310740 -- MP after you reset
SET @WorldIdx_ = 2 -- You will born in this world
SET @Position_ = 4915405 -- Coordenate
END
--forcer archer
ELSE IF(@ClassReset_=4)
BEGIN
SET @STR_ = 6 -- STR after you reset
SET @DEX_ = 12 -- DEX after you reset
SET @INT_ = 17 -- INT after you reset
SET @HP_ = 2621480 -- HP after you reset
SET @MP_ = 2293795 -- MP after you reset
SET @WorldIdx_ = 3 -- You will born in this world
SET @Position_ = 10485821 -- Coordenate
END
--forcer shielder
ELSE IF(@ClassReset_=5)
BEGIN
SET @STR_ = 15 -- STR after you reset
SET @DEX_ = 9 -- DEX after you reset
SET @INT_ = 11 -- INT after you reset
SET @HP_ = 2949165 -- HP after you reset
SET @MP_ = 1966110 -- MP after you reset
SET @WorldIdx_ = 1 -- You will born in this world
SET @Position_ = 1376293 -- Coordenate
END
--forcer blader
ELSE IF(@ClassReset_=6)
BEGIN
SET @STR_ = 12 -- STR after you reset
SET @DEX_ = 11 -- DEX after you reset
SET @INT_ = 12 -- INT after you reset
SET @HP_ = 2949165 -- HP after you reset
SET @MP_ = 1966110 -- MP after you reset
SET @WorldIdx_ = 3 -- You will born in this world
SET @Position_ = 10485821 -- Coordenate
END
UPDATE cabal_character_table
SET LEV = 1, EXP = 0, STR = @STR_, DEX = @DEX_, INT = @INT_, SP= @SPPoint * (@reset + 1), PNT = @ResetPoint * (@reset + 1),
HP = @HP_, MP = @MP_, Alz = Alz - @AlzReq, WorldIdx = @WorldIdx_,
Position = @Position_, Reset = @reset + 1
WHERE LEV = @MaxLevel AND Alz >= @AlzReq AND Login = 0 AND CharacterIdx=@CHARACTERIDX
END
---------------------------------------------------------------------------------------------------------
-- End reset system
---------------------------------------------------------------------------------------------------------
-- DP
SELECT
@CH_DP = DP,
@CH_DPLASTTIME = DPLastGetTime FROM CABAL_DUNGEONPOINT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_DUNGEONPOINT_TABLE
VALUES(@CHARACTERIDX, 0, 0)
SET @CH_DP = 0
SET @CH_DPLASTTIME = 0
END
-- EQUIPMENT
DECLARE
@EQ_DATA VARBINARY(512)
SELECT
@EQ_DATA = DATA
FROM CABAL_EQUIPMENT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_EQUIPMENT_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @EQ_DATA = 0X
END
-- EQUIPMENT LOCK
DECLARE
@EQ_LOCK_DATA VARBINARY(512)
SELECT
@EQ_LOCK_DATA = DATA
FROM CABAL_EQUIPMENT_LOCK_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_EQUIPMENT_LOCK_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @EQ_LOCK_DATA = 0X
END
-- INVENTORY
DECLARE
@IV_DATA VARBINARY(8000)
SELECT
@IV_DATA = DATA
FROM CABAL_INVENTORY_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_INVENTORY_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @IV_DATA = 0X
END
--SOLD ITEM
DECLARE @SI_DATA VARBINARY(512)
SELECT
@SI_DATA = DATA
FROM CABAL_SOLD_ITEM_TABLE
WHERE CHARACTERIDX = @characteridx
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_SOLD_ITEM_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @SI_DATA = 0X
END
-- SKILLLIST
DECLARE
@SK_DATA VARBINARY(1024)
SELECT
@SK_DATA = DATA
FROM CABAL_SKILLLIST_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_SKILLLIST_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @SK_DATA = 0X
END
-- QUICKSLOT
DECLARE
@QK_DATA VARBINARY(512)
SELECT
@QK_DATA = DATA
FROM CABAL_QUICKSLOT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_QUICKSLOT_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @QK_DATA = 0X
END
---------------------------------------------------
DECLARE @PASSIVE_ABILITY_DATA VARBINARY(512)
DECLARE @BLENDED_ABILITY_DATA VARBINARY(256)
DECLARE @ABILITY_POINT INT
DECLARE @ABILITY_EXP_POINT INT
DECLARE @ABILITY_POINT_TOTAL INT
SELECT @ABILITY_POINT = AbilityPoint, @ABILITY_EXP_POINT = AbilityExp,
@PASSIVE_ABILITY_DATA = PassiveAbilityData, @BLENDED_ABILITY_DATA = BlendedAbilityData
,@ABILITY_POINT_TOTAL = pointTotal
FROM CABAL_SOUL_ABILITY_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_SOUL_ABILITY_TABLE
VALUES(@CHARACTERIDX, 0, 0, 0X, 0x, 0)
SET @PASSIVE_ABILITY_DATA = 0X
set @BLENDED_ABILITY_DATA = 0x
END
---------------------------------------------------
--Assistant
DECLARE @ASSISTANT_DATA VARBINARY(512)
SELECT @ASSISTANT_DATA = DATA
FROM cabal_Assistant_table
WHERE CHARACTERIDX = @characteridx
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO cabal_Assistant_table
VALUES(@CHARACTERIDX, 0X)
SET @ASSISTANT_DATA = 0X
END
---------------------------------------------------
-- BLESSING BEAD
DECLARE
@BBEAD_DATA VARBINARY(512)
SELECT
@BBEAD_DATA = DATA
FROM CABAL_BBEAD_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_BBEAD_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @BBEAD_DATA = 0X
END
-- QUESTDATA
DECLARE
@QE_DATA VARBINARY(128),
@QE_FLAGS VARBINARY(512),
@QE_DEL_FLAGS VARBINARY(512),
@DailyQuest VARBINARY(2048),
@LastDailyQuestResetTime BIGINT
SELECT
@QE_DATA = DATA,
@QE_FLAGS = FLAGS,
@QE_DEL_FLAGS = ISNULL(DEL_FLAGS, 0X0),
@DailyQuest = ISNULL(DailyQuest, 0x),
@LastDailyQuestResetTime = ISNULL(LastDailyQuestResetTime, 0)
FROM CABAL_QUESTDATA_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_QUESTDATA_TABLE
(CHARACTERIDX, DATA, FLAGS, DEL_FLAGS)
VALUES(@CHARACTERIDX, 0X, CONVERT(BINARY(64), 0), 0X)
SET @QE_DATA = 0X
SET @QE_FLAGS = CONVERT(BINARY(64),0)
SET @QE_DEL_FLAGS = 0X
SET @DailyQuest = 0x
SET @LastDailyQuestResetTime = 0
END
-- QDDATA
DECLARE
@QD_FLAGS VARBINARY(128),
@MD_FLAGS VARBINARY(128)
SELECT
@QD_FLAGS = FLAGS,
@MD_FLAGS = MDFLAGS
FROM CABAL_QDDATA_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_QDDATA_TABLE
VALUES(@CHARACTERIDX, 0x, 0x)
SET @QD_FLAGS = 0x
SET @MD_FLAGS = 0x
END
SELECT @CRAFTLEVEL0 = LEVEL0,
@CRAFTLEVEL1 = LEVEL1,
@CRAFTLEVEL2 = LEVEL2,
@CRAFTLEVEL3 = LEVEL3,
@CRAFTLEVEL4 = LEVEL4,
@CRAFTEXP0 = EXP0,
@CRAFTEXP1 = EXP1,
@CRAFTEXP2 = EXP2,
@CRAFTEXP3 = EXP3,
@CRAFTEXP4 = EXP4,
@CRAFTFLAGS = FLAGS
FROM CABAL_CRAFT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_CRAFT_TABLE ( CHARACTERIDX ) VALUES ( @CHARACTERIDX )
SELECT @CRAFTLEVEL0 = LEVEL0,
@CRAFTLEVEL1 = LEVEL1,
@CRAFTLEVEL2 = LEVEL2,
@CRAFTLEVEL3 = LEVEL3,
@CRAFTLEVEL4 = LEVEL4,
@CRAFTEXP0 = EXP0,
@CRAFTEXP1 = EXP1,
@CRAFTEXP2 = EXP2,
@CRAFTEXP3 = EXP3,
@CRAFTEXP4 = EXP4,
@CRAFTFLAGS = FLAGS
FROM CABAL_CRAFT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
END
DECLARE @WAREXP BIGINT
DECLARE @WAREXPEARN BIGINT
DECLARE @WAREXPUSED BIGINT
SELECT @WAREXP = WAREXP, @WAREXPEARN = WAREXPEARN, @WAREXPUSED = WAREXPUSED
FROM CABAL_WAREXP_TABLE WHERE CHARACTERIDX = @CHARACTERIDX
IF(@@ROWCOUNT = 0)
BEGIN
SET @WAREXP = 0
SET @WAREXPEARN = 0
SET @WAREXPUSED = 0
END
-- 2 <= EMS_VERSION
DECLARE @EMSUSERSTATE_DATA VARBINARY(1024)
SELECT @EMSUSERSTATE_DATA = DATA
FROM
CABAL_EMS_USERSTATE_TABLE
WHERE
CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_EMS_USERSTATE_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @EMSUSERSTATE_DATA = 0X
END
DECLARE @POINT INT
SET @POINT = 0
SELECT @POINT = GUILDAXPPOINT
FROM GUILDMEMBER
WHERE CHARACTERINDEX = @CHARACTERIDX
DECLARE @SkillBuff VARBINARY(320)
DECLARE @SkillBuffNonFixed VARBINARY(240)
DECLARE @MultiPotionBuff VARBINARY(320)
DECLARE @MultiPotionBuffNonFixed VARBINARY(240)
DECLARE @GMBuff VARBINARY(320)
DECLARE @GMBuffNonFixed VARBINARY(240)
DECLARE @FCaliburBuff VARBINARY(320)
DECLARE @FCaliburBuffNonFixed VARBINARY(240)
DECLARE @RemainedSP INT
DECLARE @BattleModeType TINYINT
DECLARE @BattleOverCharge TINYINT
DECLARE @BattleMasteryLevel TINYINT
DECLARE @AuraModeType TINYINT
DECLARE @AuraOverCharge TINYINT
DECLARE @AuraMasteryLevel TINYINT
DECLARE @RidingStatus INT
SELECT
@SkillBuff = SkillBuff,
@SkillBuffNonFixed = SkillBuffNonFixed,
@MultiPotionBuff = MultiPotionBuff,
@MultiPotionBuffNonFixed = MultiPotionBuffNonFixed,
@GMBuff = GMBuff,
@GMBuffNonFixed = GMBuffNonFixed,
@FCaliburBuff = ForceCaliburBuff,
@FCaliburBuffNonFixed = ForceCaliburBuffNonFixed,
@RemainedSP = RemainedSP,
@BattleModeType = BattleModeType,
@BattleOverCharge = BattleOverCharge,
@BattleMasteryLevel = BattleMasteryLevel,
@AuraModeType = AuraModeType,
@AuraOverCharge = AuraOverCharge,
@AuraMasteryLevel = AuraMasteryLevel,
@RidingStatus = RidingStatus
FROM cabal_saved_buff_table
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO cabal_saved_buff_table
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT
@SkillBuff = SkillBuff,
@SkillBuffNonFixed = SkillBuffNonFixed,
@MultiPotionBuff = MultiPotionBuff,
@MultiPotionBuffNonFixed = MultiPotionBuffNonFixed,
@GMBuff = GMBuff,
@GMBuffNonFixed = GMBuffNonFixed,
@FCaliburBuff = ForceCaliburBuff,
@FCaliburBuffNonFixed = ForceCaliburBuffNonFixed,
@RemainedSP = RemainedSP,
@BattleModeType = BattleModeType,
@BattleOverCharge = BattleOverCharge,
@BattleMasteryLevel = BattleMasteryLevel,
@AuraModeType = AuraModeType,
@AuraOverCharge = AuraOverCharge,
@AuraMasteryLevel = AuraMasteryLevel,
@RidingStatus = RidingStatus
FROM cabal_saved_buff_table
WHERE CharacterIdx = @CHARACTERIDX
END
-- 외형 변경
DECLARE @ShapeChangeEquip VARBINARY(300)
DECLARE @ShapeChangeInven VARBINARY(3000)
SELECT
@ShapeChangeEquip = ShapeChangeEquip,
@ShapeChangeInven = ShapeChangeInven
FROM cabal_item_extend_table
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO cabal_item_extend_table
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT
@ShapeChangeEquip = ShapeChangeEquip,
@ShapeChangeInven = ShapeChangeInven
FROM cabal_item_extend_table
WHERE CharacterIdx = @CHARACTERIDX
END
DECLARE @ShowTitleIdx INT
DECLARE @ApplyTitleIdx INT
DECLARE @AchievementPoint VARBINARY(64)
DECLARE @DailyOpenTime BIGINT
DECLARE @LinkOpenTime BIGINT
DECLARE @LinkOpenCount int
DECLARE @AchievementData VARBINARY(4800)
DECLARE @TitleData VARBINARY(3600)
DECLARE @PartialAchievement VARBINARY(4000)
DECLARE @AchievementHistory VARBINARY(8000)
DECLARE @SharedAchievementData VARBINARY(8000)
DECLARE @SharedTitleData VARBINARY(8000)
DECLARE @AchievementOpen VARBINARY(8000)
SELECT
@ShowTitleIdx = ShowTitleIdx,
@ApplyTitleIdx = ApplyTitleIdx,
@AchievementPoint = AchievementPoint,
@DailyOpenTime = DailyOpenTime,
@LinkOpenTime = LinkOpenTime,
@LinkOpenCount = LinkOpenCount,
@AchievementData = AchievementData,
@TitleData = TitleData,
@PartialAchievement = PartialAchievement
FROM [cabal_achievement_title]
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [cabal_achievement_title]
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT
@ShowTitleIdx = ShowTitleIdx,
@ApplyTitleIdx = ApplyTitleIdx,
@AchievementPoint = AchievementPoint,
@DailyOpenTime = DailyOpenTime,
@LinkOpenTime = LinkOpenTime,
@LinkOpenCount = LinkOpenCount,
@AchievementData = AchievementData,
@TitleData = TitleData,
@PartialAchievement = PartialAchievement
FROM [cabal_achievement_title]
WHERE CharacterIdx = @CHARACTERIDX
END
SELECT
@SharedAchievementData = SharedAchievementData,
@SharedTitleData = SharedTitleData
FROM [cabal_achievement_title_shared]
WHERE UserNum = (@CHARACTERIDX / 8)
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [cabal_achievement_title_shared]
(UserNum)
VALUES
((@CHARACTERIDX / 8))
SELECT
@SharedAchievementData = SharedAchievementData,
@SharedTitleData = SharedTitleData
FROM [cabal_achievement_title_shared]
WHERE UserNum = (@CHARACTERIDX / 8)
END
SELECT @AchievementHistory = AchievementHistory
FROM [cabal_achievement_history]
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [cabal_achievement_history]
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT @AchievementHistory = AchievementHistory
FROM [cabal_achievement_history]
WHERE CharacterIdx = @CHARACTERIDX
END
SELECT @AchievementOpen = AchievementOpen
FROM [cabal_achievement_open]
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [cabal_achievement_open]
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT @AchievementOpen = AchievementOpen
FROM [cabal_achievement_open]
WHERE CharacterIdx = @CHARACTERIDX
END
UPDATE cabal_last_login_character
SET worldAuthKey = @WorldAuthKey
WHERE UserNum = @USERNUM
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO cabal_last_login_character
(UserNum, LastLoginChar, CharSlotOrder, WorldAuthKey)
VALUES
(@USERNUM, 0, 0, @WorldAuthKey)
END
SELECT
@CH_WORLDIDX,
@CH_POSITION,
@CH_LEV ,
@CH_EXP,
@CH_STR,
@CH_DEX,
@CH_INT,
@CH_PNT,
@CH_RANK,
@CH_ALZ,
@CH_STYLE,
@CH_FLAGS,
@CH_HP,
@CH_MP,
@CH_SP,
@CH_DP,
@CH_DPLASTTIME,
@CH_SWDPNT,
@CH_MAGPNT,
@CH_RANKEXP,
@CH_PENALTYEXP,
@CH_WARPBFIELD,
@CH_MAPSBFIELD,
@CH_NAME,
@CH_RP,
@CH_REPUTATION,
@CH_PKPENALTY,
@CH_NATION,
@EQ_DATA,
@EQ_LOCK_DATA,
@IV_DATA,
@SI_DATA,
@SK_DATA,
@QK_DATA,
@ABILITY_POINT,
@ABILITY_EXP_POINT,
@ABILITY_POINT_TOTAL,
@PASSIVE_ABILITY_DATA,
@BLENDED_ABILITY_DATA,
@ASSISTANT_DATA,
@BBEAD_DATA,
@QE_DATA,
@QE_FLAGS,
@QE_DEL_FLAGS,
@DailyQuest,
@LastDailyQuestResetTime,
@QD_FLAGS,
@MD_FLAGS,
@EMSUSERSTATE_DATA,
@CRAFTLEVEL0,
@CRAFTLEVEL1,
@CRAFTLEVEL2,
@CRAFTLEVEL3,
@CRAFTLEVEL4,
@CRAFTEXP0,
@CRAFTEXP1,
@CRAFTEXP2,
@CRAFTEXP3,
@CRAFTEXP4,
@CRAFTFLAGS,
@RESERVED,
@WAREXP,
@WAREXPEARN,
@WAREXPUSED,
@POINT,
@SkillBuff,
@SkillBuffNonFixed,
@MultiPotionBuff,
@MultiPotionBuffNonFixed,
@GMBuff,
@GMBuffNonFixed,
@FCaliburBuff,
@FCaliburBuffNonFixed,
@RemainedSP,
@BattleModeType,
@BattleOverCharge,
@BattleMasteryLevel,
@AuraModeType,
@AuraOverCharge,
@AuraMasteryLevel,
@RidingStatus
, @ShapeChangeEquip
, @ShapeChangeInven
, @ShowTitleIdx
, @ApplyTitleIdx
, @AchievementPoint
, @DailyOpenTime
, @LinkOpenTime
, @LinkOpenCount
, @AchievementData
, @TitleData
, @PartialAchievement
, @AchievementHistory
, @SharedAchievementData
, @SharedTitleData
, @AchievementOpen
COMMIT TRAN
SET XACT_ABORT OFF
SET NOCOUNT OFF
END
USE [Server01]
GO
/****** Object: StoredProcedure [dbo].[get_cabal_character] Script Date: 7/7/2019 12:06:24 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Batch submitted through debugger: SQLQuery3.sql|7|0|C:\Users\Goldenheaven\AppData\Local\Temp\~vs83FA.sql
ALTER PROCEDURE [dbo].[get_cabal_character](@characteridx INT, @channelidx INT, @userip CHAR(16), @WorldAuthKey int)
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRAN
DECLARE @USERNUM INT
SET @USERNUM = @CHARACTERIDX/8
-- CHARACTER
DECLARE @LOGOUT_TIME DATETIME, @LOGIN_TIME DATETIME, @OLDRESTTIME AS INT, @RESTTIME AS INT
DECLARE
@CH_WORLDIDX INT,
@CH_POSITION INT,
@CH_LEV INT,
@CH_EXP BIGINT,
@CH_STR INT,
@CH_DEX INT,
@CH_INT INT,
@CH_PNT INT,
@CH_RANK INT,
@CH_ALZ BIGINT,
@CH_STYLE INT,
@CH_FLAGS INT,
@CH_HP INT,
@CH_MP INT,
@CH_SP INT,
@CH_DP INT,
@CH_DPLASTTIME INT,
@CH_SWDPNT INT,
@CH_MAGPNT INT,
@CH_RANKEXP INT,
@CH_PENALTYEXP INT,
@CH_WARPBFIELD INT,
@CH_MAPSBFIELD INT,
@CH_NAME VARCHAR(50),
@CH_RP INT,
@CH_REPUTATION INT,
@CH_PKPENALTY INT,
@CH_NATION TINYINT,
@CRAFTLEVEL0 INT,
@CRAFTLEVEL1 INT,
@CRAFTLEVEL2 INT,
@CRAFTLEVEL3 INT,
@CRAFTLEVEL4 INT,
@CRAFTEXP0 INT,
@CRAFTEXP1 INT,
@CRAFTEXP2 INT,
@CRAFTEXP3 INT,
@CRAFTEXP4 INT,
@CRAFTFLAGS VARBINARY(16),
@RESERVED BIGINT
SELECT
@CH_WORLDIDX = WORLDIDX,
@CH_POSITION = POSITION,
@CH_LEV = LEV,
@CH_EXP = EXP,
@CH_STR = STR,
@CH_DEX = DEX,
@CH_INT = INT,
@CH_PNT = PNT,
@CH_RANK = RANK,
@CH_ALZ = ALZ,
@CH_STYLE = STYLE,
@CH_FLAGS = FLAGS,
@CH_HP = HP,
@CH_MP = MP,
@CH_SP = SP,
@CH_SWDPNT = SWDPNT,
@CH_MAGPNT = MAGPNT,
@CH_RANKEXP = RANKEXP,
@CH_PENALTYEXP = PENALTYEXP,
@CH_WARPBFIELD = WARPBFIELD,
@CH_MAPSBFIELD = MAPSBFIELD,
@CH_NAME = NAME,
@CH_RP = ISNULL(RP, 0),
@CH_REPUTATION = REPUTATION,
@CH_PKPENALTY = PKPENALTY,
@CH_NATION = NATION,
@LOGOUT_TIME = LOGOUTTIME,
@RESERVED = RESERVED1
FROM CABAL_CHARACTER_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
SELECT -1
COMMIT TRAN
RETURN
END
IF @CH_NATION = 3 -- GM
BEGIN
DECLARE @RegisteredIP BIT
exec cabal_sp_linked_gm_ip_check @userip, @RegisteredIP OUTPUT
IF(@RegisteredIP = 0)
BEGIN
SELECT -1
COMMIT TRAN
RETURN
END
END
IF @LOGOUT_TIME IS NULL
BEGIN
SET @LOGOUT_TIME = GETDATE()
END
SET @LOGIN_TIME = GETDATE()
SET @RESTTIME = DATEDIFF( MINUTE, @LOGOUT_TIME, @LOGIN_TIME)
SET @CH_RP = @CH_RP + @RESTTIME
IF(@CH_RP > 10080)
BEGIN
SET @CH_RP = 10080
END
UPDATE CABAL_CHARACTER_TABLE SET
RP =@CH_RP,
LOGINTIME=@LOGIN_TIME,
LOGOUTTIME=@LOGIN_TIME,
CHANNELIDX=@CHANNELIDX
WHERE CHARACTERIDX = @CHARACTERIDX
--------------------------------------------------------------------------------------------------------------------------------------------
--
-- Reset System
-- Author: chacina
-- Mod: guybrush,Goldenheaven
--
--------------------------------------------------------------------------------------------------------------------------------------------
DECLARE
@MaxLevel int,
@ResetPoint int,
@AlzReq bigint,
@STR_ int,
@DEX_ int,
@INT_ int,
@HP_ int,
@MP_ int,
@WorldIdx_ int,
@Position_ int,
@ClassReset_ int,
@reset int
-- Basic Config
--------------------------------------------------------------------------------------------------------------------------------------------
SET @MaxLevel = 190 -- Level for reset
SET @ResetPoint = 250 -- Point for add after reset
SET @AlzReq = 1000000 -- Alz required for reset
SET @ClassReset_ = dbo.SplitStyle('BattleStyle',@CH_STYLE)
-- getting the reset number
set @reset= (select reset from cabal_character_table where CharacterIdx=@CHARACTERIDX)
IF(@CH_LEV = @MaxLevel)
BEGIN
-- Class Config
--------------------------------------------------------------------------------------------------------------------------------------------
--Warrior
IF(@ClassReset_=1)
BEGIN
SET @STR_ = 24 -- STR after you reset
SET @DEX_ = 8 -- DEX after you reset
SET @INT_ = 3 -- INT after you reset
SET @WorldIdx_ = 1 -- You will born in this world
SET @Position_ = 1376293 -- Coordenate
END
--wizard
ELSE IF(@ClassReset_=2)
BEGIN
SET @STR_ = 3 -- STR after you reset
SET @DEX_ = 6 -- DEX after you reset
SET @INT_ = 26 -- INT after you reset
SET @WorldIdx_ = 2 -- You will born in this world
SET @Position_ = 4915405 -- Coordenate
END
--blader
ELSE IF(@ClassReset_=3)
BEGIN
SET @STR_ = 16 -- STR after you reset
SET @DEX_ = 16 -- DEX after you reset
SET @INT_ = 3 -- INT after you reset
SET @WorldIdx_ = 2 -- You will born in this world
SET @Position_ = 4915405 -- Coordenate
END
--forcer archer
ELSE IF(@ClassReset_=4)
BEGIN
SET @STR_ = 6 -- STR after you reset
SET @DEX_ = 12 -- DEX after you reset
SET @INT_ = 17 -- INT after you reset
SET @WorldIdx_ = 3 -- You will born in this world
SET @Position_ = 10485821 -- Coordenate
END
--forcer shielder
ELSE IF(@ClassReset_=5)
BEGIN
SET @STR_ = 15 -- STR after you reset
SET @DEX_ = 9 -- DEX after you reset
SET @INT_ = 11 -- INT after you reset
SET @WorldIdx_ = 1 -- You will born in this world
SET @Position_ = 1376293 -- Coordenate
END
--forcer blader
ELSE IF(@ClassReset_=6)
BEGIN
SET @STR_ = 12 -- STR after you reset
SET @DEX_ = 11 -- DEX after you reset
SET @INT_ = 12 -- INT after you reset
SET @WorldIdx_ = 3 -- You will born in this world
SET @Position_ = 10485821 -- Coordenate
END
UPDATE cabal_character_table
SET LEV = 1, EXP = 0, STR = @STR_, DEX = @DEX_, INT = @INT_, PNT = @ResetPoint * (@reset + 1),
HP = @CH_HP+ ((@reset + 1)*500), MP = @CH_MP+ ((@reset + 1)*1000), Alz = Alz - @AlzReq, WorldIdx = @WorldIdx_,
Position = @Position_, Reset = @reset + 1
WHERE LEV = @MaxLevel AND Alz >= @AlzReq AND Login = 0 AND CharacterIdx=@CHARACTERIDX
END
---------------------------------------------------------------------------------------------------------
-- End reset system
---------------------------------------------------------------------------------------------------------
-- DP
SELECT
@CH_DP = DP,
@CH_DPLASTTIME = DPLastGetTime FROM CABAL_DUNGEONPOINT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_DUNGEONPOINT_TABLE
VALUES(@CHARACTERIDX, 0, 0)
SET @CH_DP = 0
SET @CH_DPLASTTIME = 0
END
-- EQUIPMENT
DECLARE
@EQ_DATA VARBINARY(512)
SELECT
@EQ_DATA = DATA
FROM CABAL_EQUIPMENT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_EQUIPMENT_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @EQ_DATA = 0X
END
-- EQUIPMENT LOCK
DECLARE
@EQ_LOCK_DATA VARBINARY(512)
SELECT
@EQ_LOCK_DATA = DATA
FROM CABAL_EQUIPMENT_LOCK_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_EQUIPMENT_LOCK_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @EQ_LOCK_DATA = 0X
END
-- INVENTORY
DECLARE
@IV_DATA VARBINARY(8000)
SELECT
@IV_DATA = DATA
FROM CABAL_INVENTORY_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_INVENTORY_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @IV_DATA = 0X
END
--SOLD ITEM
DECLARE @SI_DATA VARBINARY(512)
SELECT
@SI_DATA = DATA
FROM CABAL_SOLD_ITEM_TABLE
WHERE CHARACTERIDX = @characteridx
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_SOLD_ITEM_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @SI_DATA = 0X
END
-- SKILLLIST
DECLARE
@SK_DATA VARBINARY(1024)
SELECT
@SK_DATA = DATA
FROM CABAL_SKILLLIST_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_SKILLLIST_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @SK_DATA = 0X
END
-- QUICKSLOT
DECLARE
@QK_DATA VARBINARY(512)
SELECT
@QK_DATA = DATA
FROM CABAL_QUICKSLOT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_QUICKSLOT_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @QK_DATA = 0X
END
---------------------------------------------------
DECLARE @PASSIVE_ABILITY_DATA VARBINARY(512)
DECLARE @BLENDED_ABILITY_DATA VARBINARY(256)
DECLARE @ABILITY_POINT INT
DECLARE @ABILITY_EXP_POINT INT
DECLARE @ABILITY_POINT_TOTAL INT
SELECT @ABILITY_POINT = AbilityPoint, @ABILITY_EXP_POINT = AbilityExp,
@PASSIVE_ABILITY_DATA = PassiveAbilityData, @BLENDED_ABILITY_DATA = BlendedAbilityData
,@ABILITY_POINT_TOTAL = pointTotal
FROM CABAL_SOUL_ABILITY_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_SOUL_ABILITY_TABLE
VALUES(@CHARACTERIDX, 0, 0, 0X, 0x, 0)
SET @PASSIVE_ABILITY_DATA = 0X
set @BLENDED_ABILITY_DATA = 0x
END
---------------------------------------------------
--Assistant
DECLARE @ASSISTANT_DATA VARBINARY(512)
SELECT @ASSISTANT_DATA = DATA
FROM cabal_Assistant_table
WHERE CHARACTERIDX = @characteridx
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO cabal_Assistant_table
VALUES(@CHARACTERIDX, 0X)
SET @ASSISTANT_DATA = 0X
END
---------------------------------------------------
-- BLESSING BEAD
DECLARE
@BBEAD_DATA VARBINARY(512)
SELECT
@BBEAD_DATA = DATA
FROM CABAL_BBEAD_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_BBEAD_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @BBEAD_DATA = 0X
END
-- QUESTDATA
DECLARE
@QE_DATA VARBINARY(128),
@QE_FLAGS VARBINARY(512),
@QE_DEL_FLAGS VARBINARY(512),
@DailyQuest VARBINARY(2048),
@LastDailyQuestResetTime BIGINT
SELECT
@QE_DATA = DATA,
@QE_FLAGS = FLAGS,
@QE_DEL_FLAGS = ISNULL(DEL_FLAGS, 0X0),
@DailyQuest = ISNULL(DailyQuest, 0x),
@LastDailyQuestResetTime = ISNULL(LastDailyQuestResetTime, 0)
FROM CABAL_QUESTDATA_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_QUESTDATA_TABLE
(CHARACTERIDX, DATA, FLAGS, DEL_FLAGS)
VALUES(@CHARACTERIDX, 0X, CONVERT(BINARY(64), 0), 0X)
SET @QE_DATA = 0X
SET @QE_FLAGS = CONVERT(BINARY(64),0)
SET @QE_DEL_FLAGS = 0X
SET @DailyQuest = 0x
SET @LastDailyQuestResetTime = 0
END
-- QDDATA
DECLARE
@QD_FLAGS VARBINARY(128),
@MD_FLAGS VARBINARY(128)
SELECT
@QD_FLAGS = FLAGS,
@MD_FLAGS = MDFLAGS
FROM CABAL_QDDATA_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_QDDATA_TABLE
VALUES(@CHARACTERIDX, 0x, 0x)
SET @QD_FLAGS = 0x
SET @MD_FLAGS = 0x
END
SELECT @CRAFTLEVEL0 = LEVEL0,
@CRAFTLEVEL1 = LEVEL1,
@CRAFTLEVEL2 = LEVEL2,
@CRAFTLEVEL3 = LEVEL3,
@CRAFTLEVEL4 = LEVEL4,
@CRAFTEXP0 = EXP0,
@CRAFTEXP1 = EXP1,
@CRAFTEXP2 = EXP2,
@CRAFTEXP3 = EXP3,
@CRAFTEXP4 = EXP4,
@CRAFTFLAGS = FLAGS
FROM CABAL_CRAFT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_CRAFT_TABLE ( CHARACTERIDX ) VALUES ( @CHARACTERIDX )
SELECT @CRAFTLEVEL0 = LEVEL0,
@CRAFTLEVEL1 = LEVEL1,
@CRAFTLEVEL2 = LEVEL2,
@CRAFTLEVEL3 = LEVEL3,
@CRAFTLEVEL4 = LEVEL4,
@CRAFTEXP0 = EXP0,
@CRAFTEXP1 = EXP1,
@CRAFTEXP2 = EXP2,
@CRAFTEXP3 = EXP3,
@CRAFTEXP4 = EXP4,
@CRAFTFLAGS = FLAGS
FROM CABAL_CRAFT_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
END
DECLARE @WAREXP BIGINT
DECLARE @WAREXPEARN BIGINT
DECLARE @WAREXPUSED BIGINT
SELECT @WAREXP = WAREXP, @WAREXPEARN = WAREXPEARN, @WAREXPUSED = WAREXPUSED
FROM CABAL_WAREXP_TABLE WHERE CHARACTERIDX = @CHARACTERIDX
IF(@@ROWCOUNT = 0)
BEGIN
SET @WAREXP = 0
SET @WAREXPEARN = 0
SET @WAREXPUSED = 0
END
-- 2 <= EMS_VERSION
DECLARE @EMSUSERSTATE_DATA VARBINARY(1024)
SELECT @EMSUSERSTATE_DATA = DATA
FROM
CABAL_EMS_USERSTATE_TABLE
WHERE
CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO CABAL_EMS_USERSTATE_TABLE
VALUES(@CHARACTERIDX, 0X)
SET @EMSUSERSTATE_DATA = 0X
END
DECLARE @POINT INT
SET @POINT = 0
SELECT @POINT = GUILDAXPPOINT
FROM GUILDMEMBER
WHERE CHARACTERINDEX = @CHARACTERIDX
DECLARE @SkillBuff VARBINARY(320)
DECLARE @SkillBuffNonFixed VARBINARY(240)
DECLARE @MultiPotionBuff VARBINARY(320)
DECLARE @MultiPotionBuffNonFixed VARBINARY(240)
DECLARE @GMBuff VARBINARY(320)
DECLARE @GMBuffNonFixed VARBINARY(240)
DECLARE @FCaliburBuff VARBINARY(320)
DECLARE @FCaliburBuffNonFixed VARBINARY(240)
DECLARE @RemainedSP INT
DECLARE @BattleModeType TINYINT
DECLARE @BattleOverCharge TINYINT
DECLARE @BattleMasteryLevel TINYINT
DECLARE @AuraModeType TINYINT
DECLARE @AuraOverCharge TINYINT
DECLARE @AuraMasteryLevel TINYINT
DECLARE @RidingStatus INT
SELECT
@SkillBuff = SkillBuff,
@SkillBuffNonFixed = SkillBuffNonFixed,
@MultiPotionBuff = MultiPotionBuff,
@MultiPotionBuffNonFixed = MultiPotionBuffNonFixed,
@GMBuff = GMBuff,
@GMBuffNonFixed = GMBuffNonFixed,
@FCaliburBuff = ForceCaliburBuff,
@FCaliburBuffNonFixed = ForceCaliburBuffNonFixed,
@RemainedSP = RemainedSP,
@BattleModeType = BattleModeType,
@BattleOverCharge = BattleOverCharge,
@BattleMasteryLevel = BattleMasteryLevel,
@AuraModeType = AuraModeType,
@AuraOverCharge = AuraOverCharge,
@AuraMasteryLevel = AuraMasteryLevel,
@RidingStatus = RidingStatus
FROM cabal_saved_buff_table
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO cabal_saved_buff_table
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT
@SkillBuff = SkillBuff,
@SkillBuffNonFixed = SkillBuffNonFixed,
@MultiPotionBuff = MultiPotionBuff,
@MultiPotionBuffNonFixed = MultiPotionBuffNonFixed,
@GMBuff = GMBuff,
@GMBuffNonFixed = GMBuffNonFixed,
@FCaliburBuff = ForceCaliburBuff,
@FCaliburBuffNonFixed = ForceCaliburBuffNonFixed,
@RemainedSP = RemainedSP,
@BattleModeType = BattleModeType,
@BattleOverCharge = BattleOverCharge,
@BattleMasteryLevel = BattleMasteryLevel,
@AuraModeType = AuraModeType,
@AuraOverCharge = AuraOverCharge,
@AuraMasteryLevel = AuraMasteryLevel,
@RidingStatus = RidingStatus
FROM cabal_saved_buff_table
WHERE CharacterIdx = @CHARACTERIDX
END
-- 외형 변경
DECLARE @ShapeChangeEquip VARBINARY(300)
DECLARE @ShapeChangeInven VARBINARY(3000)
SELECT
@ShapeChangeEquip = ShapeChangeEquip,
@ShapeChangeInven = ShapeChangeInven
FROM cabal_item_extend_table
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO cabal_item_extend_table
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT
@ShapeChangeEquip = ShapeChangeEquip,
@ShapeChangeInven = ShapeChangeInven
FROM cabal_item_extend_table
WHERE CharacterIdx = @CHARACTERIDX
END
DECLARE @ShowTitleIdx INT
DECLARE @ApplyTitleIdx INT
DECLARE @AchievementPoint VARBINARY(64)
DECLARE @DailyOpenTime BIGINT
DECLARE @LinkOpenTime BIGINT
DECLARE @LinkOpenCount int
DECLARE @AchievementData VARBINARY(4800)
DECLARE @TitleData VARBINARY(3600)
DECLARE @PartialAchievement VARBINARY(4000)
DECLARE @AchievementHistory VARBINARY(8000)
DECLARE @SharedAchievementData VARBINARY(8000)
DECLARE @SharedTitleData VARBINARY(8000)
DECLARE @AchievementOpen VARBINARY(8000)
SELECT
@ShowTitleIdx = ShowTitleIdx,
@ApplyTitleIdx = ApplyTitleIdx,
@AchievementPoint = AchievementPoint,
@DailyOpenTime = DailyOpenTime,
@LinkOpenTime = LinkOpenTime,
@LinkOpenCount = LinkOpenCount,
@AchievementData = AchievementData,
@TitleData = TitleData,
@PartialAchievement = PartialAchievement
FROM [cabal_achievement_title]
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [cabal_achievement_title]
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT
@ShowTitleIdx = ShowTitleIdx,
@ApplyTitleIdx = ApplyTitleIdx,
@AchievementPoint = AchievementPoint,
@DailyOpenTime = DailyOpenTime,
@LinkOpenTime = LinkOpenTime,
@LinkOpenCount = LinkOpenCount,
@AchievementData = AchievementData,
@TitleData = TitleData,
@PartialAchievement = PartialAchievement
FROM [cabal_achievement_title]
WHERE CharacterIdx = @CHARACTERIDX
END
SELECT
@SharedAchievementData = SharedAchievementData,
@SharedTitleData = SharedTitleData
FROM [cabal_achievement_title_shared]
WHERE UserNum = (@CHARACTERIDX / 8)
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [cabal_achievement_title_shared]
(UserNum)
VALUES
((@CHARACTERIDX / 8))
SELECT
@SharedAchievementData = SharedAchievementData,
@SharedTitleData = SharedTitleData
FROM [cabal_achievement_title_shared]
WHERE UserNum = (@CHARACTERIDX / 8)
END
SELECT @AchievementHistory = AchievementHistory
FROM [cabal_achievement_history]
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [cabal_achievement_history]
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT @AchievementHistory = AchievementHistory
FROM [cabal_achievement_history]
WHERE CharacterIdx = @CHARACTERIDX
END
SELECT @AchievementOpen = AchievementOpen
FROM [cabal_achievement_open]
WHERE CharacterIdx = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [cabal_achievement_open]
(CharacterIdx)
VALUES
(@CHARACTERIDX)
SELECT @AchievementOpen = AchievementOpen
FROM [cabal_achievement_open]
WHERE CharacterIdx = @CHARACTERIDX
END
UPDATE cabal_last_login_character
SET worldAuthKey = @WorldAuthKey
WHERE UserNum = @USERNUM
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO cabal_last_login_character
(UserNum, LastLoginChar, CharSlotOrder, WorldAuthKey)
VALUES
(@USERNUM, 0, 0, @WorldAuthKey)
END
SELECT
@CH_WORLDIDX,
@CH_POSITION,
@CH_LEV ,
@CH_EXP,
@CH_STR,
@CH_DEX,
@CH_INT,
@CH_PNT,
@CH_RANK,
@CH_ALZ,
@CH_STYLE,
@CH_FLAGS,
@CH_HP,
@CH_MP,
@CH_SP,
@CH_DP,
@CH_DPLASTTIME,
@CH_SWDPNT,
@CH_MAGPNT,
@CH_RANKEXP,
@CH_PENALTYEXP,
@CH_WARPBFIELD,
@CH_MAPSBFIELD,
@CH_NAME,
@CH_RP,
@CH_REPUTATION,
@CH_PKPENALTY,
@CH_NATION,
@EQ_DATA,
@EQ_LOCK_DATA,
@IV_DATA,
@SI_DATA,
@SK_DATA,
@QK_DATA,
@ABILITY_POINT,
@ABILITY_EXP_POINT,
@ABILITY_POINT_TOTAL,
@PASSIVE_ABILITY_DATA,
@BLENDED_ABILITY_DATA,
@ASSISTANT_DATA,
@BBEAD_DATA,
@QE_DATA,
@QE_FLAGS,
@QE_DEL_FLAGS,
@DailyQuest,
@LastDailyQuestResetTime,
@QD_FLAGS,
@MD_FLAGS,
@EMSUSERSTATE_DATA,
@CRAFTLEVEL0,
@CRAFTLEVEL1,
@CRAFTLEVEL2,
@CRAFTLEVEL3,
@CRAFTLEVEL4,
@CRAFTEXP0,
@CRAFTEXP1,
@CRAFTEXP2,
@CRAFTEXP3,
@CRAFTEXP4,
@CRAFTFLAGS,
@RESERVED,
@WAREXP,
@WAREXPEARN,
@WAREXPUSED,
@POINT,
@SkillBuff,
@SkillBuffNonFixed,
@MultiPotionBuff,
@MultiPotionBuffNonFixed,
@GMBuff,
@GMBuffNonFixed,
@FCaliburBuff,
@FCaliburBuffNonFixed,
@RemainedSP,
@BattleModeType,
@BattleOverCharge,
@BattleMasteryLevel,
@AuraModeType,
@AuraOverCharge,
@AuraMasteryLevel,
@RidingStatus
, @ShapeChangeEquip
, @ShapeChangeInven
, @ShowTitleIdx
, @ApplyTitleIdx
, @AchievementPoint
, @DailyOpenTime
, @LinkOpenTime
, @LinkOpenCount
, @AchievementData
, @TitleData
, @PartialAchievement
, @AchievementHistory
, @SharedAchievementData
, @SharedTitleData
, @AchievementOpen
COMMIT TRAN
SET XACT_ABORT OFF
SET NOCOUNT OFF
END
USE [Server01]
GO
/****** Object: StoredProcedure [dbo].[cabal_sp_SetCharLoginStt] Script Date: 7/8/2019 9:27:34 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[cabal_sp_SetCharLoginStt](@CharacterIdx INT, @Login INT)
AS
BEGIN
IF(@Login = 1)
BEGIN
UPDATE CABAL_CHARACTER_TABLE
SET Login = 0
WHERE CharacterIdx BETWEEN (@CHARACTERIDX/8)*8 AND (@CharacterIdx/8)*8 + 6
END
UPDATE CABAL_CHARACTER_TABLE
SET Login = @Login
WHERE CharacterIdx = @CharacterIdx
--------------------------------------------------------------------------------------------------------------------------------------------
--
-- Reset System
-- Author: chacina
-- Mod: guybrush,Goldenheaven
--
--------------------------------------------------------------------------------------------------------------------------------------------
DECLARE
@MaxLevel int,
@ResetPoint int,
@AlzReq bigint,
@STR_ int,
@DEX_ int,
@INT_ int,
@HP_ int,
@MP_ int,
@WorldIdx_ int,
@Position_ int,
@ClassReset_ int,
@SPPoint int,
@resetlimit int,
@reset int,
@CH_ALZ BIGINT,
@CH_STYLE INT,
@CH_LEV INT,
@CH_HP INT,
@CH_SP INT,
@CH_MP INT
SELECT
@CH_LEV = LEV,
@CH_ALZ = ALZ,
@CH_STYLE = STYLE,
@CH_HP = HP,
@CH_MP = MP,
@CH_SP = SP,
@reset = Reset
FROM CABAL_CHARACTER_TABLE
WHERE CHARACTERIDX = @CHARACTERIDX
IF @@ROWCOUNT = 0
BEGIN
SELECT -1
COMMIT TRAN
RETURN
END
-- Basic Config
--------------------------------------------------------------------------------------------------------------------------------------------
SET @MaxLevel = 200 -- Level for reset
SET @ResetPoint = 250 -- Point for add after reset
SET @SPPoint = 250 -- Point for add after reset
SET @AlzReq = 1000000 -- Alz required for reset
SET @ClassReset_ = dbo.SplitStyle('BattleStyle',@CH_STYLE)
IF(@CH_LEV = @MaxLevel)
BEGIN
-- Class Config
--------------------------------------------------------------------------------------------------------------------------------------------
--Warrior
IF(@ClassReset_=1)
BEGIN
SET @STR_ = 24 -- STR after you reset
SET @DEX_ = 8 -- DEX after you reset
SET @INT_ = 3 -- INT after you reset
SET @WorldIdx_ = 1 -- You will born in this world
SET @Position_ = 1376293 -- Coordenate
END
--wizard
ELSE IF(@ClassReset_=2)
BEGIN
SET @STR_ = 3 -- STR after you reset
SET @DEX_ = 6 -- DEX after you reset
SET @INT_ = 26 -- INT after you reset
SET @WorldIdx_ = 2 -- You will born in this world
SET @Position_ = 4915405 -- Coordenate
END
--blader
ELSE IF(@ClassReset_=3)
BEGIN
SET @STR_ = 16 -- STR after you reset
SET @DEX_ = 16 -- DEX after you reset
SET @INT_ = 3 -- INT after you reset
SET @WorldIdx_ = 2 -- You will born in this world
SET @Position_ = 4915405 -- Coordenate
END
--forcer archer
ELSE IF(@ClassReset_=4)
BEGIN
SET @STR_ = 6 -- STR after you reset
SET @DEX_ = 12 -- DEX after you reset
SET @INT_ = 17 -- INT after you reset
SET @WorldIdx_ = 3 -- You will born in this world
SET @Position_ = 10485821 -- Coordenate
END
--forcer shielder
ELSE IF(@ClassReset_=5)
BEGIN
SET @STR_ = 15 -- STR after you reset
SET @DEX_ = 9 -- DEX after you reset
SET @INT_ = 11 -- INT after you reset
SET @WorldIdx_ = 1 -- You will born in this world
SET @Position_ = 1376293 -- Coordenate
END
--forcer blader
ELSE IF(@ClassReset_=6)
BEGIN
SET @STR_ = 12 -- STR after you reset
SET @DEX_ = 11 -- DEX after you reset
SET @INT_ = 12 -- INT after you reset
SET @WorldIdx_ = 3 -- You will born in this world
SET @Position_ = 10485821 -- Coordenate
END
SET @HP_ = @CH_HP/(POWER(2,16))+(500*@reset)
SET @MP_ = @CH_MP/(POWER(2,16))+(1000*@reset)
UPDATE cabal_character_table
SET LEV = 1, EXP = 0, STR = @STR_, DEX = @DEX_, INT = @INT_, SP= @CH_SP + @SPPoint * (@reset + 1), PNT = @ResetPoint * (@reset + 1),
HP = (@HP_*POWER(2, 16)+@HP_), MP = (@MP_*POWER(2, 16)+@MP_), Alz = Alz - @AlzReq, WorldIdx = @WorldIdx_,
Position = @Position_, Reset = @reset + 1
WHERE LEV = @MaxLevel AND Alz >= @AlzReq AND Login = 0 AND CharacterIdx=@CHARACTERIDX
END
---------------------------------------------------------------------------------------------------------
-- End reset system
---------------------------------------------------------------------------------------------------------
END
-----------------------------------------------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON