* *

News

Nexon has recently updated Mabinogi to a 64 bit client. This update has broken many mods in memory patchers for the time being. The mod creators are working hard to essentially rebuild all mods from scratch, and this process will take some time. Please be patient, and stay tuned for more updates.

Keep in mind that you must register an account, and be logged in to view any content on this site.

Mabinogi Status

Erinn Timer

Time
Erinn Time 14:58
Local 01:34
Server 01:34
Moongate Prior G16 [ + / - ]
11:11 Tir Chonaill
12:22 Dunbarton
13:33 Emain Macha
14:44 Bangor
14:44 Emain Macha
16:66 Emain Macha

Ceo in days.

Price [ + / - ]
01:12 Emain Macha - Island in South Pathway
01:48 Sen Mag 5th house from West
Rua [ + / - ]
01:39 Resting
02:15 Resting

Themes





Author Topic: Master-Guide to Modding!  (Read 11303 times)

0 Members and 1 Guest are viewing this topic.

Offline Lady Playtime

Master-Guide to Modding!
« on: October 07, 2016, 04:50:01 pm »
☢Before we begin this guide, I ask all readers stop for a minute, and read this little paragraph, in regards to a truly great person, MabiMods' own Proffessor. ☢

Take a minute, and read what he has to say.  He just sits there and takes all the bullcrap from this community, gets no credit for his amazing work that he, and he alone is capable to doing, sure other people have come close, like Shaggy (no offence shags), but his work is garbage in comparison to the true Frontend by the Proffessor, and Shaggy's works are currently the most used and most helpful mods we have, that right there, is saying a lot.


Take your time for a minute, look at what he's done, and give your thanks, or if he's helped you in a specific way, find a way to give something back, like how I wrote my guide, when the Proffessor became my reason to learn modding, and mod packs were already being made.


Alright, welcome to my master-guide, written by me, Playtime.

Click the spoiler below, for some guide reading music! :)

This is a large compilation of guides, written by me, with intent to help users learn to use, and even create their own modifications!
With consent from the authors, I also have included various guides found on the site, which have credits to the author either above or below their work.


Before you start anything written here, please shut down the game entirely!  If anything in the game is open, in any program, for any reason, you WILL run into problems!

Also please be aware of my database of all guides, that compiles all guides on the site into a single area.  I wish I could add every single one into this thread, but there are too many, so I've carefully selected the guides that are equally informative, and easy to follow.
More advanced, and even some coding guides can be found in the database.
Located here.

To skip to a section, please press either Ctrl+F or F3, depending on your browser.
Simply type in the number of the section, and hit enter.  You will jump down to the section in question.

Click on what you want, to jump to that section!
Also note that they are not in any logical order (yet) and are in the order they were written.

Table of contents:
1.0 - Making a Backup.
2.0 - Error Fixes.
3.0 - Removing Old Mods.
  • 3.1 - Unofficial Tiara Moonshine Mod Renewal
  • 3.2 - PlayPack
  • 3.3 - Abyss
  • 3.4 - Kanan
  • 3.5 - Poison Pack
  • 3.6 - Older or Outdated Mod Packs
  • 3.7 - Singular Mods or Files Section.
  • 3.8 - FrontEnd.
4.0 - Premade Data Folders.
  • 4.1 - Unofficial Tiara Moonshine
  • 4.2 - Jinx
5.0 - The Patchers.
  • 5.1 - JAP
  • 5.2 - MNG
  • 5.3 - Abyss
6.0 - PMG.
  • 6.1 - Editing.
  • 6.2 - Swapping.
7.0 - XML.
  • 7.1 - Editing.
8.0 - DDS.
  • 8.1 - Editing.
  • 8.2 - Resources.
9.0 - Ani.
  • 9.1 - Swapping.
  • 9.2 - Editing.
10.0 - DLL.
11.0 - Tools.
  • 11.1 - Data Packer and MabiUnpack.
  • 11.2 - MabiPacker
  • 11.3 - PMG Editor.
12.0 - Credits.
13.0 - Unsorted Information.
14.0 - Aura and Private Servers
15.0 - Notes from the Author.
16.0 - PowerPatcher
17.0 - Tutorials
16.0 - PowerPatcher
18.0 - Mabinogi Game Tutorials
19.0 - Multi-clienting
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #1 on: October 07, 2016, 04:58:51 pm »
[1.0] Making a Backup

Alright, to begin, let's make a back up of your game, in the event you mess up somewhere along the modding process, and find yourself unable to repair it... You'll need a back up!

So first, locate your mabi folder,
The location will vary if you've manually changed it, however the default locations are:
C:\Nexon\Library\mabinogi\appdata
C:\Nexon\Mabinogi
C:\Program Files (x86)\Steam\steamapps\common\Mabinogi

Right click this folder, click "Copy"
Now go elsewhere on your computer, such as the desktop, documents, or downloads folder.
Right click an empty area of the folder, click "Paste"
Right click this pasted folder, click "Rename" and name it something so you remember such as "Backup Mabinogi"

Once it's finished, you now have created a back up.

If for any reason you end up breaking your game, delete the entire mabi folder that you've been modding.
Come to this back up, and right click it, "Copy"
Go to where the deleted one used to be located, right click a blank area, "Paste"

You have now restored your game back to working order.  Please run it, allow it to patch to the latest version, then begin to mod it again.
Remember to let it patch!  There is the possibility the update will overwrite your mods, so update before you start!
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #2 on: October 07, 2016, 05:16:37 pm »
[2.0]Error Fixes!


Maybe one day there will be a list here, but thanks to the ever changing nature of this, any errors not mentioned on the page your made came from, you'll have to post a thread giving details as to what happened, for us to figure it out.

Tech support area: https://mabimods.net/index.php?board=21.0
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #3 on: October 07, 2016, 05:31:22 pm »
[3.0]Removing your previous mods and patchers!.

So you either broke something, don't like something you added, or need to remove the old stuff to get an updated version?

If you've been following my guide, you have already made a back-up copy of the game in Section 1

So all you need to do is delete your entire game.  And copy the backup into it's location, and allow it to patch.

You didn't listen, though, and didn't make a backup?

The manual removal instructions below will be on a mod-by-mod basis.
Skip to the section regarding the mod you wish to remove:



[3.1]Unofficial Tiara Moonshine Mod Renewal!

1.) Navigate to your Mabi folder, where Tiara has been installed.
2.) Find and run the file "Unofficial Tiaras Uninstaller.exe"
3.) Click "Uninstall" and let the program do it's thing.
4.) It will ask if you wish to remove installation settings.  This is up to you.
5.) Close the Uninstaller, and return to your mabi folder.
6.) Delete the following files: UOTiara_Installlog.txt, UnRAR.exe, AutoBotS.rar.
6b.) Delete the following folders as well: ja, Extentions, en.
7.) You have now removed this mod, and may begin to play mod-free, add new mods, or continue in the guide to remove more mods you have installed.



[3.2]PlayPack!

1.) Navigate to your Mabi folder, where PlayPack has been installed.
2.) Find and run the file "Uninstall PlayPack.exe"
3.) Click "Uninstall" and let the program do it's thing.
3b.) It may ask about protected files. Click "Yes"
4.) You have now removed this mod, and may begin to play mod-free, add new mods, or continue in the guide to remove more mods you have installed.



[3.3]Abyss!

1.) Navigate to your Mabi folder, where Abyss has been installed.
2.) Find and delete the file "ijl11.dll"
3.) Find and rename the file "ijl15.dat" to the name "ijl11.dll"
4.) Delete the following files: Abyss.ini, README_Abyss.txt
5.) You have now removed this mod, and may begin to play mod-free, add new mods, or continue in the guide to remove more mods you have installed.



[3.4]Kanan!

Note: Kanan does not need to be removed. It does not alter the game's files, so to stop using Kanan... Simply do not run the bat file for it.

However, to remove it...


1.) Navigate to your folder Kanan has been installed to.
2.) Find and delete the following files: .coafile, .gitignore, args.txt, coalesce.txt, delayed.txt, directory.txt, disabled.txt, kanan auto start.bat, kanan debug mode.bat, kanan.bat, kanan.py, LICENSE, README.md
2b.) Find and delete the following folders: scripts, data, output.
4.) You have now removed this mod, and may begin to play mod-free, add new mods, or continue in the guide to remove more mods you have installed.




[3.5]Poison Pack!

1.) Navigate to your mabi/package folder Poison Pack has been installed to.
2.) Find and Delete the files: _Mod names.txt, _Update Log.txt, Installation Instructions.txt, Known Issues.txt
2b.) Find and delete the following folders: MultiClient Support, Poison Pack.
3.) You have now removed this mod, and may begin to play mod-free, add new mods, or continue in the guide to remove more mods you have installed.



[3.6]Older or Outdated Mod Packs!

Older, or outdated mod packs may interfere with the normal operation of the game, as there have been many changes to the files used, and how they're used, over the years.

It is recommended to fully uninstall the game, and delete all related files, and reinstall the game once again.

Once done, you may then begin the modding process once again, and select of one the currently updated mods.



[3.7]Singular Mod Downloads, or Files Section Mods!

Due to the sheer amount of mods we offer, assistance can not be offered to individual mods.

If you're unable to remove the mod in question, either post on it's thread, or if a thread does not exist for it, please create one on the Tech Support board, and supply the download link to the mod you're trying to remove.  We'll be happy to assist you.



[3.7]FrontEnd!

I've been typing for hours now... Taking a break.
UPDATE COMING SOON <3



[3.7]Using Modkiller!

Modkiller is a batch file made by Skyluv, that removes all mods, and replaces any needed files to properly setup your folder as clean again.

1.) Grab your copy of modkiller
2.) Extract it to your desktop.  IMPORTANT! MUST BE DESKTOP!
3.) Double click on modkiller.bat, and watch as it fixes your mabi folder!
3b.) In event of failure, simply right click the modkiller.bat file, and run it as admin.





Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #4 on: October 07, 2016, 05:44:04 pm »
[4.0]Premade data folders!

NOTE: THIS IS OUTDATED AND IS ACTING AS A PLACEHOLDER SECTION WITHIN THE GUIDE.
AS LONG AS THIS MESSAGE EXISTS IN ALL CAPITALS LETTERS THIS SECTION IS OUTDATED FROM 2011.  THANK YOU FOR YOUR PATIENCE.

The data folder, is used to change things already used in the game, for example, you can change your Dustin Silver Knight Sword, into a Dragon Fang, without actually having a Dragon Fang, it is purely visual though.
You can also use this to reduce any lag you may have, by minizing things like houses in Tara.

See below for various premade data folders that we offer here on mabimods, please refer to the table of contents for the section on creating your own data folder!

[4.1]Unofficial Tiara Moonshine!

1.) Click "Forum" on the top bar of the site.
2.) Click "Client Modifications" to go to that board.
3.) Click "The Unofficial Tiara's Moonshine Mod Sanctuary & AutoBot" to go to it's thread.
4.) The download link is listed under "Location:" and Installs into C:\Nexon\Mabinogi (usually)
5.) Update Mabinogi to the latest patch.
6.) Delete or rename "C:\Nexon\Mabinogi\Data\" to ensure outdated mods are gone.
6b.) If you use DATA Packer.exe make sure to 'Remove Mods' before starting or if errors occur.
7.) Download and install Unofficial Tiara's Moonshine Mod Online (default) or Offline version right below it on the download page and .pack version right below that.
7b. ) The Offline version can be extracted with 7-zip for those who do not wish to run the installer.
8.) Choose which mods to enable or disable by clicking the [|]..data at the bottom of the mod select page of the installer, the mod choices are saved for the next time you install.
9.) Once finished DATA Packer.exe, logue's MabiPacker or Abyss's Configuration file will be opened for you; you need to click Find then Modify and exit for Data Packer to apply mods.

In order to enable use of the data folder, you will need to do something, please go to the data packer section, or patcher section, refer to the table of contents.
The data packer is included for you with this package, as well as logue's MabiPacker and the Abyss patcher, again please see the correct section for that.



[4.2]Jinx!

1) Click "Forum" on the top bar of this site.
2) Click "Client Modifications" to go to that board.
3) Click "Jinx" to go to it's thread.
4) Please read over the entire first post before you continue, information is often changing.
5) Select your download method.
  • 5.1) .rar format > Click the link at the very bottom of the post, download the file.  Once downloaded extract it into your mabi folder.
  • 5.2) Installer.  Click the link "Download Here" near the bottom, run the file by double clicking.  For Vista/7 users, please right click and hit "Run as Administstator", follow the install.

