Hey guys, I have a small problem with my skills staying on the skill bar after i log off. I don't really know where to start looking to solve the issue.
The files i am using are the 8.1 files found here:
I would be thankful to receive help from you guys c:.
Delete your gameserver.eop....run rappelz compress....drag your newly edited gameserver.opt over to the compress window and drop it in there....poof..now the skill bar wont vanish.
Not quite as easy as that, Ill be back when you want to figure out how to get HV working again.
I was, and still am aware that changing it to 0 makes HV ineffective. However I have this awesome Zoidberg GM tool that allows me to give myself HV buffs.
The Hotkeys going missing coincide with a message in notice mode (Cannot Connect To Server) which coincides to an error throw both on the GameServer Console Log and in the GameLog.txt located in the server_bin (server folder)
This error is thrown by:
dbo.smp_check_purchased_item
Code:
USE [teal_sky_telecaster_test]
GO
/****** Object: StoredProcedure [dbo].[smp_check_purchased_item] Script Date: 6/24/2013 9:38:35 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[smp_check_purchased_item]
@IN_ACCOUNT_ID INT,
@IN_SID INT,
@OUT_TOTAL_ITEM_COUNT INT OUTPUT, /* Total Item Count */
@OUT_NEW_ITEM_COUNT INT OUTPUT, /* New Item Count (AKA New presents received)*/
@OUT_PREMIUM_TICKET INT OUTPUT, /* Premium Ticket Flag - 0 = No Pass*/
@OUT_PREMIUM_REST_TIME INT OUTPUT, /* HV Pass Time Remaining */
@OUT_STAMINA_REGEN_TIME INT OUTPUT /* Stam Regen Time (Stam Bonus) */
AS
SET NOCOUNT ON
SET @OUT_NEW_ITEM_COUNT = 10
SET @OUT_STAMINA_REGEN_TIME = 20
SET @OUT_PREMIUM_TICKET = 0
SET @OUT_PREMIUM_REST_TIME = 0
SELECT @OUT_PREMIUM_TICKET = COUNT(*) from PaidItem WITH (NOLOCK) where taken_account_id = @IN_ACCOUNT_ID and item_code = 910000 and valid_time > GETDATE()
IF @OUT_PREMIUM_TICKET > 0
BEGIN
/* Extend the Pass on first login after it is purchased to grant the user to full time on the pass based on the first login */
UPDATE PaidItem set valid_time = DATEADD(s, DATEDIFF(s, bought_time, GETDATE()), valid_time), taken_time = GETDATE() where taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND taken_time IS NULL
/** Combine passes by invalidating older passes and adding the combined extra time onto the most recently purchased pass **/
DECLARE @VALID_PASS_COUNT INT
SET @VALID_PASS_COUNT = 0
DECLARE @COMBINED_TIME INT
SET @COMBINED_TIME = 0
DECLARE @NEWEST_PASS INT
SET @NEWEST_PASS = -1
-- Check for more than one pass in Item Box. If there are combine them into one pass.
SELECT @VALID_PASS_COUNT = COUNT(*) FROM PaidItem WHERE taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE()
IF @VALID_PASS_COUNT > 1
BEGIN
-- Get the combined time of all active passes
SELECT @COMBINED_TIME = SUM(DATEDIFF(s, GETDATE(), valid_time)) from PaidItem where taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE()
-- Select the most recent pass
SELECT TOP (1) @NEWEST_PASS = sid from PaidItem where taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE() ORDER BY bought_time DESC
-- Invalidate all but the most recent pass
SET ROWCOUNT 1
WHILE 1=1
BEGIN
UPDATE PaidItem set valid_time = GETDATE(), rest_item_count=0 WHERE sid IN ( SELECT TOP 1 sid FROM PaidItem WITH (NOLOCK) WHERE taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE() AND sid <> @NEWEST_PASS )
IF @@ROWCOUNT = 0 BREAK
END
SET ROWCOUNT 0
-- Extend the most recent pass by the Combined time - the current time
UPDATE PaidItem set valid_time = DATEADD(s, @COMBINED_TIME, GETDATE()), rest_item_count=0 WHERE taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE()AND sid = @NEWEST_PASS
END
-- end combine passes
SELECT @OUT_PREMIUM_REST_TIME = MAX(DATEDIFF(s, GETDATE(), valid_time)) from PaidItem WITH (NOLOCK) where taken_account_id = @IN_ACCOUNT_ID and item_code = 910000 and valid_time > GETDATE()
SELECT @OUT_TOTAL_ITEM_COUNT = COUNT(*) from PaidItem WITH (NOLOCK) where taken_account_id = @IN_ACCOUNT_ID and rest_item_count > 0;
SELECT @OUT_NEW_ITEM_COUNT = COUNT(*) from PaidItem WITH (NOLOCK) where taken_account_id = @IN_ACCOUNT_ID and rest_item_count > 0 and confirmed = 0;
END
RETURN @@ERROR
USE [teal_sky_telecaster_test]
GO
/****** Object: StoredProcedure [dbo].[smp_takeout_commercial_item] Script Date: 6/24/2013 9:39:39 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[smp_takeout_commercial_item]
@OUT_ITEM_CODE INT OUTPUT,
@IN_SID INT,
@IN_COUNT INT,
@IN_ACCOUNT_ID INT,
@IN_AVATAR_ID INT,
@IN_AVATAR_NAME VARCHAR(61),
@IN_SERVER_NAME VARCHAR(30),
@IN_TRANSACTION_CODE INT,
@IN_IDX INT
AS
SET NOCOUNT ON
SET @OUT_ITEM_CODE = 0
DECLARE @RET INT
SET @RET = -1
DECLARE @REST_ITEM_COUNT INT
SET @REST_ITEM_COUNT = -1
-- °¹¼ِ ہج»َ
IF @IN_COUNT < 1
BEGIN
GOTO ON_END
END
BEGIN TRANSACTION
SELECT @REST_ITEM_COUNT = rest_item_count FROM dbo.PaidItem WHERE sid = @IN_SID;
IF @REST_ITEM_COUNT < @IN_COUNT
BEGIN
ROLLBACK TRANSACTION
GOTO ON_END
END
-- Remove item(s) from Item Box
UPDATE dbo.PaidItem SET
rest_item_count = ( @REST_ITEM_COUNT - @IN_COUNT ),
taken_avatar_id = @IN_AVATAR_ID,
taken_avatar_name = @IN_AVATAR_NAME,
taken_server_name = @IN_SERVER_NAME,
taken_time = GETDATE()
WHERE sid = @IN_SID and taken_account_id = @IN_ACCOUNT_ID;
SET @RET = 0
DECLARE @ACCOUNT_ID INT
SET @ACCOUNT_ID = -1
SELECT @OUT_ITEM_CODE = item_code, @ACCOUNT_ID = taken_account_id from dbo.PaidItem where sid = @IN_SID;
IF @ACCOUNT_ID <> @IN_ACCOUNT_ID
BEGIN
SET @OUT_ITEM_CODE = 0
ROLLBACK TRANSACTION
GOTO ON_END
END
-- Add the item(s) to the character
INSERT INTO dbo.Item (
sid, -- 0
owner_id, -- 1
account_id, -- 2
summon_id, -- 3
auction_id, -- 4
keeping_id, -- 5
idx, -- 6
code, -- 7
flag, -- 8
cnt, -- 9
[level], -- 10
enhance,
ethereal_durability, -- 11
endurance, -- 12
gcode, -- 13
create_time, -- 14
wear_info, -- 15
socket_0, -- 16
socket_1, -- 17
socket_2, -- 18
socket_3, -- 19
remain_time, -- 20
elemental_effect_type, -- 21
elemental_effect_expire_time, -- 22
elemental_effect_attack_point, -- 23
elemental_effect_magic_point, -- 24
update_time -- 25
)
VALUES (
@IN_TRANSACTION_CODE, -- 0
@IN_AVATAR_ID, -- 1
@IN_ACCOUNT_ID, -- 2
0, -- 3
0, -- 4
0, -- 5
@IN_IDX, -- 6
@OUT_ITEM_CODE, -- 7
0, -- 8
@IN_COUNT, -- 9
0, -- 10
0,
0, -- 11
0, -- 12
0, -- 13
GETDATE(), -- 14
-1, -- 15
0, -- 16
0, -- 17
0, -- 18
0, -- 19
0, -- 20
0, -- 21
0, -- 22
0, -- 23
0, -- 24
GETDATE() -- 25
);
SET @RET = @@ERROR
IF @RET <> 0
BEGIN
ROLLBACK TRANSACTION
GOTO ON_END
END
COMMIT TRANSACTION
ON_END:
RETURN @RET
The above setup was originally intended for 7.3/7.4 but is applicable in 8.1 as-well. (Be warned that is completely removes the whole "billing" schema as I found it to be useless. Hope this helps!
I figure the OP is smart enough to change teal_sky_telecaster_test (if not, oh boy)
The spawn_type would be a good work around, but you should tell him if he disables the native Cash-Shop System (e.g. Paid) he will also be disabling his ability to use the PaidItem-Box (e.g. Item Box)
Just a note, whichever path he chooses -- good luck.
Delete your gameserver.eop....run rappelz compress....drag your newly edited gameserver.opt over to the compress window and drop it in there....poof..now the skill bar wont vanish.
The Hotkeys going missing coincide with a message in notice mode (Cannot Connect To Server) which coincides to an error throw both on the GameServer Console Log and in the GameLog.txt located in the server_bin (server folder)
This error is thrown by:
dbo.smp_check_purchased_item
Code:
USE [teal_sky_telecaster_test]
GO
/****** Object: StoredProcedure [dbo].[smp_check_purchased_item] Script Date: 6/24/2013 9:38:35 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[smp_check_purchased_item]
@IN_ACCOUNT_ID INT,
@IN_SID INT,
@OUT_TOTAL_ITEM_COUNT INT OUTPUT, /* Total Item Count */
@OUT_NEW_ITEM_COUNT INT OUTPUT, /* New Item Count (AKA New presents received)*/
@OUT_PREMIUM_TICKET INT OUTPUT, /* Premium Ticket Flag - 0 = No Pass*/
@OUT_PREMIUM_REST_TIME INT OUTPUT, /* HV Pass Time Remaining */
@OUT_STAMINA_REGEN_TIME INT OUTPUT /* Stam Regen Time (Stam Bonus) */
AS
SET NOCOUNT ON
SET @OUT_NEW_ITEM_COUNT = 10
SET @OUT_STAMINA_REGEN_TIME = 20
SET @OUT_PREMIUM_TICKET = 0
SET @OUT_PREMIUM_REST_TIME = 0
SELECT @OUT_PREMIUM_TICKET = COUNT(*) from PaidItem WITH (NOLOCK) where taken_account_id = @IN_ACCOUNT_ID and item_code = 910000 and valid_time > GETDATE()
IF @OUT_PREMIUM_TICKET > 0
BEGIN
/* Extend the Pass on first login after it is purchased to grant the user to full time on the pass based on the first login */
UPDATE PaidItem set valid_time = DATEADD(s, DATEDIFF(s, bought_time, GETDATE()), valid_time), taken_time = GETDATE() where taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND taken_time IS NULL
/** Combine passes by invalidating older passes and adding the combined extra time onto the most recently purchased pass **/
DECLARE @VALID_PASS_COUNT INT
SET @VALID_PASS_COUNT = 0
DECLARE @COMBINED_TIME INT
SET @COMBINED_TIME = 0
DECLARE @NEWEST_PASS INT
SET @NEWEST_PASS = -1
-- Check for more than one pass in Item Box. If there are combine them into one pass.
SELECT @VALID_PASS_COUNT = COUNT(*) FROM PaidItem WHERE taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE()
IF @VALID_PASS_COUNT > 1
BEGIN
-- Get the combined time of all active passes
SELECT @COMBINED_TIME = SUM(DATEDIFF(s, GETDATE(), valid_time)) from PaidItem where taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE()
-- Select the most recent pass
SELECT TOP (1) @NEWEST_PASS = sid from PaidItem where taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE() ORDER BY bought_time DESC
-- Invalidate all but the most recent pass
SET ROWCOUNT 1
WHILE 1=1
BEGIN
UPDATE PaidItem set valid_time = GETDATE(), rest_item_count=0 WHERE sid IN ( SELECT TOP 1 sid FROM PaidItem WITH (NOLOCK) WHERE taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE() AND sid <> @NEWEST_PASS )
IF @@ROWCOUNT = 0 BREAK
END
SET ROWCOUNT 0
-- Extend the most recent pass by the Combined time - the current time
UPDATE PaidItem set valid_time = DATEADD(s, @COMBINED_TIME, GETDATE()), rest_item_count=0 WHERE taken_account_id = @IN_ACCOUNT_ID AND item_code = 910000 AND valid_time > GETDATE()AND sid = @NEWEST_PASS
END
-- end combine passes
SELECT @OUT_PREMIUM_REST_TIME = MAX(DATEDIFF(s, GETDATE(), valid_time)) from PaidItem WITH (NOLOCK) where taken_account_id = @IN_ACCOUNT_ID and item_code = 910000 and valid_time > GETDATE()
SELECT @OUT_TOTAL_ITEM_COUNT = COUNT(*) from PaidItem WITH (NOLOCK) where taken_account_id = @IN_ACCOUNT_ID and rest_item_count > 0;
SELECT @OUT_NEW_ITEM_COUNT = COUNT(*) from PaidItem WITH (NOLOCK) where taken_account_id = @IN_ACCOUNT_ID and rest_item_count > 0 and confirmed = 0;
END
RETURN @@ERROR
USE [teal_sky_telecaster_test]
GO
/****** Object: StoredProcedure [dbo].[smp_takeout_commercial_item] Script Date: 6/24/2013 9:39:39 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[smp_takeout_commercial_item]
@OUT_ITEM_CODE INT OUTPUT,
@IN_SID INT,
@IN_COUNT INT,
@IN_ACCOUNT_ID INT,
@IN_AVATAR_ID INT,
@IN_AVATAR_NAME VARCHAR(61),
@IN_SERVER_NAME VARCHAR(30),
@IN_TRANSACTION_CODE INT,
@IN_IDX INT
AS
SET NOCOUNT ON
SET @OUT_ITEM_CODE = 0
DECLARE @RET INT
SET @RET = -1
DECLARE @REST_ITEM_COUNT INT
SET @REST_ITEM_COUNT = -1
-- °¹¼ِ ہج»َ
IF @IN_COUNT < 1
BEGIN
GOTO ON_END
END
BEGIN TRANSACTION
SELECT @REST_ITEM_COUNT = rest_item_count FROM dbo.PaidItem WHERE sid = @IN_SID;
IF @REST_ITEM_COUNT < @IN_COUNT
BEGIN
ROLLBACK TRANSACTION
GOTO ON_END
END
-- Remove item(s) from Item Box
UPDATE dbo.PaidItem SET
rest_item_count = ( @REST_ITEM_COUNT - @IN_COUNT ),
taken_avatar_id = @IN_AVATAR_ID,
taken_avatar_name = @IN_AVATAR_NAME,
taken_server_name = @IN_SERVER_NAME,
taken_time = GETDATE()
WHERE sid = @IN_SID and taken_account_id = @IN_ACCOUNT_ID;
SET @RET = 0
DECLARE @ACCOUNT_ID INT
SET @ACCOUNT_ID = -1
SELECT @OUT_ITEM_CODE = item_code, @ACCOUNT_ID = taken_account_id from dbo.PaidItem where sid = @IN_SID;
IF @ACCOUNT_ID <> @IN_ACCOUNT_ID
BEGIN
SET @OUT_ITEM_CODE = 0
ROLLBACK TRANSACTION
GOTO ON_END
END
-- Add the item(s) to the character
INSERT INTO dbo.Item (
sid, -- 0
owner_id, -- 1
account_id, -- 2
summon_id, -- 3
auction_id, -- 4
keeping_id, -- 5
idx, -- 6
code, -- 7
flag, -- 8
cnt, -- 9
[level], -- 10
enhance,
ethereal_durability, -- 11
endurance, -- 12
gcode, -- 13
create_time, -- 14
wear_info, -- 15
socket_0, -- 16
socket_1, -- 17
socket_2, -- 18
socket_3, -- 19
remain_time, -- 20
elemental_effect_type, -- 21
elemental_effect_expire_time, -- 22
elemental_effect_attack_point, -- 23
elemental_effect_magic_point, -- 24
update_time -- 25
)
VALUES (
@IN_TRANSACTION_CODE, -- 0
@IN_AVATAR_ID, -- 1
@IN_ACCOUNT_ID, -- 2
0, -- 3
0, -- 4
0, -- 5
@IN_IDX, -- 6
@OUT_ITEM_CODE, -- 7
0, -- 8
@IN_COUNT, -- 9
0, -- 10
0,
0, -- 11
0, -- 12
0, -- 13
GETDATE(), -- 14
-1, -- 15
0, -- 16
0, -- 17
0, -- 18
0, -- 19
0, -- 20
0, -- 21
0, -- 22
0, -- 23
0, -- 24
GETDATE() -- 25
);
SET @RET = @@ERROR
IF @RET <> 0
BEGIN
ROLLBACK TRANSACTION
GOTO ON_END
END
COMMIT TRANSACTION
ON_END:
RETURN @RET
The above setup was originally intended for 7.3/7.4 but is applicable in 8.1 as-well. (Be warned that is completely removes the whole "billing" schema as I found it to be useless. Hope this helps!
This requires the dbo.PaidItem in the telecaster database. In the 8.1 Files the dbo.PaidItem is missing in some repacks.
if it isn't working try to add the dbo.PaidItem to your telecaster database:
Code:
USE [telecaster]
GO
/****** Object: Table [dbo].[PaidItem] Script Date: 02.08.2013 12:55:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[PaidItem](
[sid] [int] IDENTITY(1,1) NOT NULL,
[account_id] [int] NULL,
[avatar_id] [int] NULL,
[avatar_name] [varchar](61) NULL,
[item_code] [int] NULL,
[item_count] [int] NULL,
[rest_item_count] [int] NULL,
[bought_time] [datetime] NULL,
[valid_time] [datetime] NULL,
[server_name] [varchar](30) NULL,
[taken_avatar_id] [int] NULL,
[taken_avatar_name] [varchar](61) NULL,
[taken_server_name] [varchar](30) NULL,
[taken_time] [datetime] NULL,
[taken_account_id] [int] NULL,
[confirmed] [int] NULL,
[confirmed_time] [date] NULL,
[isCancel] [int] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
[Help] StatP wont save 11/02/2008 - CO2 Private Server - 11 Replies Okay guys I really tired to fix it before i posted but i have no clue what to do now i would appricate your help and give you a thanks after :). but there is what i tryed and it failed i no i musta put it in the wrong area but here.
public static void SaveChar(Character Charr)
{
try
{
Charr.PackInventory();
Charr.PackEquips();
Charr.PackSkills();
Charr.PackProfs();
[Help] Database Wont Save Password 10/02/2008 - CO2 Private Server - 3 Replies help i got a problem my database wont save password.... so even if they create an acc.... they can log in with any random password at anytime? any way to solve this problem?