Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Rohan
You last visited: Today at 06:05

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



> Rohan PServer Ask & Answer Thread <

Discussion on > Rohan PServer Ask & Answer Thread < within the Rohan forum part of the MMORPGs category.

Reply
 
Old 05/13/2014, 01:59   #16
 
elite*gold: 0
Join Date: Nov 2008
Posts: 18
Received Thanks: 2
Quote:
Originally Posted by Dr.Dr.SheldonLeeCooper View Post
Which one ?
From client 08292012 and this scripts:

C# moemet
Code:
 static void Main(string[] args)
        {
          
            string _srcGel = "D:\\NexusRohan\\res\\world.gel";// edit this part
            string _srcGem = "D:\\NexusRohan\\res\\world.gem";// edit this part
            string _srcDest = "D:\\GelGemExtract\\world\\";// edit this part

            using (FileStream fsGel = new FileStream(_srcGel, FileMode.Open, FileAccess.Read))
            {
                using (BinaryReader brGel = new BinaryReader(fsGel))
                {
                 
                    int m_ID = brGel.ReadInt32();
                    int m_Version = brGel.ReadInt32();
                    int m_MaxAllocFileNum = brGel.ReadInt32();
                    int m_MissingFileSize = brGel.ReadInt32();
                    int m_Reserved = brGel.ReadInt32();
                    int m_Reserved1 = brGel.ReadInt32();

                    int _pos = 0;
                   
                    while (brGel.BaseStream.Position < brGel.BaseStream.Length  )
                    {
                        int i1 = brGel.ReadInt32();
                        int i2 = brGel.ReadInt32();
                        byte[] filename =  brGel.ReadBytes(128);
                        int i3 = brGel.ReadInt32();
                        int startOffset = brGel.ReadInt32();
                        int dataSize = brGel.ReadInt32();
                        int i6 = brGel.ReadInt32();
                        using (FileStream fsGem = new FileStream(_srcGem, FileMode.Open, FileAccess.Read))
                        {
                            using (BinaryReader brGem = new BinaryReader(fsGem))
                            {
                                string _s1 = Encoding.UTF8.GetString(filename);
                                _s1 = _s1.Substring(0, _s1.IndexOf("\0"));

                                if (!_s1.EndsWith(".gbf"))
                                {
                                    int _spos1 = _s1.LastIndexOf("\\");
                                    string _pth = _srcDest + _s1.Substring(0, _spos1);
                                    if (!System.IO.Directory.Exists(_pth))
                                    {
                                        System.IO.Directory.CreateDirectory(_pth);
                                    }
                                }
                                string _result = _srcDest + _s1;
                                
                                brGem.BaseStream.Seek(startOffset, SeekOrigin.Begin);
                                if (dataSize > 0)
                                {
                                    using (FileStream fsDest = new FileStream(_result, FileMode.Append, FileAccess.Write))
                                    {
                                        using (BinaryWriter bw = new BinaryWriter(fsDest))
                                        {
                                            bw.Write(brGem.ReadBytes(dataSize));
                                            Console.WriteLine("writing :" + _result + "\n");
                                        }
                                    }
                                }
                                
                                
                            }
                        }
                        _pos += 1;
                    }
                }
        
            }
        }

C++ Xentax
Code:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>

struct GELHeader
{
   int i1;
   int i2;
   int numberOfElements;
   int i4;
   int i5;
   int i6;

   void print()
   {
      //printf( "i1 = %d\n", i1 );
      //printf( "i2 = %d\n", i2 );
      printf( "numberOfElements = %d\n", numberOfElements );
      //printf( "i4 = %d\n", i4 );
      //printf( "i5 = %d\n", i5 );
      //printf( "i6 = %d\n", i6 );
      printf( "\n" );
   }
};

struct GELEntry
{
   int i1;
   int i2;
   char filename[128];
   int i3;
   int startOffset;
   int dataSize;
   int i6;

   void print()
   {
      //printf( "i1 = %d\n", i1 );
      //printf( "i2 = %d\n", i2 );
      printf( "filename = %s\n", filename );
      //printf( "i3 = %d\n", i3 );
      printf( "startOffset = %d\n", startOffset );
      printf( "dataSize = %d\n", dataSize );
      //printf( "i6 = %d\n", i6 );
      printf( "\n" );
   }
};

