 Control Arena   WarBirds.

 WB   :
  -  0x02	
    - .
       .
  - Big endian,   Little endian,   IBM PC.
  - short int.

       .
  - CRC     .
  :

struct wb_packet
{
	unsigned char header = 0x02;
	short int offset;
	unsigned char *data_segment[offset];
	unsigned char CRC;
}

  :

struct data_segment
{
	short int packet_type;
	unsigned char *data_p[offset-2];
}


  :


0x0000 ################################################################

:		0x0000
:	FE->HOST
:	      ( )
:
0x0000 tkLOGIN(String[0x14],String[0x14])

{
	char len1; /*   */
	char login[len1];
	char len2; /*   */
	char password[len2];
}


0x0001 ################################################################

:		0x0001
:	HOST->FE
:	      
		 (  )
:
0x0001 tkLOGIN_RESPONSE(char,String[0x80])

{
	char b1 = 0x01;
	char b2 = 0x00;
}

             :
{
	char b1 = 0x00;
	char b2 = strlen(message);
	char *message = "Invalid Member Id or Password";
}


0x0002 ################################################################

:		0x0002
:	FE->HOST
:	    .
:
{
	char len1; /*   */
	char login[len1]; /*  */
	unsigned int = 0;
	unsigned arena_id; /*     b4   0x0007 */
	short int zero = 0; /* 2  */
}


0x0003 ################################################################

:		0x0003
:	HOST->FE
:	       
:
{
	char b1 = 0x01; /*      */
	char len1; /*   */
	char login[len1]; /*  */
	long int login_idx; /*     DB (2.7.6)*/
	char strlen(message1); /*   */
	char *message1;
	char strlen(message2); /*   */
	char *message2 = "Ticket Valid"; /*      */
	char strlen(host1); /*        (2.7.6) */
	char *host1; /*   (2.7.6) */
	short int port1; /*    (2.7.6) */
	char strlen(host2); /*      (2.7.6) */
	char *host2; /*    (2.7.6) */
	short int port2; /*   (2.7.6) */
}

  message1    strlen(message1) = 0.
   .
       .
port2, host2   < 256
port1, host1    256
    host2
   2.7.6       2.7.6

 message1, host1    .


0x0004 ################################################################

       FE   .
      .

:		0x0004
:	FE->HOST
:	      .   
		    id    .
:
{
	char len1; /*   */
	char login[len1]; /*  */
	long int ent_count; /*        0x0005     */
	long int login_idx; /*        ( 0x0005) */
}

ent_count   .       
.
login_idx -    .        
 .         
  .         
 .   FE   0x0005.  
     .      
     .
   iEN   = 6      .

0x0005 ################################################################

:		0x0005
:	HOST->FE
:	     FE.
:
{
	char len1; /*   */
	char login[len1]; /*  */
	unsigned int ent_count; /*      */
	unsigned int login_idx; /*        */
	unsigned int arena_id; /* arena id */
	char len2;
	char hostname[len2]; /*     */
	sort int port1;	/* 2  hex    FE 0-65355 */
}

login_idx  :
0x78d1 -  aike (aike01)
0x8cf5 -  nino (xarcun71)
0x8f30 -  antvrp (antver53)

login_idx        IMOL.
  aike    ,
nino -  .
antvrp -  .

 ent_count    .
    .

   2           
12 .
0x3869
0x3a78

    
0x039c
0x03a4
0x0db1

       :

	char strlen(login);
	char *login;
	zero[6] = 0x00; /*    */
	unsigned short int = 0x78d1; /* login idx */
	b3 = 0x00;
	b4 = 0x00;
	b5 = 0x00;
	b6 = 0x5e;   /*   */
	char strlen(message);
	char *message;
	b7 = 0x00;
	b8 = 0x00;

message -       .


0x0007 ################################################################

:		0x0007
:	HOST->FE
:	  
:
{
	char len1; /*     */
	char arena_mnemonic[len1]; /*     (wbsamp, wbprac e.t.c */
	char len2;	/*    */
	char arena_name[len2]; /*    "Air Combat Arena" */
	
	long int  b4; /* arena unical idx */
	short int b5; /* Max Number of players */
	short int b7; /* Number of players */
	short int 0;
	char len2;
	char message[16];
	long int 0;
	long int 0;
	long int 0;
	long int 0;
}

 message = 0 (.  )     len2 = 0, 
  message   . ..  , 0 
    ,   long int 0.


+-----------------------------+----+----------+------+------+
|                             |Num | b4 ar_idx| b5   | b7   |
+-----------------------------+----+----------+------+------+
|Historical Arena	      	| 1  |0x0000007b|0x0190|0x0001|
|Main Arena                   | 46 |0x0000008c|0x0190|0x002e|
|Main Euro Arena              | 1  |0x0000005f|0x0190|0x0001|
|Practice & Dueling Aren      | 0  |0x00000052|0x0190|0x0000|
|Relaxed Realism	      	| 0  |0x00000053|0x0190|0x0000|
|SE Eurom Scenario            | 0  |0x00000061|0x0190|0x0000|
|Special Events ETO	      | 0  |0x00000056|0x0190|0x0000|
|Special Events Med	      | 0  |0x0000005a|0x0190|0x0000|
|Training Arena		      | 0  |0x00000076|0x0190|0x0000|
|WB Air Combat		      | 5  |0x00000010|0x0190|0x0005|
+-----------------------------+----+----------+------+------+


       HOST      .
  :


