Jump to content

Neo-Mind

Community Contributors
  • Content Count

    713
  • Joined

  • Last visited

  • Days Won

    37

Reputation Activity

  1. Upvote
    Neo-Mind got a reaction from evilpuncker in HEXED !   
    @@evilpuncker
    To quote Brad Pitt from Friends :  "Its no fat, its no sugar, its no dairy.... Its no good, throw it out!!"
  2. Like
    Neo-Mind got a reaction from Kyoya G in NEMO - Client Patcher   
    N.E.M.O. - Neo Exe Modification Organizer

    Why another client patcher? well
    1) WeeDiffGen - isn't working for 2013 clients + it depends on dlls (not that its a bad thing but i like scripting )
    2) xDiffGen - yes its scripted but we need to depend on xdiff files.

    so i made a new one based on xDiffGen and here it is. The patches are written in QtScript format.
    Details of making a patch have already been written in a seperate topic - although now it needs to be updated with more details.
    I have already converted most of the patches from xDiffGen.

    Why this name? - well I didn't want it to be called * Gen No offense  
    plus someone keeps calling me Nemo in IRC which gave me the idea

    Snapshot
    -----------------


    How to use?
    ---------------------
    1) First you need to specify your client file in Input Exe file box. If you browse to select the file name, Output Patched box gets updated with a _patched suffix filename automatically. Ofcourse you can select your own name for the output.
     
    2) Next we need to load both the client and the scripts (patches & addons). so click Load Client button.
     
    3) Select the patches you want . In case you patched once before (for whatever date) they will be saved in your local and you can use the Select Previous button to select them again. Also you can try using the Select Rcomnded button to select all the Recommended patches.
     
    4) So your patches are selected and client is loaded what next but to Apply Patches  which will generate the output file. In 2.0 version , NEMO also generates a .secure.txt file containing the MD5, SHA1 and CRC32 values of the output exe file which you can use in various tools.
     
    5) You can use the Save Profile and  Load Profile buttons for saving/reloading a set of patches & input values, that you have selected (even if they are not applied) for future use.
     
    6) Whenever you apply patches to a client, NEMO updates the patchlist.log file (along with Inputlist.db) in the folder where NEMO.exe is. This file will contain the list of patches you have applied along with their IDs (do not tamper with either of them).
     
    Changes in 2.0:
    ----------------------
    1) I have made some obvious modifications to the interface (you can definitely see the change in case you have seen v1.0).
         i) Buttons have come downwards and is no longer strippable (toolbar has been fixed in position)
     
         ii) New status Label has been added which shows your currently loaded client date and how many patches are selected.
     
         iii) NEMO now has support for Addons - scripts that are meant to retrieve data from the client and do its own thing (not patch the client).
              All the Extract xDiff patches has been added here already. 1 extra addon will be coming soon once i can fix it.
     
         iv) New Filter box has been added which does live search (i.e. filter as you type) for filtering out only the patches u want to see.
               For e.g. if you type color, it will only show patches that have the string color in either it's name or the description.
              You can also use regular expression . Also you can sort the columns now
     
        v) An upcoming feature - Test Patches. this one you can use for testing a newly added patch for a variety of clients that you select.
     
    2) NEMO is no longer there in SVN. I have shifted it to GitHub . The rar file uploaded has the .git file so you should be able to directly pull to get updates. But just in case I have also provided the repository link below.
     
    Remember to pull for updates before using NEMO and let me know if you are facing any bugs or issues or if i have missed out on anything. Enjoy .
     
    Repository: https://github.com/MStr3am/NEMO.git
     
    Download Link: NEMO zip file 
  3. Upvote
    Neo-Mind got a reaction from infitron in [Guide] How to add Custom Jobs   
    Introduction
         For our Example we will create the Custom Class "Shinobi" and its Child version i.e. "Baby Shinobi" along with their Cash Mounts/Halter Mounts. Each Job has 3 ID values :
     
    1) Job ID - we will use 4230 & 4231 respectively for the jobs (4232 & 4233 will be reserved for the mounts client side).   2) Map ID - Also called EA Mask. If we are extending a class we OR the existing class with a modifier. Since Shinobi is going to be a seperate branch, we will use 0x11 for Shinobi and 0x11 | 0x2000 for Baby Shinobi (0x2000 is the JOBL_BABY mask).   3) Msg ID - Defined in messages.conf file. We will use 700 and 701.   Before we begin, A few points to note:
    1) For the client side i will be using my own patch from NEMO not Xray clients - So dont ask me about Xray.
     
    2) This guide is meant to be an overview towards adding jobs - meaning that your job will be enabled once you have done the changes     specified here . You can add further details on your own which depends on your Class.
     
    3) If i am missing out on anything please let me know. Nobody is perfect including me
     
    4) We will use Sprite and some data from Ninja class for the time being but you can add your own entries just as easily.
     
     
    Server Source 1) src/common/mmo.h: look for JOB_REBELLION assignment and insert our Job IDs after it.      
     
    2) src/map/map.h: look for MAPID_BABY_CHASER and insert our Map IDs after it.         3) src/map/pc.c:     i) find case JOB_BABY_CHASER: and insert our cases after it       ii) find case MAPID_BABY_CHASER: and insert our cases after it         iii) find case JOB_REBELLION: followed by return msg_txt(655); and insert our cases after it. (returns the Msg ID)       iv) find { "Rebellion", JOB_REBELLION }, and insert our Job Names after it       4) src/map/itemdb.c: Here we check the job masks that is specified in item_db.conf. There is one limitation, however.     Currently there is only 1 more slot left in the job mask since it is 32 bit. In case you need to add more you will need to     change the variable to 64 bit.         Find jobmask & 1<<30 and insert our class check after it.         5) src/char/inter.c: Find case JOB_REBELLION: and insert our case after it.(returns the Msg ID)         Server Config 1) db/const.txt:       i) Find Job_Rebellion and insert our Job IDs after it       ii) Find EAJ_BABY_CHASER and insert our Map IDs after it         2) db/<pre-re|re>/exp.txt: Insert your IDs in one of the entries (or if you want to specify your own exp per level you can add that).    Since our jobs are meant to be amongst First Class, we will simply add it into existing ones.       i) Base:     ii) Job:   3) db/<pre-re|re>/job_db.conf: Add entry for your Job. We will copy the entry from Ninja with slight changes for now.         4) db/job_db2.txt: Add entry for your Job. Again we will reuse the data from Ninja.         5) conf/help.txt: Insert your class entries to the @go message         6) conf/messages.conf: Add the Msg IDs after Shadow Chaser T         7) db/<pre-re|re>/skill_tree.conf: Add entry for your Job similar to the others.      -pic to be added-     Client Lua Files Now to make the client support Custom Jobs it should be patched with "Enable Custom Jobs" patch in NEMO.  Also you should copy the lua files inside Support folder to different area so we can Add entries of our jobs.  (LuaFiles514/Lua Files/Admin folder inside is what we need essentially)   1) PCIDs.lub :     i) First we add all our Job IDs (look for JT_2004_JOB_LAST entry).       ii) Next we connect the Cash Mount Job IDs to Main Job IDs (Look for JT_REBELLION mapping).         iii) Lastly we need to add our Baby Class & its mount to the Baby_List (Look for JT_LION_CRUSADER_B).       2) PCNames.lub: To illustrate that different names can be assigned based on gender, I am calling them as Shinobi M & Shinobi F for Male & Female respectively.     i) First we add the Job Name for Male Characters (Look for Rebellion)     ii) Next we make the Cash Mounts inherit Names from their respective Main Jobs - since Mounting don't change the name (Look for JT_PECO_REBELLION).         iii) Last but not least we add the Job Name for Female characters - Only necessary if it differs from Male name (Look for JT_SORCERER_B).       3) PCPaths.lub: Here we specify the job specific prefix used by the client to get the job sprite.   i) First we add the Path prefix for Jobs that is not shared with any existing ones.       ii) Next we make the Jobs that has shared path inherit from existing (for e.g. Baby Jobs inherit from Adult versions).   4)PCHands.lub: Here we specify the job specific prefix used by the client to get the weapon and shield sprite locations     i) Like before, First we add the Hand prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).   5)PCPals.lub: Here we specify the job specific prefix used by the client to get the Palette file location.     i) Like before, First we add the Pal prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).     Note: You can also optionally add entries in PCImfs.lub file in case you have an Imf file, but I haven't seen any issues even without it.  Hence I am not pursuing it.   Once the edits are done pack it into your grf or put it in your data folder and use it. With this much your job will be visible and able to do everything provided you have the sprite files in the right location.   spriteÀΰ£Á·¸öÅë³²<pathprefix>_³².spr and act for Male Job  spriteÀΰ£Á·¸öÅë¿©<pathprefix>_¿©.spr and act for Female Job   Snapshot: (to be added)    
  4. Upvote
    Neo-Mind got a reaction from Obitto in [Guide] How to add Custom Jobs   
    Introduction
         For our Example we will create the Custom Class "Shinobi" and its Child version i.e. "Baby Shinobi" along with their Cash Mounts/Halter Mounts. Each Job has 3 ID values :
     
    1) Job ID - we will use 4230 & 4231 respectively for the jobs (4232 & 4233 will be reserved for the mounts client side).   2) Map ID - Also called EA Mask. If we are extending a class we OR the existing class with a modifier. Since Shinobi is going to be a seperate branch, we will use 0x11 for Shinobi and 0x11 | 0x2000 for Baby Shinobi (0x2000 is the JOBL_BABY mask).   3) Msg ID - Defined in messages.conf file. We will use 700 and 701.   Before we begin, A few points to note:
    1) For the client side i will be using my own patch from NEMO not Xray clients - So dont ask me about Xray.
     
    2) This guide is meant to be an overview towards adding jobs - meaning that your job will be enabled once you have done the changes     specified here . You can add further details on your own which depends on your Class.
     
    3) If i am missing out on anything please let me know. Nobody is perfect including me
     
    4) We will use Sprite and some data from Ninja class for the time being but you can add your own entries just as easily.
     
     
    Server Source 1) src/common/mmo.h: look for JOB_REBELLION assignment and insert our Job IDs after it.      
     
    2) src/map/map.h: look for MAPID_BABY_CHASER and insert our Map IDs after it.         3) src/map/pc.c:     i) find case JOB_BABY_CHASER: and insert our cases after it       ii) find case MAPID_BABY_CHASER: and insert our cases after it         iii) find case JOB_REBELLION: followed by return msg_txt(655); and insert our cases after it. (returns the Msg ID)       iv) find { "Rebellion", JOB_REBELLION }, and insert our Job Names after it       4) src/map/itemdb.c: Here we check the job masks that is specified in item_db.conf. There is one limitation, however.     Currently there is only 1 more slot left in the job mask since it is 32 bit. In case you need to add more you will need to     change the variable to 64 bit.         Find jobmask & 1<<30 and insert our class check after it.         5) src/char/inter.c: Find case JOB_REBELLION: and insert our case after it.(returns the Msg ID)         Server Config 1) db/const.txt:       i) Find Job_Rebellion and insert our Job IDs after it       ii) Find EAJ_BABY_CHASER and insert our Map IDs after it         2) db/<pre-re|re>/exp.txt: Insert your IDs in one of the entries (or if you want to specify your own exp per level you can add that).    Since our jobs are meant to be amongst First Class, we will simply add it into existing ones.       i) Base:     ii) Job:   3) db/<pre-re|re>/job_db.conf: Add entry for your Job. We will copy the entry from Ninja with slight changes for now.         4) db/job_db2.txt: Add entry for your Job. Again we will reuse the data from Ninja.         5) conf/help.txt: Insert your class entries to the @go message         6) conf/messages.conf: Add the Msg IDs after Shadow Chaser T         7) db/<pre-re|re>/skill_tree.conf: Add entry for your Job similar to the others.      -pic to be added-     Client Lua Files Now to make the client support Custom Jobs it should be patched with "Enable Custom Jobs" patch in NEMO.  Also you should copy the lua files inside Support folder to different area so we can Add entries of our jobs.  (LuaFiles514/Lua Files/Admin folder inside is what we need essentially)   1) PCIDs.lub :     i) First we add all our Job IDs (look for JT_2004_JOB_LAST entry).       ii) Next we connect the Cash Mount Job IDs to Main Job IDs (Look for JT_REBELLION mapping).         iii) Lastly we need to add our Baby Class & its mount to the Baby_List (Look for JT_LION_CRUSADER_B).       2) PCNames.lub: To illustrate that different names can be assigned based on gender, I am calling them as Shinobi M & Shinobi F for Male & Female respectively.     i) First we add the Job Name for Male Characters (Look for Rebellion)     ii) Next we make the Cash Mounts inherit Names from their respective Main Jobs - since Mounting don't change the name (Look for JT_PECO_REBELLION).         iii) Last but not least we add the Job Name for Female characters - Only necessary if it differs from Male name (Look for JT_SORCERER_B).       3) PCPaths.lub: Here we specify the job specific prefix used by the client to get the job sprite.   i) First we add the Path prefix for Jobs that is not shared with any existing ones.       ii) Next we make the Jobs that has shared path inherit from existing (for e.g. Baby Jobs inherit from Adult versions).   4)PCHands.lub: Here we specify the job specific prefix used by the client to get the weapon and shield sprite locations     i) Like before, First we add the Hand prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).   5)PCPals.lub: Here we specify the job specific prefix used by the client to get the Palette file location.     i) Like before, First we add the Pal prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).     Note: You can also optionally add entries in PCImfs.lub file in case you have an Imf file, but I haven't seen any issues even without it.  Hence I am not pursuing it.   Once the edits are done pack it into your grf or put it in your data folder and use it. With this much your job will be visible and able to do everything provided you have the sprite files in the right location.   spriteÀΰ£Á·¸öÅë³²<pathprefix>_³².spr and act for Male Job  spriteÀΰ£Á·¸öÅë¿©<pathprefix>_¿©.spr and act for Female Job   Snapshot: (to be added)    
  5. Upvote
    Neo-Mind got a reaction from Nebraskka in [Guide] How to add Custom Jobs   
    Introduction
         For our Example we will create the Custom Class "Shinobi" and its Child version i.e. "Baby Shinobi" along with their Cash Mounts/Halter Mounts. Each Job has 3 ID values :
     
    1) Job ID - we will use 4230 & 4231 respectively for the jobs (4232 & 4233 will be reserved for the mounts client side).   2) Map ID - Also called EA Mask. If we are extending a class we OR the existing class with a modifier. Since Shinobi is going to be a seperate branch, we will use 0x11 for Shinobi and 0x11 | 0x2000 for Baby Shinobi (0x2000 is the JOBL_BABY mask).   3) Msg ID - Defined in messages.conf file. We will use 700 and 701.   Before we begin, A few points to note:
    1) For the client side i will be using my own patch from NEMO not Xray clients - So dont ask me about Xray.
     
    2) This guide is meant to be an overview towards adding jobs - meaning that your job will be enabled once you have done the changes     specified here . You can add further details on your own which depends on your Class.
     
    3) If i am missing out on anything please let me know. Nobody is perfect including me
     
    4) We will use Sprite and some data from Ninja class for the time being but you can add your own entries just as easily.
     
     
    Server Source 1) src/common/mmo.h: look for JOB_REBELLION assignment and insert our Job IDs after it.      
     
    2) src/map/map.h: look for MAPID_BABY_CHASER and insert our Map IDs after it.         3) src/map/pc.c:     i) find case JOB_BABY_CHASER: and insert our cases after it       ii) find case MAPID_BABY_CHASER: and insert our cases after it         iii) find case JOB_REBELLION: followed by return msg_txt(655); and insert our cases after it. (returns the Msg ID)       iv) find { "Rebellion", JOB_REBELLION }, and insert our Job Names after it       4) src/map/itemdb.c: Here we check the job masks that is specified in item_db.conf. There is one limitation, however.     Currently there is only 1 more slot left in the job mask since it is 32 bit. In case you need to add more you will need to     change the variable to 64 bit.         Find jobmask & 1<<30 and insert our class check after it.         5) src/char/inter.c: Find case JOB_REBELLION: and insert our case after it.(returns the Msg ID)         Server Config 1) db/const.txt:       i) Find Job_Rebellion and insert our Job IDs after it       ii) Find EAJ_BABY_CHASER and insert our Map IDs after it         2) db/<pre-re|re>/exp.txt: Insert your IDs in one of the entries (or if you want to specify your own exp per level you can add that).    Since our jobs are meant to be amongst First Class, we will simply add it into existing ones.       i) Base:     ii) Job:   3) db/<pre-re|re>/job_db.conf: Add entry for your Job. We will copy the entry from Ninja with slight changes for now.         4) db/job_db2.txt: Add entry for your Job. Again we will reuse the data from Ninja.         5) conf/help.txt: Insert your class entries to the @go message         6) conf/messages.conf: Add the Msg IDs after Shadow Chaser T         7) db/<pre-re|re>/skill_tree.conf: Add entry for your Job similar to the others.      -pic to be added-     Client Lua Files Now to make the client support Custom Jobs it should be patched with "Enable Custom Jobs" patch in NEMO.  Also you should copy the lua files inside Support folder to different area so we can Add entries of our jobs.  (LuaFiles514/Lua Files/Admin folder inside is what we need essentially)   1) PCIDs.lub :     i) First we add all our Job IDs (look for JT_2004_JOB_LAST entry).       ii) Next we connect the Cash Mount Job IDs to Main Job IDs (Look for JT_REBELLION mapping).         iii) Lastly we need to add our Baby Class & its mount to the Baby_List (Look for JT_LION_CRUSADER_B).       2) PCNames.lub: To illustrate that different names can be assigned based on gender, I am calling them as Shinobi M & Shinobi F for Male & Female respectively.     i) First we add the Job Name for Male Characters (Look for Rebellion)     ii) Next we make the Cash Mounts inherit Names from their respective Main Jobs - since Mounting don't change the name (Look for JT_PECO_REBELLION).         iii) Last but not least we add the Job Name for Female characters - Only necessary if it differs from Male name (Look for JT_SORCERER_B).       3) PCPaths.lub: Here we specify the job specific prefix used by the client to get the job sprite.   i) First we add the Path prefix for Jobs that is not shared with any existing ones.       ii) Next we make the Jobs that has shared path inherit from existing (for e.g. Baby Jobs inherit from Adult versions).   4)PCHands.lub: Here we specify the job specific prefix used by the client to get the weapon and shield sprite locations     i) Like before, First we add the Hand prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).   5)PCPals.lub: Here we specify the job specific prefix used by the client to get the Palette file location.     i) Like before, First we add the Pal prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).     Note: You can also optionally add entries in PCImfs.lub file in case you have an Imf file, but I haven't seen any issues even without it.  Hence I am not pursuing it.   Once the edits are done pack it into your grf or put it in your data folder and use it. With this much your job will be visible and able to do everything provided you have the sprite files in the right location.   spriteÀΰ£Á·¸öÅë³²<pathprefix>_³².spr and act for Male Job  spriteÀΰ£Á·¸öÅë¿©<pathprefix>_¿©.spr and act for Female Job   Snapshot: (to be added)    
  6. Upvote
    Neo-Mind got a reaction from hannah in [Guide] How to add Custom Jobs   
    Introduction
         For our Example we will create the Custom Class "Shinobi" and its Child version i.e. "Baby Shinobi" along with their Cash Mounts/Halter Mounts. Each Job has 3 ID values :
     
    1) Job ID - we will use 4230 & 4231 respectively for the jobs (4232 & 4233 will be reserved for the mounts client side).   2) Map ID - Also called EA Mask. If we are extending a class we OR the existing class with a modifier. Since Shinobi is going to be a seperate branch, we will use 0x11 for Shinobi and 0x11 | 0x2000 for Baby Shinobi (0x2000 is the JOBL_BABY mask).   3) Msg ID - Defined in messages.conf file. We will use 700 and 701.   Before we begin, A few points to note:
    1) For the client side i will be using my own patch from NEMO not Xray clients - So dont ask me about Xray.
     
    2) This guide is meant to be an overview towards adding jobs - meaning that your job will be enabled once you have done the changes     specified here . You can add further details on your own which depends on your Class.
     
    3) If i am missing out on anything please let me know. Nobody is perfect including me
     
    4) We will use Sprite and some data from Ninja class for the time being but you can add your own entries just as easily.
     
     
    Server Source 1) src/common/mmo.h: look for JOB_REBELLION assignment and insert our Job IDs after it.      
     
    2) src/map/map.h: look for MAPID_BABY_CHASER and insert our Map IDs after it.         3) src/map/pc.c:     i) find case JOB_BABY_CHASER: and insert our cases after it       ii) find case MAPID_BABY_CHASER: and insert our cases after it         iii) find case JOB_REBELLION: followed by return msg_txt(655); and insert our cases after it. (returns the Msg ID)       iv) find { "Rebellion", JOB_REBELLION }, and insert our Job Names after it       4) src/map/itemdb.c: Here we check the job masks that is specified in item_db.conf. There is one limitation, however.     Currently there is only 1 more slot left in the job mask since it is 32 bit. In case you need to add more you will need to     change the variable to 64 bit.         Find jobmask & 1<<30 and insert our class check after it.         5) src/char/inter.c: Find case JOB_REBELLION: and insert our case after it.(returns the Msg ID)         Server Config 1) db/const.txt:       i) Find Job_Rebellion and insert our Job IDs after it       ii) Find EAJ_BABY_CHASER and insert our Map IDs after it         2) db/<pre-re|re>/exp.txt: Insert your IDs in one of the entries (or if you want to specify your own exp per level you can add that).    Since our jobs are meant to be amongst First Class, we will simply add it into existing ones.       i) Base:     ii) Job:   3) db/<pre-re|re>/job_db.conf: Add entry for your Job. We will copy the entry from Ninja with slight changes for now.         4) db/job_db2.txt: Add entry for your Job. Again we will reuse the data from Ninja.         5) conf/help.txt: Insert your class entries to the @go message         6) conf/messages.conf: Add the Msg IDs after Shadow Chaser T         7) db/<pre-re|re>/skill_tree.conf: Add entry for your Job similar to the others.      -pic to be added-     Client Lua Files Now to make the client support Custom Jobs it should be patched with "Enable Custom Jobs" patch in NEMO.  Also you should copy the lua files inside Support folder to different area so we can Add entries of our jobs.  (LuaFiles514/Lua Files/Admin folder inside is what we need essentially)   1) PCIDs.lub :     i) First we add all our Job IDs (look for JT_2004_JOB_LAST entry).       ii) Next we connect the Cash Mount Job IDs to Main Job IDs (Look for JT_REBELLION mapping).         iii) Lastly we need to add our Baby Class & its mount to the Baby_List (Look for JT_LION_CRUSADER_B).       2) PCNames.lub: To illustrate that different names can be assigned based on gender, I am calling them as Shinobi M & Shinobi F for Male & Female respectively.     i) First we add the Job Name for Male Characters (Look for Rebellion)     ii) Next we make the Cash Mounts inherit Names from their respective Main Jobs - since Mounting don't change the name (Look for JT_PECO_REBELLION).         iii) Last but not least we add the Job Name for Female characters - Only necessary if it differs from Male name (Look for JT_SORCERER_B).       3) PCPaths.lub: Here we specify the job specific prefix used by the client to get the job sprite.   i) First we add the Path prefix for Jobs that is not shared with any existing ones.       ii) Next we make the Jobs that has shared path inherit from existing (for e.g. Baby Jobs inherit from Adult versions).   4)PCHands.lub: Here we specify the job specific prefix used by the client to get the weapon and shield sprite locations     i) Like before, First we add the Hand prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).   5)PCPals.lub: Here we specify the job specific prefix used by the client to get the Palette file location.     i) Like before, First we add the Pal prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).     Note: You can also optionally add entries in PCImfs.lub file in case you have an Imf file, but I haven't seen any issues even without it.  Hence I am not pursuing it.   Once the edits are done pack it into your grf or put it in your data folder and use it. With this much your job will be visible and able to do everything provided you have the sprite files in the right location.   spriteÀΰ£Á·¸öÅë³²<pathprefix>_³².spr and act for Male Job  spriteÀΰ£Á·¸öÅë¿©<pathprefix>_¿©.spr and act for Female Job   Snapshot: (to be added)    
  7. Upvote
    Neo-Mind got a reaction from Lord Ganja in [Guide] How to add Custom Jobs   
    Introduction
         For our Example we will create the Custom Class "Shinobi" and its Child version i.e. "Baby Shinobi" along with their Cash Mounts/Halter Mounts. Each Job has 3 ID values :
     
    1) Job ID - we will use 4230 & 4231 respectively for the jobs (4232 & 4233 will be reserved for the mounts client side).   2) Map ID - Also called EA Mask. If we are extending a class we OR the existing class with a modifier. Since Shinobi is going to be a seperate branch, we will use 0x11 for Shinobi and 0x11 | 0x2000 for Baby Shinobi (0x2000 is the JOBL_BABY mask).   3) Msg ID - Defined in messages.conf file. We will use 700 and 701.   Before we begin, A few points to note:
    1) For the client side i will be using my own patch from NEMO not Xray clients - So dont ask me about Xray.
     
    2) This guide is meant to be an overview towards adding jobs - meaning that your job will be enabled once you have done the changes     specified here . You can add further details on your own which depends on your Class.
     
    3) If i am missing out on anything please let me know. Nobody is perfect including me
     
    4) We will use Sprite and some data from Ninja class for the time being but you can add your own entries just as easily.
     
     
    Server Source 1) src/common/mmo.h: look for JOB_REBELLION assignment and insert our Job IDs after it.      
     
    2) src/map/map.h: look for MAPID_BABY_CHASER and insert our Map IDs after it.         3) src/map/pc.c:     i) find case JOB_BABY_CHASER: and insert our cases after it       ii) find case MAPID_BABY_CHASER: and insert our cases after it         iii) find case JOB_REBELLION: followed by return msg_txt(655); and insert our cases after it. (returns the Msg ID)       iv) find { "Rebellion", JOB_REBELLION }, and insert our Job Names after it       4) src/map/itemdb.c: Here we check the job masks that is specified in item_db.conf. There is one limitation, however.     Currently there is only 1 more slot left in the job mask since it is 32 bit. In case you need to add more you will need to     change the variable to 64 bit.         Find jobmask & 1<<30 and insert our class check after it.         5) src/char/inter.c: Find case JOB_REBELLION: and insert our case after it.(returns the Msg ID)         Server Config 1) db/const.txt:       i) Find Job_Rebellion and insert our Job IDs after it       ii) Find EAJ_BABY_CHASER and insert our Map IDs after it         2) db/<pre-re|re>/exp.txt: Insert your IDs in one of the entries (or if you want to specify your own exp per level you can add that).    Since our jobs are meant to be amongst First Class, we will simply add it into existing ones.       i) Base:     ii) Job:   3) db/<pre-re|re>/job_db.conf: Add entry for your Job. We will copy the entry from Ninja with slight changes for now.         4) db/job_db2.txt: Add entry for your Job. Again we will reuse the data from Ninja.         5) conf/help.txt: Insert your class entries to the @go message         6) conf/messages.conf: Add the Msg IDs after Shadow Chaser T         7) db/<pre-re|re>/skill_tree.conf: Add entry for your Job similar to the others.      -pic to be added-     Client Lua Files Now to make the client support Custom Jobs it should be patched with "Enable Custom Jobs" patch in NEMO.  Also you should copy the lua files inside Support folder to different area so we can Add entries of our jobs.  (LuaFiles514/Lua Files/Admin folder inside is what we need essentially)   1) PCIDs.lub :     i) First we add all our Job IDs (look for JT_2004_JOB_LAST entry).       ii) Next we connect the Cash Mount Job IDs to Main Job IDs (Look for JT_REBELLION mapping).         iii) Lastly we need to add our Baby Class & its mount to the Baby_List (Look for JT_LION_CRUSADER_B).       2) PCNames.lub: To illustrate that different names can be assigned based on gender, I am calling them as Shinobi M & Shinobi F for Male & Female respectively.     i) First we add the Job Name for Male Characters (Look for Rebellion)     ii) Next we make the Cash Mounts inherit Names from their respective Main Jobs - since Mounting don't change the name (Look for JT_PECO_REBELLION).         iii) Last but not least we add the Job Name for Female characters - Only necessary if it differs from Male name (Look for JT_SORCERER_B).       3) PCPaths.lub: Here we specify the job specific prefix used by the client to get the job sprite.   i) First we add the Path prefix for Jobs that is not shared with any existing ones.       ii) Next we make the Jobs that has shared path inherit from existing (for e.g. Baby Jobs inherit from Adult versions).   4)PCHands.lub: Here we specify the job specific prefix used by the client to get the weapon and shield sprite locations     i) Like before, First we add the Hand prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).   5)PCPals.lub: Here we specify the job specific prefix used by the client to get the Palette file location.     i) Like before, First we add the Pal prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).     Note: You can also optionally add entries in PCImfs.lub file in case you have an Imf file, but I haven't seen any issues even without it.  Hence I am not pursuing it.   Once the edits are done pack it into your grf or put it in your data folder and use it. With this much your job will be visible and able to do everything provided you have the sprite files in the right location.   spriteÀΰ£Á·¸öÅë³²<pathprefix>_³².spr and act for Male Job  spriteÀΰ£Á·¸öÅë¿©<pathprefix>_¿©.spr and act for Female Job   Snapshot: (to be added)    
  8. Upvote
    Neo-Mind got a reaction from mleo1 in [Guide] How to add Custom Jobs   
    Introduction
         For our Example we will create the Custom Class "Shinobi" and its Child version i.e. "Baby Shinobi" along with their Cash Mounts/Halter Mounts. Each Job has 3 ID values :
     
    1) Job ID - we will use 4230 & 4231 respectively for the jobs (4232 & 4233 will be reserved for the mounts client side).   2) Map ID - Also called EA Mask. If we are extending a class we OR the existing class with a modifier. Since Shinobi is going to be a seperate branch, we will use 0x11 for Shinobi and 0x11 | 0x2000 for Baby Shinobi (0x2000 is the JOBL_BABY mask).   3) Msg ID - Defined in messages.conf file. We will use 700 and 701.   Before we begin, A few points to note:
    1) For the client side i will be using my own patch from NEMO not Xray clients - So dont ask me about Xray.
     
    2) This guide is meant to be an overview towards adding jobs - meaning that your job will be enabled once you have done the changes     specified here . You can add further details on your own which depends on your Class.
     
    3) If i am missing out on anything please let me know. Nobody is perfect including me
     
    4) We will use Sprite and some data from Ninja class for the time being but you can add your own entries just as easily.
     
     
    Server Source 1) src/common/mmo.h: look for JOB_REBELLION assignment and insert our Job IDs after it.      
     
    2) src/map/map.h: look for MAPID_BABY_CHASER and insert our Map IDs after it.         3) src/map/pc.c:     i) find case JOB_BABY_CHASER: and insert our cases after it       ii) find case MAPID_BABY_CHASER: and insert our cases after it         iii) find case JOB_REBELLION: followed by return msg_txt(655); and insert our cases after it. (returns the Msg ID)       iv) find { "Rebellion", JOB_REBELLION }, and insert our Job Names after it       4) src/map/itemdb.c: Here we check the job masks that is specified in item_db.conf. There is one limitation, however.     Currently there is only 1 more slot left in the job mask since it is 32 bit. In case you need to add more you will need to     change the variable to 64 bit.         Find jobmask & 1<<30 and insert our class check after it.         5) src/char/inter.c: Find case JOB_REBELLION: and insert our case after it.(returns the Msg ID)         Server Config 1) db/const.txt:       i) Find Job_Rebellion and insert our Job IDs after it       ii) Find EAJ_BABY_CHASER and insert our Map IDs after it         2) db/<pre-re|re>/exp.txt: Insert your IDs in one of the entries (or if you want to specify your own exp per level you can add that).    Since our jobs are meant to be amongst First Class, we will simply add it into existing ones.       i) Base:     ii) Job:   3) db/<pre-re|re>/job_db.conf: Add entry for your Job. We will copy the entry from Ninja with slight changes for now.         4) db/job_db2.txt: Add entry for your Job. Again we will reuse the data from Ninja.         5) conf/help.txt: Insert your class entries to the @go message         6) conf/messages.conf: Add the Msg IDs after Shadow Chaser T         7) db/<pre-re|re>/skill_tree.conf: Add entry for your Job similar to the others.      -pic to be added-     Client Lua Files Now to make the client support Custom Jobs it should be patched with "Enable Custom Jobs" patch in NEMO.  Also you should copy the lua files inside Support folder to different area so we can Add entries of our jobs.  (LuaFiles514/Lua Files/Admin folder inside is what we need essentially)   1) PCIDs.lub :     i) First we add all our Job IDs (look for JT_2004_JOB_LAST entry).       ii) Next we connect the Cash Mount Job IDs to Main Job IDs (Look for JT_REBELLION mapping).         iii) Lastly we need to add our Baby Class & its mount to the Baby_List (Look for JT_LION_CRUSADER_B).       2) PCNames.lub: To illustrate that different names can be assigned based on gender, I am calling them as Shinobi M & Shinobi F for Male & Female respectively.     i) First we add the Job Name for Male Characters (Look for Rebellion)     ii) Next we make the Cash Mounts inherit Names from their respective Main Jobs - since Mounting don't change the name (Look for JT_PECO_REBELLION).         iii) Last but not least we add the Job Name for Female characters - Only necessary if it differs from Male name (Look for JT_SORCERER_B).       3) PCPaths.lub: Here we specify the job specific prefix used by the client to get the job sprite.   i) First we add the Path prefix for Jobs that is not shared with any existing ones.       ii) Next we make the Jobs that has shared path inherit from existing (for e.g. Baby Jobs inherit from Adult versions).   4)PCHands.lub: Here we specify the job specific prefix used by the client to get the weapon and shield sprite locations     i) Like before, First we add the Hand prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).   5)PCPals.lub: Here we specify the job specific prefix used by the client to get the Palette file location.     i) Like before, First we add the Pal prefix for Jobs that is not shared with any existing ones.     ii) Next we make the Jobs with shared prefix inherit from existing (e.g. Baby Jobs, Mounts, Baby Mounts etc. all can inherit from Adult versions).     Note: You can also optionally add entries in PCImfs.lub file in case you have an Imf file, but I haven't seen any issues even without it.  Hence I am not pursuing it.   Once the edits are done pack it into your grf or put it in your data folder and use it. With this much your job will be visible and able to do everything provided you have the sprite files in the right location.   spriteÀΰ£Á·¸öÅë³²<pathprefix>_³².spr and act for Male Job  spriteÀΰ£Á·¸öÅë¿©<pathprefix>_¿©.spr and act for Female Job   Snapshot: (to be added)    
  9. Upvote
    Neo-Mind reacted to malufett in 'job_db1.txt' Redesign   
    'job_db1.txt' Redesign
     
    What is it?
    The file has been upgrade to achieve 2 goals: make it easier for us to update the file and for our users to customize it better. The old hp/sp computation has been drop and replace by hp/sp tables. job_db.conf Format:
    Job_Name: { // Job names as in src/map/pc.c (they are hardcoded at the moment so if you want to add a new job you should add it there)     Inherit: ( "Other_Job_Name" );     // Base job from which this job will inherit its max weight, base ASPD set and HP/SP table.     InheritHP: ( "Other_Job_Name" );// Base job from which this job will inherit its HP table.     InheritSP: ( "Other_Job_Name" );// Base job from which this job will inherit its SP table.     Weight: Max Weight            (int, defaults to 20000, units in Weight/10)     BaseASPD: {                 // Base ASPD for specific weapon type         Fist: 0~200                (int, defaults to 200)         Dagger: 0~200            (int, defaults to 200)         Sword: 0~200            (int, defaults to 200)         TwoHandSword: 0~200        (int, defaults to 200)         Spear: 0~200            (int, defaults to 200)         TwoHandSpear: 0~200        (int, defaults to 200)         Axe: 0~200                (int, defaults to 200)         TwoHandAxe: 0~200        (int, defaults to 200)         Mace: 0~200                (int, defaults to 200)         TwoHandMace: 0~200        (int, defaults to 200)         Rod: 0~200                (int, defaults to 200)         Bow: 0~200                (int, defaults to 200)         Knuckle: 0~200            (int, defaults to 200)         Instrumen: 0~200        (int, defaults to 200)         Whip: 0~200                (int, defaults to 200)         Book: 0~200                (int, defaults to 200)         Katar: 0~200            (int, defaults to 200)         Revolver: 0~200            (int, defaults to 200)         Rifle: 0~200            (int, defaults to 200)         GatlingGun: 0~200        (int, defaults to 200)         Shotgun: 0~200            (int, defaults to 200)         GrenadeLauncher: 0~200    (int, defaults to 200)         FuumaShuriken: 0~200    (int, defaults to 200)         TwoHandRod: 0~200        (int, defaults to 200)         Shield: 0~200            (int, defaults to 0)     }     HPTable:[ 1, .... 150 ]        (int[]) Reference table for base HP per level      SPTable:[ 1, .... 150 ]        (int[]) Reference table for base SP per level     // Note: If table index size is smaller than the max level the server will automatically generate the missing index based on the average increase per level.} Benefit?
    You can now easily specify a class base weight, base aspd for specific weapon types and HP/SP per level. Lessen redundant entries and good for the eyes.. RE ASPD formula is improved to compatibly(less/no more conversion) accept aegis database. Tools?
    http://herc.ws/board/files/file/202-hercules-hpsp-table-generator/ Special Thanks to:
    Awesome @Yommy Best @Michi Incredible @Ind Nice @Beret Links
    Commit: https://github.com/HerculesWS/Hercules/commit/b59b9d1ab4c5a21081cdd2af126997ed7093d743 File: https://github.com/HerculesWS/Hercules/blob/master/db/re/job_db.conf
  10. Like
    Neo-Mind got a reaction from DoriTos Nacho in NEMO - Client Patcher   
    N.E.M.O. - Neo Exe Modification Organizer

    Why another client patcher? well
    1) WeeDiffGen - isn't working for 2013 clients + it depends on dlls (not that its a bad thing but i like scripting )
    2) xDiffGen - yes its scripted but we need to depend on xdiff files.

    so i made a new one based on xDiffGen and here it is. The patches are written in QtScript format.
    Details of making a patch have already been written in a seperate topic - although now it needs to be updated with more details.
    I have already converted most of the patches from xDiffGen.

    Why this name? - well I didn't want it to be called * Gen No offense  
    plus someone keeps calling me Nemo in IRC which gave me the idea

    Snapshot
    -----------------


    How to use?
    ---------------------
    1) First you need to specify your client file in Input Exe file box. If you browse to select the file name, Output Patched box gets updated with a _patched suffix filename automatically. Ofcourse you can select your own name for the output.
     
    2) Next we need to load both the client and the scripts (patches & addons). so click Load Client button.
     
    3) Select the patches you want . In case you patched once before (for whatever date) they will be saved in your local and you can use the Select Previous button to select them again. Also you can try using the Select Rcomnded button to select all the Recommended patches.
     
    4) So your patches are selected and client is loaded what next but to Apply Patches  which will generate the output file. In 2.0 version , NEMO also generates a .secure.txt file containing the MD5, SHA1 and CRC32 values of the output exe file which you can use in various tools.
     
    5) You can use the Save Profile and  Load Profile buttons for saving/reloading a set of patches & input values, that you have selected (even if they are not applied) for future use.
     
    6) Whenever you apply patches to a client, NEMO updates the patchlist.log file (along with Inputlist.db) in the folder where NEMO.exe is. This file will contain the list of patches you have applied along with their IDs (do not tamper with either of them).
     
    Changes in 2.0:
    ----------------------
    1) I have made some obvious modifications to the interface (you can definitely see the change in case you have seen v1.0).
         i) Buttons have come downwards and is no longer strippable (toolbar has been fixed in position)
     
         ii) New status Label has been added which shows your currently loaded client date and how many patches are selected.
     
         iii) NEMO now has support for Addons - scripts that are meant to retrieve data from the client and do its own thing (not patch the client).
              All the Extract xDiff patches has been added here already. 1 extra addon will be coming soon once i can fix it.
     
         iv) New Filter box has been added which does live search (i.e. filter as you type) for filtering out only the patches u want to see.
               For e.g. if you type color, it will only show patches that have the string color in either it's name or the description.
              You can also use regular expression . Also you can sort the columns now
     
        v) An upcoming feature - Test Patches. this one you can use for testing a newly added patch for a variety of clients that you select.
     
    2) NEMO is no longer there in SVN. I have shifted it to GitHub . The rar file uploaded has the .git file so you should be able to directly pull to get updates. But just in case I have also provided the repository link below.
     
    Remember to pull for updates before using NEMO and let me know if you are facing any bugs or issues or if i have missed out on anything. Enjoy .
     
    Repository: https://github.com/MStr3am/NEMO.git
     
    Download Link: NEMO zip file 
  11. Upvote
    Neo-Mind got a reaction from evilpuncker in R> Hex Code To Disable Shift+Rightclick Autofollow   
    hmm well i finally added it to NEMO Sorry for the delay. I have been preoccupied with other activities
  12. Upvote
    Neo-Mind reacted to jaBote in Hercules Ultimate Localization Design   
    Please remember any .pot files are not for smoking. We at Hercules are always concerned for your health. (Joke based on one Jman told in IRC)
  13. Upvote
    Neo-Mind got a reaction from Aly in [Release] Custom Job & Custom Shield Patches   
    Well a few people know i have been working on these. So here goes.
     
    Did I hear right?
     
    1. Yes it is what you are thinking. The Custom Job patch allow you to modify the existing jobs and add new jobs      in a fashion similar to HeliumRO's Xray Clients (and some extra stuff u will see below) but using lua files.   2. Similarly Custom Shield Patch allows you to throw the existing 4 shield limit out the door and modify existing as well as     add more shield equipment types to your liking using lua files.   3. For now I have tested them out on a set of clients (for others the logic followed were the same     so I didn't bother with the rest). Ofcourse if any bug comes up I will work on fixing them.     4. Patches were made with existing patches in mind and therefore will not affect any and existing diffs present    in a client you use. Infact you are supposed to use these last only.   5. Custom Job Patch has also an override for Class names based on gender. For it to work Langtype Korean Jobname Fix    is expected to be enabled (for xDiff patches it is a part of Translate to English patch)  
      6. So is there a limit ? yes for now i have limited them as max shields to 10 and max job id to 4300.   So how does it work ?   1. Get the xdiff file for your client version (from the link below)   2. Get the lua files (also from the link below)   3. Modify/Add entries to the lua files (Format is specified below)   4. Load your client and xdiff file in xDiffPatcher   5. Let it Rip!... i mean Patch!!   6. And last but not least place the lua files in their proper locations.   Lua File Formats - Custom Job Patch Custom Job Patch makes use of 7 lua files (similar to the various txt files Xray client had).They need to be present in the luafiles514/lua files/admin path.   1) PCIdentity.lua:   This file is already present in the official GRF but we are going to use a modified version of that one.   All Job Sprites have a corresponding Job ID (including costumes and Job Mounts). This file defines all of them   and their relationships to each other.   This is done with the help of 3 tables =>   i) pcJobTbl (mandatory):  This is where the job id value is defined and mapped to a string for identification JT_KAGEROU = 4211, -- 4211 is the job id for kagerou class     ii) Halter_Map : This is where you specify which job id is the job mount of which class. Ofcourse if you dont  plan to add a mount sprite for a class you can ignore this one. [pcJobTbl.JT_KAGEROU] = pcJobTbl.JH_KAGEROU, -- maps kagerou job to his frog mounted sprite   iii) Shrink_Tbl : This is list of job IDs that need to be ... shrunk i.e. specify all Baby Jobs here. pcJobTbl.JT_SWORDSMAN_B, -- will include Baby Swordsman in the list    2) PCPaths.lua:    Lua equivalent of class_tab.txt . Defines the prefix string used for each class to get its sprite & act file path.    i.e. prefix in => /data/sprite/Àΰ£Á·/¸öÅë/<gender>/<prefix>_<gender>.spr (& act as well).    This is done with the help of two tables (only one of which needs to be filled for a class).        i)  PCStitchTbl :      If your job uses a completely new sprite with a new filename then you can assign it in this table. [pcJobTbl.JT_SWORDMAN] = "°Ë»ç" -- Prefix for Swordsman    ii) PCStitchInheritTbl :      If your job is sharing an existing sprite path already used by a job specified in PCStitchTBl then you can simply connect them in this table (target job id inherits from source job id). [pcJobTbl.JT_SWORDMAN_H] = pcJobTbl.JT_SWORDMAN, --JT_SWORDMAN_H is High Swordsman which uses --same sprite as Swordsman 
      All of the remaining lua files follow a similar pattern with one table for direct assignment and the other one for inheriting value from another job id 3) PCImfs.lua: Lua equivalent of imf_tab.txt . Defines the prefix string for imf files of each class. i)  PCImfTbl : [pcJobTbl.JT_KNIGHT] = "±â»ç", -- Prefix for Knight ii) PCImfInheritTbl : [pcJobTbl.JT_KNIGHT_H] = pcJobTbl.JT_KNIGHT, -- JT_KNIGHT_H is Lord Knight and has the same -- imf as Knight class.
    4) PCHands.lua: Lua equivalent of reality_dir_tab.txt. Defines the prefix strings used for Weapons and Shields of each class i) PCHandsTbl : [pcJobTbl.JT_ASSASSIN] = "¾î¼¼½Å¾î¼¼½Å", -- Prefix for Assassin   ii) PCHandsInheritTbl : [pcJobTbl.JT_GUILLOTINE_CROSS] = pcJobTbl.JT_ASSASSIN, -- Guillotine Cross picks up --weapons/shields from the same path as Assassin class.
    5) PCPals.lua   Lua equivalent of reality_tab.txt. Defines the prefix strings for the body palettes. i) PCPalTbl: [pcJobTbl.JT_MAGICIAN] = "¸¶¹ý»ç", -- prefix for Mage                           ii) PCPalInheritTbl: [pcJobTbl.JT_MAGICIAN_H] = pcJobTbl.JT_MAGICIAN, -- High Mage uses same prefix as Mage class.  
    6) PCNames.lua   Lua equivalent of monstrosity_tab.txt (in part since mobs are defined by jobname.lua) . As the file name says this is where you define all your class names. Reason i saved this for last is because this file is slightly different from the previous 4. Here you can define the class name seperately for both genders. For male classes => i) PCJobNameTbl : [pcJobTbl.JT_WARLOCK] = "Warlock", -- Kind of obvious right? ii) PCJobNameInheritTbl : [pcJobTbl.JT_WARLOCK_H] = pcJobTbl.JT_WARLOCK, -- JT_WARLOCK_H is Transcendent version of -- warlock class and ofcourse it will have same name For female classes => iii) PCJobNameTbl_F : [pcJobTbl.JT_WARLOCK] = "Witch", -- Now the female Warlock will be called Witch
    iv) PCJobNameInheritTbl_F : [pcJobTbl.JT_WARLOCK_H] = pcJobTbl.JT_WARLOCK, -- Same for Transcendent warlock   By default if your gender is female and there is no names defined using either iii) or iv) above then it checks in the tables for male gender. 7) PCFuncs.lua Contains Necessary functions used by the client - DO NOT TOUCH THIS FILE unless you know what you are doing!!!   Lua File Formats - Custom Shield Patch Custom Shield Patch makes use of 2 lua files as specified below. They need to be present in luafiles514/lua files/datainfo folder.   1) ShieldTable.lua : This lua file is the only one you need to configure. It contains 3 tables and is similar in format to WeaponTable.lua i) Shield_IDs : Defines a list of IDs which includes both Shield Types & Item IDs used by shield items in item_db.txt. Shield Items can only start from item id 2101 onwards so anything lesser than that will be considered as a shield type id. To distinguish between them we use the ST (Shield Type) and SI (Shield Item) prefixes. ST_MSHIELD = 4, -- Mirror Shield TypeSI_Platinum_Shield = 2122, -- Platinum Shield's Item ID   ii) ShieldNameTable : Here we assign suffix strings for Shield Types i.e. shield suffix in => /data/sprite/¹æÆÐ/<hand prefix>_<gender>_<shield suffix>.spr [Shield_IDs.ST_MSHIELD] = "_¹Ì·¯½¯µå", --Suffix for Mirror shield  iii) ShieldMapTable : Here we specify which Shield Type is used by each of the Shield Items. [Shield_IDs.SI_Platinum_Shield] = Shield_IDs.ST_MSHIELD, -- Platinum Shield uses -- Mirror Shield sprite.
    2) ShieldTable_F.lua : Contains Necessary functions used by the client - DO NOT TOUCH THIS FILE unless you know what you are doing!!!     Ok.. So Where do i get the files? Download link     Final Note If you have any issues or doubts about the xDiff files or Lua files (I expect some in this department) let me know. So Enjoy
  14. Upvote
    Neo-Mind got a reaction from Kichi in [Release] Custom Job & Custom Shield Patches   
    Well a few people know i have been working on these. So here goes.
     
    Did I hear right?
     
    1. Yes it is what you are thinking. The Custom Job patch allow you to modify the existing jobs and add new jobs      in a fashion similar to HeliumRO's Xray Clients (and some extra stuff u will see below) but using lua files.   2. Similarly Custom Shield Patch allows you to throw the existing 4 shield limit out the door and modify existing as well as     add more shield equipment types to your liking using lua files.   3. For now I have tested them out on a set of clients (for others the logic followed were the same     so I didn't bother with the rest). Ofcourse if any bug comes up I will work on fixing them.     4. Patches were made with existing patches in mind and therefore will not affect any and existing diffs present    in a client you use. Infact you are supposed to use these last only.   5. Custom Job Patch has also an override for Class names based on gender. For it to work Langtype Korean Jobname Fix    is expected to be enabled (for xDiff patches it is a part of Translate to English patch)  
      6. So is there a limit ? yes for now i have limited them as max shields to 10 and max job id to 4300.   So how does it work ?   1. Get the xdiff file for your client version (from the link below)   2. Get the lua files (also from the link below)   3. Modify/Add entries to the lua files (Format is specified below)   4. Load your client and xdiff file in xDiffPatcher   5. Let it Rip!... i mean Patch!!   6. And last but not least place the lua files in their proper locations.   Lua File Formats - Custom Job Patch Custom Job Patch makes use of 7 lua files (similar to the various txt files Xray client had).They need to be present in the luafiles514/lua files/admin path.   1) PCIdentity.lua:   This file is already present in the official GRF but we are going to use a modified version of that one.   All Job Sprites have a corresponding Job ID (including costumes and Job Mounts). This file defines all of them   and their relationships to each other.   This is done with the help of 3 tables =>   i) pcJobTbl (mandatory):  This is where the job id value is defined and mapped to a string for identification JT_KAGEROU = 4211, -- 4211 is the job id for kagerou class     ii) Halter_Map : This is where you specify which job id is the job mount of which class. Ofcourse if you dont  plan to add a mount sprite for a class you can ignore this one. [pcJobTbl.JT_KAGEROU] = pcJobTbl.JH_KAGEROU, -- maps kagerou job to his frog mounted sprite   iii) Shrink_Tbl : This is list of job IDs that need to be ... shrunk i.e. specify all Baby Jobs here. pcJobTbl.JT_SWORDSMAN_B, -- will include Baby Swordsman in the list    2) PCPaths.lua:    Lua equivalent of class_tab.txt . Defines the prefix string used for each class to get its sprite & act file path.    i.e. prefix in => /data/sprite/Àΰ£Á·/¸öÅë/<gender>/<prefix>_<gender>.spr (& act as well).    This is done with the help of two tables (only one of which needs to be filled for a class).        i)  PCStitchTbl :      If your job uses a completely new sprite with a new filename then you can assign it in this table. [pcJobTbl.JT_SWORDMAN] = "°Ë»ç" -- Prefix for Swordsman    ii) PCStitchInheritTbl :      If your job is sharing an existing sprite path already used by a job specified in PCStitchTBl then you can simply connect them in this table (target job id inherits from source job id). [pcJobTbl.JT_SWORDMAN_H] = pcJobTbl.JT_SWORDMAN, --JT_SWORDMAN_H is High Swordsman which uses --same sprite as Swordsman 
      All of the remaining lua files follow a similar pattern with one table for direct assignment and the other one for inheriting value from another job id 3) PCImfs.lua: Lua equivalent of imf_tab.txt . Defines the prefix string for imf files of each class. i)  PCImfTbl : [pcJobTbl.JT_KNIGHT] = "±â»ç", -- Prefix for Knight ii) PCImfInheritTbl : [pcJobTbl.JT_KNIGHT_H] = pcJobTbl.JT_KNIGHT, -- JT_KNIGHT_H is Lord Knight and has the same -- imf as Knight class.
    4) PCHands.lua: Lua equivalent of reality_dir_tab.txt. Defines the prefix strings used for Weapons and Shields of each class i) PCHandsTbl : [pcJobTbl.JT_ASSASSIN] = "¾î¼¼½Å¾î¼¼½Å", -- Prefix for Assassin   ii) PCHandsInheritTbl : [pcJobTbl.JT_GUILLOTINE_CROSS] = pcJobTbl.JT_ASSASSIN, -- Guillotine Cross picks up --weapons/shields from the same path as Assassin class.
    5) PCPals.lua   Lua equivalent of reality_tab.txt. Defines the prefix strings for the body palettes. i) PCPalTbl: [pcJobTbl.JT_MAGICIAN] = "¸¶¹ý»ç", -- prefix for Mage                           ii) PCPalInheritTbl: [pcJobTbl.JT_MAGICIAN_H] = pcJobTbl.JT_MAGICIAN, -- High Mage uses same prefix as Mage class.  
    6) PCNames.lua   Lua equivalent of monstrosity_tab.txt (in part since mobs are defined by jobname.lua) . As the file name says this is where you define all your class names. Reason i saved this for last is because this file is slightly different from the previous 4. Here you can define the class name seperately for both genders. For male classes => i) PCJobNameTbl : [pcJobTbl.JT_WARLOCK] = "Warlock", -- Kind of obvious right? ii) PCJobNameInheritTbl : [pcJobTbl.JT_WARLOCK_H] = pcJobTbl.JT_WARLOCK, -- JT_WARLOCK_H is Transcendent version of -- warlock class and ofcourse it will have same name For female classes => iii) PCJobNameTbl_F : [pcJobTbl.JT_WARLOCK] = "Witch", -- Now the female Warlock will be called Witch
    iv) PCJobNameInheritTbl_F : [pcJobTbl.JT_WARLOCK_H] = pcJobTbl.JT_WARLOCK, -- Same for Transcendent warlock   By default if your gender is female and there is no names defined using either iii) or iv) above then it checks in the tables for male gender. 7) PCFuncs.lua Contains Necessary functions used by the client - DO NOT TOUCH THIS FILE unless you know what you are doing!!!   Lua File Formats - Custom Shield Patch Custom Shield Patch makes use of 2 lua files as specified below. They need to be present in luafiles514/lua files/datainfo folder.   1) ShieldTable.lua : This lua file is the only one you need to configure. It contains 3 tables and is similar in format to WeaponTable.lua i) Shield_IDs : Defines a list of IDs which includes both Shield Types & Item IDs used by shield items in item_db.txt. Shield Items can only start from item id 2101 onwards so anything lesser than that will be considered as a shield type id. To distinguish between them we use the ST (Shield Type) and SI (Shield Item) prefixes. ST_MSHIELD = 4, -- Mirror Shield TypeSI_Platinum_Shield = 2122, -- Platinum Shield's Item ID   ii) ShieldNameTable : Here we assign suffix strings for Shield Types i.e. shield suffix in => /data/sprite/¹æÆÐ/<hand prefix>_<gender>_<shield suffix>.spr [Shield_IDs.ST_MSHIELD] = "_¹Ì·¯½¯µå", --Suffix for Mirror shield  iii) ShieldMapTable : Here we specify which Shield Type is used by each of the Shield Items. [Shield_IDs.SI_Platinum_Shield] = Shield_IDs.ST_MSHIELD, -- Platinum Shield uses -- Mirror Shield sprite.
    2) ShieldTable_F.lua : Contains Necessary functions used by the client - DO NOT TOUCH THIS FILE unless you know what you are doing!!!     Ok.. So Where do i get the files? Download link     Final Note If you have any issues or doubts about the xDiff files or Lua files (I expect some in this department) let me know. So Enjoy
  15. Upvote
    Neo-Mind got a reaction from Waken in I can't change the icon (Exe 2013-08-07aRagexe)   
    Like i have mentioned in the patch. the icon file should contain one image of 32x32 size  & 8bpp depth. the patch simply replaces the existing icon image with the one from the icon and Gravity apparently likes to keep almost everything in the 8bit depth.
     
    Anakid's icon pack are all 32 bit icons which is why it did not work.
     
    N.B. To make 32 bit icons work is a headache hence i chose not to go through that path (atleast not for now).
  16. Upvote
    Neo-Mind got a reaction from milk in R> Hex Code To Disable Shift+Rightclick Autofollow   
    ok guess ill add it to nemo
  17. Upvote
    Neo-Mind got a reaction from milk in How to run ragnarok on mobil   
    For anyone else who is wondering: thats Ragnarok Online Valkyrie Uprising by NEOCYON created for iOS & Android. Its a seperate game from the regular RO but it was made to resemble RO.
  18. Upvote
    Neo-Mind got a reaction from evilpuncker in How to run ragnarok on mobil   
    For anyone else who is wondering: thats Ragnarok Online Valkyrie Uprising by NEOCYON created for iOS & Android. Its a seperate game from the regular RO but it was made to resemble RO.
  19. Upvote
    Neo-Mind reacted to malufett in Custom Map Grid Pack   
    File Name: Custom Map Grid Pack
    File Submitter: malufett
    File Submitted: 03 Feb 2015
    File Category: Maps & Textures
     
    Customized map grid.
    Created as requested by evilpuncker - http://herc.ws/board/topic/8403-custom-ground-cursor/#entry49972
     

     
    Click here to download this file
  20. Upvote
    Neo-Mind got a reaction from Echoes in NEMO - Client Patcher   
    N.E.M.O. - Neo Exe Modification Organizer

    Why another client patcher? well
    1) WeeDiffGen - isn't working for 2013 clients + it depends on dlls (not that its a bad thing but i like scripting )
    2) xDiffGen - yes its scripted but we need to depend on xdiff files.

    so i made a new one based on xDiffGen and here it is. The patches are written in QtScript format.
    Details of making a patch have already been written in a seperate topic - although now it needs to be updated with more details.
    I have already converted most of the patches from xDiffGen.

    Why this name? - well I didn't want it to be called * Gen No offense  
    plus someone keeps calling me Nemo in IRC which gave me the idea

    Snapshot
    -----------------


    How to use?
    ---------------------
    1) First you need to specify your client file in Input Exe file box. If you browse to select the file name, Output Patched box gets updated with a _patched suffix filename automatically. Ofcourse you can select your own name for the output.
     
    2) Next we need to load both the client and the scripts (patches & addons). so click Load Client button.
     
    3) Select the patches you want . In case you patched once before (for whatever date) they will be saved in your local and you can use the Select Previous button to select them again. Also you can try using the Select Rcomnded button to select all the Recommended patches.
     
    4) So your patches are selected and client is loaded what next but to Apply Patches  which will generate the output file. In 2.0 version , NEMO also generates a .secure.txt file containing the MD5, SHA1 and CRC32 values of the output exe file which you can use in various tools.
     
    5) You can use the Save Profile and  Load Profile buttons for saving/reloading a set of patches & input values, that you have selected (even if they are not applied) for future use.
     
    6) Whenever you apply patches to a client, NEMO updates the patchlist.log file (along with Inputlist.db) in the folder where NEMO.exe is. This file will contain the list of patches you have applied along with their IDs (do not tamper with either of them).
     
    Changes in 2.0:
    ----------------------
    1) I have made some obvious modifications to the interface (you can definitely see the change in case you have seen v1.0).
         i) Buttons have come downwards and is no longer strippable (toolbar has been fixed in position)
     
         ii) New status Label has been added which shows your currently loaded client date and how many patches are selected.
     
         iii) NEMO now has support for Addons - scripts that are meant to retrieve data from the client and do its own thing (not patch the client).
              All the Extract xDiff patches has been added here already. 1 extra addon will be coming soon once i can fix it.
     
         iv) New Filter box has been added which does live search (i.e. filter as you type) for filtering out only the patches u want to see.
               For e.g. if you type color, it will only show patches that have the string color in either it's name or the description.
              You can also use regular expression . Also you can sort the columns now
     
        v) An upcoming feature - Test Patches. this one you can use for testing a newly added patch for a variety of clients that you select.
     
    2) NEMO is no longer there in SVN. I have shifted it to GitHub . The rar file uploaded has the .git file so you should be able to directly pull to get updates. But just in case I have also provided the repository link below.
     
    Remember to pull for updates before using NEMO and let me know if you are facing any bugs or issues or if i have missed out on anything. Enjoy .
     
    Repository: https://github.com/MStr3am/NEMO.git
     
    Download Link: NEMO zip file 
  21. Upvote
    Neo-Mind reacted to trickyloki3 in ItemDB Script Translation Project   
    Update.
     
    New project repository: https://github.com/trickyloki3/eAdb.Compiler3
     
    The project is almost finished.
     
    Currently supports eAthena, rAthena, and Hercules databases.
     
    Still need to fixed some bugs with porting.
     
    Goal: Server Item Database -> Item Script -> [eAdb.Compiler] -> Item Script Description-> Client Tables
     
    Dumps all databases into a sqlite3 database (~3MB)
    ./conv [eathena, rathena, hercules, all]
     
    Dumps Hercules databases into sqlite3 database (~1MB)
    [separate compilation 'make hitem' requires compiling and linking Hercules' Libconfig (See 3rdparty/libconfig in Hercules' git repository)]
    ./hitem
     
    Uses athena.db database to generate English translation for item database
    ./item [eathena, rathena, hercules]
  22. Upvote
    Neo-Mind got a reaction from relith82 in [Guide] How to use a secondary ItemInfo file   
    Introduction
    Well this idea came up when evilpunker asked about the possibility of having a patch which loads a second file which overrides the iteminfo file. But there is a better way to do that with lua itself.
     
    How to do it?
    The key idea is that the item information is added using the main function by the client. so in your custom file you just need to modify the main function to accept your items. Here is how it can be done.
     
    -- Load the original file. As you might have guessed you can also load your translated file here instead -- (just make sure the "tbl" array contains your item info) dofile("System/iteminfo.lub") -- Now as a simple example . I am simply going to change name of Red Potion to Crimson Potion. -- But you can add anything in the same way. Format is same as the original one, just -- the table name is different tbl_custom = { [501] = { unidentifiedDisplayName = "Crimson Potion", unidentifiedResourceName = "»¡°£Æ÷¼Ç", unidentifiedDescriptionName = { "A potion made from", "grinded Red Herbs that", "restores ^000088about 45 HP^000000.", "^ffffff_^000000", "Weight: ^7777777^000000" }, identifiedDisplayName = "Crimson Potion", identifiedResourceName = "»¡°£Æ÷¼Ç", identifiedDescriptionName = { "^000088HP Recovery Item^000000", "A potion made from", "grinded Red Herbs that", "restores ^000088about 45 HP^000000.", "^ffffff_^000000", "Weight: ^7777777^000000" }, slotCount = 0, ClassNum = 0 }, } -- Now for a helper function because i hate repetitions -- It adds items from curTable if it is not present in refTable function itemAdder(curTable, refTable) for ItemID,DESC in pairs(curTable) do if refTable == nil or refTable[ItemID] == nil then result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) if not result then return false, msg end for k,v in pairs(DESC.unidentifiedDescriptionName) do result, msg = AddItemUnidentifiedDesc(ItemID, v) if not result then return false, msg end end for k,v in pairs(DESC.identifiedDescriptionName) do result, msg = AddItemIdentifiedDesc(ItemID, v) if not result then return false, msg end end end end return true, "good" end -- And the newly designed main function function main() result, msg = itemAdder(tbl_custom, nil) -- add custom items (including official overrides) if result then result, msg = itemAdder(tbl, tbl_custom) -- add non-overridden official items end return result, msg end  
    How is it useful?
    Think how item_db2.txt is useful for adding custom items in a server. Its the same strategy here.
     
    You can keep your official items  in a base file (or you can just use the official iteminfo.lub file if you want the korean names)
           and keep your custom items in a different file (make sure the first dofile function calls the base file).
     
    The above code is error free, so feel free to copy and add your items . Hope the topic was not too confusing 
    The lua code can be further expanded for overriding only parts of an official item. But i will leave that update for the future
     
    P.S. The client should be patched to accept your custom file not the base file.   
     
    Screenshot 

     
  23. Upvote
    Neo-Mind reacted to Masao in Tree of Savior   
    Hi there everyone,
     
    currently there is the G-Star
    event going on in kora where also IMC Games is at, and they just
    recently released a new video for the game Tree of Savior, and of course
    I thought I'd share it immediatly here to keep you guys and girls kind
    of up-to-date with the current state and progression of the game with
    this video.
     
    Keep in mind, most of the shown footage
    is of course of their internal alpha testing. Unfortunatly there also
    is no release date or an date for the CBT announced yet, so we probably
    will have to wait until 2015
     
    But
    anyway, hype meter off the charts again thanks to this video, as always
    I can't wait to play it for myself, and SoundTEMP did an amazing job
    again with the BGM.
     
    So, here is the video now, I hope you'll enjoy it:
     


     
    Regards
    Masao
  24. Upvote
    Neo-Mind reacted to Yommy in 2014-10-22 Client Download   
    Hello Hercules, its been a while
     
    here i present a new client, which requires a fully updated kRO and Hercules.
    https://mega.co.nz/#!kYRAFRqJ!GF4vLIcOKQHsIQkCgZ2oGbXiJaxRsmn1ldohBgOXi3I
     
    its already patched with some options, which i needed for testing..
    ..Disable Ahnlab
    ..Disable ragexe filename check
    ..Read msgstringtable
    ..Read datafolder first
     
    NEMO Patcher should work for most things, but there may be some patches that are broken.
     
    <3
  25. Upvote
    Neo-Mind reacted to Ind in 2014-10-22, Roulette and per-char gender!   
    2014-10-22 Client, Roulette and per-char gender!


    Made Possible Thanks to Yommy
    We're only able to provide you with this patch thanks to Yommy, Thank you very much!  
    Roulette
    During test period it will be disabled by default, to enable you must edit conf/battle/feature.conf // Roulette (Note 1)// Requires: 2014-10-22bRagexe or later// Off by default while test version is out; enable at your own risk -- the mean dev.feature.roulette: off Roulette rewards can be defined in db/roulette_db.conf As we understand the coins are points that you obtain by consuming an item, while such an item is not yet available (will be in a upcoming commit), you can set these values with @set command, they're TmpRouletteBronze,TmpRouletteSilver and TmpRouletteGold -- e.g. @set TmpRouletteBronze 5 Requires PACKETVER 20141022 or higher. Where you can get such client? Here (Again, Thanks to Yommy!) In action: http://herc.ws/board/damocles/ind/screenHercules136.jpg
      Per-Character Gender
    Sex is now a character table field, which can be defined as 'M', 'F' or 'U'. 'U' being the default value, meaning undefined, which means the accounts gender takes precedence (upcoming) a script command to change a characters gender Requires PACKETVER 20141022 or higher. Where you can get such client? Here (Again, Thanks to Yommy!) In action: http://herc.ws/board/damocles/ind/screenHercules137.jpg  
    Special Thanks to
    Yommy ..Yommy ...The all-awesome Yommy~! Thank you again! Ziu for extra roulette information (some yet to be applied) Haruna  
    Link~u!
    Commit 2014-10-22 client
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.