{lang: 'en-US'}

[Tut] Modifying Odinms

Ok So this is a guide for PimpingOut your server (or if your lazy just download a repack)


Ok for starters you can download a Clean Rev 988

Or Leifde's (Monster Skills, Multipets, etc)OdinTeh

And XML WZ Files


Ok for starters you can edit the Server Message (easy way)

Go into net.sf.odinms.net.channel.ChannelServer.java
Find
Code:
private String serverMessage =
Replace it with
Code:
private String serverMessage;
Next Find
Code:
moreThanOne = Boolean.parseBoolean(props.getProperty("net.sf.odinms.world.morethanone", "false"));
Add Below
Code:
serverMessage = props.getProperty("net.sf.odinms.world.serverMessage");
Ok now find
Code:
mesoRate = Integer.parseInt(props.getProperty("net.sf.odinms.world.meso"));
Add below that
Code:
serverMessage = props.getProperty("net.sf.odinms.world.serverMessage");
Now go into your World.properties and scroll right to the bottom and add 
Code:
#change the server message servermessage
net.sf.odinms.world.serverMessage= Easy Server Message!
Next we will change the event notice 

Go into net.sf.odinms.tools.MaplePacketCreator.java

Find
Code:
mplew.writeMapleAsciiString("
Add in your Notice Betwenn the "", for example 
Code:
mplew.writeMapleAsciiString("Welcome To the Events Notice!");

Now I will teach you how to modify your world and how to add a world 

Go intonet.sf.odinms.net.login.handler.ServerlistRequestHandler.java

Scroll down a tiny bit you should see this
Code:
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
  c.getSession().write(MaplePacketCreator.getServerList(0, "Zenith", LoginServer.getInstance().getLoad()));
  //c.getSession().write(MaplePacketCreator.getServerList(1, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  //c.getSession().write(MaplePacketCreator.getServerList(2, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  //c.getSession().write(MaplePacketCreator.getServerList(3, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  c.getSession().write(MaplePacketCreator.getEndOfServerList());
Change the 0 (Scania) to either 1 (Bera), 2 (Broa), 3 (Windia), 4(Khania), 5 (Bellocan), 6 (Mardia), 7 (Kradia), 8 (Yellonde), 9(Demethos)

Code:
c.getSession().write(MaplePacketCreator.getServerList(0, "Zenith", LoginServer.getInstance().getLoad()));
You can change all of the "Zenith's" to Whatever, 
Example:
Code:
"Zenith", LoginServer.getInstance
Code:
"Test", LoginServer.getInstance
To add a new world you need to add this beneath the other world
Code:
c.getSession().write(MaplePacketCreator.getServerList(0, "Zenith", LoginServer.getInstance().getLoad()));
  //c.getSession().write(MaplePacketCreator.getServerList(1, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  //c.getSession().write(MaplePacketCreator.getServerList(2, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  //c.getSession().write(MaplePacketCreator.getServerList(3, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  c.getSession().write(MaplePacketCreator.getEndOfServerList());
For Example:
Code:
c.getSession().write(MaplePacketCreator.getServerList(0, "Zenith", LoginServer.getInstance().getLoad()));
  //c.getSession().write(MaplePacketCreator.getServerList(1, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  //c.getSession().write(MaplePacketCreator.getServerList(2, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  //c.getSession().write(MaplePacketCreator.getServerList(3, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  c.getSession().write(MaplePacketCreator.getEndOfServerList());
  c.getSession().write(MaplePacketCreator.getServerList(0, "Zenith", LoginServer.getInstance().getLoad()));
  //c.getSession().write(MaplePacketCreator.getServerList(1, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  //c.getSession().write(MaplePacketCreator.getServerList(2, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  //c.getSession().write(MaplePacketCreator.getServerList(3, "Zenith", LoginServer.getInstance().getChannels(), 1200));
  c.getSession().write(MaplePacketCreator.getEndOfServerList());

Ok This is how to change the level cap, Example: lvl 255 

Ok go to net.sf.odinms.client.ExpTable.java
Scroll down until you see this:
Code:
public class ExpTable {
 private static int[] exp = { 0, 15, 34, 57, 92, 135, 372, 560, 840, 1242, 1716, 2360, 3216, 4200, 5460, 7050, 8840,
  11040, 13716, 16680, 20216, 24402, 28980, 34320, 40512, 47216, 54900, 63666, 73080, 83720, 95700, 108480,
  122760, 138666, 155540, 174216, 194832, 216600, 240500, 266682, 294216, 324240, 356916, 391160, 428280, 468450,
  510420, 555680, 604416, 655200, 709716, 748608, 789631, 832902, 878545, 926689, 977471, 1031036, 1087536,
  1147032, 1209994, 1276301, 1346242, 1420016, 1497832, 1579913, 1666492, 1757815, 1854143, 1955750, 2062925,
  2175973, 2295216, 2420993, 2553663, 2693603, 2841212, 2996910, 3161140, 3334370, 3517093, 3709829, 3913127,
  4127566, 4353756, 4592341, 4844001, 5109452, 5389449, 5684790, 5996316, 6324914, 6671519, 7037118, 7422752,
  7829518, 8258575, 8711144, 9188514, 9692044, 10223168, 10783397, 11374327, 11997640, 12655110, 13348610,
  14080113, 14851703, 15665576, 16524049, 17429566, 18384706, 19392187, 20454878, 21575805, 22758159, 24005306,
  25320796, 26708375, 28171993, 29715818, 31344244, 33061908, 34873700, 36784778, 38800583, 40926854, 43169645,
  45535341, 48030677, 50662758, 53439077, 56367538, 59456479, 62714694, 66151459, 69776558, 73600313, 77633610,
  81887931, 86375389, 91108760, 96101520, 101367883, 106992842, 112782213, 118962678, 125481832, 132358236,
  139611467, 147262175, 155332142, 163844343, 172823012, 182293713, 192283408, 202820538, 213935103, 225658746,
  238024845, 251068606, 264827165, 279339639, 294647508, 310794191, 327825712, 345790561, 364739883, 384727628,
  405810702, 428049128, 451506220, 476248760, 502347192, 529875818, 558913012, 589541445, 621848316, 655925603,
  691870326, 729784819, 769777027, 811960808, 856456260, 903390063, 952895838, 1005114529, 1060194805,
  1118293480, 1179575962, 1244216724, 1312399800, 1384319309, 1460180007, 1540197871, 1624600714, 1713628833,
  1807535693, 1906558648, 2011069705, 2121276324 };
Change all of it to this:
Code:
public class ExpTable {
 private static int[] exp = { 0, 15, 34, 57, 92, 135, 372, 560, 840, 1242, 1716, 2360, 3216, 4200, 5460, 7050, 8840,
  11040, 13716, 16680, 20216, 24402, 28980, 34320, 40512, 47216, 54900, 63666, 73080, 83720, 95700, 108480,
  122760, 138666, 155540, 174216, 194832, 216600, 240500, 266682, 294216, 324240, 356916, 391160, 428280, 468450,
  510420, 555680, 604416, 655200, 709716, 748608, 789631, 832902, 878545, 926689, 977471, 1031036, 1087536,
  1147032, 1209994, 1276301, 1346242, 1420016, 1497832, 1579913, 1666492, 1757815, 1854143, 1955750, 2062925,
  2175973, 2295216, 2420993, 2553663, 2693603, 2841212, 2996910, 3161140, 3334370, 3517093, 3709829, 3913127,
  4127566, 4353756, 4592341, 4844001, 5109452, 5389449, 5684790, 5996316, 6324914, 6671519, 7037118, 7422752,
  7829518, 8258575, 8711144, 9188514, 9692044, 10223168, 10783397, 11374327, 11997640, 12655110, 13348610,
  14080113, 14851703, 15665576, 16524049, 17429566, 18384706, 19392187, 20454878, 21575805, 22758159, 24005306,
  25320796, 26708375, 28171993, 29715818, 31344244, 33061908, 34873700, 36784778, 38800583, 40926854, 43169645,
  45535341, 48030677, 50662758, 53439077, 56367538, 59456479, 62714694, 66151459, 69776558, 73600313, 77633610,
  81887931, 86375389, 91108760, 96101520, 101367883, 106992842, 112782213, 118962678, 125481832, 132358236,
  139611467, 147262175, 155332142, 163844343, 172823012, 182293713, 192283408, 202820538, 213935103, 225658746,
  238024845, 251068606, 264827165, 279339639, 294647508, 310794191, 327825712, 345790561, 364739883, 384727628,
  405810702, 428049128, 451506220, 476248760, 502347192, 529875818, 558913012, 589541445, 621848316, 655925603,
  691870326, 729784819, 769777027, 811960808, 856456260, 903390063, 952895838, 1005114529, 1060194805,
  1118293480, 1179575962, 1244216724, 1312399800, 1384319309, 1460180007, 1540197871, 1624600714, 1713628833,
  1807535693, 1906558648, 2011069705, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324,
                2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324,
                2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324,
                2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324,
                2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 
                2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324, 2121276324};
Now go to net.sf.odinms.client.MapleCharacter.java
Find
Code:
if (getLevel() < 200) { // lv200 is max and has 0 exp required to level
Change it to
Code:
if (getLevel() < 255) { // lv200 is max and has 0 exp required to level
Now find
Code:
while (level < 200 && exp.get() >= ExpTable.getExpNeededForLevel(level + 1)) {
Change it to
Code:
while (level < 255 && getExp() >= ExpTable.getExpNeededForLevel(level + 1)) {
After that find
Code:
if (level == 200) {
And Change it to
Code:
if (level == 255) {
Now go into your database and select "Characters" and under the table "Level" Make it 255


Now I'm going to teach you how to change the AP Cap

Go intonet.sf.odinms.net.channel.handler.DistributeAPHandler.java

Look for
Code:
if (c.getPlayer().getStr() >= 999) {
Code:
Change it to if (c.getPlayer().getStr() >= 32767) {
32767 is the max (I think)

Then Find
Code:
if (c.getPlayer().getDex() >= 999) {
Change it to
Code:
if (c.getPlayer().getDex() >= 32767) {
32767 is the max (I think)

Then Find
Code:
if (c.getPlayer().getInt() >= 999) {
Change it to
Code:
if (c.getPlayer().getInt() >= 32767) {
32767 is the max (I think)

Then Find
Code:
if (c.getPlayer().getLuk() >= 999) {
Change it to
Code:
f (c.getPlayer().getLuk() >= 32767) {
32767 is the max (I think)

Request From: WhiteTigerX, How to add more channels

Open Up your Channel.properties

Say you want 6 channels find
Code:
net.sf.odinms.channel.count=4
Change it to
Code:
net.sf.odinms.channel.count=6
Then find
Code:
net.sf.odinms.channel.0.key=release1
net.sf.odinms.channel.1.key=release2
Add below
Code:
net.sf.odinms.channel.2.key=release3
net.sf.odinms.channel.3.key=release4
net.sf.odinms.channel.4.key=release5
net.sf.odinms.channel.5.key=release6
Then open up MySql and choose the channels table

Add a new row. + 1 to the channelid, select your world probably 0 (Scania)+ 1 to the number and then go here Sha1 Converterand convert release key from your channel.properties. 
Code:
net.sf.odinms.channel.0.key=release1
Once converted to sha1, copy it into your key column in yourdatabase. Do this for each channel.

For Example

↓ to


Next go into ChannelConfig in your database

you dont need to do this if you only have one channel, If you already have 4 it should look like this

+ 1 to ChannelConfigId, Go back into channels and copy theChannelId 
 
Next set the name as
Code:
net.sf.odinms.channel.net.port
and + 1 to the port.
Do this for each channel

For Example - For Six Channels 


Note: If you run on a no hamachi server you'll have to forward those channels ports. How port forward

After you have done all of that Compile - How to compile

Hope You Enjoyed My Guide =D

Blogger Tips and TricksLatest Tips And TricksBlogger Tricks