X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=a7afb5c9d17116a2ed8a5624ec881c62124056c7;hb=b9aef1ff89ea1efc30b87b33b0f4209d6cf86dae;hp=1021d36f9646582ff5ae7bd918314e853b7a1a1a;hpb=6c45ab8eddd0887ecaa11ad3ed284dbdd3a3730c;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 1021d36..a7afb5c 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -573,7 +573,7 @@ type TTeamStat = Array [TEAM_RED..TEAM_BLUE] of record - Goals: SmallInt; + Score: SmallInt; end; var @@ -600,6 +600,10 @@ procedure g_Gibs_SetMax(Count: Word); function g_Gibs_GetMax(): Word; procedure g_Corpses_SetMax(Count: Word); function g_Corpses_GetMax(): Word; +procedure g_Force_Model_Set(Mode: Word); +function g_Force_Model_Get(): Word; +procedure g_Forced_Model_SetName(Model: String); +function g_Forced_Model_GetName(): String; procedure g_Shells_SetMax(Count: Word); function g_Shells_GetMax(): Word; @@ -729,6 +733,8 @@ var MaxGibs: Word = 150; MaxCorpses: Word = 20; MaxShells: Word = 300; + ForceModel: Word = 0; + ForcedModelName: String = STD_PLAYER_MODEL; CurrentGib: Integer = 0; CurrentShell: Integer = 0; BotNames: Array of String; @@ -796,6 +802,26 @@ begin Result := MaxCorpses; end; +procedure g_Force_Model_Set(Mode: Word); +begin + ForceModel := Mode; +end; + +function g_Force_Model_Get(): Word; +begin + Result := ForceModel; +end; + +procedure g_Forced_Model_SetName(Model: String); +begin + ForcedModelName := Model; +end; + +function g_Forced_Model_GetName(): String; +begin + Result := ForcedModelName; +end; + function g_Player_Create(ModelName: String; Color: TRGB; Team: Byte; Bot: Boolean): Word; var a: Integer; @@ -831,6 +857,8 @@ begin gPlayers[a].FActualModelName := ModelName; gPlayers[a].SetModel(ModelName); + if Bot and (g_Force_Model_Get() <> 0) then + gPlayers[a].SetModel(g_Forced_Model_GetName()); // Íåò ìîäåëè - ñîçäàíèå íå âîçìîæíî: if gPlayers[a].FModel = nil then @@ -899,7 +927,11 @@ begin // create entity and load state if Bot then - gPlayers[a] := TBot.Create() + begin + gPlayers[a] := TBot.Create(); + if (g_Force_Model_Get() <> 0) then + gPlayers[a].SetModel(g_Forced_Model_GetName()); + end else gPlayers[a] := TPlayer.Create(); gPlayers[a].FPhysics := True; // ??? @@ -1488,8 +1520,8 @@ procedure g_Player_ResetAll(Force, Silent: Boolean); var i: Integer; begin - gTeamStat[TEAM_RED].Goals := 0; - gTeamStat[TEAM_BLUE].Goals := 0; + gTeamStat[TEAM_RED].Score := 0; + gTeamStat[TEAM_BLUE].Score := 0; if gPlayers <> nil then for i := 0 to High(gPlayers) do @@ -2743,7 +2775,7 @@ begin SY := gPlayerScreenSize.Y; Y := 0; - if gShowGoals and (gGameSettings.GameMode in [GM_TDM, GM_CTF]) then + if gShowScore and (gGameSettings.GameMode in [GM_TDM, GM_CTF]) then begin if gGameSettings.GameMode = GM_CTF then a := 32 + 8 @@ -2760,7 +2792,7 @@ begin e_Draw(ID, X-16-32, 240-72-4, 0, True, False); end; - s := IntToStr(gTeamStat[TEAM_RED].Goals); + s := IntToStr(gTeamStat[TEAM_RED].Score); e_CharFont_GetSize(gMenuFont, s, tw, th); e_CharFont_PrintEx(gMenuFont, X-16-a-tw, 240-72-4, s, TEAMCOLOR[TEAM_RED]); @@ -2775,7 +2807,7 @@ begin e_Draw(ID, X-16-32, 240-32-4, 0, True, False); end; - s := IntToStr(gTeamStat[TEAM_BLUE].Goals); + s := IntToStr(gTeamStat[TEAM_BLUE].Score); e_CharFont_GetSize(gMenuFont, s, tw, th); e_CharFont_PrintEx(gMenuFont, X-16-a-tw, 240-32-4, s, TEAMCOLOR[TEAM_BLUE]); end; @@ -3484,7 +3516,7 @@ begin if Srv then begin if gGameSettings.GameMode = GM_TDM then - Dec(gTeamStat[FTeam].Goals); + Dec(gTeamStat[FTeam].Score); if DoFrags or (gGameSettings.GameMode = GM_TDM) then begin Dec(FFrags); @@ -3511,7 +3543,7 @@ begin end; if (gGameSettings.GameMode = GM_TDM) and DoFrags then - Inc(gTeamStat[KP.Team].Goals, + Inc(gTeamStat[KP.Team].Score, IfThen(SameTeam(FUID, SpawnerUID), -1, 1)); if netsrv then MH_SEND_PlayerStats(SpawnerUID); @@ -3672,7 +3704,7 @@ begin g_Game_Message(Format(_lc[I_MESSAGE_TLMS_WIN], [AnsiUpperCase(_lc[I_GAME_TEAM_RED])]), 144); if Netsrv then MH_SEND_GameEvent(NET_EV_TLMS_WIN, TEAM_RED); - Inc(gTeamStat[TEAM_RED].Goals); + Inc(gTeamStat[TEAM_RED].Score); gLMSRespawn := LMS_RESPAWN_FINAL; gLMSRespawnTime := gTime + 5000; end @@ -3682,7 +3714,7 @@ begin g_Game_Message(Format(_lc[I_MESSAGE_TLMS_WIN], [AnsiUpperCase(_lc[I_GAME_TEAM_BLUE])]), 144); if Netsrv then MH_SEND_GameEvent(NET_EV_TLMS_WIN, TEAM_BLUE); - Inc(gTeamStat[TEAM_BLUE].Goals); + Inc(gTeamStat[TEAM_BLUE].Score); gLMSRespawn := LMS_RESPAWN_FINAL; gLMSRespawnTime := gTime + 5000; end @@ -5802,7 +5834,7 @@ begin if not sound_cap_flag[a].IsPlaying() then sound_cap_flag[a].Play(); - gTeamStat[FTeam].Goals := gTeamStat[FTeam].Goals + 1; + gTeamStat[FTeam].Score += 1; Result := True; if g_Game_IsNet then