Carpathian
04-14-2008, 12:36 AM
myseqserver.ini
[File Info]
PatchDate=2/10/2008
[Port]
port=5555
[Memory Offsets]
ZoneAddr=0x949104
SpawnHeaderAddr=0x9BA3AC
CharInfo=0x92B150
TargetAddr=0x92B154
ItemsAddr=0x92B10C
TrackingListAddr=0x0
[SpawnInfo Offsets]
NextOffset=0x4
PrevOffset=0x8
LastnameOffset=0x38
XOffset=0x64
YOffset=0x68
ZOffset=0x6c
SpeedOffset=0x7c
HeadingOffset=0x80
NameOffset=0xA4
TypeOffset=0x125
SpawnIDOffset=0x0
LevelOffset=0x2d8
RaceOffset=0xe44
ClassOffset=0xe48
HideOffset=0x0
[GroundItem Offsets]
PrevOffset=0x00
NextOffset=0x04
IdOffset=0x08
DropIdOffset=0x0c
XOffset=0x34
YOffset=0x30
ZOffset=0x2c
NameOffset=0x38
You will also need to update the following two MySEQ-Server files.
MySEQ.server.h
#pragma once
#include "Common.h"
#include "IniReader.h"
#include "MemReader.h"
#include "NetworkServer.h"
#include "Debugger.h"
using namespace std;
class MainApp
{
private:
bool debug;
bool testeqgame;
IniReader iniReader;
NetworkServer netServer;
MemReader memReader;
Debugger debugger;
public:
MainApp(int argc, _TCHAR* argv[]);
void run();
};
MySEQ.server.cpp
#include "stdafx.h"
#include "MySEQ.server.h"
MainApp::MainApp(int argc, _TCHAR* argv[])
{
string arg;
if (argc > 1)
arg = argv[1];
debug = (arg == "debug");
testeqgame = (arg == "testeqgame");
if (argc >1 && !debug)
{
cout << " Usage: myseqserver (debug|testeqgame)" << endl;
cout << " debug - enter debug command line interface" << endl << endl;
cout << " testeqgame - enable myseqserver to work with test server executable" << endl << endl;
THROW_WARNING("Unknown parameter(s) '" << arg << "'");
}
}
void MainApp::run(void)
{
// Debug priviledges allow us to peek inside the EQ process.
memReader.enableDebugPrivileges();
if (debug)
{
// Debug server mode
iniReader.openFile("./myseqserver.ini");
memReader.openFirstProcess((testeqgame) ? "testeqgame" : "eqgame");
debugger.enterDebugLoop(&memReader, &iniReader);
}
else
{
// Normal server mode
while (1)
{
iniReader.openFile("./myseqserver.ini");
netServer.init(&iniReader);
netServer.openListenerSocket();
netServer.openClientSocket();
if ( memReader.openFirstProcess((testeqgame) ? "testeqgame" : "eqgame") )
{
netServer.enterReceiveLoop(&memReader);
// If the process was valid, but no longer valid, auto-shutdown the server.
if (!memReader.validateProcess(true))
{
cout << "MainApp: Process closed. Auto closing server." << endl;
break;
}
}
netServer.closeClientSocket();
netServer.closeListenerSocket();
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << "========================" << endl <<
" MySEQ Open v1.20.0 " << endl <<
"========================" << endl <<
"This software is covered under the GNU Public License (GPL)" << endl <<
"March 2007" << endl << endl;
try
{
MainApp app(argc, argv);
app.run();
}
catch (Exception e)
{
cout << e;
}
return 0;
}
Now, if you want to run MySEQ-Server on the test server, simply pass it the argument "testeqgame"
[File Info]
PatchDate=2/10/2008
[Port]
port=5555
[Memory Offsets]
ZoneAddr=0x949104
SpawnHeaderAddr=0x9BA3AC
CharInfo=0x92B150
TargetAddr=0x92B154
ItemsAddr=0x92B10C
TrackingListAddr=0x0
[SpawnInfo Offsets]
NextOffset=0x4
PrevOffset=0x8
LastnameOffset=0x38
XOffset=0x64
YOffset=0x68
ZOffset=0x6c
SpeedOffset=0x7c
HeadingOffset=0x80
NameOffset=0xA4
TypeOffset=0x125
SpawnIDOffset=0x0
LevelOffset=0x2d8
RaceOffset=0xe44
ClassOffset=0xe48
HideOffset=0x0
[GroundItem Offsets]
PrevOffset=0x00
NextOffset=0x04
IdOffset=0x08
DropIdOffset=0x0c
XOffset=0x34
YOffset=0x30
ZOffset=0x2c
NameOffset=0x38
You will also need to update the following two MySEQ-Server files.
MySEQ.server.h
#pragma once
#include "Common.h"
#include "IniReader.h"
#include "MemReader.h"
#include "NetworkServer.h"
#include "Debugger.h"
using namespace std;
class MainApp
{
private:
bool debug;
bool testeqgame;
IniReader iniReader;
NetworkServer netServer;
MemReader memReader;
Debugger debugger;
public:
MainApp(int argc, _TCHAR* argv[]);
void run();
};
MySEQ.server.cpp
#include "stdafx.h"
#include "MySEQ.server.h"
MainApp::MainApp(int argc, _TCHAR* argv[])
{
string arg;
if (argc > 1)
arg = argv[1];
debug = (arg == "debug");
testeqgame = (arg == "testeqgame");
if (argc >1 && !debug)
{
cout << " Usage: myseqserver (debug|testeqgame)" << endl;
cout << " debug - enter debug command line interface" << endl << endl;
cout << " testeqgame - enable myseqserver to work with test server executable" << endl << endl;
THROW_WARNING("Unknown parameter(s) '" << arg << "'");
}
}
void MainApp::run(void)
{
// Debug priviledges allow us to peek inside the EQ process.
memReader.enableDebugPrivileges();
if (debug)
{
// Debug server mode
iniReader.openFile("./myseqserver.ini");
memReader.openFirstProcess((testeqgame) ? "testeqgame" : "eqgame");
debugger.enterDebugLoop(&memReader, &iniReader);
}
else
{
// Normal server mode
while (1)
{
iniReader.openFile("./myseqserver.ini");
netServer.init(&iniReader);
netServer.openListenerSocket();
netServer.openClientSocket();
if ( memReader.openFirstProcess((testeqgame) ? "testeqgame" : "eqgame") )
{
netServer.enterReceiveLoop(&memReader);
// If the process was valid, but no longer valid, auto-shutdown the server.
if (!memReader.validateProcess(true))
{
cout << "MainApp: Process closed. Auto closing server." << endl;
break;
}
}
netServer.closeClientSocket();
netServer.closeListenerSocket();
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << "========================" << endl <<
" MySEQ Open v1.20.0 " << endl <<
"========================" << endl <<
"This software is covered under the GNU Public License (GPL)" << endl <<
"March 2007" << endl << endl;
try
{
MainApp app(argc, argv);
app.run();
}
catch (Exception e)
{
cout << e;
}
return 0;
}
Now, if you want to run MySEQ-Server on the test server, simply pass it the argument "testeqgame"