// Set this to the .GEL file that you want to extract
std::string srcGel = "F:\\Paker\\animation.gel";
// Set this to the .GEM file that matches the .GEL file you want to extract
std::string srcGem = "F:\\Paker\\animation.gem";
// This is the path where all the files will be extracted to
std::string destPath = "F:\\Paker\\Animation\\";

int iiii = 0;
/*
char hextoascii(char a, char b)
{
char hex[5], *stopper;
hex[0] = '0';
hex[1] = 'x';
hex[2] = a;
hex[3] = b;
//hex[4] = '0';
return strtol(hex, &stopper, 16);

}
*/
int main()
{
   FILE* gelFP;
   gelFP = fopen(srcGel.c_str(), "rb" );

   if( gelFP )
   {
      FILE* gemFP;
      gemFP = fopen(srcGem.c_str(), "rb" );

      if( gemFP )
      {
         GELHeader gelHeader;
         fread( &gelHeader, sizeof( GELHeader ), 1, gelFP );
         //gelHeader.print();
        printf("Extracting Files: \n");
         for( int i=0; i<gelHeader.numberOfElements; i++ )
         {
            GELEntry gelEntry;
            fread( &gelEntry, sizeof( GELEntry ), 1, gelFP );
            //gelEntry.print();
            printf( "\b\b\b\b\b\b\b%d", i + 1 );

            if( gelEntry.dataSize > 0 )
            {
               // Create the file
               std::string sFilename = gelEntry.filename;
               size_t pos = sFilename.find_last_of( "\\" );

               std::string path = sFilename.substr( 0, pos + 1 );
               std::string filename = sFilename.substr( pos + 1, sFilename.length() - pos );
               //printf( "Path = %s\nFile = %s\n", path.c_str(), filename.c_str() );

               std::string newPath = destPath;
               newPath.append( path );
               CreateDirectory( newPath.c_str(), NULL );

               // Detect GTX files (DDS files with the header changed and the extension changed
               pos = filename.find_last_of( "." );
               //printf( "pos = %d\n", pos );
               std::string ext = filename.substr( pos + 1, filename.length() - pos - 1 );
               //printf( "ext = %s\n", ext.c_str() );

               if( ext.find( "gtx" ) != std::string::npos )
               {
                  //printf( "Found GTX file!\n" );
                  char* data = (char*)malloc( gelEntry.dataSize );
                  fseek( gemFP, gelEntry.startOffset, 0 );
                  fread( data, gelEntry.dataSize, 1, gemFP );
                  printf("%d",gelEntry.startOffset);
                  if( data[0] == 'G' && data[1] == 'E' && data[2] == 'O' )
                  {
                     // Most gtx files are DDS files with the "Magic Word" changed to GEO.  We change that here, before
                     // writing the file
                     filename.replace( pos + 1, 3, "tga" );
                     std::string fullPath = newPath;
                     fullPath.append( "\\" );
                     fullPath.append( filename );
                     //data[0] = hextoascii('0','0');
                     //data[1] = hextoascii('0','0');
                     //data[2] = hextoascii('0','a');
                     //data[0] = NULL;
                     //data[1] = NULL;
                     //data[2] = NULL;


                     FILE* outFP;
                     outFP = fopen(fullPath.c_str(), "wb" );
                     if( outFP )
                     {
                        fwrite( data, gelEntry.dataSize, 1, outFP );
                        fclose( outFP );
                     }
                  }
                  else if( data[0] == 'D' && data[1] == 'D' && data[2] == 'S' )
                  {
                     // Sometimes, DDS files have the proper header in them
                     filename.replace( pos + 1, 3, "dds" );
                     std::string fullPath = newPath;
                     fullPath.append( "\\" );
                     fullPath.append( filename );

                     FILE* outFP;
                     outFP = fopen(fullPath.c_str(), "wb" );
                     if( outFP )
                     {
                        fwrite( data, gelEntry.dataSize, 1, outFP );
                        fclose( outFP );
                     }
                  }
                  else
                  {

                     // Haven't come across this yet, but just in case, we'll know.
                     printf( "\n" );
                     printf( "Encountered UNKNOWN GTX file!\n" );
                     printf( "%c %c %c\n", data[0], data[1], data[2] );
                     printf( "\n" );
                  }

                  free( data );
               }
               else
               {
                  std::string fullPath = newPath;
                  fullPath.append( "\\" );
                  fullPath.append( filename );

                  FILE* outFP;
                  outFP = fopen(fullPath.c_str(), "wb" );
                  if( outFP )
                  {
                     void* data = malloc( gelEntry.dataSize );
                     fseek( gemFP, gelEntry.startOffset, 0 );
                     fread( data, gelEntry.dataSize, 1, gemFP );
                     fwrite( data, gelEntry.dataSize, 1, outFP );
                     free( data );
                     fclose( outFP );
                  }
               }
            }
         }

         printf( "\n\nProcess Completed\n\n" );
         fclose( gemFP );
      }

      fclose( gelFP );
   }

   return 0;
}

