X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=55b99b3705acbc0ddbe05e00b04ba3657ea2c9fd;hp=3701038e76d8f3063378d92364612cdbab798973;hb=4204edd3c7df01198a2289af4896be0575fff15c;hpb=86d45dd42fd3cf9c183883e4ab1abe5b607e1779 diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 3701038..55b99b3 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -380,6 +380,9 @@ procedure MH_RECV_Info(C: pTNetClient; var M: TMsg); var Ver, PName, Model, Pw: string; R, G, B, T: Byte; + WeapSwitch: Byte; + TmpPrefArray: Array [WP_FIRST .. WP_LAST + 1] of Byte; + SwitchEmpty: Byte; PID: Word; Color: TRGB; I: Integer; @@ -395,6 +398,11 @@ begin G := M.ReadByte(); B := M.ReadByte(); T := M.ReadByte(); + WeapSwitch := M.ReadByte(); + if (WeapSwitch = 2) then + for I := WP_FIRST to WP_LAST + 1 do + TmpPrefArray[I] := M.ReadByte(); + SwitchEmpty := M.ReadByte(); except Err := True; end; @@ -450,6 +458,10 @@ begin with g_Player_Get(PID) do begin Name := PName; + WeapSwitchMode := WeapSwitch; + if (WeapSwitch = 2) then + SetWeaponPrefs(TmpPrefArray); + SwitchToEmpty := SwitchEmpty; Reset(True); end; @@ -700,6 +712,10 @@ var TmpModel: string; TmpColor: TRGB; TmpTeam: Byte; + TmpWeapSwitch: Byte; + TmpPrefArray: Array [WP_FIRST .. WP_LAST + 1] of Byte; + TmpSwEmpty: Byte; + I: Integer; Pl: TPlayer; Err: Boolean; begin @@ -711,6 +727,11 @@ begin TmpColor.G := M.ReadByte(); TmpColor.B := M.ReadByte(); TmpTeam := M.ReadByte(); + TmpWeapSwitch := M.ReadByte(); + if (TmpWeapSwitch = 2) then + for I := WP_FIRST to WP_LAST + 1 do + TmpPrefArray[I] := M.ReadByte(); + TmpSwEmpty := M.ReadByte(); except Err := True; end; @@ -734,6 +755,14 @@ begin if TmpModel <> Pl.Model.Name then Pl.SetModel(TmpModel); + if (TmpWeapSwitch <> Pl.WeapSwitchMode) then + Pl.WeapSwitchMode := TmpWeapSwitch; + + if (TmpWeapSwitch = 2) then + Pl.SetWeaponPrefs(TmpPrefArray); + + if (TmpSwEmpty <> Pl.SwitchToEmpty) then + Pl.SwitchToEmpty := TmpSwEmpty; MH_SEND_PlayerSettings(Pl.UID, TmpModel); end; @@ -2447,7 +2476,6 @@ var PID: Word; Pl: TPlayer; I, OldFire: Integer; - checkWeapon: Boolean; OldJet, Flam: Boolean; NewTeam: Byte; begin @@ -2469,19 +2497,8 @@ begin NewTeam := M.ReadByte(); for I := WP_FIRST to WP_LAST do - begin - checkWeapon := (M.ReadByte() <> 0); - if ( ((PID = gPlayer1.UID) or ( (gPlayer2 <> nil) and (PID = gPlayer2.UID))) and (I <> WEAPON_PISTOL) and (I <> WEAPON_KASTET ) and (gWeaponAutoswitch = True)) then - begin - if ( (checkWeapon = True) and (FWeapon[I] = False) ) then - begin - FWeapon[I] := True; - if (PID = gPlayer1.UID) then gSelectWeapon[0, I] := True - else gSelectWeapon[1, I] := True; - end; - end; - FWeapon[I] := checkWeapon; - end; + FWeapon[I] := (M.ReadByte() <> 0); + for I := A_BULLETS to A_HIGH do FAmmo[I] := M.ReadWord(); @@ -2659,6 +2676,7 @@ var TmpModel: string; TmpColor: TRGB; TmpTeam: Byte; + i: Integer; Pl: TPlayer; PID: Word; begin @@ -3123,6 +3141,7 @@ end; // CLIENT SEND procedure MC_SEND_Info(Password: string); +var i: Integer; begin NetOut.Clear(); @@ -3135,6 +3154,11 @@ begin NetOut.Write(gPlayer1Settings.Color.G); NetOut.Write(gPlayer1Settings.Color.B); NetOut.Write(gPlayer1Settings.Team); + NetOut.Write(gPlayer1Settings.WeaponSwitch); + if (gPlayer1Settings.WeaponSwitch = 2) then + for i := WP_FIRST to WP_LAST + 1 do + NetOut.Write(gPlayer1Settings.WeaponPreferences[i]); + NetOut.Write(gPlayer1Settings.SwitchToEmpty); g_Net_Client_Send(True, NET_CHAN_SERVICE); end; @@ -3274,6 +3298,7 @@ begin end; procedure MC_SEND_PlayerSettings(); +var i: Integer; begin NetOut.Write(Byte(NET_MSG_PLRSET)); NetOut.Write(gPlayer1Settings.Name); @@ -3282,7 +3307,11 @@ begin NetOut.Write(gPlayer1Settings.Color.G); NetOut.Write(gPlayer1Settings.Color.B); NetOut.Write(gPlayer1Settings.Team); - + NetOut.Write(gPlayer1Settings.WeaponSwitch); + if (gPlayer1Settings.WeaponSwitch = 2) then + for i := WP_FIRST to WP_LAST + 1 do + NetOut.Write(gPlayer1Settings.WeaponPreferences[i]); + NetOut.Write(gPlayer1Settings.SwitchToEmpty); g_Net_Client_Send(True, NET_CHAN_IMPORTANT); end;