X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=f235035fbda6d740146eb383d07d4e66e740948f;hb=54f428b595b4d7982f63a2adae9d72291b57784f;hp=7cd1a7cc8ecd18dec4363db5ad4e55d1682206e8;hpb=c97b4f7894fd3d797ecea3de574b58499c43aa85;p=d2df-sdl.git diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 7cd1a7c..f235035 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -437,7 +437,7 @@ var PID: Word; kByte: Word; Pl: TPlayer; - GT, wctr: LongWord; + GT: LongWord; newweapon: Byte; begin Result := 0; @@ -456,18 +456,15 @@ begin NetTime := GT; kByte := M.ReadWord(); Dir := M.ReadByte(); - wctr := M.ReadLongWord(); + //WeaponSelect := M.ReadWord(); newweapon := M.ReadByte(); - if (wctr > Pl.NetWeapCtr) then + if (newweapon <> CurrWeap) then begin - if (newweapon <> CurrWeap) then - begin {$IFDEF K8_XXX_WEAPON_DEBUG} - writeln('HOST PLRPOS: got: currweap=', CurrWeap, '; curfrm=', gTime, '; netweap=', newweapon, '; oldweap=', CurrWeap); + writeln('HOST PLRPOS: got: currweap=', CurrWeap, '; curfrm=', gTime, '; netweap=', newweapon, '; oldweap=', CurrWeap); {$ENDIF} - SetWeaponHost(newweapon); - end; - Pl.NetWeapCtr := wctr; + //NetForceWeap := newweapon; + SetWeapon(newweapon); end; //e_WriteLog(Format('R:ws=%d', [WeaponSelect]), MSG_WARNING); if Direction <> TDirection(Dir) then @@ -1012,9 +1009,7 @@ begin NetOut.Write(FPing); NetOut.Write(FLoss); if IsKeyPressed(KEY_CHAT) then - begin - kByte := NET_KEY_CHAT; - end + kByte := NET_KEY_CHAT else begin if IsKeyPressed(KEY_LEFT) then kByte := kByte or NET_KEY_LEFT; @@ -1027,10 +1022,6 @@ begin NetOut.Write(kByte); if Direction = TDirection.D_LEFT then NetOut.Write(Byte(0)) else NetOut.Write(Byte(1)); - - NetOut.Write(LongWord(Pl.NetWeapCtr)); - NetOut.Write(Byte(Pl.CurrWeap)); - NetOut.Write(GameX); NetOut.Write(GameY); NetOut.Write(GameVelX); @@ -1091,7 +1082,7 @@ begin NetOut.Write(Frags); NetOut.Write(Death); - NetOut.Write(LongWord(NetWeapCtr)); + //NetOut.Write(CurrWeap); NetOut.Write(Byte(CurrWeap)); // other flags @@ -2036,11 +2027,11 @@ end; function MC_RECV_PlayerPos(var M: TMsg): Word; var - GT, wctr: LongWord; + GT: LongWord; PID: Word; kByte: Word; Pl: TPlayer; - Dir, weapon: Byte; + Dir: Byte; TmpX, TmpY: Integer; begin Result := 0; @@ -2052,6 +2043,8 @@ begin Exit; end; gTime := GT; + if g_Game_IsClient and (gPlayer1 <> nil) and (gPlayer1.NetForceWeapFIdx >= gTime+15) then gPlayer1.NetForceWeapFIdx := 0; + if g_Game_IsClient and (gPlayer2 <> nil) and (gPlayer2.NetForceWeapFIdx >= gTime+15) then gPlayer2.NetForceWeapFIdx := 0; PID := M.ReadWord(); Pl := g_Player_Get(PID); @@ -2067,24 +2060,13 @@ begin kByte := M.ReadWord(); Dir := M.ReadByte(); - wctr := M.ReadLongWord(); - weapon := M.ReadByte(); - // `>=`, so server is still the authority - if (wctr >= Pl.NetWeapCtr) then - begin - Pl.CurrWeap := weapon; - Pl.NetWeapCtr := wctr; - end; - TmpX := M.ReadLongInt(); TmpY := M.ReadLongInt(); ReleaseKeysNoWeapon; if (kByte = NET_KEY_CHAT) then - begin - PressKey(KEY_CHAT, 10000); - end + PressKey(KEY_CHAT, 10000) else begin if LongBool(kByte and NET_KEY_LEFT) then PressKey(KEY_LEFT, 10000); @@ -2115,7 +2097,6 @@ var NewTeam: Byte; ww: Word; newweapon: Byte; - wctr: LongWord; begin PID := M.ReadWord(); Pl := g_Player_Get(PID); @@ -2162,17 +2143,16 @@ begin Frags := M.ReadLongInt(); Death := M.ReadLongInt(); - wctr := M.ReadLongWord(); newweapon := M.ReadByte(); {$IFDEF K8_XXX_WEAPON_DEBUG} writeln('CLIENT PLRSTATS: got: currweap=', CurrWeap, '; curfrm=', gTime, '; netweap=', newweapon, '; lastnwfrm=', NetForceWeapFIdx); {$ENDIF} - // `>=`, so server is still the authority - if (wctr >= NetWeapCtr) then + if (gTime >= NetForceWeapFIdx) then begin - SetWeaponHost(newweapon); - NetWeapCtr := wctr; + //NetForceWeap := newweapon; + SetWeapon(newweapon); end; + //SetWeapon(M.ReadByte()); // other flags ww := M.ReadByte(); @@ -2886,7 +2866,6 @@ begin NetOut.Write(gTime); NetOut.Write(kByte); NetOut.Write(Byte(gPlayer1.Direction)); - NetOut.Write(LongWord(gPlayer1.NetWeapCtr)); NetOut.Write(Byte(gPlayer1.CurrWeap)); {$IFDEF K8_XXX_WEAPON_DEBUG} if (kByte and NET_KEY_FIRE) <> 0 then writeln('FIRE: CurrWeap=', gPlayer1.CurrWeap); @@ -2896,6 +2875,9 @@ begin //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;