In order to enable use of the data folder, you will need to do something, please go to the data packer section, or patcher section, refer to the table of contents.
The data packer is included for you with this package, a patcher however, is not, again please see the correct section for that.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #5 on: October 07, 2016, 05:48:09 pm »
[5.0]The patchers!

NOTE: THIS IS OUTDATED AND IS ACTING AS A PLACEHOLDER SECTION WITHIN THE GUIDE.
AS LONG AS THIS MESSAGE EXISTS IN ALL CAPITALS LETTERS THIS SECTION IS OUTDATED FROM 2011.  THANK YOU FOR YOUR PATIENCE.


Patchers, are .dll mods that can change more of the client then the data folder ever could, for example cp reading with the alt key, or extended zoom rates.
These are very unstable in the sense that with every update there is a chance they may be dead for good, unlike the data folder with will survive no matter what you do, just takes a few minor edits.
Each patcher will have it's own section, if you would refer to the table of contents to find the section for the one you've chosen to use.

[5.1]JAP!

All credits for the following go to the creator of JAP himself.

Using the pre-compiled version (Easier)
  • Download the latest JAP binary from the JAP thread
  • Extract the files using 7-Zip, WinRAR or similar into the Mabinogi directory (Usually C:/Nexon/Mabinogi/) and replace anything it asks
  • Run Mabinogi
Compiling your own! (Harder, but might make it run faster)
Shared (Do this first!)
  • Download MinGW and install it with C++ support
  • Append to your environment variable PATH a semicolon (;) and the "bin" directory of where MinGW was installed (Usually C:/MinGW/bin/) (Google "Changing environment variables Windows" and with your appropiate Windows version at the end if you don't know how to change environment variables)
Releases
  • Download the latest JAP source from the JAP thread
  • Extract the files using 7-Zip, WinRAR or similar into where you want to build it
  • Run "build.bat" and type "all" when prompted
  • If the build failed, take a screenshot of the console window and post it on the JAP thread along with build.log. If the build succeeded, go inside "out" and copy the three files inside over to your Mabinogi directory and replace files as needed
  • Run Mabinogi
Nightly (Instructions with TortoiseSVN)
  • Install TortoiseSVN
  • Go to JAP's SVN browser and find the textbox labeled "Read Only access"
  • Copy the parts inclusively between "svn://" and "code/"
  • Go to the directory you want to get the source files, right click on a blank space, click "SVN Checkout", paste the url you copied in to the "URL of repository" textbox and click "OK"
  • Wait for the source to be downloaded
  • Go inside the new "code" directory, right click on a blank space, hover your mouse over "TortoiseSVN" and click "Export"
  • Select the same directory as the one you are currently in (The "code" directory), click "OK" and then "Yes"
  • Run "build.bat" and type "all" when prompted
  • If the build failed, take a screenshot of the console window and post it on the JAP thread along with build.log. If the build succeeded, go inside "out" and copy the three files inside over to your Mabinogi directory and replace files as needed
  • Run Mabinogi

[5.2]MNG!

MNG has been discontinued on mabimods, thus, all information here is for reference only.
This has not been updated from when it was originally written, and shall not be updated.
If you do have MNG, please refer to JAP's binary instructions.

1) Click "Forum" on the top bar of the site.
2) Click "Client Modifications"
3) Click "MNG Release 4.0.5 UPDATE 6/16/11 ModifyZoomLimit" It's stickied, thus it's one of the first ones in the list.
4) Read the first post, download the correct version.
5) Download all 3 files*.
6) Place them all, into your mabi folder.
  • You now have a patcher, for more advanced use/customizations see step 7, otherwise skip to 9.
7) Open MNG.ini, and start editing it, 0=off, 1=on. If there are more than just 0 or 1, it will be stated what each one does.
8 ) Save the .ini file (not save as, just save)
9) Run mabi, enjoy the patcher.

* All files excluding .ini, can not be run normally, you need to MOVE THEM to the mabi folder, where they will run automatically as the client launches.
The game will do it for you, you don't run it, nor can you.




[5.3]Abyss!
1.) Click "Forum" on the top bar of the site.
2.) Click "Client Modifications" to go to that board.
3.) Click "Abyss Patcher" to go to it's thread.
4.) The download link is in a spoiler under "Okay, I read everything above. Let me download Abyss!" and Installs into C:\Nexon\Mabinogi (usually)
4b. You can also obtain Abyss through installing or extracting UO Tiara Moonshine.
5.) Simply extract Abyss.7z or .rar to the root Mabinogi directory using 7-Zip, WinRAR or similar and refer to Abyss.ini for choosing mods.

To get rid of Abyss you have to delete ijl15.dll, Abyss.ini, Abyss_patchlog.txt, dinput8.dll, HSLaunch.exe and HSUpdate.vbs. Then you have to rename ijl15.dat to ijl15.dll. If you delete it for some reason there is one uploaded to the Abyss post.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #6 on: October 07, 2016, 06:31:18 pm »
[6.0]PMG!


PMG is a file extension, this specific one is what you'll be using to modify the visuals of the game, such as your equipment.



[6.1]PMG Editing!

All credits go to Noonehere for this guide.  A very big thank you to him for supplying this information. He's one of our best modders in regards to this type of file.
This guide is also subject to change, as it does not follow my formatting for this guide.  But please know that all changes made will only be to formatting, and the actual text/information contained will remain exactly as it was written by Noonehere.

Last update: 16/10/2016

Hello, welcome.
This is the wall-of-text guide about the PMG Editor. From every button to what you could do with it.
This should explain how to install, what every option does, and possibly make something with PMG Editor.
Around the guide, there will be links to other programs that may be helpful to PMG Editing, but they are not needed to use PMG Editor (except for the installing part)
If theres anything you want to say about the guide, if it helps, if I got something wrong, if you want to add something, please make a post.
If you have questions, make a post, or send a pm.
Thanks for reading!



Table of Contents (Ctrl F the whole line to jump to the section you want to go to)
[x1] Installing
[x2] Interface of PMG Editor
[x3] Editing
   [y1] Load the .frm
   [y2] Load the .pmg
   [y3] Editing the .pmg
[x4] Editing Vertices
[x5] Editing .pmg outside of PMG Editor



