X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=e884e9b91054550e815ce2ff5e89d9e9fae787a4;hp=6d1f430e5509196b9212f1535b1baedf3658e8af;hb=397f9cdedf0fb2a1a51d4f585db266b0f4925d97;hpb=85f0d06ec81bc2e66f235f87cf5c6844487b26c6 diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 6d1f430..e884e9b 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -16,6 +16,8 @@ {$INCLUDE ../shared/a_modes.inc} unit g_netmsg; +{.$DEFINE K8_XXX_WEAPON_DEBUG} + interface uses e_msg, g_net, g_triggers, Classes, SysUtils, md5; @@ -436,6 +438,7 @@ var kByte: Word; Pl: TPlayer; GT: LongWord; + newweapon: Byte; begin Result := 0; if not gGameOn then Exit; @@ -454,7 +457,15 @@ begin kByte := M.ReadWord(); Dir := M.ReadByte(); //WeaponSelect := M.ReadWord(); - SetWeapon(M.ReadByte()); + 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; //e_WriteLog(Format('R:ws=%d', [WeaponSelect]), MSG_WARNING); if Direction <> TDirection(Dir) then JustTeleported := False; @@ -1071,7 +1082,8 @@ begin NetOut.Write(Frags); NetOut.Write(Death); - NetOut.Write(CurrWeap); + //NetOut.Write(CurrWeap); + NetOut.Write(Byte(CurrWeap)); // other flags ww := 0; @@ -2082,6 +2094,7 @@ var OldJet: Boolean; NewTeam: Byte; ww: Word; + newweapon: Byte; begin PID := M.ReadWord(); Pl := g_Player_Get(PID); @@ -2128,7 +2141,16 @@ begin Frags := M.ReadLongInt(); Death := M.ReadLongInt(); - SetWeapon(M.ReadByte()); + 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()); // other flags ww := M.ReadByte(); @@ -2841,10 +2863,17 @@ begin 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); //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;