RoHan Tool from this thread:


and this quick bms script:

Code:
#quickbms script
#Rohan Gem Extractor
#from chrrox

open FDDE GEM 0
open FDDE GEL 1

get id longlong 1
get files long 1
goto 0x18 1
savepos Tablepos 1
for i = 1 to files
    goto Tablepos 1
    get FILENUM long 1
    get UNKSIZE long 1
    getdstring name 0x80 1
    get DUMMYSIZE long 1
    get offset long 1
    get UNK01 long 1
    get UNK02 long 1
    if i < files
    savepos Tablepos 1
    savepos temp 1
    math temp + 0x8C
    goto temp 1
    get size long 1
    math size - offset
    else
    get size asize
    math size - offset
    endif
        log name offset size
next i
I want to extract files to get spawns in forgotten fortress and get upper and lower gratt!
imarin is offline  
Old 05/14/2014, 10:49   #17
 
DevParanoid's Avatar
 
elite*gold: 23
Join Date: Jun 2013
Posts: 113
Received Thanks: 32
Question

Hi, i have a problem with my server.
There's a time that my Server is Auto Prison all characters. Idk what is the possible problem of that, Can you help me Rito?
DevParanoid is offline  
Old 05/14/2014, 15:34   #18

 
Dr.Dr.SheldonLeeCooper's Avatar
 
elite*gold: 33
The Black Market: 100/0/2
Join Date: Jan 2011
Posts: 2,693
Received Thanks: 456
Quote:
Originally Posted by DevParanoid View Post
Hi, i have a problem with my server.
There's a time that my Server is Auto Prison all characters. Idk what is the possible problem of that, Can you help me Rito?

I bet you changed Server Time while the Server was running ?
Dr.Dr.SheldonLeeCooper is offline  
Old 05/15/2014, 11:02   #19
 
DevParanoid's Avatar
 
elite*gold: 23
Join Date: Jun 2013
Posts: 113
Received Thanks: 32
Problem

I don't think so. It never change. I will try to change my CMOS Battery. Thanks!
DevParanoid is offline  
Old 05/15/2014, 13:44   #20

 
Dr.Dr.SheldonLeeCooper's Avatar
 
elite*gold: 33
The Black Market: 100/0/2
Join Date: Jan 2011
Posts: 2,693
Received Thanks: 456
Quote:
Originally Posted by DevParanoid View Post
I don't think so. It never change. I will try to change my CMOS Battery. Thanks!
Well, maybe your VMware Time canged or BIOS Time ^^
Got the same Problem some Time ago also.

Hope it works gl m8
Dr.Dr.SheldonLeeCooper is offline  
Thanks
1 User
Old 05/15/2014, 15:40   #21
 
DevParanoid's Avatar
 
elite*gold: 23
Join Date: Jun 2013
Posts: 113
Received Thanks: 32
Again

Anyway, i have problem with my nprotect GG.
when i change DownloadFlag nation from US to TH
and ServerGroup

it can't get the character list it always said Getting Character List.
my login address is
DevParanoid is offline  
Old 05/15/2014, 18:56   #22

 
Dr.Dr.SheldonLeeCooper's Avatar
 
elite*gold: 33
The Black Market: 100/0/2
Join Date: Jan 2011
Posts: 2,693
Received Thanks: 456
Quote:
Originally Posted by DevParanoid View Post
Anyway, i have problem with my nprotect GG.
when i change DownloadFlag nation from US to TH
and ServerGroup

it can't get the character list it always said Getting Character List.
my login address is
Change the Nation from Regedit also from TH to US.
Make the same on SQL also, then it shoud work
Dr.Dr.SheldonLeeCooper is offline  
Old 05/16/2014, 13:17   #23
 
dedeernet's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 34
Received Thanks: 5
Quote:
Originally Posted by Dr.Dr.SheldonLeeCooper View Post
Hello Guys,

