X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=17942e24e65b63be12b38c02f369ee7a0d9f0e6d;hb=26c0265257cea7f80b2b1a7cbe11c46aa0533949;hp=57e51369af7a7d2f7f701b6a3e3bd79b8a39fcc3;hpb=4e51e140c0b57225fddec5c839cecf3f3cdec9cc;p=d2df-sdl.git diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 57e5136..17942e2 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -595,7 +595,7 @@ begin begin if Pl.FSpectator then begin - if (gGameSettings.MaxLives = 0) or (gLMSRespawn = LMS_RESPAWN_WARMUP) then + if (gGameSettings.MaxLives = 0) or (gLMSRespawn > LMS_RESPAWN_NONE) then Pl.Respawn(False) else MH_SEND_GameEvent(NET_EV_LMS_NOSPAWN, Pl.UID); @@ -1110,9 +1110,10 @@ begin if IsKeyPressed(KEY_UP) then kByte := kByte or NET_KEY_UP; if IsKeyPressed(KEY_DOWN) then kByte := kByte or NET_KEY_DOWN; if IsKeyPressed(KEY_JUMP) then kByte := kByte or NET_KEY_JUMP; - if JustTeleported then kByte := kByte or NET_KEY_FORCEDIR; end; + if JustTeleported then kByte := kByte or NET_KEY_FORCEDIR; + NetOut.Write(kByte); if Direction = TDirection.D_LEFT then NetOut.Write(Byte(0)) else NetOut.Write(Byte(1)); NetOut.Write(GameX); @@ -2264,7 +2265,7 @@ begin ReleaseKeys; - if (kByte = NET_KEY_CHAT) then + if LongBool(kByte and NET_KEY_CHAT) then PressKey(KEY_CHAT, 10000) else begin @@ -2275,7 +2276,9 @@ begin if LongBool(kByte and NET_KEY_JUMP) then PressKey(KEY_JUMP, 10000); end; - if ((Pl <> gPlayer1) and (Pl <> gPlayer2)) or LongBool(kByte and NET_KEY_FORCEDIR) then + JustTeleported := LongBool(kByte and NET_KEY_FORCEDIR); + + if ((Pl <> gPlayer1) and (Pl <> gPlayer2)) or JustTeleported then SetDirection(TDirection(Dir)); GameVelX := M.ReadLongInt(); @@ -2344,12 +2347,12 @@ begin FSpectator := M.ReadByte() <> 0; if FSpectator then begin - if PID = NetPlrUID1 then + if UID = NetPlrUID1 then begin gSpectLatchPID1 := UID; gPlayer1 := nil; end; - if PID = NetPlrUID2 then + if UID = NetPlrUID2 then begin gSpectLatchPID2 := UID; gPlayer2 := nil;