Activating Korean 7-8th skills like Saveyourself2

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 33

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Just for fun 7-8th skills without wolfman like Korean version


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; }
change this part to this
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; }
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,),
},
}
Kod:
now find this [code]     if i != 6 and i != 7:     player.SetSkill(i+1, skillIndex) and replace it with [code]     if i != 7:
or
Kod:
if i != 8:
depending the amount of skills.


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")
(it will work under M1 cuz the original 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
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    } },         };
search
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         // 승마 스킬 끝     };
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
Korean 7-8 Seviye Yetenekleri Aktivasyonu Hakkında Detaylı Bilgi
Metin2 özel sunucularında yetenek sistemleri, oyuncuların karakterlerini güçlendirmelerine yardımcı olan önemli unsurlardır. Özellikle yüksek seviye yetenekler, yani 7 ve 8. seviye yetenekler, oyuncuların PvP savaşlarında büyük avantaj sağlar. Bu yeteneklerin aktivasyonu, doğru sistem kurulumuna ve uygun C++ veya Python tabanlı script düzenlemelerine bağlıdır. Bu yazıda, Saveyourself2 adlı kullanıcı gibi Korean 7-8. yetenek sistemini nasıl aktive edebileceğinizi detaylı olarak ele alacağız.

Metin2 Yetenek Sistemleri Nedir?
Metin2’de yetenek sistemleri, oyuncuların karakterlerini kişiselleştirebilmeleri ve savaş stratejilerine göre güçlendirebilmeleri için geliştirilmiş sistemlerdir. Yetenekler genellikle 1. seviyeden 8. seviyeye kadar uzanır. 7 ve 8. seviye yetenekler ise genellikle özel sunucular tarafından ekstra özelliklerle güçlendirilmiştir. Bu yeteneklerin kullanılabilmesi için gerekli script dosyalarının, yetenek sistemlerinin doğru şekilde yapılandırılmış olması gerekir.

Saveyourself2 Tarzı Yetenek Aktivasyonu
Saveyourself2 tarzı yetenek aktivasyonu, Metin2 özel sunucularında sıklıkla kullanılan bir yöntemdir. Bu yöntem, yetenek sistemlerinin doğrudan yetenek veritabanında tanımlanması ve C++ kaynak kodları üzerinden aktif hale getirilmesiyle sağlanır. Bu işlem sırasında dikkat edilmesi gereken bazı önemli konular vardır:

- Yetenek Veritabanı Ayarları: Yeteneklerin doğru şekilde DB üzerinde tanımlanması gerekir. Bu, genellikle 'skill_proto' tablosunda yapılır. Yetenek ID, seviyesi, efekt türü gibi verilerin eksiksiz girilmesi önemlidir.

- Client ve Game Sunucusu Eşgüdümü: Yeteneklerin hem client tarafında hem de game sunucusunda doğru çalışması için uyumlu yapılandırmalar yapılmalıdır. Bu, UIScript ve PY ROOT dosyalarında yapılan değişikliklerle sağlanabilir.

- Yetenek Efektleri ve Animasyonlar: Yüksek seviye yetenekler genellikle güçlü görsel efektlere sahiptir. Bu efektlerin doğru çalışması için yetenek animasyon dosyalarının da yüklenmesi gerekir.

C++ ve Python ile Yetenek Sistemleri Geliştirme
Metin2 özel sunucularında yetenek sistemleri, genellikle C++ tabanlı oyun motoru üzerinde çalışır. Ancak yeteneklerin etkileşimli ve esnek olabilmesi için Python scriptleri de sıklıkla kullanılır. Özellikle PY GUI tabanlı arayüzler sayesinde yetenek menüsü daha kullanıcı dostu hale getirilebilir. Bu bağlamda, UIScript ile yetenek penceresi tasarımı yapılarak oyunculara daha iyi bir deneyim sunulabilir.

Yetenek Aktivasyonunda Dikkat Edilmesi Gerekenler
Yetenek sistemlerinin doğru şekilde aktive edilmesi için aşağıdaki maddelere dikkat edilmelidir:

