Notes
server\Initialize\WorldSystem.ini
edit [MainThread] section
[MainThread]
SleepTerm = 0
SleepValue = 0
SleepIgnore = 1
add new section for [DQSThread]
[DQSThread]
SleepTerm = 0
SleepValue = 0
SleepIgnore = 1
The E symbol is responsible for ignoring the value and transferring the value, only one material containing such a symbol is possible in the materials. in the results, this symbol is responsible for copying the value The D symbol is responsible for ignoring the value, there are no restrictions on its use in materials. for results this symbol has no meaning if combination material has a reference marker (E) in enchant, then the index for LR will be selected from this material (this is especially useful when it is necessary to indicate several LL in the materials) examples of materials with values that are a marker for enchant transfer material with 0xEEEEEEEE suits any enchant, any number of slots material with 0x7EEEEEEEE will ignore all enchant, requires 7 slots material with 0x5FFFFEEE will ignore taliks in first 3 holes, other holes must be empty, requires 5 slot result with 0x7EEEEEEEE, transfer all enchant, expose 7 slots result with 0x5FFFFEEE, transfer enchant from the first three holes, set 5 slots examples of materials with values that are not a marker for enchant transfer material with 0xDDDDDDDD suitable for any enchant, any number of slots material with 0x7DDDDDDD will ignore all enchant, requires 7 slots material with 0x5FFFDDDD will ignore taliks in first 3 slots, other holes must be empty, requires 5 slots if you make a combination with materials that do not have E symbols, and use E symbols in the results, then the result is undefined if you make a combination with several materials that have E symbols, and use E symbols in the results, then the result is undefined
RadarItem.dat
Find EffSort
, add 5th value 0 / 1.
Description | |
---|---|
OFF / always show commonex-3-3 (default behavior) | |
0 |
OFF / always show commonex-3-3 |
1 |
activate radar extended |
rdpvp03
was 1110
its gonna be the same as 11100
11101
By default, you need to edit client\SpriteImage\common\commonex.spr
to represent the icon information.
Description | |
---|---|
commonex-3-1 |
Same Race |
commonex-3-2 |
Same Race, Race Leader |
commonex-3-3 |
Bellato |
commonex-3-4 |
Bellato, Race Leader |
commonex-3-5 |
Cora |
commonex-3-6 |
Cora, Race Leader |
commonex-3-7 |
Accretia |
commonex-3-8 |
Accretia, Race Leader |
commonex-3-9 |
Pitboss |
Below is a list of all resource effects
Description | |
---|---|
0 |
Magnet Loot
Column Eff1 = 0, Val1 = 2, MaxVal1 = 2
|
1 |
Discount NPC Purchase/Sell |
2 |
EXP Gain Rate |
3 |
Language Translator |
4 |
Item Level |
5 |
EXP Gain Rate |
6 |
PT Gain Rate |
7 |
Mining Speed |
8 |
Item Drop Rate |
9 |
EXP Gain Rate |
10 |
Discount NPC Purchase |
11 |
Discount NPC Sell |
12 |
HP Regeneration |
13 |
FP Regeneration |
14 |
SP Regeneration |
15 |
Max HP |
16 |
Max FP |
17 |
Max SP |
18 |
Attack |
19 |
Melee Attack |
20 |
Melee Skill Damage |
21 |
Range Attack |
22 |
Range Skill Damage |
23 |
Force Attack |
24 |
Defense |
25 |
Vamp (Damage to HP) |
26 |
Vamp (Damage to FP) |
27 |
Vamp (Damage to SP) |
28 |
Radius of Monster Aggro |
29 |
MAU Attack (Melee Weapon) |
30 |
MAU Attack (Range Weapon) |
31 |
MAU Attack (Force Weapon) |
32 |
MAU Attack (Defense) |
33 |
Animus Attack (Force Weapon) |
34 |
Animus Attack |
35 |
Animus Attack |
36 |
Animus Attack |
37 |
Animus Attack |
38 |
Attack of Melee/Range Weapon |
39 |
Skill Range |
40 |
*DO NOT USE* |
41 |
Movement Speed |
42 |
Reflects 100% of Received Damages |
43 |
Accuracy (Melee Weapon) |
44 |
Accuracy (Range Weapon) |
45 |
Force Accuracy |
46 |
Skill Accuracy |
47 |
Chance of Critical Attack |
48 |
Accuracy |
49 |
Avoid |
50 |
Restricts Actions *DO NOT USE* |
51 |
Chance Resurrect On Death *DO NOT USE* |
52 |
Monsters Level Requirement |
53 |
Party Level Requirement |
54 |
Reflects of Received Damages |
55 |
Using any teleport scrolls |
56 |
+100% Chance Avoid |
57 |
Block Chance |
58 |
-100% Potion Delay |
59 |
PT Melee Gain Rate |
60 |
PT Range Gain Rate |
61 |
PT Force Gain Rate |
62 |
PT Defense Gain Rate |
63 |
PT Shield Gain Rate |
64 |
PT Animus Gain Rate |
65 |
PT MAU Gain Rate |
71 |
EXP Gain Rate |
72 |
EXP Gain Rate |
73 |
Item Drop Rate |
74 |
Item Drop Rate |
75 |
Item Drop Rate |
76 |
Detect |
77 |
Debuff Duration |
78 |
Chance Ignore Shield Block |
79 |
Ignorant Talic in Weapon |
80 |
Favor Talic in Armors |
81 |
Chance to Protect Items from Dropping on Death *DO NOT USE* |
82 |
All PT Gain Rate |
84 |
Max SP |
85 |
FP Cost |
86 |
Accuracy |
87 |
Avoid |
88 |
Max HP/FP |
89 |
Attack |
90 |
Defense |
91 |
Skill Level |
92 |
Stealth |
93 |
Detect |
94 |
Remove Damage Protection Skill |
95 |
Movement Speed |
96 |
Reveals information about enemy vulnerability |
97 |
FP Regeneration |
98 |
Force Attack |
99 |
Max FP |
100 |
Vamp (Damage to HP) |
101 |
Vamp (Damage to HP) |
102 |
Critical Attack Chance |
103 |
Attack Range |
104 |
Defense |
105 |
Debuff Duration |
106 |
HP Regeneration |
107 |
Avoid |
108 |
Attack Delay (Launcher) |
109 |
Force Attack Range |
110 |
Chance Receiving Critical Attack |
111 |
Block Chance |
112 |
Elemental Resistance |
113 |
Max HP |
114 |
Debuff Duration |
115 |
Chance Ignore Shield Block |
116 |
Range Skill Delay |
117 |
Melee Skill Delay |
118 |
Force Delay |
There are "Effects Details" in client side. If you want to enable/disable certain part to shown or change of wordings, you can edit from client\DataTable\en-gb\resource_effects.ini