[x1] Installing PMG Editor
1. Download PMG Editor from Mabimod Downloads.
2. Download and install Java SE Runtime Environment (JRE). Getting the latest one is recommended. (If in the future it doesn't work anymore, Java SE 8u101 works).
3. Extract the PMG Editor somewhere and open the DLL folder. Open another window to the Java installation folder and go into the bin folder.
4. Copy the DLLs from PMG Editor into the Java/bin/ folder.
6. Back out of the PMG Editor's DLL folder and try to run Run.bat (32bit) or Run2.bat (64bit). Does it run? No? Continue on.
7. Open up Run.bat (32bit) or Run2.bat (64bit) in a text editor. Replace the first word ("javaw" (32bit) or "java" (64bit)) with the location of your Java.exe. Something like: "C:\Program Files (x86)\Java\jre1.8.0_101\bin\java.exe"
8. Run that edited .bat. It should open now

Q&A:
Q: Java encountered an error
A: You may have skipped step 3/4. If it wasn't 3/4, then it may be that you're missing step 7. If it's not that either, then that's the extent of my troubleshooting.



[x2] Interface of PMG Editor
Let's go in order.


(1) - Here is the top bar of PMG Editor. There are drop down menus for File, View, Animation. The red "bone:" tells you what .frm is being used. The blue "Animation" tells you what animation is currently loaded, which is nothing in the picture.
In the File menu, there are:
Clear - Resets the PMG Editor.
Load(.frm) - Loads the .frm into the editor.
Edit(.pmg) - Loads an untextured .pmg into the viewport (3). Using Edit(.pmg) allows you to save your edits. What you see in the view is flipped in Mabi. If the detail is on the left, in Mabi, it will be on the right. Textures do not load in PMG Editor, it shows up as a purple/yellow mess.
View(.pmg) - Loads an untextured .pmg into the viewport. You cannot edit the PMG using this and you cannot save, even if the button can still be clicked on. Honestly, you can use the other PMG Viewer for this.
Import Part - Imports meshes of another PMG into the workspace. The PMG will be placed in the location that its properties says it will be in.
Load(.ani) - Loads a .ani into the editor and begins to play it. If the animation appears jittery in the Editor, but fine on Mabi, it is because the Mabi plays the animation and tweens the empty frames inbetween. The Editor does not do this.
Save(.pmg) - Saves the .pmg into the same file you opened the .pmg with. It does not ask if you want to overwrite. It will overwrite.
Save As(.pmg) - Saves the .pmg into a location of your choosing. It does not automatically append the extension at the end, so don't forget it yourself.
Save(.ani) - Saves the .ani in the same file you loaded the .ani with. It will overwrite.
Save As(.ani) - Saves the .ani into a location of your choosing. Also does not append the extension at the end.
Import .3ds - Imports a .3ds file for PMG Editing or Animation, but only if it first came out from PMG Editor. Anything else, it may not work properly.
import x - Imports a .x file for PMG Editor to use... but what is .x?
Export x - Exports a .x file. This has never been useful for me. It exports everything about what you put in the viewer into something like a JSON file. I have an idea on what the numbers mean, but they're not in a way that I can use.
Export .3ds - Exports whats in view to a .3ds file. Used for Ani and maybe PMG editing with Metasequoia.
Close

In the View menu, there are:
View Wireframe - Shows the wireframe of the loaded meshes.
View Frame - Shows the .frm. The red dots are the joint locations. The white lines are how the joints are connected to each other.
View All - Shows the every mesh if you have hidden it
View Coordinates - Shows the local rotation of the selected mesh with 3 axes. Red is X, Green is Y, Blue is Z. The direction they're pointing out from where they are meeting is the positive side. Negative is on the other side.

In the Animation menu, there are:
Play - Plays the animation from start to finish
Stop - Stops the animation at the frame you clicked stop at.


(2) - This is the mesh list that makes up the PMG that was added in through Edit or Import Part.
Under Root are folders that are named after the joints the .pmg is using in .frm. That means if the .pmg does not use a certain joint, it won't appear.
Under those folders (joints) are the individual meshes that make up the PMG. Somehow Mabinogi connects the edge vertices of a mesh with the vertices of another mesh that connects to it, and applies the animation without separating the edge vertices. This makes a non-segmented mesh when you do an animation in game.
Under the individual meshes are the the vertices of the mesh. You can edit the positions of these vertices in the Controls panel. You cannot delete a vertex.
Right clicking opens up a context menu which only works when a mesh is selected:
Hide - Hide mesh
Show - Show mesh
Hide Others - Hides every mesh except the selected mesh
Show all - Shows every mesh (works like View All in the View menu)
Delete - Delete mesh. There is no undo button. Be careful. You cannot delete a vertex.
Duplicate - Duplicates the mesh and gives it a unique meshName
Import 3ds - Imports a 3ds. I'm not sure how the resulting PMG will end up to be. It looks like it acts as Import Part, but from a .3ds file
Up(?) - Moves it up in the list
Down(?) - Moves it down in the list


(3) - The big black box in the middle is the viewport. Its a 3D space with a black background, making somewhat hard to see. You cannot change the background. The PMG will load into the viewport, looking towards Z-negative and Y-Up. At the center of your view is a grey sphere. That is your Look At point. You can move the Look At point with left click, which will move it in any direction you move it in 2D space. You can rotate around the Look At point with the right click. If you want to center the Look At point on to something, make sure you move it into place from all angles. You can zoom in with the mouse wheel. Don't zoom in too close. Don't look at the mesh from the global coordinate Y axis.


(4) - This is the Control panel for editing the PMG. There are 3 tabs.
Move - Theres two sections: The Interval section and the Manual section.
The Interval section (Blue box) is the right side with the 6 buttons and an input box below it. The Manual section (red box) is the left side, with the 3 input boxes and a button below it.
The Interval section nudges the mesh or vertex in the direction you clicked the button in. The buttons try to represent which direction the mesh/vertex will go (+y = up, -y = down), but it really matters on the mesh's local rotation. You can see that using View Coordinates in the View menu.
The interval input box nudges the mesh/vertex in increments of whatever is inside. PMG Editor opens with 0.5 as default. You won't see the XYZ position of the mesh, but you can see it on the vertex.
The Manual section moves the mesh/vertex by increments of whatever you put in. Putting in y: 10 and pressing the Move button moves the mesh/vertex 10 units along the Y axis. If you want it to move down, you input -10.
Rotation - Like the Manual move, this will rotate the mesh in increments of whatever you put in. You can use trial and error to see which way the mesh will rotate, or you can use the right-hand rule. Look at your right hand and make a thumbs up gesture, rotate your hand so that the thumb is pointing at the positive direction of the axis (seen with View Coordinates in View menu). Positive values are the direction your fingers are curling into. Negative is the opposite. You can also rotate a vertex but this will cause it to rotate around the origin of the mesh. Its best to rotate the whole mesh instead. Remember that what you see in the view is flipped in Mabi. If the mesh is rotated to the left, in Mabi, the rotation will appear to be on the right.
Scaling - Scales the mesh with increments of whatever you put in. Scaling will enlarge or shrink the mesh. It will not change the vertices' XYZ position. It simply changes its scale, but not the scale listed on the vertices' Properties panel. Unlike move and rotate, scaling is multiplicative. Putting in x will multiply the scale by x. Putting in -x does shrink it, but inverts it and expands it. To shrink, you put in a decimal value equal to 1/x. The Geometric checkbox makes it so that the whole thing scales uniformly or not.


(5) - This is the properties panel for the PMG. It changes when the mesh or vertex is selected.
Some properties may show up or not appear at all, depending if that mesh has that information or not.
When a mesh is selected, the following properties are shown:
parts - The part this mesh is attached to. This determines if it's in the A joint or the B joint of the .frm. If you put in a joint that is not in the .frm (case sensitive), the part might not show in game. PMG Editor uses this to determine which folder to put the mesh in.
meshName - The mesh name. Its good to have unique mesh names. Also helps you tell where its supposed to go.
stats - Unsure.
Normal - Possibly the Normal of the mesh, but best to leave it untouched
colorMap - This property dictates what colour will be shown here. Does not take in hex values but a different kind of value. Theres a lot of different values but the ones I know that should interest you is c1, c2, c3. These are the 3 palettes you use on clothing when you dye cloth in Mabi. If you open the mesh using PMG Color Editor, you can see all the values you can use, but I'm not sure what values equals what.
textureName - The name of the texture for the mesh. The texture has to be in the Materials folder of your data folder with the same name as the name in the textureName property to load. As for how it loads... I'm not sure.
PartNo - This determines what part loads first. Its important in making sure that all the numbers are unique. If the mesh doesn't appear in Mabi, it may be because there is something wrong with the PartNo. We'll go more in depth when doing a PMG edit with this.
color - Unsure.

When a vertex is selected, the following properties are shown:
... Actually, theres a lot and most of it shouldn't be touched. The ones that could be touched and probably won't do anything too disastrous are:
x, y, z: The position
r, g, b: The color
a: Its alpha


[x3] PMG Editing
In this section, I'm going to show an example of how to edit a PMG.
I'll edit a Selina School Uniform, move the insignia, and attach some wings on it.

[y1] Load the .frm
PMG Editor will not work without a .frm inside first.
However there are 2 .frms since the introduction to capes/flappy wings, we will need to pick which one to use.
The new .frm has a couple of new joints for capes/wings. When PMG Editor was made, the only .frm it would use is the old .frm, which has the joints without capes/wings. For editing, it is best to use the old .frm. This can be found in your C:/Nexon/Mabinogi/packages/##_Full.pack. Use a package extractor tool like MabiUnpacker to find the .frm.
The .frm is in /data/gfx/char/<race>/female or /data/gfx/char/<race>/male. It does not matter if you use the male or female framework. They both work with the same pmg.
And for reference, the new .frm is in 165_166.pack (it could be found earlier, but that's one instance of where I found it).
Luckily, PMG Editor will load new .frm and load .pmgs with it, but animations will not play.
For this edit, and every other edit in the future, we probably want the old .frm
Steps:
1. Use Mabi Unpacker. or something similar to it and open up C:/Nexon/Mabinogi/packages/##_Full.pack. The ## is the lowest number in the folder.
2. Expand the "gfx" folder, expand the "char" folder, expand your desired race folder ("human", "giant", elf shares the same frame as human), expand your desired gender folder ("female", "male"). Extract the file that ends in .frm to somewhere where you can find later. For this guide, I will use female_framework.frm. The path for this is data/gfx/char/human/female/female_framework.frm
3. On PMG Editor, click on File -> Load(.frm), and select the .frm you extracted from step 2.


[y2] Load the .pmg
Now we will need to get a .pmg that will work with the .frm that was loaded.
Since I chose a human related framework, I'm going to edit a human related pmg. That will be Selina School Uniform for humans.
Steps:
1. Click on File -> Edit(.pmg), and select your .PMG. That was easy.


[y3] Editing the .pmg
First, I'm going to move that insignia on the left arm to the back of the neckline, so I can show how the Properties and Control panel works, and then add the wings.
And an explanation on the PartNo property. Each mesh in every joint loads in order of partNo. If theres something that will overlap because of the PartNo, then one or the other, the thing that shares the PartNo will not load. This also applies for things outside of the PMG. For example, Incubus wings on the clothing PMG and actual wings on the robe slot. Incubus Wings have a PartNo of 20 in the claviclel/clavicler joint. Actual wings have a partNo of 20 in the same joint. What will be loaded? Not both, thats for sure. If we want both to load, one mesh will need to change their PartNo. More on PartNo after these steps.
Steps:
1-Insignia. Find the part you want to edit. I found the insignia in root/arm1l/ /16_male_...
2-Insignia. On the properties panel, change the value from "arm1l" to "chest", and press Enter
3-Insignia. After changing it, PMG Editor needs to refresh the Mesh List. You can do so by duplicating something, or Saving the PMG and loading it again. Once it refreshes, the insignia should move to the chest folder.
4-Insignia. Move the insignia out and position it into place in the back. Use the Move tab and the Rotation tab to achieve this.
5-Wings. Insignia is placed nicely. Now for wings. I will use Import Part and import some Incubus Wings (data/gfx/char/c4/human/female/mantle/uni_c4_devilwing01_close.pmg)
6-Wings. Find out where the import went. Luckily, the Mesh Name told me where it is. Its in claviclel and clavicler. Its placed nicely in the location so theres no need to move it around.
7-Insignia. Look over every part that was changed. Are the PartNo in each joint unique? No? Change it to be unique. As for the Selina School Uni's insignia, the original chest piece is PartNo 0. I could either keep the insignia to be PartNo 2, or change it so each PartNo in this joint be incremental. I'll change it to 1.
8-Wings. Theres one more thing to fix on the Incubus Wings. Because they were originally robe items, the color map on it is wrong. Its looking for a palette Selina School Uniform won't have. I'll change its colorMap from w1 to c1. At the same time, I'll change its PartNo to 21 (I could have changed it to 1 as well. Both should work).
9-Wings. Now we need to fix the import order because we imported the Incubus Wings. There is a chance that Mabi won't load the wings because the import order is wrong. To fix this, save the PMG. Expand every joint, and delete every mesh. Be sure you don't save. Once everything is gone, import the saved PMG in joint order. Any other order WILL NOT WORK. Use the Mesh Names to help. It is best if you import every section before moving on (So every body piece, then every chest piece, then every leg1l piece). PMG Editor will import what you select in order. You can also Ctrl Click to import multiple pieces
body -> chest -> leg1l -> leg1r -> leg2l -> leg2r -> head -> claviclel -> clavicler -> footl -> footr -> arm1l -> arm1r -> arm2l -> arm2r -> handl -> handr
10. Save the PMG, move it to your Mabinogi data folder and use whatever data folder reader you have to test it in game. The location of where it should be should match where the original is when you try to find it in Mabi Unpacker. Selina School Uniform will be placed in data/gfx/char/human/male/wear/male_schoollook01_bsl.pmg

During the making of the PMG, I changed the PartNo of the Incubus Wings to 21. If I kept it at 20 and wore some real wings on the robe slot, the Incubus Wings on the Selina School Uniform would disappear. Why? Because the real wings would have overlapped the Incubus Wings when being rendered. By changing the Incubus Wings to a unique PartNo of 21, I can put on the real wings and have two times the wings (and still not fly because they're both fake).

If you want to import other parts into a pmg, follow the same steps as the Incubus wings. If they import into the wrong spot, do the steps as what I did for the Insignia.


[x4] Editing Vertices
This will be done another day...


[x5] Editing .pmg outside of PMG Editor
I don't have much information on this...
If you want to edit a .pmg outside of .pmg editor (to add more parts or something), you'll need to convert it to be used on Metasequoia.
Download the pmg2mqo converter. Convert the .pmg to .mqo and open it in Metasequoia. Do whatever you want on it. Once you're done, convert it back.
Load it in PMG Editor, check for errors, and hope it works out.
That's all the info I have on it.
Be sure to search the forums for threads where other people have also used Metasequoia. They may have found solutions that you might encounter when using it.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #7 on: October 07, 2016, 06:54:07 pm »
[7.0] XML!


XML is a file extension, this specific one is what you'll be using to modify any controls or parameters.
For example, if you change the value of "ShowName" from "False" to "True" within the prop XML, you will have the names appear above the prop, this edit is used mostly for use with bots, many other edits are possible though, I will be using several examples in the following sections.

The following is written by Noonehere, and his contributors(listed within) to further explain the content of the XML files.



I've been looking into the parameters of itemdb.xml.
Here's a short guide on what the parameters mean. Feel free to add in your knowledge.
This guide doesn't contain everything about itemdb.xml (yet).

Last Update: 11/07/2017
Contributors: Rydian

Legend:
Parameter: Description

ID: Item ID (or Class ID, for debugging)
DB_StoreType: Always 1. Never seen it 0
Category: Allows the item to do some stuff based on what the client can do. Examples are being a Wand type, a blunt weapon, a book, enchantable, dyable, repairable, ego-able, etc
XML: Extra info that gets parsed out. Can be read easier by using an HTML un-escaper. Examples are custom idle motions, wings mesh locations, head/ears framework, extra stats, etc.
Text_Name0: Internal Item Text name. Often used in KR as the "engrish" name
Text_Name1: The name of the item you see on Mabi. Use with itemdb.<language>.xml (from Language.pack) to find the item you're looking for
Text_Desc1: The item description
Bundle_Type: Has 3 values. 0 is does not stack. 1 is does stack on itself. 2 is a bag that holds a number of the item determined by the XML param.
Bundle_Max: Max stack size or bag carry size
Price_Buy: Npc default shop price (The NPC can override the price to something else)

Attr_ActionFlag: More information about this below
Attr_Type: Allows the item to act a certain way (like equips in the slot, or thing holds money). More info below
Attr_Grade: Unsure what it does. Only 1 item has Attr_Grade="1"
Attr_RaceFilter: Applies restrictions on the item (Giant, human, elf, female, male)
File_MaleMesh: The pmg mesh that appears on human/elf males
File_FemaleMesh: The pmg mesh that appears on human/elf females
File_GiantMesh: The pmg mesh that appears on Giant males
File_FemaleGiantMesh: The pmg mesh that appears on Giant females
File_FieldMesh: The pmg mesh that appears when on the floor
File_InvImage: The image of the item in inventory

Inv_XSize: Size of the item on the X axis of your inv.
Inv_YSize: Size of the item on the Y axis of your inv
App_WeaponActionType: ???
App_WearType: Not sure what other values go here and what they do. More info below.
App_UseC4Layer: A flag for using the fourth colour layer. Possibly on the .dds
App_Color1: First dyeable spot. Determines Dye Palette. More info below
App_Color2: Second dyeable spot. Determines Dye Palette. More info below
App_Color3: Third dyeable spot. Determines Dye Palette. More info below
App_ColorOrder: Not sure

App_AnimationType: The animation set used for the weapon. Corresponds to sets in motion.xml. No idea what the numbers in the brackets mean
App_SittingType: Determines sitting posture for clothing. More Info below
Taste_anything: NPC Gifting values. More info in Mabniation

Metalware_UItooltip: Something about being Reforgable
Enchant_UItooltip: Something about being Enchantable
Upgrade_UItooltip: Something about being Upgradable
Par_BlockUseFlag: Possibly controls what can be ctrl+clicked or not
Par_UpgradeMax: Max number of upgrades it can go through
Par_GemUpgradeMax: Max number of gem upgrades it can go through
Par_DurabilityMax: Base dura
Par_Defense: Base defense
Par_ProtectRate: Base prot
Par_AttackMin: Minimum base attack
Par_AttackMax: Max base attack
Par_WAttackMin: Minimum base wound
Par_WAttackMax: Max base wound
Par_CriticalRate: Base crit
Par_AttackBalance: Base balance
Par_EffectiveRange: The effective range of the weapon
Par_AttackSpeed: Possibly determines Normal, Very Fast, Fast, Slow, Very Slow weapons. More Info below
Par_DownHitCount: How much knockdown you apply with weapon

SmartSearchFlag: ???
AuctionSearchFlag: ???


Values:









[7.1]XML Editing!

Okay, first off, you'll need to some programs that we don't offer you here.
You need something that can read .xml files, in text.
Notepad will work, but I recommend C++ Visual Studios, another option would be Notepad++, there are also many more.

The rest will be updated soon!
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #8 on: October 07, 2016, 06:59:56 pm »
[8.0] DDS!

All credits for this go to the user Vertical


Programs Needed/Required

Paint.net (link: http://www.getpaint.net/download.html)

Your hands (Extremely important!)

Core Mod System (Gerent, Fantasia, Unofficial Tiara, etc.) (Look on the site in the Client Modifications section)

MabiUnpack (on the site) (OPTIONAL)

WARNING: DESIGNED FOR N00BS


NOTE: TO FULLY SEE THE IMAGES, RIGHT CLICK THEM AND CLICK OPEN IMAGE
NOTE 2: SOME PEOPLE ASKED ME THE FONT, JUST USE THE SEARCH BAR AND ENTER: SEN'S MABINOGI FONT

INTRO!

This guide will hopefully help you to learn the BASICS of modifying an "interface.dds".

First

To begin, you will need .dds editing program/software, "Paint.net" is a relatively simple and easy to use free program to edit .dds and other types of images. The link to download it is provided above. After you have installed and opened Paint.net it should look like this:


Now that you have opened it up,  go to the top left corner and click "File" then click "Open". Go ahead and find the place where you put your "interface.dds" file. This is the interface.dds that Nexon uses for the client defaultly. 



You can easily get this from the mabiunpack program (USE THE SEARCH BAR: "MABIUNPACK") under the data/gfx/gui/interface.dds section. (MabiUnpack is on this site, just search it)

MUST DO! Now the portions of the .dds you want to modify are these small squares/boxes:



These top boxes will effect the whole colour of the "Inventory" windows and "Character" windows, etc, example:



Now you can begin to edit the bottom section/portion of boxes/squares, which effect the colour of the squares you click the "Use Skill" button and the "Inventory" button along with the "Character" buttons, etc;




PHYSICALLY MODDING THE STUFFZ

To begin, here is an example of the finished product after your editing:



As you can see the boxes in the top corner are a blueish tint and some other things are modified for my preferences. All of my preferences you  can do yourself with a bit of practice in Paint.net. In this guide I'll just be showing you how to colour the boxes, etc. Here's the diagram.



As you can see, you will be using the pencil tool (be sure to choose a nice colour) to slowly colour in each individual pixel (Tip: Hold the left click for long lines on the boxes). This process requires time and patience, as you will screw up sometimes, just go back in the history box in Paint.net and click the Pencil that you used before the mistake. (Tip: Let go of the pencil after you do a large portion of colouring, this will make mistakes lest costly)

To make the "Use Skill" and Tabs buttons coloured, here is a diagram:



These are the parts that make the little purple outline around the inside "Use" button when your clicking it, and the gray in the box when it is not being used.


Getting this stuff to work!

To make the interface work correctly,  it requires a mod patcher/core modding system installed with the data folder in use (Tiara, Gerent, Frontend, etc.). Then all you have to do is just save the interface.dds when you like it (make sure you dont change the name at all!) and put it into: C:/Nexon/Mabinogi/data/gfx/gui NO WHERE ELSE OR IT WONT WORK!

Et Voila


HAPPY MODDIN!
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #9 on: October 07, 2016, 07:13:35 pm »
[9.0] Ani!

The follow information is fully credited to Gorlath, who created it.
As well as Noonehere who revised it.



Hello everyone! Gorlath here with a guide on animation modding.
I am trying to write this guide as completely and as concisely as possible so as to provide an all-in-one algorithmic approach to animation modding. This way, I cut down on confusion in the long run. Thus, I shall be including some things covered in other guides. (These parts will be spoilered)

Before we begin, I'd like to thank Noonehere, Cross and everyone who helped me in this thread for making this guide possible. I'd also like to thank some Japanese modders who offered their advice, but I shall keep them anonymous for reasons.

By the end of this guide, you will know how to make your very own custom animations and add them to Mabinogi.
I would like to stress, however, that since pmg editor ignores mesh data received from 3ds files, this method DOES NOT allow you to edit pmgs.

            "Part one: The tools you'll need."
In this part, I shall cover the basic tools you will absolutely and with no exception need in order to mod an animation file.
I am assuming that you know the very basics of modding here.
So, without further ado:
  • Mabinogi Unpacker
  • A data packer of some sort (for applying your mod)
  • A working copy of the PMG Editor
  • Autodesk 3ds Max (2014 verified to work)
A word of caution: It is vital that you use 3DS Max and not another editing tool. As far as my tests have revealed, 3DS Max is the ONLY editor that can correctly import the pmg editor's exported .3ds files. Consider Blender and Metasequoia to be confirmed to not work. I have received word from one of my Japanese sources that Studio Maya is an alternative to 3ds max but I have NOT tested it myself.

To get the pmg editor working, follow the guide linked in the list above. Be certain to pay attention to the section telling you to copy the .dll files into your java directory or your pmg editor's import/export functions WILL NOT WORK.
Or you can check out the PMG Editing guide that was recently made here


           "Part two: Preparation."
In this part, I shall cover the steps you must take before you can start editing your file. Again, these are vital.

I am going to list here the FILES that you will need to extract from mabinogi:
  • The animation you wish to edit
  • Some kind of headgear mesh
  • A body mesh
  • The body framework
***If your animation is not a human animation, make sure to extract the correct mesh and framework for whatever animation you are trying to edit. For example, if you want to edit Nao's spinning animation, you will need her mesh and her framework! This is non-negotiable!!!***

Now, some extra information on these.
First of all, the framework. I've observed that sometimes the new framework used for players (with wing compatibility) does not like older animations in pmg editor. You'll get an error like "The bone is not fit for this animation". If this is the case, someone should let me know and I'll upload a version of the old framework that I know works. Look at Part One of the PMG Editing guide to see the difference between the two frameworks. Use the older, less spiny framework
Next is the headgear. Why do you need the headgear? Because 3ds max will not import a .3ds file that does not have a mesh in the head slot. I would like to note that if you are doing player or npc animations, you can use the Incubus mesh located in
Code: [Select]
##_full.pack/data/gfx/char/monster/mesh/incubus/. I will be assuming that you have not chosen the incubus mesh, however. The Incubus mesh comes with everything for the human/elf framework.
The body mesh can be any mesh that fits your framework, from female_default_bss.pmg to some obscure piece of g1 armor.

Once you have all of these files, go ahead and open your pmg editor and load the framework and body mesh in that order. Once you have done this, you'll need to import part the face mesh you chose. Using the Succubus as an example...


Once you've done that, load the animation and export the whole thing as a .3ds, ensuring the bone and animation boxes are checked. After this, just boot up 3ds max and import your 3ds file! If you did everything right, you'll have a screen that looks something like this...


When doing animations, you do not need to import PMGs in the order for PMG Editing. Just having it show up is good enough. For Succubus, edit the body, load the cap, load anything else extra (wings, weapons), and the animation. Then export to .3ds.
Also, some animations can be imported without the head, but that would be difficult to animate. (or maybe it was just 3DS Max 2017 being able to import without a head.)
In 3DS Max, import the exported .3ds from PMG Editor, replace the whole scene, and you'll get the screenshot above.



           "Part three: Animating."
In this third part, I'll be going over how to animate your mesh within 3ds max.

First of all, I want to stress that the pmg editor does NOT receive mesh data from your saved 3ds file. Again, THIS METHOD DOES NOT ALLOW YOU TO EDIT PMGS.

When it comes to actually animating, I really can't give you much information on how to do it. If you want to learn that, go watch youtube videos on beginner's animation. 3ds max takes a while to get used to so don't expect to make anything glorious the first time. What I CAN tell you, however, is how the meshes work and how to animate it specifically.

You will immediately notice that your mesh seems to be made up of two things in max: Actual body parts, and little floating "dots". These dots are the origins for the bones within your framework. They control the mesh entirely and a .ani file ONLY recognizes changes in bone rotation and location.
Let me repeat that: .ani files DO NOT recognize any changes to MESH data. Do not move the body parts! In fact, I would recommend that one of the first things you do is select all the mesh parts and freeze them. This will prevent you from accidentally selecting and moving them.


Now, when you select one of these bones, you'll notice that keyframes at the bottom of the screen appear on your timeline:

These keyframes contain all the animation data for your ani right now. In order to edit it, you will have to understand how keyframes and keyframe animation works. Thankfully, that's the easy bit, which I shall leave to you.

Here's a quick tutorial on how to animate for Mabinogi.
  • Always rotate the bones of the animation. Unless its a -tool bone, DO NOT TRANSLATE/MOVE/SCALE THEM. I've never tried importing an animation that has been modified that way into Mabi, but I'm sure it won't look good.
  • But before you start rotating, you need to set how 3DS Max understands what you're doing. To the right of the timeline is a large square with a key shape in it. That is the Key Frame button, which will save the current position/rotation/scale of whatever bone is selected. Next to that is the Auto Key or Set Key button. Click either one (Auto Key for newb friendly). Your timeline now has a red background. That is a good time to start animating.
    • Set Key means that 3DS Max will not save any keyframe changes you did onto the timeline unless you press the Key Frame button (hotkey: K). If you do a rotation and move out of that frame, the rotation resets and all changes are lost.
    • Auto Key means that 3DS Max will save the keyframe changes you've made. Usually its just the rotations you want to save.
    • On the Keyframe, there are 3 colors. Green for rotation, Red for Translations, Blue for scale. The Key Frame button will save all 3 by default.
  • PMGs are imported to 3DS Max weirdly. They do not face forward, instead they face the floor. This make rotating difficult. Do your best, and use all the views to help you animate. Usually I look from the PMG's top view, side view, front view, and an orthographic view. If it's hard to see what is overlapping, change the Styling of one of the views to Ink. Since PMG Editor doesn't load textures well, the textures won't go with the .3ds. The Ink stylish shows the edges of the PMG and help see what is overlapping.
  • Remember where the floor is. The nice black solid line in 3DS Max is NOT THE FLOOR. Depending on the animation you're editing, it should already tell you where the floor is.
  • Every child bone is affected by the parent bone. If the parent bone moves, the child bone will move too. The order can be seen if you press hotkey H, and view everything in hierarchy.
  • Bones start with a %
Once done animating, export your animation as a .3ds file.

Finally, here's a video if you'd prefer a more visual introduction to the subject:

(Thanks, Cross)


           "Part four: The home stretch."
In this final part, I'll be going over how to turn your 3ds back into a pmg.

For this, we merely need to look at our pmg editor, import .3ds and "save as .ani". Be sure to play your animation the entire way through a couple of times in the pmg editor to make sure it works correctly! Finally, put the .ani in its correct slot in your data folder and run your data packer.

Make sure the animation plays properly in 3ds Max too. The tweens between frames should be roughly the same as long as its short. PMG Editor does not fill tweens so the animation may appear jittery if you did not fill the animation with keyframes. It should look fine in Mabi though.
Sometimes the animation may seem to wobble around a bit. I have no idea what causes this. The best solution I have is to find the keyframes where this occurs and straighten them out.


After that, run Mabinogi and take a look to see if your new animation applied. If it did, congratulations! Enjoy your new animation! If not, double check your file path. If there was an error with the actual animation, the pmg editor likely would have let you know.

Thanks for reading my guide! Please let me know if/how I can improve it to help you, as helping one person now can possibly help hundreds more in the future.
Thanks for reading, and thank you Gorlath for writing this guide!






Addition from Noonehere:


Advanced Mabi Animating


Before starting your animation, I advise a few things.


Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #10 on: October 07, 2016, 07:20:08 pm »
[10.0] DLL!


Links and information provided by Blade3575
https://en.wikibooks.org/wiki/X86_Assembly
http://www.posix.nl/linuxassembly/nasmdochtml/nasmdoca.html


Links and information provided by Rydian
http://www.cheatengine.org/forum/viewtopic.php?t=570083
http://forum.cheatengine.org/viewtopic.php?t=583376
http://forum.cheatengine.org/viewtopic.php?t=571888
https://www.onlinedisassembler.com/odaweb/


And now for the guide:
All credits go to the user Tbstewa for supplying the information
This section is also pending updates based on information from Blade3575(creator of Abyss) and Rydian(Cheat Engine expert) among other soon-to-be-named users.  Permission has been granted from the author for all information, only some of it is still pending editing/addition.

This section is subject to change, based on user contribution.
And to all contributors, please keep in mind that the information you supply will be carefully reviewed before seeing the public eye, as this is a rather heated subject, anything provided to me is carefully reviewed before being included, but all included information will be credited to the one who supplied it, either written by the user or written by me, if the information came from an outside, it WILL be properly credited to the original source.




First things first... I am not the original author of this tutorial (It can be found here) but I found it very helpful while I was learning and there are also some more in-depth tutorials on olly and asm found here



Basic Assembly/OllyDBG Tutorial, in relation to Game Cheats


Summary


This guide will explain exactly what is necessary to begin cheat creation for generally any online computer game, including both fields to study, and tools to use.

Before this tutorial begins, it should be noted:

1) I'll make great use of footnotes to fill in anything the reader may not understand.
2) I'm going to assume the general audience is very technologically inept, especially pertaining to the forementioned fields.
3) This tutorial concerns mostly Windows games - there's not much of a market for cheating on other platforms.[23]

Fields of Study


When it comes to cheating in games, it will be heard that you must know either assembly, C++, or both, while in fact, neither are necessarily true. However, if you're going to work alone every step of the way, in almost every scenario, knowledge of Intel-syntax assembly will be necessary.

Assembly


Assembly is considered the bottom of the barrel of programming languages - it's considered as low-level[24] as you can go with a programming language. But, as all executables must utilize assembly one way or other, this is also why it is considered very powerful when attempting to learn what is done in a specific executable. For example, if one program encrypts certain types of files, and you need to learn how the encryption algorithm[25] is done, then you would disassemble[26] the program. From there, assuming you know assembly, you may be capable of understanding what the program does (More importantly, what that algorithm is, which would allow you to write a decryption algorithm).

Assembly uses hexadecimal numbers, so it should be understood the number system is organized as follows:

0 = 0, 1 = 1, 2 = 2, 3 = 3, 4 = 4, 5 = 5, 6 = 6, 7 = 7, 8 = 8, 9 = 9
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15

(The above shows numbers from base 16, the hexadecimal system, to base 10, the standard decimal system)

Firstly, assembly is entirely about data manipulation (In general, that's all programming is - manipulating data, effecting hardware to do what you want). To be put simply, usually three things are being modified:
1) The stack
2) Registers/Flags
3) The memory of a program

