diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas
index 64377a61057e6bdb31f473bf08f0d88fd07a94b0..abc65a04102c45ca288b87fd6a2caeeac914fa00 100644 (file)
--- a/src/game/g_netmsg.pas
+++ b/src/game/g_netmsg.pas
function MH_RECV_PlayerPos(C: pTNetClient; P: Pointer): Word;
var
- Dir: Byte;
+ Dir, WeaponSelect: Byte;
PID: Word;
kByte: Word;
Pl: TPlayer;
NetTime := GT;
kByte := e_Raw_Read_Word(P);
Dir := e_Raw_Read_Byte(P);
+ WeaponSelect := e_Raw_Read_Byte(P);
if Direction <> TDirection(Dir) then
JustTeleported := False;
+
SetDirection(TDirection(Dir));
ReleaseKeys;
if LongBool(kByte and NET_KEY_OPEN) then PressKey(KEY_OPEN, 10000);
if LongBool(kByte and NET_KEY_NW) then PressKey(KEY_NEXTWEAPON, 10000);
if LongBool(kByte and NET_KEY_PW) then PressKey(KEY_PREVWEAPON, 10000);
+
+ if WeaponSelect <> 255 then
+ ForceWeapon(WeaponSelect);
end;
// MH_SEND_PlayerPos(False, PID, C^.ID);
kByte: Word;
Predict: Boolean;
strafeDir: Byte;
+ WeaponSelect: Byte = 255;
+ I: Integer;
begin
if not gGameOn then Exit;
if gPlayers = nil then Exit;
if isKeyPressed(KeyOpen, KeyOpen2) then kByte := kByte or NET_KEY_OPEN;
if isKeyPressed(KeyNextWeapon, KeyNextWeapon2) then kByte := kByte or NET_KEY_NW;
if isKeyPressed(KeyPrevWeapon, KeyPrevWeapon2) then kByte := kByte or NET_KEY_PW;
+ for I := 0 to High(KeyWeapon) do
+ if isKeyPressed(KeyWeapon[I], KeyWeapon2[I]) then
+ WeaponSelect := I;
end;
// fix movebutton state
P1MoveButton := P1MoveButton or (strafeDir shl 4);
e_Buffer_Write(@NetOut, gTime);
e_Buffer_Write(@NetOut, kByte);
e_Buffer_Write(@NetOut, Byte(gPlayer1.Direction));
+ e_Buffer_Write(@NetOut, WeaponSelect);
g_Net_Client_Send(True, NET_CHAN_PLAYERPOS);
//kBytePrev := kByte;