X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_game.pas;h=23c09434500a78b91de1423888484296164d8a95;hb=408d21ccc37ab8b7848b9e0eecc48bd38d2ae89c;hp=ef256d18c597441246b1fd81e115d67b259a1c77;hpb=1b867d9fa61767acfef258fe29b900d3fd1af104;p=d2df-sdl.git diff --git a/src/game/g_game.pas b/src/game/g_game.pas index ef256d1..23c0943 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -31,6 +31,7 @@ type TimeLimit: Word; GoalLimit: Word; WarmupTime: Word; + SpawnInvul: Word; MaxLives: Byte; Options: LongWord; WAD: String; @@ -178,6 +179,7 @@ const GAME_OPTION_MONSTERS = 16; GAME_OPTION_BOTVSPLAYER = 32; GAME_OPTION_BOTVSMONSTER = 64; + GAME_OPTION_DMKEYS = 128; STATE_NONE = 0; STATE_MENU = 1; @@ -1062,14 +1064,15 @@ begin SortGameStat(CustomStat.PlayerStat); - if gSaveStats or gScreenshotStats then + if (gSaveStats or gScreenshotStats) and (Length(gPlayers) > 1) then begin t := Now; if g_Game_IsNet then StatFilename := NetServerName else StatFilename := 'local'; StatDate := FormatDateTime('yymmdd_hhnnss', t); StatFilename := StatFilename + '_' + CustomStat.Map + '_' + g_Game_ModeToText(CustomStat.GameMode); StatFilename := sanitizeFilename(StatFilename) + '_' + StatDate; - if gSaveStats then SaveGameStat(CustomStat, FormatDateTime('yyyy"/"mm"/"dd', t)); + if gSaveStats then + SaveGameStat(CustomStat, FormatDateTime('yyyy"/"mm"/"dd', t)); end; StatShotDone := False; @@ -5552,6 +5555,28 @@ begin if g_Game_IsNet then MH_SEND_GameSettings; end; end + else if (cmd = 'g_dm_keys') and not g_Game_IsClient then + begin + with gGameSettings do + begin + if (Length(P) > 1) and + ((P[1] = '1') or (P[1] = '0')) then + begin + if (P[1][1] = '1') then + Options := Options or GAME_OPTION_DMKEYS + else + Options := Options and (not GAME_OPTION_DMKEYS); + end; + + if (LongBool(Options and GAME_OPTION_DMKEYS)) then + g_Console_Add(_lc[I_MSG_DMKEYS_ON]) + else + g_Console_Add(_lc[I_MSG_DMKEYS_OFF]); + g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); + + if g_Game_IsNet then MH_SEND_GameSettings; + end; + end else if (cmd = 'g_warmuptime') and not g_Game_IsClient then begin if Length(P) > 1 then @@ -5566,6 +5591,20 @@ begin [gGameSettings.WarmupTime])); g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); end + else if (cmd = 'g_spawn_invul') and not g_Game_IsClient then + begin + if Length(P) > 1 then + begin + if StrToIntDef(P[1], gGameSettings.SpawnInvul) = 0 then + gGameSettings.SpawnInvul := 0 + else + gGameSettings.SpawnInvul := StrToIntDef(P[1], gGameSettings.SpawnInvul); + end; + + g_Console_Add(Format(_lc[I_MSG_SPAWNINVUL], + [gGameSettings.SpawnInvul])); + g_Console_Add(_lc[I_MSG_ONMAPCHANGE]); + end else if cmd = 'net_interp' then begin if (Length(P) > 1) then @@ -7207,6 +7246,30 @@ begin end else g_Console_Add(_lc[I_MSG_SERVERONLY]); end + else if cmd = 'centerprint' then + begin + if (Length(P) > 2) and (P[1] <> '') then + begin + chstr := ''; + for a := 2 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('centerprint '); + Exit; + end; + + a := StrToIntDef(P[1], 100); + chstr := b_Text_Format(chstr); + g_Game_Message(chstr, a); + if g_Game_IsNet and g_Game_IsServer then + MH_SEND_GameEvent(NET_EV_BIGTEXT, a, chstr); + end + else g_Console_Add('centerprint '); + end else if (cmd = 'overtime') and not g_Game_IsClient then begin if (Length(P) = 1) or (StrToIntDef(P[1], -1) <= 0) then