Now, to explain what the above:
1) The stack is a large stack of numbers, manipulated for handing off parameters[9] to functions[9], storing the registers, and storing other miscellaneous data.

2) Registers are used for completing varying operations (Comparing data, arithmetic functions[27], logical operations[18], etc). Usually, they'll store certain types of numbers/addresses[19], from as low as 4-bits, all the way up to 32-bits (It's possible to go higher than 32-bits, but, most users won't encounter situations where that will be necessary to know). Flags are used for marking registers for different purposes (e.g.: The overflow flag, or OF, will set itself to the number 1, from 0, if an operation[4] using that register is larger than the space that the register can handle; so if you're using a 4-bit register to handle 32-bit data, the OF flag would be set to 1).

3) Varying data in the program is constantly being modified, as the stack and registers can handle only so much data at once, in many cases, it's more efficient to leave some data modification in the program itself (Though it should be noted, this is only done in memory; meaning, if you were to modify the program to display a random popup every 15 minutes while it was running, the moment the program were exited, when you re-open it later, the popup would no longer appear).


Modifying the stack is done through a number of ways, the most common being using PUSH and POP instructions.

In assembly, each line is an instruction[4], limited to at most two parameters, and as little as none.

The PUSH instruction accepts one parameter, which is added to the top of the stack. For example:

