X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=b170097d80296ec8ad3b7c7ed96e0bea1b54ccb4;hb=33b5489206167c0a59571a488a2971b15a854d25;hp=f44e2113a2e45e99351cf381c53325cd588c1cab;hpb=e4eae2f8951ffc804d17cb23521b2b8096343e81;p=d2df-sdl.git diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index f44e211..b170097 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -16,8 +16,6 @@ {$INCLUDE ../shared/a_modes.inc} unit g_netmsg; -{.$DEFINE K8_XXX_WEAPON_DEBUG} - interface uses e_msg, g_net, g_triggers, Classes, SysUtils, md5; @@ -432,13 +430,12 @@ end; function MH_RECV_PlayerPos(C: pTNetClient; var M: TMsg): Word; var - Dir{, i}: Byte; - //WeaponSelect: Word; + Dir, i: Byte; + WeaponSelect: Word; PID: Word; kByte: Word; Pl: TPlayer; GT: LongWord; - newweapon: Byte; begin Result := 0; if not gGameOn then Exit; @@ -456,22 +453,13 @@ begin NetTime := GT; kByte := M.ReadWord(); Dir := M.ReadByte(); - //WeaponSelect := M.ReadWord(); - newweapon := M.ReadByte(); - if (newweapon <> CurrWeap) then - begin -{$IFDEF K8_XXX_WEAPON_DEBUG} - writeln('HOST PLRPOS: got: currweap=', CurrWeap, '; curfrm=', gTime, '; netweap=', newweapon, '; oldweap=', CurrWeap); -{$ENDIF} - //NetForceWeap := newweapon; - SetWeapon(newweapon); - end; + WeaponSelect := M.ReadWord(); //e_WriteLog(Format('R:ws=%d', [WeaponSelect]), MSG_WARNING); if Direction <> TDirection(Dir) then JustTeleported := False; SetDirection(TDirection(Dir)); - ReleaseKeysNoWeapon(); + ReleaseKeys; if kByte = NET_KEY_CHAT then begin @@ -486,10 +474,9 @@ begin if LongBool(kByte and NET_KEY_JUMP) then PressKey(KEY_JUMP, 10000); if LongBool(kByte and NET_KEY_FIRE) then PressKey(KEY_FIRE, 10000); 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 LongBool(kByte and NET_KEY_NW) then PressKey(KEY_NEXTWEAPON, 10000); + if LongBool(kByte and NET_KEY_PW) then PressKey(KEY_PREVWEAPON, 10000); - (* for i := 0 to 15 do begin if (WeaponSelect and Word(1 shl i)) <> 0 then @@ -498,7 +485,6 @@ begin QueueWeaponSwitch(i); end; end; - *) end; // MH_SEND_PlayerPos(False, PID, C^.ID); @@ -1082,8 +1068,7 @@ begin NetOut.Write(Frags); NetOut.Write(Death); - //NetOut.Write(CurrWeap); - NetOut.Write(Byte(CurrWeap)); + NetOut.Write(CurrWeap); // other flags ww := 0; @@ -2043,8 +2028,6 @@ begin Exit; end; gTime := GT; - if g_Game_IsClient and (gPlayer1.NetForceWeapFIdx >= gTime+5) then gPlayer1.NetForceWeapFIdx := 0; - if g_Game_IsClient and (gPlayer2 <> nil) and (gPlayer2.NetForceWeapFIdx >= gTime+5) then gPlayer2.NetForceWeapFIdx := 0; PID := M.ReadWord(); Pl := g_Player_Get(PID); @@ -2063,7 +2046,7 @@ begin TmpX := M.ReadLongInt(); TmpY := M.ReadLongInt(); - ReleaseKeysNoWeapon; + ReleaseKeys; if (kByte = NET_KEY_CHAT) then PressKey(KEY_CHAT, 10000) @@ -2096,7 +2079,6 @@ var OldJet: Boolean; NewTeam: Byte; ww: Word; - newweapon: Byte; begin PID := M.ReadWord(); Pl := g_Player_Get(PID); @@ -2143,16 +2125,7 @@ begin Frags := M.ReadLongInt(); Death := M.ReadLongInt(); - newweapon := M.ReadByte(); -{$IFDEF K8_XXX_WEAPON_DEBUG} - writeln('CLIENT PLRSTATS: got: currweap=', CurrWeap, '; curfrm=', gTime, '; netweap=', newweapon, '; lastnwfrm=', NetForceWeapFIdx); -{$ENDIF} - if (gTime >= NetForceWeapFIdx) then - begin - //NetForceWeap := newweapon; - SetWeapon(newweapon); - end; - //SetWeapon(M.ReadByte()); + SetWeapon(M.ReadByte()); // other flags ww := M.ReadByte(); @@ -2765,7 +2738,7 @@ var kByte: Word; Predict: Boolean; strafeDir: Byte; - //WeaponSelect: Word = 0; + WeaponSelect: Word = 0; I: Integer; begin if not gGameOn then Exit; @@ -2832,19 +2805,14 @@ begin end; if isKeyPressed(KeyFire, KeyFire2) then kByte := kByte or NET_KEY_FIRE; if isKeyPressed(KeyOpen, KeyOpen2) then kByte := kByte or NET_KEY_OPEN; - // do not send weapon switch keys, `MH_SEND_PlayerStats()` will send changed weapon anyway - if isKeyPressed(KeyNextWeapon, KeyNextWeapon2) and gPlayer1.isWeaponSwitchKeyReleased(-1) then gPlayer1.PressKey(KEY_NEXTWEAPON); //kByte := kByte or NET_KEY_NW; - if isKeyPressed(KeyPrevWeapon, KeyPrevWeapon2) and gPlayer1.isWeaponSwitchKeyReleased(-2) then gPlayer1.PressKey(KEY_PREVWEAPON); //kByte := kByte or NET_KEY_PW; + if isKeyPressed(KeyNextWeapon, KeyNextWeapon2) and gPlayer1.isWeaponSwitchKeyReleased(-1) then kByte := kByte or NET_KEY_NW; + if isKeyPressed(KeyPrevWeapon, KeyPrevWeapon2) and gPlayer1.isWeaponSwitchKeyReleased(-2) then kByte := kByte or NET_KEY_PW; for I := 0 to High(KeyWeapon) do begin if isKeyPressed(KeyWeapon[I], KeyWeapon2[I]) then begin gPlayer1.weaponSwitchKeysStateChange(i, true); - if gPlayer1.isWeaponSwitchKeyReleased(i) then - begin - gPlayer1.QueueWeaponSwitch(i); // all choices are passed there, and god will take the best - //WeaponSelect := WeaponSelect or Word(1 shl I); - end; + if gPlayer1.isWeaponSwitchKeyReleased(i) then WeaponSelect := WeaponSelect or Word(1 shl I); end else begin @@ -2864,18 +2832,10 @@ begin NetOut.Write(gTime); NetOut.Write(kByte); NetOut.Write(Byte(gPlayer1.Direction)); - NetOut.Write(Byte(gPlayer1.CurrWeap)); -{$IFDEF K8_XXX_WEAPON_DEBUG} - if (kByte and NET_KEY_FIRE) <> 0 then writeln('FIRE: CurrWeap=', gPlayer1.CurrWeap); -{$ENDIF} - //e_WriteLog(Format('S:nwp=%d; nwfidx=%d', [Integer(gPlayer1.NetForceWeap), Integer(gPlayer1.NetForceWeapFIdx)]), TMsgType.Warning); - //NetOut.Write(WeaponSelect); + NetOut.Write(WeaponSelect); //e_WriteLog(Format('S:ws=%d', [WeaponSelect]), MSG_WARNING); g_Net_Client_Send(True, NET_CHAN_PLAYERPOS); - // force player weapon - //{if (gPlayer1.NetForceWeapFIdx < gTime) then} gPlayer1.SetWeapon(gPlayer1.NetForceWeap); - //kBytePrev := kByte; //kDirPrev := gPlayer1.Direction; end;