Just for fun 7-8th skills without wolfman like Korean version
open your
Pythonnetworkstreamphasegame.cpp
change this part to this
now you can build your Binary's exe.
open your root.:
playersettingsmodule.py
find this:
SKILL_INDEX_DICT = {
and edit the following lines with your new skillIDs
SKILL_INDEX_DICT = {
JOB_WARRIOR : {
1 : (1, 2, 3, 4, 5, 6, 7, 8, 137, 0, 138, 0, 139, 0,),
2 : (16, 17, 18, 19, 20, 21, 22, 23, 137, 0, 138, 0, 139, 0,),
"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
},
JOB_ASSASSIN : {
1 : (31, 32, 33, 34, 35, 36, 37, 38, 137, 0, 138, 0, 139, 0, 140,),
2 : (46, 47, 48, 49, 50, 51, 52, 53, 137, 0, 138, 0, 139, 0, 140,),
"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
},
JOB_SURA : {
1 : (61, 62, 63, 64, 65, 66, 67, 68, 137, 0, 138, 0, 139, 0,),
2 : (76, 77, 78, 79, 80, 81, 82, 83, 137, 0, 138, 0, 139, 0,),
"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
},
JOB_SHAMAN : {
1 : (91, 92, 93, 94, 95, 96, 97, 98, 137, 0, 138, 0, 139, 0,),
2 : (106, 107, 108, 109, 110, 111, 112, 113, 137, 0, 138, 0, 139, 0,),
"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
},
}
or
depending the amount of skills.
now add your new skills like me
search
## Warrior
and few lines down you can see
(it will work under M1 cuz the original files has them but there's no M1-G1-P yet there at the korean skills... )
NOW YOU CAN REPACK YOUR ROOT if you're ready with it and you need to create your skills in locale_xy
just copy an original skill at your skillID and at your korean skillname too + the numbers after the korean skillnames
also later you need to make subs and images too which you can make at Etc like ui
so there goes the .dds images
Now the SRC part:
for the src part:
game/src/char_skill.cpp
search
const int SKILL_COUNT = 6;
edit
search
edit it like this
you may also need the skill_power.txt part too so you need to navigate /usr/game/share/locale/xy/ to modify that txt
Now you can use 7-8th skills but remember that you need to make the M-G-P effects and scripts per skill if you want to use them
ps.: you may can make packet bugs with this modification but at least it can work at 1-19 skillpoints if you're too lazy to make the MGP parts
meh sorry for the SY2 title but I wanted a clickbaity stuff without affects for the skills
open your
Pythonnetworkstreamphasegame.cpp
Kod:
bool CPythonNetworkStream::RecvSkillLevelNew()
{
TPacketGCSkillLevelNew packet;
if (!Recv(sizeof(TPacketGCSkillLevelNew), &packet))
{
Tracen("CPythonNetworkStream::RecvSkillLevelNew - RecvError");
return false;
}
CPythonPlayer& rkPlayer=CPythonPlayer::Instance();
rkPlayer.SetSkill(7, 0);
rkPlayer.SetSkill(8, 0);
for (int i = 0; i < SKILL_MAX_NUM; ++i)
{
TPlayerSkill & rPlayerSkill = packet.skills[i];
if (i >= 112 && i <= 115 && rPlayerSkill.bLevel)
rkPlayer.SetSkill(7, i);
if (i >= 116 && i <= 119 && rPlayerSkill.bLevel)
rkPlayer.SetSkill(8, i);
rkPlayer.SetSkillLevel_(i, rPlayerSkill.bMasterType, rPlayerSkill.bLevel);
}
__RefreshSkillWindow();
__RefreshStatus();
//Tracef(" >> RecvSkillLevelNew\n");
return true;
}
Kod:
bool CPythonNetworkStream::RecvSkillLevelNew()
{
TPacketGCSkillLevelNew packet;
if (!Recv(sizeof(TPacketGCSkillLevelNew), &packet))
{
Tracen("CPythonNetworkStream::RecvSkillLevelNew - RecvError");
return false;
}
CPythonPlayer& rkPlayer = CPythonPlayer::Instance();
for (int i = 0; i < SKILL_MAX_NUM; ++i)
{
TPlayerSkill & rPlayerSkill = packet.skills[i];
rkPlayer.SetSkillLevel_(i, rPlayerSkill.bMasterType, rPlayerSkill.bLevel);
}
__RefreshSkillWindow();
__RefreshStatus();
//Tracef(" >> RecvSkillLevelNew\n");
return true;
}
open your root.:
playersettingsmodule.py
find this:
SKILL_INDEX_DICT = {
and edit the following lines with your new skillIDs
SKILL_INDEX_DICT = {
JOB_WARRIOR : {
1 : (1, 2, 3, 4, 5, 6, 7, 8, 137, 0, 138, 0, 139, 0,),
2 : (16, 17, 18, 19, 20, 21, 22, 23, 137, 0, 138, 0, 139, 0,),
"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
},
JOB_ASSASSIN : {
1 : (31, 32, 33, 34, 35, 36, 37, 38, 137, 0, 138, 0, 139, 0, 140,),
2 : (46, 47, 48, 49, 50, 51, 52, 53, 137, 0, 138, 0, 139, 0, 140,),
"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
},
JOB_SURA : {
1 : (61, 62, 63, 64, 65, 66, 67, 68, 137, 0, 138, 0, 139, 0,),
2 : (76, 77, 78, 79, 80, 81, 82, 83, 137, 0, 138, 0, 139, 0,),
"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
},
JOB_SHAMAN : {
1 : (91, 92, 93, 94, 95, 96, 97, 98, 137, 0, 138, 0, 139, 0,),
2 : (106, 107, 108, 109, 110, 111, 112, 113, 137, 0, 138, 0, 139, 0,),
"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
},
}
Kod:
now find this
[code]
if i != 6 and i != 7:
player.SetSkill(i+1, skillIndex)
and replace it with
[code]
if i != 7:
Kod:
if i != 8:
now add your new skills like me
search
## Warrior
and few lines down you can see
Kod:
chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+7, "jipjung" + END_STRING + ".msa")
chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+8, "rampage" + END_STRING + ".msa")
chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+22, "musa" + END_STRING + ".msa")
chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+23, "jeonsinbangeo" + END_STRING + ".msa")
NOW YOU CAN REPACK YOUR ROOT if you're ready with it and you need to create your skills in locale_xy
just copy an original skill at your skillID and at your korean skillname too + the numbers after the korean skillnames
also later you need to make subs and images too which you can make at Etc like ui
so there goes the .dds images
Kod:
ymir work/ui/
Kod:
and there goes the .sub folders
ymir work/ui/skill/warrior/
ymir work/ui/skill/sura/
ymir work/ui/skill/assassin/
ymir work/ui/skill/shaman/
Now the SRC part:
for the src part:
game/src/char_skill.cpp
search
const int SKILL_COUNT = 6;
edit
Kod:
const int SKILL_COUNT = 8;
static const DWORD SkillList[JOB_MAX_NUM][SKILL_GROUP_MAX_NUM][SKILL_COUNT] =
{
{ { 1, 2, 3, 4, 5, 6, 7, 8 }, { 16, 17, 18, 19, 20, 21, 22, 23 } },
{ { 31, 32, 33, 34, 35, 36, 37, 38 }, { 46, 47, 48, 49, 50, 51, 52, 53 } },
{ { 61, 62, 63, 64, 65, 66, 67, 68 }, { 76, 77, 78, 79, 80, 81, 82, 83 } },
{ { 91, 92, 93, 94, 95, 96, 97, 98 }, { 106,107,108,109,110,111,112,113 } },
};
Kod:
bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
edit it like this
Kod:
bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
{
DWORD selfJobGroup = (GetJob()+1) * 10 + GetSkillGroup();
const DWORD SKILL_NUM = 158;
static DWORD s_anSkill2JobGroup[SKILL_NUM] = {
0, // common_skill 0
11, // job_skill 1
11, // job_skill 2
11, // job_skill 3
11, // job_skill 4
11, // job_skill 5
11, // job_skill 6
11, // job_skill 7
11, // job_skill 8
0, // common_skill 9
0, // common_skill 10
0, // common_skill 11
0, // common_skill 12
0, // common_skill 13
0, // common_skill 14
0, // common_skill 15
12, // job_skill 16
12, // job_skill 17
12, // job_skill 18
12, // job_skill 19
12, // job_skill 20
12, // job_skill 21
12, // job_skill 22
12, // job_skill 23
0, // common_skill 24
0, // common_skill 25
0, // common_skill 26
0, // common_skill 27
0, // common_skill 28
0, // common_skill 29
0, // common_skill 30
21, // job_skill 31
21, // job_skill 32
21, // job_skill 33
21, // job_skill 34
21, // job_skill 35
21, // job_skill 36
21, // job_skill 37
21, // job_skill 38
0, // common_skill 39
0, // common_skill 40
0, // common_skill 41
0, // common_skill 42
0, // common_skill 43
0, // common_skill 44
0, // common_skill 45
22, // job_skill 46
22, // job_skill 47
22, // job_skill 48
22, // job_skill 49
22, // job_skill 50
22, // job_skill 51
22, // job_skill 52
22, // job_skill 53
0, // common_skill 54
0, // common_skill 55
0, // common_skill 56
0, // common_skill 57
0, // common_skill 58
0, // common_skill 59
0, // common_skill 60
31, // job_skill 61
31, // job_skill 62
31, // job_skill 63
31, // job_skill 64
31, // job_skill 65
31, // job_skill 66
31, // job_skill 67
31, // job_skill 68
0, // common_skill 69
0, // common_skill 70
0, // common_skill 71
0, // common_skill 72
0, // common_skill 73
0, // common_skill 74
0, // common_skill 75
32, // job_skill 76
32, // job_skill 77
32, // job_skill 78
32, // job_skill 79
32, // job_skill 80
32, // job_skill 81
32, // job_skill 82
32, // job_skill 83
0, // common_skill 84
0, // common_skill 85
0, // common_skill 86
0, // common_skill 87
0, // common_skill 88
0, // common_skill 89
0, // common_skill 90
41, // job_skill 91
41, // job_skill 92
41, // job_skill 93
41, // job_skill 94
41, // job_skill 95
41, // job_skill 96
41, // job_skill 97
41, // job_skill 98
0, // common_skill 99
0, // common_skill 100
0, // common_skill 101
0, // common_skill 102
0, // common_skill 103
0, // common_skill 104
0, // common_skill 105
42, // job_skill 106
42, // job_skill 107
42, // job_skill 108
42, // job_skill 109
42, // job_skill 110
42, // job_skill 111
42, // job_skill 112
42, // job_skill 113
0, // common_skill 114
0, // common_skill 115
0, // common_skill 116
0, // common_skill 117
0, // common_skill 118
0, // common_skill 119
0, // common_skill 120
0, // common_skill 121
0, // common_skill 122
0, // common_skill 123
0, // common_skill 124
0, // common_skill 125
0, // common_skill 126
0, // common_skill 127
0, // common_skill 128
0, // common_skill 129
0, // common_skill 130
0, // common_skill 131
0, // common_skill 132
0, // common_skill 133
0, // common_skill 134
0, // common_skill 135
0, // common_skill 136
0, // job_skill 137
0, // job_skill 138
0, // job_skill 139
0, // job_skill 140
0, // common_skill 141
0, // common_skill 142
0, // common_skill 143
0, // common_skill 144
0, // common_skill 145
0, // common_skill 146
0, // common_skill 147
0, // common_skill 148
0, // common_skill 149
0, // common_skill 150
0, // common_skill 151
0, // job_skill 152
0, // job_skill 153
0, // job_skill 154
0, // job_skill 155
0, // job_skill 156
0, // job_skill 157
}; // s_anSkill2JobGroup
const DWORD MOTION_MAX_NUM = 124;
const DWORD SKILL_LIST_MAX_COUNT = 5;
static DWORD s_anMotion2SkillVnumList[MOTION_MAX_NUM][SKILL_LIST_MAX_COUNT] =
{
// 스킬수 무사스킬ID 자객스킬ID 수라스킬ID 무당스킬ID
{ 0, 0, 0, 0, 0 }, // 0
// 1번 직군 기본 스킬
{ 4, 1, 31, 61, 91 }, // 1
{ 4, 2, 32, 62, 92 }, // 2
{ 4, 3, 33, 63, 93 }, // 3
{ 4, 4, 34, 64, 94 }, // 4
{ 4, 5, 35, 65, 95 }, // 5
{ 4, 6, 36, 66, 96 }, // 6
{ 4, 7, 37, 67, 97 }, // 7
{ 4, 8, 38, 68, 98 }, // 8
// 1번 직군 기본 스킬 끝
// 여유분
{ 0, 0, 0, 0, 0 }, // 9
{ 0, 0, 0, 0, 0 }, // 10
{ 0, 0, 0, 0, 0 }, // 11
{ 0, 0, 0, 0, 0 }, // 12
{ 0, 0, 0, 0, 0 }, // 13
{ 0, 0, 0, 0, 0 }, // 14
{ 0, 0, 0, 0, 0 }, // 15
// 여유분 끝
// 2번 직군 기본 스킬
{ 4, 16, 46, 76, 106 }, // 16
{ 4, 17, 47, 77, 107 }, // 17
{ 4, 18, 48, 78, 108 }, // 18
{ 4, 19, 49, 79, 109 }, // 19
{ 4, 20, 50, 80, 110 }, // 20
{ 4, 21, 51, 81, 111 }, // 21
{ 4, 22, 52, 82, 112 }, // 22
{ 4, 23, 53, 83, 113 }, // 23
// 2번 직군 기본 스킬 끝
// 여유분
{ 0, 0, 0, 0, 0 }, // 24
{ 0, 0, 0, 0, 0 }, // 25
// 여유분 끝
// 1번 직군 마스터 스킬
{ 4, 1, 31, 61, 91 }, // 26
{ 4, 2, 32, 62, 92 }, // 27
{ 4, 3, 33, 63, 93 }, // 28
{ 4, 4, 34, 64, 94 }, // 29
{ 4, 5, 35, 65, 95 }, // 30
{ 4, 6, 36, 66, 96 }, // 31
{ 4, 7, 37, 67, 97 }, // 32
{ 4, 8, 38, 68, 98 }, // 33
// 1번 직군 마스터 스킬 끝
// 여유분
{ 0, 0, 0, 0, 0 }, // 34
{ 0, 0, 0, 0, 0 }, // 35
{ 0, 0, 0, 0, 0 }, // 36
{ 0, 0, 0, 0, 0 }, // 37
{ 0, 0, 0, 0, 0 }, // 38
{ 0, 0, 0, 0, 0 }, // 39
{ 0, 0, 0, 0, 0 }, // 40
// 여유분 끝
// 2번 직군 마스터 스킬
{ 4, 16, 46, 76, 106 }, // 41
{ 4, 17, 47, 77, 107 }, // 42
{ 4, 18, 48, 78, 108 }, // 43
{ 4, 19, 49, 79, 109 }, // 44
{ 4, 20, 50, 80, 110 }, // 45
{ 4, 21, 51, 81, 111 }, // 46
{ 4, 22, 52, 82, 112 }, // 47
{ 4, 23, 53, 83, 113 }, // 48
// 2번 직군 마스터 스킬 끝
// 여유분
{ 0, 0, 0, 0, 0 }, // 49
{ 0, 0, 0, 0, 0 }, // 50
// 여유분 끝
// 1번 직군 그랜드 마스터 스킬
{ 4, 1, 31, 61, 91 }, // 51
{ 4, 2, 32, 62, 92 }, // 52
{ 4, 3, 33, 63, 93 }, // 53
{ 4, 4, 34, 64, 94 }, // 54
{ 4, 5, 35, 65, 95 }, // 55
{ 4, 6, 36, 66, 96 }, // 56
{ 4, 7, 37, 67, 97 }, // 32
{ 4, 8, 38, 68, 98 }, // 33
// 1번 직군 그랜드 마스터 스킬 끝
// 여유분
{ 0, 0, 0, 0, 0 }, // 59
{ 0, 0, 0, 0, 0 }, // 60
{ 0, 0, 0, 0, 0 }, // 61
{ 0, 0, 0, 0, 0 }, // 62
{ 0, 0, 0, 0, 0 }, // 63
{ 0, 0, 0, 0, 0 }, // 64
{ 0, 0, 0, 0, 0 }, // 65
// 여유분 끝
// 2번 직군 그랜드 마스터 스킬
{ 4, 16, 46, 76, 106 }, // 66
{ 4, 17, 47, 77, 107 }, // 67
{ 4, 18, 48, 78, 108 }, // 68
{ 4, 19, 49, 79, 109 }, // 69
{ 4, 20, 50, 80, 110 }, // 70
{ 4, 21, 51, 81, 111 }, // 71
{ 4, 22, 52, 82, 112 }, // 72
{ 4, 23, 53, 83, 113 }, // 73
// 2번 직군 그랜드 마스터 스킬 끝
//여유분
{ 0, 0, 0, 0, 0 }, // 74
{ 0, 0, 0, 0, 0 }, // 75
// 여유분 끝
// 1번 직군 퍼펙트 마스터 스킬
{ 4, 1, 31, 61, 91 }, // 76
{ 4, 2, 32, 62, 92 }, // 77
{ 4, 3, 33, 63, 93 }, // 78
{ 4, 4, 34, 64, 94 }, // 79
{ 4, 5, 35, 65, 95 }, // 80
{ 4, 6, 36, 66, 96 }, // 81
{ 4, 7, 37, 67, 97 }, // 82
{ 4, 8, 38, 68, 98 }, // 83
// 1번 직군 퍼펙트 마스터 스킬 끝
// 여유분
{ 0, 0, 0, 0, 0 }, // 84
{ 0, 0, 0, 0, 0 }, // 85
{ 0, 0, 0, 0, 0 }, // 86
{ 0, 0, 0, 0, 0 }, // 87
{ 0, 0, 0, 0, 0 }, // 88
{ 0, 0, 0, 0, 0 }, // 89
{ 0, 0, 0, 0, 0 }, // 90
// 여유분 끝
// 2번 직군 퍼펙트 마스터 스킬
{ 4, 16, 46, 76, 106 }, // 91
{ 4, 17, 47, 77, 107 }, // 92
{ 4, 18, 48, 78, 108 }, // 93
{ 4, 19, 49, 79, 109 }, // 94
{ 4, 20, 50, 80, 110 }, // 95
{ 4, 21, 51, 81, 111 }, // 96
{ 4, 22, 52, 82, 112 }, // 97
{ 4, 23, 53, 83, 113 }, // 98
// 2번 직군 퍼펙트 마스터 스킬 끝
// 여유분
{ 0, 0, 0, 0, 0 }, // 99
{ 0, 0, 0, 0, 0 }, // 100
// 여유분 끝
// 길드 스킬
{ 1, 152, 0, 0, 0}, // 101
{ 1, 153, 0, 0, 0}, // 102
{ 1, 154, 0, 0, 0}, // 103
{ 1, 155, 0, 0, 0}, // 104
{ 1, 156, 0, 0, 0}, // 105
{ 1, 157, 0, 0, 0}, // 106
// 길드 스킬 끝
// 여유분
{ 0, 0, 0, 0, 0}, // 107
{ 0, 0, 0, 0, 0}, // 108
{ 0, 0, 0, 0, 0}, // 109
{ 0, 0, 0, 0, 0}, // 110
{ 0, 0, 0, 0, 0}, // 111
{ 0, 0, 0, 0, 0}, // 112
{ 0, 0, 0, 0, 0}, // 113
{ 0, 0, 0, 0, 0}, // 114
{ 0, 0, 0, 0, 0}, // 115
{ 0, 0, 0, 0, 0}, // 116
{ 0, 0, 0, 0, 0}, // 117
{ 0, 0, 0, 0, 0}, // 118
{ 0, 0, 0, 0, 0}, // 119
{ 0, 0, 0, 0, 0}, // 120
// 여유분 끝
// 승마 스킬
{ 2, 137, 140, 0, 0}, // 121
{ 1, 138, 0, 0, 0}, // 122
{ 1, 139, 0, 0, 0}, // 123
// 승마 스킬 끝
};
Now you can use 7-8th skills but remember that you need to make the M-G-P effects and scripts per skill if you want to use them
ps.: you may can make packet bugs with this modification but at least it can work at 1-19 skillpoints if you're too lazy to make the MGP parts

meh sorry for the SY2 title but I wanted a clickbaity stuff without affects for the skills
Son düzenleme: