Skip to content

Commit 60936ed

Browse files
authored
Merge branch 'master' into dependabot/npm_and_yarn/utils/localization/generate-images/form-data-4.0.4
2 parents 7536957 + 776c27c commit 60936ed

File tree

12 files changed

+225
-18
lines changed

12 files changed

+225
-18
lines changed

Client/game_sa/CSettingsSA.cpp

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
#include "CGameSA.h"
1717
#include "CHudSA.h"
1818
#include "CSettingsSA.h"
19+
#include "CCameraSA.h"
20+
#include "CCamSA.h"
1921

2022
extern CCoreInterface* g_pCore;
2123
extern CGameSA* pGame;
@@ -525,36 +527,73 @@ void CSettingsSA::ResetFieldOfViewFromScript()
525527
UpdateFieldOfViewFromSettings();
526528
}
527529

528-
void CSettingsSA::SetFieldOfViewPlayer(float fAngle, bool bFromScript)
530+
static std::pair<CCam*, unsigned int> GetActiveCamPlusMode()
531+
{
532+
CCam* cam = pGame->GetCamera()->GetCam(pGame->GetCamera()->GetActiveCam());
533+
534+
if (cam == nullptr)
535+
return std::make_pair(cam, MODE_NONE);
536+
537+
return std::make_pair(cam, cam->GetMode());
538+
}
539+
540+
void CSettingsSA::SetFieldOfViewPlayer(float fAngle, bool bFromScript, bool instant)
529541
{
530542
if (!bFromScript && ms_bFOVPlayerFromScript)
531543
return;
544+
532545
ms_bFOVPlayerFromScript = bFromScript;
533546
ms_fFOV = fAngle;
547+
548+
// CCam::Process_FollowPed_SA
534549
MemPut<void*>(0x0522F3A, &ms_fFOV);
535550
MemPut<void*>(0x0522F5D, &ms_fFOV);
536551
MemPut<float>(0x0522F7A, ms_fFOV);
552+
553+
if (instant)
554+
{
555+
const auto pair = GetActiveCamPlusMode();
556+
557+
if (pair.second == MODE_FOLLOWPED)
558+
pair.first->SetFOV(fAngle);
559+
}
537560
}
538561

539-
void CSettingsSA::SetFieldOfViewVehicle(float fAngle, bool bFromScript)
562+
void CSettingsSA::SetFieldOfViewVehicle(float fAngle, bool bFromScript, bool instant)
540563
{
541564
if (!bFromScript && ms_bFOVVehicleFromScript)
542565
return;
566+
543567
ms_bFOVVehicleFromScript = bFromScript;
544568
ms_fFOVCar = fAngle;
569+
570+
// CCam::Process_FollowCar_SA
545571
MemPut<void*>(0x0524B76, &ms_fFOVCar);
546572
MemPut<void*>(0x0524B9A, &ms_fFOVCar);
547573
MemPut<void*>(0x0524BA2, &ms_fFOVCar);
548574
MemPut<void*>(0x0524BD3, &ms_fFOVCar);
549575
MemPut<float>(0x0524BE4, ms_fFOVCar);
576+
577+
if (instant)
578+
{
579+
const auto pair = GetActiveCamPlusMode();
580+
581+
if (pair.second == MODE_BEHINDCAR || pair.second == MODE_CAM_ON_A_STRING || pair.second == MODE_BEHINDBOAT)
582+
pair.first->SetFOV(fAngle);
583+
}
550584
}
551585

552-
void CSettingsSA::SetFieldOfViewVehicleMax(float fAngle, bool bFromScript)
586+
void CSettingsSA::SetFieldOfViewVehicleMax(float fAngle, bool bFromScript, bool instant)
553587
{
588+
(void)instant;
589+
554590
if (!bFromScript && ms_bFOVVehicleFromScript)
555591
return;
592+
556593
ms_bFOVVehicleFromScript = bFromScript;
557594
ms_fFOVCarMax = fAngle;
595+
596+
// CCam::Process_FollowCar_SA
558597
MemPut<void*>(0x0524BB4, &ms_fFOVCarMax);
559598
MemPut<float>(0x0524BC5, ms_fFOVCarMax);
560599
}

Client/game_sa/CSettingsSA.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,9 @@ class CSettingsSA : public CGameSettings
162162