Code: [Select]
PUSH 5
The above would push the value 5 onto the stack, so that it would look like this:

Code: [Select]
00000005
Now, it should be mentioned, usually a stack base pointer (Another type of register, which will be explained further later on) is pushed onto the stack, to act as a reference point for modifying the stack. Therefore, in the beginning of most functions/programs, you'll find the following line:

Code: [Select]
PUSH EBP
Which simply causes the stack to start looking like this:

Code: [Select]
00000000
From there, if I can push my data onto the stack:

Code: [Select]
00000005
    00000000

Or, I can save one of my registers by using POP:

Code: [Select]
POP EAX

(NOTE: EAX is an example of a 32-bit register - a full list of available registers and what each one is used for will be covered later).


Assuming the value of EAX was 7C90FFDD, the stack will look like:

Code: [Select]
00000005
    00000000
    7C90FFDD

That covers standard modification of the stack - we'll cover more later, such as how functions access certain portions of the stack for parameters being handed off, etc.

There are many varying types of registers, but to explain the bare basics, we'll start with the general purpose registers. It's necessary to note, the following are all prefixed with the same letter to represent that they are extended registers (32-bit). Therefore, the 16-bit register for EAX is AX:

EAX - Accumulator Register
EBX - Base Register
ECX - Counter Register (Used for looping[20])
EDX - Data Register (Used in multiplication and division)
ESI - Source (Used in memory operations)
EDI - Destination (Used in memory operations)

The above registers each have a sub 4-bit register; for EAX, as the 16-bit is AX, the 4-bit registers are AH and AL - therefore, for (E)BX the 4-bit registers are BH and BL, etc. When referencing pointers, it may be important to keep in mind the different registers.


Modifying registers is essential for loading data from/to the stack or from/to data in the program memory. The most used instruction for loading data into a register is the MOV instruction.

To load what's stored at the address[19] 01009000 into register EAX:

Code: [Select]
MOV EAX, DWORD PTR DS:[01009000]
One new thing was introduced on top of the MOV instruction and the EAX register: DWORD PTR DS:[Address]

DWORD is a 32-bit value. PTR stands for "pointer", meaning that the data at address 01009000 is being loaded, not the number 01009000. DS stands for "data segment", meaning the loaded value is from the .data section.

To expand, there are four "segment registers", pointing to the segments in the executable:

CS - Code Segment (References anything in the .code section)
DS - Data Segment (References anything in the .data section)
SS - Stack Segment (References the stack)
ES - Extra Segment (Rarely used)

There are also three pointer registers (One of them earlier was already referenced, EBP):

EBP - Base Pointer
ESP - Stack Pointer (Top)
EIP - Instruction Pointer (Points to the address of the next instruction)



Now, apart from the MOV instruction, there is also the LEA instruction. The LEA instruction (Load Effective Address) is slightly slower, and ends with slightly larger code. It's used in preparing the loading of pointers[29] into registers, allowing even math operations to be used (NOTE: Where as MOV can load data into memory, LEA is limited to only modifying registers).

The use is identical to MOV:

Code: [Select]
LEA EAX, DWORD PTR SS:[EBP-4]

Note the use of multiplication via the asterisk, and even addition between registers.


Now, onto the easy math operations:

ADD destination, source - Adds the "destination" and "source", leaving the result on the "destination"
SUB destination, source - Subtracts the "destination" and "source", leaving the result on the "destination"

SAL destination, source - Shifts the destination to the left source times (e.g.: 15 shifted once to the left would turn into 5, but shifting once to the right, and the number would still be 5).

SAR destination, source - Shifts the destination to the right source times (e.g.: 15 shifted once to the left would turn into 1, but shifting once to the left, and the number would be 10).

INC destination - Increment the destination (Add one to the given value)
DEC destination - Decrement the destination (Subtract one to the given value)


The final important factor in the basics of assembly are conditional statements (If condition then statement, if not condition then statement, etc) and looping[20].

For comparing data, the CMP instruction is used:

Code: [Select]
CMP EAX, 1
Now, the comparison has to end up somewhere, and the possible outcomes are different types of jumps. If EAX is greater than (Or equal to), less than (Or equal to), and equal to (Or not) the number 1, then a jump to a specific address is made. If not, nothing is done.

e.g.:

Code: [Select]
CMP EAX, 1
    JE 00401000

jge -Jump if they're greater or equal ; This will not work on negative registers
jg - Jump if they're greater than ; Neither will this
jle -Jump if they're less or equal ; ..this..
jl - Jump if they're less ; ...Or this
jne - Jump if they're not equal ; This conditional jump and all the following will work with both negative and positive numbers alike
je - Jump if they're equal
jne - Jump if they're not equal
jae - Jump if they're above/greater than or equal
ja - Jump if they're above/greater than
jbe - Jump if they're below/less than or equal
jb - Jump if they're below/less than

The other operation for comparing two numbers is the TEST instruction, which is identical to an AND[18], but rather than storing the result, the next instructions will check if the result of the AND was zero or one.

JZ - Jump if the result was zero
JNZ - Jump if the result was not zero (Meaning it was one)

e.g.:

Assume EAX is 00000001

Code: [Select]
TEST EAX, 1
    JNZ 00401000

Since the value of EAX is 1 and the comparison value is 1, the jump will not occur.

Now, these tactics can also be used to repeat steps, for example:

Code: [Select]
    0100739D   MOV EAX,0
    010073A2   CMP EAX,5
    010073A5   JE 010073B1
    010073AB   INC EAX
    010073AC   JMP 00401000
    010073B1   RETN

The EAX register is set to zero, then EAX is compared to 5 - if EAX has the value 5, it jumps to the RETN instruction[21], to exit the function. Otherwise, the executing continues, and INC EAX is called, to add 1 to EAX repeatedly, until eventually, EAX is 5, and will jump to the RETN.


And that's the basics of assembly

Debugging Applications


At this point, your skills of assembly can be put to the test. I recommend the following be downloaded:



From here, you'll be dealing with WinAPI and DirectX functions. WinAPI is the Windows interface for dealing with applications (Starting/exiting of applications and most manipulation of applications is done by the WinAPI). DirectX is a standard collection of multimedia API's (DirectDraw/Direct3D for handling graphics, DirectMusic/DirectSound for sound, etc), which almost all Windows games utilize. But, for a beginner, only WinAPI will matter, so it's adjusted to keep Windows API Reference (Windows) as a bookmark for explaining what WinAPI functions do what.



Understanding how to use debuggers is key to the creation of game cheats. Once you have mastered the basics of understanding what is being done in an executable, through a debugger, you'll be ready to start understanding how cheats can be made on poorly protected games (Protected meaning games with no anti-cheat, no anti-debugger techniques, etc). After the segment on using a debugger, the next step is working around the protection mechanisms put in place to prevent debugging, and at the core of it all, cheating.



The above is a picture of OllyDBG loaded with Notepad. If you notice the "C" button with the cyan background, between the "H" and "/" buttons, that's the "CPU" section. And to explain what is in the CPU section:

1) This is the disassembled output - anything look familar?
2) This is the registers window - what is loaded into each register will be updated with this window
3) This is the current stack of the program
4) This is the assembled input of the program, or the "dump" of the program. You'll notice the ASCII column resembles what the program may look like if you were to open the program in a word editor.

A debugger allows you to manipulate how the executable is ran - you can modify the registers by double clicking on the value to the right of each register. You can modify the stack by right clicking in the stack window and PUSH/POP'ing values, or right clicking on a specific value and selecting "Edit" or "Modify". At this point, you can watch as Notepad is initialized by stepping (Executing instructions one at a time) through it (Select the "Debug" menu --> "Step into" or "Step over").

