Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Release] MRS DLL for Programmers

Reverse Engineer
Joined
Mar 19, 2007
Messages
879
Reaction score
37
MRSDLL.dll is an easy way for all programmers to be able to access the MAIET
 
Skilled Illusionist
Joined
Jul 19, 2007
Messages
329
Reaction score
0
omg T6 i think this is ur best work ever
thank you fore sharing ur work
very nice job
 
Elite Diviner
Joined
Aug 27, 2007
Messages
410
Reaction score
118
how do i encrypt thr MRS files with this??
anyways thanks
 
Newbie Spellweaver
Joined
Feb 20, 2008
Messages
88
Reaction score
0

Is this a new version or something really diff.? And a new idea : Make an editor to edit .DLL files <3.
 
Supreme Arcanarch
Loyal Member
Joined
Dec 21, 2006
Messages
957
Reaction score
0

Is this a new version or something really diff.? And a new idea : Make an editor to edit .DLL files <3.

I'm inclined to think you have no idea what a DLL is.

Anyway, since the C++ code given in his example was a little botched and a little hard to read, I made a simple little project showing how to implement the DLL in C++ (using Visual Studio 2005, not sure if it'll work in 2008, I doubt it in a way).

Code:
#include <windows.h>
#include <iostream>
using namespace std;

typedef bool (__stdcall* _OpenMRSFile)(char* MRSFileName);
typedef bool (__stdcall* _CloseMRSFile)();
typedef int (__stdcall* _GetFileCount)();
typedef char* (__stdcall* _GetFileName)(int Index);

int main(int argc, char* argv[])
{
    _OpenMRSFile OpenMRSFile;
    _CloseMRSFile CloseMRSFile;
    _GetFileCount GetFileCount;
    _GetFileName GetFileName;
    HINSTANCE hInst = LoadLibrary(TEXT("MRSDLL.dll"));

    OpenMRSFile = (_OpenMRSFile)GetProcAddress(hInst, "OpenMRSFile");
    CloseMRSFile = (_CloseMRSFile)GetProcAddress(hInst, "CloseMRSFile");
    GetFileCount = (_GetFileCount)GetProcAddress(hInst, "GetFileCount");
    GetFileName = (_GetFileName)GetProcAddress(hInst, "GetFileName");

    if(OpenMRSFile("model.mrs"))
    {
        for(int i = 0; i < GetFileCount(); i++)
        {
            cout << "file " << i << ": " << GetFileName(i) << "\n";
        }

        CloseMRSFile;
    }

    return 0;
}

Opens model.mrs and shows all the files in it. Simple enough.
 
Reverse Engineer
Joined
Mar 19, 2007
Messages
879
Reaction score
37
Thanks RoA, a little note to C++ users, when putting a full path use double backslashes.

Example Wrong: C:\IJJI\Gunz\system.mrs
Example Right: C:\\IJJI\\Gunz\\system.mrs
 
Master Summoner
Joined
Oct 3, 2007
Messages
527
Reaction score
2
T6 Ur my idol still xD. finally been waiting for another of your releases =)\

But i still don't get how to use it
 
Reverse Engineer
Joined
Mar 19, 2007
Messages
879
Reaction score
37
It's for programmers to be able to open, extract, view mrs files.
 
Newbie Spellweaver
Joined
Aug 15, 2007
Messages
51
Reaction score
0
what it is do?? i didnt understood..
and how i can use it?
 

war

Banned
Banned
Joined
Feb 10, 2007
Messages
236
Reaction score
0
Just a note to everyone. This is really not a thread to read if your not into programming.
ThievingSix is kind enough to provide us with a very usefull, basic source to unpack an .mrs file.
The goal of this release is to get people like me to get and extend the source, build an eviroment around it, and especialy getting things off the to-do list. If you really want to help, I suggest you learn the basic of programming the source, which lies in C++.

Learn C++:
 
Master Summoner
Joined
Jun 1, 2007
Messages
531
Reaction score
1
I'm inclined to think you have no idea what a DLL is.