- Kaynak Kod Uyumluğu: Kullandığınız Metin2 kaynak kodunun sürümüne göre yetenek sistemleri değişiklik gösterebilir. Bu nedenle doğru sürümle uyumlu kodların kullanılması gerekir.

- Yetenek Limitleri: Yeteneklerin seviye sınırlarına göre aktif edilip edilemeyeceği kontrol edilmelidir. Özellikle 7-8. seviye yeteneklerin, oyuncunun belirli bir levelin üzerinde olması gerekir.

- Yetenek Etki Değerleri: Yeteneklerin verdiği bonuslar doğru şekilde ayarlanmalıdır. Aksi takdirde dengesizlikler oluşabilir ve PvP sistemi olumsuz etkilenebilir.

Sonuç
Metin2 özel sunucularında 7-8. seviye yetenekleri Saveyourself2 tarzı bir yöntemle aktive etmek, oyuncular için daha keyifli ve rekabetçi bir oyun deneyimi sunar. Ancak bu işlem sırasında C++ sistem bilgisi, DB yönetimi ve PY script becerileri gerekebilir. Doğru yapılandırılmış bir yetenek sistemi, hem PvP hem de PvE oyun deneyimini ciddi anlamda artırabilir. Bu nedenle, sistem geliştiricilerinin dikkatli ve planlı hareket etmeleri önemlidir.


Detailed Information on Activating Korean 7-8th Level Skills Like Saveyourself2
In Metin2 private servers, skill systems are essential elements that help players enhance their characters. Especially high-level skills, such as 7th and 8th level skills, provide significant advantages in PvP battles. Activating these skills relies on correct system setup and appropriate script modifications based on C++ or Python. In this article, we will thoroughly examine how to activate the Korean 7-8th level skill system similar to Saveyourself2.

What Are Metin2 Skill Systems?
In Metin2, skill systems allow players to customize their characters and strengthen them according to their battle strategies. Skills typically range from level 1 to level 8. The 7th and 8th level skills are usually enhanced with additional features by private servers. To use these skills, required script files and skill configurations must be properly set up.

Activating Skills Like Saveyourself2
The method of activating skills like Saveyourself2 is frequently used in Metin2 private servers. This method involves defining skills directly within the skill database and enabling them through C++ source code. Several important points must be considered during this process:

- Skill Database Settings: Skills must be correctly defined in the database. This is generally done in the 'skill_proto' table. It is crucial that data such as skill ID, level, and effect type are entered completely.

- Coordination Between Client and Game Server: For skills to function properly on both the client and game server sides, compatible configurations must be implemented. This can be achieved through changes in UIScript and PY ROOT files.

- Skill Effects and Animations: High-level skills often feature powerful visual effects. To ensure these effects run correctly, the skill animation files must also be loaded.

Developing Skill Systems with C++ and Python
In Metin2 private servers, skill systems typically operate on a C++-based game engine. However, for skills to be interactive and flexible, Python scripts are frequently used. Interactive skill menus can be made more user-friendly through PY GUI-based interfaces. In this context, designing the skill window via UIScript can provide a better experience for players.

Important Considerations for Skill Activation
To properly activate skill systems, attention should be paid to the following:

- Source Code Compatibility: Depending on your Metin2 source code version, skill systems may vary. Therefore, it's necessary to use code compatible with the correct version.

- Skill Limits: Whether skills can be activated based on level thresholds should be checked. In particular, 7th and 8th level skills may require players to reach a certain level before activation.

- Skill Effect Values: Bonuses provided by skills must be adjusted correctly. Otherwise, imbalances may occur and negatively affect the PvP system.

Conclusion
Activating 7-8th level skills in Metin2 private servers using a method similar to Saveyourself2 enhances the gaming experience, making it more enjoyable and competitive for players. However, this process may require knowledge in C++ systems, database management, and PY scripting. Properly configured skill systems can significantly improve both PvP and PvE gameplay experiences. Thus, it is crucial for system developers to act carefully and strategically.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Geri
Üst Alt