There are many other features of this particular debugger - you can view the sections of the program by clicking on the cyan "M" (Memory) button, which will bring up a list of all the varying sections (Some that haven't been explained yet, such as the .text and .rsrc sections). The status of each window can be viewed by clicking on the cyan "W" button. Open file handles[29] can be seen by clicking on the cyan "H" button. Threads[32] window, seen by clicking the "T" cyan button. The last window of importance would be the software breakpoints[33] window.

This next part of debugging is done using the version of Notepad released with Windows XP (Home/Professional). If you're using a new version of Windows, such as Windows 7, or even a newer release, where Notepad was either removed or dramatically changed, then you may just have to read through, following without physically using OllyDBG.

Now that you understand the importance of the varying explained windows, you can start debugging. Launch OLLYDBG.EXE, and if you receive a popup relating to "PSAPI.DLL" being outdated, I recommend selecting the "No" option. Click on the "File" menu, then "Open", and enter "%systemroot%\notepad.exe" in the "File name:" text area. Click the "Open" button.

To test out using the debugger, I recommend you do a "Step Into" or "Step Over" by navigating to the "Debug" menu (Or simply press F7 for "Step Into" and F8 for "Step Over"). If you notice, the stack window changed - now the value "70" is on top of the stack. If you step into/over again, a new value is on the stack now.

Now, you can test out setting a breakpoint. You can manually jump to the address that is about to be called by the "CALL 01007568" instruction, by pressing the box directly to the left of the "L" cyan button, and entering the address. Or, if the grey background is highlighted over the CALL instruction (As it should be, if you've stepped into/over twice), you can simply press enter.

If you did either of the two suggested, you should end up at something that looks similar to this:

Code: [Select]
PUSH <JMP.&msvcrt._except_handler3>
If so, then you've followed this guidance correctly (If not, you can reload the instance of Notepad but clicking the gray box with two arrows pointing to the left, which is the box to the right of the "Open" box). Now, you can set a breakpoint by right clicking on the prementioned instruction, navigating to "Breakpoint" and selecting "Toggle" (Or click your F2 key while the gray line is over the prementioned opcode). You can step into/over again, or attempt to execute the program by clicking the blue play button, fourth to the right of the first "Open" button (The F9 key can also be clicked to accomplish the same). Execution will pause at the this instruction due to the breakpoint - if you attempt to execute again, Notepad will be running, and the CPU window will no longer be up-to-date, due to the startup being completely done.

From here, you can try pause the execution by clicking on the "pause" button, directly to the right of the play button, which will land you at a "RETN" line, below a "SYSENTER" instruction. Setting a breakpoint on a call expected to be used can cause the program to pause in the CPU section again, giving you direct control over the flow of the program. For example, if you go to the "ExitProcess" function (Click the button directly left of the cyan "L" button and type in "ExitProcess") and set a breakpoint here, then when you run the program and attempt to exit, the window will disappear, but execution will pause at this function. This is an example of one way you can gain control over a program.

Another commonly checked area is the strings in an executable. Right click on the disassembled area, select "Search For" then select "All Referenced Text Strings". If you scroll down toward the end of the newly opened list, in the References window (Which can be opened by the "R" cyan button, for future reference), you may see something such as:

Code: [Select]
Text strings referenced in notepad:.text, item 248
 Address=01007D26
 Disassembly=ASCII "GetLocaleInfoW",0

In Notepad, this is a list of functions that are being imported. Some executable will list other strings of interest. For example, if you're attempting to modify the attributes of a weapon in a loaded game, the weapon name may be listed in the strings window. You can check where that string is referenced (If it's referenced in a MOV/LEA or a PUSH, odds are, it's being used as a parameter for a function), set a breakpoint, then run the game again. Then the first time where the name of that weapon is used as a parameter is where the executable will be paused, which may lead you to functions you will be interested in.

One more instruction not mentioned in the assembly portion is "NOP" or "no-operation". While that isn't an actual Intel instruction, the actual opcode for NOP is "XCHG EAX, EAX" - many debuggers convert the line "XCHG EAX, EAX" to NOP. If you want to remove a line in a program while debugging it, you have to "NOP" it out - replace the bytes that line takes with nothing but NOP's, until the line is full. If you want to replace a line that takes up 4 bytes, and the replacement is only 2 bytes, you'll have to use NOP instructions to fill up the remaining space.

Lastly, to modify an instruction in OllyDBG, double click on the instruction in the CPU window, and replace to your heart desires.

Debugging is a very tricky game, filled with a fair bit of guessing and checking. Gradually, as you become more comfortable with your debugging environment, you'll become better, and eventually, you'll be very comfortable in navigating through executables.


IDA Pro

IDA is an extremely powerful environment tool for analyzing executables, and with that power, comes complexity. I recommend it be used by you as your experience grows, but there is too much to be said about how to utilize all the capabilities of it in this single guide.


Anti-Debugging Techniques

Assuming you find yourself fully capably of working with executables, the next segment in the guide is going to cover protection schemes used to prevent debugging.

One very commonly used call to detect debuggers is the "IsDebuggerPresent" call. For example:

Code: [Select]
CALL IsDebuggerPresent
IsDebuggerPresent Function (Windows)

If a debugger is not being ran for the program calling IsDebuggerPresent, 0 is the value that ends up being given back (Or "returned") - otherwise, anything not equal to 0 is returned.

To bypass checks of these sort, navigate to the "Plugins" window, then "OllyAdvanced", and select "Anti-Debug 2". Check the "IsDebuggerPresent" box, and hit "Ok".

But, of course, there are many other anti-debugger features: many executables are made to exploit bugs in OllyDBG to make it crash if the program is loaded. I recommend opening the OllyAdvanced window and checking the three following bugfixes:

Code: [Select]
Kill %s%s bug (full fix in string-routine)
Kill NumOfRva Bug
Kill little Analysis-Crash-Bug

PhantOm also has powerful features: I recommend navigating to the PhantOm menu (Select "Plugins", "PhantOm", then "Options") and checking off the following:

Code: [Select]
hide from PEB
fix ODString, FPU, Import
custom handler exceptions
change Olly caption
patch NumOfRvaAndSizes

load driver
hide OllyDbg windows
hook RDTSC

However, do not go wild and check off every single anti-debugger option - in fact, some of those options can cause problems when debugging applications, resulting usually in a crash (Or worse).




Of course, these aren't the only things that are used to protect an application. One common scenario you may run in is when you see this popup dialog:



"Quick statistical test of module "notepad-" reports that its code section is either compressed, encrypted, or contains large amount of embedded data. Results of code analysis can be very unreliable or simply wrong. Do you want to continue analysis?"

This usually means the executable was packed, as means to prevent debugging, and analysis of what's in the executable. There are a number of methods used to unpack executables, but in most cases, if you let the program run, it will unpack itself entirely into memory, allowing you to pause the program, then navigate your way through, using previously mentioned tactics.

One extremely common packer, however, is UPX (UPX: the Ultimate Packer for eXecutables - Homepage). UPX is intended to be used only for compression, not protection, but in more cases than others, UPX is used to protect an executable. There's a free unpacker tool distributed with UPX, that is also bundled with CFF Explorer. Therefore, if you open CFF Explorer, select "File", then "Open", you may navigate down to the "UPX Utility" and select the "Unpack" option. Select "File" then "Save" to save the unpacked copy, and enjoy.

However, if the executable is not using UPX, then the first step usually taken, is identifying what the executable is packed with. There are tools made to identify what some executables are packed with (Though, be warned - occasionally, these tools aren't entirely accurate, and may point to the wrong packer, or may even state an executable is packed, when in fact, it isn't).

CFF Explorer comes with a tool for identifying packed executables titled "PE Detective", though I do not recommend using this, as it is terribly outdated, and in most current day cases, will be of no help at all.

PEiD-
Homepage: PEiD
Download: http://www.peid.info/files/PEiD-0.95-20081103.zip
Instructions: Extract ZIP archive to a new folder
Miscellaneous: Thanks to the PEiD community for their hard work!

One fantastic benefit about PEiD, is that it comes with a tool for unpacking some executables - it usually doesn't work, but for a beginner, I recommend using it whenever possible.

Once you identify what an executable is packed with, I would recommend Googling tutorials on how to unpack that specific executable. For example:

Code: [Select]
unpack [packer] tutorialReplacing [packer] with the packer PEiD identified.

.NET Framework


Of course, what if the executable you're working with isn't packed or protected in any way at all, but it still won't run in OllyDBG? Another possible scenario is that the application was made with the .NET framework, which OllyDBG is not capable of working with. If that's the case, I recommend downloading the free .NET decompiler tool, "Reflector".



With Reflector, the full source code to an application will be returned - to understand what is being done, you'll have to learn a new .NET language (Either VB, C#, or any other Reflector will display the executable as), which is simply out of the spectrum of this guide.

Resources


The next segment is a short one, covering resources. Under Windows, there's a method of adding pictures, sound, executables, and all other types of files to an executable, by adding them to the .rsrc section of an executable. Sometimes, some protection schemes will consist of adding the original program as a resource to a new program, then having the new program load the original from the .rsrc area. The great news about resources, is that they're viewable by anyone.

If you open an executable in CFF Explorer, and select the option on the left toolbar "Resource Editor", a full list of everything attached to the executable is returned. At the least, there is usually an "Icons" folder. But, with CFF Explorer, if you right click on any of the files or folders, it is shown you can remove, replace, add, and even save resources, essentially extracting them from the executable.

And that's all there is to using resources.

Anti-Cheat Mechanisms


The final portion of the guide, is working against anti-cheat mechanisms, where many common methods are discussed, such as the commonly known "DLL injection".

To start, many anti-cheat engines are known for being very aggressive. They hide themselves from the process list, keep track of any newly made processes, etc.

Usually, to gain control over an executable, a call to the WinAPI function "OpenProcess" is made (OpenProcess Function (Windows)). OpenProcess is almost always hooked[1] to prevent touching of a process. However, even if OpenProcess were not hooked, the process list table has to be repaired so that you can find the proper process ID, so OpenProcess would know which process to open.

It's considered very complex attempting to write a bypass for such aggressive anti-cheat systems. Rather, if you're dealing with an anti-cheat such as GameGuard, DLL injection is used to make changes to the executable before GameGuard loads.

However, it isn't always that easy. GameGuard will constantly check the .code section so you cannot modify that section. Rather, DLL injection involves allocating space[34], then adding code to that new area, which GameGuard will not check. Usually, this new area will make changes in the .data section - if the HP of a character is stored in a particular spot in the .data section, then one cheat may modify the HP, setting it to the maximum possible value every milisecond, to imitate the "god mode" cheat.

Yet, some games will do another check - they'll check if there is execution occuring outside the .code section by checking the last called function. Others may attempt to do entire checks on the executable in memory, etc.

But, if that's all there is to it, how do you know where HP is stored? Or how do you know what is possible with that anti-cheat in place? As stated earlier, debugging is a game of guess and check. One great place to check is the community - every now and then, some communites may list the offset where sensitive data, such as the HP of a character, can be found.

Good luck.
Footnotes

[1] - Hooking a function involves intercepting data from a hooked function, and usually acting upon that action. There are a few varying methods of hooks, but usually, you'll find more aggressive anti-cheat systems overwrite the first few bytes[2] of a function to intercept any potentially dangerous calls to the game being protected.

[2] - There are 8 bits in a byte - bytes are a measurement of data. In the .code section[3] of a program, there's a certain number of bytes for each instruction[4]. To see what opcodes[4] do what, check out ProView's x86 Disassembler (Proview PHP - Online x86 Disassembler - Powered By Universitas Virtualis Project, By Ben/2009.).

[3] - The .code section is where instructions[4] are executed. In a standard[8] portable executable (P.E.; The most common type of available executable for Windows NT 5.X[5]), there's a .data section (For all data - pictures, video, text, variables[6], etc), a .code section,

[4] - Instructions are commands to be executed by the CPU of a workstation. As you study assembly more, you'll learn more about the varying type of available instructions. It should be noted, instructions are also called "operation codes", or "opcodes".

[5] - Windows NT 5.X is the kernel name for Windows XP (The X representing the exact version number).

[6] - In math, variables are numbers represented by characters. In programming, variables are types of data[7] represented by a space in memory[8]

[7] - In math, there are varying types of numbers: Integers, natural numbers, rational, irrational, etc. In programming, there are varying data types, for strings of text, integers, binary data (e.g.: Usually used for pictures, video, encrypted data, etc), ...

[8] - This does not include programs made under the .NET framework, for a new section is added (CLR), which is for matters outside the extent to which this guide reaches.

[9] - In math, functions are formulas used to manipulate numbers as needed. Usually, you'll plugin a number or two (Or more) to represent variables to be used in the function. In math, the numbers being handed off as variables are referred to as "parameters". In programming, it's the same, though you're not limited to just numbers for the parameters, and not all functions need to be given parameters. For example, there's a function, exit, used to usually shutdown a user-mode[10] program. Exit, in C/C++[11] takes one parameter in the syntax of, "exit ( int )", where int stands for "integer".

[10] - C and C++[11] alike are two also low-level programming languages, which are usually used in the creation of game cheats, as the syntax is considered easier to understand, and the compilers[13] used for C(++) are known to create more optimized[14] programs/libraries[15] than hand-written assembly code.

[11] - C++ is an extension of C, carrying many features (Primarily, it is Object-Oriented[12]) making it more commonly used than C in most current-day projects.

[12] - If you use an object-oriented language, you'll learn later what it is, and the importance of it. For now, it's not necessary.

[13] - Compilers are a tool used with linkers[16] to create programs; generally, it is the compiler's responsibility to handle code generation and optimization. The result output of a compiler is an object, which from there, is handled by a linker to create a program.

[14] - Optimized code is usually written to perform fastest on the CPU, by taking up less cycles[17] (Via either using less instructions, or using instructions that use less cycles). Usually, optimized code may end up taking more space on a hard drive than unoptimized code (More optimized programs will usually use more instructions that use less cycles to complete a simple task - for a live example of this, visit Hex blog: Reading assembly code).

[15] - Libraries are used to add functioniality to programs - for example, there may be a codec library for playing an MP3 file, which is used by a media player for communicating with MP3 files. Without the executable, the library file is just data, without the library, the executable will fail to play the MP3 file.

[16] - Linkers, to be put simply, take objects and library files, and "links" them to create a single executable.

[17] - CPU cycles are the measurement of a computer's speed - for example, a 2.0GHZ CPU is capability of completing 2 billion clock cycles per a second (Coming out to 2 clock cycles per a nano second).

[18] - Logical operations are used for further data manipulation. The AND operator (Represented by the ampersand symbol) will check that two pieces of data are true (If they both are true, the return value is true - otherwise, the return value is false). Then the OR operator (Represented by a pipe symbol), states that if both pieces of data are not both false, the return value is true (Otherwise, it is false). The XOR operator (Represented usually by a carrot symbol) ensures two peices of data are different (If they are both true or both false, the return value is false - otherwise, if one is true and the other false, the return value is true).

[19] - Assembly references to spaces in an application by addresses, which are catalogued by how many bytes are used per an instruction, or per a piece of data; for example:

The following instruction takes up 2 bytes:

Code: [Select]
MOV EAX, EAX
If that piece of data is stored at 010070D8, then the next instruction would be stored at 010070DA. It should also be noted, addresses are usually 32-bits (If you're in such a rare situation where you're working with a 64-bit program, then addresses will go up to 64-bits).

Addresses are also referred to as "offsets".

[20] - Looping is a method of repeating a certain number of instructions for a specific amount of runs - this can range from zero loops to infinite (Infinite usually implies the loop will continue until the program shuts down).

[21] - The RETN instruction is used to return execution to the main code. For example, if a function is called using the CALL[22] instruction,

[22] - The CALL instruction is for calling functions in the executable. For example, if you want to call the exit function, which accepts one parameter, it would be called like so:

Code: [Select]
PUSH 0
CALL Exit ; Assume Exit stands for the location of the Exit address

But, it should be noted, parameters must be placed in reverse order. Therefore, if you're calling a function, "Divide" that takes two parameters, the first being the dividend, the second being the divsor, and you're attempting to divide 100 by 10, then the following would be the corresponding code:

Code: [Select]
PUSH 10
PUSH 100
CALL Divide

[23] - Platforms generally including other operating systems, apart from all versions of Windows made from Windows XP and later. Examples of some platforms would be Mac OS X, all distributions of Linux, all distributions of UNIX, etc.

[24] - Low-level languages are, in simple terms, very closely related to the computers hardware. In the case of assembly, it's considered to be as low as one can go on a Windows platform.

[25] - An algorithm is a certain number of steps used to process data. It may be used to encrypt/decrypt data, to organize data in files (e.g.: In a file with a list of random words, an algorithm could be used to identify words longer than 10 characters, then place them into a special location for later access), etc.

[26] - Disassembly is the process of "un-assembling" a program. For now, all that needs to be known, is that disassembly is always possible when dealing with programs (Executables, libraries [For Windows, files ending with the .DLL extension are one type of library], etc).

[27] - This just means any basic math function - adding, subtracting, multiplying, etc.

[28] - Pointers are a reference to data in memory (Pointers hold offsets[19] to data)

[29] - When a file is opened, a unique identifier must be marked, so when you decide to read or write from that specific file, the machine knows which opened file you're talking about. This identifier is known as a "file handle". Also, communication to hardware and kernel[31] drivers[30]

[30] - Kernel drivers are an interface to the kernel[31].

[31] - The kernel is the last component to bridge hardware to software. Whenever software needs to manipulate the hardware, the kernel is involved.

[32] - Threads are a method of executing multiple instructions at the same time. For example, if are playing a computer game that has to keep track of multiple users playing at once, including yourself, all the active windows it has open, etc, then you need threads - otherwise, only one thing will be done at a time (You move, then one other player, then one other, etc).

[33] - Software breakpoints are a method of stopping execution once a certain instruction is reached. For example, if I put a software breakpoint at the beginning of the call to the Exit function, as soon as program being debugged attempted to call Exit, the debugger would pause program execution at that point.

[34] - Allocating space means reserving parts of memory for a program, to be used for a particular purpose.

OLLYDBG FAQ BY TBSTEWA

Q: I loaded the dll I wanted to edit but couldn't find my addresses!!! HELP PLOX!!!

A: Press Alt+E and search the executable modules list and find the file it is you wish to edit double click it and it will load so you can search for the address you want to edit.


Q: I loaded the files and when I pushed Alt+E my executable had not loaded in the list

A: Reinstall your ollydbg... it's an error with the debugger itself and usually fixes after a clean delete and reinstall...


More Q&A can be asked in this thread and I will answer as best I know how to... all FAQ's will be added as they come up and will be in the first post of this thread....
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #11 on: October 07, 2016, 07:23:30 pm »
[11.0]Tools!

NOTE: THIS IS OUTDATED AND IS ACTING AS A PLACEHOLDER SECTION WITHIN THE GUIDE.
AS LONG AS THIS MESSAGE EXISTS IN ALL CAPITALS LETTERS THIS SECTION IS OUTDATED FROM 2011.  THANK YOU FOR YOUR PATIENCE.

Tools are programs or scripts that will run along side your client, or will run beforehand for create/using mods.
If for any reason one of these tools no longer works or gives you an error, please inform us, using it's thread.  If one does not exist, create a new thread in tech support and I personally will assist you.

[11.1]Data Packer and MabiUnpack!


A warning in advance, the following is very heavy on images, it may cause lag when you view this, for users with slower systems I've placed it in a spoiler, so you can view the rest of the guide without this showing up.
All credits for the following go to "Fl0rn"






[11.2] MabiPacker!
All credits for the following go to "ShaggyZE"

Since DataPacker is crashing for some people and MabiUnpack is obsolete I decided to write a quick guide for MabiPacker considering I've had it packing mods for UO Tiara as a 3rd option under Abyss and DataPacker for almost 2 years.
I decided to go with version 1.2.1.2 as it's reported to be the most compatible.




[11.3] PMG Editor!

The PMG Editor is the tool we use here to... You guessed it, edit PMG's.

1) Click "Files" from the sitemap to the left of the site.
2) Click "Tools" from the sections. (You'll need to scroll down a bit first)
3) Scroll to the end of this page, click page 2.
4) Click "PMG Editor"
5) Click "Download"
  • 5.1) At this point you will require an archiver, I'll be using "WinRAR", which can be found here: http://www.rarlab.com/download.htm
  • 5.2) Install with default settings, it should open once installed, close it.  Locate the file you downloaded (PMG_Editor(Eng)), right click it, click "Extract here"