since many People ask tons of Questions about PServer i made a Thread about it.
I will try to Post here some Helpfull Tools & Tipps for everyone who wanna Start a Rohan Server.

Would be nice if other Developers help here also, so im not alone to answer all Questions since im not anymore at PC 24/7

So dont make new Threads, everyone can search here for some Answers. Much better & faster way then use the "Search" Button. Just Read this Topic and be Happy

how to edit time TSB?
dedeernet is offline  
Old 05/16/2014, 17:16   #24
 
elite*gold: 0
Join Date: Mar 2014
Posts: 16
Received Thanks: 1
im looking for a private server
with good starting items
and
decent rates
probably a still new server and still growing

i've tried
ion rohan 2 (but this pserver closed good server though)
renaisannce rohan
wootszie is offline  
Old 05/16/2014, 17:37   #25

 
Dr.Dr.SheldonLeeCooper's Avatar
 
elite*gold: 33
The Black Market: 100/0/2
Join Date: Jan 2011
Posts: 2,693
Received Thanks: 456
Quote:
Originally Posted by wootszie View Post
im looking for a private server
with good starting items
and
decent rates
probably a still new server and still growing

i've tried
ion rohan 2 (but this pserver closed good server though)
renaisannce rohan
Like i said.
We gonna Start our Server next Days

We Post it here when we are rdy
Dr.Dr.SheldonLeeCooper is offline  
Thanks
1 User
Old 05/17/2014, 02:25   #26
 
elite*gold: 0
Join Date: Mar 2014
Posts: 16
Received Thanks: 1
Quote:
Originally Posted by Dr.Dr.SheldonLeeCooper View Post
Like i said.
We gonna Start our Server next Days

We Post it here when we are rdy
nice

just want to ask this are you gonna have a hero skill or not???
wootszie is offline  
Old 05/17/2014, 12:55   #27
 
maikleBT1's Avatar
 
elite*gold: 0
Join Date: Aug 2013
Posts: 147
Received Thanks: 27
I need Any Tool to convert GameEffect.bin if there any one can help me
maikleBT1 is offline  
Old 05/17/2014, 18:14   #28
 
asmodeus812's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 200
Received Thanks: 23
Just out of curiosity where is stored the data from honorable kills / points and etc the table i mean . I tried to look for it but didn't find it !
Would be great if you tell me i would like to try something !
asmodeus812 is offline  
Old 05/18/2014, 00:26   #29
 
Ishtaria's Avatar
 
elite*gold: 0
Join Date: Oct 2013
Posts: 1,164
Received Thanks: 855
Quote:
Originally Posted by maikleBT1 View Post
I need Any Tool to convert GameEffect.bin if there any one can help me
I'm not entirely sure there's anything in there that's really worth editing. I looked into making graphical effects for other armours and costumes (like the tsb champ armour and ignited spirit armour) but there's more to it than just gameeffect. There's a definite lock/link to the item's specific ID number so if you have a similar idea to me, you will have to look elsewhere I'm afraid.
Ishtaria is offline  
Old 05/18/2014, 16:56   #30

 
Dr.Dr.SheldonLeeCooper's Avatar
 
elite*gold: 33
The Black Market: 100/0/2
Join Date: Jan 2011
Posts: 2,693
Received Thanks: 456
Quote:
Originally Posted by wootszie View Post
nice

just want to ask this are you gonna have a hero skill or not???
No, we dont have Hero Skills.
Max Cap will be 100 & newest iRohan Client without Hero Skillbar & many other cool Stuff
Dr.Dr.SheldonLeeCooper is offline  
Reply


Similar Threads Similar Threads
Allgemeiner Thread für Rohan | Main Rohan Thread
08/01/2010 - Rohan - 0 Replies
Deutsch Da ein bisschen Ordnung von Nöten ist,erstelle ich dieses Thema. Hier könnt ihr über alles reden,was mit Rohan zu tun hat ohne das ihr einen neuen Thread mit (z.B."mini" Fragen..)erstellen müsst. Es gibt in diversen anderen Foren auch diese Threads und dort Funktionieren sie sehr gut.(Metin2,Wolfteam,Crossfire,Fly for Fun..) In jeder so wie in dieser Sektion auch gelten die Board + Signature Rules. Board + Signature Rules



All times are GMT +2. The time now is 06:05.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.