This is regarding how effects gonna applied if character have multiple ResourceItem with same ItemSerise
Open : resource_serise.json
and to be safe, set it to : dynamic
Below is an explanation and example
CCR behaviour : on clients side : dynamic type on server side : (pay attention to the order on last line): 99 item A + 99 item B = 50 value 99 item A + 99 item B + 99 item C = 500 value 99 item A + 99 item C + 99 item B = 50 value example : item have same ItemSerise item A : value 5, max value 50 item B : value 5, max value 50 item C : value 5, max value 500 static type (group boundaries are formed globally and do not depend on items in the inventory): 99 item A + 99 item B = 100 value 99 item A + 99 item B + 99 item C = 500 value dynamic type (group boundaries are formed depending on the items in the inventory): 99 item A + 99 item B = 50 value 99 item A + 99 item B + 99 item C = 500 value
Only usable for Monster, dont try to apply to Character!
Open : ClassSkill.dat
(need to use 2 column : ContParamCode, ContParamIndex, and ContValue)
Reflect Damage | ContParamCode1 3 |
ContParamIndex1 54 |
ContValue1 0.42 |
42% of the damage will be reflected to the attacker. |
---|---|---|---|---|
Chance to Reflect | ContParamCode2 3 |
ContParamIndex2 0 |
ContValue2 0.88 |
88% chance that damage will be reflected. |
Conclusion | There is an 88% chance that damage will be reflected, with 42% of the damage being reflected back to the attacker. |
Solution : PotionItem.dat
> code ipwhp01 > UseState 1
Description | |
---|---|
0 |
anytime |
1 |
peace state |
2 |
battle state |
3 |
dead state |
NDLanguage.edf
> Serial 1935
> change to [Invoice: %s]
NDLanguage.edf
> Serial 2665
> change to The unmanned mining tool is under attack.
Possibility 1
Possibility 2
global.json
or any of .json
files (validate it after editing to make sure its correct)Possibility 3
environment.json
Possibility 4
tbl_schema_version
& database_migration.json
Possibility 5
\RF_Bin\Initialize\PvpCashPoint.ini
Possibility 6
enable_server_certificate_verification
to false
at environment.json
Advice
environment.json
and license.dat
).Possibility 1
tbl_userstatus
(id : binary)Solution : run queries below.
/* HGK BILLING */
USE [BILLING]
GO
ALTER PROCEDURE pAddCashAmount
@s_userid varchar(20),
@s_subsystem_name varchar(64),
@s_cash float
AS
BEGIN
SET NOCOUNT ON;
DECLARE @before_amount float = -1
DECLARE @after_amount float = -1
UPDATE [dbo].[tbl_UserStatus]
SET @before_amount = [Cash], [Cash] += @s_cash, @after_amount = [Cash] + @s_cash
WHERE [id] = CONVERT(binary,@s_userid);
INSERT INTO [dbo].[tbl_change_amount] ([userid],[subsystem_name],[change],[before_amount],[after_amount],[Date])
VALUES (@s_userid,@s_subsystem_name,@s_cash,@before_amount,@after_amount,GETDATE())
SELECT 1 as operation_status;
END
GO
USE [BILLING]
GO
ALTER PROCEDURE pAddPcBangTime
@s_userid varchar(20),
@s_subsystem_name varchar(64),
@addhour int
AS
BEGIN
SET NOCOUNT ON;
IF (SELECT Status As BillType FROM [tbl_UserStatus] WHERE Id = CONVERT(binary,@s_userid)) = 2
UPDATE [tbl_UserStatus] SET DTEndPrem = DATEADD(HOUR, @addhour, DTEndPrem) WHERE Id = CONVERT(binary,@s_userid);
ELSE
UPDATE [tbl_UserStatus] SET Status = 2, DTEndPrem = DATEADD(HOUR, @addhour, GETDATE()) WHERE Id = CONVERT(binary,@s_userid);
SELECT 1 as operation_status;
END
GO
USE [BILLING]
GO
ALTER PROCEDURE [dbo].[pGetPcBangTime]
@s_userid varchar(20)
AS
BEGIN
SET NOCOUNT ON;
SELECT DTEndPrem as pc_bang_end FROM [tbl_UserStatus] WHERE Id = CONVERT(binary,@s_userid);
END
GO
USE [BILLING]
GO
ALTER PROCEDURE pSubCashAmount
@s_userid varchar(20),
@s_subsystem_name varchar(64),
@s_cash float
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
BEGIN TRY
IF @s_cash <= 0
SELECT 0 as operation_status;
ELSE BEGIN
DECLARE @before_amount float = -1
DECLARE @after_amount float = -1
UPDATE [dbo].[tbl_UserStatus]
SET @before_amount = [Cash], [Cash] -= @s_cash, @after_amount = [Cash] - @s_cash
WHERE [Id] = CONVERT(binary,@s_userid);
INSERT INTO [dbo].[tbl_change_amount] ([userid],[subsystem_name],[change],[before_amount],[after_amount],[Date])
VALUES (@s_userid, @s_subsystem_name, -@s_cash, @before_amount, @after_amount, GETDATE())
SELECT
CASE
WHEN @after_amount < 0 THEN 0
ELSE 1
END as operation_status;
IF @after_amount < 0
RAISERROR (15600,-1,-1, 'pSubCashAmount');
END
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
END
GO
/*END OF LINE HGK */
Possibility 2
Solution : Insert your account to billing tables manually or run these query below to automaticly insert your account when you open cash shop.
USE [BILLING]
GO
ALTER PROCEDURE [dbo].[RF_CheckBalance]
@Login varchar(13),
@Balance bigint = 0 OUTPUT
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT Cash FROM [dbo].[tbl_UserStatus] WITH (NOLOCK) WHERE id = CONVERT(binary, @Login)) BEGIN
INSERT INTO [dbo].[tbl_UserStatus] (Id, Status, Cash, DTStartPrem, DTEndPrem) VALUES (CONVERT(binary, @Login), 1, 0, GETDATE(), GETDATE());
SET @Balance = 0;
END
ELSE BEGIN
SET @Balance = (SELECT [Cash] FROM [dbo].[tbl_UserStatus] WITH (NOLOCK) WHERE [Id] = CONVERT(binary, @Login));
END
END
GO
Possibility 1
HGKClient.dll
& RF_Online.bin
and for Server : HGKProtect.dll
Possibility 2
WorldInfo.ini
& ZonePort can be configured from server_memory_patch.json
Possibility 3
Possibility 1
Possibility 2
client_memory_patch
: server\HGKProtect\memory_patch.bin
and put into client\System\memory_patch.bin
item_sockets
: server\HGKProtect\GemSockets.dat
into GemSockets.edf
and put into client\DataTable\GemSockets.edf
radius
: server\HGKProtect\RadiusView.dat
into RadiusView.edf
and put into client\DataTable\RadiusView.edf
season_pass
: server\HGKProtect\SeasonPass.dat
into SeasonPass.edf
and put into client\DataTable\SeasonPass.edf
transmog
: server\HGKProtect\Transmog.dat
into Transmog.edf
and put into client\DataTable\Transmog.edf
.ini
.spr
.dds
Possibility 3
Possibility 4