6) Open the folder, then open the "dlls" folder.
7) Copy and paste all files here into the paths in the instructions below, please select the one for your system.
  • 7.1) 32bit Operating Systems:
Code: [Select]
C:\Program Files\Java\jre6\bin\
  • 7.2) 64bit Operating Systems:
Code: [Select]
C:\Program Files (x86)\Java\jre6\bin\8) Go back to the folder the editor is in, and right click "Run2.bat", click "Edit", or "Open With > Notepad"
9) Delete everything in this file.
10) Add the following, from the instructions below, select the one for your system.
  • 10.1) 32bit Operating Systems:
Code: [Select]
"C:\Program Files\Java\jre6\bin\java.exe" -Djava.util.logging.config.file=logging.properties -cp .;lib/jme.jar;lib/jme-awt.jar;lib/jinput.jar;lib/lwjgl_test.jar;lib/lwjgl_util_applet.jar;lib/lwjgl_util.jar;lib/lwjgl.jar GUI
  • 10.2) 64 bit Operating Systems:
Code: [Select]
"C:\Program Files (x86)\Java\jre6\bin\java.exe" -Djava.util.logging.config.file=logging.properties -cp .;lib/jme.jar;lib/jme-awt.jar;lib/jinput.jar;lib/lwjgl_test.jar;lib/lwjgl_util_applet.jar;lib/lwjgl_util.jar;lib/lwjgl.jar GUI11) Save this file, with the new information on it.
12) Run "Run2.bat"


Guide on how to use this program will be coming with the next few updates to the guide.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #12 on: October 07, 2016, 07:58:12 pm »
    [12.0]
Credits!

All credits for work included here, go to it's original author.

  • Data Packer and MabiUnpack guide.
  • Fl0rn.

  • Unofficial Tiara Moonshine, Abyss and MabiPacker guide.
  • ShaggyZE.


NOTE: THIS LIST IS INCOMPLETE, most credits are given to the author under or above their work, I am moving them all here as soon as I can, if something is not mine, I have requested permission, and posted who actually created the work.  I just haven't had time to move it here!
[/list]
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #13 on: October 07, 2016, 08:02:13 pm »
[13.0]Unsorted information
Credits to Rydian for texture guides.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #14 on: October 11, 2016, 02:40:05 pm »
Some more updates here and there.
Added some new sections as well.

Not enough has been added in various locations yet to claim any section as "updated" except for 1 and 3.

Still working on getting the updates. 
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #15 on: October 12, 2016, 01:51:49 pm »
Section 6 is updated.
PMG Editing.

I have multiple site projects to work on, at the same time. Plus personal issues that need to be worked out.

This makes each update take longer than it should.

That being said, all contributions to the guide are highly appreciated, and credits will be given where credits are due.

If you wish to contribute, PM me, or post on this thread. 
And a side note for posters, your posts can and will be deleted to make room for more sections of the guide.  However, please know that your posts are not completely gone, they are hidden in a private section of the site for reference. And will be restored after thread modifications are complete.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #16 on: October 13, 2016, 02:06:10 am »
[17.0] Tutorials!


This section is reserved for tutorials, be it mabi related, or otherwise. Feel free to request more to be added to this section.  Or add your own. :)


[17.1] Batch Files!

Batch files are basically just text files, that execute commands.
For an example, I'll be using Modkiller, made by Skyluv.
Modkiller is a batch file made by Skyluv, that removes all mods and repairs your mabi folder to run in a clean state.

Code: [Select]
REM (NEXON LAUNCHER PATH)                 [TiARA,ABYSS]

@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\data"
@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\en"
@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\Extentions"
@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\ja"
@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\ko"
@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\zh-CN"
@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\zh-TW"
@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\AutoBot"





REM Deletes Tiara/Abyss Files
cd "C:\Nexon\Library\mabinogi\appdata"
del "AutoBotS.rar"
del "Be.Windows.Forms.HexBox.dll"
del "cook.dat"
del "cook.en.dat"
del "CookImplement.dll"
del "DATA Packer.exe"
del "DevIL.dll"
del "english.tag"
del "favcook.dat"
del "favcook.en.dat"
del "Ionic.Zip.Reduced.dll"
del "MabiCooker2.exe"
del "MabiCooker2.exe.config"
del "MabiCooker2.vshost.exe"
del "MabiCooker2.vshost.exe.config"
del "MabiDirectLaunch.exe"
del "MabinogiResource.net.dll"
del "MabiPacker.exe"
del "MabiPacker.exe.config"
del "MabiPacker.pdb"
del "Microsoft.WindowsAPICodePack.dll"
del "Microsoft.WindowsAPICodePack.Shell.dll"
del "PowerPatcher.exe"
del "PowerPatcher.pdb"
del "readme.txt"
del "stuff.dat"
del "stuff.en.dat"
del "Tao.DevIl.dll"
del "Unofficial Tiaras Uninstaller.exe"
del "UnRAR.exe"
del "UOTiara_installlog.txt"
del "UOTiaraPack.bat"
del "powerpatcher.log"
del "Abyss_patchlog.txt"
del "README_Abyss.txt"
del "ijl11.dll"
del "Abyss.ini"
del "ijl11.dat"

What we have here, is a small section from modkiller, which is nothing more than a series of commands.
All these commands are commands you'd normally type into CMD, or the command prompt.

To break it down a little:

Code: [Select]
REM (NEXON LAUNCHER PATH)                 [TiARA,ABYSS]
Here, the "REM" command is used to leave a message on the prompt.  In this case, it will display "(NEXON LAUNCHER PATH)                 [TiARA,ABYSS]" which is referencing what the following commands are for.  In this case, it's to remove Tiara/Abyss from the Nexon launcher version of the game.

Code: [Select]
@RD /S /Q "C:\Nexon\Library\mabinogi\appdata\data"
In this one, RD removes directory, /S removes files and subfolders, and /Q does so silently (removing the prompt to delete)

Code: [Select]
cd "C:\Nexon\Library\mabinogi\appdata"
Now since we're looking for the individual files, we can no longer specify the filepath, so we'll need to bring ourselves there before executing commands.

The cd command, is simply change directory.

Code: [Select]
del "MabiCooker2.exe.config"
Del simply deletes the file specified in the currently location. Using the cd command from above, to jump around locations.



More will be added about this at a later update.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #17 on: October 15, 2016, 04:46:05 pm »
Updated section 7.

