#
#-----[ OPEN ]---------------------------------
#
Char Server/Charserver.cpp #
#-----[ FIND ]---------------------------------
#
DoSQL( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
if(!DoSQL("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected ,maxconnections,owner) VALUES (%i,%i,'%s','%s',%i,'%s','%s',0,%i,%i)",
Config.ServerID, Config.ServerType, Config.ServerName, Config.CharIP, Config.CharPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
{
Log(MSG_WARNING, "Error accessing to database, the other server will not connect to CharServer" );
}
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave) {
DoSQL( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
if(!DoSQL("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected ,maxconnections,owner) VALUES (%i,%i,'%s','%s',%i,'%s','%s',0,%i,%i)",
Config.ServerID, Config.ServerType, Config.ServerName, Config.CharIP, Config.CharPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
{
Log(MSG_WARNING, "Error accessing to database, the other server will not connect to CharServer" );
}
} else {
DoSQLMaster( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
if(!DoSQLMaster("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected ,maxconnections,owner) VALUES (%i,%i,'%s','%s',%i,'%s','%s',0,%i,%i)",
Config.ServerID, Config.ServerType, Config.ServerName, Config.CharIP, Config.CharPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
{
Log(MSG_WARNING, "Error accessing to database, the other server will not connect to CharServer" );
}
}
#
#-----[ FIND ]---------------------------------
#
DoSQL( "SELECT host,port,lanip FROM channels WHERE id=%u and type=0", Config.ParentID );
result = mysql_store_result(mysql);
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave) {
DoSQL( "SELECT host,port,lanip FROM channels WHERE id=%u and type=0", Config.ParentID );
result = mysql_store_result(mysql);
} else {
DoSQLMaster( "SELECT host,port,lanip FROM channels WHERE id=%u and type=0", Config.ParentID );
result = mysql_store_result(mysqlmaster);
}
#
#-----[ FIND ]---------------------------------
#
DoSQL( "DELETE FROM channels WHERE id=%u and type=2", thischannel->id );
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave) {
DoSQL( "DELETE FROM channels WHERE id=%u and type=2", thischannel->id );
} else {
DoSQLMaster( "DELETE FROM channels WHERE id=%u and type=2", thischannel->id );
}
#
#-----[ FIND ]---------------------------------
#
Config.SQLServer.pcPort = ConfigGetInt ( file, "mysql_port", 3306 );
#
#-----[ AFTER, ADD ]---------------------------
#
//Master Database
Config.isSlave = ConfigGetInt ( file, "serverslave", 0 );
Config.SQLMaster.pcServer = ConfigGetString ( file, "master_host", "localhost" );
Config.SQLMaster.pcDatabase = ConfigGetString ( file, "master_database", "roseon_beta" );
Config.SQLMaster.pcUserName = ConfigGetString ( file, "master_user", "root" );
Config.SQLMaster.pcPassword = ConfigGetString ( file, "master_pass", "" );
Config.SQLMaster.pcPort = ConfigGetInt ( file, "master_port", 3306 );
#
#-----[ OPEN ]---------------------------------
#
Char Server/Main.cpp
#
#-----[ FIND ]---------------------------------
#
MYSQL mysql;
#
#-----[ AFTER, ADD ]---------------------------
#
MYSQL mysqlmaster;
#
#-----[ FIND ]---------------------------------
#
if(server==NULL)
return -1;
#
#-----[ AFTER, ADD ]---------------------------
#
if (server->Config.isSlave) {
mysql_init( &mysqlmaster );
// Connect mysqlmaster
if ( !mysql_real_connect( &mysqlmaster, server->Config.SQLMaster.pcServer,
server->Config.SQLMaster.pcUserName,
server->Config.SQLMaster.pcPassword,
server->Config.SQLMaster.pcD atabase,
server->Config.SQLMaster.pcPort, NULL, 0 ) )
{
Log( MSG_FATALERROR, "Error connecting to MySQL master server: %s\n", mysql_error( &mysqlmaster ) );
system("PAUSE");
return -1;
}
else
{
Log( MSG_INFO, "Connected to MySQL master server" );
}
server->mysqlmaster = &mysqlmaster;
}
#
#-----[ FIND ]---------------------------------
#
// Close server
#
#-----[ AFTER, ADD ]---------------------------
#
if (server->Config.isSlave)
mysql_close( &mysqlmaster );
#
#-----[ OPEN ]---------------------------------
#
World Server/gmcmds.cpp
#
#-----[ FIND ]---------------------------------
#
DoSQL( "UPDATE accounts SET accesslevel='0' WHERE id=%i", otherclient->PlayerSession->userid);
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave)
DoSQL( "UPDATE accounts SET accesslevel='0' WHERE id=%i", otherclient->PlayerSession->userid);
else
DoSQLMaster( "UPDATE accounts SET accesslevel='0' WHERE id=%i", otherclient->PlayerSession->userid);
#
#-----[ OPEN ]---------------------------------
#
World Server/Main.cpp
#
#-----[ FIND ]---------------------------------
#
MYSQL mysql;
#
#-----[ AFTER, ADD ]---------------------------
#
MYSQL mysqlmaster;
#
#-----[ FIND ]---------------------------------
#
// Connect mysql
#
#-----[ AFTER, ADD ]---------------------------
#
if (server->Config.isSlave) {
mysql_init( &mysqlmaster );
// Connect mysqlmaster
if ( !mysql_real_connect( &mysqlmaster, server->Config.SQLMaster.pcServer,
server->Config.SQLMaster.pcUserName,
server->Config.SQLMaster.pcPassword,
server->Config.SQLMaster.pcD atabase,
server->Config.SQLMaster.pcPort, NULL, 0 ) )
{
Log( MSG_FATALERROR, "Error connecting to MySQL master server: %s\n", mysql_error( &mysqlmaster ) );
system("PAUSE");
return -1;
}
else
{
Log( MSG_INFO, "Connected to MySQL master server" );
}
server->mysqlmaster = &mysqlmaster;
}
#
#-----[ FIND ]---------------------------------
#
// Close server
#
#-----[ AFTER, ADD ]---------------------------
#
if (server->Config.isSlave)
mysql_close( &mysqlmaster );
#
#-----[ OPEN ]---------------------------------
#
startup.cpp
#
#-----[ FIND ]---------------------------------
#
DoSQL("UPDATE accounts set online=0");
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave)
DoSQL("UPDATE accounts set online=0");
else
DoSQLMaster("UPDATE accounts set online=0");
#
#-----[ OPEN ]---------------------------------
#
World Server/Worldclient.cpp
#
#-----[ FIND ]---------------------------------
#
GServer->DoSQL("UPDATE accounts SET online=true where id=%u", PlayerSession->userid );
#
#-----[ REPLACE WITH ]-------------------------
#
if (!GServer->Config.isSlave)
GServer->DoSQL("UPDATE accounts SET online=true where id=%u", PlayerSession->userid );
else
GServer->DoSQLMaster("UPDATE accounts SET online=true where id=%u", PlayerSession->userid );
#
#-----[ FIND ]---------------------------------
#
if(!GServer->DoSQL("update accounts set zulystorage = %i where id = %i", PlayerInfo->Storage_Zulies, PlayerSession->userid))
return;
#
#-----[ REPLACE WITH ]-------------------------
#
if (!GServer->Config.isSlave) {
if(!GServer->DoSQL("update accounts set zulystorage = %i where id = %i", PlayerInfo->Storage_Zulies, PlayerSession->userid))
return;
} else {
if(!GServer->DoSQLMaster("update accounts set zulystorage = %i where id = %i", PlayerInfo->Storage_Zulies, PlayerSession->userid))
return;
}
#
#-----[ OPEN ]---------------------------------
#
World Server/WorldPackets.cpp
#
#-----[ FIND ]---------------------------------
#
if(!DoSQL("SELECT username,lastchar,accesslevel,zulystorage FROM accounts WHERE id=%i AND password='%s'", thisclient->PlayerSession->userid, thisclient->PlayerSession->password))
return true;
result = mysql_store_result(mysql);
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave) {
if(!DoSQL("SELECT username,lastchar,accesslevel,zulystorage FROM accounts WHERE id=%i AND password='%s'", thisclient->PlayerSession->userid, thisclient->PlayerSession->password))
return true;
result = mysql_store_result(mysql);
} else {
if(!DoSQLMaster("SELECT username,lastchar,accesslevel,zulystorage FROM accounts WHERE id=%i AND password='%s'", thisclient->PlayerSession->userid, thisclient->PlayerSession->password))
return true;
result = mysql_store_result(mysqlmaster);
}
#
#-----[ OPEN ]---------------------------------
#
/World Server/WorldServer.cpp
#
#-----[ FIND ]---------------------------------
#
CWorldClient* CWorldServer::CreateClientSocket( )
{
DoSQL( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );
#
#-----[ REPLACE WITH ]-------------------------
#
CWorldClient* CWorldServer::CreateClientSocket( )
{
if (!Config.isSlave)
DoSQL( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );
else
DoSQLMaster( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );
#
#-----[ FIND ]---------------------------------
#
void CWorldServer:eleteClientSocket( CClientSocket* thisclient )
{
DoSQL( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );
#
#-----[ REPLACE WITH ]-------------------------
#
void CWorldServer:eleteClientSocket( CClientSocket* thisclient )
{
if (!Config.isSlave)
DoSQL( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );
else
DoSQLMaster( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );
#
#-----[ FIND ]---------------------------------
#
DoSQL( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
if(!DoSQL("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected ,maxconnections,owner) VALUES (%i,%i,'%s','%s',%u,'%s','%s',0,%i,%i)",
Config.ServerID, Config.ServerType, Config.ServerName, Config.WorldIP, Config.WorldPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
{
Log(MSG_WARNING, "Error accessing to database, the other server will not connect to WorldServer" );
}
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave) {
DoSQL( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
if(!DoSQL("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected ,maxconnections,owner) VALUES (%i,%i,'%s','%s',%u,'%s','%s',0,%i,%i)",
Config.ServerID, Config.ServerType, Config.ServerName, Config.WorldIP, Config.WorldPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
{
Log(MSG_WARNING, "Error accessing to database, the other server will not connect to WorldServer" );
}
} else {
DoSQLMaster( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
if(!DoSQLMaster("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected ,maxconnections,owner) VALUES (%i,%i,'%s','%s',%u,'%s','%s',0,%i,%i)",
Config.ServerID, Config.ServerType, Config.ServerName, Config.WorldIP, Config.WorldPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
{
Log(MSG_WARNING, "Error accessing to database, the other server will not connect to WorldServer" );
}
}
#
#-----[ FIND ]---------------------------------
#
DoSQL( "SELECT host,port,lanip FROM channels WHERE id=%u and type=1", Config.ParentID );
result = mysql_store_result(mysql);
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave) {
DoSQL( "SELECT host,port,lanip FROM channels WHERE id=%u and type=1", Config.ParentID );
result = mysql_store_result(mysql);
} else {
DoSQLMaster( "SELECT host,port,lanip FROM channels WHERE id=%u and type=1", Config.ParentID );
result = mysql_store_result(mysqlmaster);
}
#
#-----[ FIND ]---------------------------------
#
DoSQL("UPDATE accounts SET online=false where id=%u", thisclientwc->PlayerSession->userid );
#
#-----[ REPLACE WITH ]-------------------------
#
if (!Config.isSlave)
DoSQL("UPDATE accounts SET online=false where id=%u", thisclientwc->PlayerSession->userid );
else
DoSQLMaster("UPDATE accounts SET online=false where id=%u", thisclientwc->PlayerSession->userid );
#
#-----[ FIND ]---------------------------------
#
Config.SQLServer.pcPort = ConfigGetInt ( file, "mysql_port", 3306 );
#
#-----[ AFTER, ADD ]---------------------------
#
//Master Database
Config.isSlave = ConfigGetInt ( file, "serverslave", 0 );
Config.SQLMaster.pcServer = ConfigGetString ( file, "master_host", "localhost" );
Config.SQLMaster.pcDatabase = ConfigGetString ( file, "master_database", "roseon_beta" );
Config.SQLMaster.pcUserName = ConfigGetString ( file, "master_user", "root" );
Config.SQLMaster.pcPassword = ConfigGetString ( file, "master_pass", "" );
Config.SQLMaster.pcPort = ConfigGetInt ( file, "master_port", 3306 );
#
#-----[ OPEN ]---------------------------------
#
Common/Socket.h
#
#-----[ FIND ]---------------------------------
#
CROSEServerConfigSQL SQLServer; // SQL Information
#
#-----[ AFTER, ADD ]---------------------------
#
CROSEServerConfigSQL SQLMaster; // SQL Server ref for master server, if a slave
bool isSlave; // Is the server a slave?
#
#-----[ FIND ]---------------------------------
#
bool DoSQL(char *Format, ...); // Do SQL Query
#
#-----[ AFTER, ADD ]---------------------------
#
bool DoSQLMaster(char *Format, ...); // Do SQL Query
#
#-----[ FIND ]---------------------------------
#
pthread_mutex_t sqlmutex;
#
#-----[ AFTER, ADD ]---------------------------
#
MYSQL* mysqlmaster;
pthread_mutex_t sqlmutexmaster;
#
#-----[ OPEN ]---------------------------------
#
Common/Socketserver.cpp
#
#-----[ FIND ]---------------------------------
#
pthread_mutex_init( &sqlmutex, NULL );
#
#-----[ AFTER, ADD ]---------------------------
#
pthread_mutex_init( &sqlmutexmaster, NULL);
#
#-----[ FIND ]---------------------------------
#
pthread_mutex_destroy( &sqlmutex );
#
#-----[ AFTER, ADD ]---------------------------
#
pthread_mutex_destroy( &sqlmutexmaster );
#
#-----[ APPEND TO END OF FILE ]----------------
// Do sql query
bool CServerSocket:oSQLMaster(char *Format, ...)
{
pthread_mutex_lock( &sqlmutexmaster );
char Buffer[1000];
memset( &Buffer, '\0', 1000 );
va_list ap; va_start( ap, Format );
vsprintf( Buffer, Format, ap );
va_end ( ap );
int mres = mysql_query( mysqlmaster, Buffer );
if (mres!=0)
{
Log( MSG_SQL, "Could not execute query: %s", mysql_error( mysqlmaster ) );
Log( MSG_SQL, "Query: %s", Buffer );
int pres = mysql_ping( mysqlmaster );
if(pres!=0)
{
Log( MSG_INFO, "Trying to reconnect to Mysql..." );
if ( !mysql_real_connect( mysqlmaster, this->Config.SQLMaster.pcServer,
this->Config.SQLMaster.pcUserName,
this->Config.SQLMaster.pcPassword,
this->Config.SQLMaster.pcDatabase,
0, NULL, 0 ) )
{
Log( MSG_SQL, "Failed to reconnect to Mysql master server" );
pthread_mutex_unlock( &sqlmutexmaster );
return false;// we should close server?
}
else
{
Log( MSG_INFO, "Reconnected to Mysql master server, Trying to do Query Again..." );
for(UINT i=0;i<3;i++)//will try to make the query 3 times
{
int mres = mysql_query( mysqlmaster, Buffer );
if(mres==0)
{
pthread_mutex_unlock( &sqlmutexmaster );
return true;
}
}
Log( MSG_SQL, "Could not Execute query: %s" ,mysql_error( mysqlmaster ) );
Log( MSG_SQL, "Query: %s", Buffer );
pthread_mutex_unlock( &sqlmutexmaster );
return false; // we should close server?
}
}
}
else
{
Log( MSG_QUERY, "Query: %s", Buffer );
pthread_mutex_unlock( &sqlmutexmaster );
return true;
}
}
Credits to drakia for figuring this one out.
--------8.0----------Extras
This is an document that contains the GM Commands.
Link: GM Commands
This is an Excel/Spreadsheet document that contains the Item ID's.
Link: Item ID's
This ia Text Document that contains all the teleport locations and their Map ID's.
Link: Locations and Map ID's
Here is a .VFS editor, where you can edit your .vfs and client graphics. Such as characters, loading screens, weapons, and lots more. (Credit to aurose)
Link: VFSnextgen
Here are the compiled EXE's incase you loose yours (loginserver.exe, charserver.exe, worldserver.exe)
Link: Compiled EXE's (Rev 60)
- 1/29/07 (Emergency Update)
- 2/8/07 (Updated to Rev 16 new files!)
- 2/11/07 (Updated to Rev 20 new files!)
- 2/20/07 (Updated to Rev 23 files!)
- 2/24/07 (Updated to Rev 25 files!)
- 3/1/07 (Updated to Rev 30 files!)
- 4/4/07 (Updated to Rev 41 files!)
- 4/6/07 (Updated to Rev 45 files!)
- 4/18/07 (Updated to Rev 59 files!)
- 4/30/07 (Updated to Rev 60 files!)
Here are some RARE outfits (armors/clothes). Credit to Intro.
Code:
Durable armour: 38,2-5,9,1,1,1
Cedric Armour: 39,2-5,9,1,1,1
Executioner Armour: 40,2-5,9,1,1,1
Pirate Armour: 551,3-5,9,1,1,1
Silent Walker: 561,3-5,9,1,1,1
Captaian Armour: 571,2-5,9,1,1,1
Trigger hat: 661,2,9,1,1,1
Bomber Armour: 661,3-5,9,1,1,1
Bourgoise Armour: 776(hat),676,3-5,9,1,1,1
Fairy armour:445,3-5,9,1,1,1 551,2 (hat)
Joker Armour: 561,2(hat),461,3-5,9,1,1,1
Mistic Armour: 465,3-5,9,1,1,1,565(hat)
Black Cross Backshield: 770,6,9,1,1,1
White School Girl: 187,3&5,9,1,1,1
Black School: 181,3&5,9,1,1,1
Dolphin: 769,6,9,1,1,1
Kerokero Umbrella: 768,6,9,1,1,1
Thor's Bass Drum: 767,6,9,1,1,1
Elementary School Bag: 766,6,9,1,1,1
Astrot Pink Wing: 764,6,9,1,1,1
Astrot White Wing: 763,6,9,1,1,1
Astrot Silver Wing: 762,6,9,1,1,1
Cart Racer Vest: 130,2-5,9,1,1,1
Blue Santa: 180,3-5,9,1,1,1
GM Suit: 151,2-5,9,1,1,1
Nobel Lord: 132,2-5,9,1,1,1
Magic School Hat: 824,2,9,1,1,1
Angel Hat: 825,2,9,1,1,1
Kerokero Hat: 826,2,9,1,1,1
Headband: 827,2,9,1,1,1
Yukata: 188,3,9,1,1,1
Trendy Swim Suit: 182,3,9,1,1,1
pRose soccer: 174,3,9,1,1,1
NArose soccer: 173,3,9,1,1,1
jRose soccer: 172,3,9,1,1,1
kRose soccer: 171,3,9,1,1,1
rose soccer: 170,3,9,1,1,1
Yellow Rubber Boots: 182,5,9,1,1,1
Wooden Shoes: 183,5,9,1,1,1
White Magic School Shoes: 188,5,9,1,1,1
Durable Gloves: 38,4,9,1,1,1
White magic school gloves: 186,4,9,1,1,1
Cherry Blossem Glasses: 166,1,9,1,1,1
Snow Board: 37,9,9,1,1,1
Goblin Hatchet: 150,8,9,1,1,1
Reams Puricator: 182,8,9,1,1,1
Pink Guitar: 462,8,9,1,1,1
Angel Recorder: 463,8,9,1,1,1
Rose Beuque: 464,8,9,1,1,1
blue santa hat: 823,2,9,1,1,1
Pigtail ribbon: 833,2,9,1,1,1
Students cap: 834,2,9,1,1,1
White lion: 835,2,9,1,1,1
Chef hat: 836,2,9,1,1,1
Summer school look: 189,3,9,1,1,1
tiger backshield: 246,6,9,1,1,1
snowball: 326,10,9,1,1,1
firecracker: 930,10,9,1,1,1
(2,376,3rd job helmit,soldier
(3,376,3rd job armour,soldier
(4,376,3rd job gloves,soldier
(5,376,3rd job boots,soldier
(2,476,3rd job helmit,muse
(3,476,3rd job armour,muse
(4,476,3rd job gloves,muse
(5,476,3rd job boots,muse
(2,576,3rd job helmit,Dealer
(3,576,3rd job armour,Dealer
(4,576,3rd job gloves,Dealer
(5,576,3rd job boots,Dealer
(2,676,3rd job helmit,Hawker
(3,676,3rd job armour,Hawker
(4,676,3rd job gloves,Hawker
(5,676,3rd job boots,Hawker
--------9.0----------Problems and Errors
Server Side
1.) How do I change the EXP, DROP, ZULY rate?
Solution: Inside the worldserver.conf are options to change the rates.
2.) How do I change the Welcome Message when I login?
Solution: You can change the Welcome message inside the worldserver.conf
3.) My WorldServer.exe keeps crashing!
Solution: You are missing some files, or you compiled it wrong. Re-extract the files, or if you compiled, check your sources again.
4.) When I try to connect with Navicat, it says it can't connect to MySQL!
Solution: You need to install MySQL. Download here: MySQL 5.0
Client Side
1.) When I launch my client, it just crashes with the error "Send/Don't Send"!
Solution: Run "TriggerDetect.exe" and fill out your graphics settings (only need to do this once)
2.) After I type in my account and password and click login, and stays at "Logging in" forever!
Solution: Make sure you have the launcher file set to your correct IP. And check your .confs and make sure the IP's are correct (your WAN IP).
3.) All my IP's are correct, but I still can't login!
Solution: You need to port forward your Rose Online ports. Go to PortForward.com - Free Help Setting up Your Router or Firewall and find your router, it will instruct you on how to port forward.
The ports you need to forward are: 29000, 29100, 29200
If your using the multi world, you need to forward: 29000, 29100, 29200, 29101, 29201
4.) When I try to login, I get "The Servers are currently undergoing maintenance"
Solution: Make sure your using the latest Rose EVO client and server files, and your ports or forwarded and that you have applied the GameGuard patch (new at 4/28/07) after your last client update.
5.) After I select the server, it says "Loading Avatar Selection.." forever!
Solution: Make sure your have port forwarded.
The ports are: 29000, 29100, 29200.
Web Server Side
1.) When I type "http://localhost" , nothing shows up and xampp_start.exe is running!
Solution: You need to port forward a port. Go to PortForward.com - Free Help Setting up Your Router or Firewall and find your router, it will instruct you on how to port forward.
The ports you need to forward are: 80
2.) I installed PHP, and Xampp, and port forwarded and "http://localhost" still isn't working!
Solution: Restart your computer and your router
3.) On the Rose Online Web, I fill in the details to make my account, and I click "Create" but it doesn't create the account!
Solution: Go back inside the config file and double check to make sure your database settings are absolutely correct.
4.) How can I allow other people to see my website, instead of "http://localhost" ?
Solution: Port forward the port "80" and instead of "http://localhost", use your WAN IP (which you can find here: http://whatismyip.org ).
For example: "http://localhost" http://yourwanip
--------10.0----------Notes
- I believe I have credited anyone that I used information from, if not please PM me and I will add it.
- Please do not add me on MSN or Spam my PM box, I will not help you over an Instant Messaging program. Just post here and I will help you.
- If you have anything you would like to add to this, please PM it to me and I'll be sure to add it in!
- If you find something that is incorrect inside this guide, please post here or PM me and I will fix it right away.
- If any of the links go dead, let me know and I'll re-upload them.
- I will ALWAYS update the links once a new update comes.
All these files are for the newest version which is ver 141, and everything works with the newest 141 client! Even the new drops. Once a new release (client/server) is released, I will update the links and you can check the update information that I will post in every edit below.
If the guide is a bit confusing for you, let me know and I'll try and make it easier. At the moment I'm going through and trying to make the SQL part a bit easier for you to understand.
Thank you, and hope this helps lots of people.
Reply With Quote