163163
void UpdateFieldOfViewFromSettings();
164164
void ResetFieldOfViewFromScript();
165-
void SetFieldOfViewPlayer(float fAngle, bool bFromScript);
166-
void SetFieldOfViewVehicle(float fAngle, bool bFromScript);
167-
void SetFieldOfViewVehicleMax(float fAngle, bool bFromScript);
165+
void SetFieldOfViewPlayer(float fAngle, bool bFromScript, bool instant = false);
166+
void SetFieldOfViewVehicle(float fAngle, bool bFromScript, bool instant = false);
167+
void SetFieldOfViewVehicleMax(float fAngle, bool bFromScript, bool instant = false);
168168
float GetFieldOfViewPlayer();
169169
float GetFieldOfViewVehicle();
170170
float GetFieldOfViewVehicleMax();

Client/mods/deathmatch/logic/CScriptFile.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,14 @@ long CScriptFile::Read(unsigned long ulSize, SString& outBuffer)
180180
return m_pFile->FRead(outBuffer.data(), ulSize);
181181
}
182182

183+
long CScriptFile::ReadToBuffer(unsigned char* buffer, unsigned long bufferSize)
184+
{
185+
if (!m_pFile)
186+
return -1;
187+
188+
return m_pFile->FRead(buffer, bufferSize);
189+
}
190+
183191
long CScriptFile::Write(unsigned long ulSize, const char* pData)
184192
{
185193
if (!m_pFile)

Client/mods/deathmatch/logic/CScriptFile.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class CScriptFile final : public CClientEntity
6666

6767
void Flush();
6868
long Read(unsigned long ulSize, SString& outBuffer);
69+
long ReadToBuffer(unsigned char* buffer, unsigned long bufferSize);
6970
long Write(unsigned long ulSize, const char* pData);
7071

7172
long GetContents(std::string& buffer);

Client/mods/deathmatch/logic/luadefs/CLuaCameraDefs.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "StdInc.h"
1414
#include <game/CPlayerInfo.h>
1515
#include <game/CSettings.h>
16+
#include <game/CCam.h>
1617
#include <lua/CLuaFunctionParser.h>
1718

1819
#define MIN_CLIENT_REQ_SETCAMERATARGET_USE_ANY_ELEMENTS "1.5.8-9.20979"
@@ -215,10 +216,11 @@ int CLuaCameraDefs::SetCameraFieldOfView(lua_State* luaVM)
215216
{
216217
float fFOV;
217218
eFieldOfViewMode eMode;
219+
bool instant;
218220
CScriptArgReader argStream(luaVM);
219-
220221
argStream.ReadEnumString(eMode);
221222
argStream.ReadNumber(fFOV);
223+
argStream.ReadBool(instant, false);
222224

223225
if (!argStream.HasErrors())
224226
{
@@ -231,11 +233,17 @@ int CLuaCameraDefs::SetCameraFieldOfView(lua_State* luaVM)
231233
}
232234

233235
if (eMode == FOV_MODE_PLAYER)
234-
g_pGame->GetSettings()->SetFieldOfViewPlayer(fFOV, true);
236+
{
237+
g_pGame->GetSettings()->SetFieldOfViewPlayer(fFOV, true, instant);
238+
}
235239
else if (eMode == FOV_MODE_VEHICLE)
236-
g_pGame->GetSettings()->SetFieldOfViewVehicle(fFOV, true);
240+
{
241+
g_pGame->GetSettings()->SetFieldOfViewVehicle(fFOV, true, instant);
242+
}
237243
else if (eMode == FOV_MODE_VEHICLE_MAX)
238-
g_pGame->GetSettings()->SetFieldOfViewVehicleMax(fFOV, true);
244+
{
245+
g_pGame->GetSettings()->SetFieldOfViewVehicleMax(fFOV, true, instant);
246+
}
239247
else
240248
{
241249
argStream.m_iIndex = 1;
@@ -567,4 +575,4 @@ bool CLuaCameraDefs::ResetShakeCamera() noexcept
567575
{
568576
m_pManager->GetCamera()->ResetShakeCamera();
569577
return true;
570-
}
578+
}

Client/sdk/game/CSettings.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,9 @@ class CGameSettings
155155

156156
virtual void UpdateFieldOfViewFromSettings() = 0;
157157
virtual void ResetFieldOfViewFromScript() = 0;
158-
virtual void SetFieldOfViewPlayer(float fAngle, bool bFromScript) = 0;
159-
virtual void SetFieldOfViewVehicle(float fAngle, bool bFromScript) = 0;
160-
virtual void SetFieldOfViewVehicleMax(float fAngle, bool bFromScript) = 0;
158+
virtual void SetFieldOfViewPlayer(float fAngle, bool bFromScript, bool instant = false) = 0;
159+
virtual void SetFieldOfViewVehicle(float fAngle, bool bFromScript, bool instant = false) = 0;
160+
virtual void SetFieldOfViewVehicleMax(float fAngle, bool bFromScript, bool instant = false) = 0;
161161

162162
virtual float GetFieldOfViewPlayer() = 0;
163163
virtual float GetFieldOfViewVehicle() = 0;

Server/mods/deathmatch/logic/CResourceChecker.Data.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ namespace
4141
{"engineGetModelFlag", "1.6.0-9.21695"},
4242
{"engineSetModelFlag", "1.6.0-9.21695"},
4343
{"fileGetContents", "1.6.0-9.21938"},
44+
{"fileGetHash", "1.6.0-9.23289"},
4445
{"engineStreamingSetModelCacheLimits", "1.6.0-9.21946"},
4546
{"engineStreamingRestoreBufferSize", "1.6.0-9.22195"},
4647
{"createBuilding", "1.6.0-9.22410"},
@@ -60,6 +61,7 @@ namespace
6061
{"isObjectBreakable", "1.6.0-9.21765"},
6162
{"setObjectBreakable", "1.6.0-9.21765"},
6263
{"fileGetContents", "1.6.0-9.21938"},
64+
{"fileGetHash", "1.6.0-9.23289"},
6365
{"isWorldSpecialPropertyEnabled", "1.6.0-9.22195"},
6466
{"setWorldSpecialPropertyEnabled", "1.6.0-9.22195"},
6567
{"onResourceStateChange", "1.6.0-9.22430"},

Server/mods/deathmatch/logic/CScriptFile.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,14 @@ long CScriptFile::Read(unsigned long ulSize, SString& outBuffer)
200200
return fread(outBuffer.data(), 1, ulSize, m_pFile);
201201
}
202202

203+
long CScriptFile::ReadToBuffer(unsigned char* buffer, unsigned long bufferSize)
204+
{
205+
if (!m_pFile)
206+
return -1;
207+
208+
return fread(buffer, 1, bufferSize, m_pFile);
209+
}
210+
203211
long CScriptFile::Write(unsigned long ulSize, const char* pData)
204212
{
205213
if (!m_pFile)

Server/mods/deathmatch/logic/CScriptFile.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class CScriptFile final : public CElement
6060

6161
void Flush();
6262
long Read(unsigned long ulSize, SString& outBuffer);
63+
long ReadToBuffer(unsigned char* buffer, unsigned long bufferSize);
6364
long Write(unsigned long ulSize, const char* pData);
6465

6566
long GetContents(std::string& buffer);

Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: MTA San Andreas 1.x\n"
1010
"Report-Msgid-Bugs-To: \n"
11-
"POT-Creation-Date: 2025-07-15 04:08+0000\n"
11+
"POT-Creation-Date: 2025-07-23 20:10+0000\n"
1212
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -458,7 +458,7 @@ msgstr ""
458458
msgid "Don't show again"
459459
msgstr ""
460460

461-
#: Client/loader/Dialogs.cpp:98 Client/game_sa/CSettingsSA.cpp:859
461+
#: Client/loader/Dialogs.cpp:98 Client/game_sa/CSettingsSA.cpp:898
462462
msgid "MTA: San Andreas"
463463
msgstr ""
464464

@@ -3397,12 +3397,12 @@ msgstr ""
33973397
msgid "Problem with graphics driver"
33983398
msgstr ""
33993399

3400-
#: Client/game_sa/CSettingsSA.cpp:781
3400+
#: Client/game_sa/CSettingsSA.cpp:820
34013401
msgid "Can't find valid screen resolution."
34023402
msgstr ""
34033403

34043404
#. Confirm that res should be used
3405-
#: Client/game_sa/CSettingsSA.cpp:857
3405+
#: Client/game_sa/CSettingsSA.cpp:896
34063406
msgid "Are you sure you want to use this screen resolution?"
34073407
msgstr ""
34083408

0 commit comments

Comments
 (0)