Nachdem ich gesehen habe, dass es bereits ein paar Tutorials gibt, aber keinerlei Erklärungen, habe ich mich mal entschlossen euch es kurz zu erklären und eben nebenbei das HowTo zu machen^^
Btw die Erklärung+HowTo für die Korea Skills+Icons kommt am Ende^^
Und hier gibts ein paar neue Skills, Vorschau:
Da ich diese Dateien selber geschrieben habe und sie nicht von Ymir rechtlich geschützt sind, darf ich diese Dateien hochladen und verstoße damit nicht gegen die AGB's.
Es werden jedoch die Dateien von Ymir im Effect Ordner gebraucht, da ich diese aber nicht mit hochgeladen habe, habe ich keine rechtlich geschützen Dateien hochgeladen und das Copyright gebrochen
Benötigt werden:
-PC.epk
-PC2.epk
-root.epk
-locale_de.epk
-Etc.epk
Zuerst entpackt ihr PC.epk. Dann geht ihr in den jeweiligen Ordner der Charakterklasse, denen ihr einen neuen Skill verpassen wollt.
Ich nehme jetzt z.B. assassin, dort findet ihr dann paar Ordner und geht jetzt in den Ordner skill.
Bisher ist ja alles noch logisch, demnach noch keine Erklärungen xD
In dem Ordner skill findet ihr ein paar tolle .msk, .msa, .gr2 Dateien mit jeweils demselben Namen.
Gr2 Dateien sind die Motions, also wie sich die Spielcharakter bei dem Angriff bewegen.
Die msk Dateien erklären sich ebenfalls von selbst, anhand dieses Ausschnittes:
Code:
Type MIDDLE Attribute "ATTACK_SKILL" "WEAPON_LIMITATION" "NEED_TARGET" NeedWeapon "SWORD" "DAGGER" "DOUBLE_SWORD" Range 800
Dort werden die Effekte und die Skills "zusammengefügt", dort wird als Grundlage eine .gr2 Datei aufgerufen und in den Group MotionEventData werden die Effekte aufgerufen.
Dann mal weiter:
Ninjas haben den Vorteil, dass es dort schon ein paar komplette Skills gibt, für den anderen Fall erklär ich es direkt einmal:
z.B. bei Kriegern gibt es die Fertigkeit musa.
Ihr müsst von dem jeweiligen Skill die .msa Datei 3x kopieren und so umbenennen, dass ihr z.B. wie in meinem Fall musa.msa, musa_2.msa, musa_3.msa, musa_4.msa habt.
Ohne eine Endung ist es euer Anfangsskill, mit _2 Endung ist es der Meister-Skill, mit der _3 Endung ist es der Großmeister-Skill und mit der _4 Endung ist es der P-Skill
Jetzt öffnet ihr die Dateien und ändert in Group MotionEventData den Effekt ebenfalls. In der musa_2 ändert ihr also das:
Code:
EffectFileName "d:/ymir work/pc/warrior/effect/musa.mse"
Code:
EffectFileName "d:/ymir work/pc/warrior/effect/musa_2.mse"
Ihr könnt die Dateien natürlich auch komplett anderst nennen, aber ich finde es so übersichtlicher und logischer xD.
Falls ihr sie anderst nennen wollt, erkläre ich euch nachher noch, was ihr dann machen müsst.
Nachdem ihr die Dateien im skill Ordner angepasst habt, müssen wir natürlich auch die Effekte anpassen, die sich im effect Ordner befinden(wer häts gedacht).
Hier sucht ihr die Datei raus, die in musa.msa bereits beschrieben wird.
Diese Datei kopiert ihr dann wieder 3x und passt sie vom Namen so an, wie ihr es in der musa_2.msa usw bereits getan habt. Falls ihr es, so wie ich beschrieben habe, genannt habt, müsst ihr die Dateien ebenfalls musa_2.mse, musa_3.mse und musa_4.mse nennen.
Falls ihr sie in den .msa Dateien anderst genannt habt, müsst ihr den Dateinamen so anpassen, wie ihr ihr den Effekt von der Group MotionEventData genannt habt.
Nun könnt ihr in den neuen .mse Dateien jederzeit eure Effekte ändern, die dort definiert werden(dort wird Radius, Leuchtkraft, Farben usw festgelegt)
Wie ihr das macht, könnt ihr durch experimentieren herausfinden oder einfach die SuFu benutzen^^.
Fügt diese Dateien nun über eure Pack-Datei(falls ihr Tims File Archiver benutzt in der PC.xml) hinzu und packt eure PC.epk wieder.
Denselben Schritt müsst ihr natürlich auch in der PC2.epk machen, falls ihr wollt, dass nicht nur die Hälfte der Spielcharaktere die neuen Skills sieht.
PC.epk und PC2.epk ist nun erstmal "vollendet". xD
Jetzt entpackt ihr eure root.epk und sucht nach der Datei: playersettingmodule.py
Dort habt ihr in Zeile 14, diese Definition:
Code:
WARRIOR_ASSASSIN_6TH_SKILL_ENABLE = FALSE
Code:
WARRIOR_ASSASSIN_6TH_SKILL_ENABLE = TRUE
Code:
if locale = YMIR and WARRIOR_ASSASSIN_6TH_SKILL_ENABLE:
Code:
if WARRIOR_ASSASSIN_6TH_SKILL_ENABLE:
Code:
SKILL_INDEX_DICT = { JOB_WARRIOR : { 1 : (1, 2, 3, 4, 5, 6, 0, 0, 137, 0, 138, 0, 139, 0,), 2 : (16, 17, 18, 19, 20, 21, 0, 0, 137, 0, 138, 0, 139, 0,), "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,), }, JOB_ASSASSIN : { 1 : (31, 32, 33, 34, 35, 36, 0, 0, 137, 0, 138, 0, 139, 0, 140,), 2 : (46, 47, 48, 49, 50, 51, 0, 0, 137, 0, 138, 0, 139, 0, 140,), "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,), }, JOB_SURA : { 1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,), 2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,), "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,), }, JOB_SHAMAN : { 1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,), 2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,), "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,), }, }
Falls ihr nur einer bestimmten Klasse einen neuen Skill geben möchtet, steht es euch frei, WARRIOR_ASSASSIN_6TH_SKILL_ENABLE = FALSE zu lassen und einfach bei else(falls der 6.Skill für Krieger/Ninja eben NICHT true ist) eure Skillnummer reinzuschreiben.
Ich habe es aber meinerseits so gelassen, da es einfacher ist^^
Jetzt einfach nach
Code:
## SKILL chrmgr.SetPathName(path + "skill/")
Hier findet ihr btw das da:
Code:
if i != 0: END_STRING = "_%d" % (i+1)
Falls es jemandem Freude bereitet, kann er z.B. (i+2) einfügen und hat somit 2er Sprünge, müsste also demnach skill.msa, skill_2.msa, skill_4.msa, skill_6.msa eintragen um alle Skills zu sehen
Weiter im Text:
Dort kopiert ihr z.B. den 5.Skill, das da:
Code:
chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "tanhwan" + END_STRING + ".msa")
Hier fügt ihr euren Namen der Animation ein, bei meinem Fall gegebenfalls musa, falls ihr die musa.msa umbenannt habt in was auch immer, ändert ihr auch die Endung auf den NEUEN Dateityp(bringt aber wiederum nur Verwirrung rein, ist aber durchaus eine Möglichkeit)
So bei mir sieht das ganze nun so aus:
Code:
chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "musa" + END_STRING + ".msa")
Weiter geht es mit der locale_de.epk
Dort sind skilldesc.txt und skilltable.txt wichtig.
Kleine Erklärung zum Aufbau:
skilldesc.txt:
Code:
1 WARRIOR Dreiwege-Schnitt Dreifachschnitt Dreifachschlag Schlage den Feind blitzschnell. Durchschlag-Angriff 3 Mal Angriff auf mehrere Ziele ATTACK_SKILL|NEED_TARGET|WEAPON_LIMITATION SWORD|TWO_HANDED samyeon 1 4 Gesamtangriffswert %.0f-%.0f (1.1*MinATK + (0.1*MinATK + 1.5*STR)*SkillPoint) * 3 (1.1*MaxATK + (0.1*MaxATK + 1.5*STR)*SkillPoint) * 3
WARRIOR : Charakterklasse
Dreiwege-Schnitt : Skillname(Anfang, nicht Meister)
Dreifachschnitt : Skillname(Meister)
Dreifachschlag : Skillname(Großmeister/Perfekter Meister)
Schlage den Feind blitzschnell. : Skillbeschreibung
Durchschlag-Angriff : Skilldefinition
3 Mal : Skilldefinition
Angriff auf mehrere Ziele : Skilldefinition
ATTACK_SKILL|NEED_TARGET|WEAPON_LIMITATION SWORD|TWO_HANDED : Bedingungen(Ob Angriff oder Buff, ob Gegner benötigt wird oder nicht(z.B. Stampfer braucht KEINEN Gegner),...
samyeon : Jetzt kommt das wichtigere: Name der sub Datei in Etc.epk für das Icon
Die 1 steht für die Skillnummer, welche Animation ausgewählt wird(siehe playersettingmodule)
Die 4 steht für die Anzahl der Steigerungen(falls jemand eine 5 definiert, kann es ÜBER P-Skill hinausgehen, 3 bedeutet, es gibt keinen P Skill usw
Angriffsdefinition(wieviel Schaden gemacht wird, jedoch NUR die Anzeige)
jop, denke ist doch recht verständlich beschrieben xD
skilltable.txt:
Code:
1 »ï¿¬Âü 1 1 1 0 HP -(1.1*atk+(0.5*atk+1.5*str)*k) 40+100*k 12 ATTACK,USE_MELEE_DAMAGE NONE 0 0 MELEE 5 1 0 200
»ï¿¬Âü : Skillname
1 : Charakterklasse(1 Krieger/2 Ninja/3 Sura/4 Schamane)
1 : keine Ahnung sry, einfach so lassen(bei allen Skills gleich)
1 : keine Ahnung sry, hat wahrscheinlich mit Gildenskills oder normalen Skills zu tun, da nur Gildenskills dort andere Werte haben)
0 : ab welchem Level
HP : auf welchen Wert der Angriff zugreift
-(1.1*atk+(0.5*atk+1.5*str)*k) : Angriffswert
40+100*k : MP-Kosten
12 : Cooldown
ATTACK,USE_MELEE_DAMAGE : Auswirkungen bzw Definition
NONE : keine Ahnung sry, einfach so lassen(bei allen Skills gleich)
.....
Das einzigst wichtige für die Animation und Icon ist in der skilldesc.txt, wo das Icon und die Animation bestimmt wird(steht oben beschrieben)
Joa letzter Part:
Etc.epk entpacken, skillassassin.dds bearbeiten, Icon einfügen, das gewünscht ist und nun in den Ordner skill gehen:
Dort kannst du einfach eine Datei kopieren und änderst den Namen auf das, was du bei skilldesc.txt eingetragen hast, z.B. ist 3wege Schnitt in skilldesct.txt samyeon.
In den sub Dateien steht im Prinzip immer dasselbe:
Code:
title subImage version 1.0 image "SkillAssassin.dds" left 0 top 64 right 32 bottom 96
left ist der Abstand vom linken Rand(wo dein Icon anfängt, welches du willst),
top ist der Abstand vom oberen Rand.
right musst du einfach von left 32 dazu addieren, falls dein icon 32 Pixel breit ist(Standartgröße)
bottom musst du ebenfalls einfach 32 von top dazu addieren, falls dein icon 32 Pixel hoch ist(Standartgröße)
Sub Dateien ebenfalls in der xml Datei hinzufügen, wo definiert wird, was zu den epk Dateien gepackt wird, einfügen und freuen, Clientside ist fertig.
Serverside:
Ladet euch erst einmal die skill_proto von eurer Datenbank als sql Datei runter und öffnet sie:
.Best hat ein kleines Tutorial erstellt, was wo definiert wird, ändert die Skillnumber einfach zu eurer, ändert den Name und wenn ihr wollt, die Stärke, die ihr in skilldesc.txt und skilltable.txt festgelegt habt, fügt die Query ein, rebootet 1x und freut euch.
Das mit dem Dmg der Fertigkeiten weiß ich nicht so genau, die bereits definierten Skills(z.B. Cheonryong bei Ninjas) machen auch so dmg, während z.B. noegeom bei mir bisher noch keinen Dmg macht.
Was aber vielleicht helfen könnte, ist , dass im hongkong Ordner eine Datei namens skillpower.txt existiert, dort sind bisher alle Skills eingetragen und sofern ich das verstehe(noch nicht probiert) müsstet ihr da einfach nur euren Skill ebenfalls einfügen^^
Warum mache ich dieses HowTo+Erklärung:
Wie ihr sicherlich gemerkt habt, kann man die patch3 von Korea ganz einfach entpacken UND RATET DOCH MAL WAS DA DRINNEN IST:
Die .mse Dateien und .msa Datein und blablabla.
Und ratet doch mal, was in allen PC.epk und PC2.epk enthalten ist:
RICHTIG. Die .msk Dateien und .gr2 Dateien
Auf deutsch:
Alles was man braucht ist eine EINZIGE Datei, die neu ist und noch dazu nichtmal so richtig wichtig, schaut euch den Skill auf Korea an und ihr werdet merken, wie die Datei aussieht
Das war son Bitchfight, als derwahrehuy eine falsch entpackte patch3 hochgeladen hatte und keiner hatte gemerkt, dass dort alles drinnen ist, was man braucht, bis auf die Icons.
Vielleicht öffnet euch das die Augen:
Kleines Beispiel dafür:
seomjeon.msa:
EffectFileName "d:/ymir work/pc/assassin/effect/seomjeom_start.mse",... schaut nach, ebenfalls eine Textdatei---->ungecrypted und vollständig, öffnet die Datei--->
Code:
List TextureFiles { "2.dds" }
weiter:
Code:
List TextureFiles { "2.dds" }
Code:
List TextureFiles { "guard2.dds" }
.....>seomjeon ist vollständig bereits im Clienten vorhanden, ihr müsst nur die msa und mse Dateien noch einfügen, skilldesc anpassen--->Freuen
Die patch3.epk muss nicht entcrypted werden, alles was entcrypted werden müsste, wären die Icons zu den Skills und die kann man rippen indem man einen Screen aufm offi Server macht und das in Paint oder whatever einfügt....
Naja, das wars meinerseits, die neuen Skills von Korea zu "klauen" ist ansich eine Sache von 5 Minuten, aber sonst kommt ja keiner drauf.....
So nachdem mich einige angeschrieben haben die Icons:
Diese Icons sind nicht die Orginalicons von Korea, sondern nur ausgeschnittene Icons aus Screens ingame.
Achtung: Die .sub Dateien der Icons müssen auf die Icons angepasst werden, da ich auf meinem Server noch mehr Skills habe.
Der Upload ist jediglich für die Vorlage der Icons
Btw, der Orginal Server hat andere effects als die meisten in ihren Dateien, diese sind aber nicht gecrypted, demnach einfach kurz rüberkopieren, dann habt ihr schlussendlich solche Skills
Ninja:
seomgwang
seomjeon
Krieger:
gihyeol
noegeom
(thanks @Lexico for them)
MfG RealFreak
Edit:
Noch weitere Skillmöglichkeiten für euch(unbenutzte Skills):
Warning: bad english award xD
Now the full tutorial on english(as a request)
You need:
-PC.epk
-PC2.epk
-root.epk
-locale_de.epk
-Etc.epk
At first, you extract your PC.epk, there you have some folders with the charakters.
In my example I take the folder assassin.
There you have some folders too, you only need skill and effect.
In the skillfolder you'll see .msk, .msa, .gr2 data types.
The gr2 files are the motions, they define the movement.
The msk files describe the attributes, the rang(I would say this part of the msk file describe enough^^
Code:
Type MIDDLE Attribute "ATTACK_SKILL" "WEAPON_LIMITATION" "NEED_TARGET" NeedWeapon "SWORD" "DAGGER" "DOUBLE_SWORD" Range 800
By the way, the assassin already have some skills, which aren't used in the client, but are already completed(for example cheonryong).
The warriors don't have new already completed skills, so I'll describe it here:
For example you have the motion musa.msa, because you want a master, grandmaster and perfect master skill, you copy the msa file three times and name them musa_2.msa(thats the master), musa_3.msa(that's the grandmaster) and musa_4.msa(that's the perfect master)
Now open the new files, and make the new effects(for example also here musa_m2.msa):
Code:
EffectFileName "d:/ymir work/pc/warrior/effect/musa.mse"
Code:
EffectFileName "d:/ymir work/pc/warrior/effect/musa_2.mse"
You could name the called effects completly different, but I think it would make it more complicated^^
Now make sure, that you have the new mse files, you have called in the skill folder.
For this you have to go in the effect folder(the second folder you need^^).
Then you copy the effect, which is already described in the musa.msa again 3 times and change their names to the names you defined in the musa_2.msa and so on(in my example musa_2, musa_3 and musa_4)
The same goes for PC2.epk.
Because the effects are the same, you only have an skill folder.
Do the same steps like above and PC2.epk is also done^^
Now extract root.epk and look for the file named playersettingmodule.py.
In line 14 you'll find:
Code:
WARRIOR_ASSASSIN_6TH_SKILL_ENABLE = FALSE
Code:
WARRIOR_ASSASSIN_6TH_SKILL_ENABLE = TRUE
Code:
if locale = YMIR and WARRIOR_ASSASSIN_6TH_SKILL_ENABLE:
Code:
if WARRIOR_ASSASSIN_6TH_SKILL_ENABLE:
Code:
SKILL_INDEX_DICT = { JOB_WARRIOR : { 1 : (1, 2, 3, 4, 5, 6, 0, 0, 137, 0, 138, 0, 139, 0,), 2 : (16, 17, 18, 19, 20, 21, 0, 0, 137, 0, 138, 0, 139, 0,), "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,), }, JOB_ASSASSIN : { 1 : (31, 32, 33, 34, 35, 36, 0, 0, 137, 0, 138, 0, 139, 0, 140,), 2 : (46, 47, 48, 49, 50, 51, 0, 0, 137, 0, 138, 0, 139, 0, 140,), "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,), }, JOB_SURA : { 1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,), 2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,), "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,), }, JOB_SHAMAN : { 1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,), 2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,), "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,), }, }
Arahan warrior's new skillnumber: 6
Partisan warrior's new skillnumber: 21
Assassin's new skillnumber: 36
Archer assassin's new skillnumber: 51
Now search for:
Code:
## SKILL chrmgr.SetPathName(path + "skill/")
There you can see this:
Code:
if i != 0: END_STRING = "_%d" % (i+1)
If you want you can change (i+1) to (i+2) and you will need (musa_2.msa, musa_4msa, musa_6.msa)
Or you could leave the _ character in this part: _%d
But that isn't necessairy.
Now copy the line of one skill, for example:
Code:
chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "tanhwan" + END_STRING + ".msa")
Now change the count after (i*skill.SKILL_GRADEGAP)+ to the new skillnumber and change the tanhwan to your new skill(in my example was it musa)
In my example it looks now like this:
Code:
chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "musa" + END_STRING + ".msa")
Now extract the locale_de.epk
You'll need skilldesc.txt and skilltable.txt
An explanation of skilldesc.txt and skilltable.txt:
Code:
1 WARRIOR Dreiwege-Schnitt Dreifachschnitt Dreifachschlag Schlage den Feind blitzschnell. Durchschlag-Angriff 3 Mal Angriff auf mehrere Ziele ATTACK_SKILL|NEED_TARGET|WEAPON_LIMITATION SWORD|TWO_HANDED samyeon 1 4 Gesamtangriffswert %.0f-%.0f (1.1*MinATK + (0.1*MinATK + 1.5*STR)*SkillPoint) * 3 (1.1*MaxATK + (0.1*MaxATK + 1.5*STR)*SkillPoint) * 3
WARRIOR : Charakterklasse
Dreiwege-Schnitt : skillname(starting skill)
Dreifachschnitt : skillname(master)
Dreifachschlag : skillname(grandmaster/perfect Master)
Schlage den Feind blitzschnell. : skilldescription
Durchschlag-Angriff : skilldefinition
3 Mal : skilldefinition
Angriff auf mehrere Ziele : skilldefinition
ATTACK_SKILL|NEED_TARGET|WEAPON_LIMITATION SWORD|TWO_HANDED : conditions
samyeon : now something important, the name of the .sub file in Etc.epk for the Icon
Die 1 is standing for the skillnumber, which animation is called(siehe playersettingmodule)
Die 4 is standing the counts of the climax(if you define a 5, you can level up the skill over the perfect master, if you define a 3, you can't have a perfect skill, only a grandmaster skill
how many dmg(calculation)
skilltable.txt:
Code:
1 »ï¿¬Âü 1 1 1 0 HP -(1.1*atk+(0.5*atk+1.5*str)*k) 40+100*k 12 ATTACK,USE_MELEE_DAMAGE NONE 0 0 MELEE 5 1 0 200
»ï¿¬Âü : skillname
1 : charakter(1 warrior/2 assassin/3 sura/4 shaman)
1 : I don't know sry(same at all skills)
1 : I don't know sry(same at all skills)
0 : when you can level up your skill
HP : what the skill causes(here the skill makes dmg)
-(1.1*atk+(0.5*atk+1.5*str)*k) : how many dmg(calculation)
40+100*k : MP-costs
12 : Cooldown
ATTACK,USE_MELEE_DAMAGE : definition
NONE : I don't know sry(same at all skills)
.....
The most important is the animation and the icon.
last part:
extract Etc.epk, edit skillassassin.dds, add your icon and go in the folder skill:
Copy any file you want and change the name on what you defined in skilldesc.txt
The .sub files always have the same content
Code:
title subImage version 1.0 image "SkillAssassin.dds" left 0 top 64 right 32 bottom 96
left is the distance of the left border(where your icon starts),
top is the distance of the upper border.
right add 32 to your count of left(how wide your icon is)
bottom add 32 to your count of top(how grand your icon is)
Add the sub files in your xml file for packing, pack it done.
Serverside:
Copy one skill from skill_proto and supplement your changements.
May you need skillpower.txt but I didn't try it.
Why I make this tutorial:
you can extract the patch3.epk from Metin2 Korean, and everything you need are the text files, which aren't crypted:
And here are some icons, they aren't the orginal but they are close to it xD
If you made everything right, you have skills like this:
skillnames:
assassin:
seomgwang(archer)
seomjeon(assassin)
warrior:
gihyeol(arahan)
noegeom(partisan)
(thanks @Lexico for them)
Kind regards RealFreak
Edit:
Here are some skills out of a standart client, which arent used: