On Fri, 8 June 2001 13:43, someone wrote:

I finally got the ship in bmp format. How did i do that? I downloaded infranview (which in my opinion is the best converter out there) and reformatted the png image from a moray to bmp format. Then i had to size it right so it was not to huge and then i doctored it a bit. I also download the ship rotator (which uses the 256 color). But by default what size of ship (in pixels) should i have.

One more thing where in the dat file do i edit the bmp?

The first part of your question is easy:

In theory any square size will work (if the dat is configured properly), in practice:

Scout 32x32
Destroyer 40x40
Cruiser 40x40
Battleship 64x64
Dreadnought 48x48
Starbase 80x80
Freighter 56x56

As for the second part of your question: this can be very tricky unless you understand how it all works together. Let's walk through it. We'll start with the entry in the .dat file (I'm using FirstContact.dat for my example).

ship bitmaps {
#INCLUDE sf_bmp_ships.sec([race]=Arcean,  [nr]=0, [r]=a)
#INCLUDE sf_bmp_ships.sec([race]=Terran,  [nr]=1, [r]=t)
#INCLUDE sf_bmp_ships.sec([race]=Drengin, [nr]=2, [r]=d)
#INCLUDE sf_bmp_ships.sec([race]=Pirate,  [nr]=3, [r]=p)
}

Which tells us we need to look at the sf_bmp_ships.sec file. Fortunately, this one is nicely documented:

**************************** bitmap sections *******************************
*
* class : Bitmap class
* name : Bitmap name.  Used as a default in case object has no name
* file  : Bitmap filename without the .bmp and without the path
* nF    : Number of frames in bitmap.  Frame 0 starts at bottom of bmp
*         and frame nF-1 is at the top.
* Sz    : Size of the bitmap.  Used for collision detection in the game.
*         Saturn is a good example of why you would want to specify this
*         parameter at all.
* seqT  : Sequence type: time - Continuous cycle from frame 0 to frame nF-1
*                               and starting back at frame 0 again.
*                        spin - use frame that corresponds to ship heading.
* tc    : Transparent color.  0 for black.  Use something like 10 to set
*         all pixels darker than RGB 10:10:10 transparent.
* alpha : Alpha factor.  100 sets all pixels to their full brightness.  50
*         is 50% brightness.  0 is completely black.
****************************************************************************
*  class   race        name                file      nF   Sz   seqT   tc alpha
*  ---------------------------------------------------------------------------
#IF [race] != Pirate
   ship    [race]      Scout[nr]           sf-[r]-sc 36   32   spin    0   100
   ship    [race]      Destroyer[nr]       sf-[r]-ds 36   40   spin    0   100
   ship    [race]      Cruiser[nr]         sf-[r]-cr 36   40   spin    0   100
   ship    [race]      Battleship[nr]      sf-[r]-bs 36   64   spin    0   100
   ship    [race]      Dreadnought[nr]     sf-[r]-dn 36   48   spin    0   100
   ship    [race]      Starbase[nr]        sf-[r]-sb 36   80   time    0   100
   ship    [race]      Freighter[nr]       sf-[r]-fr 36   56   spin    0   100
#ENDIF
#IF [race] == Pirate
   ship    [race]      Destroyer[nr]       sf-[r]-rd 36   40   spin    0   100
#ENDIF

OK, here goes.  The server reads the .dat file, and finds #INCLUDE sf_bmp_ships.sec([race]=Arcean,  [nr]=0, [r]=a), so it loads sf_bmp_ships.sec, replaces every instance of [race] with Arcean, every instance of [nr] with 0 and every [r] with a.  The result is:

IF Arcean != Pirate
   ship    Arcean      Scout0           sf-a-sc 36   32   spin    0   100
   ship    Arcean      Destroyer0       sf-a-ds 36   40   spin    0   100
   ship    Arcean      Cruiser0        sf-a-cr 36   40   spin    0   100
   ship    Arcean      Battleship0      sf-a-bs 36   64   spin    0   100
   ship    Arcean      Dreadnought0     sf-a-dn 36   48   spin    0   100
   ship    Arcean      Starbase0        sf-a-sb 36   80   time    0   100
   ship    Arcean      Freighter0       sf-a-fr 36   56   spin    0   100
#ENDIF
#IF Arcean == Pirate
   ship    Arcean      Destroyer0       sf-a-rd 36   40   spin    0   100
#ENDIF

Then the logic is evaluated.  != is Not Equals, so this would be reduced to:

*  class   race        name                file      nF   Sz   seqT   tc alpha
*------------------------------------------------
   ship    Arcean      Scout0           sf-a-sc 36   32   spin    0   100
   ship    Arcean      Destroyer0       sf-a-ds 36   40   spin    0   100
   ship    Arcean      Cruiser0        sf-a-cr 36   40   spin    0   100
   ship    Arcean      Battleship0      sf-a-bs 36   64   spin    0   100
   ship    Arcean      Dreadnought0     sf-a-dn 36   48   spin    0   100
   ship    Arcean      Starbase0        sf-a-sb 36   80   time    0   100
   ship    Arcean      Freighter0       sf-a-fr 36   56   spin    0   100

The file names for the Arcean fleet are therefore sf-a-sc.bmp ... sf-a-fr.bmp.  The name field must be unique, which is why the race numbers are appended to them.

Now that the server is done for the Arceans, just go through the same process for each of the other races.

-Jason Kane