:		0x0007
:	HOST->FE
:	  
:
{
	char b1 = 0; /*     */
	char b2 = 0; /*    */
	long arena_idx = 0xffffffff;
	short int 0; /* Max Number of players */
	short int 0; /* Number of players */
	short int 0;
	char len2 0;
	long int 0;
	long int 0;
	long int 0;
	long int 0;
}



0x0011 ################################################################

:		0x0011
:	FE->HOST
:	     .  
		         
		 .
:
{
	char b_zero[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
		  /* 6   */
}


0x0012 ################################################################

   ,     .
     .

:		0x0012
:	HOST->FE
:	    .
:
{
	char b1 = 0x00;  /*  2   */
	char b2 = 0x00;
	char len1 = strlen(def);
	char *def = "Default";
}


0x001C ################################################################

     0x00 0x1c

:		0x001C
:	FE->HOST
:	    1  .
:
{
	char b_zero[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
	char len1;
	char salt[len]; /*  ASCII   */
	char len2;
	char arena_mnemonic[len2]; /*    (wbmainf),   0x0007 */
	char strlen(def);
	char *def = "Default";
}


0x001D ################################################################

   0x00 0x1d -    
 .

:		0x001D
:	HOST->FE
:	    1  .
:
{
	char b_zero[3] = {0x00, 0x00, 0x00}; /* 3  */
	char b1;
	char strlen(def);
	char *def= "Default"; 
	char b_zero[4] = {0x00, 0x00, 0x00, 0x00}; /* 4  */
	char len2;
	char cost[len2]; /*    "$ 1.99",    6  */
	char b_zero[4] = {0x00, 0x00, 0x00, 0x00}; /* 4  */
}

     b1       
*def.
+-------------+-----+------------+
|     |	b1  |	*def     |
+-------------+-----+------------+
|mainf		c7     Default   |
|wbhist		c7     Default   |
|wbtrai		c7     Default   |
|wbukscen	c7     Default   |
|wbukmain	c7     Default   |
|wbsemed	c7     Default   |
|wbseeto	c7     Default   |
|wbeasy		c7     Default   |
|wbprac		c7     Default   |
|wbsamp		00     FREE      |
+--------------------------------+

          
.


0x0300 ################################################################

:		0x0300
:	HOST->FE
:	ASCII      
:
{
	long destination; /* [channel 0x31 = 49, 0x67 = 103,  1- red, 2-green, 3-gold, 4-purple]; */
			/* CA - host's message */
			/* C7 - blue color */
			/* wbnickname */
	long source;
	char strlen(message); /*   */
	char *message; /*  */
}

 destination =  WB nickname,    
   nickname (PRIVAT CHANNEL)
source - wbnickname .


0x0301 ################################################################

:		0x0301
:	FE->HOST
:	  
:
{
	short int radio_number;	( 1 )
	short int radio_chanel; ( 1-99 )
}



0x0600 ################################################################

:		0x0600
:	FE->HOST
:	   ()    .
:
{
	char b1 = 0x01;	/*   */
	char strlen(data); /*   */
	char *data; /*  */
}
  HOST       
  FE


0x0601 ################################################################

:		0x0601
:	HOST->FE
:	HOST   FE   
:
{
	char b1; /*  ,     FE */
	char b2; /* 0 -  , 1 -   */
	long data;	/*    */
	long length; /*    */
}

      HOST   :

{
	char b1 = 0x01;
	char b2 = 0x01;	/* mean no banner */
	long data = 0;
	long length = 0;
}



0x0602 ################################################################

:		0x0602
:	FE->HOST
:	FE    0x0601   
:
{
	char b1 = 0x01; /*   HOST */
	char b2 = 0x00; /*   ,       FE */
	char b3 = 0x0a; /*   0x0a */
	long fragment; /*    (128  512) */
	long filelength; /*    */
	char len = strlen(info);
	char *info;
}


0x0603 ################################################################

:		0x0603
:	HOST->FE
:	HOST  FE        
		  .
:
{
	char b1 = 0x01; /*   */
	char strlen(info);
	char *info = "/apps/data/wb2/mainf/MOTD"; /*    */
	char strlen(dest);
	char *dest = "DISPLAY.TXT"; /*    */
	long = 10; /* ? */
	long = 512; /*       */
}


0x0605 ################################################################

:		0x0605
:	HOST->FE
:	HOST   ()  FE
:
{
	char b1 = 0x01; /*    HOST */
	char b2 = 0x02; /*   FE */
	long seq;	/*      */
	short int len; /*     */
	char data[len];
}


0x0606 ################################################################

:		0x0606
:	FE->HOST
:	FE    HOST   
:
{
	char b1 = 0x02; /*   FE */
	long seq; /*      */
}

0x0607 ################################################################

:		0x0607
:	HOST->FE
:	HOST       FE
:
{
	char b1 = 0x00;
	char b2 = 0x01;
	char strlen(filename);
	char *filename="DISPLAY.TXT"; /*   */
}



0x060a ################################################################

:		0x060a
:	FE->HOST
:	   .
:
{
	char strlen(banner); /*   */
	char *banner = "wbbanner.bmp"; /*  */
}


0x060b ################################################################

:		0x060b
:	HOST->FE
:	    .
:
{
	char b1 = 0x00; /*    0x000228a6 */
	char b2 = 0x02;
	char b3 = 0x28;
	char b4 = 0xa6;

	char b5 = 0x37; /*     */
	char b6 = 0x0a;
	char b7 = 0x1d;
	char b8 = 0x8f;

}
 b5- b8      FE   
.


0x0a00 ################################################################

:		0x0a00
:	FE->HOST
:	FE        .
:
{
	char strlen(login);
	char *login;
	char strlen(nickname);
	char *nickname;
}


0x0a01 ################################################################

:		0x0a01
:	HOST->FE
:	   nickname
:
{
	char b1 = 0x01;
	char b2 = 0x00;
}

 nickname    ( ,  , ..)
     .

{
	char b1 = 0x00;
	char b2 = strlen(message);
	char *message;
}

 message      nickname 
.


0x0e00 ################################################################

:	FE->HOST
:	    (FE)
:
{
   int TimeSerial;	/* times(tms)    1970 . -   */
   short int status	/* (0x0030 when in tower) */
   short int PlaneNo    /* 0x0001 means F6F(Same as ".plane xx") */
   int x; 	 x ( )
   int y;	 y ( )
   int z;	 z ( )
   short vx	   x (/)
   short vy	   y (/)
   short vz	   z (/)
   short dvx ' acceralation x
   short dvy ' acceralation y
   short dvz ' acceralation z
   short pitch	  ( 10*grad)   100 = 10 ,  -100 = -10 
   short bank	  (    )
   short yaw	 . 0 -  , 90 -  , 180 - , 270- .
   short v-pitch ' angular velocity pitch
   short v-bank ' angular velocity bank
   short v-yaw ' angular velocity yaw
}
 x,y,z data's are mesured by feet.
 Velocity data's are feet/sec.
 Angles are 0.1degree.
 Angular velocitys data are 0.1degree/sec.

 observer  gunner
0e00      FE
  .



0x0e01 ################################################################

:		0x0e01
:	FE->HOST
:	   (, , ,  ...)
:
{
	char b1 = 0xXX; /*       */
	char b2 = 0xXX;
	char b3 = 0xXX;
	char b4 = 0xXX;
	char b5 = 0xXX; /*    4  */
	char b6 = 0xXX;
	char b7 = 0xXX;
	char b8 = 0xXX;

}
   (hex). FE      4 .
 4     (   ).

 ()        | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 |
Gear on, engn. off.	      00   00   00   00   00   00   00   11
Gear on, engn. on.            00   00   00   00   00   00   00   10
Gear off, engn. on (flight)   00   00   00   00   00   00   00   00
Gear off, engn. off           00   00   00   00   00   00   00   01


0x0e02 ################################################################

:		0x0e02
:	HOST->FE
:	   ( ,   , ,    .  )
:
{
	long plane_damage;
	long plane_status;
}
   (hex)  plane_damage
      0.

 ()        | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 |

Eng1 killed                                  01
Eng2 killed                                  02
Eng3 killed                                  04
Eng4 killed                                  08
Eng1 leaking oil			     10
Eng2 leaking oil                             20
Eng3 leaking oil                             40
Eng4 leaking oil                             80
Elevator has gone			01
Horiz. stab has gone                    02
Rudder                                  04
Vert. stab has gone                     08
Left airleron				10
Right airleron                          20
Left fuel tank                          40
Right fuel tank                         80
Center fuel tank                   01
Rear fuss. missing		   02
Center fuss. destroid              04
Pilot armore is gone               08
Pilot killed                       10
Tail gun			   20
Nose gun                           40
Left gun                           80
Right gun                     01
Top gun                       02
Bottom gun                    04
Left wing		      08
Right wing		      10
Right landing gear	      20
Left landing gear	      40
Flaps			      80
:
     FE ( 4 ) 
        .
          
   FE.


0x0e04 ################################################################


:		0x0e04
:	FE->HOST
:	   observer (gunner e t c )
:
	{
		long int seq;	/* ? */
		long int status; /* ? */ /* short ?, short plane type */
	}



0x0e05 ################################################################


:		0x0e05
:	FE->HOST
:	  (   )
:
	{
		int seq;
		int x_coord;
		int y_coord;
		int z_coord;
		int x_speed;
		int y_speed;
		int z_speed;
	}

:
  0f00  FE     
   .
  ,    - 58(chute)
  0f01   .
    ,   :
	short int time_offset;
	char fe_id;
	short int dx;
	short int dy;
	short int dz;
	char tangaz = 0;
	char x_accel = 0;
	char vpitch = 0x80;
	char x_speed = 0xXX;
	char bank_angle = 0;
	char y_accel = 0;
	char angle_speed = 0x81
	char y_speed = 0xXX
	char yaw =  0;
	char z_accel = 0;
	char angle_speed = 0x80;
	char z_speed = 0xXX;

	

0x0f00 ################################################################


:		0x0f00
:	HOST->FE
:	    FE
		      .
:

struct {
	unsigned char xx; // -    FE database (0-31)
	unsigned long wb_nickname; //  WB nickname
	unsigned long int country; // 2=green
	unsigned long int plane; // plane type 40=b17f
	unsigned long int xx; // ??? damages=0 ???
}

   FE database       
0x0f01        .
      .
       
  WBnickname unsigned int = 0.
      FE.


0x0f01 ################################################################

:		0x0f01
:	HOST->FE
:	    
:

 4    -   .
   0x0f01     0x1104

struct {
	long int seq;	// sinhro time sequence (times(&tms))
	unsigned int x;	// global x
	unsigned int y;	// global y
	unsigned int z;	// global z

	unsigned char num1;	//   d<26,  0    

	struct {		// 21 bytes
		int dx;	// 2     ?
		char xx; //    FE db. ( 0x40 | id)
		short int dx;	// X diff from global
		short int dy;	// Y diff from global
		short int dz;	// Z diff from dlobal
		char tangaz;	// tangaz
		char x_accel;	// x access
		char vpitch;	// vpitch
		char x_speed;	// x speed
		char b_angle;	// bank angle
		char y_accel;	// y accell
		char angl_speed;	// angle speed
		char y_speed;	// y speed
		char yaw;	// yaw
		char z_accell;	// z accell
		char s_angle;	// angle speed
		char z_speed;	// z speed;
	} near_planes[num1];

	unsigned char num2;	//  0,        

	struct {		// 7 bytes planes d>26
		unsigned char plane_id; // plane id in FE DB */
		short int dxn;	// dxn = dx/9;
		short int dyn;	// dyn = dy/9;
		short int dzn;	// dzn = dz/9;
	} far_planes[num2];
}

:
   0f01   1104   .    
  .
         0f01   
 .     .
  ""   ""    d26(7800)
  .
17  ()   0f00
  :
x 0xFE17 (-488)
y 0xF31E (-3297)
z 0x0AC1 (2753)
distanse = sqrt(x*x+y*y+z*z) = 488*488+3297*3297+2753*2753=4323
   = 35448 (d118)
  .show   - ?
 ,    0f01,    1104
 - 4, .  1  0f01    4  1104.
2.5  (4*0.5+0.5)    .
        1+3 (2 ).
 55  
x 073b (1851)
y fd10 (-751)
z 00b5 (181)

sqrt(4022963)=2006

 = 55*100*3/2006 = 8.22

 40  
x 0433(1075)
y fbe7(-1048)
y ffe3(-28)

sqrt = 1501
 = 40*100*3/1501 = 8.00

    far  0f01
0320
fca6
ffa7

       near  0f01
1b43
e2df
fca6

        
   0f00 ( )   
  0f01.     1104. ..   
.
  <30d (near packet)     
  0f01  1104.

    29,   near
,  1104   .

 d10  (   HOST->FE)    0.5 .
 1104  .

:
 d<30  1104  .
   0f01.






       .
 d70   - 


0x0f02 ################################################################

:		0x0f02
:	HOST->FE
:	    (, , , 
		  .  )
:
{
	char b1 = [Plane ID];
	char b2 = 0xXX;
	char b3 = 0xXX;
	char b4 = 0xXX;
	char b5 = 0xXX;
	char b6 = 0xXX;
	char b7 = 0xXX;
	char b8 = 0xXX;
	char b9 = 0xXX

}
     0x0e01 (hex).
    FE  , -       
 .


0x0f05 ################################################################

:		0x0f05
:	HOST->FE
:	   


	unsigned char num;
	struct radar
	{
		short ?; /* ? */
		short global_x/1000; /* x */
		short global_y/1000; /* y */
		char country; /* country */
	};


0x0f06 ################################################################

   4   .fly

:		0x0f06
:	HOST->FE
:	   .fly
:
{
	char b1 = 00;
}


      .

0x1000 ################################################################

:		0x1000
:	FE->HOST
:	   
		(, , ,  , )
:
{
	char weapon_type:	/* weapon type */
	short weapon_arena_id;	/* temporeary weapon id in arena */
	long x_coord;		/* x, y, z, released coord */
	long y_coord;
	long z_coord;
	short vx;		/* x, y, z, starting speed */
	short vy;
	short vz;
	long type; /* ? */	/* ? */
	long wbname; /* packet wb name */
}



0x1002 ################################################################

:		0x1002
:	FE->HOST
:	     ().
		   ,  
		   ().
		     - count.
		     .
:
{
	long wbname; /* packet wb name */
	char count; /* number of hits */
	struct{
		char weapon_type; /* type of weapon */
		char hit_target; /* where was hited */
		short int velocity; /* bullet speed (ft/sec) */
	}
	hit [count];
}

  (weapon_type):

        case 0: // '\0'
            return (char *) "7.7mm_Type_92";

        case 1: // '\001'
            return "7.7mm_Type_89";

        case 2: // '\002'
            return "7.7mm_Type_89s";

        case 3: // '\003'
            return "7.7mm_Type_97";

        case 4: // '\004'
            return ".30Cal_M2";

        case 5: // '\005'
            return ".30Cal_M2s";

        case 6: // '\006'
            return ".30Cal_M2!";

        case 7: // '\007'
            return ".303_MkII";

        case 8: // '\b'
            return ".303_MkII_dual";

        case 9: // '\t'
            return ".303_MkII_quad";

        case 10: // '\n'
            return "7.9mm_MG15";

        case 11: // '\013'
            return "7.9mm_MG17";

        case 12: // '\f'
            return "7.9mm_MG17s";

        case 13: // '\r'
            return "7.9mm_MG81J";

        case 14: // '\016'
            return "7.9mm_MG81Z";

        case 15: // '\017'
            return "7.6mm_ShKAS";

        case 16: // '\020'
            return "7.6mm_ShKASs";

        case 17: // '\021'
            return "7.6mm_Breda";

        case 18: // '\022'
            return "7.6mm_Bredas";

        case 19: // '\023'
            return "12.7mm_Ho-103";

        case 20: // '\024'
            return "12.7mm_Ho-103s";

        case 21: // '\025'
            return "M2_.50";

        case 22: // '\026'
            return "M2_.50s";

        case 23: // '\027'
            return "M2_.50_dual";

        case 24: // '\030'
            return "M2_.50_quad";

        case 25: // '\031'
            return "12.7mm_UBS";

        case 26: // '\032'
            return "12.7mm_UBSs";

        case 27: // '\033'
            return "12.7mm_Breda";

        case 28: // '\034'
            return "12.7mm_Bredas";

        case 29: // '\035'
            return "13mm_MG131";

        case 30: // '\036'
            return "13mm_MG131s";

        case 31: // '\037'
            return "MG151/20";

        case 32: // ' '
            return "MG151/20s";

        case 33: // '!'
            return "MG/FF_20mm";

        case 34: // '"'
            return "20mm_Type_99_MkI";

        case 35: // '#'
            return "20mm_Type_99_MkII";

        case 36: // '$'
            return "Hispano_20mmMkII";

        case 37: // '%'
            return "Hispano_20mmMkV";

        case 38: // '&'
            return "AN-M2_20mm";

        case 39: // '\''
            return "Ho-5_20mm";

        case 40: // '('
            return "20mm_ShVAK";

        case 41: // ')'
            return "20mm_ShVAKs";

        case 42: // '*'
            return "20mm_b20";

        case 43: // '+'
            return "20mm_cannon";

        case 44: // ','
            return "Ho-5!!";

        case 45: // '-'
            return "23mm_Vya";

        case 46: // '.'
            return "23mm_NS-2";

        case 47: // '/'
            return "MK108_30mm";

        case 48: // '0'
            return "37mm_M4";

        case 49: // '1'
            return "37mm_Flak 18";

        case 50: // '2'
            return "37mm_NS-37";

        case 51: // '3'
            return "37mm_auto";

        case 52: // '4'
            return "40mm_Vickers";

        case 53: // '5'
            return "Hispano_MkI";

        case 54: // '6'
            return "20mm_M1";

        case 55: // '7'
            return "57mm_Molins";

        case 56: // '8'
            return "75mm_T13E1";

        case 57: // '9'
            return "M10_4.5_in_Rocket";

        case 58: // ':'
            return "5_in_HVAR";

        case 59: // ';'
            return "3_in_HE_RP";

        case 60: // '<'
            return "3_in_AP_RP";

        case 61: // '='
            return "WGr21_Rocket";

        case 62: // '>'
            return "R4M 55mm_Rocket";

        case 63: // '?'
            return "RS-82_Rocket";

        case 64: // '@'
            return "RS-132_Rocket";

        case 65: // 'A'
            return "100lb_GP";

        case 66: // 'B'
            return "250lb_GP";

        case 67: // 'C'
            return "500lb_GP";

        case 68: // 'D'
            return "1000lb_GP";

        case 69: // 'E'
            return "1600lb_GP";

        case 70: // 'F'
            return "2000lb_GP";

        case 71: // 'G'
            return "4000lb_GP";

        case 72: // 'H'
            return "500lb_AP";

        case 73: // 'I'
            return "1000lb_AP";

        case 74: // 'J'
            return "1600lb_AP";

        case 75: // 'K'
            return "2000lb_AP";

        case 76: // 'L'
            return "30lb_Frag";

        case 77: // 'M'
            return "60lb_ParaFrag";

        case 78: // 'N'
            return "Cluster(us)";

        case 79: // 'O'
            return "250lb_skip";

        case 80: // 'P'
            return "500lb_skip";

        case 81: // 'Q'
            return "50Kg_GP";

        case 82: // 'R'
            return "100Kg_GP";

        case 83: // 'S'
            return "250Kg_GP";

        case 84: // 'T'
            return "500Kg_GP";

        case 85: // 'U'
            return "800Kg_GP";

        case 86: // 'V'
            return "1000Kg_GP";

        case 87: // 'W'
            return "2000Kg_GP";

        case 88: // 'X'
            return "250Kg_AP";

        case 89: // 'Y'
            return "500Kg_AP";

        case 90: // 'Z'
            return "800Kg_AP";

        case 91: // '['
            return "1000Kg_AP";

        case 92: // '\\'
            return "15Kg_Frag";

        case 93: // ']'
            return "15Kg_ParaFrag";

        case 94: // '^'
            return "cluster_(jap)";

        case 95: // '_'
            return "100Kg_skip";

        case 96: // '`'
            return "250Kg_skip";

        case 97: // 'a'
            return "100lb_Frag";

        case 98: // 'b'
            return "50Kg_Frag";

        case 114: // 'r'
            return "Paratrooper";

        case 122: // 'z'
            return ".45";

        case -107: 
            return "flak!";

        case -108: 
            return "flak!!";

        case -109: 
            return "flak!!!";

        case -110: 
            return "40mm_ack";

        case -111: 
            return "20mm_ack";

        case -112: 
            return ".50_ack";

        case -113: 
            return "25mm_ack";

        case -115: 
            return "Torpedo!!!!";



  (hit_target):

	0	eng1
	1	eng2
	2	eng3
	3	eng4
	4	oil_eng1
	5	oil_eng2
	6	oil_eng3
	7	oil_eng4
	8	elev
	9	Hstab
	10	rudder
	11	Vstab
	12	Laileron
	13	Raileron
	14	Lfuel
	15	Rfuel
	16	Cfuel
	17	Rfuselage
	18	Cfuselage
	19	Pilot_Armor
	20	Pilot
	21	tailgun
	22	nosegun
	23	left_gun
	24	right_gun
	25	top_gun
	26	bottom_gun
	27	l_wing
	28	r_wing
	29	Rgear
	30	Lgear
	31	Flaps

0x1003 ################################################################

:		0x1003
:	FE->HOST
:	     .
		   ,  
		   ().
		     - count.
		     .
:
{
	shotr object_id; /* object id */
	char count; /* number of hits */
	struct{
		char weapon_type; /* type of weapon */
		char hit_target; /* where was hited */ /0x00 - hole target */
		short int velocity; /* bullet speed (ft/sec) */
	}
	hit [count];
}



0x1004 - wpWEAPON_HIT_BADGUY(char,long,short,char,long,short)
0x1004 ################################################################

:		0x1004
:	FE->HOST?
:	     .
:
{
	char weapon; /* weapon type id */
	long wb_nickname; /* packet wb nickname - who get damage*/
	short int;
	char ;		/* damage */
	long weapon_id;	/* weapon object id */
	short heavy;	/* lethality */
}


0x1005 wpWEAPON_HIT_OBJECT(char,short,short,long,short)
0x1005 ################################################################

:		0x1005
:	FE->HOST?
:	     .
:
{
	char weapon; /* weapon type id */
	short object_id; /* object id in WB map */
	shor val;	/* ? */
	long weapon_object_id;
	short velocity;
}



0x1009 ################################################################

:		0x1009
:	HOST->FE, FE->HOST
:	   
		  HOST  FE 
:
{
	unsigned int;
	char fe_id;
}



0x1104 ################################################################

:		0x1104
:	HOST->FE
:	    ().
:
{
	long server_time;
}

    ,     
  .
     ,   
  .
         500
(500  -  1    WB)


0x1107 ################################################################

:		0x1107
:	HOST->FE, FE->HOST
:	        
		  .
:
{
	short position;
	short ammoload;
}

           .
 (position)    0  6.
Request   .
        .
         .
  position   < 0.
       .


0x1109 ################################################################

:		0x1109
:	HOST->FE
:	      
:
{
	short position;
	int ammoload;
}

      .
      1107     
1109   .


0x110a ################################################################

:		0x110a
:	HOST->FE
:	     .
:
{
	char 0x3d; /* constant */
	char 0x01; /* constant */
	char list[60]; /*    */
			/*   0x00  0x01 */
}


0x1200 ################################################################

:		0x1200
:	HOST->FE
:	   .
		        
		   . (    
		0x1e02).      .show
		    1        .
:
{
	long radar_alt; /* 300 - radaralt */
	long = mapflags; /*  0x00000340        */
	long planerangelimit; /* 21000 */
	long enamyidlim; /* 9000 */
	long friendlyidlim; /* 21000 */
	long = 100 /* ammomult in 100 = 1.0, 50 = 0.5 */
	short int maxpilotg; /* 11 */

	long x_wind; /* 0 */
	long y_wind; /* 0 */
	long z_wind; /* 0 */

	char structlim; /* 3 */
	char b40 = 0x5a; /* char */	/* 90 */
	char b41 = 0x28; /* char */	/* 40 */
	char b42 = 0x28; /* char */	/* 40 */
	char b43 = 0x00; /* char */    	/* AirCombat = 1 , if set to 1 Alt-V works */

	long fueldiv; /* FUELDIV. 1.0 = 100, 0.5 = 500, 0.01 = 1 */
	long flackmax; /* 30000 */
	long radarrange0; /* 30 */
	long radarrange1; /* Red radar range ft. */
	long radarrange2; /* Green radar range ft. */
	long radarrange3; /* Gold radar range ft. */
	long radarrange4; /* Purp radar range ft. */

	char b72 = 0x55; /* char */ /* 85 */
	char b73 = 0x55; /* char */ /* 85 */
	char b74 = 0x00; /* char */ /* 0 */
	char b75 = 0x01; /* char */ /* 1 */
}



0x1201 ################################################################

:		0x1201
:	HOST->FE
:	   .       .
		        .
:
{
	char hour; /*  0x0b = 11  */
	char min; /*  0x20 = 32  */
	char 0x06;
}


0x1202 ################################################################

:		0x1202
:	HOST->FE
:	  CV .
:
{
	short array; /* 0, 1, 2, 3 */
	int	x_coord;
	int	y_coord;
	int	z_coord;
}

      1203.   
  1203.
array -    CV  .    1  4.


0x1203 ################################################################

:		0x1203
:	HOST->FE
:	  CV .
:
{
	short array; /* 0, 1, 2, 3 */
	int	id_obj1;
	int	id_obg2;
	int	x_coord1;
	int	y_coord1;
	int	z_coord1;

	int	x_coord2
	int	y_coord2
	int	z_coord2
}

  1202    x_coord2, y_coord2, z_coord2.
    id_obj1, id_obj2  ,     id .
      id     .
   ,    .


0x1206 ################################################################

:		0x1206
:	HOST->FE
:	    .
:
{
	unsigned short field = [Field -1]; /*     */
	unsigned long country = [Country]; /*      */
}



0x1207 ################################################################

:		0x1207
:	HOST->FE
:	      
		(,    ..,  ).
:
{
	short int target_number; /* id  */
	char status; /* 0 -  1 - , 2, 3, 4, - ? */
	char b2 = country;
}

         4.    
    , 0  1. ?
    10  1207.
   10 ,     10 .


0x1209 ################################################################

:		0x1209
:	FE->HOST
:	    .
:
{
	char b1 = 0xXX; /* 0x00 */
	char b2 = 0xXX; /* 0x00 */
	short int target_number&0x00ff;
}
      id .

0x120a ################################################################

      .fly

:		0x120a
:	HOST->FE
:	   .fly
		     
		(  )
:
{                 	Test arena	History Arena  Main Arena

	unsigned int b1;  (   )
	unsigned int b2;  (   )
}


0x1b00 ################################################################

      .fly

:		0x1b00
:	HOST->FE
:	   .fly
		       .
		   FE  CRC.

:
{						
	long;
	long;
	long;
	long;
	char b13 = strlen(string);
	char *string = "misc.bin";
}


0x1d00 ################################################################

:		0x1d00
:	HOST->FE
:	       
:
{
	char strlen(message); /*   */
	char *message = "COPYRIGHT (C) 1997 IMAGIC ONLINE ,all rights reserved ";
	/*  */
	unsigned int = WBRELEASE; /* 270000 = 2.70, 272000 = 2.72 */
	unsigned int = WBRELEASE; /* 270000 = 2.70, 272000 = 2.72 */
	char len1; /*   */
	char nick[len1]; /*    ( )*/
	char len2;
	char arena_m[len2]; /*    (   .tex 
				.trn     WB */
				/*       */
}


0x1d01 ################################################################

:		0x1d01
:	FE->HOST
:	    0x1d 0x00 .
:
{
	char strlen(message); /*   */
	char *message = "COPYRIGHT (C) 1997 IMAGIC ONLINE ,all rights reserved ";
	/*  */
	unsigned int = 0;
	unsigned int = 0;
	unsigned int = WBRELEASE; /* 270000 = 2.70, 272000 = 2.72 */
}


     (  )


  
  4      .
:
1e01
1b00
120a
0f06


0x1e01 ################################################################

:		0x1e01
:	HOST->FE
:	 FE    .   
		     () .
:
{

	long country; /* 1 -red, 2-green, 3- gold, 4 purple */
	short int field;  /* field */
	short int 0x00;
	short int 0x01;   /* bullet radius  1= 0.1 ft, 10 = 1 ft ...*/ 
	short int 0x01;   /* bullet radius */
	short int 0x01;   /* bullet radius */
	short int = 0x01; /* bullet radius */
	short int = 0x00;
	short int = 0x00;
	short int = 0x00;
	char zero = 0x00;
	char zero = 0x00;
	long int = 0x00;
	long int = Flight_status; /* 0x05b8 */
			 /*      
				  0  1 */
	long int = 0x00; /* flight position 0 - pilot, 1 - left gunner, 2 0 right ... */
	long int = 0x00;  /* pilot mode, 0 - pilot, 2 - observer */
	long int fuel = [Fuel - in %];
	long int convergence;
	long int start_altitude; /*   2  */
	long int = 0x03; /* 0-3 */    runway
	short int = 0x00;
	short int plane_type; /* exactly plane type */
	long int = 0x00;
	char b65 = 0x01; /* Number array */
	{
		char = 0x00;
		long int = 0x00
		char ordinacy;
		long int = 0x00;
		short int = 0x00;
	}

  long Flight_Status
      ( 1    0 )
0x00000001 EASYFLIGHT
0x00000002 COUNTERS
0x00000004 ENAMYNAMES
0x00000008 ENAMYPLANES
0x00000010 MIDAIRS
0x00000020 BLACKOUT
0x00000080 AIRSHOWSMOKE




0x1e02 ################################################################

:		0x1e02
:	HOST->FE, FE->HOST
:	   .
		 FE    ,   HOST 
		 ,   .
:

	short int = flight_exit_status;
	short int = field;
	short int = used_bullets;
	short int = hit_bullets;
}


    .
   HOST      ,
   .
   flight_exit_status:
0x0001 -   ()
0x0002 -   
0x0003 -  
0x0004 -  .     ,
	     .  
	,   
0x0005 -    
0x0006 -  
0x0007 -  ,  
0x0008 - Ditch
0x0009 - 
0x000a -  
0x000b -  
0x000c -  , ,    .

 field     used_bullets     
      AMMOMULT*2,  hit_bullets  
        AMMOMULT*2.



0x1e03 ################################################################

:		0x1e03
:	HOST->FE
:	      .
:
{
	long country = [country, 1- red, 2-green, 3-gold, 4-purple];
	char b5 = 0x00;
	char b6 = 0x00;
	char b7 = 0x20; /*   */ 0x00 /*  HQ.        */
	char b8 = [Field-1]; /*   1 = 0, 9  = 8 */
}


0x1e04 ################################################################

:		0x1e04
:	HOST->FE
:	    .
		   ,   .
:
{
	long = Start_1000_id;	/*  ,   
				1000   .
				       
				  .
				      + 256 
				 */

	long = PlaneType;

	long fuel;

	long 0x00000000;

	long convergence;

	long Country;

	long wbpack_nickname;

	long 0x00000000;
}


0x1e08 ################################################################

:		0x1e08
:	FE->HOST
:	    
:

	short int = 0;


0x1e09 ################################################################

:		0x1e09
:	HOST->FE
:	      
:

	short int = 0;
	char sizeof(SquadArray);
	{
		long wb_nickname;
		long permission;
	}[SquadMember];
	char strlen(SquadName);
	char SquadName[];
	char strlen(SquadHandle);
	char SquadHandle[];


permisions:
0 - none
1 - Only Remove, Rename, Change
2 - Only invite 
3 - all


0x1e0f ################################################################

:		0x1e0f
:	HOST->FE
:	  
:
{
	char ArrayLength = 0x01;
	{
		char b1 = MedalType;
		char b2 = Reason;
		long b3 = 0x374f52e8; /* date */
		short b4 = Value;
	}
	
	short 0x0003;
	char strlen[Medal_Name]; 
	char *Medal_Name;
}

MedalType:
1 - GrandCross
2 - Order of Falcon
3 - Silver Star
4 - Air Combat Cross
5 - Air Combat Medal

Reason
1 - Streak
2 - Kill in a tour of duty
3 - Carreer kill
4 - Kill in a sortie
5 - Bomb streak
6 - structure destroid in a toure of duty
7 - Carreer structure destroid
8 - Field Capture

Value - value for reason.


#######################################################################
  
#######################################################################
    WB     .  
 FH.
         (co_pilot) 
         (fly_position)
     struct map_define p_client.
     :

0 - observer
1 - tail gunner 
2 - nose gunner
3 - left gunner
4 - right gunner
5 - top gunner
6 - bottom gunner

        FE
.     

1.  1e14  (. ).
    mode
 long wb_nickname, short mode.

2.  1e11  (. ).
   (   )      
     .
          .
              .

3.  0f00  (. ).
     = 31 (   32)   ,
        .

4.  1e01  (. ).
     .
    ,       
 ".fly".
        .
             flight_flags
  flight_position       (0-6)
    (flight_mode)  "2"  "0"     
 ""  ( ).
          0e00 (. ),
        0e04  (. ).
   ""        
   .

5.         0x1e01       
 ( 0x0e04).    status (  
)    0x0030 (  ),     0x1109 (. ).
     AMMOLOAD   .

6.           (  
      ).      
  )
     0x1107 (. ).

          .

1. 1e02      "" .
2. 1e14      ()  mode = 0
3. 1e11 c "0"    .
           0e04.
       ,     1e01 ( )
    flight_mode  "0".



0x1e11 ################################################################

:		0x1e11
:	HOST->FE
:	   .exit (  . )
:
{
/*        */
	long int own_top_gunner;
	long int own_left_gunner;
	long int own_right_gunner;
	long int own_bottom_gunner;
	long int own_nose_gunner;
	long int own_tail_gunner;
	long int own_observer;

/*         */
	long int other_top_gunner;
	long int other_left_gunner;
	long int other_right_gunner;
	long int other_bottom_gunner;
	long int other_nose_gunner;
	long int other_tail_gunner;
	long int other_observer;
}

         
    .


0x1e14 ################################################################

:		0x1e14
:	HOST->FE
:	   .exit (  . )
		          
		   .
:
{
	long int wb_nickname; /*   ()   */
	short int mode;	/*      ,  ...) */
}

       
You have been attached to [nickname]
 
0x1e14
       [nickname]
 mode = 0x0002.

     mode = 0;
     .

  - 1e11


0x1e15 ################################################################

:		0x1e15
:	HOST->FE
:	   .
		 convergence, fuel & ordinance
:
{
	short s1 = 0xXXXX; /* Plane type */
	short s2 = 0xXXXX; /* Convergence 2 bytes (feet) 900ft = 900/3=300Yard*/
	short s3 = 0xXXXX; /* fuel in % */
	short s4 = 0xXXXX; /* ordinancy */
}


0x2100 ################################################################
SET_PARAMETERS

:		0x2100
:	HOST->FE
:	   .
		   1e01  .
:
{
	char b1 = 0xXX; /* 0x02 */ /* 0x02 */
	short s1 = 0xXXXX; /* 0x0dac (3500) */ /* 0x07d0 (2000) */
	short s2 = 0xXXXX; /* 0x000c (12) */ /* 0x0008 (8) */
	short s3 = 0xXXXX; /* 0x0064 (100) */ /* 0x0064 (100) */
	short s4 = 0xXXXX; /* 0x012c (300) */ /* 0x012c (300) */
	short s5 = 0xXXXX; /* 0x0064 (100) */ /* 0x0064 (100) */
	short s6 = 0xXXXX; /* 0x0064 (100) */ /* 0x0064 (100) */
	short s7 = 0xXXXX; /* 0x0064 (100) */ /* 0x0064 (100) */
	long l1 = 0xXXXXXXXX; /* 0x0000003a (58) */ /* 0x0000009e (158) */
}

  -3 (49 ),   Bf109E (10 )

0x2101 ################################################################
WEAPON_FIRED

:		0x2101
:	HOST->FE
:	 otto  .
:
{
	char b1 = 0xXX; /* weapon_id 0x17 (23) */
	short s1 = 0xXXXX; /* 0x0000 (0) */  
	long l1 = 0xXXXXXXXX; /* x coord (0x0006c295) */
	long l2 = 0xXXXXXXXX; /* y coord (0xfffbdc18) */
	long l3 = 0xXXXXXXXX; /* z coord (0x00000e2a) */
	short s2 = 0xXXXX; /* dx coord (0xfb8f) */
	short s3 = 0xXXXX; /* dy coord (0xfb61) */
	short s4 = 0xXXXX; /* dz coord (0xf4cb) */
	long l4 = 0xXXXXXXXX; /* 0x00040243*/
	long l5 = 0xXXXXXXXX; /* wb_nickname (0x340631da) */ 
}

char b1 - 0x0a    ( Bf110 ( 15))

#######################################################################
 
#######################################################################

0x7700 ################################################################

:		0x7700
:	FE->HOST
:	/ WBExt
:
{
	unsigned char enable; // 1 - enable 0 - disable
}

  ,    WBExt

0x7701 ################################################################

:		0x7701
:	FE->HOST
:	       
:
{
		char 0x00;
}

0x7702 ################################################################

:		0x7702
:	HOST->FE
:	   
		     0x7701
		       ,
		  ,  .
		     country 0
:
{
	char count; /* number of clients */
	struct{
		long wbname; /* packet wb name */
		char country; /* client country */
	}
	client_county_info [count];
}