Anyway, since the C++ code given in his example was a little botched and a little hard to read, I made a simple little project showing how to implement the DLL in C++ (using Visual Studio 2005, not sure if it'll work in 2008, I doubt it in a way).

Code:
#include <windows.h>
#include <iostream>
using namespace std;

typedef bool (__stdcall* _OpenMRSFile)(char* MRSFileName);
typedef bool (__stdcall* _CloseMRSFile)();
typedef int (__stdcall* _GetFileCount)();
typedef char* (__stdcall* _GetFileName)(int Index);

int main(int argc, char* argv[])
{
    _OpenMRSFile OpenMRSFile;
    _CloseMRSFile CloseMRSFile;
    _GetFileCount GetFileCount;
    _GetFileName GetFileName;
    HINSTANCE hInst = LoadLibrary(TEXT("MRSDLL.dll"));

    OpenMRSFile = (_OpenMRSFile)GetProcAddress(hInst, "OpenMRSFile");
    CloseMRSFile = (_CloseMRSFile)GetProcAddress(hInst, "CloseMRSFile");
    GetFileCount = (_GetFileCount)GetProcAddress(hInst, "GetFileCount");
    GetFileName = (_GetFileName)GetProcAddress(hInst, "GetFileName");

    if(OpenMRSFile("model.mrs"))
    {
        for(int i = 0; i < GetFileCount(); i++)
        {
            cout << "file " << i << ": " << GetFileName(i) << "\n";
        }

        CloseMRSFile;
    }

    return 0;
}
Opens model.mrs and shows all the files in it. Simple enough.

so for system.mrs is...

Code:
#include <windows.h>
#include <iostream>
using namespace std;

typedef bool (__stdcall* _OpenMRSFile)(char* MRSFileName);
typedef bool (__stdcall* _CloseMRSFile)();
typedef int (__stdcall* _GetFileCount)();
typedef char* (__stdcall* _GetFileName)(int Index);

int main(int argc, char* argv[])
{
    _OpenMRSFile OpenMRSFile;
    _CloseMRSFile CloseMRSFile;
    _GetFileCount GetFileCount;
    _GetFileName GetFileName;
    HINSTANCE hInst = LoadLibrary(TEXT("MRSDLL.dll"));

    OpenMRSFile = (_OpenMRSFile)GetProcAddress(hInst, "OpenMRSFile");
    CloseMRSFile = (_CloseMRSFile)GetProcAddress(hInst, "CloseMRSFile");
    GetFileCount = (_GetFileCount)GetProcAddress(hInst, "GetFileCount");
    GetFileName = (_GetFileName)GetProcAddress(hInst, "GetFileName");

    if(OpenMRSFile("system.mrs"))
    {
        for(int i = 0; i < GetFileCount(); i++)
        {
            cout << "file " << i << ": " << GetFileName(i) << "\n";
        }

        CloseMRSFile;
    }

    return 0;
}
 
Reverse Engineer
Joined
Mar 19, 2007
Messages
879
Reaction score
37
so for system.mrs is...

Code:
#include <windows.h>
#include <iostream>
using namespace std;

typedef bool (__stdcall* _OpenMRSFile)(char* MRSFileName);
typedef bool (__stdcall* _CloseMRSFile)();
typedef int (__stdcall* _GetFileCount)();
typedef char* (__stdcall* _GetFileName)(int Index);

int main(int argc, char* argv[])
{
    _OpenMRSFile OpenMRSFile;
    _CloseMRSFile CloseMRSFile;
    _GetFileCount GetFileCount;
    _GetFileName GetFileName;
    HINSTANCE hInst = LoadLibrary(TEXT("MRSDLL.dll"));

    OpenMRSFile = (_OpenMRSFile)GetProcAddress(hInst, "OpenMRSFile");
    CloseMRSFile = (_CloseMRSFile)GetProcAddress(hInst, "CloseMRSFile");
    GetFileCount = (_GetFileCount)GetProcAddress(hInst, "GetFileCount");
    GetFileName = (_GetFileName)GetProcAddress(hInst, "GetFileName");

    if(OpenMRSFile("system.mrs"))
    {
        for(int i = 0; i < GetFileCount(); i++)
        {
            cout << "file " << i << ": " << GetFileName(i) << "\n";
        }

        CloseMRSFile;
    }

    return 0;
}

You are correct unless the system.mrs isn't in the same folder that the DLL is in. I recommend full file paths such for the DLL and the MRS file.
 
Back
Top