X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fg_game.pas;h=d1246ba0c7dabdc027035501fe4fee5bd9bfc6a7;hp=f85024b31b0c05a68e9947476e3180b36d12469f;hb=06ce403977f0da3911c62eed46414ad03afa9111;hpb=4204edd3c7df01198a2289af4896be0575fff15c diff --git a/src/game/g_game.pas b/src/game/g_game.pas index f85024b..d1246ba 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -66,7 +66,7 @@ type WeaponSwitch: Byte; WeaponPreferences: Array[WP_FIRST..WP_LAST+1] of Byte; SwitchToEmpty: Byte; - SwitchToFist: Byte; + SkipFist: Byte; end; TMegaWADInfo = record @@ -4354,6 +4354,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; + gPlayer1.SkipFist := gPlayer1Settings.SkipFist; g_Console_Add(Format(_lc[I_PLAYER_JOIN], [gPlayer1.Name]), True); if g_Game_IsServer and g_Game_IsNet then MH_SEND_PlayerCreate(gPlayer1.UID); @@ -4387,6 +4388,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; + gPlayer2.SkipFist := gPlayer2Settings.SkipFist; g_Console_Add(Format(_lc[I_PLAYER_JOIN], [gPlayer2.Name]), True); if g_Game_IsServer and g_Game_IsNet then MH_SEND_PlayerCreate(gPlayer2.UID); @@ -4505,6 +4507,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; + gPlayer1.SkipFist := gPlayer1Settings.SkipFist; nPl := 1; // Ñîçäàíèå âòîðîãî èãðîêà, åñëè åñòü: @@ -4523,6 +4526,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; + gPlayer2.SkipFist := gPlayer2Settings.SkipFist; Inc(nPl); end; @@ -4605,6 +4609,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; + gPlayer1.SkipFist := gPlayer1Settings.SkipFist; Inc(nPl); end; @@ -4624,6 +4629,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; + gPlayer2.SkipFist := gPlayer2Settings.SkipFist; Inc(nPl); end; @@ -4714,6 +4720,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; + gPlayer1.SkipFist := gPlayer1Settings.SkipFist; end; if nPlayers >= 2 then @@ -4732,6 +4739,7 @@ begin gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch; gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences); gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty; + gPlayer2.SkipFist := gPlayer2Settings.SkipFist; end; g_Game_SetLoadingText(_lc[I_LOAD_HOST], 0, False); @@ -4913,6 +4921,7 @@ begin gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch; gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences); gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty; + gPlayer1.SkipFist := gPlayer1Settings.SkipFist; gPlayer1.UID := NetPlrUID1; gPlayer1.Reset(True); @@ -5692,7 +5701,7 @@ begin begin if Length(p) = 2 then begin - a := Max(0, StrToInt(p[1])); + a := Max(0, StrToIntDef(p[1], 0)); g_GFX_SetMax(a) end else if Length(p) = 1 then @@ -5708,7 +5717,7 @@ begin begin if Length(p) = 2 then begin - a := Max(0, StrToInt(p[1])); + a := Max(0, StrToIntDef(p[1], 0)); g_Shells_SetMax(a) end else if Length(p) = 1 then @@ -5724,7 +5733,7 @@ begin begin if Length(p) = 2 then begin - a := Max(0, StrToInt(p[1])); + a := Max(0, StrToIntDef(p[1], 0)); g_Gibs_SetMax(a) end else if Length(p) = 1 then @@ -5740,7 +5749,7 @@ begin begin if Length(p) = 2 then begin - a := Max(0, StrToInt(p[1])); + a := Max(0, StrToIntDef(p[1], 0)); g_Corpses_SetMax(a) end else if Length(p) = 1 then @@ -5969,6 +5978,16 @@ begin if (Length(P) = 2) then gPlayer2Settings.SwitchToEmpty := EnsureRange(StrTointDef(P[1], 0), 0, 1); end; + 'p1_skip_fist': + begin + if (Length(P) = 2) then + gPlayer1Settings.SkipFist := EnsureRange(StrTointDef(P[1], 0), 0, 1); + end; + 'p2_skip_fist': + begin + if (Length(P) = 2) then + gPlayer2Settings.SkipFist := EnsureRange(StrTointDef(P[1], 0), 0, 1); + end; 'p1_priority_kastet': begin if (Length(P) = 2) then @@ -6957,6 +6976,34 @@ begin end else g_Console_Add(_lc[I_MSG_GM_UNAVAIL]); end + else if (cmd = 'an') or (cmd = 'announce') then + begin + if g_Game_IsNet then + begin + if Length(P) > 1 then + begin + for a := 1 to High(P) do + chstr := chstr + P[a] + ' '; + + if Length(chstr) > 200 then SetLength(chstr, 200); + + if Length(chstr) < 1 then + begin + g_Console_Add('announce '); + Exit; + end; + + chstr := 'centerprint 100 ' + b_Text_Format(chstr); + if g_Game_IsClient then + MC_SEND_RCONCommand(chstr) + else + g_Console_Process(chstr, True); + end + else + g_Console_Add('announce '); + end else + g_Console_Add(_lc[I_MSG_GM_UNAVAIL]); + end else if cmd = 'game' then begin if gGameSettings.GameType <> GT_NONE then @@ -7413,7 +7460,7 @@ begin begin if Length(p) = 2 then begin - a := WP_FIRST + StrToInt(p[1]) - 1; + a := WP_FIRST + StrToIntDef(p[1], 0) - 1; if (a >= WP_FIRST) and (a <= WP_LAST) then gSelectWeapon[0, a] := True end @@ -7432,12 +7479,20 @@ begin begin if Length(p) = 2 then begin - a := WP_FIRST + StrToInt(p[1]) - 1; + a := WP_FIRST + StrToIntDef(p[1], 0) - 1; b := ord(cmd[2]) - ord('1'); if (a >= WP_FIRST) and (a <= WP_LAST) then gSelectWeapon[b, a] := True end end + else if (cmd = 'p1_weapbest') or (cmd = 'p2_weapbest') then + begin + b := ord(cmd[2]) - ord('1'); + if b = 0 then + gSelectWeapon[b, gPlayer1.GetMorePrefered()] := True + else + gSelectWeapon[b, gPlayer2.GetMorePrefered()] := True; + end else if (cmd = 'dropflag') then begin if g_Game_IsServer then @@ -7748,7 +7803,7 @@ begin name := e_CatPath(dir, Filename + '.png'); s := createDiskFile(name); try - e_MakeScreenshot(s, gScreenWidth, gScreenHeight); + e_MakeScreenshot(s, gWinSizeX, gWinSizeX); s.Free; g_Console_Add(Format(_lc[I_CONSOLE_SCREENSHOT], [name])) except