Welcome to my huge guide on developing your 718 Server. In these guides, Matrix 718 is my base. So if you don't have that base, it may be a little bit different. This guide was 100% made by me, I didn't copy anyone's guide, so enjoy!:D
Just a word of advice; Matrix is not a good base to use
Note: I am still going to add more guides, if you need 1, feel free to ask me. I also made this guide so people could direct new-coders where to go.
Note:
If you want a successful RuneScape Private Server, you should know the following:
You need something unique
You can't be greedy for money, or have any intentions of making a RSPS just for making money
You need to make sure everything is consistent, in terms of Quality, in your RSPS.
You need to maintain a Clean look - So no spelling mistakes, etc.
You have to actually plan what type of RSPS you want, and the reasons why. Remember; you can't go back.
To "edit" a RSPS, you must first know that they are coded in Java, so you need something to edit that. The most basic form is of course, Notepad. However, the best way to edit your RSPS is actually a program named "Eclipse", which can save you a huge amount of time. Reasons being:
No need to "compile".
Displays hints on which you can fix errors
Refactoring
Very easy to navigate around
Easy text, much better than Notepad
Eclipse can be downloaded here
You should also know a reasonable amount of Java before you code, you can easily find some lessons online.
Spoiler for Making yourself Administrator:
Go onto player.java, search for
Code:
rights
, write your name in, so it looks like this:
Code:
if (username.equalsIgnoreCase("Name"))
{
rights = 2;
}
Spoiler for Changing your Servers name/Port/etc.:
Search for Settings.java, it can be found at
Quote:
src/com/rs/settings.java
Spoiler for Replace that with the following::
Code:
package com.rs;
import java.math.BigInteger;
import com.rs.game.WorldTile;
public final class Settings {
/**
* General client and server settings.
*/
public static final String SERVER_NAME = "Server name here";
public static final int PORT_ID = 43594;
public static final String LASTEST_UPDATE = "Latest update here";
public static final String CACHE_PATH = "data/cache/";
public static final int RECEIVE_DATA_LIMIT = 7500;
public static final int PACKET_SIZE_LIMIT = 7500;
public static final int CLIENT_BUILD = 718;
public static final int CUSTOM_CLIENT_BUILD = 3;
/**
* Link settings
*/
public static final String WEBSITE_LINK = "Server website";
public static final String ITEMLIST_LINK = "ItemList Link (Not needed)";
public static final String ITEMDB_LINK = "Itemlist link (For a website, e.g. www.runeitems.com";
public static final String VOTE_LINK = "Vote link";
/**
* Launching settings
*/
public static boolean DEBUG;
public static boolean HOSTED;
public static boolean ECONOMY;
/**
* If the use of the managment server is enabled.
*/
public static boolean MANAGMENT_SERVER_ENABLED = true;
/**
* Graphical User Interface settings
*/
public static final String GUI_SIGN = "-";
public static final String LINE_SEPARATOR = System.getProperty("line.separator");
/**
* Player settings
*/
public static final int START_PLAYER_HITPOINTS = 100;
public static final WorldTile START_PLAYER_LOCATION = new WorldTile(3552,4963, 0);
public static final String START_CONTROLER = "StartTutorial"; // "NewHomeControler";//
public static final WorldTile RESPAWN_PLAYER_LOCATION = new WorldTile(3088,3489, 0); //new WorldTile(3359,6115, 0);// //
public static final long MAX_PACKETS_DECODER_PING_DELAY = 30000; // 30seconds
public static final int XP_RATE = 22;
public static final int DROP_RATE = 6;
/**
* World settings
*/
public static final int WORLD_CYCLE_TIME = 600; // the speed of world in ms
/**
* Music & Emote settings
*/
public static final int AIR_GUITAR_MUSICS_COUNT = 50;
/**
* Quest settings
*/
public static final int QUESTS = 183;
/**
* Memory settings
*/
public static final int PLAYERS_LIMIT = 2000;
public static final int LOCAL_PLAYERS_LIMIT = 250;
public static final int NPCS_LIMIT = Short.MAX_VALUE;
public static final int LOCAL_NPCS_LIMIT = 250;
public static final int MIN_FREE_MEM_ALLOWED = 30000000; // 30mb
/**
* Game constants
*/
public static final int[] MAP_SIZES = { 104, 120, 136, 168, 72 };
public static final String GRAB_SERVER_TOKEN = "hAJWGrsaETglRjuwxMwnlA/d5W6EgYWx";
public static final int[] GRAB_SERVER_KEYS = {1441,78700,44880,39771,363186,44375,0,16140,7316
,271148,810710,216189,379672,454149,933950,21006,25367,17247,1244,1,14856,1494,119,882901,1818764,3963,3618};
//an exeption(grab server has his own keyset unlike rest of client)
public static final BigInteger GRAB_SERVER_PRIVATE_EXPONENT = new BigInteger("95776340111155337321344029627634178888626101791582245228586750697996713454019354716577077577558156976177994479837760989691356438974879647293064177555518187567327659793331431421153203931914933858526857396428052266926507860603166705084302845740310178306001400777670591958466653637275131498866778592148380588481");
public static final BigInteger GRAB_SERVER_MODULUS = new BigInteger("119555331260995530494627322191654816613155476612603817103079689925995402263457895890829148093414135342420807287820032417458428763496565605970163936696811485500553506743979521465489801746973392901885588777462023165252483988431877411021816445058706597607453280166045122971960003629860919338852061972113876035333");
public static final BigInteger PRIVATE_EXPONENT = new BigInteger("90587072701551327129007891668787349509347630408215045082807628285770049664232156776755654198505412956586289981306433146503308411067358680117206732091608088418458220580479081111360656446804397560752455367862620370537461050334224448167071367743407184852057833323917170323302797356352672118595769338616589092625");
public static final BigInteger MODULUS = new BigInteger("102876637271116124732338500663639643113504464789339249490399312659674772039314875904176809267475033772367707882873773291786014475222178654932442254125731622781524413208523465520758537060408541610254619166907142593731337618490879831401461945679478046811438574041131738117063340726565226753787565780501845348613");
To change the "IP" of your RSPS, you need to go onto your client. From here, look for Loader.java - and open it. Search for:
Quote:
String IP
From here, you can edit that IP to yours, if you want it so it is just for you, type in "127.0.0.1".
Spoiler for Commands:
Commands are probably the backbone to your server, so you need to have some handy commands!
Commands are located at commands.java, which can be found at:
Quote:
src/com/rs/game/player/content/commands.java
Spoiler for Example:
You can add various things such as:
Code:
case "vote":
player.getPackets().sendOpenURL("http://google.co.uk/");
The above command would open Google when you done ::vote
Spoiler for Additional Information:
Here are some other commands:
[code]case "CommandHere":
player.getPackets().sendGameMessage(
"MessageHere");
return true;
Spoiler for NPC's!:
NPC's can be a huge part of your server, giving players additional teleports, telling them valuable pieces of information, and much more!
Spoiler for Adding an NPC:
Go to
Code:
\data\npcs
, and open "UnpackedSpawnsList". From here, you can tell what NPC's spawn where, and to add one in yourself, you have to use the following format:
Quote:
NPCid - X Y Plane
So, if we wanted to spawn a "Man" at the Edgeville area, we would write in the following:
Code:
1 - 3091 3500 0
The 1= His ID
The 3091 = X Co-ordinates
The 3500 = Y Co-ordinates
0 = His level (Nearly always 0)
From there, you would save, delete the folder "PackedSpawns", and Compile!
Spoiler for NPC Dialogues:
First, you need to have your NPC spawned, using the guide above. Once you have done that, you can make that NPC be interacted with.
Spoiler for The following code will enable you to talk to "Santa", and him giving you a present:
Go to
Quote:
src\com\rs\game\player\dialogues
, and make a new file. I suggest making it Santa.java.
Add in the following:
@Override
public void start() {
sendEntityDialogue(SEND_2_TEXT_CHAT,
new String[] { NPCDefinitions.getNPCDefinitions(npcId).name,
"Merry Christmas +player.getDisplayName()+! Would you like to have a present?"}, IS_NPC, npcId, 9400);
}
@Override
public void run(int interfaceId, int componentId) {
if (stage == -1) {
sendOptionsDialogue("Do you want a Present?", "Yes please!",
"No thanks!");
stage = 1;
} else if (stage == 1) {
if (componentId == OPTION_1) {
player.setNextForceTalk(new ForceTalk("Ho Ho Ho, Merry Christmas!"));
player.setNextAnimation(new Animation(10530));
player.setNextGraphics(new Graphics(255));
player.getInventory().addItem(21454, 1);
end();
}
else if (componentId == OPTION_2) {
end();
}
}
}
@Override
public void finish() {
}
}
Now you want to go to DialogueHandler.java, which can be found at
995 = Currency (Coins)
True = Boolean
Edgeville Genreal Store = Name
1931 = ID
30 = Quantity of 1931.
It then repeats for every new item, in the same method as ID,Quantity.
Once you have finished, delete
Quote:
Packedshops.s
, and you are good!
Spoiler for Adding requirements to items:
ItemConstants.java
Spoiler for Putting the server online to other players:
There are 2 possibilities for putting your server online; "Portforwarding" and using a VPS (Virtual Private Server)
Portforwarding
Portforwarding is using your Home Internet connection to host your server, so if you have a typical home connection you won't be able to get a huge amount of players online, along with the fact of your normal internet being affected (Downloads, browsing will be slower). Portforwarding is a good choice if you are low on internet and only would want the server to a few friends.
To portforward, you would need to do it via your Router's default gateway. Because of the mass amount of routers; I cannot make a whole guide on each one, so I would suggest to go to www.portforward.com and locate your Router model, and select "RuneScape Private Server". Be aware; the port you want to forward is "43594".
VPS
A VPS is the more preferred choice, as it does not use your internet connection, it uses a whole new computers internet. A huge amount of websites sell VPS's, so there is no shortage of choice. If you are struggling to find one, either Google or check the "Hosting" section of Rune-server. VPS's also have very good internet connections compared to home-connection speeds. When you are finding a VPS, you would want decent computer specs, and good internet upload speed. Note, download speed does not affect the RSPS. A VPS would be a good choice if you want to open the server up to the public.
If this is your first time purchasing a VPS; I would advise you to purchase a Windows VPS. Although they cost more, they are much easier to navigate than Linux VPS's. If you have any trouble setting up your VPS you can ask your provider for help, or you could just private-message someone on rune-server.
12-21-2012, 07:19 PM
Kaleem
Reserved
12-21-2012, 07:31 PM
hero x sword
not bad at least ur doing somthing for the guys that dont know anything. This wil help them at least understand what is what lol.
(y)
12-21-2012, 07:50 PM
Kaleem
Quote:
Originally Posted by hero x sword
not bad at least ur doing somthing for the guys that dont know anything. This wil help them at least understand what is what lol.
(y)
Thank you, and yes - that was the reason why I made this.
12-21-2012, 07:56 PM
Con Artist
You should change your thread title to [667/718] since they're the same except the commands method :p
this will definitelly help new people to matrix
12-21-2012, 08:00 PM
Oogle
Wow, Not bad, Thanks for this will share to my mates who use 600+ Servers
12-21-2012, 08:24 PM
Get Vexxed
Great job, in-depth, full and complete, but could use other methods depending on someone's router and port forwarding etc. But good job. 9/10
12-21-2012, 08:51 PM
BongoProd
No credits for me? I made the halloween npc, you just ripped the dialouge and changed a few id's
12-21-2012, 08:59 PM
Kaleem
Quote:
Originally Posted by BongoProd
No credits for me? I made the halloween npc, you just ripped the dialouge and changed a few id's
This is the Christmas NPC.
12-21-2012, 09:08 PM
Con Artist
Quote:
Originally Posted by BongoProd
No credits for me? I made the halloween npc, you just ripped the dialouge and changed a few id's
Anybody is capable of making simple dialogue handing item to player :fp: