X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_netmsg.pas;h=ec78e3020b83f0328be0831527027955a9ca6b4f;hb=69ed21bb4a9cd4c59ba1acfd5971c7be5f854ee2;hp=1bb60c2d53a4aa234445cb1e56a8090f677b1c35;hpb=793c463d8e71d5b31b0f99d050bd77870a7a9f2a;p=d2df-sdl.git diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas index 1bb60c2..ec78e30 100644 --- a/src/game/g_netmsg.pas +++ b/src/game/g_netmsg.pas @@ -110,6 +110,7 @@ const NET_EV_KILLCOMBO = 17; NET_EV_PLAYER_TOUCH = 18; NET_EV_SECRET = 19; + NET_EV_INTER_READY = 20; NET_VE_STARTED = 1; NET_VE_PASSED = 2; @@ -125,6 +126,7 @@ const NET_CHEAT_SUICIDE = 1; NET_CHEAT_SPECTATE = 2; + NET_CHEAT_READY = 3; NET_MAX_DIFFTIME = 5000 div 36; @@ -511,6 +513,21 @@ begin else Pl.Spectate; end; + NET_CHEAT_READY: + begin + if gState <> STATE_INTERCUSTOM then Exit; + Pl.FReady := not Pl.FReady; + if Pl.FReady then + begin + MH_SEND_GameEvent(NET_EV_INTER_READY, Pl.UID, 'Y'); + Inc(gInterReadyCount); + end + else + begin + MH_SEND_GameEvent(NET_EV_INTER_READY, Pl.UID, 'N'); + Dec(gInterReadyCount); + end; + end; end; end; @@ -712,6 +729,8 @@ begin begin MH_SEND_GameEvent(NET_EV_LMS_WARMUP, (gLMSRespawnTime - gTime) div 1000, 'N', ID); end; + + g_Net_Flush(); end; procedure MH_SEND_Info(ID: Byte); @@ -1842,6 +1861,11 @@ begin end; end; + NET_EV_INTER_READY: + begin + pl := g_Player_Get(EvNum); + if pl <> nil then pl.FReady := (EvStr = 'Y'); + end; end; end; @@ -2560,7 +2584,7 @@ begin begin gMusic.SetByName(MName); gMusic.Play(True); - gMusic.SetPosition(MPos); + // gMusic.SetPosition(MPos); gMusic.SpecPause := MPaused; end else @@ -2812,13 +2836,17 @@ begin if gPlayerAction[0, ACTION_STRAFE] then begin // new strafe mechanics - if (strafeDir = 0) then strafeDir := P1MoveButton; // start strafing + if (strafeDir = 0) then + strafeDir := P1MoveButton; // start strafing // now set direction according to strafe (reversed) - if (strafeDir = 2) then gPlayer1.SetDirection(TDirection.D_LEFT) - else if (strafeDir = 1) then gPlayer1.SetDirection(TDirection.D_RIGHT); + if (strafeDir = 2) then + gPlayer1.SetDirection(TDirection.D_LEFT) + else if (strafeDir = 1) then + gPlayer1.SetDirection(TDirection.D_RIGHT) end else begin + strafeDir := 0; // not strafing anymore if (P1MoveButton = 2) and gPlayerAction[0, ACTION_MOVELEFT] then gPlayer1.SetDirection(TDirection.D_LEFT) else if (P1MoveButton = 1) and gPlayerAction[0, ACTION_MOVERIGHT] then @@ -2858,6 +2886,9 @@ begin if gPlayerAction[0, ACTION_WEAPNEXT] then kByte := kByte or NET_KEY_NW; if gPlayerAction[0, ACTION_WEAPPREV] then kByte := kByte or NET_KEY_PW; + gPlayerAction[0, ACTION_WEAPNEXT] := False; // HACK, remove after readyweaon&pendinweapon implementation + gPlayerAction[0, ACTION_WEAPPREV] := False; // HACK, remove after readyweaon&pendinweapon implementation + for i := WP_FIRST to WP_LAST do begin if gSelectWeapon[0, i] then