diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas
index e838a9b7fff87f34eaceee923c3dc387feb14fe1..b4612d3ec5cc8e7d676cc89ccac23d6f71d9066b 100644 (file)
--- a/src/game/g_netmsg.pas
+++ b/src/game/g_netmsg.pas
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*)
-{$MODE DELPHI}
+{$INCLUDE g_amodes.inc}
unit g_netmsg;
interface
for I := WP_FIRST to WP_LAST do
e_Buffer_Write(@NetOut, Byte(FWeapon[I]));
- for I := A_BULLETS to A_CELLS do
+ for I := A_BULLETS to A_HIGH do
e_Buffer_Write(@NetOut, FAmmo[I]);
- for I := A_BULLETS to A_CELLS do
+ for I := A_BULLETS to A_HIGH do
e_Buffer_Write(@NetOut, FMaxAmmo[I]);
for I := MR_SUIT to MR_MAX do
e_Buffer_Write(@NetOut, Byte(FPhysics));
e_Buffer_Write(@NetOut, Byte(FNoRespawn));
e_Buffer_Write(@NetOut, Byte(FJetpack));
+ e_Buffer_Write(@NetOut, FFireTime);
end;
g_Net_Host_Send(ID, True, NET_CHAN_PLAYER);
e_Buffer_Write(@NetOut, MonsterAmmo);
e_Buffer_Write(@NetOut, MonsterPain);
e_Buffer_Write(@NetOut, Byte(AnimIsReverse));
+ e_Buffer_Write(@NetOut, FFireTime);
end;
g_Net_Host_Send(ID, True, NET_CHAN_MONSTER);
for I := WP_FIRST to WP_LAST do
FWeapon[I] := (e_Raw_Read_Byte(P) <> 0);
- for I := A_BULLETS to A_CELLS do
+ for I := A_BULLETS to A_HIGH do
FAmmo[I] := e_Raw_Read_Word(P);
- for I := A_BULLETS to A_CELLS do
+ for I := A_BULLETS to A_HIGH do
FMaxAmmo[I] := e_Raw_Read_Word(P);
for I := MR_SUIT to MR_MAX do
FNoRespawn := e_Raw_Read_Byte(P) <> 0;
OldJet := FJetpack;
FJetpack := e_Raw_Read_Byte(P) <> 0;
+ FFireTime := e_Raw_Read_LongInt(P);
if OldJet and not FJetpack then
JetpackOff
else if not OldJet and FJetpack then
else
if gItems[ID].ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
- ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_AMMO_BACKPACK] then
+ ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER,
+ ITEM_AMMO_BACKPACK] then
g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON',
gItems[ID].Obj.X, gItems[ID].Obj.Y)
else
else
if gItems[ID].ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
- ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET] then
+ ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER] then
g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON',
gItems[ID].Obj.X, gItems[ID].Obj.Y)
else
MonsterAmmo := e_Raw_Read_LongInt(P);
MonsterPain := e_Raw_Read_LongInt(P);
AnimRevert := e_Raw_Read_Byte(P) <> 0;
+ FFireTime := e_Raw_Read_LongInt(P);
RevertAnim(AnimRevert);
if MonsterState <> MState then
e_Buffer_Write(@NetOut, gPlayer1Settings.Team);
g_Net_Client_Send(True, NET_CHAN_SERVICE);
+ g_Net_Flush(); // send immediately, there's no frames yet
end;
procedure MC_SEND_Chat(Txt: string; Mode: Byte);
e_Buffer_Write(@NetOut, Byte(NET_MSG_REQFST));
g_Net_Client_Send(True, NET_CHAN_SERVICE);
+ g_Net_Flush(); // send immediately, because loading
end;
procedure MC_SEND_CheatRequest(Kind: Byte);
procedure ResDataMsgToBytes(var bytes: AByte; const ResData: TResDataMsg);
var
ResultStream: TMemoryStream;
+ dummy: Word = $FFFE;
begin
ResultStream := TMemoryStream.Create;
+ ResultStream.WriteBuffer(dummy, 2); //dummy length
ResultStream.WriteBuffer(ResData.MsgId, SizeOf(ResData.MsgId)); //msgId
ResultStream.WriteBuffer(ResData.FileSize, SizeOf(ResData.FileSize)); //file size
ResultStream.WriteBuffer(ResData.FileData[0], ResData.FileSize); //file data
@@ -3007,11 +3016,13 @@ procedure MapDataMsgToBytes(var bytes: AByte; const MapDataMsg: TMapDataMsg);
var
ResultStream: TMemoryStream;
resCount: Integer;
+ dummy: Word = $FFFF;
begin
resCount := Length(MapDataMsg.ExternalResources);
ResultStream := TMemoryStream.Create;
+ ResultStream.WriteBuffer(dummy, 2); //dummy length
ResultStream.WriteBuffer(MapDataMsg.MsgId, SizeOf(MapDataMsg.MsgId)); //msgId
ResultStream.WriteBuffer(MapDataMsg.FileSize, SizeOf(MapDataMsg.FileSize)); //file size
ResultStream.WriteBuffer(MapDataMsg.FileData[0], MapDataMsg.FileSize); //file data