It's currently in a spoiler, since it is not finished (in terms of formatting, the guide itself, is finished though)
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #18 on: October 22, 2016, 03:47:07 pm »
A very massive update to section 6!!  All thanks go to the user Noonehere, see section 6 for a link to profile.  He is an incredibly skilled PMG and ANI modder, among other things.

Supposedly, he has another section as well, currently pending an update.  So once that's finished, expect that addition as well. 
I personally requested this of him, and he's agreed to provide this information for this master-guide.  So please give all thanks to him, not me. Again, his name is Noonehere, and his profile is linked on section 6 :)

We have a number of skilled users in regards to that topic.  But Noonehere is the first to come to mind, he's incredibly amazing at what he does. I highly recommend anybody interested in the PMG or ANI parts of modding, take a look at his work.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #19 on: October 22, 2016, 05:10:46 pm »
A very massive update to section 6!!  All thanks go to the user Noonehere, see section 6 for a link to profile.  He is an incredibly skilled PMG and ANI modder, among other things.

Supposedly, he has another section as well, currently pending an update.  So once that's finished, expect that addition as well. 
I personally requested this of him, and he's agreed to provide this information for this master-guide.  So please give all thanks to him, not me. Again, his name is Noonehere, and his profile is linked on section 6 :)

We have a number of skilled users in regards to that topic.  But Noonehere is the first to come to mind, he's incredibly amazing at what he does. I highly recommend anybody interested in the PMG or ANI parts of modding, take a look at his work.

Next section on my agenda? The DLL section. 

How abyss was made, and how Kanan and other such patches were created.
Though, please be aware that due to the nature of such mods, I will be very carefully choosing my words.  You will very much require knowledge of computer sciences beforehand, in order to follow the information provided.

Every section of this guide, is designed to allow even the most computer illiterate of users, to understand and be capable of modding and creating, EXCEPT for this specific section. This is for advanced users only, and I will be carefully reviewing any information provided to me, on top of my own information, so that it will require a certain level of understanding before you're capable of proceeding.
And that level of understanding will NOT be provided. This is an advanced section, only for advanced users.

The information contained in the DLL section is for very advanced users who would be able to take a few pieces of information and turn into a fully completed mod.

No questions will be answered in regards to this section.  However, any information provided will be carefully considered in the creation of this section.


Until my requests have been answered however,  The DLL section will be a guide created by the user Tbstwea (link to profile in the main post for that section) which is currently being written, if you don't see it, please refresh the page until you do.  It will appear shortly :)

That guide is subject to change though, so if you're interested in this topic, please keep an eye on this guide, as each update may or may not be documented.  Since this is still a massive work in progress a change log will not be included until the completion of the guide.


And for those unaware, this guide existed many years ago, and is long since outdated.  This project you're currently reading is a revival effort to re-create the master-guide for the current version of the game, requesting assistance from any and all users capable of modding in the various sections.
So as my requests come in, the entire guide is subject to change. 

So please do post any requests or questions. This wills both to improve the guide, and improve my ability to request information.

I've been here for many many years, so I personally know a user capable of any type of mod.
So even the most extreme of requests, I can work with to find information related to that topic.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #20 on: October 22, 2016, 05:33:10 pm »
Next section on my agenda? The DLL section. 

How abyss was made, and how Kanan and other such patches were created.
Though, please be aware that due to the nature of such mods, I will be very carefully choosing my words.  You will very much require knowledge of computer sciences beforehand, in order to follow the information provided.

Every section of this guide, is designed to allow even the most computer illiterate of users, to understand and be capable of modding and creating, EXCEPT for this specific section. This is for advanced users only, and I will be carefully reviewing any information provided to me, on top of my own information, so that it will require a certain level of understanding before you're capable of proceeding.
And that level of understanding will NOT be provided. This is an advanced section, only for advanced users.

The information contained in the DLL section is for very advanced users who would be able to take a few pieces of information and turn into a fully completed mod.

No questions will be answered in regards to this section.  However, any information provided will be carefully considered in the creation of this section.


Until my requests have been answered however,  The DLL section will be a guide created by the user Tbstwea (link to profile in the main post for that section) which is currently being written, if you don't see it, please refresh the page until you do.  It will appear shortly :)

That guide is subject to change though, so if you're interested in this topic, please keep an eye on this guide, as each update may or may not be documented.  Since this is still a massive work in progress a change log will not be included until the completion of the guide.


And for those unaware, this guide existed many years ago, and is long since outdated.  This project you're currently reading is a revival effort to re-create the master-guide for the current version of the game, requesting assistance from any and all users capable of modding in the various sections.
So as my requests come in, the entire guide is subject to change. 

So please do post any requests or questions. This wills both to improve the guide, and improve my ability to request information.

I've been here for many many years, so I personally know a user capable of any type of mod.
So even the most extreme of requests, I can work with to find information related to that topic.

Make sure to read the quote! Important post!

On top of this quote, I've also updated the DLL section, section 10. :)
This time, it's the user Tbstewa, again, links are provided with credits to the user, within that section.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #21 on: October 22, 2016, 07:07:07 pm »
Make sure to read the quote! Important post!

On top of this quote, I've also updated the DLL section, section 10. :)
This time, it's the user Tbstewa, again, links are provided with credits to the user, within that section.

Next up on the plans for the master-guide, is to continue updating section 10! I've requested, and have been granted permission to use a number of things. :)
So expect those updates!

But if there's any section you'd like to see updated next, please do let me know, and I'll get to work on it immediately! :D
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #22 on: November 02, 2016, 01:31:22 pm »
Next up on the plans for the master-guide, is to continue updating section 10! I've requested, and have been granted permission to use a number of things. :)
So expect those updates!

But if there's any section you'd like to see updated next, please do let me know, and I'll get to work on it immediately! :D

Section 10 is still a work in progress, I got side tracked... Sorry. :(

HOWEVER, section 8 now is fully updated!


The credits section is NOT updated, however the credits are given to any contributors/authors at the top of their respective sections.  Eventually everybody will also be included in the specific credits section.

I do have health concerns (my heart) that makes some of this difficult, so I'm waiting until the guide is complete before touching the credits, that way I don't have to constantly go back and forth and make it hard for myself.
If anybody has a problem with that, let me know and I'll have you added to the credit section.  Otherwise, you will be added at a later date, but your credits are still given in the section your work is included in.
Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Lady Playtime

Re: Master-Guide to Modding!
« Reply #23 on: November 02, 2016, 04:10:50 pm »
Section 10 is still a work in progress, I got side tracked... Sorry. :(

HOWEVER, section 8 now is fully updated!


The credits section is NOT updated, however the credits are given to any contributors/authors at the top of their respective sections.  Eventually everybody will also be included in the specific credits section.

I do have health concerns (my heart) that makes some of this difficult, so I'm waiting until the guide is complete before touching the credits, that way I don't have to constantly go back and forth and make it hard for myself.
If anybody has a problem with that, let me know and I'll have you added to the credit section.  Otherwise, you will be added at a later date, but your credits are still given in the section your work is included in.

Another update, I've always had "guide reading music" and it's always been universally popular music.
SCREW IT, now it's music that I personally love, and listen to.

This specific song, I usually listen to on repeat, at max volume with a subwoofer cranked.  I love it.

Don't like it? Well nobody is forcing you to play the song.

Join me on Twitch, I stream!
^ Click to join me ^




Contact me by email: [email protected]. by Skype: Playtime.xel, PM me here, or say my name in a post and I'll find you!
Quote from: Marck
[12:37:42 AM] Marck: ...
[12:37:44 AM] Marck: Adam
[12:37:50 AM] Marck: You can take over MM now, I'm freaking stupid

Offline Fl0rn

Re: Master-Guide to Modding!
« Reply #24 on: November 03, 2016, 10:49:00 pm »
[7.0] XML!

NOTE: THIS IS OUTDATED AND IS ACTING AS A PLACEHOLDER SECTION WITHIN THE GUIDE.
AS LONG AS THIS MESSAGE EXISTS IN ALL CAPITALS LETTERS THIS SECTION IS OUTDATED FROM 2011.  THANK YOU FOR YOUR PATIENCE.


XML is a file extension, this specific one is what you'll be using to modify any controls or parameters.
For example, if you change the value of "ShowName" from "False" to "True" within the prop XML, you will have the names appear above the prop, this edit is used mostly for use with bots, many other edits are possible though, I will be using several examples in the following sections.



[7.1]XML Editing!

Okay, first off, you'll need to some programs that we don't offer you here.
You need something that can read .xml files, in text.
Notepad will work, but I recommend C++ Visual Studios, another option would be Notepad++, there are also many more.

The rest will be updated soon!



I figured i'd chime in on the whole xml editing.  I've seen some interesting ones, and i've done some minor ones myself.  The tail/tara houses into ropes is one that springs to mind as a good example of an xml edit. (not my work of course)  And a good post regarding xml features, here's a quote.

I left notes (mostly) in the edited XMLs. For example, the ice spear circle has the note <!-- Range Circle --> over it. With that, it should be easier to compare the original XMLs and what I've edited / where to find the edits.

However, I'll post some basic knowledge that I've obtained while working on this:

CParticleType[10] = Basic particle effects, I know what literally every parameter for this EffectType does EXCEPT for the Number parameter. Can use most of the basic parameters like Size, Life, Color, SizeOverLife, ColorOverLife, Number, etc.

CBillboardType[10] = 2D effect that will follow the screen, not having a Z-Axis. Example, music effects. CANNOT use SizeOverLife or ColorOverLife. I don't think it uses the Life parameter either, as it's not really needed at all. The timing of the effect can literally be edited through the Color parameter by specifying time values in between colors.

CCylinderType[11] = ??? Didn't even bother with this one as it was a bit to complicated for me at the moment. Contains paramters like Radius and UpperAngle.

CDiskType[10] = Effect type used with Decals. Example: Spellwalk Decal, Fantastic Chorus Decal. CANNOT use SizeOverLife or ColorOverLife. Number and Life aren't used either.

Now that that's out of the way, let's talk about some of the EffectType parameters themselves.

Life: Only used in CParticleType[10], and I'm not really sure what the purpose of it is since the actual visual aspect of the effect is determined by when you fade the effect's color to Black (#000000).

Number: No idea what this does, but I'm assuming that it handles the inserted values based on how the client runs the effect.

Color: Basic color mechanism, can define timing of the effect as  I said before. Format, <TimeStamp, Color> Example, if i wanted an effect to be red for a Second, then fade out afterwards, i'd do 0 FFC00000 1000 FF000000. You can specify times in between to determine color changes. The longer you drag out the end of the effect, the longer it lasts.

ColorOverLife: This is a secondary Color feature, but it's actually not remotely connected to Life. It also has its own time parameters, and in order for the effect to actually look right, you have to either cut the Color parameter out completely (which won't do any harm as the ColorOverLife does the same thing essentially), or have the Maximum Time on the effect as the same for both parameters. Example, Color ends at 1000 and ColorOverLife ends at 1000

Size: Basically does the same thing as Color, but for the size of the effect. The values are in the <TimeStamp, Size> format.

SizeOverLife: Can be used with a Constant or Non-Constant size. A constant size would look like <0 60>, while a non-constant size would look like <0 60 450 180 900 60>. However, I used Size and SizeOverLife edits with Thunder to create the jittering effect by actively changing the actual Size, then changing the SizeOverLife for rapid contracting and expanding. It was actually pretty useful.

Texture: You should honestly know what this is.

As for Radius, UpperAngle, and those parameters for CCylinderType, I have no clue.

Basic Values For The TOTAL Effect (Not EffectTypes)

Pivot: Default is 0.5, 0.5 (the location of your character)

Rotation_Axis: Never really played with this one much...

Align_Axis: This will align the effect to an axis, with a distance value (theoretically, since I've only edited it once). For example, with the Ice Spear Range circle, I used
Code: [Select]
align_axis="0 -150 0" in order to align the effect to the Y axis and set it downward so that it wouldn't literally start from the middle of every enemy - only a little lower.

Align: This will actually just set the effect to a single axis, not allowing it to move along any other. (From what i've gathered at least). I used this in the Ice Spear range circle too so that it didn't end up tilting diagonally like it did before I used
Code: [Select]
align="world_y"
That's really all I have for now. I should have posted this in a guide instead of a reply, but i'll do that later.



XML edits are a great example of trial by error, you can really learn a lot that way.  Just keep a backup of whatever file you're editing, maybe 2 depending on what you're doing.  A vanilla/unmodded version is good, for easy access to make changes to if you screwed something up.  Also if you made a change and had a desirable result in game, but needed to further tweak it then it would be a good idea to keep a copy of the modded file before you start actually tweaking it, so that you can easily see what changes you made should you forget.