From 3084934b3bcd1bea104228f2f33eb7f5d19118e7 Mon Sep 17 00:00:00 2001 From: FileEX Date: Thu, 3 Oct 2024 19:34:00 +0200 Subject: [PATCH 01/40] Addendum to 5f21c32fb0725140d6d03476e08de330d429b55a (#3765) --- Client/game_sa/CPedSA.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Client/game_sa/CPedSA.h b/Client/game_sa/CPedSA.h index 668d2367c7..ab16ea28f8 100644 --- a/Client/game_sa/CPedSA.h +++ b/Client/game_sa/CPedSA.h @@ -265,6 +265,7 @@ class CPedSAInterface : public CPhysicalSAInterface // +1420 = curre BYTE bCurrentWeaponSlot; // is actually here BYTE bPad6[3]; CEntitySAInterface* pTargetedObject; + BYTE tempPad[13]; BYTE bFightingStyle; // 1837 BYTE bFightingStyleExtra; BYTE bPad7[1]; From 9f579f3e92bf75242ff40b1f015391709c2c5503 Mon Sep 17 00:00:00 2001 From: Dutchman101 <12105539+Dutchman101@users.noreply.github.com> Date: Thu, 3 Oct 2024 20:17:29 +0000 Subject: [PATCH 02/40] Update CEF to 129.0.11+g57354b8+chromium-129.0.6668.90 --- utils/buildactions/install_cef.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/buildactions/install_cef.lua b/utils/buildactions/install_cef.lua index 9dc4ccdc71..8430fc68f8 100644 --- a/utils/buildactions/install_cef.lua +++ b/utils/buildactions/install_cef.lua @@ -9,8 +9,8 @@ local CEF_URL_PREFIX = "https://cef-builds.spotifycdn.com/cef_binary_" local CEF_URL_SUFFIX = "_windows32_minimal.tar.bz2" -- Change here to update CEF version -local CEF_VERSION = "129.0.6+ga918aa7+chromium-129.0.6668.29" -local CEF_HASH = "989b267d6c2eed6feed4ef304664763612619f1d4ca7f21d95a524c139870d36" +local CEF_VERSION = "129.0.11+g57354b8+chromium-129.0.6668.90" +local CEF_HASH = "a3e3e7add2235d1865a8570522ff87dba392e7b2d15bca0983ed2ebe19ea048b" function make_cef_download_url() return CEF_URL_PREFIX..http.escapeUrlParam(CEF_VERSION)..CEF_URL_SUFFIX From f96836397a075585d4d112eb7d0240f1abf361d4 Mon Sep 17 00:00:00 2001 From: FileEX Date: Thu, 3 Oct 2024 23:40:09 +0200 Subject: [PATCH 03/40] Fix Hydraulics stops working when using setVehicleHandling with player inside vehicle (#3647) --- Client/game_sa/CVehicleSA.cpp | 73 ++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/Client/game_sa/CVehicleSA.cpp b/Client/game_sa/CVehicleSA.cpp index 91fb5440e0..ab1635c91d 100644 --- a/Client/game_sa/CVehicleSA.cpp +++ b/Client/game_sa/CVehicleSA.cpp @@ -684,6 +684,17 @@ void CVehicleSA::RemoveVehicleUpgrade(DWORD dwModelID) push dwModelID call dwFunc } + + // GTA SA only does this when CVehicle::ClearVehicleUpgradeFlags returns false. + // In the case of hydraulics and nitro, this function does not return false and the upgrade is never removed from the array + for (std::int16_t& upgrade : GetVehicleInterface()->m_upgrades) + { + if (upgrade == dwModelID) + { + upgrade = -1; + break; + } + } } bool CVehicleSA::DoesSupportUpgrade(const SString& strFrameName) @@ -1322,49 +1333,41 @@ void CVehicleSA::RecalculateHandling() // Put it in our interface CVehicleSAInterface* pInt = GetVehicleInterface(); unsigned int uiHandlingFlags = m_pHandlingData->GetInterface()->uiHandlingFlags; - // user error correction - NOS_INST = NOS Installed t/f - // if nos is installed we need the flag set - if (pInt->m_upgrades[0] && pInt->m_upgrades[0] >= 1008 && pInt->m_upgrades[0] <= 1010) + bool hydralicsInstalled = false, nitroInstalled = false; + + // We check whether the user has not set incorrect flags via handlingFlags in the case of nitro and hydraulics + // If this happened, we need to correct it + for (const std::int16_t& upgradeID : pInt->m_upgrades) { - // Flag not enabled? - if (uiHandlingFlags | HANDLING_NOS_Flag) + // Empty upgrades value is -1 + if (upgradeID < 0) + continue; + + // If NOS is installed we need set the flag + if ((upgradeID >= 1008 && upgradeID <= 1010) && !(uiHandlingFlags & HANDLING_NOS_Flag)) { - // Set zee flag uiHandlingFlags |= HANDLING_NOS_Flag; - m_pHandlingData->SetHandlingFlags(uiHandlingFlags); - } - } - else - { - // Flag Enabled? - if (uiHandlingFlags & HANDLING_NOS_Flag) - { - // Unset the flag - uiHandlingFlags &= ~HANDLING_NOS_Flag; - m_pHandlingData->SetHandlingFlags(uiHandlingFlags); + nitroInstalled = true; } - } - // Hydraulics Flag fixing - if (pInt->m_upgrades[1] && pInt->m_upgrades[1] == 1087) - { - // Flag not enabled? - if (uiHandlingFlags | HANDLING_Hydraulics_Flag) + + // If hydraulics is installed we need set the flag + if ((upgradeID == 1087) && !(uiHandlingFlags & HANDLING_Hydraulics_Flag)) { - // Set zee flag uiHandlingFlags |= HANDLING_Hydraulics_Flag; - m_pHandlingData->SetHandlingFlags(uiHandlingFlags); - } - } - else - { - // Flag Enabled? - if (uiHandlingFlags & HANDLING_Hydraulics_Flag) - { - // Unset the flag - uiHandlingFlags &= ~HANDLING_Hydraulics_Flag; - m_pHandlingData->SetHandlingFlags(uiHandlingFlags); + hydralicsInstalled = true; } } + + // If hydraulics isn't installed we need unset the flag + if ((!hydralicsInstalled) && (uiHandlingFlags & HANDLING_Hydraulics_Flag)) + uiHandlingFlags &= ~HANDLING_Hydraulics_Flag; + + // If NOS isn't installed we need unset the flag + if ((!nitroInstalled) && (uiHandlingFlags & HANDLING_NOS_Flag)) + uiHandlingFlags &= ~HANDLING_NOS_Flag; + + m_pHandlingData->SetHandlingFlags(uiHandlingFlags); + pInt->dwHandlingFlags = uiHandlingFlags; pInt->m_fMass = m_pHandlingData->GetInterface()->fMass; pInt->m_fTurnMass = m_pHandlingData->GetInterface()->fTurnMass; // * pGame->GetHandlingManager()->GetTurnMassMultiplier(); From 5220344eb50ad36ac04e23758a72973f0ac03113 Mon Sep 17 00:00:00 2001 From: Dutchman101 <12105539+Dutchman101@users.noreply.github.com> Date: Thu, 3 Oct 2024 23:08:44 +0000 Subject: [PATCH 04/40] Force rebuild From 52848571e392f5e4ab2475d07278c749c6445630 Mon Sep 17 00:00:00 2001 From: Dutchman101 <12105539+Dutchman101@users.noreply.github.com> Date: Thu, 3 Oct 2024 23:15:58 +0000 Subject: [PATCH 05/40] Force rebuild #2 For version control purposes From abffd8744e13fe1ee7c6a95c38b42ac3d5788201 Mon Sep 17 00:00:00 2001 From: Dutchman101 <12105539+Dutchman101@users.noreply.github.com> Date: Thu, 3 Oct 2024 23:30:05 +0000 Subject: [PATCH 06/40] Force rebuild #3 For version management purposes; this is the final one. From c87ff84b64d9293a3f97db64ce815ab370f48d2e Mon Sep 17 00:00:00 2001 From: FileEX Date: Sat, 5 Oct 2024 03:37:35 +0200 Subject: [PATCH 07/40] Another minor fix after #3760 (#3767) --- Client/game_sa/CPlayerPedSA.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/game_sa/CPlayerPedSA.cpp b/Client/game_sa/CPlayerPedSA.cpp index ad555041d0..534f8376c6 100644 --- a/Client/game_sa/CPlayerPedSA.cpp +++ b/Client/game_sa/CPlayerPedSA.cpp @@ -75,7 +75,7 @@ CPlayerPedSA::CPlayerPedSA(unsigned int nModelIndex) // Set default stuff m_pData->m_bRenderWeapon = true; m_pData->m_Wanted = pLocalWanted; - m_pData->m_fSprintEnergy = 1000.0f; + m_pData->m_fTimeCanRun = 1000.0f; // Clothes pointers or we'll crash later (TODO: Wrap up with some cloth classes and make it unique per player) m_pData->m_pClothes = pLocalClothes; From 1fdfdb8b8a693c8ac5270585fb3c407983b460ca Mon Sep 17 00:00:00 2001 From: Dutchman101 <12105539+Dutchman101@users.noreply.github.com> Date: Sat, 5 Oct 2024 02:40:09 +0000 Subject: [PATCH 08/40] Addendum to 47c2b89 --- Client/launch/Multi Theft Auto.manifest | 74 +++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/Client/launch/Multi Theft Auto.manifest b/Client/launch/Multi Theft Auto.manifest index 159fa06d34..c29803733a 100644 --- a/Client/launch/Multi Theft Auto.manifest +++ b/Client/launch/Multi Theft Auto.manifest @@ -1,5 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From ea6300de7ff5de4afd15a6559368365e243543a4 Mon Sep 17 00:00:00 2001 From: Dutchman101 Date: Sat, 5 Oct 2024 05:08:27 +0200 Subject: [PATCH 09/40] Update launcher --- Shared/data/launchers/Multi Theft Auto.exe | Bin 416136 -> 421256 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Shared/data/launchers/Multi Theft Auto.exe b/Shared/data/launchers/Multi Theft Auto.exe index 99fcb3c6bf6af71e9a6bd69a50a13ea8d8b7a667..0fd7e719d4b648c267b4afc1c91735a1603d494f 100644 GIT binary patch delta 6735 zcmcgx3piA1A3rmgLKhL$7KY-J&=|@k_nlI*<(5n7pPF zr){g7c7{p&>ic5=ANX)J0Cbu)lmQ^2o{@&rEOp+#phiAk z90ss$HuVykmQTB_);|=g1OV-6d+9S(L#c^+)Sz+pH9AyHYu;p5lVDaulbY4g$A0DT zan(LF0d?1CC;>H{@3B9QjibI#rf$w8C4kfQ_n1`FP8TpV+zRMlUp}X^B+Go`x*O~t z(xfe&bX8^bW;$Sj;TU%oi=ApPJ)K#sq#|YZ(5)BHJ*Ox5+bU7Fvee&JC9+JlIgm!d z13+_ni83QmX+B_?zCwjz*Y_YzRbhBC$Z%KyF;NhK91UY&R3s)WL#!-#0)Zh@AOv}f zFd^b-XyhA<6ADN5B?J$P#t9(? z$&B$O1TK(O0&-9#a4sl<6H5?QI;W)^L zQT_lNQXc1mB2fe+5DkEk2Z4ZMi2f)G$Ec8#2r+Vv0%$xKgSbQt4A{@jC z5hjfJQUuEWa#YsAG30`vDhm3E7^J)f9wiVEBfw7}cqBUND4_gqVN@3g{um1c>lckILr`($SC`&PVu|6_!BEGk#z-)P6f)+&_nZ}BFai^Bv_duM^SUf|{^9drD|Wb8pa^G#0_dYT$WiTb zaEKcr#AWI4hpGsei1Mqo1&o$Eegmss0-Q1#p}K)bHEvi9)CZFggsf zf9Huqgjm5MPf1|K7RxO}U;g>9{iQ0Sf<$|tHso^27x}NRS&<82U;^zYh|G2vWdDue zTq0a%fG;=SlqU#GEF(L}!H*I8q6$-lUwDK-B1;(=rvK&&!nhz2rGO>+JA~n#Nse%y zLZvEDObm}P0>t~M93r$yS=&!MLcvl9Bgi0Xkg^{w!3fn_P@4e-9D)*5yZ70AgAtFn zq;={HBL?Zp;VfC^9vJBL{^7&VKlV=k(+dt*PsP3OL#`$xN{?x&T(Run&XnUs@?rlI z`0Kc|b*)f zlc)1ex`=ifZPnisTwLO8J16YL!VR6jb8W6*d=t*rjC0PlexcvS=(PI$IX+4=p#HZu zoyrOOzkYJ!sqQ%DBcCXv#|>D?8FpHoIC1X}MYSHunl8r5l}V_@u6XoeExR}U ze==An*=A>E^<&%<)cN-PdXj#f>!qG`)1>fpRK@<=c7-+@+_fkEs&BF7wXyXDBX@^G z5C6@0+?C?@N80#`Oq0@$oXPOGNjJxKC9=vo7H7Bp@7BpiYt7?}Qyy<8Iev|+R|b4n z+8)d!dpneX-3c1Bf^LU2`20I--KUi=k`2`+NGvmKbXBaUOk7nOcF=q6KJ6)QSH}94LS|VxB4)_UV(3ua z8(w=sa>8RpYy^1A9x)hgF?)M{iDgl{o3Dq^G$uxXtv{yQ~nk^cAj*^>#K#+~T5QL-ZH@ z=CeZ2Acq#eYf46u^Zl+xGsZ}}nMOP4W7LkXbE_||oH~)sVq06XSo2uydDfO}sk$4( zVY1raAJV=38B19?s|&-d7d+K@P@4BnxvRnZzH8{gUzS~2Ta)@>;J=N3;lvh?>X$9gX?S1;&V{LC8t*oX-KS@u0C_1m4* z%HqsDezA;l$f|7%=uWdw+VRaL;gpLukoU>L4vslJG7dA}_tZm7I>nx74X+-zb|U4ik|Cv9nn@Q*W4gEu8bG^76}9 zYqEFwX;eovzTkTnJG`rEx^SU;DGEA;R~g-T>?6sICL;@Pn*L;h?$Ky9Y_gy2{%UGI z#B6MJO~<^4zATU*G(wn$cuSlI@GmmuEo7pOt)D zKBo8ee9knTa)Y@Y$4qh%ur_+m5<~hWhbG_rM-|>$zyak=PjG}_CK-2cv#u`AOjuf7 zdN!kJ)2n1{qo!v8b>Cd#6Sp?^v@B!^bf)c(+?^HrhOssC33%0cY(dc7>e4e_+3sgG dA~L;pIN9uVK3h>TJ+4B1xoyyv{{K$^;Qxi8jKKf^ delta 1575 zcmYL}dpOez7{`CVU4D#0TD75?D62*@w=JApD@PYRZb{=%F0;ZA3Oh|>nOvGop`&=p zC32)jE0^Sw%h8M|6>5|sDz+l)tj_7_eV*_0yzlq(yx;e~motpz+{9MnK&`kJ13|$5 zH44B$RZwj+5Df!>I^K40n~FaK00;oMYo)}C0*zM#FBIfw5g~xHSuxn~?tqU~ejtB1 z0KDK`gz2Gd6pQN=Q1fOR?8pFEl}s2)B@BTA!VpYZ%j)OV?`d>}hBV;7(C7cMf3jr? zAFYtX3OL~KLj!N=l-=DkHQ>XA1XG`3D1_=`7+}PRVg%|FN!hyE zd|WFWDZnkkOf6yil~X;*aD@;8Pco9$jjHkn74ZO2#eax^&cKNPiSL1gDBl}FHWJzc z37)Ql^q||DpvZN&nlLw^-s1Cmp|E5GL8^G*|NOYcoB%&oQKW_*LkThj*$z;)8nZND zK;$iUsI{R=p4~75!eY-SmKbj7@1+doxXoz3hZC1Ws4XeGQ)J6Q5JUn977W<`m^F9N zm4WSD^&3h^K*7;%(T9q3E^WoXI@OIAURrRS@_}VIh-4u%Y2=s3^4N5{efP@Hw#lE2 z+y+0$0uo}9M4>`&&+z%*>F1g8b=TImPvx)7(iiVyY1e6sH&h8TWSi~FtI}sr?ZrmO zv29LKyu=I5J2M^G=TeH2ZFcq?nV?5S*pgZ9qsi)K&)dl+yIQ*PbIKFp;mf2NJ6k5u z5Xwl3A4+ZAljNV4|Hh16SI(F|F?THEdUF<}dpMX@%fm5++i;)UK<4YEMNwj)O#90O z&C0Ft_Gxo>9iD3BuJWTsF%u0-$gf_5cWk|F!Eghzk<#5c|JDX#!a261lqEJ9ZR^*T z7g-1kYZ|$!r1Jd?!gRb~#CyB8W_wQeypc}Zv_)m;H3Ef*@ikYsqLw&3Gsg+dYeLNC zx+c4l-c`%@Ntvn48*}nMA_rBH7@H}#W}S_D-VUbZJy|v}YX!14>I4Z0iFZb&Gh>!D`95h$+)6 zm`2NBy-b5DN`cy&Fe6?+(?loUo8ub;1j;gQU+Sd3kyKjD9nR!?ctD91RLl6$v(T%Y zuLnbx(&FM`$6WM3Dent&yn6ZB+1|Q4-(X5Ar3p5o9fvULBqGU_NFkDp&51-aV}YtC zWQA7wW$;~TkTda1`bn3iBbJ{{Mt44394OgK*X!jrEejYYt>q{I_0{v=g0G}I$#d+L zV(M=?Yc}8HchjI-Oxl41Yc8t=8ydSOdz{!RPOG+m;+DIbRZlHZzNk0sR~V>E)QXeH z^p87NAn$7#-VK;}>%<(5UBk;HUKrUJZHenEr*_H)xod~lZ}B8Mr|N#q>r$zxXl^^-7IbdVBu{%GAGOFa`O48|9^qKOkLKCAZ>V0kUhC_Jj@)=+fU=Oy*X*YTLMb>m zy7TPz#q4c5m75v^j(lV*b0*UhGpCnZHie4HC~WmZnUb;%et5e5$w|yZrQy{(_MS&w5~WlV;(wST^QSo*&{TYl`@+CLC2nsC>Z10oyG9L7p&dbPH${p$IDKZ&OQz; zC|NF@&#L;2+)AolXxfnx?-lARc5ge8b$^^`tByOHcwL##vxsRY`z1f}e^RxYn6|#K z@_B*~=sa%I!MTmjyDDAvcU>11PQ%ps4A8+3oz8eBEo#j*`^g3|KJ%6VlE*B3G|Gj^ zyISrGA6_FB<7}ie3+K@)jSQVtj(&fxO)(rLV5;p)R~C!@;`^G2XMJSvB;17+_t}L# z@92F#Mx9e?xYF_1vMYTW4Yd|Q+@#-p=R-3R Date: Sat, 5 Oct 2024 06:00:16 +0200 Subject: [PATCH 10/40] Revert ea6300d & 1fdfdb8 for now --- Client/launch/Multi Theft Auto.manifest | 74 --------------------- Shared/data/launchers/Multi Theft Auto.exe | Bin 421256 -> 416136 bytes 2 files changed, 74 deletions(-) diff --git a/Client/launch/Multi Theft Auto.manifest b/Client/launch/Multi Theft Auto.manifest index c29803733a..159fa06d34 100644 --- a/Client/launch/Multi Theft Auto.manifest +++ b/Client/launch/Multi Theft Auto.manifest @@ -1,79 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Shared/data/launchers/Multi Theft Auto.exe b/Shared/data/launchers/Multi Theft Auto.exe index 0fd7e719d4b648c267b4afc1c91735a1603d494f..99fcb3c6bf6af71e9a6bd69a50a13ea8d8b7a667 100644 GIT binary patch delta 1575 zcmYL}dpOez7{`CVU4D#0TD75?D62*@w=JApD@PYRZb{=%F0;ZA3Oh|>nOvGop`&=p zC32)jE0^Sw%h8M|6>5|sDz+l)tj_7_eV*_0yzlq(yx;e~motpz+{9MnK&`kJ13|$5 zH44B$RZwj+5Df!>I^K40n~FaK00;oMYo)}C0*zM#FBIfw5g~xHSuxn~?tqU~ejtB1 z0KDK`gz2Gd6pQN=Q1fOR?8pFEl}s2)B@BTA!VpYZ%j)OV?`d>}hBV;7(C7cMf3jr? zAFYtX3OL~KLj!N=l-=DkHQ>XA1XG`3D1_=`7+}PRVg%|FN!hyE zd|WFWDZnkkOf6yil~X;*aD@;8Pco9$jjHkn74ZO2#eax^&cKNPiSL1gDBl}FHWJzc z37)Ql^q||DpvZN&nlLw^-s1Cmp|E5GL8^G*|NOYcoB%&oQKW_*LkThj*$z;)8nZND zK;$iUsI{R=p4~75!eY-SmKbj7@1+doxXoz3hZC1Ws4XeGQ)J6Q5JUn977W<`m^F9N zm4WSD^&3h^K*7;%(T9q3E^WoXI@OIAURrRS@_}VIh-4u%Y2=s3^4N5{efP@Hw#lE2 z+y+0$0uo}9M4>`&&+z%*>F1g8b=TImPvx)7(iiVyY1e6sH&h8TWSi~FtI}sr?ZrmO zv29LKyu=I5J2M^G=TeH2ZFcq?nV?5S*pgZ9qsi)K&)dl+yIQ*PbIKFp;mf2NJ6k5u z5Xwl3A4+ZAljNV4|Hh16SI(F|F?THEdUF<}dpMX@%fm5++i;)UK<4YEMNwj)O#90O z&C0Ft_Gxo>9iD3BuJWTsF%u0-$gf_5cWk|F!Eghzk<#5c|JDX#!a261lqEJ9ZR^*T z7g-1kYZ|$!r1Jd?!gRb~#CyB8W_wQeypc}Zv_)m;H3Ef*@ikYsqLw&3Gsg+dYeLNC zx+c4l-c`%@Ntvn48*}nMA_rBH7@H}#W}S_D-VUbZJy|v}YX!14>I4Z0iFZb&Gh>!D`95h$+)6 zm`2NBy-b5DN`cy&Fe6?+(?loUo8ub;1j;gQU+Sd3kyKjD9nR!?ctD91RLl6$v(T%Y zuLnbx(&FM`$6WM3Dent&yn6ZB+1|Q4-(X5Ar3p5o9fvULBqGU_NFkDp&51-aV}YtC zWQA7wW$;~TkTda1`bn3iBbJ{{Mt44394OgK*X!jrEejYYt>q{I_0{v=g0G}I$#d+L zV(M=?Yc}8HchjI-Oxl41Yc8t=8ydSOdz{!RPOG+m;+DIbRZlHZzNk0sR~V>E)QXeH z^p87NAn$7#-VK;}>%<(5UBk;HUKrUJZHenEr*_H)xod~lZ}B8Mr|N#q>r$zxXl^^-7IbdVBu{%GAGOFa`O48|9^qKOkLKCAZ>V0kUhC_Jj@)=+fU=Oy*X*YTLMb>m zy7TPz#q4c5m75v^j(lV*b0*UhGpCnZHie4HC~WmZnUb;%et5e5$w|yZrQy{(_MS&w5~WlV;(wST^QSo*&{TYl`@+CLC2nsC>Z10oyG9L7p&dbPH${p$IDKZ&OQz; zC|NF@&#L;2+)AolXxfnx?-lARc5ge8b$^^`tByOHcwL##vxsRY`z1f}e^RxYn6|#K z@_B*~=sa%I!MTmjyDDAvcU>11PQ%ps4A8+3oz8eBEo#j*`^g3|KJ%6VlE*B3G|Gj^ zyISrGA6_FB<7}ie3+K@)jSQVtj(&fxO)(rLV5;p)R~C!@;`^G2XMJSvB;17+_t}L# z@92F#Mx9e?xYF_1vMYTW4Yd|Q+@#-p=R-3RpPF zr){g7c7{p&>ic5=ANX)J0Cbu)lmQ^2o{@&rEOp+#phiAk z90ss$HuVykmQTB_);|=g1OV-6d+9S(L#c^+)Sz+pH9AyHYu;p5lVDaulbY4g$A0DT zan(LF0d?1CC;>H{@3B9QjibI#rf$w8C4kfQ_n1`FP8TpV+zRMlUp}X^B+Go`x*O~t z(xfe&bX8^bW;$Sj;TU%oi=ApPJ)K#sq#|YZ(5)BHJ*Ox5+bU7Fvee&JC9+JlIgm!d z13+_ni83QmX+B_?zCwjz*Y_YzRbhBC$Z%KyF;NhK91UY&R3s)WL#!-#0)Zh@AOv}f zFd^b-XyhA<6ADN5B?J$P#t9(? z$&B$O1TK(O0&-9#a4sl<6H5?QI;W)^L zQT_lNQXc1mB2fe+5DkEk2Z4ZMi2f)G$Ec8#2r+Vv0%$xKgSbQt4A{@jC z5hjfJQUuEWa#YsAG30`vDhm3E7^J)f9wiVEBfw7}cqBUND4_gqVN@3g{um1c>lckILr`($SC`&PVu|6_!BEGk#z-)P6f)+&_nZ}BFai^Bv_duM^SUf|{^9drD|Wb8pa^G#0_dYT$WiTb zaEKcr#AWI4hpGsei1Mqo1&o$Eegmss0-Q1#p}K)bHEvi9)CZFggsf zf9Huqgjm5MPf1|K7RxO}U;g>9{iQ0Sf<$|tHso^27x}NRS&<82U;^zYh|G2vWdDue zTq0a%fG;=SlqU#GEF(L}!H*I8q6$-lUwDK-B1;(=rvK&&!nhz2rGO>+JA~n#Nse%y zLZvEDObm}P0>t~M93r$yS=&!MLcvl9Bgi0Xkg^{w!3fn_P@4e-9D)*5yZ70AgAtFn zq;={HBL?Zp;VfC^9vJBL{^7&VKlV=k(+dt*PsP3OL#`$xN{?x&T(Run&XnUs@?rlI z`0Kc|b*)f zlc)1ex`=ifZPnisTwLO8J16YL!VR6jb8W6*d=t*rjC0PlexcvS=(PI$IX+4=p#HZu zoyrOOzkYJ!sqQ%DBcCXv#|>D?8FpHoIC1X}MYSHunl8r5l}V_@u6XoeExR}U ze==An*=A>E^<&%<)cN-PdXj#f>!qG`)1>fpRK@<=c7-+@+_fkEs&BF7wXyXDBX@^G z5C6@0+?C?@N80#`Oq0@$oXPOGNjJxKC9=vo7H7Bp@7BpiYt7?}Qyy<8Iev|+R|b4n z+8)d!dpneX-3c1Bf^LU2`20I--KUi=k`2`+NGvmKbXBaUOk7nOcF=q6KJ6)QSH}94LS|VxB4)_UV(3ua z8(w=sa>8RpYy^1A9x)hgF?)M{iDgl{o3Dq^G$uxXtv{yQ~nk^cAj*^>#K#+~T5QL-ZH@ z=CeZ2Acq#eYf46u^Zl+xGsZ}}nMOP4W7LkXbE_||oH~)sVq06XSo2uydDfO}sk$4( zVY1raAJV=38B19?s|&-d7d+K@P@4BnxvRnZzH8{gUzS~2Ta)@>;J=N3;lvh?>X$9gX?S1;&V{LC8t*oX-KS@u0C_1m4* z%HqsDezA;l$f|7%=uWdw+VRaL;gpLukoU>L4vslJG7dA}_tZm7I>nx74X+-zb|U4ik|Cv9nn@Q*W4gEu8bG^76}9 zYqEFwX;eovzTkTnJG`rEx^SU;DGEA;R~g-T>?6sICL;@Pn*L;h?$Ky9Y_gy2{%UGI z#B6MJO~<^4zATU*G(wn$cuSlI@GmmuEo7pOt)D zKBo8ee9knTa)Y@Y$4qh%ur_+m5<~hWhbG_rM-|>$zyak=PjG}_CK-2cv#u`AOjuf7 zdN!kJ)2n1{qo!v8b>Cd#6Sp?^v@B!^bf)c(+?^HrhOssC33%0cY(dc7>e4e_+3sgG dA~L;pIN9uVK3h>TJ+4B1xoyyv{{K$^;Qxi8jKKf^ From 9f54cfcd7a584f413db731052ebed921acfc71ea Mon Sep 17 00:00:00 2001 From: FileEX Date: Tue, 8 Oct 2024 03:44:41 +0200 Subject: [PATCH 11/40] Add new function spawnVehicleFlyingComponent (#3592) --- Client/game_sa/CAutomobileSA.h | 35 +----- Client/game_sa/CBikeSA.h | 18 ++- Client/game_sa/CBmxSA.h | 16 +++ Client/game_sa/CBoatSA.h | 20 +++- Client/game_sa/CTrainSA.h | 44 ++++--- Client/game_sa/CVehicleSA.cpp | 109 +++++++++++++++--- Client/game_sa/CVehicleSA.h | 16 ++- .../mods/deathmatch/logic/CClientVehicle.cpp | 8 ++ Client/mods/deathmatch/logic/CClientVehicle.h | 2 + .../logic/luadefs/CLuaVehicleDefs.cpp | 69 ++++++++++- .../logic/luadefs/CLuaVehicleDefs.h | 2 + .../deathmatch/logic/rpc/CVehicleRPCs.cpp | 14 +++ .../mods/deathmatch/logic/rpc/CVehicleRPCs.h | 1 + Client/sdk/game/CDamageManager.h | 43 +++++++ Client/sdk/game/CVehicle.h | 2 +- .../logic/CPerfStat.RPCPacketUsage.cpp | 1 + .../logic/CStaticFunctionDefinitions.cpp | 11 ++ .../logic/CStaticFunctionDefinitions.h | 1 + Server/mods/deathmatch/logic/CVehicle.h | 43 +++++++ .../logic/luadefs/CLuaVehicleDefs.cpp | 64 ++++++++++ .../logic/luadefs/CLuaVehicleDefs.h | 2 + Shared/sdk/net/rpc_enums.h | 2 + 22 files changed, 442 insertions(+), 81 deletions(-) diff --git a/Client/game_sa/CAutomobileSA.h b/Client/game_sa/CAutomobileSA.h index 701030a5a9..921c6638b3 100644 --- a/Client/game_sa/CAutomobileSA.h +++ b/Client/game_sa/CAutomobileSA.h @@ -21,39 +21,6 @@ #define MAX_PASSENGER_COUNT 8 #define MAX_DOORS 6 // also in CDamageManager -namespace eCarNode -{ - enum - { - NONE = 0, - CHASSIS = 1, - WHEEL_RF = 2, - WHEEL_RM = 3, - WHEEL_RB = 4, - WHEEL_LF = 5, - WHEEL_LM = 6, - WHEEL_LB = 7, - DOOR_RF = 8, - DOOR_RR = 9, - DOOR_LF = 10, - DOOR_LR = 11, - BUMP_FRONT = 12, - BUMP_REAR = 13, - WING_RF = 14, - WING_LF = 15, - BONNET = 16, - BOOT = 17, - WINDSCREEN = 18, - EXHAUST = 19, - MISC_A = 20, - MISC_B = 21, - MISC_C = 22, - MISC_D = 23, - MISC_E = 24, - NUM_NODES - }; -}; - class CBouncingPanelSAInterface { public: @@ -70,7 +37,7 @@ class CAutomobileSAInterface : public CVehicleSAInterface public: CDamageManagerSAInterface m_damageManager; CDoorSAInterface m_doors[MAX_DOORS]; - RwFrame* m_aCarNodes[eCarNode::NUM_NODES]; + RwFrame* m_aCarNodes[static_cast(eCarNodes::NUM_NODES)]; CBouncingPanelSAInterface m_panels[3]; CDoorSAInterface m_swingingChassis; CColPointSAInterface m_wheelColPoint[MAX_WHEELS]; diff --git a/Client/game_sa/CBikeSA.h b/Client/game_sa/CBikeSA.h index 65602ae525..083592e5fd 100644 --- a/Client/game_sa/CBikeSA.h +++ b/Client/game_sa/CBikeSA.h @@ -14,6 +14,22 @@ #include #include "CVehicleSA.h" +enum class eBikeNodes +{ + NONE = 0, + CHASSIS, + FORKS_FRONT, + FORKS_REAR, + WHEEL_FRONT, + WHEEL_REAR, + MUDGUARD, + HANDLEBARS, + MISC_A, + MISC_B, + + NUM_NODES +}; + struct sRideAnimData { int32 iAnimGroup; @@ -29,7 +45,7 @@ static_assert(sizeof(sRideAnimData) == 0x1C, "Invalid size for sRideAnimData"); class CBikeSAInterface : public CVehicleSAInterface { public: - int32 m_apModelNodes[10]; + RwFrame* m_apModelNodes[static_cast(eBikeNodes::NUM_NODES)]; int8 m_bLeanMatrixCalculated; int8 pad0[3]; // Maybe prev value is int32 int8 m_mLeanMatrix[72]; diff --git a/Client/game_sa/CBmxSA.h b/Client/game_sa/CBmxSA.h index 250a8bd5e6..dd64755c6d 100644 --- a/Client/game_sa/CBmxSA.h +++ b/Client/game_sa/CBmxSA.h @@ -14,6 +14,22 @@ #include #include "CBikeSA.h" +enum class eBmxNodes +{ + NONE = 0, + CHASSIS, + FORKS_FRONT, + FORKS_REAR, + WHEEL_FRONT, + WHEEL_REAR, + HANDLEBARS, + CHAINSET, + PEDAL_R, + PEDAL_L, + + NUM_NODES +}; + class CBmxSAInterface : public CBikeSAInterface { // fill this diff --git a/Client/game_sa/CBoatSA.h b/Client/game_sa/CBoatSA.h index 34f90003c7..6df3268bf0 100644 --- a/Client/game_sa/CBoatSA.h +++ b/Client/game_sa/CBoatSA.h @@ -14,12 +14,30 @@ #include #include "CVehicleSA.h" +enum class eBoatNodes +{ + NONE = 0, + MOVING, + WINDSCREEN, + RUDDER, + FLAP_LEFT, + FLAP_RIGHT, + REARFLAP_LEFT, + REARFLAP_RIGHT, + STATIC_PROP, + MOVING_PROP, + STATIC_PROP2, + MOVING_PROP2, + + NUM_NODES +}; + class CBoatSAInterface : public CVehicleSAInterface { public: uint32 pad1[3]; // 1440 uint32 BoatFlags; // 1452 - RwFrame* pBoatParts[11]; // 1456 [[ find out correct size + RwFrame* pBoatParts[static_cast(eBoatNodes::NUM_NODES)]; // 1456 uint32 pad2[3]; // 1500 uint16 pad3; // 1512 uint8 pad4[2]; // 1514 diff --git a/Client/game_sa/CTrainSA.h b/Client/game_sa/CTrainSA.h index 969fa907ee..84b25a6108 100644 --- a/Client/game_sa/CTrainSA.h +++ b/Client/game_sa/CTrainSA.h @@ -14,29 +14,27 @@ #include "CVehicleSA.h" #include "CDoorSA.h" -namespace eTrainNode +enum class eTrainNodes { - enum - { - NONE = 0, - DOOR_LF = 1, - DOOR_RF = 2, - WHEEL_RF1 = 3, - WHEEL_RF2 = 4, - WHEEL_RF3 = 5, - WHEEL_RB1 = 6, - WHEEL_RB2 = 7, - WHEEL_RB3 = 8, - WHEEL_LF1 = 9, - WHEEL_LF2 = 10, - WHEEL_LF3 = 11, - WHEEL_LB1 = 12, - WHEEL_LB2 = 13, - WHEEL_LB3 = 14, - BOGIE_FRONT = 15, - BOGIE_REAR = 16, - NUM_NODES - }; + NONE = 0, + DOOR_LF, + DOOR_RF, + WHEEL_RF1, + WHEEL_RF2, + WHEEL_RF3, + WHEEL_RB1, + WHEEL_RB2, + WHEEL_RB3, + WHEEL_LF1, + WHEEL_LF2, + WHEEL_LF3, + WHEEL_LB1, + WHEEL_LB2, + WHEEL_LB3, + BOGIE_FRONT, + BOGIE_REAR, + + NUM_NODES }; enum class eTrainPassengersGenerationState : unsigned char @@ -101,7 +99,7 @@ class CTrainSAInterface : public CVehicleSAInterface CTrainSAInterface* m_prevCarriage; CTrainSAInterface* m_nextCarriage; CDoorSAInterface m_aDoors[MAX_DOORS]; - RwFrame* m_aTrainNodes[eTrainNode::NUM_NODES]; + RwFrame* m_aTrainNodes[static_cast(eTrainNodes::NUM_NODES)]; }; static_assert(sizeof(CTrainSAInterface) == 0x6AC, "Invalid size for CTrainSAInterface"); diff --git a/Client/game_sa/CVehicleSA.cpp b/Client/game_sa/CVehicleSA.cpp index ab1635c91d..779661ed8a 100644 --- a/Client/game_sa/CVehicleSA.cpp +++ b/Client/game_sa/CVehicleSA.cpp @@ -21,6 +21,7 @@ #include "CTrainSA.h" #include "CPlaneSA.h" #include "CVehicleSA.h" +#include "CBoatSA.h" #include "CVisibilityPluginsSA.h" #include "CWorldSA.h" #include "gamesa_renderware.h" @@ -1504,27 +1505,97 @@ void CVehicleSA::SetGravity(const CVector* pvecGravity) m_vecGravity = *pvecGravity; } -CObject* CVehicleSA::SpawnFlyingComponent(int i_1, unsigned int ui_2) +bool CVehicleSA::SpawnFlyingComponent(const eCarNodes& nodeIndex, const eCarComponentCollisionTypes& collisionType, std::int32_t removalTime) { - DWORD dwReturn; - DWORD dwThis = (DWORD)GetInterface(); - DWORD dwFunc = FUNC_CAutomobile__SpawnFlyingComponent; - _asm + if (nodeIndex == eCarNodes::NONE) + return false; + + DWORD nodesOffset = OFFSET_CAutomobile_Nodes; + RwFrame* defaultBikeChassisFrame = nullptr; + + // CBike, CBmx, CBoat and CTrain don't inherit CAutomobile so let's do it manually! + switch (static_cast(GetVehicleInterface()->m_vehicleClass)) { - mov ecx, dwThis - push ui_2 - push i_1 - call dwFunc - mov dwReturn, eax + case VehicleClass::AUTOMOBILE: + case VehicleClass::MONSTER_TRUCK: + case VehicleClass::PLANE: + case VehicleClass::HELI: + case VehicleClass::TRAILER: + case VehicleClass::QUAD: + { + nodesOffset = OFFSET_CAutomobile_Nodes; + break; + } + case VehicleClass::TRAIN: + { + if (static_cast(nodeIndex) >= eTrainNodes::NUM_NODES) + return false; + + nodesOffset = OFFSET_CTrain_Nodes; + break; + } + case VehicleClass::BIKE: + case VehicleClass::BMX: + { + auto* bikeInterface = static_cast(GetVehicleInterface()); + if (!bikeInterface) + return false; + + if (static_cast(nodeIndex) >= eBikeNodes::NUM_NODES) + return false; + + nodesOffset = OFFSET_CBike_Nodes; + if (static_cast(nodeIndex) != eBikeNodes::CHASSIS) + break; + + // Set the correct "bike_chassis" frame for bikes + defaultBikeChassisFrame = bikeInterface->m_apModelNodes[1]; + if (defaultBikeChassisFrame && std::strcmp(defaultBikeChassisFrame->szName, "chassis_dummy") == 0) + { + RwFrame* correctChassisFrame = RwFrameFindFrame(RpGetFrame(bikeInterface->m_pRwObject), "chassis"); + if (correctChassisFrame) + bikeInterface->m_apModelNodes[1] = correctChassisFrame; + } + break; + } + case VehicleClass::BOAT: + { + if (static_cast(nodeIndex) >= eBoatNodes::NUM_NODES) + return false; + + nodesOffset = OFFSET_CBoat_Nodes; + break; + } + default: + return false; } - CObject* pObject = NULL; - if (dwReturn) + // Patch nodes array in CAutomobile::SpawnFlyingComponent + MemPut(0x6A85B3, nodesOffset); + MemPut(0x6A8631, nodesOffset); + + auto* componentObject = ((CObjectSAInterface * (__thiscall*)(CVehicleSAInterface*, int, int)) FUNC_CAutomobile__SpawnFlyingComponent)(GetVehicleInterface(), static_cast(nodeIndex), static_cast(collisionType)); + + // Restore default nodes array in CAutomobile::SpawnFlyingComponent + // CAutomobile::m_aCarNodes offset + MemPut(0x6A85B3, 0x648); + MemPut(0x6A8631, 0x648); + + // Restore default chassis frame for bikes + if (static_cast(nodeIndex) == eBikeNodes::CHASSIS && defaultBikeChassisFrame) { - SClientEntity* pObjectClientEntity = pGame->GetPools()->GetObject((DWORD*)dwReturn); - pObject = pObjectClientEntity ? pObjectClientEntity->pEntity : nullptr; + auto* bikeInterface = static_cast(GetVehicleInterface()); + if (bikeInterface && bikeInterface->m_apModelNodes) + bikeInterface->m_apModelNodes[1] = defaultBikeChassisFrame; } - return pObject; + + if (removalTime <= -1 || !componentObject) + return true; + + std::uint32_t CTimer_ms = *reinterpret_cast(VAR_CTimer_snTimeInMilliseconds); + componentObject->uiObjectRemovalTime = CTimer_ms + static_cast(removalTime); + + return true; } void CVehicleSA::SetWheelVisibility(eWheelPosition wheel, bool bVisible) @@ -1534,16 +1605,16 @@ void CVehicleSA::SetWheelVisibility(eWheelPosition wheel, bool bVisible) switch (wheel) { case FRONT_LEFT_WHEEL: - pFrame = vehicle->m_aCarNodes[eCarNode::WHEEL_LF]; + pFrame = vehicle->m_aCarNodes[static_cast(eCarNodes::WHEEL_LF)]; break; case REAR_LEFT_WHEEL: - pFrame = vehicle->m_aCarNodes[eCarNode::WHEEL_LB]; + pFrame = vehicle->m_aCarNodes[static_cast(eCarNodes::WHEEL_LB)]; break; case FRONT_RIGHT_WHEEL: - pFrame = vehicle->m_aCarNodes[eCarNode::WHEEL_RF]; + pFrame = vehicle->m_aCarNodes[static_cast(eCarNodes::WHEEL_RF)]; break; case REAR_RIGHT_WHEEL: - pFrame = vehicle->m_aCarNodes[eCarNode::WHEEL_RB]; + pFrame = vehicle->m_aCarNodes[static_cast(eCarNodes::WHEEL_RB)]; break; default: break; diff --git a/Client/game_sa/CVehicleSA.h b/Client/game_sa/CVehicleSA.h index 58632dabbf..382a071ac1 100644 --- a/Client/game_sa/CVehicleSA.h +++ b/Client/game_sa/CVehicleSA.h @@ -94,6 +94,20 @@ struct RwTexture; #define FUNC_CAutomobile_OnVehiclePreRender 0x6ABCFD #define FUNC_CVehicle_DoSunGlare 0x6DD6F0 +// CClumpModelInfo::GetFrameFromName +#define FUNC_CClumpModelInfo_GetFrameFromName 0x4C5400 + +// CAutomobile::m_aCarNodes +// CTrain::m_aTrainNodes +// CBike::m_apModelNodes +// CBoat::pBoatParts +#define OFFSET_CAutomobile_Nodes 0x648 +#define OFFSET_CTrain_Nodes 0x668 +#define OFFSET_CBike_Nodes 0x5A0 +#define OFFSET_CBoat_Nodes 0x5B0 + +#define VAR_CTimer_snTimeInMilliseconds 0xB7CB84 + struct SRailNodeSA { short sX; // x coordinate times 8 @@ -604,7 +618,7 @@ class CVehicleSA : public virtual CVehicle, public virtual CPhysicalSA SharedUtil::SColor GetHeadLightColor() { return m_HeadLightColor; } void SetHeadLightColor(const SharedUtil::SColor color) { m_HeadLightColor = color; } - CObject* SpawnFlyingComponent(int i_1, unsigned int ui_2); + bool SpawnFlyingComponent(const eCarNodes& nodeIndex, const eCarComponentCollisionTypes& collisionType, std::int32_t removalTime = -1); void SetWheelVisibility(eWheelPosition wheel, bool bVisible); CVector GetWheelPosition(eWheelPosition wheel); diff --git a/Client/mods/deathmatch/logic/CClientVehicle.cpp b/Client/mods/deathmatch/logic/CClientVehicle.cpp index e0e27dd417..a45d850a30 100644 --- a/Client/mods/deathmatch/logic/CClientVehicle.cpp +++ b/Client/mods/deathmatch/logic/CClientVehicle.cpp @@ -5037,6 +5037,14 @@ void CClientVehicle::ResetWheelScale() m_bWheelScaleChanged = false; } +bool CClientVehicle::SpawnFlyingComponent(const eCarNodes& nodeID, const eCarComponentCollisionTypes& collisionType, std::int32_t removalTime) +{ + if (!m_pVehicle) + return false; + + return m_pVehicle->SpawnFlyingComponent(nodeID, collisionType, removalTime); +} + CVector CClientVehicle::GetEntryPoint(std::uint32_t entryPointIndex) { static const uint32_t lookup[4] = {10, 8, 11, 9}; diff --git a/Client/mods/deathmatch/logic/CClientVehicle.h b/Client/mods/deathmatch/logic/CClientVehicle.h index e2c83c618e..76ec08eff1 100644 --- a/Client/mods/deathmatch/logic/CClientVehicle.h +++ b/Client/mods/deathmatch/logic/CClientVehicle.h @@ -543,6 +543,8 @@ class CClientVehicle : public CClientStreamElement bool SetDummyPosition(eVehicleDummies dummy, const CVector& position); bool ResetDummyPositions(); + bool SpawnFlyingComponent(const eCarNodes& nodeID, const eCarComponentCollisionTypes& collisionType, std::int32_t removalTime); + CVector GetEntryPoint(std::uint32_t entryPointIndex); protected: diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index b35bfee24b..6ac42bf386 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -155,6 +155,7 @@ void CLuaVehicleDefs::LoadFunctions() {"setVehicleVariant", ArgumentParser}, {"setVehicleWheelScale", ArgumentParser}, {"setVehicleModelWheelSize", ArgumentParser}, + {"spawnVehicleFlyingComponent", ArgumentParser}, }; // Add functions @@ -301,6 +302,8 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "addUpgrade", "addVehicleUpgrade"); lua_classfunction(luaVM, "removeUpgrade", "removeVehicleUpgrade"); + lua_classfunction(luaVM, "spawnFlyingComponent", "spawnVehicleFlyingComponent"); + lua_classvariable(luaVM, "locked", "setVehicleLocked", "isVehicleLocked"); lua_classvariable(luaVM, "controller", NULL, "getVehicleController"); lua_classvariable(luaVM, "occupants", NULL, "getVehicleOccupants"); @@ -4233,7 +4236,7 @@ bool CLuaVehicleDefs::BlowVehicle(CClientEntity* entity, std::optional wit { return CStaticFunctionDefinitions::BlowVehicle(*entity, withExplosion); } - + std::variant, 4>> CLuaVehicleDefs::GetVehicleEntryPoints(CClientVehicle* vehicle) { auto entryPointVectors = OOP_GetVehicleEntryPoints(vehicle); @@ -4273,3 +4276,67 @@ std::variant> CLuaVehicleDefs::OOP_GetVehicleEntryP return entryPoints; } + +bool CLuaVehicleDefs::SpawnVehicleFlyingComponent(CClientVehicle* const vehicle, std::uint8_t nodeIndex, std::optional componentCollisionType, + std::optional removalTime) +{ + auto partNodeIndex = static_cast(nodeIndex); + auto collisionType = componentCollisionType.has_value() ? static_cast(componentCollisionType.value()) + : eCarComponentCollisionTypes::COL_NODE_PANEL; + + if (nodeIndex < 1 || partNodeIndex >= eCarNodes::NUM_NODES) + throw std::invalid_argument("Invalid component index"); + + if (collisionType >= eCarComponentCollisionTypes::COL_NODES_NUM) + throw std::invalid_argument("Invalid collision type index"); + + if (!componentCollisionType.has_value()) + { + switch (partNodeIndex) + { + case eCarNodes::WHEEL_RF: + case eCarNodes::WHEEL_RB: + case eCarNodes::WHEEL_LF: + case eCarNodes::WHEEL_LB: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_WHEEL; + break; + } + case eCarNodes::DOOR_RF: + case eCarNodes::DOOR_RR: + case eCarNodes::DOOR_LF: + case eCarNodes::DOOR_LR: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_DOOR; + break; + } + case eCarNodes::BUMP_FRONT: + case eCarNodes::BUMP_REAR: + case eCarNodes::WHEEL_LM: + case eCarNodes::WHEEL_RM: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_BUMPER; + break; + } + case eCarNodes::BOOT: + case eCarNodes::CHASSIS: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_BOOT; + break; + } + case eCarNodes::BONNET: + case eCarNodes::WINDSCREEN: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_BONNET; + break; + } + default: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_PANEL; + break; + } + } + } + + return vehicle->SpawnFlyingComponent(partNodeIndex, collisionType, removalTime.value_or(-1)); +} diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index 5c2e908d58..28c2f5e372 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -179,4 +179,6 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(SetVehicleComponentVisible); LUA_DECLARE(GetVehicleComponentVisible); LUA_DECLARE(GetVehicleComponents); + + static bool SpawnVehicleFlyingComponent(CClientVehicle* const vehicle, std::uint8_t nodeIndex, std::optional componentCollisionType, std::optional removalTime); }; diff --git a/Client/mods/deathmatch/logic/rpc/CVehicleRPCs.cpp b/Client/mods/deathmatch/logic/rpc/CVehicleRPCs.cpp index be586965db..7915c2c7d4 100644 --- a/Client/mods/deathmatch/logic/rpc/CVehicleRPCs.cpp +++ b/Client/mods/deathmatch/logic/rpc/CVehicleRPCs.cpp @@ -52,6 +52,7 @@ void CVehicleRPCs::LoadFunctions() AddHandler(REMOVE_VEHICLE_SIRENS, RemoveVehicleSirens, "removeVehicleSirens"); AddHandler(SET_VEHICLE_SIRENS, SetVehicleSirens, "setVehicleSirens"); AddHandler(SET_VEHICLE_PLATE_TEXT, SetVehiclePlateText, "setVehiclePlateText"); + AddHandler(SPAWN_VEHICLE_FLYING_COMPONENT, SpawnVehicleFlyingComponent, "spawnVehicleFlyingComponent"); } void CVehicleRPCs::DestroyAllVehicles(NetBitStreamInterface& bitStream) @@ -653,3 +654,16 @@ void CVehicleRPCs::SetVehiclePlateText(CClientEntity* pSourceEntity, NetBitStrea } } } + +void CVehicleRPCs::SpawnVehicleFlyingComponent(CClientEntity* const sourceEntity, NetBitStreamInterface& bitStream) +{ + CClientVehicle* vehicle = m_pVehicleManager->Get(sourceEntity->GetID()); + if (!vehicle) + return; + + std::uint8_t nodeIndex, collisionType; + std::int32_t removalTime; + + if (bitStream.Read(nodeIndex) && bitStream.Read(collisionType) && bitStream.Read(removalTime)) + vehicle->SpawnFlyingComponent(static_cast(nodeIndex), static_cast(collisionType), removalTime); +} diff --git a/Client/mods/deathmatch/logic/rpc/CVehicleRPCs.h b/Client/mods/deathmatch/logic/rpc/CVehicleRPCs.h index e63d609fdf..6d4e9f5d19 100644 --- a/Client/mods/deathmatch/logic/rpc/CVehicleRPCs.h +++ b/Client/mods/deathmatch/logic/rpc/CVehicleRPCs.h @@ -57,4 +57,5 @@ class CVehicleRPCs : public CRPCFunctions DECLARE_ELEMENT_RPC(RemoveVehicleSirens); DECLARE_ELEMENT_RPC(SetVehicleSirens); DECLARE_ELEMENT_RPC(SetVehiclePlateText); + DECLARE_ELEMENT_RPC(SpawnVehicleFlyingComponent); }; diff --git a/Client/sdk/game/CDamageManager.h b/Client/sdk/game/CDamageManager.h index 81fda71267..9c4fcc2348 100644 --- a/Client/sdk/game/CDamageManager.h +++ b/Client/sdk/game/CDamageManager.h @@ -121,6 +121,49 @@ enum eLights MAX_LIGHTS // MUST BE 16 OR LESS }; +enum class eCarNodes +{ + NONE = 0, + CHASSIS, + WHEEL_RF, + WHEEL_RM, + WHEEL_RB, + WHEEL_LF, + WHEEL_LM, + WHEEL_LB, + DOOR_RF, + DOOR_RR, + DOOR_LF, + DOOR_LR, + BUMP_FRONT, + BUMP_REAR, + WING_RF, + WING_LF, + BONNET, + BOOT, + WINDSCREEN, + EXHAUST, + MISC_A, + MISC_B, + MISC_C, + MISC_D, + MISC_E, + + NUM_NODES +}; + +enum class eCarComponentCollisionTypes +{ + COL_NODE_BUMPER = 0, + COL_NODE_WHEEL, + COL_NODE_DOOR, + COL_NODE_BONNET, + COL_NODE_BOOT, + COL_NODE_PANEL, + + COL_NODES_NUM +}; + class CDamageManager { public: diff --git a/Client/sdk/game/CVehicle.h b/Client/sdk/game/CVehicle.h index 356fe40470..a5a4f1cdd4 100644 --- a/Client/sdk/game/CVehicle.h +++ b/Client/sdk/game/CVehicle.h @@ -264,7 +264,7 @@ class CVehicle : public virtual CPhysical virtual SColor GetHeadLightColor() = 0; virtual void SetHeadLightColor(const SColor color) = 0; - virtual CObject* SpawnFlyingComponent(int i_1, unsigned int ui_2) = 0; + virtual bool SpawnFlyingComponent(const eCarNodes& nodeIndex, const eCarComponentCollisionTypes& collisionType, std::int32_t removalTime = -1) = 0; virtual void SetWheelVisibility(eWheelPosition wheel, bool bVisible) = 0; virtual CVector GetWheelPosition(eWheelPosition wheel) = 0; diff --git a/Server/mods/deathmatch/logic/CPerfStat.RPCPacketUsage.cpp b/Server/mods/deathmatch/logic/CPerfStat.RPCPacketUsage.cpp index 6a0604b65b..fd4bd0b8bc 100644 --- a/Server/mods/deathmatch/logic/CPerfStat.RPCPacketUsage.cpp +++ b/Server/mods/deathmatch/logic/CPerfStat.RPCPacketUsage.cpp @@ -230,6 +230,7 @@ ADD_ENUM1(SET_MARKER_TARGET_ARROW_PROPERTIES) ADD_ENUM1(RESPAWN_OBJECT) ADD_ENUM1(TOGGLE_OBJECT_RESPAWN) ADD_ENUM1(RESET_WORLD_PROPERTIES) +ADD_ENUM1(SPAWN_VEHICLE_FLYING_COMPONENT) IMPLEMENT_ENUM_END("eElementRPCFunctions") DECLARE_ENUM(CRPCFunctions::eRPCFunctions); diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index ad06e54a70..67764f8057 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -12488,3 +12488,14 @@ bool CStaticFunctionDefinitions::SetColPolygonHeight(CColPolygon* pColPolygon, f return false; } + +bool CStaticFunctionDefinitions::SpawnVehicleFlyingComponent(CVehicle* const vehicle, std::uint8_t nodeIndex, std::uint8_t collisionType, std::int32_t removalTime) +{ + CBitStream bitStream; + bitStream.pBitStream->Write(nodeIndex); + bitStream.pBitStream->Write(collisionType); + bitStream.pBitStream->Write(removalTime); + m_pPlayerManager->BroadcastOnlyJoined(CElementRPCPacket(vehicle, SPAWN_VEHICLE_FLYING_COMPONENT, *bitStream.pBitStream)); + + return true; +} diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h index bb0e99c0ee..dd6202208f 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h @@ -241,6 +241,7 @@ class CStaticFunctionDefinitions // Vehicle create/destroy functions static CVehicle* CreateVehicle(CResource* pResource, unsigned short usModel, const CVector& vecPosition, const CVector& vecRotation, const char* szRegPlate, unsigned char ucVariant, unsigned char ucVariant2, bool bSynced); + static bool SpawnVehicleFlyingComponent(CVehicle* const vehicle, std::uint8_t nodeIndex, std::uint8_t collisionType, std::int32_t removalTime = -1); // Vehicle get functions static bool GetVehicleVariant(CVehicle* pVehicle, unsigned char& ucVariant, unsigned char& ucVariant2); diff --git a/Server/mods/deathmatch/logic/CVehicle.h b/Server/mods/deathmatch/logic/CVehicle.h index 10de01e625..d5dbb43243 100644 --- a/Server/mods/deathmatch/logic/CVehicle.h +++ b/Server/mods/deathmatch/logic/CVehicle.h @@ -111,6 +111,49 @@ enum eVehicleType VEHICLE_TRAILER }; +enum class eCarNodes +{ + NONE = 0, + CHASSIS, + WHEEL_RF, + WHEEL_RM, + WHEEL_RB, + WHEEL_LF, + WHEEL_LM, + WHEEL_LB, + DOOR_RF, + DOOR_RR, + DOOR_LF, + DOOR_LR, + BUMP_FRONT, + BUMP_REAR, + WING_RF, + WING_LF, + BONNET, + BOOT, + WINDSCREEN, + EXHAUST, + MISC_A, + MISC_B, + MISC_C, + MISC_D, + MISC_E, + + NUM_NODES +}; + +enum class eCarComponentCollisionTypes +{ + COL_NODE_BUMPER = 0, + COL_NODE_WHEEL, + COL_NODE_DOOR, + COL_NODE_BONNET, + COL_NODE_BOOT, + COL_NODE_PANEL, + + COL_NODES_NUM +}; + #define SIREN_TYPE_FIRST 1 #define SIREN_TYPE_LAST 6 #define SIREN_ID_MAX 7 diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 294ea7310c..d34d8fe579 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -22,6 +22,7 @@ void CLuaVehicleDefs::LoadFunctions() constexpr static const std::pair functions[]{ // Vehicle create/destroy funcs {"createVehicle", CreateVehicle}, + {"spawnVehicleFlyingComponent", ArgumentParser}, // Vehicle get funcs {"getVehicleType", GetVehicleType}, @@ -241,6 +242,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM) // lua_classfunction(luaVM, "setTrack", "setTrainTrack"); lua_classfunction(luaVM, "setTrainPosition", "setTrainPosition"); lua_classfunction(luaVM, "setTrainSpeed", "setTrainSpeed"); // Reduce confusion + lua_classfunction(luaVM, "spawnFlyingComponent", "spawnVehicleFlyingComponent"); lua_classvariable(luaVM, "damageProof", "setVehicleDamageProof", "isVehicleDamageProof"); lua_classvariable(luaVM, "locked", "setVehicleLocked", "isVehicleLocked"); @@ -2982,3 +2984,65 @@ int CLuaVehicleDefs::SetVehiclePlateText(lua_State* luaVM) lua_pushboolean(luaVM, false); return 1; } + +bool CLuaVehicleDefs::SpawnVehicleFlyingComponent(CVehicle* const vehicle, std::uint8_t nodeIndex, std::optional componentCollisionType, std::optional removalTime) +{ + auto partNodeIndex = static_cast(nodeIndex); + auto collisionType = componentCollisionType.has_value() ? static_cast(componentCollisionType.value()) : eCarComponentCollisionTypes::COL_NODE_PANEL; + + if (nodeIndex < 1 || partNodeIndex >= eCarNodes::NUM_NODES) + throw std::invalid_argument("Invalid component index"); + + if (collisionType >= eCarComponentCollisionTypes::COL_NODES_NUM) + throw std::invalid_argument("Invalid collision type index"); + + if (!componentCollisionType.has_value()) + { + switch (partNodeIndex) + { + case eCarNodes::WHEEL_RF: + case eCarNodes::WHEEL_RB: + case eCarNodes::WHEEL_LF: + case eCarNodes::WHEEL_LB: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_WHEEL; + break; + } + case eCarNodes::DOOR_RF: + case eCarNodes::DOOR_RR: + case eCarNodes::DOOR_LF: + case eCarNodes::DOOR_LR: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_DOOR; + break; + } + case eCarNodes::BUMP_FRONT: + case eCarNodes::BUMP_REAR: + case eCarNodes::WHEEL_LM: + case eCarNodes::WHEEL_RM: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_BUMPER; + break; + } + case eCarNodes::BOOT: + case eCarNodes::CHASSIS: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_BOOT; + break; + } + case eCarNodes::BONNET: + case eCarNodes::WINDSCREEN: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_BONNET; + break; + } + default: + { + collisionType = eCarComponentCollisionTypes::COL_NODE_PANEL; + break; + } + } + } + + return CStaticFunctionDefinitions::SpawnVehicleFlyingComponent(vehicle, nodeIndex, static_cast(collisionType), removalTime.value_or(-1)); +} diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index 3200e2ada3..b349736113 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Server/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -125,4 +125,6 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleSirens); LUA_DECLARE(GetVehicleSirenParams); LUA_DECLARE(SetVehiclePlateText); + + static bool SpawnVehicleFlyingComponent(CVehicle* const vehicle, std::uint8_t nodeIndex, std::optional componentCollisionType, std::optional removalTime); }; diff --git a/Shared/sdk/net/rpc_enums.h b/Shared/sdk/net/rpc_enums.h index 6f63818b46..2318908f4e 100644 --- a/Shared/sdk/net/rpc_enums.h +++ b/Shared/sdk/net/rpc_enums.h @@ -288,5 +288,7 @@ enum eElementRPCFunctions RESET_WORLD_PROPERTIES, + SPAWN_VEHICLE_FLYING_COMPONENT, + NUM_RPC_FUNCS // Add above this line }; From 2318836b00cb7af03c3df0679fcefa33b6743caf Mon Sep 17 00:00:00 2001 From: Shady <68560906+shadylua@users.noreply.github.com> Date: Tue, 8 Oct 2024 05:28:35 +0300 Subject: [PATCH 12/40] Remove duplicate user names in CNickGen.cpp (#3777) * Update CNickGen.cpp * Apply clang-format --------- Co-authored-by: Uladzislau Nikalayevich --- Client/core/CNickGen.cpp | 340 +++++++++++++++++++-------------------- 1 file changed, 169 insertions(+), 171 deletions(-) diff --git a/Client/core/CNickGen.cpp b/Client/core/CNickGen.cpp index 13f38c470b..a4cb2738e2 100644 --- a/Client/core/CNickGen.cpp +++ b/Client/core/CNickGen.cpp @@ -22,180 +22,178 @@ const char* const CNickGen::m_szAdjectives[] = { "Awake", "Aware", "Awesome", "Awful", "Axiomatic", "Bad", "Barbarous", "Bashful", "Bawdy", "Beautiful", "Befitting", "Beneficial", "Bent", "Berserk", "Best", "Better", "Bewildered", "Big", "Billowy", "Bite-sized", "Bitter", "Bizarre", "Black", "Bloody", "Blue", "Blue-eyed", "Blushing", "Boiling", "Boorish", "Bored", "Boring", "Bouncy", "Boundless", - "Brainy", "Brash", "Brave", "Brawny", "Breakable", "Breezy", "Brief", "Bright", "Bright", "Broad", "Broken", - "Brown", "Bumpy", "Burly", "Bustling", "Busy", "Cagey", "Callous", "Calm", "Capable", "Capricious", "Careful", - "Careless", "Caring", "Cautious", "Ceaseless", "Certain", "Changeable", "Charming", "Cheap", "Cheerful", "Chemical", "Chief", - "Childlike", "Chilly", "Chivalrous", "Chubby", "Chunky", "Clammy", "Classy", "Clean", "Clear", "Clever", "Cloistered", - "Cloudy", "Closed", "Clumsy", "Cluttered", "Coherent", "Cold", "Colorful", "Colossal", "Combative", "Common", "Complete", - "Complex", "Concerned", "Condemned", "Confused", "Conscious", "Cooing", "Cool", "Courageous", "Cowardly", "Crabby", "Craven", - "Crazy", "Creepy", "Crooked", "Crowded", "Cruel", "Cuddly", "Cultured", "Cumbersome", "Curious", "Curly", "Curved", - "Curvy", "Cut", "Cute", "Cynical", "Daffy", "Daily", "Damaged", "Damaging", "Damp", "Dangerous", "Dapper", - "Dark", "Dashing", "Dazzling", "Dead", "Deadpan", "Deafening", "Dear", "Debonair", "Decisive", "Decorous", "Deep", - "Deeply", "Defeated", "Defective", "Defiant", "Delicate", "Delicious", "Delightful", "Demonic", "Delirious", "Dependent", "Depressed", - "Deranged", "Deserted", "Detailed", "Determined", "Devilish", "Didactic", "Different", "Difficult", "Diligent", "Direful", "Dirty", - "Disastrous", "Discreet", "Disgusted", "Disgusting", "Distinct", "Disturbed", "Divergent", "Dizzy", "Doubtful", "Drab", "Draconian", - "Dramatic", "Dreary", "Drunk", "Dry", "Dull", "Dusty", "Dusty", "Dynamic", "Eager", "Early", "Earthy", - "Easy", "Eatable", "Economic", "Educated", "Efficient", "Eight", "Elastic", "Elated", "Elderly", "Electric", "Elegant", - "Elfin", "Elite", "Eminent", "Empty", "Enchanted", "Enchanting", "Endurable", "Energetic", "Enormous", "Envious", "Equable", - "Equal", "Erect", "Erratic", "Ethereal", "Evanescent", "Evasive", "Even", "Excellent", "Excited", "Exciting", "Exclusive", - "Exotic", "Expensive", "Exuberant", "Exultant", "Fabulous", "Faded", "Faint", "Fair", "Faithful", "Fallacious", "False", - "Familiar", "Famous", "Fanatical", "Fancy", "Fantastic", "Far", "Far-flung", "Fascinated", "Fast", "Fat", "Faulty", - "Fearful", "Fearless", "Feeble", "Feigned", "Female", "Fertile", "Festive", "Few", "Fierce", "Filthy", "Fine", - "Finicky", "First", "Five", "Fixed", "Flagrant", "Flaky", "Flashy", "Flat", "Flawless", "Flimsy", "Flippant", - "Flowery", "Fluffy", "Fluttering", "Foamy", "Foolish", "Foregoing", "Forgetful", "Fortunate", "Four", "Frail", "Fragile", - "Frantic", "Free", "Freezing", "Frequent", "Fresh", "Fretful", "Friendly", "Frightened", "Full", "Fumbling", "Functional", - "Funny", "Furry", "Furtive", "Future", "Futuristic", "Fuzzy", "Gabby", "Gainful", "Gamy", "Gaping", "Garrulous", - "Gaudy", "General", "Gentle", "Giant", "Giddy", "Gifted", "Gigantic", "Glamorous", "Gleaming", "Glib", "Glistening", - "Glorious", "Glossy", "Godly", "Good", "Goofy", "Gorgeous", "Graceful", "Grandiose", "Grateful", "Gratis", "Gray", - "Greasy", "Great", "Greedy", "Green", "Grey", "Grieving", "Groovy", "Grotesque", "Grouchy", "Grubby", "Gruesome", - "Grumpy", "Guarded", "Guiltless", "Gullible", "Gusty", "Guttural", "Habitual", "Half", "Hallowed", "Halting", "Handsome", - "Handsomely", "Handy", "Hanging", "Hapless", "Happy", "Hard", "Harmonious", "Harsh", "Hateful", "Heady", "Healthy", - "Heavenly", "Heavy", "Hellish", "Helpful", "Helpless", "Hesitant", "Hideous", "High", "Hilarious", "Hissing", "Historical", - "Holistic", "Hollow", "Homeless", "Homely", "Honorable", "Horrible", "Hospitable", "Hot", "Huge", "Hulking", "Humdrum", - "Humorous", "Hungry", "Hurried", "Hurt", "Hushed", "Husky", "Hypnotic", "Hysterical", "Icky", "Icy", "Idiotic", - "Ignorant", "Ill", "Illegal", "Ill-fated", "Imaginary", "Immense", "Imminent", "Impartial", "Imperfect", "Impolite", "Important", - "Imported", "Impossible", "Incredible", "Infamous", "Innate", "Innocent", "Insidious", "Internal", "Invincible", "Irate", "Irritating", - "Itchy", "Jaded", "Jagged", "Jazzy", "Jealous", "Jittery", "Jobless", "Jolly", "Joyous", "Judicious", "Juicy", - "Jumbled", "Jumpy", "Juvenile", "Kaput", "Keen", "Kind", "Kindly", "Knotty", "Knowing", "Known", "Labored", - "Lacking", "Lame", "Lamentable", "Languid", "Large", "Last", "Late", "Laughable", "Lavish", "Lazy", "Lean", - "Learned", "Left", "Legal", "Lethal", "Level", "Lewd", "Light", "Like", "Likeable", "Limping", "Literate", - "Little", "Lively", "Lively", "Living", "Lonely", "Long", "Longing", "Long-term", "Loose", "Lopsided", "Loud", - "Loutish", "Lovely", "Loving", "Low", "Lowly", "Lucky", "Ludicrous", "Lumpy", "Lush", "Luxuriant", "Lying", - "Lyrical", "Macabre", "Macho", "Maddening", "Madly", "Magenta", "Magical", "Majestic", "Makeshift", "Male", "Malicious", - "Mammoth", "Maniacal", "Many", "Marked", "Massive", "Married", "Marvelous", "Material", "Mature", "Mean", "Measly", - "Meaty", "Medical", "Meek", "Mellow", "Melodic", "Melted", "Merciful", "Mere", "Messy", "Mighty", "Military", - "Milky", "Mindless", "Miniature", "Minor", "Miscreant", "Misty", "Mixed", "Moaning", "Modern", "Moldy", "Momentous", - "Motionless", "Muddled", "Mundane", "Murky", "Mushy", "Mute", "Mysterious", "Naive", "Nappy", "Narrow", "Nasty", - "Natural", "Naughty", "Nauseating", "Near", "Neat", "Nebulous", "Necessary", "Needless", "Needy", "Neighborly", "Nervous", - "New", "Next", "Nice", "Nifty", "Nimble", "Nine", "Nippy", "Noiseless", "Noisy", "Nonchalant", "Nonstop", - "Normal", "Nostalgic", "Nosy", "Noxious", "Null", "Numberless", "Numerous", "Nutritious", "Nutty", "Oafish", "Obedient", - "Obeisant", "Obese", "Obnoxious", "Obscene", "Obsequious", "Observant", "Obsolete", "Obtainable", "Oceanic", "Odd", "Offbeat", - "Old", "Omniscient", "One", "Onerous", "Open", "Opposite", "Optimal", "Orange", "Ordinary", "Organic", "Ossified", - "Outgoing", "Outrageous", "Oval", "Overjoyed", "Overrated", "Overt", "Painful", "Pale", "Paltry", "Panicky", "Panoramic", - "Parallel", "Parched", "Past", "Pastoral", "Pathetic", "Peaceful", "Penitent", "Perfect", "Periodic", "Perpetual", "Petite", - "Petite", "Phobic", "Physical", "Picayune", "Pink", "Piquant", "Placid", "Plain", "Plant", "Plastic", "Plausible", - "Pleasant", "Plucky", "Pointless", "Poised", "Polite", "Political", "Poor", "Possessive", "Possible", "Powerful", "Precious", - "Premium", "Present", "Pretty", "Previous", "Pricey", "Prickly", "Private", "Probable", "Productive", "Profuse", "Protective", - "Proud", "Psychotic", "Public", "Puffy", "Pumped", "Puny", "Purple", "Purring", "Pushy", "Puzzled", "Puzzling", - "Quack", "Quaint", "Quick", "Quickest", "Quiet", "Quirky", "Quixotic", "Quizzical", "Rabid", "Racial", "Ragged", - "Rainy", "Rampant", "Rapid", "Rare", "Raspy", "Ratty", "Ready", "Real", "Rebel", "Receptive", "Recondite", - "Red", "Redundant", "Reflective", "Regular", "Relieved", "Remarkable", "Repulsive", "Resolute", "Resonant", "Rhetorical", "Rich", - "Right", "Righteous", "Rightful", "Rigid", "Ripe", "Ritzy", "Roasted", "Robust", "Romantic", "Roomy", "Rotten", - "Rough", "Round", "Royal", "Ruddy", "Rude", "Rural", "Rustic", "Ruthless", "Sable", "Sad", "Safe", - "Salty", "Same", "Sassy", "Satisfying", "Savory", "Scandalous", "Scarce", "Scared", "Scary", "Scattered", "Scientific", - "Scrawny", "Screeching", "Second", "Secret", "Secretive", "Sedate", "Seemly", "Selective", "Selfish", "Separate", "Serious", - "Shaggy", "Shaky", "Shallow", "Sharp", "Shiny", "Shivering", "Shocking", "Short", "Shrill", "Shut", "Shy", - "Sick", "Silent", "Silent", "Silky", "Silly", "Simple", "Simplistic", "Sincere", "Six", "Skillful", "Skinny", - "Sleepy", "Slim", "Slimy", "Slippery", "Sloppy", "Slow", "Small", "Smart", "Smelly", "Smiling", "Smoggy", - "Smooth", "Sneaky", "Snobbish", "Snotty", "Soft", "Soggy", "Solid", "Somber", "Sordid", "Sore", "Sore", - "Sour", "Sparkling", "Special", "Spicy", "Spiffy", "Spiky", "Spiritual", "Spiteful", "Splendid", "Spooky", "Spotless", - "Spotted", "Spotty", "Spurious", "Squalid", "Square", "Squealing", "Squeamish", "Staking", "Stale", "Standing", "Statuesque", - "Steadfast", "Steady", "Stealthy", "Steep", "Sticky", "Stiff", "Stingy", "Stormy", "Straight", "Strange", "Striped", - "Strong", "Stupendous", "Stupid", "Sturdy", "Subdued", "Subsequent", "Successful", "Succinct", "Sudden", "Sulky", "Super", - "Superb", "Supreme", "Swanky", "Sweet", "Sweltering", "Swift", "Synonymous", "Taboo", "Tacit", "Tacky", "Talented", - "Tall", "Tame", "Tan", "Tangible", "Tangy", "Tart", "Tasteful", "Tasteless", "Tasty", "Tawdry", "Tearful", - "Tedious", "Teeny", "Teeny-tiny", "Telling", "Temporary", "Ten", "Tender", "Tense", "Tense", "Tenuous", "Terrible", - "Terrific", "Tested", "Testy", "Thankful", "Thick", "Thin", "Thinkable", "Third", "Thirsty", "Thirsty", "Thoughtful", - "Three", "Thundering", "Tidy", "Tight", "Tiny", "Tired", "Tiresome", "Toothsome", "Torpid", "Tough", "Towering", - "Tranquil", "Trashy", "Tremendous", "Tricky", "Trite", "Troubled", "Truculent", "True", "Truthful", "Two", "Typical", - "Ubiquitous", "Ugliest", "Ugly", "Ultra", "Unable", "Unadvised", "Unarmed", "Unbecoming", "Unbiased", "Uncovered", "Understood", - "Unequal", "Unequaled", "Uneven", "Unhealthy", "Unique", "Unkempt", "Unknown", "Unnatural", "Unruly", "Unsightly", "Unsuitable", - "Untidy", "Unused", "Unusual", "Unwieldy", "Unwritten", "Upbeat", "Uppity", "Upset", "Uptight", "Used", "Useful", - "Useless", "Utopian", "Utter", "Uttermost", "Vacuous", "Vagabond", "Vague", "Valuable", "Various", "Vast", "Vengeful", - "Venomous", "Verdant", "Versed", "Victorious", "Vigorous", "Violent", "Violet", "Vivacious", "Voiceless", "Volatile", "Voracious", - "Vulgar", "Wacky", "Waggish", "Waiting", "Wakeful", "Wandering", "Wanting", "Warlike", "Warm", "Wary", "Wasteful", - "Watery", "Weak", "Wealthy", "Weary", "Well-made", "Well-off", "Well-to-do", "Wet", "Whimsical", "Whispering", "White", - "Whole", "Wholesale", "Wicked", "Wide", "Wide-eyed", "Wiggly", "Wild", "Willing", "Windy", "Wiry", "Wise", - "Wistful", "Witty", "Woebegone", "Womanly", "Wonderful", "Wooden", "Woozy", "Workable", "Worried", "Worthless", "Wrathful", - "Wretched", "Wrong", "Wry", + "Brainy", "Brash", "Brave", "Brawny", "Breakable", "Breezy", "Brief", "Bright", "Broad", "Broken", "Brown", + "Bumpy", "Burly", "Bustling", "Busy", "Cagey", "Callous", "Calm", "Capable", "Capricious", "Careful", "Careless", + "Caring", "Cautious", "Ceaseless", "Certain", "Changeable", "Charming", "Cheap", "Cheerful", "Chemical", "Chief", "Childlike", + "Chilly", "Chivalrous", "Chubby", "Chunky", "Clammy", "Classy", "Clean", "Clear", "Clever", "Cloistered", "Cloudy", + "Closed", "Clumsy", "Cluttered", "Coherent", "Cold", "Colorful", "Colossal", "Combative", "Common", "Complete", "Complex", + "Concerned", "Condemned", "Confused", "Conscious", "Cooing", "Cool", "Courageous", "Cowardly", "Crabby", "Craven", "Crazy", + "Creepy", "Crooked", "Crowded", "Cruel", "Cuddly", "Cultured", "Cumbersome", "Curious", "Curly", "Curved", "Curvy", + "Cut", "Cute", "Cynical", "Daffy", "Daily", "Damaged", "Damaging", "Damp", "Dangerous", "Dapper", "Dark", + "Dashing", "Dazzling", "Dead", "Deadpan", "Deafening", "Dear", "Debonair", "Decisive", "Decorous", "Deep", "Deeply", + "Defeated", "Defective", "Defiant", "Delicate", "Delicious", "Delightful", "Demonic", "Delirious", "Dependent", "Depressed", "Deranged", + "Deserted", "Detailed", "Determined", "Devilish", "Didactic", "Different", "Difficult", "Diligent", "Direful", "Dirty", "Disastrous", + "Discreet", "Disgusted", "Disgusting", "Distinct", "Disturbed", "Divergent", "Dizzy", "Doubtful", "Drab", "Draconian", "Dramatic", + "Dreary", "Drunk", "Dry", "Dull", "Dusty", "Dynamic", "Eager", "Early", "Earthy", "Easy", "Eatable", + "Economic", "Educated", "Efficient", "Eight", "Elastic", "Elated", "Elderly", "Electric", "Elegant", "Elfin", "Elite", + "Eminent", "Empty", "Enchanted", "Enchanting", "Endurable", "Energetic", "Enormous", "Envious", "Equable", "Equal", "Erect", + "Erratic", "Ethereal", "Evanescent", "Evasive", "Even", "Excellent", "Excited", "Exciting", "Exclusive", "Exotic", "Expensive", + "Exuberant", "Exultant", "Fabulous", "Faded", "Faint", "Fair", "Faithful", "Fallacious", "False", "Familiar", "Famous", + "Fanatical", "Fancy", "Fantastic", "Far", "Far-flung", "Fascinated", "Fast", "Fat", "Faulty", "Fearful", "Fearless", + "Feeble", "Feigned", "Female", "Fertile", "Festive", "Few", "Fierce", "Filthy", "Fine", "Finicky", "First", + "Five", "Fixed", "Flagrant", "Flaky", "Flashy", "Flat", "Flawless", "Flimsy", "Flippant", "Flowery", "Fluffy", + "Fluttering", "Foamy", "Foolish", "Foregoing", "Forgetful", "Fortunate", "Four", "Frail", "Fragile", "Frantic", "Free", + "Freezing", "Frequent", "Fresh", "Fretful", "Friendly", "Frightened", "Full", "Fumbling", "Functional", "Funny", "Furry", + "Furtive", "Future", "Futuristic", "Fuzzy", "Gabby", "Gainful", "Gamy", "Gaping", "Garrulous", "Gaudy", "General", + "Gentle", "Giant", "Giddy", "Gifted", "Gigantic", "Glamorous", "Gleaming", "Glib", "Glistening", "Glorious", "Glossy", + "Godly", "Good", "Goofy", "Gorgeous", "Graceful", "Grandiose", "Grateful", "Gratis", "Gray", "Greasy", "Great", + "Greedy", "Green", "Grey", "Grieving", "Groovy", "Grotesque", "Grouchy", "Grubby", "Gruesome", "Grumpy", "Guarded", + "Guiltless", "Gullible", "Gusty", "Guttural", "Habitual", "Half", "Hallowed", "Halting", "Handsome", "Handsomely", "Handy", + "Hanging", "Hapless", "Happy", "Hard", "Harmonious", "Harsh", "Hateful", "Heady", "Healthy", "Heavenly", "Heavy", + "Hellish", "Helpful", "Helpless", "Hesitant", "Hideous", "High", "Hilarious", "Hissing", "Historical", "Holistic", "Hollow", + "Homeless", "Homely", "Honorable", "Horrible", "Hospitable", "Hot", "Huge", "Hulking", "Humdrum", "Humorous", "Hungry", + "Hurried", "Hurt", "Hushed", "Husky", "Hypnotic", "Hysterical", "Icky", "Icy", "Idiotic", "Ignorant", "Ill", + "Illegal", "Ill-fated", "Imaginary", "Immense", "Imminent", "Impartial", "Imperfect", "Impolite", "Important", "Imported", "Impossible", + "Incredible", "Infamous", "Innate", "Innocent", "Insidious", "Internal", "Invincible", "Irate", "Irritating", "Itchy", "Jaded", + "Jagged", "Jazzy", "Jealous", "Jittery", "Jobless", "Jolly", "Joyous", "Judicious", "Juicy", "Jumbled", "Jumpy", + "Juvenile", "Kaput", "Keen", "Kind", "Kindly", "Knotty", "Knowing", "Known", "Labored", "Lacking", "Lame", + "Lamentable", "Languid", "Large", "Last", "Late", "Laughable", "Lavish", "Lazy", "Lean", "Learned", "Left", + "Legal", "Lethal", "Level", "Lewd", "Light", "Like", "Likeable", "Limping", "Literate", "Little", "Lively", + "Living", "Lonely", "Long", "Longing", "Long-term", "Loose", "Lopsided", "Loud", "Loutish", "Lovely", "Loving", + "Low", "Lowly", "Lucky", "Ludicrous", "Lumpy", "Lush", "Luxuriant", "Lying", "Lyrical", "Macabre", "Macho", + "Maddening", "Madly", "Magenta", "Magical", "Majestic", "Makeshift", "Male", "Malicious", "Mammoth", "Maniacal", "Many", + "Marked", "Massive", "Married", "Marvelous", "Material", "Mature", "Mean", "Measly", "Meaty", "Medical", "Meek", + "Mellow", "Melodic", "Melted", "Merciful", "Mere", "Messy", "Mighty", "Military", "Milky", "Mindless", "Miniature", + "Minor", "Miscreant", "Misty", "Mixed", "Moaning", "Modern", "Moldy", "Momentous", "Motionless", "Muddled", "Mundane", + "Murky", "Mushy", "Mute", "Mysterious", "Naive", "Nappy", "Narrow", "Nasty", "Natural", "Naughty", "Nauseating", + "Near", "Neat", "Nebulous", "Necessary", "Needless", "Needy", "Neighborly", "Nervous", "New", "Next", "Nice", + "Nifty", "Nimble", "Nine", "Nippy", "Noiseless", "Noisy", "Nonchalant", "Nonstop", "Normal", "Nostalgic", "Nosy", + "Noxious", "Null", "Numberless", "Numerous", "Nutritious", "Nutty", "Oafish", "Obedient", "Obeisant", "Obese", "Obnoxious", + "Obscene", "Obsequious", "Observant", "Obsolete", "Obtainable", "Oceanic", "Odd", "Offbeat", "Old", "Omniscient", "One", + "Onerous", "Open", "Opposite", "Optimal", "Orange", "Ordinary", "Organic", "Ossified", "Outgoing", "Outrageous", "Oval", + "Overjoyed", "Overrated", "Overt", "Painful", "Pale", "Paltry", "Panicky", "Panoramic", "Parallel", "Parched", "Past", + "Pastoral", "Pathetic", "Peaceful", "Penitent", "Perfect", "Periodic", "Perpetual", "Petite", "Phobic", "Physical", "Picayune", + "Pink", "Piquant", "Placid", "Plain", "Plant", "Plastic", "Plausible", "Pleasant", "Plucky", "Pointless", "Poised", + "Polite", "Political", "Poor", "Possessive", "Possible", "Powerful", "Precious", "Premium", "Present", "Pretty", "Previous", + "Pricey", "Prickly", "Private", "Probable", "Productive", "Profuse", "Protective", "Proud", "Psychotic", "Public", "Puffy", + "Pumped", "Puny", "Purple", "Purring", "Pushy", "Puzzled", "Puzzling", "Quack", "Quaint", "Quick", "Quickest", + "Quiet", "Quirky", "Quixotic", "Quizzical", "Rabid", "Racial", "Ragged", "Rainy", "Rampant", "Rapid", "Rare", + "Raspy", "Ratty", "Ready", "Real", "Rebel", "Receptive", "Recondite", "Red", "Redundant", "Reflective", "Regular", + "Relieved", "Remarkable", "Repulsive", "Resolute", "Resonant", "Rhetorical", "Rich", "Right", "Righteous", "Rightful", "Rigid", + "Ripe", "Ritzy", "Roasted", "Robust", "Romantic", "Roomy", "Rotten", "Rough", "Round", "Royal", "Ruddy", + "Rude", "Rural", "Rustic", "Ruthless", "Sable", "Sad", "Safe", "Salty", "Same", "Sassy", "Satisfying", + "Savory", "Scandalous", "Scarce", "Scared", "Scary", "Scattered", "Scientific", "Scrawny", "Screeching", "Second", "Secret", + "Secretive", "Sedate", "Seemly", "Selective", "Selfish", "Separate", "Serious", "Shaggy", "Shaky", "Shallow", "Sharp", + "Shiny", "Shivering", "Shocking", "Short", "Shrill", "Shut", "Shy", "Sick", "Silent", "Silky", "Silly", + "Simple", "Simplistic", "Sincere", "Six", "Skillful", "Skinny", "Sleepy", "Slim", "Slimy", "Slippery", "Sloppy", + "Slow", "Small", "Smart", "Smelly", "Smiling", "Smoggy", "Smooth", "Sneaky", "Snobbish", "Snotty", "Soft", + "Soggy", "Solid", "Somber", "Sordid", "Sore", "Sour", "Sparkling", "Special", "Spicy", "Spiffy", "Spiky", + "Spiritual", "Spiteful", "Splendid", "Spooky", "Spotless", "Spotted", "Spotty", "Spurious", "Squalid", "Square", "Squealing", + "Squeamish", "Staking", "Stale", "Standing", "Statuesque", "Steadfast", "Steady", "Stealthy", "Steep", "Sticky", "Stiff", + "Stingy", "Stormy", "Straight", "Strange", "Striped", "Strong", "Stupendous", "Stupid", "Sturdy", "Subdued", "Subsequent", + "Successful", "Succinct", "Sudden", "Sulky", "Super", "Superb", "Supreme", "Swanky", "Sweet", "Sweltering", "Swift", + "Synonymous", "Taboo", "Tacit", "Tacky", "Talented", "Tall", "Tame", "Tan", "Tangible", "Tangy", "Tart", + "Tasteful", "Tasteless", "Tasty", "Tawdry", "Tearful", "Tedious", "Teeny", "Teeny-tiny", "Telling", "Temporary", "Ten", + "Tender", "Tense", "Tenuous", "Terrible", "Terrific", "Tested", "Testy", "Thankful", "Thick", "Thin", "Thinkable", + "Third", "Thirsty", "Thoughtful", "Three", "Thundering", "Tidy", "Tight", "Tiny", "Tired", "Tiresome", "Toothsome", + "Torpid", "Tough", "Towering", "Tranquil", "Trashy", "Tremendous", "Tricky", "Trite", "Troubled", "Truculent", "True", + "Truthful", "Two", "Typical", "Ubiquitous", "Ugliest", "Ugly", "Ultra", "Unable", "Unadvised", "Unarmed", "Unbecoming", + "Unbiased", "Uncovered", "Understood", "Unequal", "Unequaled", "Uneven", "Unhealthy", "Unique", "Unkempt", "Unknown", "Unnatural", + "Unruly", "Unsightly", "Unsuitable", "Untidy", "Unused", "Unusual", "Unwieldy", "Unwritten", "Upbeat", "Uppity", "Upset", + "Uptight", "Used", "Useful", "Useless", "Utopian", "Utter", "Uttermost", "Vacuous", "Vagabond", "Vague", "Valuable", + "Various", "Vast", "Vengeful", "Venomous", "Verdant", "Versed", "Victorious", "Vigorous", "Violent", "Violet", "Vivacious", + "Voiceless", "Volatile", "Voracious", "Vulgar", "Wacky", "Waggish", "Waiting", "Wakeful", "Wandering", "Wanting", "Warlike", + "Warm", "Wary", "Wasteful", "Watery", "Weak", "Wealthy", "Weary", "Well-made", "Well-off", "Well-to-do", "Wet", + "Whimsical", "Whispering", "White", "Whole", "Wholesale", "Wicked", "Wide", "Wide-eyed", "Wiggly", "Wild", "Willing", + "Windy", "Wiry", "Wise", "Wistful", "Witty", "Woebegone", "Womanly", "Wonderful", "Wooden", "Woozy", "Workable", + "Worried", "Worthless", "Wrathful", "Wretched", "Wrong", "Wry", }; const char* const CNickGen::m_szNouns[] = { - "Aardvark", "Buffalo", "Alligator", "Ant", "Anteater", "Antelope", "Ape", "Armadillo", "Donkey", "Baboon", "Badger", - "Barracuda", "Bat", "Bear", "Beaver", "Bee", "Bison", "Boar", "Bush", "Butterfly", "Camel", "Calf", - "Cat", "Kitten", "Cattle", "Chamois", "Cheetah", "Chicken", "Chick", "Chimpanzee", "Infant", "Empress", "Troop", - "Cobra", "Cockroach", "Cormorant", "Cougar", "Coyote", "Crab", "Crane", "Crocodile", "Crow", "Deer", "Dog", - "Dogfish", "Dolphin", "Donkey", "Dove", "Dragonfly", "Duck", "Dugong", "Eagle", "Eaglet", "Echidna", "Eel", - "Eland", "Elephant", "Elk", "Falcon", "Ferret", "Finch", "Fly", "Fox", "Frog", "Gaur", "Gazelle", - "Gerbil", "Giant", "Giraffe", "Gnu", "Goat", "Goose", "Gorilla", "Guanaco", "Guinea", "Guineapig", "Gull", - "Hamster", "Hare", "Hawk", "Hedgehog", "Heron", "Hornet", "Horse", "Human", "Hyena", "Iguana", "Jackal", - "Jaguar", "Jellyfish", "Kangaroo", "Koala", "Komodo", "Kouprey", "Kudu", "Lark", "Lemur", "Leopard", "Lion", - "Llama", "Loris", "Louse", "Lobster", "Lyrebird", "Magpie", "Mallard", "Manatee", "Meerkat", "Mink", "Mole", - "Monkey", "Moose", "Mouse", "Mosquito", "Mule", "Okapi", "Oryx", "Ostrich", "Otter", "Owl", "Ox", - "Oyster", "Panther", "Partridge", "Peafowl", "Pelican", "Penguin", "Pig", "Pigeon", "Pony", "Porcupine", "Quelea", - "Rabbit", "Bunny", "Raccoon", "Rail", "Ram", "Rat", "Raven", "Reindeer", "Rhino", "Salamander", "Sealion", - "Seal", "Seahorse", "Seastar", "Shark", "Sheep", "Shrew", "Skunk", "Snail", "Snake", "Spider", "Squid", - "Squirrel", "Stinkbug", "Swan", "Tapir", "Tarsier", "Tiger", "Toad", "Turkey", "Turtle", "Vicuna", "Walrus", - "Wasp", "Weasel", "Whale", "Wolf", "Worm", "Yak", "Zebra", "Hat", "Cap", "Beret", "Astrakhan", - "Beanie", "Hardhat", "Pillbox", "Monkeycap", "Operahat", "Bonnet", "Bowler", "Coonskin", "Fedora", "Derby", "Montero", - "Cowboyhat", "Sombrero", "Yarmulke", "Skullcap", "Tam", "Sunbonnet", "Toque", "Tophat", "Babushka", "Balaclava", "Turban", - "Diadem", "Earmuffs", "Visor", "Scarf", "Veil", "Warbonnet", "Pithhelmet", "Hood", "Miter", "Butter", "Icecream", - "Cakebatter", "Coffee", "Tea", "Soda", "Beer", "Wine", "Cappuccino", "Jell-o", "Nougats", "Lambchops", "Steaks", - "Chowder", "Fishsoup", "Spaghetti", "Lobster", "Sushi", "Fondue", "Crabslegs", "Shrimp", "Garlic", "Onions", "Bratwurst", - "Kielbasa", "Hotdog", "Hamburger", "Herbs", "Grains", "Legumes", "Zampone", "Casserole", "Beans", "Seeds", "Stew", - "Cereal", "Polenta", "Pudding", "Pasta", "Macaroni", "Ravioli", "Wafer", "Crackers", "Cookies", "Sandwich", "Gyro", - "Wrap", "Omelet", "Popcorn", "Walnuts", "Nuts", "Almonds", "Pizza", "Mousse", "Brulee", "Cakes", "Pancake", - "Waffles", "Toast", "Candy", "Pie", "Senator", "Governor", "Councilman", "Detective", "Sleuth", "Trooper", "Musician", - "Maestro", "Conductor", "Composer", "Singer", "Architect", "Physician", "Manager", "Usher", "Painter", "Model", "Designer", - "Guest", "Attorney", "Lawyer", "Judge", "Mayor", "Therapist", "Teacher", "Principal", "Professor", "Orator", "Man", - "Woman", "Teen", "Child", "Mother", "Father", "Sister", "Brother", "Uncle", "Aunt", "Son", "Daughter", - "In-laws", "Boy", "Girl", "Nurse", "Sibling", "Settler", "Pioneer", "Waiter", "Hostess", "Host", "Cashier", - "Attendant", "Publisher", "Agent", "Witch", "Warlock", "Ghost", "Knight", "Prince", "Princess", "Maiden", "Godmother", - "Fairy", "Petal", "Sepal", "Stamen", "Pineboughs", "Bud", "Branch", "Blossom", "Fruit", "Bloom", "Tree", - "Maple", "Elm", "Oak", "Palm", "Baobab", "Mangrove", "Cyprus", "Pine", "Dogwood", "Alder", "Flowers", - "Rose", "Tulip", "Cyclamen", "Lily", "Carnations", "Wisteria", "Flytrap", "Hoe", "Weeds", "Plants", "Canes", - "Palms", "Fruit", "Apple", "Lemon", "Orange", "Grapefruit", "Tangerine", "Peach", "Tomato", "Banana", "Vegetables", - "Artichokes", "Leeks", "Lettuce", "Eggplants", "Zucchini", "Squash", "Pumpkin", "Cabbage", "Pepper", "Onion", "Garlic", - "Poison", "Venom", "Fire", "Ship", "Ferryboat", "Oceanliner", "Oars", "Sails", "Dinghy", "Yacht", "Canoe", - "Catamaran", "Gondola", "Boat", "Battleship", "Clipper", "Dhow", "Flatboat", "Houseboat", "Galleon", "Frigate", "Hydrofoil", - "Junk", "Ketch", "Yawl", "Submarine", "Schooner", "Scow", "Flatbed", "Suv", "Van", "Caboose", "Train", - "Bullet", "Metro", "Subway", "Cart", "Taxi", "Car", "Racingcar", "Buggy", "Dunebuggy", "Dragster", "Motorcycle", - "Gokart", "Limo", "Stretch", "Wagon", "Trolley", "Tram", "Bus", "Parachute", "Tractor", "Trailer", "Golfkart", - "Jeep", "Bigrig", "Bulldozer", "Dumptruck", "Jeep", "Towtruck", "Engine", "Fireengine", "Policecar", "Tank", "Locomotive", - "Ocean", "Oasis", "Sea", "Lake", "Saltlake", "Seafoam", "Waves", "Bubbles", "Current", "Waterbasin", "Bridge", - "Harbor", "Pond", "Wharf", "Pier", "Dock", "Port", "Shore", "Beach", "Sandbar", "Coast", "River", - "Brook", "Rivulet", "Puddle", "Waterfall", "Cascades", "Canal", "Channel", "Stream", "Creek", "Marsh", "Bog", - "Swamp", "Bayou", "Estuary", "Whirlpool", "Eddy", "Geyser", "Well", "Monsoon", "Hurricane", "Typhoon", "Air", - "Snow", "Rain", "Sleet", "Storm", "Hail", "Blizzard", "Wind", "Breeze", "Gale", "Whirlwind", "Maelstrom", - "Duststorm", "Cloudburst", "Tornado", "Twister", "Clouds", "Fog", "Peasoup", "Floods", "Flashflood", "Acidrain", "Tremors", - "Lightning", "Avalanche", "Eclipse", "Alpenglow", "Tsunami", "Waterspout", "Smog", "Aneroid", "Barometer", "Radiosonde", "Station", - "Map", "Chalice", "Bijou", "Candelabra", "Menorah", "Curio", "Figurine", "Music-box", "Objetd'art", "Trinket", "Trims", - "Windchimes", "Birdcage", "Birdbath", "Cans", "Urn", "Bucket", "Arrow", "Bow", "Sword", "Dart", "Epee", - "Dagger", "Hatchet", "Pickax", "Dolls", "Broom", "Mop", "Pail", "Squeegee", "Caddy", "Telephone", "Pipe", - "Paints", "Brushes", "Easel", "Canvas", "Trunk", "Hook", "Gun", "Glue", "Tissue", "Toilet", "Kleenex", - "Papertowel", "Ropes", "Rubber", "Coil", "Toys", "Dogleash", "Balloon", "Vases", "Planters", "Pen", "Pad", - "Typewriter", "Computer", "Laptop", "Netbook", "Stylus", "Pencil", "Desk", "Backpack", "Shoerack", "Notebook", "Vellum", - "Chalk", "Badge", "Saddle", "Spurs", "Paper", "Rollbook", "Guestbook", "Pot", "Pen", "Plate", "Dishes", - "Fork", "Spoons", "Knives", "Knife", "Samovar", "Sky", "Forest", "Heaven", "Hell", "Earth", "Sun", - "Star", "Planet", "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Ceres", - "Pluto", "Haumea", "Makemake", "Eris", "Outerspace", "Town", "Village", "City", "Country", "Farm", "Suburb", - "Roads", "Streets", "Blocks", "Zoo", "Park", "Museum", "Cemetery", "Tunnels", "Caves", "Churches", "Temples", - "Mall", "Dresser", "Armoire", "Chiffonier", "Credenza", "Console", "Bookcase", "Buffet", "Armchair", "Recliner", "Easychair", - "Bench", "Banquette", "Chair", "Couch", "Davenport", "Sofa", "Armchair", "Ottoman", "Deckchair", "Loveseat", "Highseat", - "Divan", "Inglenook", "Pew", "Throne", "Sectional", "Stool", "Pottychair", "Workbench", "Nighttable", "Bed", "Daybed", - "Bassinet", "Crib", "Cradle", "Cot", "Futon", "Hammock", "Tatamimat", "Waterbed", "Trundlebed", "Hassock", "Hatrack", - "Stepstool", "Footrest", "Footstool", "Tripod", "Mirror", "Nightlight", "Torchiere", "Sunlamp", "Spotlight", "Ceilingfan", "Cupboard", - "Cardtable", "Hutch", "Locker", "Wetbar", "Vanity", "Rack", "Hopechest", "Sculpture", "Painting", "Eye", "Pupil", - "Iris", "Retina", "Eyeball", "Eyelids", "Eyelashes", "Eyebrows", "Lap", "Waist", "Belly", "Tummy", "Rearend", - "Crotch", "Abdomen", "Beard", "Mustache", "Sideburns", "Fingernail", "Hand", "Forearm", "Arm", "Knuckles", "Thumb", - "Wrist", "Elbow", "Leg", "Toes", "Knee", "Ankle", "Shin", "Thigh", "Hip", "Breast", "Chest", - "Torso", "Tongue", "Lips", "Gums", "Mouth", "Teeth", "Bones", "Spine", "Throat", "Lungs", "Kidneys", - "Intestines", "Colon", "Spleen", "Glands", "Blood", "Head", "Skull", "Brain", "Muscle", "Hair", "Xylophone", - "Clavier", "Virginal", "Lute", "Drum", "Frenchhorn", "Piano", "Violin", "Cello", "Guitar", "Flute", "Tuba", - "Harp", "Mariachi", "Orchestra", "Oboe", "Bassoon", "Woodwinds", "Brass", "Viola", "Kettledrum", "Peyotedrum", "Tambourine", - "Tambour", "Xylophone", "Saxophone", "Marimba", "Maracas", "Shofar", "Cymbals", "Kazoo", "Dulcimer", "Accordion", "Lyre", - "Fiddle", "Banjo", "Balalaika", "Sitar", "Ukulele", "Zither", "Bagpipes", "Piccolo", "Clarinet", "Cornet", "Panpipe", - "Tuningfork", "Metronome", "Castanets", "Woofer", "Sniper", "Marksman", "Cleaner", "Pyro", "Attacker", "Mechanic", "Janitor", - "Scrubber", "Garbageman", "Technician", "Ninja", "Medic", "Spy", "Assassin", "Gunman", "Triggerman", "Butcher", "Killer", - "Dodger", "Booger", "Mechanic", "Engineer", "Doctor", "Surgeon", "Fighter", "Shooter", "Gunner", "Soldier", "Officer", - "Veteran", "Scout", "Mercenary", "Commando", "Cadet", "Guard", "Warrior", "Trooper", "Gambler", "Specialist", "Shaper", - "Finisher", "Gladiator", "Boxer", "Wrestler", "Warlord", "Rival", "Armory", "Agent", "Rebel", "Brawler", "Bruiser", - "Bully", "Champion", "Hero", "Battler", "Combatant", "Fencer", "Swordsman", "Expert", "Gangster", "Gangsta", "Bandit", - "Hoodlum", "Mobster", "Robber", "Thief", "Burglar", "Pirate", "Thug", "Hitman", "Hitperson", "Dealer", "Desperado", - "Criminal", "Crook", "Hijacker", "Carjacker", "Villain", "Convict", "Fugitive", "Mug", "Outlaw", "Ruffian", "Cutthroat", - "Devil", "Murderer", "Psycho", "Punk", "ASBO", "Offender", "Drifter", "Rioter", "Goon", "Roughneck", "Brute", - "Hacker", "Cabbie", "Wheeler", "Driver", "Rider", "Cyclist", "Cowboy", "Operative", "Carrier", "Transporter", "Trucker", - "Conductor", "Wheelman", "Vampire", "Parasite", "Tramp", "Bum", "Hobo", "Hitchhiker", "Deadbeat", "Acrobat", + "Aardvark", "Buffalo", "Alligator", "Ant", "Anteater", "Antelope", "Ape", "Armadillo", "Donkey", "Baboon", "Badger", + "Barracuda", "Bat", "Bear", "Beaver", "Bee", "Bison", "Boar", "Bush", "Butterfly", "Camel", "Calf", + "Cat", "Kitten", "Cattle", "Chamois", "Cheetah", "Chicken", "Chick", "Chimpanzee", "Infant", "Empress", "Troop", + "Cobra", "Cockroach", "Cormorant", "Cougar", "Coyote", "Crab", "Crane", "Crocodile", "Crow", "Deer", "Dog", + "Dogfish", "Dolphin", "Dove", "Dragonfly", "Duck", "Dugong", "Eagle", "Eaglet", "Echidna", "Eel", "Eland", + "Elephant", "Elk", "Falcon", "Ferret", "Finch", "Fly", "Fox", "Frog", "Gaur", "Gazelle", "Gerbil", + "Giant", "Giraffe", "Gnu", "Goat", "Goose", "Gorilla", "Guanaco", "Guinea", "Guineapig", "Gull", "Hamster", + "Hare", "Hawk", "Hedgehog", "Heron", "Hornet", "Horse", "Human", "Hyena", "Iguana", "Jackal", "Jaguar", + "Jellyfish", "Kangaroo", "Koala", "Komodo", "Kouprey", "Kudu", "Lark", "Lemur", "Leopard", "Lion", "Llama", + "Loris", "Louse", "Lobster", "Lyrebird", "Magpie", "Mallard", "Manatee", "Meerkat", "Mink", "Mole", "Monkey", + "Moose", "Mouse", "Mosquito", "Mule", "Okapi", "Oryx", "Ostrich", "Otter", "Owl", "Ox", "Oyster", + "Panther", "Partridge", "Peafowl", "Pelican", "Penguin", "Pig", "Pigeon", "Pony", "Porcupine", "Quelea", "Rabbit", + "Bunny", "Raccoon", "Rail", "Ram", "Rat", "Raven", "Reindeer", "Rhino", "Salamander", "Sealion", "Seal", + "Seahorse", "Seastar", "Shark", "Sheep", "Shrew", "Skunk", "Snail", "Snake", "Spider", "Squid", "Squirrel", + "Stinkbug", "Swan", "Tapir", "Tarsier", "Tiger", "Toad", "Turkey", "Turtle", "Vicuna", "Walrus", "Wasp", + "Weasel", "Whale", "Wolf", "Worm", "Yak", "Zebra", "Hat", "Cap", "Beret", "Astrakhan", "Beanie", + "Hardhat", "Pillbox", "Monkeycap", "Operahat", "Bonnet", "Bowler", "Coonskin", "Fedora", "Derby", "Montero", "Cowboyhat", + "Sombrero", "Yarmulke", "Skullcap", "Tam", "Sunbonnet", "Toque", "Tophat", "Babushka", "Balaclava", "Turban", "Diadem", + "Earmuffs", "Visor", "Scarf", "Veil", "Warbonnet", "Pithhelmet", "Hood", "Miter", "Butter", "Icecream", "Cakebatter", + "Coffee", "Tea", "Soda", "Beer", "Wine", "Cappuccino", "Jell-o", "Nougats", "Lambchops", "Steaks", "Chowder", + "Fishsoup", "Spaghetti", "Sushi", "Fondue", "Crabslegs", "Shrimp", "Onions", "Bratwurst", "Kielbasa", "Hotdog", "Hamburger", + "Herbs", "Grains", "Legumes", "Zampone", "Casserole", "Beans", "Seeds", "Stew", "Cereal", "Polenta", "Pudding", + "Pasta", "Macaroni", "Ravioli", "Wafer", "Crackers", "Cookies", "Sandwich", "Gyro", "Wrap", "Omelet", "Popcorn", + "Walnuts", "Nuts", "Almonds", "Pizza", "Mousse", "Brulee", "Cakes", "Pancake", "Waffles", "Toast", "Candy", + "Pie", "Senator", "Governor", "Councilman", "Detective", "Sleuth", "Musician", "Maestro", "Conductor", "Composer", "Singer", + "Architect", "Physician", "Manager", "Usher", "Painter", "Model", "Designer", "Guest", "Attorney", "Lawyer", "Judge", + "Mayor", "Therapist", "Teacher", "Principal", "Professor", "Orator", "Man", "Woman", "Teen", "Child", "Mother", + "Father", "Sister", "Brother", "Uncle", "Aunt", "Son", "Daughter", "In-laws", "Boy", "Girl", "Nurse", + "Sibling", "Settler", "Pioneer", "Waiter", "Hostess", "Host", "Cashier", "Attendant", "Publisher", "Witch", "Warlock", + "Ghost", "Knight", "Prince", "Princess", "Maiden", "Godmother", "Fairy", "Petal", "Sepal", "Stamen", "Pineboughs", + "Bud", "Branch", "Blossom", "Fruit", "Bloom", "Tree", "Maple", "Elm", "Oak", "Palm", "Baobab", + "Mangrove", "Cyprus", "Pine", "Dogwood", "Alder", "Flowers", "Rose", "Tulip", "Cyclamen", "Lily", "Carnations", + "Wisteria", "Flytrap", "Hoe", "Weeds", "Plants", "Canes", "Palms", "Apple", "Lemon", "Orange", "Grapefruit", + "Tangerine", "Peach", "Tomato", "Banana", "Vegetables", "Artichokes", "Leeks", "Lettuce", "Eggplants", "Zucchini", "Squash", + "Pumpkin", "Cabbage", "Pepper", "Onion", "Garlic", "Poison", "Venom", "Fire", "Ship", "Ferryboat", "Oceanliner", + "Oars", "Sails", "Dinghy", "Yacht", "Canoe", "Catamaran", "Gondola", "Boat", "Battleship", "Clipper", "Dhow", + "Flatboat", "Houseboat", "Galleon", "Frigate", "Hydrofoil", "Junk", "Ketch", "Yawl", "Submarine", "Schooner", "Scow", + "Flatbed", "Suv", "Van", "Caboose", "Train", "Bullet", "Metro", "Subway", "Cart", "Taxi", "Car", + "Racingcar", "Buggy", "Dunebuggy", "Dragster", "Motorcycle", "Gokart", "Limo", "Stretch", "Wagon", "Trolley", "Tram", + "Bus", "Parachute", "Tractor", "Trailer", "Golfkart", "Jeep", "Bigrig", "Bulldozer", "Dumptruck", "Towtruck", "Engine", + "Fireengine", "Policecar", "Tank", "Locomotive", "Ocean", "Oasis", "Sea", "Lake", "Saltlake", "Seafoam", "Waves", + "Bubbles", "Current", "Waterbasin", "Bridge", "Harbor", "Pond", "Wharf", "Pier", "Dock", "Port", "Shore", + "Beach", "Sandbar", "Coast", "River", "Brook", "Rivulet", "Puddle", "Waterfall", "Cascades", "Canal", "Channel", + "Stream", "Creek", "Marsh", "Bog", "Swamp", "Bayou", "Estuary", "Whirlpool", "Eddy", "Geyser", "Well", + "Monsoon", "Hurricane", "Typhoon", "Air", "Snow", "Rain", "Sleet", "Storm", "Hail", "Blizzard", "Wind", + "Breeze", "Gale", "Whirlwind", "Maelstrom", "Duststorm", "Cloudburst", "Tornado", "Twister", "Clouds", "Fog", "Peasoup", + "Floods", "Flashflood", "Acidrain", "Tremors", "Lightning", "Avalanche", "Eclipse", "Alpenglow", "Tsunami", "Waterspout", "Smog", + "Aneroid", "Barometer", "Radiosonde", "Station", "Map", "Chalice", "Bijou", "Candelabra", "Menorah", "Curio", "Figurine", + "Music-box", "Objetd'art", "Trinket", "Trims", "Windchimes", "Birdcage", "Birdbath", "Cans", "Urn", "Bucket", "Arrow", + "Bow", "Sword", "Dart", "Epee", "Dagger", "Hatchet", "Pickax", "Dolls", "Broom", "Mop", "Pail", + "Squeegee", "Caddy", "Telephone", "Pipe", "Paints", "Brushes", "Easel", "Canvas", "Trunk", "Hook", "Gun", + "Glue", "Tissue", "Toilet", "Kleenex", "Papertowel", "Ropes", "Rubber", "Coil", "Toys", "Dogleash", "Balloon", + "Vases", "Planters", "Pen", "Pad", "Typewriter", "Computer", "Laptop", "Netbook", "Stylus", "Pencil", "Desk", + "Backpack", "Shoerack", "Notebook", "Vellum", "Chalk", "Badge", "Saddle", "Spurs", "Paper", "Rollbook", "Guestbook", + "Pot", "Plate", "Dishes", "Fork", "Spoons", "Knives", "Knife", "Samovar", "Sky", "Forest", "Heaven", + "Hell", "Earth", "Sun", "Star", "Planet", "Mercury", "Venus", "Mars", "Jupiter", "Saturn", "Uranus", + "Neptune", "Ceres", "Pluto", "Haumea", "Makemake", "Eris", "Outerspace", "Town", "Village", "City", "Country", + "Farm", "Suburb", "Roads", "Streets", "Blocks", "Zoo", "Park", "Museum", "Cemetery", "Tunnels", "Caves", + "Churches", "Temples", "Mall", "Dresser", "Armoire", "Chiffonier", "Credenza", "Console", "Bookcase", "Buffet", "Armchair", + "Recliner", "Easychair", "Bench", "Banquette", "Chair", "Couch", "Davenport", "Sofa", "Ottoman", "Deckchair", "Loveseat", + "Highseat", "Divan", "Inglenook", "Pew", "Throne", "Sectional", "Stool", "Pottychair", "Workbench", "Nighttable", "Bed", + "Daybed", "Bassinet", "Crib", "Cradle", "Cot", "Futon", "Hammock", "Tatamimat", "Waterbed", "Trundlebed", "Hassock", + "Hatrack", "Stepstool", "Footrest", "Footstool", "Tripod", "Mirror", "Nightlight", "Torchiere", "Sunlamp", "Spotlight", "Ceilingfan", + "Cupboard", "Cardtable", "Hutch", "Locker", "Wetbar", "Vanity", "Rack", "Hopechest", "Sculpture", "Painting", "Eye", + "Pupil", "Iris", "Retina", "Eyeball", "Eyelids", "Eyelashes", "Eyebrows", "Lap", "Waist", "Belly", "Tummy", + "Rearend", "Crotch", "Abdomen", "Beard", "Mustache", "Sideburns", "Fingernail", "Hand", "Forearm", "Arm", "Knuckles", + "Thumb", "Wrist", "Elbow", "Leg", "Toes", "Knee", "Ankle", "Shin", "Thigh", "Hip", "Breast", + "Chest", "Torso", "Tongue", "Lips", "Gums", "Mouth", "Teeth", "Bones", "Spine", "Throat", "Lungs", + "Kidneys", "Intestines", "Colon", "Spleen", "Glands", "Blood", "Head", "Skull", "Brain", "Muscle", "Hair", + "Xylophone", "Clavier", "Virginal", "Lute", "Drum", "Frenchhorn", "Piano", "Violin", "Cello", "Guitar", "Flute", + "Tuba", "Harp", "Mariachi", "Orchestra", "Oboe", "Bassoon", "Woodwinds", "Brass", "Viola", "Kettledrum", "Peyotedrum", + "Tambourine", "Tambour", "Saxophone", "Marimba", "Maracas", "Shofar", "Cymbals", "Kazoo", "Dulcimer", "Accordion", "Lyre", + "Fiddle", "Banjo", "Balalaika", "Sitar", "Ukulele", "Zither", "Bagpipes", "Piccolo", "Clarinet", "Cornet", "Panpipe", + "Tuningfork", "Metronome", "Castanets", "Woofer", "Sniper", "Marksman", "Cleaner", "Pyro", "Attacker", "Mechanic", "Janitor", + "Scrubber", "Garbageman", "Technician", "Ninja", "Medic", "Spy", "Assassin", "Gunman", "Triggerman", "Butcher", "Killer", + "Dodger", "Booger", "Engineer", "Doctor", "Surgeon", "Fighter", "Shooter", "Gunner", "Soldier", "Officer", "Veteran", + "Scout", "Mercenary", "Commando", "Cadet", "Guard", "Warrior", "Trooper", "Gambler", "Specialist", "Shaper", "Finisher", + "Gladiator", "Boxer", "Wrestler", "Warlord", "Rival", "Armory", "Agent", "Rebel", "Brawler", "Bruiser", "Bully", + "Champion", "Hero", "Battler", "Combatant", "Fencer", "Swordsman", "Expert", "Gangster", "Gangsta", "Bandit", "Hoodlum", + "Mobster", "Robber", "Thief", "Burglar", "Pirate", "Thug", "Hitman", "Hitperson", "Dealer", "Desperado", "Criminal", + "Crook", "Hijacker", "Carjacker", "Villain", "Convict", "Fugitive", "Mug", "Outlaw", "Ruffian", "Cutthroat", "Devil", + "Murderer", "Psycho", "Punk", "ASBO", "Offender", "Drifter", "Rioter", "Goon", "Roughneck", "Brute", "Hacker", + "Cabbie", "Wheeler", "Driver", "Rider", "Cyclist", "Cowboy", "Operative", "Carrier", "Transporter", "Trucker", "Wheelman", + "Vampire", "Parasite", "Tramp", "Bum", "Hobo", "Hitchhiker", "Deadbeat", "Acrobat", }; SString CNickGen::GetRandomNickname() From 78f6d669adc97c51a825250dd4dbf1a4a4a0ff15 Mon Sep 17 00:00:00 2001 From: FileEX Date: Tue, 8 Oct 2024 16:49:29 +0200 Subject: [PATCH 13/40] Fix #3770 Glob pattern in meta.xml should exclude meta.xml (#3779) Update CResource.cpp --- Server/mods/deathmatch/logic/CResource.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Server/mods/deathmatch/logic/CResource.cpp b/Server/mods/deathmatch/logic/CResource.cpp index 759c6288da..3dcf147c39 100644 --- a/Server/mods/deathmatch/logic/CResource.cpp +++ b/Server/mods/deathmatch/logic/CResource.cpp @@ -1371,6 +1371,9 @@ std::vector CResource::GetFilePaths(const char* szFilename) std::string strPath = std::filesystem::relative(path, strDirectory).string(); ReplaceSlashes(strPath); + if (strPath == "meta.xml") + continue; + vecFiles.push_back(std::move(strPath)); } From 026301168d2cd8239650a4f0aa33ff0be6d752dc Mon Sep 17 00:00:00 2001 From: TFP-dev <72511827+TFP-dev@users.noreply.github.com> Date: Tue, 8 Oct 2024 20:05:07 +0200 Subject: [PATCH 14/40] Fix #2932 (Fix CEF hardware acceleration not working) (#2933) * Fix CEF hardware acceleration not working * Update Client/cefweb/CWebApp.cpp Co-authored-by: Uladzislau Nikalayevich * Update CWebApp.cpp --------- Co-authored-by: lopsi <40902730+Lpsd@users.noreply.github.com> Co-authored-by: Uladzislau Nikalayevich --- Client/cefweb/CWebApp.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Client/cefweb/CWebApp.cpp b/Client/cefweb/CWebApp.cpp index 886d0e109c..a6fe5397e5 100644 --- a/Client/cefweb/CWebApp.cpp +++ b/Client/cefweb/CWebApp.cpp @@ -21,8 +21,6 @@ CefRefPtr CWebApp::HandleError(const SString& strError, unsi void CWebApp::OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr command_line) { - command_line->AppendSwitch("disable-gpu-compositing"); - command_line->AppendSwitch("disable-gpu"); // command_line->AppendSwitch("disable-d3d11"); command_line->AppendSwitch("enable-begin-frame-scheduling"); From 4e189281fd10e9c5cef73e18d08b02962e879fc3 Mon Sep 17 00:00:00 2001 From: MTABot Date: Wed, 9 Oct 2024 07:22:03 +0000 Subject: [PATCH 15/40] Visual Studio Update Build Tools 2022: 17.11.35327.3 This is an automated commit to keep track of toolchain changes on the build server. It applies to every MTA build after this commit until further notice. [skip ci] From 52d4f0c867f82569b8df04b0c34cb2d998ef35a9 Mon Sep 17 00:00:00 2001 From: Marek Kulik Date: Thu, 10 Oct 2024 22:54:54 +0200 Subject: [PATCH 16/40] Add support for unverified player count Your server implementation must encode the ping status as [0x728D, player count as uint16_t, 0xFFFF] --- Client/core/CQueryReceiver.cpp | 2 +- Client/core/CQueryReceiver.h | 2 ++ Client/core/ServerBrowser/CServerBrowser.cpp | 9 ++++++++- Client/core/ServerBrowser/CServerInfo.cpp | 6 ++++-- Client/core/ServerBrowser/CServerList.cpp | 1 + Client/core/ServerBrowser/CServerList.h | 2 ++ Client/sdk/net/CNet.h | 2 +- Shared/sdk/version.h | 2 +- 8 files changed, 20 insertions(+), 6 deletions(-) diff --git a/Client/core/CQueryReceiver.cpp b/Client/core/CQueryReceiver.cpp index c0a1cf1125..059dd879e0 100644 --- a/Client/core/CQueryReceiver.cpp +++ b/Client/core/CQueryReceiver.cpp @@ -183,7 +183,7 @@ SQueryInfo CQueryReceiver::GetServerResponse() // Recover server ping status if present const SString strPingStatus = strBuildNumber.Right(strBuildNumber.length() - strlen(strBuildNumber) - 1); - CCore::GetSingleton().GetNetwork()->UpdatePingStatus(*strPingStatus, info.players); + CCore::GetSingleton().GetNetwork()->UpdatePingStatus(*strPingStatus, info.players, info.isStatusVerified); // Recover server http port if present const SString strNetRoute = strPingStatus.Right(strPingStatus.length() - strlen(strPingStatus) - 1); diff --git a/Client/core/CQueryReceiver.h b/Client/core/CQueryReceiver.h index f55e1004f4..4bc56b90d7 100644 --- a/Client/core/CQueryReceiver.h +++ b/Client/core/CQueryReceiver.h @@ -16,6 +16,7 @@ struct SQueryInfo { containingInfo = false; port = 0; + isStatusVerified = true; isPassworded = false; serials = false; players = 0; @@ -33,6 +34,7 @@ struct SQueryInfo SString gameType; SString mapName; SString versionText; + bool isStatusVerified; bool isPassworded; bool serials; ushort players; diff --git a/Client/core/ServerBrowser/CServerBrowser.cpp b/Client/core/ServerBrowser/CServerBrowser.cpp index 764078e563..1246276b70 100644 --- a/Client/core/ServerBrowser/CServerBrowser.cpp +++ b/Client/core/ServerBrowser/CServerBrowser.cpp @@ -1081,7 +1081,8 @@ void CServerBrowser::AddServerToList(CServerListItem* pServer, const ServerBrows const SString strVersion = !bIncludeOtherVersions ? "" : pServer->strVersion; const SString strVersionSortKey = pServer->strVersionSortKey + pServer->strTieBreakSortKey; - const SString strPlayers = pServer->nMaxPlayers == 0 ? "" : SString("%d / %d", pServer->nPlayers, pServer->nMaxPlayers); + const SString strVerified = pServer->isStatusVerified ? "" : "*"; + const SString strPlayers = pServer->nMaxPlayers == 0 ? "" : SString("%d / %d %s", pServer->nPlayers, pServer->nMaxPlayers, *strVerified); const SString strPlayersSortKey = SString("%04d-", pServer->nMaxPlayers ? pServer->nPlayers + 1 : 0) + pServer->strTieBreakSortKey; const SString strPing = pServer->nPing == 9999 ? "" : SString("%d", pServer->nPing); @@ -1125,6 +1126,12 @@ void CServerBrowser::AddServerToList(CServerListItem* pServer, const ServerBrows m_pServerList[Type]->SetItemColor(iIndex, m_hPing[Type], color.R, color.G, color.B, color.A); m_pServerList[Type]->SetItemColor(iIndex, m_hGame[Type], color.R, color.G, color.B, color.A); + if (!pServer->isStatusVerified) + { + SColor orange = SColorRGBA(230, 200, 180, color.A); + m_pServerList[Type]->SetItemColor(iIndex, m_hPlayers[Type], orange.R, orange.G, orange.B, orange.A); + } + // If the index was modified from the original, then update all indexes because it means there was some sort if (pServer->iRowIndex != iIndex) UpdateRowIndexMembers(Type); diff --git a/Client/core/ServerBrowser/CServerInfo.cpp b/Client/core/ServerBrowser/CServerInfo.cpp index 2b79599c8d..6571fedc32 100644 --- a/Client/core/ServerBrowser/CServerInfo.cpp +++ b/Client/core/ServerBrowser/CServerInfo.cpp @@ -469,13 +469,15 @@ void CServerInfo::Connect() void CServerInfo::ResetServerGUI(CServerListItem* pServer) { + const SString strVerified = pServer->isStatusVerified ? "" : "*"; + // Set our GUI elements to display the server information m_pServerNameLabel->SetText(pServer->strName.c_str()); m_pServerAddressLabel->SetText(pServer->strEndpoint.c_str()); m_pGamemodeLabel->SetText(pServer->strGameMode.c_str()); m_pMapLabel->SetText(pServer->strMap.c_str()); - m_pPlayersLabel->SetText(SString("%i/%i", pServer->nPlayers, pServer->nMaxPlayers).c_str()); - + m_pPlayersLabel->SetText(SString("%d / %d %s", pServer->nPlayers, pServer->nMaxPlayers, *strVerified).c_str()); + m_pPasswordedLabel->SetText(pServer->bPassworded ? _("Yes") : _("No")); m_pLatencyLabel->SetText(SString("%i", pServer->nPing)); diff --git a/Client/core/ServerBrowser/CServerList.cpp b/Client/core/ServerBrowser/CServerList.cpp index 021328d777..044f88e496 100644 --- a/Client/core/ServerBrowser/CServerList.cpp +++ b/Client/core/ServerBrowser/CServerList.cpp @@ -514,6 +514,7 @@ bool CServerListItem::ParseQuery() if ((uiMasterServerSaysRestrictions & RESTRICTION_PLAYER_LIST) == false) vecPlayers = info.playersPool; + isStatusVerified = info.isStatusVerified; bScanned = true; PostChange(); diff --git a/Client/core/ServerBrowser/CServerList.h b/Client/core/ServerBrowser/CServerList.h index e2f0b2864f..5d0e450873 100644 --- a/Client/core/ServerBrowser/CServerList.h +++ b/Client/core/ServerBrowser/CServerList.h @@ -139,6 +139,7 @@ class CServerListItem bScanned = false; bSkipped = false; bSerials = false; + isStatusVerified = true; bPassworded = false; bKeepFlag = false; iRowIndex = -1; @@ -182,6 +183,7 @@ class CServerListItem unsigned short nPlayers; // Current players unsigned short nMaxPlayers; // Maximum players unsigned short nPing; // Ping time + bool isStatusVerified; // Ping status verified bool bPassworded; // Password protected bool bSerials; // Serial verification on bool bScanned; diff --git a/Client/sdk/net/CNet.h b/Client/sdk/net/CNet.h index 36824b6ab3..cb38718f47 100644 --- a/Client/sdk/net/CNet.h +++ b/Client/sdk/net/CNet.h @@ -115,7 +115,7 @@ class CNet virtual const char* GetNextBuffer() = 0; virtual const char* GetDiagnosticStatus() = 0; - virtual void UpdatePingStatus(const char* szStatus, ushort& usDataRef) = 0; + virtual void UpdatePingStatus(const char* szStatus, ushort& usDataRef, bool& isVerified) = 0; virtual bool VerifySignature(const char* pData, unsigned long ulSize) = 0; diff --git a/Shared/sdk/version.h b/Shared/sdk/version.h index 9069c14d9b..12d10c80a5 100644 --- a/Shared/sdk/version.h +++ b/Shared/sdk/version.h @@ -108,7 +108,7 @@ #define _ASE_VERSION QUOTE_DEFINE(MTASA_VERSION_MAJOR) "." QUOTE_DEFINE(MTASA_VERSION_MINOR) #define _NETCODE_VERSION_BRANCH_ID 0x4 // Use 0x1 - 0xF to indicate an incompatible branch is being used (0x0 is reserved, 0x4 is trunk) -#define _CLIENT_NET_MODULE_VERSION 0x0AE // (0x000 - 0xfff) Lvl9 wizards only +#define _CLIENT_NET_MODULE_VERSION 0x0AF // (0x000 - 0xfff) Lvl9 wizards only #define _SERVER_NET_MODULE_VERSION 0x0AB // (0x000 - 0xfff) Lvl9 wizards only #define _NETCODE_VERSION 0x1DA // (0x000 - 0xfff) Increment when net messages change (pre-release) From 840b73c52ce1c6335837dac20d73e565c0f21085 Mon Sep 17 00:00:00 2001 From: Pot Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 20:57:05 +0000 Subject: [PATCH 17/40] Update client en_US pot [ci skip] --- .../MTA/locale/en_US/client.pot | 3477 +++++++++-------- 1 file changed, 1739 insertions(+), 1738 deletions(-) diff --git a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot index b19c565c3c..0947cb8c01 100644 --- a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot +++ b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: MTA San Andreas 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-27 04:28+0000\n" +"POT-Creation-Date: 2024-10-10 20:57+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,19 +18,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: Client/game_sa/CSettingsSA.cpp:767 -msgid "Can't find valid screen resolution." -msgstr "" - -#. Confirm that res should be used -#: Client/game_sa/CSettingsSA.cpp:843 -msgid "Are you sure you want to use this screen resolution?" -msgstr "" - -#: Client/game_sa/CSettingsSA.cpp:845 Client/loader/Dialogs.cpp:194 -msgid "MTA: San Andreas" -msgstr "" - #: Client/cefweb/CWebsiteRequests.cpp:19 msgid "Website requests" msgstr "" @@ -56,11 +43,6 @@ msgstr "" msgid "Deny" msgstr "" -#. Couldn't create render target for CPostEffects -#: Client/multiplayer_sa/CMultiplayerSA_CrashFixHacks.cpp:1450 -msgid "Problem with graphics driver" -msgstr "" - #: Client/mods/deathmatch/CClient.cpp:36 msgid "This version has expired." msgstr "" @@ -176,247 +158,9 @@ msgstr "" msgid "(Development mode) prints world sound ids into the debug window" msgstr "" -#. Throw the error and disconnect -#: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:141 -#, c-format -msgid "Download error: %s" -msgstr "" - -#. Show timeout message and disconnect -#. Display an error, reset the error status and exit -#. Show a message that the connection timed out and abort -#. Show failed message and abort the attempt -#: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:145 -#: Client/mods/deathmatch/logic/CClientGame.cpp:641 -#: Client/mods/deathmatch/logic/CClientGame.cpp:715 -#: Client/mods/deathmatch/logic/CClientGame.cpp:739 -#: Client/mods/deathmatch/logic/CClientGame.cpp:761 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1174 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1254 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1264 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1333 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1370 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1419 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1431 -#: Client/core/CSettings.cpp:2941 Client/core/CSettings.cpp:4166 -#: Client/core/CSettings.cpp:4194 Client/core/CSettings.cpp:4764 -#: Client/core/CCore.cpp:1275 Client/core/CCore.cpp:1288 -#: Client/core/CConnectManager.cpp:80 Client/core/CConnectManager.cpp:111 -#: Client/core/CConnectManager.cpp:127 Client/core/CConnectManager.cpp:263 -#: Client/core/CConnectManager.cpp:321 Client/core/CConnectManager.cpp:404 -#: Client/core/CConnectManager.cpp:411 Client/core/CConnectManager.cpp:421 -#: Client/core/CGUI.cpp:87 Client/core/ServerBrowser/CServerBrowser.cpp:1278 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1300 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1357 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1406 -#: Client/core/DXHook/CDirect3DHook9.cpp:127 -#: Client/loader/MainFunctions.cpp:252 Client/loader/MainFunctions.cpp:267 -#: Client/loader/MainFunctions.cpp:269 Client/loader/MainFunctions.cpp:846 -#: Client/loader/CInstallManager.cpp:552 Client/loader/CInstallManager.cpp:561 -#: Shared/mods/deathmatch/logic/CLatentTransferManager.cpp:378 -#: Shared/sdk/SharedUtil.Misc.hpp:137 -msgid "Error" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:506 -msgid "Disconnected: Invalid nickname" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:510 -msgid "Disconnect from server" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:514 -#, c-format -msgid "" -"Disconnected: Serial is banned.\n" -"Reason: %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:520 -#, c-format -msgid "" -"Disconnected: You are banned.\n" -"Reason: %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:526 -#, c-format -msgid "" -"Disconnected: Account is banned.\n" -"Reason: %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:531 -msgid "Disconnected: Version mismatch" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:535 -msgid "Disconnected: Join flood. Please wait a minute, then reconnect." -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:539 -#, c-format -msgid "" -"Disconnected: Server from different branch.\n" -"Information: %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:544 -#, c-format -msgid "" -"Disconnected: Bad version.\n" -"Information: %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:549 -#, c-format -msgid "" -"Disconnected: Server is running a newer build.\n" -"Information: %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:554 -#, c-format -msgid "" -"Disconnected: Server is running an older build.\n" -"Information: %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:559 -msgid "Disconnected: Nick already in use" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:563 -msgid "Disconnected: Player element could not be created." -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:567 -#, c-format -msgid "Disconnected: Server refused the connection: %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:572 -msgid "Disconnected: Serial verification failed" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:576 -#, c-format -msgid "Disconnected: Connection desync %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:585 -#, c-format -msgid "Disconnected: You were kicked by %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:590 -#, c-format -msgid "Disconnected: You were banned by %s" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:601 -msgid "Disconnected: Server shutdown or restarting" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:621 -msgid "You were kicked from the game" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:622 -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:633 -msgid "This server requires a non-modifed gta_sa.exe" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:623 -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:634 -msgid "Please replace gta_sa.exe" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:624 -msgid "This server does not allow custom D3D9.DLLs" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:625 -msgid "Remove D3D9.DLL from your GTA install directory and restart MTA" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:626 -msgid "This server does not allow virtual machines" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:627 -msgid "This server requires driver signing to be enabled" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:628 -msgid "Please restart your PC" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:629 -msgid "This server has detected missing anti-cheat components" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:630 -msgid "Try restarting MTA" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:631 -msgid "This server requires a non-modifed gta3.img and gta_int.img" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:632 -msgid "Please replace gta3.img or gta_int.img" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:635 -msgid "This server does not allow Wine" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:636 -msgid "Ensure no other program is modifying MTA:SA" -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:650 -msgid "Time Remaining: " -msgstr "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:660 -#, c-format -msgid "%d day" -msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:662 -#, c-format -msgid "%d hour" -msgid_plural "%d hours" -msgstr[0] "" -msgstr[1] "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:664 -#, c-format -msgid "%d minute" -msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:666 -#, c-format -msgid "%d second" -msgid_plural "%d seconds" -msgstr[0] "" -msgstr[1] "" - -#. Display the error -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:670 -msgid "Disconnected" -msgstr "" - #: Client/mods/deathmatch/logic/CResource.cpp:375 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1089 -#: Client/core/CSettings.cpp:3483 Client/core/CCore.cpp:674 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1089 Client/core/CCore.cpp:674 +#: Client/core/CSettings.cpp:3483 msgid "In-game" msgstr "" @@ -530,21 +274,58 @@ msgid "Choking to death in" msgstr "" #: Client/mods/deathmatch/logic/CClientGame.cpp:533 -#: Client/core/CSettings.cpp:3479 Client/core/CCore.cpp:674 -#: Client/core/CMainMenu.cpp:304 +#: Client/core/CMainMenu.cpp:304 Client/core/CCore.cpp:674 +#: Client/core/CSettings.cpp:3479 msgid "Main menu" msgstr "" +#. Show timeout message and disconnect +#. Display an error, reset the error status and exit +#. Show a message that the connection timed out and abort +#. Show failed message and abort the attempt #: Client/mods/deathmatch/logic/CClientGame.cpp:641 +#: Client/mods/deathmatch/logic/CClientGame.cpp:715 #: Client/mods/deathmatch/logic/CClientGame.cpp:739 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1300 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1357 -msgid "Invalid nickname! Please go to Settings and set a new one!" -msgstr "" - -#. Display the status box -#: Client/mods/deathmatch/logic/CClientGame.cpp:657 -#: Client/core/CConnectManager.cpp:148 +#: Client/mods/deathmatch/logic/CClientGame.cpp:761 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1174 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1254 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1264 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1333 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1370 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1419 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1431 +#: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:145 +#: Client/loader/MainFunctions.cpp:252 Client/loader/MainFunctions.cpp:267 +#: Client/loader/MainFunctions.cpp:269 Client/loader/MainFunctions.cpp:846 +#: Client/loader/CInstallManager.cpp:552 Client/loader/CInstallManager.cpp:561 +#: Client/core/CGUI.cpp:87 Client/core/CCore.cpp:1275 +#: Client/core/CCore.cpp:1288 Client/core/CSettings.cpp:2941 +#: Client/core/CSettings.cpp:4166 Client/core/CSettings.cpp:4194 +#: Client/core/CSettings.cpp:4764 Client/core/CConnectManager.cpp:80 +#: Client/core/CConnectManager.cpp:111 Client/core/CConnectManager.cpp:127 +#: Client/core/CConnectManager.cpp:263 Client/core/CConnectManager.cpp:321 +#: Client/core/CConnectManager.cpp:404 Client/core/CConnectManager.cpp:411 +#: Client/core/CConnectManager.cpp:421 +#: Client/core/DXHook/CDirect3DHook9.cpp:127 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1285 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1307 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1364 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1413 +#: Shared/mods/deathmatch/logic/CLatentTransferManager.cpp:378 +#: Shared/sdk/SharedUtil.Misc.hpp:137 +msgid "Error" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:641 +#: Client/mods/deathmatch/logic/CClientGame.cpp:739 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1307 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1364 +msgid "Invalid nickname! Please go to Settings and set a new one!" +msgstr "" + +#. Display the status box +#: Client/mods/deathmatch/logic/CClientGame.cpp:657 +#: Client/core/CConnectManager.cpp:148 msgid "CONNECTING" msgstr "" @@ -672,75 +453,6 @@ msgstr "" msgid "Wasted" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:37 -msgid "HOST GAME" -msgstr "" - -#. * -#. * Webbrowser tab -#. * -#: Client/mods/deathmatch/logic/CLocalServer.cpp:51 -#: Client/core/CSettings.cpp:442 Client/core/CSettings.cpp:630 -#: Client/core/CSettings.cpp:904 Client/core/CSettings.cpp:2018 -msgid "General" -msgstr "" - -#. m_pTabs->CreateTab ( "Gamemode" ); -#: Client/mods/deathmatch/logic/CLocalServer.cpp:53 -msgid "Resources" -msgstr "" - -#: Client/mods/deathmatch/logic/CLocalServer.cpp:55 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:57 -msgid "Server name:" -msgstr "" - -#: Client/mods/deathmatch/logic/CLocalServer.cpp:64 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:66 -msgid "Password:" -msgstr "" - -#: Client/mods/deathmatch/logic/CLocalServer.cpp:73 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:75 -msgid "Max players:" -msgstr "" - -#: Client/mods/deathmatch/logic/CLocalServer.cpp:82 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:84 -msgid "Broadcast:" -msgstr "" - -#: Client/mods/deathmatch/logic/CLocalServer.cpp:86 -msgid "LAN" -msgstr "" - -#. Create the tabs -#: Client/mods/deathmatch/logic/CLocalServer.cpp:90 -#: Client/core/ServerBrowser/CServerBrowser.cpp:133 -msgid "Internet" -msgstr "" - -#: Client/mods/deathmatch/logic/CLocalServer.cpp:99 -msgid "Selected" -msgstr "" - -#: Client/mods/deathmatch/logic/CLocalServer.cpp:116 -msgid "All" -msgstr "" - -#: Client/mods/deathmatch/logic/CLocalServer.cpp:118 -msgid "Start" -msgstr "" - -#. Cancel button -#: Client/mods/deathmatch/logic/CLocalServer.cpp:123 -#: Client/core/CSettings.cpp:132 Client/core/CSettings.cpp:4784 -#: Client/core/CVersionUpdater.cpp:1790 Client/core/CVersionUpdater.cpp:1806 -#: Client/core/CVersionUpdater.cpp:1841 Client/loader/Dialogs.cpp:136 -#: Client/gui/CGUIMessageBox_Impl.cpp:68 -msgid "Cancel" -msgstr "" - #: Client/mods/deathmatch/logic/CTransferBox.cpp:25 msgid "Map download progress:" msgstr "" @@ -761,1043 +473,1413 @@ msgstr "" msgid "Disconnect to cancel download" msgstr "" -#: Client/core/CScreenShot.cpp:104 -#, c-format -msgid "Screenshot got %d bytes, but expected %d" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:506 +msgid "Disconnected: Invalid nickname" msgstr "" -#: Client/core/CScreenShot.cpp:110 -msgid "Screenshot failed" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:510 +msgid "Disconnect from server" msgstr "" -#: Client/core/CScreenShot.cpp:160 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:514 #, c-format -msgid "Screenshot taken: '%s'" +msgid "" +"Disconnected: Serial is banned.\n" +"Reason: %s" msgstr "" -#. Create window (with frame) if it will fit inside the screen resolution -#: Client/core/CSettings.cpp:84 -msgid "SETTINGS" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:520 +#, c-format +msgid "" +"Disconnected: You are banned.\n" +"Reason: %s" msgstr "" -#: Client/core/CSettings.cpp:116 -msgid "Multiplayer" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:526 +#, c-format +msgid "" +"Disconnected: Account is banned.\n" +"Reason: %s" msgstr "" -#: Client/core/CSettings.cpp:117 -msgid "Video" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:531 +msgid "Disconnected: Version mismatch" msgstr "" -#: Client/core/CSettings.cpp:118 -msgid "Audio" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:535 +msgid "Disconnected: Join flood. Please wait a minute, then reconnect." msgstr "" -#: Client/core/CSettings.cpp:119 -msgid "Binds" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:539 +#, c-format +msgid "" +"Disconnected: Server from different branch.\n" +"Information: %s" msgstr "" -#: Client/core/CSettings.cpp:120 -msgid "Controls" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:544 +#, c-format +msgid "" +"Disconnected: Bad version.\n" +"Information: %s" msgstr "" -#: Client/core/CSettings.cpp:121 -msgid "Interface" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:549 +#, c-format +msgid "" +"Disconnected: Server is running a newer build.\n" +"Information: %s" msgstr "" -#: Client/core/CSettings.cpp:122 -msgid "Web Browser" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:554 +#, c-format +msgid "" +"Disconnected: Server is running an older build.\n" +"Information: %s" msgstr "" -#: Client/core/CSettings.cpp:123 -msgid "Advanced" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:559 +msgid "Disconnected: Nick already in use" msgstr "" -#. Create buttons -#. OK button -#: Client/core/CSettings.cpp:127 Client/core/CSettings.cpp:4785 -#: Client/core/CVersionUpdater.cpp:1607 Client/core/CVersionUpdater.cpp:1823 -#: Client/core/CVersionUpdater.cpp:1916 Client/core/CVersionUpdater.cpp:1938 -#: Client/core/CVersionUpdater.cpp:1956 Client/core/CVersionUpdater.cpp:1968 -#: Client/core/CVersionUpdater.cpp:2120 Client/core/CVersionUpdater.cpp:2129 -#: Client/core/CVersionUpdater.cpp:2138 Client/core/CVersionUpdater.cpp:2152 -#: Client/loader/Dialogs.cpp:133 Client/gui/CGUIMessageBox_Impl.cpp:64 -msgid "OK" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:563 +msgid "Disconnected: Player element could not be created." msgstr "" -#: Client/core/CSettings.cpp:147 Client/core/CSettings.cpp:338 -#: Client/core/CSettings.cpp:617 Client/core/CSettings.cpp:889 -msgid "Load defaults" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:567 +#, c-format +msgid "Disconnected: Server refused the connection: %s" msgstr "" -#. * -#. * Controls tab -#. * -#: Client/core/CSettings.cpp:157 Client/core/CSettings.cpp:181 -msgid "Mouse sensitivity:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:572 +msgid "Disconnected: Serial verification failed" msgstr "" -#. VerticalAimSensitivity -#: Client/core/CSettings.cpp:157 Client/core/CSettings.cpp:199 -msgid "Vertical aim sensitivity:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:576 +#, c-format +msgid "Disconnected: Connection desync %s" msgstr "" -#. Mouse Options -#: Client/core/CSettings.cpp:160 -msgid "Mouse options" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:585 +#, c-format +msgid "Disconnected: You were kicked by %s" msgstr "" -#: Client/core/CSettings.cpp:167 -msgid "Invert mouse vertically" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:590 +#, c-format +msgid "Disconnected: You were banned by %s" msgstr "" -#: Client/core/CSettings.cpp:171 -msgid "Steer with mouse" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:601 +msgid "Disconnected: Server shutdown or restarting" msgstr "" -#: Client/core/CSettings.cpp:175 -msgid "Fly with mouse" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:621 +msgid "You were kicked from the game" msgstr "" -#. Joypad options -#: Client/core/CSettings.cpp:217 -msgid "Joypad options" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:622 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:633 +msgid "This server requires a non-modifed gta_sa.exe" msgstr "" -#: Client/core/CSettings.cpp:230 -msgid "Standard controls (Mouse + Keyboard)" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:623 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:634 +msgid "Please replace gta_sa.exe" msgstr "" -#: Client/core/CSettings.cpp:237 -msgid "Classic controls (Joypad)" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:624 +msgid "This server does not allow custom D3D9.DLLs" msgstr "" -#: Client/core/CSettings.cpp:274 -msgid "Dead Zone" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:625 +msgid "Remove D3D9.DLL from your GTA install directory and restart MTA" msgstr "" -#: Client/core/CSettings.cpp:279 -msgid "Saturation" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:626 +msgid "This server does not allow virtual machines" msgstr "" -#: Client/core/CSettings.cpp:285 -msgid "Use the 'Binds' tab for joypad buttons." +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:627 +msgid "This server requires driver signing to be enabled" msgstr "" -#: Client/core/CSettings.cpp:324 -msgid "Left Stick" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:628 +msgid "Please restart your PC" msgstr "" -#: Client/core/CSettings.cpp:330 -msgid "Right Stick" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:629 +msgid "This server has detected missing anti-cheat components" msgstr "" -#: Client/core/CSettings.cpp:345 -msgid "DESCRIPTION" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:630 +msgid "Try restarting MTA" msgstr "" -#: Client/core/CSettings.cpp:346 -msgid "KEY" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:631 +msgid "This server requires a non-modifed gta3.img and gta_int.img" msgstr "" -#: Client/core/CSettings.cpp:348 -msgid "ALT. KEY" -msgstr "" - -#. * -#. * Multiplayer tab -#. * -#: Client/core/CSettings.cpp:353 Client/core/CSettings.cpp:356 -msgid "Nick:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:632 +msgid "Please replace gta3.img or gta_int.img" msgstr "" -#: Client/core/CSettings.cpp:378 -msgid "Save server passwords" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:635 +msgid "This server does not allow Wine" msgstr "" -#: Client/core/CSettings.cpp:383 -msgid "Auto-refresh server browser" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:636 +msgid "Ensure no other program is modifying MTA:SA" msgstr "" -#: Client/core/CSettings.cpp:388 -msgid "Allow screen upload" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:650 +msgid "Time Remaining: " msgstr "" -#: Client/core/CSettings.cpp:393 -msgid "Allow external sounds" -msgstr "" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:660 +#, c-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" -#: Client/core/CSettings.cpp:398 -msgid "Always show download window" -msgstr "" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:662 +#, c-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" -#: Client/core/CSettings.cpp:403 -msgid "Allow connecting with Discord Rich Presence" -msgstr "" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:664 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" -#: Client/core/CSettings.cpp:408 -msgid "Use customized GTA:SA files" -msgstr "" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:666 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "" +msgstr[1] "" -#: Client/core/CSettings.cpp:413 -msgid "Map rendering options" +#. Display the error +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:670 +msgid "Disconnected" msgstr "" -#: Client/core/CSettings.cpp:419 Client/core/CSettings.cpp:628 -msgid "Opacity:" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:37 +msgid "HOST GAME" msgstr "" #. * -#. * Audio tab +#. * Webbrowser tab #. * -#: Client/core/CSettings.cpp:439 Client/core/CSettings.cpp:448 -msgid "Master volume:" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:51 +#: Client/core/CSettings.cpp:442 Client/core/CSettings.cpp:630 +#: Client/core/CSettings.cpp:904 Client/core/CSettings.cpp:2018 +msgid "General" msgstr "" -#: Client/core/CSettings.cpp:439 Client/core/CSettings.cpp:467 -msgid "Radio volume:" +#. m_pTabs->CreateTab ( "Gamemode" ); +#: Client/mods/deathmatch/logic/CLocalServer.cpp:53 +msgid "Resources" msgstr "" -#: Client/core/CSettings.cpp:439 Client/core/CSettings.cpp:486 -msgid "SFX volume:" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:55 +#: Client/mods/deathmatch/logic/CLocalServer.cpp:57 +msgid "Server name:" msgstr "" -#: Client/core/CSettings.cpp:439 Client/core/CSettings.cpp:505 -msgid "MTA volume:" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:64 +#: Client/mods/deathmatch/logic/CLocalServer.cpp:66 +msgid "Password:" msgstr "" -#: Client/core/CSettings.cpp:440 Client/core/CSettings.cpp:524 -msgid "Voice volume:" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:73 +#: Client/mods/deathmatch/logic/CLocalServer.cpp:75 +msgid "Max players:" msgstr "" -#: Client/core/CSettings.cpp:440 Client/core/CSettings.cpp:565 -msgid "Play mode:" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:82 +#: Client/mods/deathmatch/logic/CLocalServer.cpp:84 +msgid "Broadcast:" msgstr "" -#: Client/core/CSettings.cpp:543 -msgid "Radio options" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:86 +msgid "LAN" msgstr "" -#: Client/core/CSettings.cpp:549 -msgid "Radio Equalizer" +#. Create the tabs +#: Client/mods/deathmatch/logic/CLocalServer.cpp:90 +#: Client/core/ServerBrowser/CServerBrowser.cpp:133 +msgid "Internet" msgstr "" -#: Client/core/CSettings.cpp:554 -msgid "Radio Auto-tune" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:99 +msgid "Selected" msgstr "" -#: Client/core/CSettings.cpp:559 -msgid "Usertrack options" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:116 +msgid "All" msgstr "" -#: Client/core/CSettings.cpp:573 Client/core/CSettings.cpp:3087 -msgid "Radio" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:118 +msgid "Start" msgstr "" -#: Client/core/CSettings.cpp:574 Client/core/CSettings.cpp:3089 -msgid "Random" +#. Cancel button +#: Client/mods/deathmatch/logic/CLocalServer.cpp:123 +#: Client/gui/CGUIMessageBox_Impl.cpp:68 Client/loader/Dialogs.cpp:136 +#: Client/core/CVersionUpdater.cpp:1790 Client/core/CVersionUpdater.cpp:1806 +#: Client/core/CVersionUpdater.cpp:1841 Client/core/CSettings.cpp:132 +#: Client/core/CSettings.cpp:4784 +msgid "Cancel" msgstr "" -#: Client/core/CSettings.cpp:575 Client/core/CSettings.cpp:3091 -msgid "Sequential" +#. Throw the error and disconnect +#: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:141 +#, c-format +msgid "Download error: %s" msgstr "" -#: Client/core/CSettings.cpp:578 -msgid "Automatic Media Scan" +#: Client/game_sa/CSettingsSA.cpp:767 +msgid "Can't find valid screen resolution." msgstr "" -#: Client/core/CSettings.cpp:585 -msgid "Mute options" +#. Confirm that res should be used +#: Client/game_sa/CSettingsSA.cpp:843 +msgid "Are you sure you want to use this screen resolution?" msgstr "" -#: Client/core/CSettings.cpp:591 -msgid "Mute All sounds when minimized" +#: Client/game_sa/CSettingsSA.cpp:845 Client/loader/Dialogs.cpp:194 +msgid "MTA: San Andreas" msgstr "" -#: Client/core/CSettings.cpp:596 -msgid "Mute Radio sounds when minimized" +#. Couldn't create render target for CPostEffects +#: Client/multiplayer_sa/CMultiplayerSA_CrashFixHacks.cpp:1450 +msgid "Problem with graphics driver" msgstr "" -#: Client/core/CSettings.cpp:601 -msgid "Mute SFX sounds when minimized" +#. Create buttons +#. OK button +#: Client/gui/CGUIMessageBox_Impl.cpp:64 Client/loader/Dialogs.cpp:133 +#: Client/core/CVersionUpdater.cpp:1607 Client/core/CVersionUpdater.cpp:1823 +#: Client/core/CVersionUpdater.cpp:1916 Client/core/CVersionUpdater.cpp:1938 +#: Client/core/CVersionUpdater.cpp:1956 Client/core/CVersionUpdater.cpp:1968 +#: Client/core/CVersionUpdater.cpp:2120 Client/core/CVersionUpdater.cpp:2129 +#: Client/core/CVersionUpdater.cpp:2138 Client/core/CVersionUpdater.cpp:2152 +#: Client/core/CSettings.cpp:127 Client/core/CSettings.cpp:4785 +msgid "OK" msgstr "" -#: Client/core/CSettings.cpp:606 -msgid "Mute MTA sounds when minimized" +#. ///////////////////////////////////////////////////////////////////////// +#. +#. Dialog strings +#. +#. +#. ///////////////////////////////////////////////////////////////////////// +#: Client/gui/CGUIMessageBox_Impl.cpp:72 Client/loader/Dialogs.cpp:131 +#: Client/core/CVersionUpdater.cpp:1572 Client/core/CVersionUpdater.cpp:1590 +#: Client/core/CVersionUpdater.cpp:1859 Client/core/CVersionUpdater.cpp:1878 +#: Client/core/CQuestionBox.cpp:195 Client/core/CMainMenu.cpp:1200 +#: Client/core/CSettings.cpp:1389 Client/core/CSettings.cpp:1413 +#: Client/core/CSettings.cpp:4489 Client/core/CSettings.cpp:4563 +#: Client/core/CSettings.cpp:4593 Client/core/CSettings.cpp:4642 +#: Client/core/ServerBrowser/CServerInfo.cpp:481 +msgid "Yes" msgstr "" -#: Client/core/CSettings.cpp:611 -msgid "Mute Voice sounds when minimized" +#: Client/loader/Install.cpp:265 +msgid "Unknown" msgstr "" -#. * -#. * Video tab -#. * -#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:636 -msgid "Resolution:" +#: Client/loader/Install.cpp:272 +#, c-format +msgid "" +"The file '%s' is currently locked by %zu processes.\n" +"\n" +"Do you want to terminate the following processes and continue updating?\n" +"\n" +"%s" msgstr "" -#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:683 -msgid "FOV:" +#: Client/loader/Install.cpp:479 +#, c-format +msgid "" +"Your installation may be corrupt now.\n" +"\n" +"%zu out of %zu files could not be restored from the backup.\n" +"\n" +"You should reinstall Multi Theft Auto from www.multitheftauto.com\n" +"or try running the update with administrator rights." msgstr "" -#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:699 -msgid "Draw Distance:" +#: Client/loader/Install.cpp:852 Client/loader/Dialogs.cpp:901 +msgid "Installing update..." msgstr "" -#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:717 -msgid "Brightness:" +#: Client/loader/Install.cpp:934 Client/loader/Dialogs.cpp:909 +msgid "Extracting files..." msgstr "" -#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:735 -msgid "FX Quality:" +#: Client/loader/Utils.cpp:534 Client/loader/Dialogs.cpp:890 +msgid "Searching for Grand Theft Auto San Andreas" msgstr "" -#: Client/core/CSettings.cpp:628 Client/core/CSettings.cpp:749 -msgid "Anisotropic filtering:" +#: Client/loader/Utils.cpp:536 Client/loader/Dialogs.cpp:893 +msgid "Please start Grand Theft Auto San Andreas" msgstr "" -#: Client/core/CSettings.cpp:628 Client/core/CSettings.cpp:776 -msgid "Anti-aliasing:" +#: Client/loader/Utils.cpp:600 +msgid "Select your Grand Theft Auto: San Andreas Installation Directory" msgstr "" -#: Client/core/CSettings.cpp:628 Client/core/CSettings.cpp:790 -msgid "Aspect Ratio:" +#: Client/loader/Utils.cpp:968 Client/loader/CInstallManager.cpp:361 +#, c-format +msgid "" +"MTA:SA needs Administrator access for the following task:\n" +"\n" +" '%s'\n" +"\n" +"Please confirm in the next window." msgstr "" -#: Client/core/CSettings.cpp:648 -msgid "Windowed" +#: Client/loader/Utils.cpp:1069 +#, c-format +msgid "Error loading %s module! (%s)" msgstr "" -#: Client/core/CSettings.cpp:654 -msgid "DPI aware" +#: Client/loader/Utils.cpp:1394 Client/loader/Dialogs.cpp:914 +msgid "Copying files..." msgstr "" -#: Client/core/CSettings.cpp:662 Client/core/CSettings.cpp:1004 -#: Client/loader/MainFunctions.cpp:389 -msgid "Fullscreen mode:" +#: Client/loader/Utils.cpp:1454 Client/loader/Dialogs.cpp:919 +msgid "Copy finished early. Everything OK." msgstr "" -#: Client/core/CSettings.cpp:669 Client/core/CSettings.cpp:1613 -msgid "Standard" +#: Client/loader/Utils.cpp:1460 Client/loader/Dialogs.cpp:924 +msgid "Finishing..." msgstr "" -#: Client/core/CSettings.cpp:670 Client/core/CSettings.cpp:1615 -#: Client/loader/MainFunctions.cpp:389 -msgid "Borderless window" +#: Client/loader/Utils.cpp:1462 Client/loader/Dialogs.cpp:928 +msgid "Done!" msgstr "" -#: Client/core/CSettings.cpp:671 Client/core/CSettings.cpp:1617 -msgid "Borderless keep res" +#: Client/loader/Utils.cpp:1502 +#, c-format +msgid "" +"New installation of %s detected.\n" +"\n" +"Do you want to copy your settings from %s ?" msgstr "" -#: Client/core/CSettings.cpp:675 -msgid "Mip Mapping" -msgstr "" - -#: Client/core/CSettings.cpp:743 Client/core/CSettings.cpp:1517 -msgid "Low" +#: Client/loader/Utils.cpp:1541 +#, c-format +msgid "GTA:SA had trouble opening the file '%s'" msgstr "" -#: Client/core/CSettings.cpp:744 Client/core/CSettings.cpp:1519 -msgid "Medium" +#: Client/loader/Utils.cpp:1563 +#, c-format +msgid "GTA:SA is missing the file '%s'." msgstr "" -#: Client/core/CSettings.cpp:745 Client/core/CSettings.cpp:1086 -#: Client/core/CSettings.cpp:1521 Client/core/CSettings.cpp:3145 -msgid "High" +#: Client/loader/Utils.cpp:1588 +msgid "GTA:SA had trouble loading a model." msgstr "" -#: Client/core/CSettings.cpp:746 Client/core/CSettings.cpp:1523 -msgid "Very high" +#: Client/loader/Utils.cpp:1590 +msgid "If you recently modified gta3.img, then try reinstalling GTA:SA." msgstr "" -#: Client/core/CSettings.cpp:761 Client/core/CSettings.cpp:784 -#: Client/core/CSettings.cpp:1017 Client/core/CSettings.cpp:1071 -#: Client/core/CSettings.cpp:1201 Client/core/CSettings.cpp:1527 -#: Client/core/CSettings.cpp:3152 Client/core/CSettings.cpp:3184 -#: Client/core/CSettings.cpp:3206 Client/core/CSettings.cpp:4234 -msgid "Off" +#: Client/loader/Utils.cpp:1615 +msgid "GTA:SA had trouble adding an upgrade to a vehicle." msgstr "" -#: Client/core/CSettings.cpp:785 Client/core/CSettings.cpp:1529 -msgid "1x" +#: Client/loader/Utils.cpp:1634 +#, c-format +msgid "GTA:SA found errors in the file '%s'" msgstr "" -#: Client/core/CSettings.cpp:786 Client/core/CSettings.cpp:1531 -msgid "2x" +#: Client/loader/Utils.cpp:1716 +msgid "Did your computer restart when playing MTA:SA?" msgstr "" -#: Client/core/CSettings.cpp:787 Client/core/CSettings.cpp:1533 -msgid "3x" +#: Client/loader/Utils.cpp:1781 +msgid "Please terminate the following programs before continuing:" msgstr "" -#: Client/core/CSettings.cpp:800 Client/core/CSettings.cpp:1019 -#: Client/core/CSettings.cpp:1539 Client/core/CSettings.cpp:3154 -msgid "Auto" +#: Client/loader/Dialogs.cpp:132 Client/core/CVersionUpdater.cpp:1571 +#: Client/core/CVersionUpdater.cpp:1589 Client/core/CVersionUpdater.cpp:1858 +#: Client/core/CVersionUpdater.cpp:1877 Client/core/CQuestionBox.cpp:194 +#: Client/core/CMainMenu.cpp:1199 Client/core/CSettings.cpp:1388 +#: Client/core/CSettings.cpp:1412 Client/core/CSettings.cpp:4488 +#: Client/core/CSettings.cpp:4562 Client/core/CSettings.cpp:4592 +#: Client/core/CSettings.cpp:4641 Client/core/ServerBrowser/CServerInfo.cpp:481 +msgid "No" msgstr "" -#: Client/core/CSettings.cpp:801 Client/core/CSettings.cpp:1541 -msgid "4:3" +#: Client/loader/Dialogs.cpp:134 +msgid "Quit" msgstr "" -#: Client/core/CSettings.cpp:802 Client/core/CSettings.cpp:1543 -msgid "16:10" +#: Client/loader/Dialogs.cpp:135 +#: Client/core/ServerBrowser/CServerBrowser.cpp:556 +msgid "Help" msgstr "" -#: Client/core/CSettings.cpp:803 Client/core/CSettings.cpp:1545 -msgid "16:9" +#: Client/loader/Dialogs.cpp:151 +msgid "MTA: San Andreas has encountered a problem" msgstr "" -#: Client/core/CSettings.cpp:806 -msgid "HUD Match Aspect Ratio" +#: Client/loader/Dialogs.cpp:152 +msgid "Crash information" msgstr "" -#: Client/core/CSettings.cpp:812 -msgid "Volumetric Shadows" +#: Client/loader/Dialogs.cpp:153 +msgid "" +"Tick the check box to send this crash info to MTA devs using the 'internet'" msgstr "" -#: Client/core/CSettings.cpp:816 -msgid "Grass effect" +#: Client/loader/Dialogs.cpp:154 +msgid "Doing so will increase the chance of this crash being fixed." msgstr "" -#: Client/core/CSettings.cpp:820 -msgid "Heat haze" +#: Client/loader/Dialogs.cpp:155 +msgid "Do you want to restart MTA: San Andreas ?" msgstr "" -#: Client/core/CSettings.cpp:824 -msgid "Tyre Smoke etc" +#: Client/loader/Dialogs.cpp:162 +msgid "MTA: San Andreas - Warning" msgstr "" -#: Client/core/CSettings.cpp:828 -msgid "Dynamic ped shadows" +#: Client/loader/Dialogs.cpp:163 +msgid "" +"Your Grand Theft Auto: San Andreas install directory contains these files:" msgstr "" -#: Client/core/CSettings.cpp:832 -msgid "Motion blur" +#: Client/loader/Dialogs.cpp:165 +msgid "" +"These files are not required and may interfere with the graphical features " +"in this version of MTA:SA.\n" +"\n" +"It is recommended that you remove or rename these files." msgstr "" -#: Client/core/CSettings.cpp:837 -msgid "Full Screen Minimize" +#: Client/loader/Dialogs.cpp:167 +msgid "Keep these files, but also show this warning on next start" msgstr "" -#: Client/core/CSettings.cpp:849 -msgid "Enable Device Selection Dialog" +#: Client/loader/Dialogs.cpp:168 +msgid "Do not remind me about these files again" msgstr "" -#: Client/core/CSettings.cpp:861 -msgid "Show unsafe resolutions" +#: Client/loader/Dialogs.cpp:169 +msgid "Rename these files from *.dll to *.dll.bak" msgstr "" -#: Client/core/CSettings.cpp:873 -msgid "Render vehicles always in high detail" +#: Client/loader/Dialogs.cpp:170 +msgid "Show me these files" msgstr "" -#: Client/core/CSettings.cpp:877 -msgid "Render peds always in high detail" +#: Client/loader/Dialogs.cpp:171 +msgid "Play MTA:SA" msgstr "" -#: Client/core/CSettings.cpp:881 -msgid "Corona rain reflections" +#: Client/loader/Dialogs.cpp:177 +msgid "MTA: San Andreas - Confusing options" msgstr "" -#: Client/core/CSettings.cpp:910 -msgid "Enable remote websites" +#: Client/loader/Dialogs.cpp:178 +msgid "NVidia Optimus detected!" msgstr "" -#: Client/core/CSettings.cpp:915 -msgid "Enable Javascript on remote websites" +#: Client/loader/Dialogs.cpp:179 +msgid "Try each option and see what works:" msgstr "" -#: Client/core/CSettings.cpp:920 -msgid "Custom blacklist" +#: Client/loader/Dialogs.cpp:180 +msgid "A - Standard NVidia" msgstr "" -#: Client/core/CSettings.cpp:931 Client/core/CSettings.cpp:966 -msgid "Enter a domain e.g. google.com" +#: Client/loader/Dialogs.cpp:181 +msgid "B - Alternate NVidia" msgstr "" -#: Client/core/CSettings.cpp:939 -msgid "Block" +#: Client/loader/Dialogs.cpp:182 +msgid "C - Standard Intel" msgstr "" -#: Client/core/CSettings.cpp:947 Client/core/CSettings.cpp:982 -msgid "Domain" +#: Client/loader/Dialogs.cpp:183 +msgid "D - Alternate Intel" msgstr "" -#: Client/core/CSettings.cpp:949 Client/core/CSettings.cpp:984 -msgid "Remove domain" +#: Client/loader/Dialogs.cpp:184 +msgid "If you get desperate, this might help:" msgstr "" -#. Reset vecTemp -#: Client/core/CSettings.cpp:955 -msgid "Custom whitelist" +#: Client/loader/Dialogs.cpp:185 +msgid "If you have already selected an option that works, this might help:" msgstr "" -#. Misc section label -#: Client/core/CSettings.cpp:997 -msgid "Misc" +#: Client/loader/Dialogs.cpp:186 +msgid "Force windowed mode" msgstr "" -#. Fast clothes loading -#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1010 -#: Client/core/CSettings.cpp:4803 -msgid "Fast CJ clothes loading:" +#: Client/loader/Dialogs.cpp:187 +msgid "Don't show again" msgstr "" -#. Browser scan speed -#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1024 -#: Client/core/CSettings.cpp:4805 -msgid "Browser speed:" +#: Client/loader/Dialogs.cpp:195 +msgid "Warning: Could not detect anti-virus product" msgstr "" -#. Single download -#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1038 -#: Client/core/CSettings.cpp:4807 -msgid "Single connection:" +#: Client/loader/Dialogs.cpp:197 +msgid "" +"MTA could not detect an anti-virus on your PC.\n" +"\n" +"Viruses interfere with MTA and degrade your gameplay experience.\n" +"\n" +"Press 'Help' for more information." msgstr "" -#. Packet tag -#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1051 -#: Client/core/CSettings.cpp:4809 -msgid "Packet tag:" +#: Client/loader/Dialogs.cpp:200 +msgid "I have already installed an anti-virus" msgstr "" -#. Progress animation -#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1064 -#: Client/core/CSettings.cpp:4811 -msgid "Progress animation:" +#: Client/loader/Dialogs.cpp:202 +msgid "" +"I will not install an anti-virus.\n" +"I want my PC to lag and be part of a botnet." msgstr "" -#. Process priority -#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1077 -#: Client/core/CSettings.cpp:4801 -msgid "Process priority:" +#: Client/loader/MainFunctions.cpp:248 +msgid "" +"Trouble restarting MTA:SA\n" +"\n" +"If the problem persists, open Task Manager and\n" +"stop the 'gta_sa.exe' and 'Multi Theft Auto.exe' processes\n" +"\n" +"\n" +"Try to launch MTA:SA again?" msgstr "" -#. Debug setting -#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1091 -#: Client/core/CSettings.cpp:4813 -msgid "Debug setting:" +#: Client/loader/MainFunctions.cpp:266 +msgid "" +"Another instance of MTA is already running.\n" +"\n" +"If this problem persists, please restart your computer" msgstr "" -#. Streaming memory -#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1114 -#: Client/core/CSettings.cpp:4815 -msgid "Streaming memory:" +#: Client/loader/MainFunctions.cpp:269 +msgid "" +"Another instance of MTA is already running.\n" +"\n" +"Do you want to terminate it?" msgstr "" -#. Update build type -#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1215 -msgid "Update build type:" +#: Client/loader/MainFunctions.cpp:294 +msgid "" +"Are you having problems running MTA:SA?.\n" +"\n" +"Do you want to revert to an earlier version?" msgstr "" -#. UpdateAutoInstall -#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1194 -msgid "Install important updates:" +#: Client/loader/MainFunctions.cpp:324 +msgid "" +"There seems to be a problem launching MTA:SA.\n" +"Resetting GTA settings can sometimes fix this problem.\n" +"\n" +"Do you want to reset GTA settings now?" msgstr "" -#: Client/core/CSettings.cpp:1018 Client/core/CSettings.cpp:1046 -#: Client/core/CSettings.cpp:1059 Client/core/CSettings.cpp:3156 -#: Client/core/CSettings.cpp:3172 Client/core/CSettings.cpp:3179 -msgid "On" +#: Client/loader/MainFunctions.cpp:339 +msgid "" +"GTA settings have been reset.\n" +"\n" +"Press OK to continue." msgstr "" -#: Client/core/CSettings.cpp:1031 Client/core/CSettings.cpp:3161 -msgid "Very slow" +#: Client/loader/MainFunctions.cpp:344 +#, c-format +msgid "File could not be deleted: '%s'" msgstr "" -#: Client/core/CSettings.cpp:1032 Client/core/CSettings.cpp:1045 -#: Client/core/CSettings.cpp:1058 Client/core/CSettings.cpp:1072 -#: Client/core/CSettings.cpp:1098 Client/core/CSettings.cpp:1110 -#: Client/core/CSettings.cpp:1202 Client/core/CSettings.cpp:1222 -#: Client/core/CSettings.cpp:3163 Client/core/CSettings.cpp:3170 -#: Client/core/CSettings.cpp:3177 Client/core/CSettings.cpp:3186 -#: Client/core/CSettings.cpp:3199 -msgid "Default" +#. No settings to delete, or can't find them +#: Client/loader/MainFunctions.cpp:352 +msgid "" +"Are you having problems running MTA:SA?.\n" +"\n" +"Do you want to see some online help?" +msgstr "" + +#. Inform user +#: Client/loader/MainFunctions.cpp:388 +msgid "" +"Are you having problems running MTA:SA?.\n" +"\n" +"Do you want to change the following setting?" +msgstr "" + +#: Client/loader/MainFunctions.cpp:389 Client/core/CSettings.cpp:662 +#: Client/core/CSettings.cpp:1004 +msgid "Fullscreen mode:" +msgstr "" + +#: Client/loader/MainFunctions.cpp:389 Client/core/CSettings.cpp:670 +#: Client/core/CSettings.cpp:1615 +msgid "Borderless window" +msgstr "" + +#: Client/loader/MainFunctions.cpp:431 +msgid "" +"Are you having problems running MTA:SA?.\n" +"\n" +"Try disabling the following products for GTA and MTA:" +msgstr "" + +#: Client/loader/MainFunctions.cpp:465 +msgid "" +"WARNING\n" +"\n" +"MTA:SA has detected unusual activity.\n" +"Please run a virus scan to ensure your system is secure.\n" +"\n" +msgstr "" + +#: Client/loader/MainFunctions.cpp:468 +#, c-format +msgid "The detected file was: %s\n" +msgstr "" + +#: Client/loader/MainFunctions.cpp:602 +msgid "" +"An instance of GTA: San Andreas is already running. It needs to be " +"terminated before MTA:SA can be started. Do you want to do that now?" +msgstr "" + +#: Client/loader/MainFunctions.cpp:603 Client/loader/MainFunctions.cpp:610 +#: Client/loader/MainFunctions.cpp:1219 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1387 +#: Client/core/ServerBrowser/CServerInfo.cpp:319 +msgid "Information" +msgstr "" + +#: Client/loader/MainFunctions.cpp:609 +msgid "" +"Unable to terminate GTA: San Andreas. If the problem persists, please " +"restart your computer." +msgstr "" + +#: Client/loader/MainFunctions.cpp:632 +msgid "" +"Registry entries are missing. Please reinstall Multi Theft Auto: San Andreas." +msgstr "" + +#: Client/loader/MainFunctions.cpp:638 +msgid "" +"The path to your installation of GTA: San Andreas contains unsupported " +"(unicode) characters. Please move your Grand Theft Auto: San Andreas " +"installation to a compatible path that contains only standard ASCII " +"characters and reinstall Multi Theft Auto: San Andreas." +msgstr "" + +#: Client/loader/MainFunctions.cpp:648 +msgid "" +"The path to your installation of 'MTA:SA' or 'GTA: San Andreas'\n" +"contains a ';' (semicolon).\n" +"\n" +" If you experience problems when running MTA:SA,\n" +" move your installation(s) to a path that does not contain a semicolon." +msgstr "" + +#: Client/loader/MainFunctions.cpp:810 +msgid "" +"Load failed. Please ensure that the latest data files have been installed " +"correctly." +msgstr "" + +#: Client/loader/MainFunctions.cpp:819 +#, c-format +msgid "Load failed. Please ensure that %s is installed correctly." +msgstr "" + +#: Client/loader/MainFunctions.cpp:826 +#, c-format +msgid "Load failed. Could not find gta_sa.exe in %s." +msgstr "" + +#: Client/loader/MainFunctions.cpp:836 +#, c-format +msgid "" +"Load failed. %s exists in the GTA directory. Please delete before continuing." +msgstr "" + +#: Client/loader/MainFunctions.cpp:845 +#, c-format +msgid "Main file has an incorrect name (%s)" +msgstr "" + +#: Client/loader/MainFunctions.cpp:856 +msgid "" +"Main file is unsigned. Possible virus activity.\n" +"\n" +"See online help if MTA does not work correctly." +msgstr "" + +#: Client/loader/MainFunctions.cpp:882 +#, c-format +msgid "" +"Data file %s is missing. Possible virus activity.\n" +"\n" +"Consider reinstalling Multi Theft Auto for your security.\n" +"See online help if MTA does not work correctly." +msgstr "" + +#: Client/loader/MainFunctions.cpp:893 +#, c-format +msgid "" +"Data file %s is modified. Possible virus activity.\n" +"\n" +"Consider reinstalling Multi Theft Auto for your security.\n" +"See online help if MTA does not work correctly." +msgstr "" + +#: Client/loader/MainFunctions.cpp:907 +msgid "" +".asi files are in the 'MTA:SA' or 'GTA: San Andreas' installation " +"directory.\n" +"\n" +"Remove these .asi files if you experience problems with MTA:SA." +msgstr "" + +#: Client/loader/MainFunctions.cpp:1009 +msgid "" +"File version mismatch error. Reinstall MTA:SA if you experience problems.\n" +msgstr "" + +#: Client/loader/MainFunctions.cpp:1018 +msgid "Some files are missing. Reinstall MTA:SA if you experience problems.\n" +msgstr "" + +#: Client/loader/MainFunctions.cpp:1030 +msgid "" +"MTA:SA is not compatible with Windows 'Safe Mode'.\n" +"\n" +"Please restart your PC.\n" +msgstr "" + +#: Client/loader/MainFunctions.cpp:1123 +msgid "Fix configuration issue" +msgstr "" + +#. Try to relaunch as admin if not done so already +#: Client/loader/MainFunctions.cpp:1157 +msgid "Fix elevation required error" +msgstr "" + +#: Client/loader/MainFunctions.cpp:1164 +#, c-format +msgid "" +"Could not start Grand Theft Auto: San Andreas. Please try restarting, or if " +"the problem persists,contact MTA at www.multitheftauto.com. \n" +"\n" +"[%s]" +msgstr "" + +#: Client/loader/MainFunctions.cpp:1219 +msgid "" +"GTA: San Andreas may not have launched correctly. Do you want to terminate " +"it?" +msgstr "" + +#: Client/loader/CInstallManager.cpp:376 +#, c-format +msgid "" +"MTA:SA could not complete the following task:\n" +"\n" +" '%s'\n" +msgstr "" + +#: Client/loader/CInstallManager.cpp:426 +msgid "" +"** The crash was caused by a graphics driver error **\n" +"\n" +"** Please update your graphics drivers **" +msgstr "" + +#: Client/loader/CInstallManager.cpp:532 +msgid "Install updated MTA:SA files" +msgstr "" + +#: Client/loader/CInstallManager.cpp:552 +msgid "" +"Could not update due to file conflicts. Please close other applications and " +"retry" +msgstr "" + +#: Client/loader/CInstallManager.cpp:561 +#, c-format +msgid "Multi Theft Auto has not been installed properly, please reinstall. %s" +msgstr "" + +#: Client/loader/CInstallManager.cpp:613 +msgid "Create GTA:SA junctions" +msgstr "" + +#: Client/loader/CInstallManager.cpp:657 +msgid "MTA:SA cannot launch because copying a file failed:" +msgstr "" + +#: Client/loader/CInstallManager.cpp:663 Client/loader/CInstallManager.cpp:703 +msgid "MTA:SA cannot launch because an MTA:SA file is incorrect or missing:" +msgstr "" + +#: Client/loader/CInstallManager.cpp:672 +msgid "Copy MTA:SA files" +msgstr "" + +#: Client/loader/CInstallManager.cpp:695 Client/loader/CInstallManager.cpp:773 +msgid "MTA:SA cannot launch because a GTA:SA file is incorrect or missing:" +msgstr "" + +#: Client/loader/CInstallManager.cpp:780 +msgid "Patch GTA:SA dependency" +msgstr "" + +#: Client/loader/CInstallManager.cpp:828 +msgid "" +"MTA:SA cannot launch because the GTA:SA executable is incorrect or missing:" +msgstr "" + +#: Client/loader/CInstallManager.cpp:832 +msgid "" +"Please check your anti-virus for a false-positive detection, try to add an " +"exception for the GTA:SA executable and restart MTA:SA." +msgstr "" + +#: Client/loader/CInstallManager.cpp:838 +msgid "Generate GTA:SA" +msgstr "" + +#: Client/loader/CInstallManager.cpp:853 +msgid "MTA:SA cannot launch because the GTA:SA executable is not loadable:" +msgstr "" + +#: Client/loader/CInstallManager.cpp:860 Client/loader/CInstallManager.cpp:883 +msgid "Patch GTA:SA" +msgstr "" + +#: Client/loader/CInstallManager.cpp:876 +msgid "MTA:SA cannot launch because patching GTA:SA has failed:" +msgstr "" + +#: Client/loader/CInstallManager.cpp:1057 Client/core/CCore.cpp:811 +#, c-format +msgid "MTA:SA cannot continue because drive %s does not have enough space." +msgstr "" + +#: Client/loader/CInstallManager.cpp:1113 +msgid "Missing file:" +msgstr "" + +#: Client/loader/CInstallManager.cpp:1117 +msgid "If MTA fails to load, please re-install GTA:SA" +msgstr "" + +#: Client/loader/CInstallManager.cpp:1152 +msgid "Update install settings" +msgstr "" + +#: Client/loader/CInstallManager.cpp:1305 +msgid "Update compatibility settings" msgstr "" -#: Client/core/CSettings.cpp:1033 Client/core/CSettings.cpp:3165 -msgid "Fast" +#: Client/core/CVersionUpdater.cpp:626 +msgid "Busy" msgstr "" -#: Client/core/CSettings.cpp:1084 Client/core/CSettings.cpp:3141 -msgid "Normal" +#: Client/core/CVersionUpdater.cpp:626 +msgid "Can't check for updates right now" msgstr "" -#: Client/core/CSettings.cpp:1085 Client/core/CSettings.cpp:3143 -msgid "Above normal" +#: Client/core/CVersionUpdater.cpp:1567 Client/core/CVersionUpdater.cpp:1587 +#: Client/core/CVersionUpdater.cpp:1605 +#, c-format +msgid "MTA:SA %s required" msgstr "" -#: Client/core/CSettings.cpp:1121 -msgid "Min" +#: Client/core/CVersionUpdater.cpp:1568 +#, c-format +msgid "" +"An updated version of MTA:SA %s is required to join the selected server.\n" +"\n" +"Do you want to download and install MTA:SA %s ?" msgstr "" -#: Client/core/CSettings.cpp:1134 -msgid "Max" +#: Client/core/CVersionUpdater.cpp:1588 +#, c-format +msgid "Do you want to launch MTA:SA %s and connect to this server ?" msgstr "" -#. Windows 8 compatibility -#: Client/core/CSettings.cpp:1141 -msgid "Windows 8 compatibility:" +#: Client/core/CVersionUpdater.cpp:1606 +msgid "" +"It is not possible to connect at this time.\n" +"\n" +"Please try later." msgstr "" -#: Client/core/CSettings.cpp:1145 -msgid "16-bit color" +#: Client/core/CVersionUpdater.cpp:1788 +msgid "Connecting" msgstr "" -#: Client/core/CSettings.cpp:1150 -msgid "Mouse fix" +#: Client/core/CVersionUpdater.cpp:1789 Client/core/CVersionUpdater.cpp:1805 +msgid "Please wait..." msgstr "" -#. Cache path info -#: Client/core/CSettings.cpp:1168 -msgid "Client resource files:" +#: Client/core/CVersionUpdater.cpp:1804 +msgid "CHECKING" msgstr "" -#: Client/core/CSettings.cpp:1172 -msgid "Show in Explorer" +#: Client/core/CVersionUpdater.cpp:1821 Client/core/CVersionUpdater.cpp:1914 +msgid "UPDATE CHECK" msgstr "" -#. Auto updater section label -#: Client/core/CSettings.cpp:1187 Client/core/CSettings.cpp:1190 -msgid "Auto updater" +#: Client/core/CVersionUpdater.cpp:1822 +msgid "No update needed" msgstr "" -#. Check for updates -#: Client/core/CSettings.cpp:1228 -msgid "Check for update now" +#: Client/core/CVersionUpdater.cpp:1839 +msgid "DOWNLOADING" msgstr "" -#: Client/core/CSettings.cpp:1382 -msgid "Some settings will be changed when you next start MTA" +#: Client/core/CVersionUpdater.cpp:1840 +msgid "waiting..." msgstr "" -#: Client/core/CSettings.cpp:1383 +#: Client/core/CVersionUpdater.cpp:1856 +msgid "MANDATORY UPDATE" +msgstr "" + +#: Client/core/CVersionUpdater.cpp:1857 msgid "" +"To join this server, you must update MTA.\n" "\n" -"\n" -"Do you want to restart now?" +" Do you want to update now ?" msgstr "" -#: Client/core/CSettings.cpp:1386 -msgid "RESTART REQUIRED" +#: Client/core/CVersionUpdater.cpp:1875 +msgid "OPTIONAL UPDATE" msgstr "" -#: Client/core/CSettings.cpp:1388 Client/core/CSettings.cpp:1412 -#: Client/core/CSettings.cpp:4488 Client/core/CSettings.cpp:4562 -#: Client/core/CSettings.cpp:4592 Client/core/CSettings.cpp:4641 -#: Client/core/CQuestionBox.cpp:194 Client/core/CMainMenu.cpp:1199 -#: Client/core/CVersionUpdater.cpp:1571 Client/core/CVersionUpdater.cpp:1589 -#: Client/core/CVersionUpdater.cpp:1858 Client/core/CVersionUpdater.cpp:1877 -#: Client/core/ServerBrowser/CServerInfo.cpp:479 Client/loader/Dialogs.cpp:132 -msgid "No" +#: Client/core/CVersionUpdater.cpp:1876 +msgid "" +"Server says an update is recommended, but not essential.\n" +"\n" +" Do you want to update now ?" msgstr "" -#. ///////////////////////////////////////////////////////////////////////// -#. -#. Dialog strings -#. -#. -#. ///////////////////////////////////////////////////////////////////////// -#: Client/core/CSettings.cpp:1389 Client/core/CSettings.cpp:1413 -#: Client/core/CSettings.cpp:4489 Client/core/CSettings.cpp:4563 -#: Client/core/CSettings.cpp:4593 Client/core/CSettings.cpp:4642 -#: Client/core/CQuestionBox.cpp:195 Client/core/CMainMenu.cpp:1200 -#: Client/core/CVersionUpdater.cpp:1572 Client/core/CVersionUpdater.cpp:1590 -#: Client/core/CVersionUpdater.cpp:1859 Client/core/CVersionUpdater.cpp:1878 -#: Client/core/ServerBrowser/CServerInfo.cpp:479 Client/loader/Dialogs.cpp:131 -#: Client/gui/CGUIMessageBox_Impl.cpp:72 -msgid "Yes" +#: Client/core/CVersionUpdater.cpp:1915 +msgid "" +"An update is currently not available.\n" +"\n" +"Please check www.mtasa.com" msgstr "" -#: Client/core/CSettings.cpp:1406 -msgid "Some settings will be changed when you disconnect the current server" +#: Client/core/CVersionUpdater.cpp:1936 Client/core/CVersionUpdater.cpp:2118 +msgid "ERROR SAVING" msgstr "" -#: Client/core/CSettings.cpp:1407 -msgid "" -"\n" -"\n" -"Do you want to disconnect now?" +#: Client/core/CVersionUpdater.cpp:1937 Client/core/CVersionUpdater.cpp:2119 +msgid "Unable to create the file." msgstr "" -#: Client/core/CSettings.cpp:1410 -msgid "DISCONNECT REQUIRED" +#: Client/core/CVersionUpdater.cpp:1945 Client/core/CVersionUpdater.cpp:1954 +#: Client/core/CVersionUpdater.cpp:2127 Client/core/CVersionUpdater.cpp:2136 +msgid "ERROR DOWNLOADING" msgstr "" -#. Update the joystick name -#: Client/core/CSettings.cpp:1737 -msgid "Joypad not detected - Check connections and restart game" +#: Client/core/CVersionUpdater.cpp:1946 Client/core/CVersionUpdater.cpp:2128 +msgid "The downloaded file appears to be incorrect." msgstr "" -#: Client/core/CSettings.cpp:1932 -msgid "Binding axis" +#: Client/core/CVersionUpdater.cpp:1955 Client/core/CVersionUpdater.cpp:2137 +msgid "For some reason." msgstr "" -#: Client/core/CSettings.cpp:1932 -msgid "Move an axis to bind, or escape to clear" +#: Client/core/CVersionUpdater.cpp:1966 Client/core/CVersionUpdater.cpp:2150 +msgid "DOWNLOAD COMPLETE" msgstr "" -#: Client/core/CSettings.cpp:2009 -msgid "Language:" +#: Client/core/CVersionUpdater.cpp:1990 +msgid " - Unknown problem in _DialogUpdateResult" msgstr "" -#: Client/core/CSettings.cpp:2009 -msgid "Skin:" +#: Client/core/CVersionUpdater.cpp:2081 Client/core/CSettings.cpp:4590 +msgid "CUSTOMIZED GTA:SA FILES" msgstr "" -#: Client/core/CSettings.cpp:2009 -msgid "Presets:" +#: Client/core/CVersionUpdater.cpp:2088 Client/core/CVersionUpdater.cpp:2098 +msgid "Ok" msgstr "" -#: Client/core/CSettings.cpp:2058 -msgid "Chat" +#: Client/core/CVersionUpdater.cpp:2096 +msgid "ERROR" msgstr "" -#: Client/core/CSettings.cpp:2075 -msgid "Load" +#: Client/core/CVersionUpdater.cpp:2097 +msgid "" +"Some MTA:SA data files are missing.\n" +"\n" +"\n" +"Please reinstall MTA:SA" msgstr "" -#: Client/core/CSettings.cpp:2087 -msgid "Colors" +#: Client/core/CVersionUpdater.cpp:2774 +#, c-format +msgid "%3d %% completed" msgstr "" -#: Client/core/CSettings.cpp:2088 -msgid "Layout" +#: Client/core/CVersionUpdater.cpp:2777 +#, c-format +msgid "" +"\n" +"\n" +"Waiting for response - %-3d" msgstr "" -#: Client/core/CSettings.cpp:2089 Client/core/CSettings.cpp:2335 -msgid "Options" +#: Client/core/CKeyBinds.cpp:186 +msgid "Fire" msgstr "" -#: Client/core/CSettings.cpp:2095 -msgid "Chat Background" +#: Client/core/CKeyBinds.cpp:187 +msgid "Next weapon" msgstr "" -#: Client/core/CSettings.cpp:2095 -msgid "Chat Text" +#: Client/core/CKeyBinds.cpp:188 +msgid "Previous weapon" msgstr "" -#: Client/core/CSettings.cpp:2095 -msgid "Input Background" +#: Client/core/CKeyBinds.cpp:189 +msgid "Forwards" msgstr "" -#: Client/core/CSettings.cpp:2095 -msgid "Input Text" +#: Client/core/CKeyBinds.cpp:190 +msgid "Backwards" msgstr "" -#: Client/core/CSettings.cpp:2118 -msgid "Lines:" +#: Client/core/CKeyBinds.cpp:191 Client/core/CSettings.cpp:2240 +#: Client/core/CSettings.cpp:2268 +msgid "Left" msgstr "" -#: Client/core/CSettings.cpp:2118 -msgid "Scale:" +#: Client/core/CKeyBinds.cpp:192 Client/core/CSettings.cpp:2242 +#: Client/core/CSettings.cpp:2269 +msgid "Right" msgstr "" -#: Client/core/CSettings.cpp:2118 -msgid "Width:" +#: Client/core/CKeyBinds.cpp:193 +msgid "Zoom in" msgstr "" -#: Client/core/CSettings.cpp:2121 -msgid "Size" +#: Client/core/CKeyBinds.cpp:194 +msgid "Zoom out" msgstr "" -#: Client/core/CSettings.cpp:2170 -msgid "after" +#: Client/core/CKeyBinds.cpp:195 +msgid "Enter/Exit" msgstr "" -#: Client/core/CSettings.cpp:2170 -msgid "for" +#: Client/core/CKeyBinds.cpp:196 +msgid "Change camera" msgstr "" -#: Client/core/CSettings.cpp:2170 -msgid "sec" +#. 10 +#: Client/core/CKeyBinds.cpp:197 +msgid "Jump" msgstr "" -#: Client/core/CSettings.cpp:2173 -msgid "Fading" +#: Client/core/CKeyBinds.cpp:198 +msgid "Sprint" msgstr "" -#: Client/core/CSettings.cpp:2179 -msgid "Fade out old lines" +#: Client/core/CKeyBinds.cpp:199 +msgid "Look behind" msgstr "" -#: Client/core/CSettings.cpp:2219 -msgid "Horizontal:" +#: Client/core/CKeyBinds.cpp:200 +msgid "Crouch" msgstr "" -#: Client/core/CSettings.cpp:2219 -msgid "Vertical:" +#: Client/core/CKeyBinds.cpp:201 +msgid "Action" msgstr "" -#: Client/core/CSettings.cpp:2219 -msgid "Text-Align:" +#: Client/core/CKeyBinds.cpp:202 +msgid "Walk" msgstr "" -#: Client/core/CSettings.cpp:2219 -msgid "X-Offset:" +#: Client/core/CKeyBinds.cpp:203 +msgid "Vehicle fire" msgstr "" -#: Client/core/CSettings.cpp:2220 -msgid "Y-Offset:" +#: Client/core/CKeyBinds.cpp:204 +msgid "Vehicle secondary fire" msgstr "" -#: Client/core/CSettings.cpp:2226 -msgid "Position" +#: Client/core/CKeyBinds.cpp:205 +msgid "Vehicle left" msgstr "" -#: Client/core/CSettings.cpp:2240 Client/core/CSettings.cpp:2268 -#: Client/core/CKeyBinds.cpp:191 -msgid "Left" +#: Client/core/CKeyBinds.cpp:206 +msgid "Vehicle right" +msgstr "" + +#. 20 +#: Client/core/CKeyBinds.cpp:207 +msgid "Steer forwards/down" msgstr "" -#: Client/core/CSettings.cpp:2241 Client/core/CSettings.cpp:2255 -msgid "Center" +#: Client/core/CKeyBinds.cpp:208 +msgid "Steer backwards/up" msgstr "" -#: Client/core/CSettings.cpp:2242 Client/core/CSettings.cpp:2269 -#: Client/core/CKeyBinds.cpp:192 -msgid "Right" +#: Client/core/CKeyBinds.cpp:209 +msgid "Accelerate" msgstr "" -#: Client/core/CSettings.cpp:2254 -msgid "Top" +#: Client/core/CKeyBinds.cpp:210 +msgid "Brake/Reverse" msgstr "" -#: Client/core/CSettings.cpp:2256 -msgid "Bottom" +#: Client/core/CKeyBinds.cpp:211 +msgid "Radio next" msgstr "" -#: Client/core/CSettings.cpp:2304 -msgid "Font" +#: Client/core/CKeyBinds.cpp:212 +msgid "Radio previous" msgstr "" -#: Client/core/CSettings.cpp:2341 -msgid "Hide background when not typing" +#: Client/core/CKeyBinds.cpp:213 +msgid "Radio user track skip" msgstr "" -#: Client/core/CSettings.cpp:2346 -msgid "Nickname completion using the \"Tab\" key" +#: Client/core/CKeyBinds.cpp:214 +msgid "Horn" msgstr "" -#: Client/core/CSettings.cpp:2351 -msgid "Allow server to flash the window" +#: Client/core/CKeyBinds.cpp:215 +msgid "Sub-mission" msgstr "" -#: Client/core/CSettings.cpp:2356 -msgid "Allow tray balloon notifications" +#: Client/core/CKeyBinds.cpp:216 +msgid "Handbrake" msgstr "" -#: Client/core/CSettings.cpp:2361 -msgid "Chat text black/white outline" +#. 30 +#: Client/core/CKeyBinds.cpp:217 +msgid "Vehicle look left" msgstr "" -#. Create a messagebox to notify the user -#. SString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); -#. Create a messagebox to notify the user -#. sSString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); -#: Client/core/CSettings.cpp:2610 Client/core/CSettings.cpp:2617 -msgid "Press a key to bind, or escape to clear" +#: Client/core/CKeyBinds.cpp:218 +msgid "Vehicle look right" msgstr "" -#: Client/core/CSettings.cpp:2611 -msgid "Binding a primary key" +#: Client/core/CKeyBinds.cpp:219 +msgid "Vehicle look behind" msgstr "" -#: Client/core/CSettings.cpp:2618 -msgid "Binding a secondary key" +#: Client/core/CKeyBinds.cpp:220 +msgid "Vehicle mouse look" msgstr "" -#: Client/core/CSettings.cpp:2694 -msgid "GTA GAME CONTROLS" +#: Client/core/CKeyBinds.cpp:221 +msgid "Special control left" msgstr "" -#: Client/core/CSettings.cpp:2696 -msgid "MULTIPLAYER CONTROLS" +#: Client/core/CKeyBinds.cpp:222 +msgid "Special control right" msgstr "" -#: Client/core/CSettings.cpp:2941 Client/core/CSettings.cpp:4764 -msgid "Your nickname contains invalid characters!" +#: Client/core/CKeyBinds.cpp:223 +msgid "Special control down" msgstr "" -#: Client/core/CSettings.cpp:3778 -msgid "Red:" +#: Client/core/CKeyBinds.cpp:224 +msgid "Special control up" msgstr "" -#: Client/core/CSettings.cpp:3778 -msgid "Green:" +#: Client/core/CKeyBinds.cpp:225 +msgid "Aim weapon" msgstr "" -#: Client/core/CSettings.cpp:3778 -msgid "Blue:" +#: Client/core/CKeyBinds.cpp:226 +msgid "Conversation yes" msgstr "" -#: Client/core/CSettings.cpp:3778 -msgid "Transparency:" +#. 40 +#: Client/core/CKeyBinds.cpp:227 +msgid "Conversation no" msgstr "" -#: Client/core/CSettings.cpp:3781 -msgid "Color" +#: Client/core/CKeyBinds.cpp:228 +msgid "Group control forwards" msgstr "" -#: Client/core/CSettings.cpp:3858 -msgid "Preview" +#: Client/core/CKeyBinds.cpp:229 +msgid "Group control backwards" msgstr "" -#: Client/core/CSettings.cpp:4166 -msgid "Please disconnect before changing language" +#: Client/core/CScreenShot.cpp:104 +#, c-format +msgid "Screenshot got %d bytes, but expected %d" msgstr "" -#: Client/core/CSettings.cpp:4194 -msgid "Please disconnect before changing skin" +#: Client/core/CScreenShot.cpp:110 +msgid "Screenshot failed" msgstr "" -#: Client/core/CSettings.cpp:4482 -msgid "" -"Volmetric shadows can cause some systems to slow down.\n" -"\n" -"Are you sure you want to enable them?" +#: Client/core/CScreenShot.cpp:160 +#, c-format +msgid "Screenshot taken: '%s'" msgstr "" -#: Client/core/CSettings.cpp:4486 -msgid "PERFORMANCE WARNING" +#: Client/core/CCommandFuncs.cpp:24 +msgid "***[ COMMAND HELP ]***\n" msgstr "" -#: Client/core/CSettings.cpp:4506 -msgid "" -"Screen upload is required by some servers for anti-cheat purposes.\n" -"\n" -"(The chat box and GUI is excluded from the upload)\n" +#: Client/core/CCommandFuncs.cpp:158 +#, c-format +msgid "* The time is %d:%02d:%02d" msgstr "" -#: Client/core/CSettings.cpp:4508 -msgid "SCREEN UPLOAD INFORMATION" +#: Client/core/CCommandFuncs.cpp:242 +msgid "connect: Syntax is 'connect [ ]'" msgstr "" -#: Client/core/CSettings.cpp:4523 -msgid "" -"Some scripts may play sounds, such as radio, from the internet.\n" -"\n" -"Disabling this setting may decrease network\n" -"bandwidth consumption.\n" +#: Client/core/CCommandFuncs.cpp:250 Client/core/CCommandFuncs.cpp:318 +msgid "connect: Bad port number" msgstr "" -#: Client/core/CSettings.cpp:4526 -msgid "EXTERNAL SOUNDS" +#: Client/core/CCommandFuncs.cpp:272 Client/core/CCommandFuncs.cpp:333 +#, c-format +msgid "connect: Connecting to %s:%u..." msgstr "" -#: Client/core/CSettings.cpp:4555 -msgid "" -"It seems that you have the Rich Presence connection option enabled.\n" -"Do you want to allow servers to share their data?\n" -"\n" -"This includes yours unique ID identifier." +#: Client/core/CCommandFuncs.cpp:276 Client/core/CCommandFuncs.cpp:337 +#, c-format +msgid "connect: could not connect to %s:%u!" msgstr "" -#: Client/core/CSettings.cpp:4560 -msgid "CONSENT TO ALLOW DATA SHARING" +#: Client/core/CCommandFuncs.cpp:281 +msgid "connect: Failed to unload current mod" msgstr "" -#: Client/core/CSettings.cpp:4584 -msgid "" -"Some files in your GTA:SA data directory are customized.\n" -"MTA will only use these modified files if this check box is ticked.\n" -"\n" -"However, CUSTOMIZED GTA:SA FILES ARE BLOCKED BY MANY SERVERS\n" -"\n" -"Are you sure you want to use them?" +#: Client/core/CCommandFuncs.cpp:371 +msgid "Bound all controls from GTA" msgstr "" -#: Client/core/CSettings.cpp:4590 Client/core/CVersionUpdater.cpp:2081 -msgid "CUSTOMIZED GTA:SA FILES" +#: Client/core/CCommandFuncs.cpp:385 +msgid "Saved configuration file" msgstr "" -#: Client/core/CSettings.cpp:4633 -msgid "" -"Enabling DPI awareness is an experimental feature and\n" -"we only recommend it when you play MTA:SA on a scaled monitor.\n" -"You may experience graphical issues if you enable this option.\n" -"\n" -"Are you sure you want to enable this option?" +#. Print it +#: Client/core/CCommandFuncs.cpp:451 +#, c-format +msgid "* Your serial is: %s" msgstr "" -#: Client/core/CSettings.cpp:4639 -msgid "EXPERIMENTAL FEATURE" +#. Create the window +#: Client/core/CNewsBrowser.cpp:153 +msgid "NEWS" msgstr "" -#: Client/core/CSettings.cpp:4782 -msgid "Please enter a nickname" +#. News link +#: Client/core/CNewsBrowser.cpp:171 Client/core/CNewsBrowser.cpp:172 +msgid "Visit latest news article" msgstr "" -#: Client/core/CSettings.cpp:4783 -msgid "" -"Please enter a nickname to be used ingame. \n" -"This will be your name when you connect to and play in a server" +#: Client/core/CQuestionBox.cpp:192 Shared/sdk/SharedUtil.Misc.hpp:688 +msgid "Do you want to see some on-line help about this problem ?" msgstr "" -#: Client/core/CSettings.cpp:4801 -msgid "Very experimental feature." +#: Client/core/CJoystickManager.cpp:1578 +msgid "Accelerate Axis" msgstr "" -#: Client/core/CSettings.cpp:4803 -msgid "Stops stalls with CJ variations (Uses 65MB more RAM)" +#: Client/core/CJoystickManager.cpp:1580 +msgid "Brake Axis" msgstr "" -#: Client/core/CSettings.cpp:4805 -msgid "Older routers may require a slower scan speed." +#. TRANSLATORS: Replace with your language native name +#: Client/core/CLocalization.cpp:16 +msgid "English" msgstr "" -#: Client/core/CSettings.cpp:4807 -msgid "Switch on to use only one connection when downloading." +#. Even the default skin doesn't work, so give up +#: Client/core/CGUI.cpp:86 +msgid "" +"The skin you selected could not be loaded, and the default skin also could " +"not be loaded, please reinstall MTA." msgstr "" -#: Client/core/CSettings.cpp:4809 -msgid "Tag network packets to help ISPs identify MTA traffic." +#. Unknown command +#: Client/core/CCommands.cpp:223 +msgid "Unknown command or cvar: " msgstr "" -#: Client/core/CSettings.cpp:4811 -msgid "Spinning circle animation at the bottom of the screen" +#: Client/core/CCredits.cpp:34 +msgid "Programming" msgstr "" -#: Client/core/CSettings.cpp:4813 -msgid "Select default always. (This setting is not saved)" +#: Client/core/CCredits.cpp:63 +msgid "Contributors" msgstr "" -#: Client/core/CSettings.cpp:4815 -msgid "Maximum is usually best" +#: Client/core/CCredits.cpp:84 +msgid "Game Design / Scripting" msgstr "" -#: Client/core/CSettings.cpp:4817 Client/core/CSettings.cpp:4819 -msgid "Auto updater:" +#: Client/core/CCredits.cpp:104 +msgid "Language Localization" msgstr "" -#: Client/core/CSettings.cpp:4817 -msgid "Select default unless you like filling out bug reports." +#: Client/core/CCredits.cpp:110 +msgid "Patch contributors" msgstr "" -#: Client/core/CSettings.cpp:4819 -msgid "Select default to automatically install important updates." +#: Client/core/CCredits.cpp:234 +msgid "Special Thanks" msgstr "" -#: Client/core/CSettings.cpp:4821 -msgid "16-bit color:" +#: Client/core/CCredits.cpp:265 +msgid "" +"This software and project makes use of the following libraries and software:" msgstr "" -#: Client/core/CSettings.cpp:4821 -msgid "Enable 16 bit color modes - Requires MTA restart" +#: Client/core/CMainMenu.cpp:333 +msgid "" +"You are using a feature-branch build! This is a test build only which cannot " +"be used to connect to public servers!" msgstr "" -#: Client/core/CSettings.cpp:4823 -msgid "Mouse fix:" +#: Client/core/CMainMenu.cpp:352 +msgid "" +"MTA will not receive updates on XP/Vista after July 2019.\n" +"\n" +"Upgrade Windows to play on the latest servers." msgstr "" -#: Client/core/CSettings.cpp:4823 -msgid "Mouse movement fix - May need PC restart" +#: Client/core/CMainMenu.cpp:1193 +msgid "" +"This will disconnect you from the current server.\n" +"\n" +"Are you sure you want to disconnect?" msgstr "" -#: Client/core/CCore.cpp:811 Client/loader/CInstallManager.cpp:1057 -#, c-format -msgid "MTA:SA cannot continue because drive %s does not have enough space." +#: Client/core/CMainMenu.cpp:1197 +msgid "DISCONNECT WARNING" msgstr "" #: Client/core/CCore.cpp:813 Shared/mods/deathmatch/logic/Utils.cpp:129 @@ -1912,1373 +1994,1292 @@ msgstr "" msgid "for developers: reload news" msgstr "" -#: Client/core/CConnectManager.cpp:79 -msgid "Connecting failed. Invalid nick provided!" +#. Create window (with frame) if it will fit inside the screen resolution +#: Client/core/CSettings.cpp:84 +msgid "SETTINGS" msgstr "" -#: Client/core/CConnectManager.cpp:110 -msgid "Connecting failed. Invalid host provided!" +#: Client/core/CSettings.cpp:116 +msgid "Multiplayer" msgstr "" -#: Client/core/CConnectManager.cpp:126 -#, c-format -msgid "Connecting to %s at port %u failed!" +#: Client/core/CSettings.cpp:117 +msgid "Video" msgstr "" -#. Display the status box -#: Client/core/CConnectManager.cpp:147 -#, c-format -msgid "Connecting to %s:%u ..." +#: Client/core/CSettings.cpp:118 +msgid "Audio" msgstr "" -#. Failed loading the mod -#: Client/core/CConnectManager.cpp:403 -#, c-format -msgid "No such mod installed (%s)" +#: Client/core/CSettings.cpp:119 +msgid "Binds" msgstr "" -#: Client/core/CConnectManager.cpp:411 -msgid "Bad server response (2)" +#: Client/core/CSettings.cpp:120 +msgid "Controls" msgstr "" -#: Client/core/CConnectManager.cpp:421 -msgid "Bad server response (1)" +#: Client/core/CSettings.cpp:121 +msgid "Interface" msgstr "" -#: Client/core/CKeyBinds.cpp:186 -msgid "Fire" +#: Client/core/CSettings.cpp:122 +msgid "Web Browser" msgstr "" -#: Client/core/CKeyBinds.cpp:187 -msgid "Next weapon" +#: Client/core/CSettings.cpp:123 +msgid "Advanced" msgstr "" -#: Client/core/CKeyBinds.cpp:188 -msgid "Previous weapon" +#: Client/core/CSettings.cpp:147 Client/core/CSettings.cpp:338 +#: Client/core/CSettings.cpp:617 Client/core/CSettings.cpp:889 +msgid "Load defaults" msgstr "" -#: Client/core/CKeyBinds.cpp:189 -msgid "Forwards" +#. * +#. * Controls tab +#. * +#: Client/core/CSettings.cpp:157 Client/core/CSettings.cpp:181 +msgid "Mouse sensitivity:" msgstr "" -#: Client/core/CKeyBinds.cpp:190 -msgid "Backwards" +#. VerticalAimSensitivity +#: Client/core/CSettings.cpp:157 Client/core/CSettings.cpp:199 +msgid "Vertical aim sensitivity:" msgstr "" -#: Client/core/CKeyBinds.cpp:193 -msgid "Zoom in" +#. Mouse Options +#: Client/core/CSettings.cpp:160 +msgid "Mouse options" msgstr "" -#: Client/core/CKeyBinds.cpp:194 -msgid "Zoom out" +#: Client/core/CSettings.cpp:167 +msgid "Invert mouse vertically" msgstr "" -#: Client/core/CKeyBinds.cpp:195 -msgid "Enter/Exit" +#: Client/core/CSettings.cpp:171 +msgid "Steer with mouse" msgstr "" -#: Client/core/CKeyBinds.cpp:196 -msgid "Change camera" +#: Client/core/CSettings.cpp:175 +msgid "Fly with mouse" msgstr "" -#. 10 -#: Client/core/CKeyBinds.cpp:197 -msgid "Jump" +#. Joypad options +#: Client/core/CSettings.cpp:217 +msgid "Joypad options" msgstr "" -#: Client/core/CKeyBinds.cpp:198 -msgid "Sprint" +#: Client/core/CSettings.cpp:230 +msgid "Standard controls (Mouse + Keyboard)" msgstr "" -#: Client/core/CKeyBinds.cpp:199 -msgid "Look behind" +#: Client/core/CSettings.cpp:237 +msgid "Classic controls (Joypad)" msgstr "" -#: Client/core/CKeyBinds.cpp:200 -msgid "Crouch" +#: Client/core/CSettings.cpp:274 +msgid "Dead Zone" msgstr "" -#: Client/core/CKeyBinds.cpp:201 -msgid "Action" +#: Client/core/CSettings.cpp:279 +msgid "Saturation" msgstr "" -#: Client/core/CKeyBinds.cpp:202 -msgid "Walk" +#: Client/core/CSettings.cpp:285 +msgid "Use the 'Binds' tab for joypad buttons." msgstr "" -#: Client/core/CKeyBinds.cpp:203 -msgid "Vehicle fire" +#: Client/core/CSettings.cpp:324 +msgid "Left Stick" msgstr "" -#: Client/core/CKeyBinds.cpp:204 -msgid "Vehicle secondary fire" +#: Client/core/CSettings.cpp:330 +msgid "Right Stick" msgstr "" -#: Client/core/CKeyBinds.cpp:205 -msgid "Vehicle left" +#: Client/core/CSettings.cpp:345 +msgid "DESCRIPTION" msgstr "" -#: Client/core/CKeyBinds.cpp:206 -msgid "Vehicle right" +#: Client/core/CSettings.cpp:346 +msgid "KEY" msgstr "" -#. 20 -#: Client/core/CKeyBinds.cpp:207 -msgid "Steer forwards/down" +#: Client/core/CSettings.cpp:348 +msgid "ALT. KEY" msgstr "" -#: Client/core/CKeyBinds.cpp:208 -msgid "Steer backwards/up" +#. * +#. * Multiplayer tab +#. * +#: Client/core/CSettings.cpp:353 Client/core/CSettings.cpp:356 +msgid "Nick:" msgstr "" -#: Client/core/CKeyBinds.cpp:209 -msgid "Accelerate" +#: Client/core/CSettings.cpp:378 +msgid "Save server passwords" msgstr "" -#: Client/core/CKeyBinds.cpp:210 -msgid "Brake/Reverse" +#: Client/core/CSettings.cpp:383 +msgid "Auto-refresh server browser" msgstr "" -#: Client/core/CKeyBinds.cpp:211 -msgid "Radio next" +#: Client/core/CSettings.cpp:388 +msgid "Allow screen upload" msgstr "" -#: Client/core/CKeyBinds.cpp:212 -msgid "Radio previous" +#: Client/core/CSettings.cpp:393 +msgid "Allow external sounds" msgstr "" -#: Client/core/CKeyBinds.cpp:213 -msgid "Radio user track skip" +#: Client/core/CSettings.cpp:398 +msgid "Always show download window" msgstr "" -#: Client/core/CKeyBinds.cpp:214 -msgid "Horn" +#: Client/core/CSettings.cpp:403 +msgid "Allow connecting with Discord Rich Presence" msgstr "" -#: Client/core/CKeyBinds.cpp:215 -msgid "Sub-mission" +#: Client/core/CSettings.cpp:408 +msgid "Use customized GTA:SA files" msgstr "" -#: Client/core/CKeyBinds.cpp:216 -msgid "Handbrake" +#: Client/core/CSettings.cpp:413 +msgid "Map rendering options" msgstr "" -#. 30 -#: Client/core/CKeyBinds.cpp:217 -msgid "Vehicle look left" +#: Client/core/CSettings.cpp:419 Client/core/CSettings.cpp:628 +msgid "Opacity:" msgstr "" -#: Client/core/CKeyBinds.cpp:218 -msgid "Vehicle look right" +#. * +#. * Audio tab +#. * +#: Client/core/CSettings.cpp:439 Client/core/CSettings.cpp:448 +msgid "Master volume:" msgstr "" -#: Client/core/CKeyBinds.cpp:219 -msgid "Vehicle look behind" +#: Client/core/CSettings.cpp:439 Client/core/CSettings.cpp:467 +msgid "Radio volume:" msgstr "" -#: Client/core/CKeyBinds.cpp:220 -msgid "Vehicle mouse look" +#: Client/core/CSettings.cpp:439 Client/core/CSettings.cpp:486 +msgid "SFX volume:" msgstr "" -#: Client/core/CKeyBinds.cpp:221 -msgid "Special control left" +#: Client/core/CSettings.cpp:439 Client/core/CSettings.cpp:505 +msgid "MTA volume:" msgstr "" -#: Client/core/CKeyBinds.cpp:222 -msgid "Special control right" +#: Client/core/CSettings.cpp:440 Client/core/CSettings.cpp:524 +msgid "Voice volume:" msgstr "" -#: Client/core/CKeyBinds.cpp:223 -msgid "Special control down" +#: Client/core/CSettings.cpp:440 Client/core/CSettings.cpp:565 +msgid "Play mode:" msgstr "" -#: Client/core/CKeyBinds.cpp:224 -msgid "Special control up" +#: Client/core/CSettings.cpp:543 +msgid "Radio options" msgstr "" -#: Client/core/CKeyBinds.cpp:225 -msgid "Aim weapon" +#: Client/core/CSettings.cpp:549 +msgid "Radio Equalizer" msgstr "" -#: Client/core/CKeyBinds.cpp:226 -msgid "Conversation yes" +#: Client/core/CSettings.cpp:554 +msgid "Radio Auto-tune" msgstr "" -#. 40 -#: Client/core/CKeyBinds.cpp:227 -msgid "Conversation no" +#: Client/core/CSettings.cpp:559 +msgid "Usertrack options" msgstr "" -#: Client/core/CKeyBinds.cpp:228 -msgid "Group control forwards" +#: Client/core/CSettings.cpp:573 Client/core/CSettings.cpp:3087 +msgid "Radio" msgstr "" -#: Client/core/CKeyBinds.cpp:229 -msgid "Group control backwards" +#: Client/core/CSettings.cpp:574 Client/core/CSettings.cpp:3089 +msgid "Random" msgstr "" -#. Even the default skin doesn't work, so give up -#: Client/core/CGUI.cpp:86 -msgid "" -"The skin you selected could not be loaded, and the default skin also could " -"not be loaded, please reinstall MTA." +#: Client/core/CSettings.cpp:575 Client/core/CSettings.cpp:3091 +msgid "Sequential" +msgstr "" + +#: Client/core/CSettings.cpp:578 +msgid "Automatic Media Scan" +msgstr "" + +#: Client/core/CSettings.cpp:585 +msgid "Mute options" +msgstr "" + +#: Client/core/CSettings.cpp:591 +msgid "Mute All sounds when minimized" +msgstr "" + +#: Client/core/CSettings.cpp:596 +msgid "Mute Radio sounds when minimized" msgstr "" -#. Create the window -#: Client/core/CNewsBrowser.cpp:153 -msgid "NEWS" +#: Client/core/CSettings.cpp:601 +msgid "Mute SFX sounds when minimized" msgstr "" -#. News link -#: Client/core/CNewsBrowser.cpp:171 Client/core/CNewsBrowser.cpp:172 -msgid "Visit latest news article" +#: Client/core/CSettings.cpp:606 +msgid "Mute MTA sounds when minimized" msgstr "" -#: Client/core/CCommandFuncs.cpp:24 -msgid "***[ COMMAND HELP ]***\n" +#: Client/core/CSettings.cpp:611 +msgid "Mute Voice sounds when minimized" msgstr "" -#: Client/core/CCommandFuncs.cpp:158 -#, c-format -msgid "* The time is %d:%02d:%02d" +#. * +#. * Video tab +#. * +#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:636 +msgid "Resolution:" msgstr "" -#: Client/core/CCommandFuncs.cpp:242 -msgid "connect: Syntax is 'connect [ ]'" +#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:683 +msgid "FOV:" msgstr "" -#: Client/core/CCommandFuncs.cpp:250 Client/core/CCommandFuncs.cpp:318 -msgid "connect: Bad port number" +#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:699 +msgid "Draw Distance:" msgstr "" -#: Client/core/CCommandFuncs.cpp:272 Client/core/CCommandFuncs.cpp:333 -#, c-format -msgid "connect: Connecting to %s:%u..." +#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:717 +msgid "Brightness:" msgstr "" -#: Client/core/CCommandFuncs.cpp:276 Client/core/CCommandFuncs.cpp:337 -#, c-format -msgid "connect: could not connect to %s:%u!" +#: Client/core/CSettings.cpp:627 Client/core/CSettings.cpp:735 +msgid "FX Quality:" msgstr "" -#: Client/core/CCommandFuncs.cpp:281 -msgid "connect: Failed to unload current mod" +#: Client/core/CSettings.cpp:628 Client/core/CSettings.cpp:749 +msgid "Anisotropic filtering:" msgstr "" -#: Client/core/CCommandFuncs.cpp:371 -msgid "Bound all controls from GTA" +#: Client/core/CSettings.cpp:628 Client/core/CSettings.cpp:776 +msgid "Anti-aliasing:" msgstr "" -#: Client/core/CCommandFuncs.cpp:385 -msgid "Saved configuration file" +#: Client/core/CSettings.cpp:628 Client/core/CSettings.cpp:790 +msgid "Aspect Ratio:" msgstr "" -#. Print it -#: Client/core/CCommandFuncs.cpp:451 -#, c-format -msgid "* Your serial is: %s" +#: Client/core/CSettings.cpp:648 +msgid "Windowed" msgstr "" -#. Unknown command -#: Client/core/CCommands.cpp:223 -msgid "Unknown command or cvar: " +#: Client/core/CSettings.cpp:654 +msgid "DPI aware" msgstr "" -#: Client/core/CQuestionBox.cpp:192 Shared/sdk/SharedUtil.Misc.hpp:688 -msgid "Do you want to see some on-line help about this problem ?" +#: Client/core/CSettings.cpp:669 Client/core/CSettings.cpp:1613 +msgid "Standard" msgstr "" -#: Client/core/CCredits.cpp:34 -msgid "Programming" +#: Client/core/CSettings.cpp:671 Client/core/CSettings.cpp:1617 +msgid "Borderless keep res" msgstr "" -#: Client/core/CCredits.cpp:63 -msgid "Contributors" +#: Client/core/CSettings.cpp:675 +msgid "Mip Mapping" msgstr "" -#: Client/core/CCredits.cpp:84 -msgid "Game Design / Scripting" +#: Client/core/CSettings.cpp:743 Client/core/CSettings.cpp:1517 +msgid "Low" msgstr "" -#: Client/core/CCredits.cpp:104 -msgid "Language Localization" +#: Client/core/CSettings.cpp:744 Client/core/CSettings.cpp:1519 +msgid "Medium" msgstr "" -#: Client/core/CCredits.cpp:110 -msgid "Patch contributors" +#: Client/core/CSettings.cpp:745 Client/core/CSettings.cpp:1086 +#: Client/core/CSettings.cpp:1521 Client/core/CSettings.cpp:3145 +msgid "High" msgstr "" -#: Client/core/CCredits.cpp:234 -msgid "Special Thanks" +#: Client/core/CSettings.cpp:746 Client/core/CSettings.cpp:1523 +msgid "Very high" msgstr "" -#: Client/core/CCredits.cpp:265 -msgid "" -"This software and project makes use of the following libraries and software:" +#: Client/core/CSettings.cpp:761 Client/core/CSettings.cpp:784 +#: Client/core/CSettings.cpp:1017 Client/core/CSettings.cpp:1071 +#: Client/core/CSettings.cpp:1201 Client/core/CSettings.cpp:1527 +#: Client/core/CSettings.cpp:3152 Client/core/CSettings.cpp:3184 +#: Client/core/CSettings.cpp:3206 Client/core/CSettings.cpp:4234 +msgid "Off" msgstr "" -#: Client/core/CJoystickManager.cpp:1578 -msgid "Accelerate Axis" +#: Client/core/CSettings.cpp:785 Client/core/CSettings.cpp:1529 +msgid "1x" msgstr "" -#: Client/core/CJoystickManager.cpp:1580 -msgid "Brake Axis" +#: Client/core/CSettings.cpp:786 Client/core/CSettings.cpp:1531 +msgid "2x" msgstr "" -#. TRANSLATORS: Replace with your language native name -#: Client/core/CLocalization.cpp:16 -msgid "English" +#: Client/core/CSettings.cpp:787 Client/core/CSettings.cpp:1533 +msgid "3x" msgstr "" -#: Client/core/CMainMenu.cpp:333 -msgid "" -"You are using a feature-branch build! This is a test build only which cannot " -"be used to connect to public servers!" +#: Client/core/CSettings.cpp:800 Client/core/CSettings.cpp:1019 +#: Client/core/CSettings.cpp:1539 Client/core/CSettings.cpp:3154 +msgid "Auto" msgstr "" -#: Client/core/CMainMenu.cpp:352 -msgid "" -"MTA will not receive updates on XP/Vista after July 2019.\n" -"\n" -"Upgrade Windows to play on the latest servers." +#: Client/core/CSettings.cpp:801 Client/core/CSettings.cpp:1541 +msgid "4:3" msgstr "" -#: Client/core/CMainMenu.cpp:1193 -msgid "" -"This will disconnect you from the current server.\n" -"\n" -"Are you sure you want to disconnect?" +#: Client/core/CSettings.cpp:802 Client/core/CSettings.cpp:1543 +msgid "16:10" msgstr "" -#: Client/core/CMainMenu.cpp:1197 -msgid "DISCONNECT WARNING" +#: Client/core/CSettings.cpp:803 Client/core/CSettings.cpp:1545 +msgid "16:9" msgstr "" -#: Client/core/CVersionUpdater.cpp:626 -msgid "Busy" +#: Client/core/CSettings.cpp:806 +msgid "HUD Match Aspect Ratio" msgstr "" -#: Client/core/CVersionUpdater.cpp:626 -msgid "Can't check for updates right now" +#: Client/core/CSettings.cpp:812 +msgid "Volumetric Shadows" msgstr "" -#: Client/core/CVersionUpdater.cpp:1567 Client/core/CVersionUpdater.cpp:1587 -#: Client/core/CVersionUpdater.cpp:1605 -#, c-format -msgid "MTA:SA %s required" +#: Client/core/CSettings.cpp:816 +msgid "Grass effect" msgstr "" -#: Client/core/CVersionUpdater.cpp:1568 -#, c-format -msgid "" -"An updated version of MTA:SA %s is required to join the selected server.\n" -"\n" -"Do you want to download and install MTA:SA %s ?" +#: Client/core/CSettings.cpp:820 +msgid "Heat haze" msgstr "" -#: Client/core/CVersionUpdater.cpp:1588 -#, c-format -msgid "Do you want to launch MTA:SA %s and connect to this server ?" +#: Client/core/CSettings.cpp:824 +msgid "Tyre Smoke etc" msgstr "" -#: Client/core/CVersionUpdater.cpp:1606 -msgid "" -"It is not possible to connect at this time.\n" -"\n" -"Please try later." +#: Client/core/CSettings.cpp:828 +msgid "Dynamic ped shadows" msgstr "" -#: Client/core/CVersionUpdater.cpp:1788 -msgid "Connecting" +#: Client/core/CSettings.cpp:832 +msgid "Motion blur" msgstr "" -#: Client/core/CVersionUpdater.cpp:1789 Client/core/CVersionUpdater.cpp:1805 -msgid "Please wait..." +#: Client/core/CSettings.cpp:837 +msgid "Full Screen Minimize" msgstr "" -#: Client/core/CVersionUpdater.cpp:1804 -msgid "CHECKING" +#: Client/core/CSettings.cpp:849 +msgid "Enable Device Selection Dialog" msgstr "" -#: Client/core/CVersionUpdater.cpp:1821 Client/core/CVersionUpdater.cpp:1914 -msgid "UPDATE CHECK" +#: Client/core/CSettings.cpp:861 +msgid "Show unsafe resolutions" msgstr "" -#: Client/core/CVersionUpdater.cpp:1822 -msgid "No update needed" +#: Client/core/CSettings.cpp:873 +msgid "Render vehicles always in high detail" msgstr "" -#: Client/core/CVersionUpdater.cpp:1839 -msgid "DOWNLOADING" +#: Client/core/CSettings.cpp:877 +msgid "Render peds always in high detail" msgstr "" -#: Client/core/CVersionUpdater.cpp:1840 -msgid "waiting..." +#: Client/core/CSettings.cpp:881 +msgid "Corona rain reflections" msgstr "" -#: Client/core/CVersionUpdater.cpp:1856 -msgid "MANDATORY UPDATE" +#: Client/core/CSettings.cpp:910 +msgid "Enable remote websites" msgstr "" -#: Client/core/CVersionUpdater.cpp:1857 -msgid "" -"To join this server, you must update MTA.\n" -"\n" -" Do you want to update now ?" +#: Client/core/CSettings.cpp:915 +msgid "Enable Javascript on remote websites" msgstr "" -#: Client/core/CVersionUpdater.cpp:1875 -msgid "OPTIONAL UPDATE" +#: Client/core/CSettings.cpp:920 +msgid "Custom blacklist" msgstr "" -#: Client/core/CVersionUpdater.cpp:1876 -msgid "" -"Server says an update is recommended, but not essential.\n" -"\n" -" Do you want to update now ?" +#: Client/core/CSettings.cpp:931 Client/core/CSettings.cpp:966 +msgid "Enter a domain e.g. google.com" msgstr "" -#: Client/core/CVersionUpdater.cpp:1915 -msgid "" -"An update is currently not available.\n" -"\n" -"Please check www.mtasa.com" +#: Client/core/CSettings.cpp:939 +msgid "Block" msgstr "" -#: Client/core/CVersionUpdater.cpp:1936 Client/core/CVersionUpdater.cpp:2118 -msgid "ERROR SAVING" +#: Client/core/CSettings.cpp:947 Client/core/CSettings.cpp:982 +msgid "Domain" msgstr "" -#: Client/core/CVersionUpdater.cpp:1937 Client/core/CVersionUpdater.cpp:2119 -msgid "Unable to create the file." +#: Client/core/CSettings.cpp:949 Client/core/CSettings.cpp:984 +msgid "Remove domain" msgstr "" -#: Client/core/CVersionUpdater.cpp:1945 Client/core/CVersionUpdater.cpp:1954 -#: Client/core/CVersionUpdater.cpp:2127 Client/core/CVersionUpdater.cpp:2136 -msgid "ERROR DOWNLOADING" +#. Reset vecTemp +#: Client/core/CSettings.cpp:955 +msgid "Custom whitelist" msgstr "" -#: Client/core/CVersionUpdater.cpp:1946 Client/core/CVersionUpdater.cpp:2128 -msgid "The downloaded file appears to be incorrect." +#. Misc section label +#: Client/core/CSettings.cpp:997 +msgid "Misc" +msgstr "" + +#. Fast clothes loading +#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1010 +#: Client/core/CSettings.cpp:4803 +msgid "Fast CJ clothes loading:" msgstr "" -#: Client/core/CVersionUpdater.cpp:1955 Client/core/CVersionUpdater.cpp:2137 -msgid "For some reason." +#. Browser scan speed +#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1024 +#: Client/core/CSettings.cpp:4805 +msgid "Browser speed:" msgstr "" -#: Client/core/CVersionUpdater.cpp:1966 Client/core/CVersionUpdater.cpp:2150 -msgid "DOWNLOAD COMPLETE" +#. Single download +#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1038 +#: Client/core/CSettings.cpp:4807 +msgid "Single connection:" msgstr "" -#: Client/core/CVersionUpdater.cpp:1990 -msgid " - Unknown problem in _DialogUpdateResult" +#. Packet tag +#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1051 +#: Client/core/CSettings.cpp:4809 +msgid "Packet tag:" msgstr "" -#: Client/core/CVersionUpdater.cpp:2088 Client/core/CVersionUpdater.cpp:2098 -msgid "Ok" +#. Progress animation +#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1064 +#: Client/core/CSettings.cpp:4811 +msgid "Progress animation:" msgstr "" -#: Client/core/CVersionUpdater.cpp:2096 -msgid "ERROR" +#. Process priority +#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1077 +#: Client/core/CSettings.cpp:4801 +msgid "Process priority:" msgstr "" -#: Client/core/CVersionUpdater.cpp:2097 -msgid "" -"Some MTA:SA data files are missing.\n" -"\n" -"\n" -"Please reinstall MTA:SA" +#. Debug setting +#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1091 +#: Client/core/CSettings.cpp:4813 +msgid "Debug setting:" msgstr "" -#: Client/core/CVersionUpdater.cpp:2774 -#, c-format -msgid "%3d %% completed" +#. Streaming memory +#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1114 +#: Client/core/CSettings.cpp:4815 +msgid "Streaming memory:" msgstr "" -#: Client/core/CVersionUpdater.cpp:2777 -#, c-format -msgid "" -"\n" -"\n" -"Waiting for response - %-3d" +#. Update build type +#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1215 +msgid "Update build type:" msgstr "" -#. Create window -#: Client/core/CConsole.cpp:417 -msgid "CONSOLE" +#. UpdateAutoInstall +#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1194 +msgid "Install important updates:" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:25 -msgid "Idle" +#: Client/core/CSettings.cpp:1018 Client/core/CSettings.cpp:1046 +#: Client/core/CSettings.cpp:1059 Client/core/CSettings.cpp:3156 +#: Client/core/CSettings.cpp:3172 Client/core/CSettings.cpp:3179 +msgid "On" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:150 -msgid "player" -msgid_plural "players" -msgstr[0] "" -msgstr[1] "" - -#: Client/core/ServerBrowser/CServerList.cpp:151 -msgid "on" +#: Client/core/CSettings.cpp:1031 Client/core/CSettings.cpp:3161 +msgid "Very slow" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:154 -msgid "server" -msgid_plural "servers" -msgstr[0] "" -msgstr[1] "" - -#. We are polling for the master server list (first pass) -#: Client/core/ServerBrowser/CServerList.cpp:238 -#, c-format -msgid "Requesting master server list (%lu ms elapsed)" +#: Client/core/CSettings.cpp:1032 Client/core/CSettings.cpp:1045 +#: Client/core/CSettings.cpp:1058 Client/core/CSettings.cpp:1072 +#: Client/core/CSettings.cpp:1098 Client/core/CSettings.cpp:1110 +#: Client/core/CSettings.cpp:1202 Client/core/CSettings.cpp:1222 +#: Client/core/CSettings.cpp:3163 Client/core/CSettings.cpp:3170 +#: Client/core/CSettings.cpp:3177 Client/core/CSettings.cpp:3186 +#: Client/core/CSettings.cpp:3199 +msgid "Default" msgstr "" -#. Abort -#: Client/core/ServerBrowser/CServerList.cpp:254 -msgid "Master server list could not be parsed." +#: Client/core/CSettings.cpp:1033 Client/core/CSettings.cpp:3165 +msgid "Fast" msgstr "" -#. Abort -#: Client/core/ServerBrowser/CServerList.cpp:264 -msgid "Master server list could not be retrieved." +#: Client/core/CSettings.cpp:1084 Client/core/CSettings.cpp:3141 +msgid "Normal" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:274 -msgid "(Backup server list)" +#: Client/core/CSettings.cpp:1085 Client/core/CSettings.cpp:3143 +msgid "Above normal" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:326 -msgid "Cannot bind LAN-broadcast socket" +#: Client/core/CSettings.cpp:1121 +msgid "Min" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:345 -msgid "Attempting to discover LAN servers" +#: Client/core/CSettings.cpp:1134 +msgid "Max" msgstr "" -#. Create queue window -#: Client/core/ServerBrowser/CServerInfo.cpp:32 -#: Client/core/ServerBrowser/CServerInfo.cpp:302 -msgid "SERVER IS FULL" +#. Windows 8 compatibility +#: Client/core/CSettings.cpp:1141 +msgid "Windows 8 compatibility:" msgstr "" -#. Determine our label draw position for L10n -#. Start position -#. Server Name -#: Client/core/ServerBrowser/CServerInfo.cpp:44 -#: Client/core/ServerBrowser/CServerInfo.cpp:53 -msgid "Name:" +#: Client/core/CSettings.cpp:1145 +msgid "16-bit color" msgstr "" -#. Server IP -#: Client/core/ServerBrowser/CServerInfo.cpp:44 -#: Client/core/ServerBrowser/CServerInfo.cpp:64 -msgid "Server Address:" +#: Client/core/CSettings.cpp:1150 +msgid "Mouse fix" msgstr "" -#. Gamemode -#: Client/core/ServerBrowser/CServerInfo.cpp:44 -#: Client/core/ServerBrowser/CServerInfo.cpp:75 -msgid "Gamemode:" +#. Cache path info +#: Client/core/CSettings.cpp:1168 +msgid "Client resource files:" msgstr "" -#. Map -#: Client/core/ServerBrowser/CServerInfo.cpp:44 -#: Client/core/ServerBrowser/CServerInfo.cpp:86 -msgid "Map:" +#: Client/core/CSettings.cpp:1172 +msgid "Show in Explorer" msgstr "" -#. Players -#: Client/core/ServerBrowser/CServerInfo.cpp:45 -#: Client/core/ServerBrowser/CServerInfo.cpp:97 -msgid "Players:" +#. Auto updater section label +#: Client/core/CSettings.cpp:1187 Client/core/CSettings.cpp:1190 +msgid "Auto updater" msgstr "" -#. Passworded -#: Client/core/ServerBrowser/CServerInfo.cpp:45 -#: Client/core/ServerBrowser/CServerInfo.cpp:108 -msgid "Passworded:" +#. Check for updates +#: Client/core/CSettings.cpp:1228 +msgid "Check for update now" msgstr "" -#. Latency -#: Client/core/ServerBrowser/CServerInfo.cpp:45 -#: Client/core/ServerBrowser/CServerInfo.cpp:119 -msgid "Latency:" +#: Client/core/CSettings.cpp:1382 +msgid "Some settings will be changed when you next start MTA" msgstr "" -#. Column for player names -#. Player List Columns -#: Client/core/ServerBrowser/CServerInfo.cpp:138 -#: Client/core/ServerBrowser/CServerBrowser.cpp:478 -msgid "Player list" +#: Client/core/CSettings.cpp:1383 +msgid "" +"\n" +"\n" +"Do you want to restart now?" msgstr "" -#. Close button -#: Client/core/ServerBrowser/CServerInfo.cpp:144 -msgid "Close" +#: Client/core/CSettings.cpp:1386 +msgid "RESTART REQUIRED" msgstr "" -#. Join Game button -#: Client/core/ServerBrowser/CServerInfo.cpp:152 -msgid "Join Game" +#: Client/core/CSettings.cpp:1406 +msgid "Some settings will be changed when you disconnect the current server" msgstr "" -#. Please enter password label -#: Client/core/ServerBrowser/CServerInfo.cpp:166 -msgid "Please enter the password to the server:" +#: Client/core/CSettings.cpp:1407 +msgid "" +"\n" +"\n" +"Do you want to disconnect now?" msgstr "" -#: Client/core/ServerBrowser/CServerInfo.cpp:177 -msgid "Join the server as soon as a player slot is available." +#: Client/core/CSettings.cpp:1410 +msgid "DISCONNECT REQUIRED" msgstr "" -#: Client/core/ServerBrowser/CServerInfo.cpp:310 -msgid "PLEASE ENTER SERVER PASSWORD" +#. Update the joystick name +#: Client/core/CSettings.cpp:1737 +msgid "Joypad not detected - Check connections and restart game" msgstr "" -#: Client/core/ServerBrowser/CServerInfo.cpp:319 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1380 -#: Client/loader/MainFunctions.cpp:603 Client/loader/MainFunctions.cpp:610 -#: Client/loader/MainFunctions.cpp:1219 -msgid "Information" +#: Client/core/CSettings.cpp:1932 +msgid "Binding axis" msgstr "" -#. The server has timed out -#: Client/core/ServerBrowser/CServerInfo.cpp:402 -msgid "Timed Out" +#: Client/core/CSettings.cpp:1932 +msgid "Move an axis to bind, or escape to clear" msgstr "" -#. Set every GUI elements text to blank -#: Client/core/ServerBrowser/CServerInfo.cpp:431 -msgid "Querying..." +#: Client/core/CSettings.cpp:2009 +msgid "Language:" msgstr "" -#. Create the window -#: Client/core/ServerBrowser/CServerBrowser.cpp:85 -msgid "SERVER BROWSER" +#: Client/core/CSettings.cpp:2009 +msgid "Skin:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:134 -msgid "Local" +#: Client/core/CSettings.cpp:2009 +msgid "Presets:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:135 -msgid "Favourites" +#: Client/core/CSettings.cpp:2058 +msgid "Chat" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:136 -msgid "Recent" +#: Client/core/CSettings.cpp:2075 +msgid "Load" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:191 -msgid "" -"FOR QUICK CONNECT:\n" -"\n" -"Type the address and port into the address bar.\n" -"Or select a server from the history list and press 'Connect'" +#: Client/core/CSettings.cpp:2087 +msgid "Colors" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:203 -msgid "HELP" +#: Client/core/CSettings.cpp:2088 +msgid "Layout" +msgstr "" + +#: Client/core/CSettings.cpp:2089 Client/core/CSettings.cpp:2335 +msgid "Options" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:212 -#: Client/core/ServerBrowser/CServerBrowser.cpp:252 -msgid "Refresh" +#: Client/core/CSettings.cpp:2095 +msgid "Chat Background" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:212 -#: Client/core/ServerBrowser/CServerBrowser.cpp:253 -msgid "Add Favorite" +#: Client/core/CSettings.cpp:2095 +msgid "Chat Text" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:212 -#: Client/core/ServerBrowser/CServerBrowser.cpp:254 -#: Client/core/ServerBrowser/CServerBrowser.cpp:301 -#: Client/core/ServerBrowser/CServerBrowser.cpp:372 -msgid "Connect" +#: Client/core/CSettings.cpp:2095 +msgid "Input Background" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:212 -#: Client/core/ServerBrowser/CServerBrowser.cpp:255 -msgid "Server information" +#: Client/core/CSettings.cpp:2095 +msgid "Input Text" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:213 -#: Client/core/ServerBrowser/CServerBrowser.cpp:256 -msgid "Search servers" +#: Client/core/CSettings.cpp:2118 +msgid "Lines:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:213 -#: Client/core/ServerBrowser/CServerBrowser.cpp:257 -msgid "Search players" +#: Client/core/CSettings.cpp:2118 +msgid "Scale:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:213 -#: Client/core/ServerBrowser/CServerBrowser.cpp:258 -msgid "Start search" +#: Client/core/CSettings.cpp:2118 +msgid "Width:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:299 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1697 -msgid "Search players..." +#: Client/core/CSettings.cpp:2121 +msgid "Size" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:422 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1695 -msgid "Search servers..." +#: Client/core/CSettings.cpp:2170 +msgid "after" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:453 -msgid "Name" +#: Client/core/CSettings.cpp:2170 +msgid "for" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:454 -msgid "Players" +#: Client/core/CSettings.cpp:2170 +msgid "sec" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:455 -msgid "Ping" +#: Client/core/CSettings.cpp:2173 +msgid "Fading" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:456 -msgid "Gamemode" +#: Client/core/CSettings.cpp:2179 +msgid "Fade out old lines" msgstr "" -#. Include label -#: Client/core/ServerBrowser/CServerBrowser.cpp:486 -msgid "Include:" +#: Client/core/CSettings.cpp:2219 +msgid "Horizontal:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:492 -msgid "Empty" +#: Client/core/CSettings.cpp:2219 +msgid "Vertical:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:498 -msgid "Full" +#: Client/core/CSettings.cpp:2219 +msgid "Text-Align:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:504 -msgid "Locked" +#: Client/core/CSettings.cpp:2219 +msgid "X-Offset:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:516 -msgid "Offline" +#: Client/core/CSettings.cpp:2220 +msgid "Y-Offset:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:529 -msgid "Other Versions" +#: Client/core/CSettings.cpp:2226 +msgid "Position" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:550 -msgid "Back" +#: Client/core/CSettings.cpp:2241 Client/core/CSettings.cpp:2255 +msgid "Center" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:556 -#: Client/loader/Dialogs.cpp:135 -msgid "Help" +#: Client/core/CSettings.cpp:2254 +msgid "Top" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:741 -msgid "Loading..." +#: Client/core/CSettings.cpp:2256 +msgid "Bottom" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1240 -#: Client/core/ServerBrowser/CServerBrowser.cpp:2182 -msgid " ..loading.." +#: Client/core/CSettings.cpp:2304 +msgid "Font" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1278 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1406 -msgid "No address specified!" +#: Client/core/CSettings.cpp:2341 +msgid "Hide background when not typing" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1291 -msgid "Unknown protocol" +#: Client/core/CSettings.cpp:2346 +msgid "Nickname completion using the \"Tab\" key" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1291 -msgid "Please use the mtasa:// protocol!" +#: Client/core/CSettings.cpp:2351 +msgid "Allow server to flash the window" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1380 -msgid "You have to select a server to connect to." +#: Client/core/CSettings.cpp:2356 +msgid "Allow tray balloon notifications" msgstr "" -#: Client/core/DXHook/CDirect3DHook9.cpp:124 -msgid "" -"Could not initialize Direct3D9.\n" -"\n" -"Please ensure the DirectX End-User Runtime and\n" -"latest Windows Service Packs are installed correctly." +#: Client/core/CSettings.cpp:2361 +msgid "Chat text black/white outline" msgstr "" -#: Client/loader/Dialogs.cpp:134 -msgid "Quit" +#. Create a messagebox to notify the user +#. SString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); +#. Create a messagebox to notify the user +#. sSString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); +#: Client/core/CSettings.cpp:2610 Client/core/CSettings.cpp:2617 +msgid "Press a key to bind, or escape to clear" msgstr "" -#: Client/loader/Dialogs.cpp:151 -msgid "MTA: San Andreas has encountered a problem" +#: Client/core/CSettings.cpp:2611 +msgid "Binding a primary key" msgstr "" -#: Client/loader/Dialogs.cpp:152 -msgid "Crash information" +#: Client/core/CSettings.cpp:2618 +msgid "Binding a secondary key" msgstr "" -#: Client/loader/Dialogs.cpp:153 -msgid "" -"Tick the check box to send this crash info to MTA devs using the 'internet'" +#: Client/core/CSettings.cpp:2694 +msgid "GTA GAME CONTROLS" msgstr "" -#: Client/loader/Dialogs.cpp:154 -msgid "Doing so will increase the chance of this crash being fixed." +#: Client/core/CSettings.cpp:2696 +msgid "MULTIPLAYER CONTROLS" msgstr "" -#: Client/loader/Dialogs.cpp:155 -msgid "Do you want to restart MTA: San Andreas ?" +#: Client/core/CSettings.cpp:2941 Client/core/CSettings.cpp:4764 +msgid "Your nickname contains invalid characters!" msgstr "" -#: Client/loader/Dialogs.cpp:162 -msgid "MTA: San Andreas - Warning" +#: Client/core/CSettings.cpp:3778 +msgid "Red:" msgstr "" -#: Client/loader/Dialogs.cpp:163 -msgid "" -"Your Grand Theft Auto: San Andreas install directory contains these files:" +#: Client/core/CSettings.cpp:3778 +msgid "Green:" msgstr "" -#: Client/loader/Dialogs.cpp:165 -msgid "" -"These files are not required and may interfere with the graphical features " -"in this version of MTA:SA.\n" -"\n" -"It is recommended that you remove or rename these files." +#: Client/core/CSettings.cpp:3778 +msgid "Blue:" msgstr "" -#: Client/loader/Dialogs.cpp:167 -msgid "Keep these files, but also show this warning on next start" +#: Client/core/CSettings.cpp:3778 +msgid "Transparency:" msgstr "" -#: Client/loader/Dialogs.cpp:168 -msgid "Do not remind me about these files again" +#: Client/core/CSettings.cpp:3781 +msgid "Color" msgstr "" -#: Client/loader/Dialogs.cpp:169 -msgid "Rename these files from *.dll to *.dll.bak" +#: Client/core/CSettings.cpp:3858 +msgid "Preview" msgstr "" -#: Client/loader/Dialogs.cpp:170 -msgid "Show me these files" +#: Client/core/CSettings.cpp:4166 +msgid "Please disconnect before changing language" msgstr "" -#: Client/loader/Dialogs.cpp:171 -msgid "Play MTA:SA" +#: Client/core/CSettings.cpp:4194 +msgid "Please disconnect before changing skin" msgstr "" -#: Client/loader/Dialogs.cpp:177 -msgid "MTA: San Andreas - Confusing options" +#: Client/core/CSettings.cpp:4482 +msgid "" +"Volmetric shadows can cause some systems to slow down.\n" +"\n" +"Are you sure you want to enable them?" msgstr "" -#: Client/loader/Dialogs.cpp:178 -msgid "NVidia Optimus detected!" +#: Client/core/CSettings.cpp:4486 +msgid "PERFORMANCE WARNING" msgstr "" -#: Client/loader/Dialogs.cpp:179 -msgid "Try each option and see what works:" +#: Client/core/CSettings.cpp:4506 +msgid "" +"Screen upload is required by some servers for anti-cheat purposes.\n" +"\n" +"(The chat box and GUI is excluded from the upload)\n" msgstr "" -#: Client/loader/Dialogs.cpp:180 -msgid "A - Standard NVidia" +#: Client/core/CSettings.cpp:4508 +msgid "SCREEN UPLOAD INFORMATION" msgstr "" -#: Client/loader/Dialogs.cpp:181 -msgid "B - Alternate NVidia" +#: Client/core/CSettings.cpp:4523 +msgid "" +"Some scripts may play sounds, such as radio, from the internet.\n" +"\n" +"Disabling this setting may decrease network\n" +"bandwidth consumption.\n" msgstr "" -#: Client/loader/Dialogs.cpp:182 -msgid "C - Standard Intel" +#: Client/core/CSettings.cpp:4526 +msgid "EXTERNAL SOUNDS" msgstr "" -#: Client/loader/Dialogs.cpp:183 -msgid "D - Alternate Intel" +#: Client/core/CSettings.cpp:4555 +msgid "" +"It seems that you have the Rich Presence connection option enabled.\n" +"Do you want to allow servers to share their data?\n" +"\n" +"This includes yours unique ID identifier." msgstr "" -#: Client/loader/Dialogs.cpp:184 -msgid "If you get desperate, this might help:" +#: Client/core/CSettings.cpp:4560 +msgid "CONSENT TO ALLOW DATA SHARING" msgstr "" -#: Client/loader/Dialogs.cpp:185 -msgid "If you have already selected an option that works, this might help:" +#: Client/core/CSettings.cpp:4584 +msgid "" +"Some files in your GTA:SA data directory are customized.\n" +"MTA will only use these modified files if this check box is ticked.\n" +"\n" +"However, CUSTOMIZED GTA:SA FILES ARE BLOCKED BY MANY SERVERS\n" +"\n" +"Are you sure you want to use them?" msgstr "" -#: Client/loader/Dialogs.cpp:186 -msgid "Force windowed mode" +#: Client/core/CSettings.cpp:4633 +msgid "" +"Enabling DPI awareness is an experimental feature and\n" +"we only recommend it when you play MTA:SA on a scaled monitor.\n" +"You may experience graphical issues if you enable this option.\n" +"\n" +"Are you sure you want to enable this option?" msgstr "" -#: Client/loader/Dialogs.cpp:187 -msgid "Don't show again" +#: Client/core/CSettings.cpp:4639 +msgid "EXPERIMENTAL FEATURE" msgstr "" -#: Client/loader/Dialogs.cpp:195 -msgid "Warning: Could not detect anti-virus product" +#: Client/core/CSettings.cpp:4782 +msgid "Please enter a nickname" msgstr "" -#: Client/loader/Dialogs.cpp:197 +#: Client/core/CSettings.cpp:4783 msgid "" -"MTA could not detect an anti-virus on your PC.\n" -"\n" -"Viruses interfere with MTA and degrade your gameplay experience.\n" -"\n" -"Press 'Help' for more information." +"Please enter a nickname to be used ingame. \n" +"This will be your name when you connect to and play in a server" msgstr "" -#: Client/loader/Dialogs.cpp:200 -msgid "I have already installed an anti-virus" +#: Client/core/CSettings.cpp:4801 +msgid "Very experimental feature." msgstr "" -#: Client/loader/Dialogs.cpp:202 -msgid "" -"I will not install an anti-virus.\n" -"I want my PC to lag and be part of a botnet." +#: Client/core/CSettings.cpp:4803 +msgid "Stops stalls with CJ variations (Uses 65MB more RAM)" msgstr "" -#: Client/loader/Dialogs.cpp:890 Client/loader/Utils.cpp:534 -msgid "Searching for Grand Theft Auto San Andreas" +#: Client/core/CSettings.cpp:4805 +msgid "Older routers may require a slower scan speed." msgstr "" -#: Client/loader/Dialogs.cpp:893 Client/loader/Utils.cpp:536 -msgid "Please start Grand Theft Auto San Andreas" +#: Client/core/CSettings.cpp:4807 +msgid "Switch on to use only one connection when downloading." msgstr "" -#: Client/loader/Dialogs.cpp:901 Client/loader/Install.cpp:852 -msgid "Installing update..." +#: Client/core/CSettings.cpp:4809 +msgid "Tag network packets to help ISPs identify MTA traffic." msgstr "" -#: Client/loader/Dialogs.cpp:909 Client/loader/Install.cpp:934 -msgid "Extracting files..." +#: Client/core/CSettings.cpp:4811 +msgid "Spinning circle animation at the bottom of the screen" msgstr "" -#: Client/loader/Dialogs.cpp:914 Client/loader/Utils.cpp:1394 -msgid "Copying files..." +#: Client/core/CSettings.cpp:4813 +msgid "Select default always. (This setting is not saved)" msgstr "" -#: Client/loader/Dialogs.cpp:919 Client/loader/Utils.cpp:1454 -msgid "Copy finished early. Everything OK." +#: Client/core/CSettings.cpp:4815 +msgid "Maximum is usually best" msgstr "" -#: Client/loader/Dialogs.cpp:924 Client/loader/Utils.cpp:1460 -msgid "Finishing..." +#: Client/core/CSettings.cpp:4817 Client/core/CSettings.cpp:4819 +msgid "Auto updater:" msgstr "" -#: Client/loader/Dialogs.cpp:928 Client/loader/Utils.cpp:1462 -msgid "Done!" +#: Client/core/CSettings.cpp:4817 +msgid "Select default unless you like filling out bug reports." msgstr "" -#: Client/loader/Utils.cpp:600 -msgid "Select your Grand Theft Auto: San Andreas Installation Directory" +#: Client/core/CSettings.cpp:4819 +msgid "Select default to automatically install important updates." msgstr "" -#: Client/loader/Utils.cpp:968 Client/loader/CInstallManager.cpp:361 -#, c-format -msgid "" -"MTA:SA needs Administrator access for the following task:\n" -"\n" -" '%s'\n" -"\n" -"Please confirm in the next window." +#: Client/core/CSettings.cpp:4821 +msgid "16-bit color:" msgstr "" -#: Client/loader/Utils.cpp:1069 -#, c-format -msgid "Error loading %s module! (%s)" +#: Client/core/CSettings.cpp:4821 +msgid "Enable 16 bit color modes - Requires MTA restart" msgstr "" -#: Client/loader/Utils.cpp:1502 -#, c-format -msgid "" -"New installation of %s detected.\n" -"\n" -"Do you want to copy your settings from %s ?" +#: Client/core/CSettings.cpp:4823 +msgid "Mouse fix:" msgstr "" -#: Client/loader/Utils.cpp:1541 -#, c-format -msgid "GTA:SA had trouble opening the file '%s'" +#: Client/core/CSettings.cpp:4823 +msgid "Mouse movement fix - May need PC restart" msgstr "" -#: Client/loader/Utils.cpp:1563 -#, c-format -msgid "GTA:SA is missing the file '%s'." +#: Client/core/CConnectManager.cpp:79 +msgid "Connecting failed. Invalid nick provided!" msgstr "" -#: Client/loader/Utils.cpp:1588 -msgid "GTA:SA had trouble loading a model." +#: Client/core/CConnectManager.cpp:110 +msgid "Connecting failed. Invalid host provided!" msgstr "" -#: Client/loader/Utils.cpp:1590 -msgid "If you recently modified gta3.img, then try reinstalling GTA:SA." +#: Client/core/CConnectManager.cpp:126 +#, c-format +msgid "Connecting to %s at port %u failed!" msgstr "" -#: Client/loader/Utils.cpp:1615 -msgid "GTA:SA had trouble adding an upgrade to a vehicle." +#. Display the status box +#: Client/core/CConnectManager.cpp:147 +#, c-format +msgid "Connecting to %s:%u ..." msgstr "" -#: Client/loader/Utils.cpp:1634 +#. Failed loading the mod +#: Client/core/CConnectManager.cpp:403 #, c-format -msgid "GTA:SA found errors in the file '%s'" +msgid "No such mod installed (%s)" msgstr "" -#: Client/loader/Utils.cpp:1716 -msgid "Did your computer restart when playing MTA:SA?" +#: Client/core/CConnectManager.cpp:411 +msgid "Bad server response (2)" msgstr "" -#: Client/loader/Utils.cpp:1781 -msgid "Please terminate the following programs before continuing:" +#: Client/core/CConnectManager.cpp:421 +msgid "Bad server response (1)" msgstr "" -#: Client/loader/Install.cpp:265 -msgid "Unknown" +#. Create window +#: Client/core/CConsole.cpp:417 +msgid "CONSOLE" msgstr "" -#: Client/loader/Install.cpp:272 -#, c-format +#: Client/core/DXHook/CDirect3DHook9.cpp:124 msgid "" -"The file '%s' is currently locked by %zu processes.\n" -"\n" -"Do you want to terminate the following processes and continue updating?\n" +"Could not initialize Direct3D9.\n" "\n" -"%s" +"Please ensure the DirectX End-User Runtime and\n" +"latest Windows Service Packs are installed correctly." msgstr "" -#: Client/loader/Install.cpp:479 -#, c-format -msgid "" -"Your installation may be corrupt now.\n" -"\n" -"%zu out of %zu files could not be restored from the backup.\n" -"\n" -"You should reinstall Multi Theft Auto from www.multitheftauto.com\n" -"or try running the update with administrator rights." +#. Create the window +#: Client/core/ServerBrowser/CServerBrowser.cpp:85 +msgid "SERVER BROWSER" msgstr "" -#: Client/loader/MainFunctions.cpp:248 -msgid "" -"Trouble restarting MTA:SA\n" -"\n" -"If the problem persists, open Task Manager and\n" -"stop the 'gta_sa.exe' and 'Multi Theft Auto.exe' processes\n" -"\n" -"\n" -"Try to launch MTA:SA again?" +#: Client/core/ServerBrowser/CServerBrowser.cpp:134 +msgid "Local" msgstr "" -#: Client/loader/MainFunctions.cpp:266 -msgid "" -"Another instance of MTA is already running.\n" -"\n" -"If this problem persists, please restart your computer" +#: Client/core/ServerBrowser/CServerBrowser.cpp:135 +msgid "Favourites" msgstr "" -#: Client/loader/MainFunctions.cpp:269 -msgid "" -"Another instance of MTA is already running.\n" -"\n" -"Do you want to terminate it?" +#: Client/core/ServerBrowser/CServerBrowser.cpp:136 +msgid "Recent" msgstr "" -#: Client/loader/MainFunctions.cpp:294 +#: Client/core/ServerBrowser/CServerBrowser.cpp:191 msgid "" -"Are you having problems running MTA:SA?.\n" +"FOR QUICK CONNECT:\n" "\n" -"Do you want to revert to an earlier version?" +"Type the address and port into the address bar.\n" +"Or select a server from the history list and press 'Connect'" msgstr "" -#: Client/loader/MainFunctions.cpp:324 -msgid "" -"There seems to be a problem launching MTA:SA.\n" -"Resetting GTA settings can sometimes fix this problem.\n" -"\n" -"Do you want to reset GTA settings now?" +#: Client/core/ServerBrowser/CServerBrowser.cpp:203 +msgid "HELP" msgstr "" -#: Client/loader/MainFunctions.cpp:339 -msgid "" -"GTA settings have been reset.\n" -"\n" -"Press OK to continue." +#: Client/core/ServerBrowser/CServerBrowser.cpp:212 +#: Client/core/ServerBrowser/CServerBrowser.cpp:252 +msgid "Refresh" msgstr "" -#: Client/loader/MainFunctions.cpp:344 -#, c-format -msgid "File could not be deleted: '%s'" +#: Client/core/ServerBrowser/CServerBrowser.cpp:212 +#: Client/core/ServerBrowser/CServerBrowser.cpp:253 +msgid "Add Favorite" msgstr "" -#. No settings to delete, or can't find them -#: Client/loader/MainFunctions.cpp:352 -msgid "" -"Are you having problems running MTA:SA?.\n" -"\n" -"Do you want to see some online help?" +#: Client/core/ServerBrowser/CServerBrowser.cpp:212 +#: Client/core/ServerBrowser/CServerBrowser.cpp:254 +#: Client/core/ServerBrowser/CServerBrowser.cpp:301 +#: Client/core/ServerBrowser/CServerBrowser.cpp:372 +msgid "Connect" msgstr "" -#. Inform user -#: Client/loader/MainFunctions.cpp:388 -msgid "" -"Are you having problems running MTA:SA?.\n" -"\n" -"Do you want to change the following setting?" +#: Client/core/ServerBrowser/CServerBrowser.cpp:212 +#: Client/core/ServerBrowser/CServerBrowser.cpp:255 +msgid "Server information" msgstr "" -#: Client/loader/MainFunctions.cpp:431 -msgid "" -"Are you having problems running MTA:SA?.\n" -"\n" -"Try disabling the following products for GTA and MTA:" +#: Client/core/ServerBrowser/CServerBrowser.cpp:213 +#: Client/core/ServerBrowser/CServerBrowser.cpp:256 +msgid "Search servers" msgstr "" -#: Client/loader/MainFunctions.cpp:465 -msgid "" -"WARNING\n" -"\n" -"MTA:SA has detected unusual activity.\n" -"Please run a virus scan to ensure your system is secure.\n" -"\n" +#: Client/core/ServerBrowser/CServerBrowser.cpp:213 +#: Client/core/ServerBrowser/CServerBrowser.cpp:257 +msgid "Search players" msgstr "" -#: Client/loader/MainFunctions.cpp:468 -#, c-format -msgid "The detected file was: %s\n" +#: Client/core/ServerBrowser/CServerBrowser.cpp:213 +#: Client/core/ServerBrowser/CServerBrowser.cpp:258 +msgid "Start search" msgstr "" -#: Client/loader/MainFunctions.cpp:602 -msgid "" -"An instance of GTA: San Andreas is already running. It needs to be " -"terminated before MTA:SA can be started. Do you want to do that now?" +#: Client/core/ServerBrowser/CServerBrowser.cpp:299 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1704 +msgid "Search players..." msgstr "" -#: Client/loader/MainFunctions.cpp:609 -msgid "" -"Unable to terminate GTA: San Andreas. If the problem persists, please " -"restart your computer." +#: Client/core/ServerBrowser/CServerBrowser.cpp:422 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1702 +msgid "Search servers..." +msgstr "" + +#: Client/core/ServerBrowser/CServerBrowser.cpp:453 +msgid "Name" msgstr "" -#: Client/loader/MainFunctions.cpp:632 -msgid "" -"Registry entries are missing. Please reinstall Multi Theft Auto: San Andreas." +#: Client/core/ServerBrowser/CServerBrowser.cpp:454 +msgid "Players" msgstr "" -#: Client/loader/MainFunctions.cpp:638 -msgid "" -"The path to your installation of GTA: San Andreas contains unsupported " -"(unicode) characters. Please move your Grand Theft Auto: San Andreas " -"installation to a compatible path that contains only standard ASCII " -"characters and reinstall Multi Theft Auto: San Andreas." +#: Client/core/ServerBrowser/CServerBrowser.cpp:455 +msgid "Ping" msgstr "" -#: Client/loader/MainFunctions.cpp:648 -msgid "" -"The path to your installation of 'MTA:SA' or 'GTA: San Andreas'\n" -"contains a ';' (semicolon).\n" -"\n" -" If you experience problems when running MTA:SA,\n" -" move your installation(s) to a path that does not contain a semicolon." +#: Client/core/ServerBrowser/CServerBrowser.cpp:456 +msgid "Gamemode" msgstr "" -#: Client/loader/MainFunctions.cpp:810 -msgid "" -"Load failed. Please ensure that the latest data files have been installed " -"correctly." +#. Player List Columns +#. Column for player names +#: Client/core/ServerBrowser/CServerBrowser.cpp:478 +#: Client/core/ServerBrowser/CServerInfo.cpp:138 +msgid "Player list" msgstr "" -#: Client/loader/MainFunctions.cpp:819 -#, c-format -msgid "Load failed. Please ensure that %s is installed correctly." +#. Include label +#: Client/core/ServerBrowser/CServerBrowser.cpp:486 +msgid "Include:" msgstr "" -#: Client/loader/MainFunctions.cpp:826 -#, c-format -msgid "Load failed. Could not find gta_sa.exe in %s." +#: Client/core/ServerBrowser/CServerBrowser.cpp:492 +msgid "Empty" msgstr "" -#: Client/loader/MainFunctions.cpp:836 -#, c-format -msgid "" -"Load failed. %s exists in the GTA directory. Please delete before continuing." +#: Client/core/ServerBrowser/CServerBrowser.cpp:498 +msgid "Full" msgstr "" -#: Client/loader/MainFunctions.cpp:845 -#, c-format -msgid "Main file has an incorrect name (%s)" +#: Client/core/ServerBrowser/CServerBrowser.cpp:504 +msgid "Locked" msgstr "" -#: Client/loader/MainFunctions.cpp:856 -msgid "" -"Main file is unsigned. Possible virus activity.\n" -"\n" -"See online help if MTA does not work correctly." +#: Client/core/ServerBrowser/CServerBrowser.cpp:516 +msgid "Offline" msgstr "" -#: Client/loader/MainFunctions.cpp:882 -#, c-format -msgid "" -"Data file %s is missing. Possible virus activity.\n" -"\n" -"Consider reinstalling Multi Theft Auto for your security.\n" -"See online help if MTA does not work correctly." +#: Client/core/ServerBrowser/CServerBrowser.cpp:529 +msgid "Other Versions" msgstr "" -#: Client/loader/MainFunctions.cpp:893 -#, c-format -msgid "" -"Data file %s is modified. Possible virus activity.\n" -"\n" -"Consider reinstalling Multi Theft Auto for your security.\n" -"See online help if MTA does not work correctly." +#: Client/core/ServerBrowser/CServerBrowser.cpp:550 +msgid "Back" msgstr "" -#: Client/loader/MainFunctions.cpp:907 -msgid "" -".asi files are in the 'MTA:SA' or 'GTA: San Andreas' installation " -"directory.\n" -"\n" -"Remove these .asi files if you experience problems with MTA:SA." +#: Client/core/ServerBrowser/CServerBrowser.cpp:741 +msgid "Loading..." msgstr "" -#: Client/loader/MainFunctions.cpp:1009 -msgid "" -"File version mismatch error. Reinstall MTA:SA if you experience problems.\n" +#: Client/core/ServerBrowser/CServerBrowser.cpp:1247 +#: Client/core/ServerBrowser/CServerBrowser.cpp:2189 +msgid " ..loading.." msgstr "" -#: Client/loader/MainFunctions.cpp:1018 -msgid "Some files are missing. Reinstall MTA:SA if you experience problems.\n" +#: Client/core/ServerBrowser/CServerBrowser.cpp:1285 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1413 +msgid "No address specified!" msgstr "" -#: Client/loader/MainFunctions.cpp:1030 -msgid "" -"MTA:SA is not compatible with Windows 'Safe Mode'.\n" -"\n" -"Please restart your PC.\n" +#: Client/core/ServerBrowser/CServerBrowser.cpp:1298 +msgid "Unknown protocol" msgstr "" -#: Client/loader/MainFunctions.cpp:1123 -msgid "Fix configuration issue" +#: Client/core/ServerBrowser/CServerBrowser.cpp:1298 +msgid "Please use the mtasa:// protocol!" msgstr "" -#. Try to relaunch as admin if not done so already -#: Client/loader/MainFunctions.cpp:1157 -msgid "Fix elevation required error" +#: Client/core/ServerBrowser/CServerBrowser.cpp:1387 +msgid "You have to select a server to connect to." msgstr "" -#: Client/loader/MainFunctions.cpp:1164 -#, c-format -msgid "" -"Could not start Grand Theft Auto: San Andreas. Please try restarting, or if " -"the problem persists,contact MTA at www.multitheftauto.com. \n" -"\n" -"[%s]" +#: Client/core/ServerBrowser/CServerList.cpp:25 +msgid "Idle" msgstr "" -#: Client/loader/MainFunctions.cpp:1219 -msgid "" -"GTA: San Andreas may not have launched correctly. Do you want to terminate " -"it?" +#: Client/core/ServerBrowser/CServerList.cpp:150 +msgid "player" +msgid_plural "players" +msgstr[0] "" +msgstr[1] "" + +#: Client/core/ServerBrowser/CServerList.cpp:151 +msgid "on" msgstr "" -#: Client/loader/CInstallManager.cpp:376 +#: Client/core/ServerBrowser/CServerList.cpp:154 +msgid "server" +msgid_plural "servers" +msgstr[0] "" +msgstr[1] "" + +#. We are polling for the master server list (first pass) +#: Client/core/ServerBrowser/CServerList.cpp:238 #, c-format -msgid "" -"MTA:SA could not complete the following task:\n" -"\n" -" '%s'\n" +msgid "Requesting master server list (%lu ms elapsed)" msgstr "" -#: Client/loader/CInstallManager.cpp:426 -msgid "" -"** The crash was caused by a graphics driver error **\n" -"\n" -"** Please update your graphics drivers **" +#. Abort +#: Client/core/ServerBrowser/CServerList.cpp:254 +msgid "Master server list could not be parsed." msgstr "" -#: Client/loader/CInstallManager.cpp:532 -msgid "Install updated MTA:SA files" +#. Abort +#: Client/core/ServerBrowser/CServerList.cpp:264 +msgid "Master server list could not be retrieved." msgstr "" -#: Client/loader/CInstallManager.cpp:552 -msgid "" -"Could not update due to file conflicts. Please close other applications and " -"retry" +#: Client/core/ServerBrowser/CServerList.cpp:274 +msgid "(Backup server list)" msgstr "" -#: Client/loader/CInstallManager.cpp:561 -#, c-format -msgid "Multi Theft Auto has not been installed properly, please reinstall. %s" +#: Client/core/ServerBrowser/CServerList.cpp:326 +msgid "Cannot bind LAN-broadcast socket" msgstr "" -#: Client/loader/CInstallManager.cpp:613 -msgid "Create GTA:SA junctions" +#: Client/core/ServerBrowser/CServerList.cpp:345 +msgid "Attempting to discover LAN servers" msgstr "" -#: Client/loader/CInstallManager.cpp:657 -msgid "MTA:SA cannot launch because copying a file failed:" +#. Create queue window +#: Client/core/ServerBrowser/CServerInfo.cpp:32 +#: Client/core/ServerBrowser/CServerInfo.cpp:302 +msgid "SERVER IS FULL" msgstr "" -#: Client/loader/CInstallManager.cpp:663 Client/loader/CInstallManager.cpp:703 -msgid "MTA:SA cannot launch because an MTA:SA file is incorrect or missing:" +#. Determine our label draw position for L10n +#. Start position +#. Server Name +#: Client/core/ServerBrowser/CServerInfo.cpp:44 +#: Client/core/ServerBrowser/CServerInfo.cpp:53 +msgid "Name:" msgstr "" -#: Client/loader/CInstallManager.cpp:672 -msgid "Copy MTA:SA files" +#. Server IP +#: Client/core/ServerBrowser/CServerInfo.cpp:44 +#: Client/core/ServerBrowser/CServerInfo.cpp:64 +msgid "Server Address:" msgstr "" -#: Client/loader/CInstallManager.cpp:695 Client/loader/CInstallManager.cpp:773 -msgid "MTA:SA cannot launch because a GTA:SA file is incorrect or missing:" +#. Gamemode +#: Client/core/ServerBrowser/CServerInfo.cpp:44 +#: Client/core/ServerBrowser/CServerInfo.cpp:75 +msgid "Gamemode:" msgstr "" -#: Client/loader/CInstallManager.cpp:780 -msgid "Patch GTA:SA dependency" +#. Map +#: Client/core/ServerBrowser/CServerInfo.cpp:44 +#: Client/core/ServerBrowser/CServerInfo.cpp:86 +msgid "Map:" msgstr "" -#: Client/loader/CInstallManager.cpp:828 -msgid "" -"MTA:SA cannot launch because the GTA:SA executable is incorrect or missing:" +#. Players +#: Client/core/ServerBrowser/CServerInfo.cpp:45 +#: Client/core/ServerBrowser/CServerInfo.cpp:97 +msgid "Players:" msgstr "" -#: Client/loader/CInstallManager.cpp:832 -msgid "" -"Please check your anti-virus for a false-positive detection, try to add an " -"exception for the GTA:SA executable and restart MTA:SA." +#. Passworded +#: Client/core/ServerBrowser/CServerInfo.cpp:45 +#: Client/core/ServerBrowser/CServerInfo.cpp:108 +msgid "Passworded:" msgstr "" -#: Client/loader/CInstallManager.cpp:838 -msgid "Generate GTA:SA" +#. Latency +#: Client/core/ServerBrowser/CServerInfo.cpp:45 +#: Client/core/ServerBrowser/CServerInfo.cpp:119 +msgid "Latency:" msgstr "" -#: Client/loader/CInstallManager.cpp:853 -msgid "MTA:SA cannot launch because the GTA:SA executable is not loadable:" +#. Close button +#: Client/core/ServerBrowser/CServerInfo.cpp:144 +msgid "Close" msgstr "" -#: Client/loader/CInstallManager.cpp:860 Client/loader/CInstallManager.cpp:883 -msgid "Patch GTA:SA" +#. Join Game button +#: Client/core/ServerBrowser/CServerInfo.cpp:152 +msgid "Join Game" msgstr "" -#: Client/loader/CInstallManager.cpp:876 -msgid "MTA:SA cannot launch because patching GTA:SA has failed:" +#. Please enter password label +#: Client/core/ServerBrowser/CServerInfo.cpp:166 +msgid "Please enter the password to the server:" msgstr "" -#: Client/loader/CInstallManager.cpp:1113 -msgid "Missing file:" +#: Client/core/ServerBrowser/CServerInfo.cpp:177 +msgid "Join the server as soon as a player slot is available." msgstr "" -#: Client/loader/CInstallManager.cpp:1117 -msgid "If MTA fails to load, please re-install GTA:SA" +#: Client/core/ServerBrowser/CServerInfo.cpp:310 +msgid "PLEASE ENTER SERVER PASSWORD" msgstr "" -#: Client/loader/CInstallManager.cpp:1152 -msgid "Update install settings" +#. The server has timed out +#: Client/core/ServerBrowser/CServerInfo.cpp:402 +msgid "Timed Out" msgstr "" -#: Client/loader/CInstallManager.cpp:1305 -msgid "Update compatibility settings" +#. Set every GUI elements text to blank +#: Client/core/ServerBrowser/CServerInfo.cpp:431 +msgid "Querying..." msgstr "" #. Populate the message and show the box From ca222607df8fc5e38763ed1ac277fb63e4413d9e Mon Sep 17 00:00:00 2001 From: Marek Kulik Date: Thu, 10 Oct 2024 23:45:57 +0200 Subject: [PATCH 18/40] Enforce player slot cap in server browser --- Client/core/CQueryReceiver.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Client/core/CQueryReceiver.cpp b/Client/core/CQueryReceiver.cpp index 059dd879e0..559691bcb3 100644 --- a/Client/core/CQueryReceiver.cpp +++ b/Client/core/CQueryReceiver.cpp @@ -213,7 +213,15 @@ SQueryInfo CQueryReceiver::GetServerResponse() return info; } } + InvalidateSocket(); + + if (info.players > info.playerSlot) + { + info.players = info.playerSlot; + info.isStatusVerified = false; + } + info.containingInfo = true; } From 55d39225254c0b9961c1423b0d5695beff20072b Mon Sep 17 00:00:00 2001 From: FileEX Date: Fri, 11 Oct 2024 05:59:06 +0200 Subject: [PATCH 19/40] Fix #523: Helicopter rotor unaffected by vehicle alpha (PR #3596) --- Client/multiplayer_sa/CMultiplayerSA.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Client/multiplayer_sa/CMultiplayerSA.cpp b/Client/multiplayer_sa/CMultiplayerSA.cpp index 28d5b1f551..1b21f79a23 100644 --- a/Client/multiplayer_sa/CMultiplayerSA.cpp +++ b/Client/multiplayer_sa/CMultiplayerSA.cpp @@ -1569,6 +1569,10 @@ void CMultiplayerSA::InitHooks() // Fix invisible vehicle windows when lights are on (#2936) MemPut(0x6E1425, 1); + // Allow alpha change for helicopter rotor (#523) + MemSet((void*)0x6C444B, 0x90, 6); + MemSet((void*)0x6C4453, 0x90, 0x68); + InitHooks_CrashFixHacks(); // Init our 1.3 hooks. From d2f62b88f17a5fe0f1238f696ffbc953711d03ed Mon Sep 17 00:00:00 2001 From: Dutchman101 <12105539+Dutchman101@users.noreply.github.com> Date: Sun, 13 Oct 2024 10:38:50 +0000 Subject: [PATCH 20/40] Update CEF to 129.0.12+gf09539f+chromium-129.0.6668.101 --- utils/buildactions/install_cef.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/buildactions/install_cef.lua b/utils/buildactions/install_cef.lua index 8430fc68f8..65b686aa56 100644 --- a/utils/buildactions/install_cef.lua +++ b/utils/buildactions/install_cef.lua @@ -9,8 +9,8 @@ local CEF_URL_PREFIX = "https://cef-builds.spotifycdn.com/cef_binary_" local CEF_URL_SUFFIX = "_windows32_minimal.tar.bz2" -- Change here to update CEF version -local CEF_VERSION = "129.0.11+g57354b8+chromium-129.0.6668.90" -local CEF_HASH = "a3e3e7add2235d1865a8570522ff87dba392e7b2d15bca0983ed2ebe19ea048b" +local CEF_VERSION = "129.0.12+gf09539f+chromium-129.0.6668.101" +local CEF_HASH = "ec759dbfafafac2ae26f4960caad1c8464205a7787ec247e0fc21ab4620c8a5c" function make_cef_download_url() return CEF_URL_PREFIX..http.escapeUrlParam(CEF_VERSION)..CEF_URL_SUFFIX From f1991d0d0e0d47f5802e49db1bfe0aaf932fbb0b Mon Sep 17 00:00:00 2001 From: FileEX Date: Sun, 13 Oct 2024 12:40:43 +0200 Subject: [PATCH 21/40] Small improvements for #3592 (#3792) --- Client/game_sa/CVehicleSA.cpp | 5 +++-- Client/game_sa/CVehicleSA.h | 2 -- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Client/game_sa/CVehicleSA.cpp b/Client/game_sa/CVehicleSA.cpp index 779661ed8a..b4e7a2c438 100644 --- a/Client/game_sa/CVehicleSA.cpp +++ b/Client/game_sa/CVehicleSA.cpp @@ -1592,9 +1592,10 @@ bool CVehicleSA::SpawnFlyingComponent(const eCarNodes& nodeIndex, const eCarComp if (removalTime <= -1 || !componentObject) return true; - std::uint32_t CTimer_ms = *reinterpret_cast(VAR_CTimer_snTimeInMilliseconds); - componentObject->uiObjectRemovalTime = CTimer_ms + static_cast(removalTime); + // Set double-sided + componentObject->bBackfaceCulled = true; + componentObject->uiObjectRemovalTime = pGame->GetSystemTime() + static_cast(removalTime); return true; } diff --git a/Client/game_sa/CVehicleSA.h b/Client/game_sa/CVehicleSA.h index 382a071ac1..9674a165cd 100644 --- a/Client/game_sa/CVehicleSA.h +++ b/Client/game_sa/CVehicleSA.h @@ -106,8 +106,6 @@ struct RwTexture; #define OFFSET_CBike_Nodes 0x5A0 #define OFFSET_CBoat_Nodes 0x5B0 -#define VAR_CTimer_snTimeInMilliseconds 0xB7CB84 - struct SRailNodeSA { short sX; // x coordinate times 8 From 3333a115f1a14f00378161681aeba609b4e993c0 Mon Sep 17 00:00:00 2001 From: FileEX Date: Sun, 13 Oct 2024 12:46:02 +0200 Subject: [PATCH 22/40] Fix missing states in getPedControlState (#3785) --- Client/mods/deathmatch/logic/CClientPad.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Client/mods/deathmatch/logic/CClientPad.cpp b/Client/mods/deathmatch/logic/CClientPad.cpp index f8c802ccbb..2f68b90baf 100644 --- a/Client/mods/deathmatch/logic/CClientPad.cpp +++ b/Client/mods/deathmatch/logic/CClientPad.cpp @@ -336,11 +336,9 @@ bool CClientPad::GetControlState(const char* szName, CControllerState& State, bo return State.LeftShoulder2 == 255; break; // zoom out case 9: - return false; - break; // enter_exit + return State.ButtonTriangle == 255; // enter_exit case 10: - return false; - break; // change_cam + return State.Select == 255; // change_cam case 11: return State.ButtonSquare == 255; break; // jump @@ -432,8 +430,7 @@ bool CClientPad::GetControlState(const char* szName, CControllerState& State, bo return State.RightShoulder2 == 255; break; // look right case 33: - return false; - break; // look behind + return State.LeftShoulder2 == 255 && State.RightShoulder2 == 255; // look behind case 34: return false; break; // mouse look From 1fcd732ca9031060602c8e2425e40ce602d35253 Mon Sep 17 00:00:00 2001 From: FileEX Date: Sun, 13 Oct 2024 12:46:30 +0200 Subject: [PATCH 23/40] Fix #3026 Changing vehicle model can cause network trouble (#3784) --- Client/mods/deathmatch/logic/CClientPed.cpp | 4 ++++ Client/mods/deathmatch/logic/CClientVehicle.cpp | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Client/mods/deathmatch/logic/CClientPed.cpp b/Client/mods/deathmatch/logic/CClientPed.cpp index 5716bea120..28f4d4f94a 100644 --- a/Client/mods/deathmatch/logic/CClientPed.cpp +++ b/Client/mods/deathmatch/logic/CClientPed.cpp @@ -1394,6 +1394,10 @@ void CClientPed::WarpIntoVehicle(CClientVehicle* pVehicle, unsigned int uiSeat) } } + // Wrong seat or undefined passengers count? + if ((uiSeat > 0 && uiSeat > pVehicle->m_ucMaxPassengers) || (uiSeat > 0 && pVehicle->m_ucMaxPassengers == 255)) + return; + // Transfer WaitingForGroundToLoad state to vehicle if (m_bIsLocalPlayer) { diff --git a/Client/mods/deathmatch/logic/CClientVehicle.cpp b/Client/mods/deathmatch/logic/CClientVehicle.cpp index a45d850a30..537f9457dd 100644 --- a/Client/mods/deathmatch/logic/CClientVehicle.cpp +++ b/Client/mods/deathmatch/logic/CClientVehicle.cpp @@ -2656,7 +2656,12 @@ void CClientVehicle::Create() { if (m_pPassengers[i]) { - m_pPassengers[i]->WarpIntoVehicle(this, i + 1); + // Undefined passengers count? + if (m_ucMaxPassengers != 255) + m_pPassengers[i]->WarpIntoVehicle(this, i + 1); + else + m_pPassengers[i]->SetWarpInToVehicleRequired(false); + if (m_pPassengers[i]) m_pPassengers[i]->StreamIn(true); } From 7e6b4d02ec113b7ce3a6fd9937a6e8ad0a1ad9cb Mon Sep 17 00:00:00 2001 From: FileEX Date: Sun, 13 Oct 2024 12:50:20 +0200 Subject: [PATCH 24/40] Fix #3635 meta.xml file path patterns don't work on html files (#3780) Add patterns for html --- Server/mods/deathmatch/logic/CResource.cpp | 61 +++++++++++++--------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/Server/mods/deathmatch/logic/CResource.cpp b/Server/mods/deathmatch/logic/CResource.cpp index 3dcf147c39..1c2ebe3ea8 100644 --- a/Server/mods/deathmatch/logic/CResource.cpp +++ b/Server/mods/deathmatch/logic/CResource.cpp @@ -1465,44 +1465,55 @@ bool CResource::ReadIncludedHTML(CXMLNode* pRoot) if (!strFilename.empty()) { - std::string strFullFilename; ReplaceSlashes(strFilename); - if (IsFilenameUsed(strFilename, false)) + if (!IsValidFilePath(strFilename.c_str())) { - CLogger::LogPrintf("WARNING: Duplicate html file in resource '%s': '%s'\n", m_strResourceName.c_str(), strFilename.c_str()); + m_strFailureReason = SString("Couldn't find html %s for resource %s\n", strFilename.c_str(), m_strResourceName.c_str()); + CLogger::ErrorPrintf(m_strFailureReason); + return false; } - // Try to find the file - if (IsValidFilePath(strFilename.c_str()) && GetFilePath(strFilename.c_str(), strFullFilename)) + std::vector vecFiles = GetFilePaths(strFilename.c_str()); + if (vecFiles.empty()) { - // This one is supposed to be default, but there's already a default page - if (bFoundDefault && bIsDefault) + if (glob::has_magic(strFilename)) { - CLogger::LogPrintf("Only one html item can be default per resource, ignoring %s in %s\n", strFilename.c_str(), - m_strResourceName.c_str()); - bIsDefault = false; + m_ResourceFilesCountPerDir[strFilename] = vecFiles.size(); + continue; } - // If this is supposed to be default, we've now found our default page - if (bIsDefault) - bFoundDefault = true; - - // Create a new resource HTML file and add it to the list - auto pResourceFile = new CResourceHTMLItem(this, strFilename.c_str(), strFullFilename.c_str(), &Attributes, bIsDefault, bIsRaw, - bIsRestricted, m_bOOPEnabledInMetaXml); - m_ResourceFiles.push_back(pResourceFile); - - // This is the first HTML file? Remember it - if (!pFirstHTML) - pFirstHTML = pResourceFile; - } - else - { m_strFailureReason = SString("Couldn't find html %s for resource %s\n", strFilename.c_str(), m_strResourceName.c_str()); CLogger::ErrorPrintf(m_strFailureReason); return false; } + + for (const std::string& strFilePath : vecFiles) + { + std::string strFullFilename; + + if (GetFilePath(strFilePath.c_str(), strFullFilename)) + { + // This one is supposed to be default, but there's already a default page + if (bFoundDefault && bIsDefault) + { + CLogger::LogPrintf("Only one html item can be default per resource, ignoring %s in %s\n", strFilename.c_str(), m_strResourceName.c_str()); + bIsDefault = false; + } + + // If this is supposed to be default, we've now found our default page + if (bIsDefault) + bFoundDefault = true; + + // Create a new resource HTML file and add it to the list + auto pResourceFile = new CResourceHTMLItem(this, strFilename.c_str(), strFullFilename.c_str(), &Attributes, bIsDefault, bIsRaw, bIsRestricted, m_bOOPEnabledInMetaXml); + m_ResourceFiles.push_back(pResourceFile); + + // This is the first HTML file? Remember it + if (!pFirstHTML) + pFirstHTML = pResourceFile; + } + } } else { From 889567a7a0ecb8a8b8d938826d2395ef9f43a76b Mon Sep 17 00:00:00 2001 From: Fernando Rocha <34967844+Fernando-A-Rocha@users.noreply.github.com> Date: Tue, 15 Oct 2024 01:43:21 +0100 Subject: [PATCH 25/40] Add "includeCustom" argument for getValidPedModels clientside (#3796) --- .../logic/lua/CLuaFunctionDefs.Util.cpp | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp index 641a76b04b..978fb139e8 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Util.cpp @@ -12,27 +12,40 @@ int CLuaFunctionDefs::GetValidPedModels(lua_State* luaVM) { - int iIndex = 0; + bool includeCustom; + CScriptArgReader argStream(luaVM); + argStream.ReadBool(includeCustom, true); + + auto* modelManager = g_pClientGame->GetManager()->GetModelManager(); + + std::size_t index = 0; lua_newtable(luaVM); - // Gather GTASA default skins - for (int i = 0; i <= 312; i++) + // Gather default and possibly custom GTASA ped model IDs + for (std::size_t i = 0; i <= 312; i++) { if (CClientPlayerManager::IsValidModel(i)) { - lua_pushnumber(luaVM, ++iIndex); + // Skip custom skins if not requested + if (!includeCustom && modelManager->FindModelByID(i)) + continue; + + lua_pushnumber(luaVM, ++index); lua_pushnumber(luaVM, i); lua_settable(luaVM, -3); } } - // Gather our custom skin model IDs allocated with engineRequestModel - // (there might be some < 313 as well, and since we don't want duplicates, we start at 313, others are already included by the loop above) - for (const auto& model : m_pManager->GetModelManager()->GetModelsByType(eClientModelType::PED, 313)) + if (includeCustom) { - lua_pushnumber(luaVM, ++iIndex); - lua_pushnumber(luaVM, model->GetModelID()); - lua_settable(luaVM, -3); + // Gather the rest of custom skin model IDs allocated with engineRequestModel + // (there are usually some < 313 as well, and since we don't want duplicates, we start at 313, others are already included by the loop above) + for (const auto& model : m_pManager->GetModelManager()->GetModelsByType(eClientModelType::PED, 313)) + { + lua_pushnumber(luaVM, ++index); + lua_pushnumber(luaVM, model->GetModelID()); + lua_settable(luaVM, -3); + } } return 1; From aa0591c6f7b529a27b4ed8667e1dc70e68bd9386 Mon Sep 17 00:00:00 2001 From: Tracer <43095317+TracerDS@users.noreply.github.com> Date: Tue, 15 Oct 2024 02:48:40 +0200 Subject: [PATCH 26/40] Add animation related functions (#3734) * Add `getPedAnimationProgress` & `getPedAnimationSpeed` functions --- Client/game_sa/CAnimBlendAssociationSA.cpp | 5 + Client/game_sa/CAnimBlendAssociationSA.h | 6 +- Client/game_sa/CAnimBlendHierarchySA.h | 1 + Client/game_sa/TaskBasicSA.cpp | 21 ++ Client/game_sa/TaskBasicSA.h | 6 + Client/game_sa/TaskSA.h | 3 +- Client/mods/deathmatch/logic/CClientPed.cpp | 22 --- Client/mods/deathmatch/logic/CClientPed.h | 1 - .../logic/CStaticFunctionDefinitions.cpp | 2 +- .../logic/CStaticFunctionDefinitions.h | 6 +- .../deathmatch/logic/luadefs/CLuaPedDefs.cpp | 182 ++++++++++++------ .../deathmatch/logic/luadefs/CLuaPedDefs.h | 3 + Client/sdk/game/CAnimBlendAssociation.h | 4 +- Client/sdk/game/CAnimBlendHierarchy.h | 1 + Client/sdk/game/Task.h | 3 +- Client/sdk/game/TaskBasic.h | 3 +- 16 files changed, 181 insertions(+), 88 deletions(-) diff --git a/Client/game_sa/CAnimBlendAssociationSA.cpp b/Client/game_sa/CAnimBlendAssociationSA.cpp index 5496d2ebff..3f9a3ac94f 100644 --- a/Client/game_sa/CAnimBlendAssociationSA.cpp +++ b/Client/game_sa/CAnimBlendAssociationSA.cpp @@ -113,6 +113,11 @@ std::unique_ptr CAnimBlendAssociationSA::GetAnimHierarchy() return pGame->GetAnimManager()->GetAnimBlendHierarchy(m_pInterface->pAnimHierarchy); } +const std::unique_ptr CAnimBlendAssociationSA::GetAnimHierarchy() const noexcept +{ + return pGame->GetAnimManager()->GetAnimBlendHierarchy(m_pInterface->pAnimHierarchy); +} + void CAnimBlendAssociationSA::SetCurrentProgress(float fProgress) { float fTime = m_pInterface->pAnimHierarchy->fTotalTime * fProgress; diff --git a/Client/game_sa/CAnimBlendAssociationSA.h b/Client/game_sa/CAnimBlendAssociationSA.h index 13b37e86f2..715ee41c28 100644 --- a/Client/game_sa/CAnimBlendAssociationSA.h +++ b/Client/game_sa/CAnimBlendAssociationSA.h @@ -16,6 +16,7 @@ #include #include #include +#include #include "CAnimBlendNodeSA.h" class CAnimBlendAssocGroupSA; @@ -159,12 +160,15 @@ class CAnimBlendAssociationSA : public CAnimBlendAssociation eAnimGroup GetAnimGroup() { return static_cast(m_pInterface->sAnimGroup); } eAnimID GetAnimID() { return static_cast(m_pInterface->sAnimID); } std::unique_ptr GetAnimHierarchy(); + const std::unique_ptr GetAnimHierarchy() const noexcept; float GetBlendAmount() { return m_pInterface->fBlendAmount; } void SetBlendAmount(float fAmount) { m_pInterface->fBlendAmount = fAmount; } void SetCurrentProgress(float fProgress); - float GetCurrentSpeed() { return m_pInterface->fSpeed; } + float GetCurrentProgress() const noexcept { return m_pInterface->fCurrentTime; } + float GetCurrentSpeed() const noexcept { return m_pInterface->fSpeed; } void SetCurrentSpeed(float fSpeed) { m_pInterface->fSpeed = fSpeed; } + float GetLength() const noexcept { return GetAnimHierarchy()->GetTotalTime(); } void SetAnimID(short sAnimID) { m_pInterface->sAnimID = sAnimID; } void SetAnimGroup(short sAnimGroup) { m_pInterface->sAnimGroup = sAnimGroup; } void SetFlags(short sFlags) { m_pInterface->m_nFlags = sFlags; } diff --git a/Client/game_sa/CAnimBlendHierarchySA.h b/Client/game_sa/CAnimBlendHierarchySA.h index 585a0bb1fd..2adf4c070f 100644 --- a/Client/game_sa/CAnimBlendHierarchySA.h +++ b/Client/game_sa/CAnimBlendHierarchySA.h @@ -53,6 +53,7 @@ class CAnimBlendHierarchySA : public CAnimBlendHierarchy void RemoveFromUncompressedCache(); void RemoveQuaternionFlips(); void CalculateTotalTime(); + float GetTotalTime() const noexcept { return m_pInterface->fTotalTime; } CAnimBlendSequenceSAInterface* GetSequence(DWORD dwIndex); CAnimBlendSequenceSAInterface* GetSequences() { return m_pInterface->pSequences; } unsigned short GetNumSequences() { return m_pInterface->usNumSequences; } diff --git a/Client/game_sa/TaskBasicSA.cpp b/Client/game_sa/TaskBasicSA.cpp index 9ef743a9b8..18ca6e38a4 100644 --- a/Client/game_sa/TaskBasicSA.cpp +++ b/Client/game_sa/TaskBasicSA.cpp @@ -13,6 +13,27 @@ #include "TaskBasicSA.h" #include "CPedSA.h" + +CTaskSimpleRunNamedAnimSAInterface* CTaskSimpleRunNamedAnimSA::GetAnimationInterface() noexcept +{ + return reinterpret_cast(this->GetInterface()); +} + +const CTaskSimpleRunNamedAnimSAInterface* CTaskSimpleRunNamedAnimSA::GetAnimationInterface() const noexcept +{ + return reinterpret_cast(this->GetInterface()); +} + +const char* CTaskSimpleRunNamedAnimSA::GetAnimName() const noexcept +{ + return GetAnimationInterface()->m_animName; +} + +const char* CTaskSimpleRunNamedAnimSA::GetGroupName() const noexcept +{ + return GetAnimationInterface()->m_animGroupName; +} + CTaskComplexUseMobilePhoneSA::CTaskComplexUseMobilePhoneSA(const int iDuration) { CreateTaskInterface(sizeof(CTaskComplexUseMobilePhoneSAInterface)); diff --git a/Client/game_sa/TaskBasicSA.h b/Client/game_sa/TaskBasicSA.h index 2f8f18dc70..914d5d7181 100644 --- a/Client/game_sa/TaskBasicSA.h +++ b/Client/game_sa/TaskBasicSA.h @@ -113,6 +113,12 @@ class CTaskSimpleRunNamedAnimSA : public virtual CTaskSimpleAnimSA, public virtu CTaskSimpleRunNamedAnimSA(const char* pAnimName, const char* pAnimGroupName, const int flags, const float fBlendDelta, const int iTime = -1, const bool bDontInterrupt = false, const bool bRunInSequence = false, const bool bOffsetPed = false, const bool bHoldLastFrame = false); + + CTaskSimpleRunNamedAnimSAInterface* GetAnimationInterface() noexcept; + const CTaskSimpleRunNamedAnimSAInterface* GetAnimationInterface() const noexcept; + + const char* GetAnimName() const noexcept override; + const char* GetGroupName() const noexcept override; }; class CTaskComplexDieSAInterface : public CTaskComplexSAInterface diff --git a/Client/game_sa/TaskSA.h b/Client/game_sa/TaskSA.h index 1022b070b0..c47116044b 100644 --- a/Client/game_sa/TaskSA.h +++ b/Client/game_sa/TaskSA.h @@ -85,7 +85,8 @@ class CTaskSA : public virtual CTask // our function(s) void SetInterface(CTaskSAInterface* pInterface) { TaskInterface = pInterface; }; - CTaskSAInterface* GetInterface() { return TaskInterface; } + CTaskSAInterface* GetInterface() noexcept { return TaskInterface; } + const CTaskSAInterface* GetInterface() const noexcept { return TaskInterface; } bool IsValid() { return GetInterface() != NULL; } void CreateTaskInterface(size_t nSize); diff --git a/Client/mods/deathmatch/logic/CClientPed.cpp b/Client/mods/deathmatch/logic/CClientPed.cpp index 28f4d4f94a..f4c9ba5ee6 100644 --- a/Client/mods/deathmatch/logic/CClientPed.cpp +++ b/Client/mods/deathmatch/logic/CClientPed.cpp @@ -5695,28 +5695,6 @@ bool CClientPed::IsRunningAnimation() return (m_AnimationCache.bLoop && m_pAnimationBlock); } -void CClientPed::RunAnimation(AssocGroupId animGroup, AnimationId animID) -{ - KillAnimation(); - - if (m_pPlayerPed) - { - // Remove jetpack now so it doesn't stay on (#9522#c25612) - if (HasJetPack()) - SetHasJetPack(false); - - // Let's not choke them any longer - if (IsChoking()) - SetChoking(false); - - CTask* pTask = g_pGame->GetTasks()->CreateTaskSimpleRunAnim(animGroup, animID, 4.0f, TASK_SIMPLE_ANIM, "TASK_SIMPLE_ANIM"); - if (pTask) - { - pTask->SetAsPedTask(m_pPlayerPed, TASK_PRIORITY_PRIMARY); - } - } -} - void CClientPed::RunNamedAnimation(std::unique_ptr& pBlock, const char* szAnimName, int iTime, int iBlend, bool bLoop, bool bUpdatePosition, bool bInterruptable, bool bFreezeLastFrame, bool bRunInSequence, bool bOffsetPed, bool bHoldLastFrame) { diff --git a/Client/mods/deathmatch/logic/CClientPed.h b/Client/mods/deathmatch/logic/CClientPed.h index 688dba501f..6998856774 100644 --- a/Client/mods/deathmatch/logic/CClientPed.h +++ b/Client/mods/deathmatch/logic/CClientPed.h @@ -460,7 +460,6 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule bool GetRunningAnimationName(SString& strBlockName, SString& strAnimName); bool IsRunningAnimation(); - void RunAnimation(AssocGroupId animGroup, AnimationId animID); void RunNamedAnimation(std::unique_ptr& pBlock, const char* szAnimName, int iTime = -1, int iBlend = 250, bool bLoop = true, bool bUpdatePosition = true, bool bInterruptable = false, bool bFreezeLastFrame = true, bool bRunInSequence = false, bool bOffsetPed = false, bool bHoldLastFrame = false); diff --git a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index da92891265..5efe5b417e 100644 --- a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include using std::list; diff --git a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.h b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.h index 2d1ce8c88a..188e249f2d 100644 --- a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.h +++ b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.h @@ -167,8 +167,10 @@ class CStaticFunctionDefinitions static bool SetPedCanBeKnockedOffBike(CClientEntity& Entity, bool bCanBeKnockedOffBike); static bool SetPedAnimation(CClientEntity& Entity, const SString& strBlockName, const char* szAnimName, int iTime, int iBlend, bool bLoop, bool bUpdatePosition, bool bInterruptable, bool bFreezeLastFrame); - static bool SetPedAnimationProgress(CClientEntity& Entity, const SString& strAnimName, float fProgress); - static bool SetPedAnimationSpeed(CClientEntity& Entity, const SString& strAnimName, float fSpeed); + + static bool SetPedAnimationProgress(CClientEntity& Entity, const SString& strAnimName, float fProgress); + static bool SetPedAnimationSpeed(CClientEntity& Entity, const SString& strAnimName, float fSpeed); + static bool SetPedMoveAnim(CClientEntity& Entity, unsigned int iMoveAnim); static bool AddPedClothes(CClientEntity& Entity, const char* szTexture, const char* szModel, unsigned char ucType); static bool RemovePedClothes(CClientEntity& Entity, unsigned char ucType); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaPedDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaPedDefs.cpp index 2c8741f4d7..f38096dcee 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaPedDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaPedDefs.cpp @@ -12,7 +12,9 @@ #include "StdInc.h" #include #include "lua/CLuaFunctionParser.h" -#include "CMatrix_Pad.h" +#include +#include +#include #define MIN_CLIENT_REQ_REMOVEPEDFROMVEHICLE_CLIENTSIDE "1.3.0-9.04482" #define MIN_CLIENT_REQ_WARPPEDINTOVEHICLE_CLIENTSIDE "1.3.0-9.04482" @@ -23,70 +25,26 @@ void CLuaPedDefs::LoadFunctions() {"createPed", CreatePed}, {"detonateSatchels", DetonateSatchels}, {"killPed", KillPed}, - {"resetPedVoice", ArgumentParser}, - {"getPedVoice", GetPedVoice}, + {"updateElementRpHAnim", ArgumentParser}, + {"addPedClothes", AddPedClothes}, + {"removePedClothes", RemovePedClothes}, + {"warpPedIntoVehicle", WarpPedIntoVehicle}, + {"removePedFromVehicle", RemovePedFromVehicle}, + {"givePedWeapon", GivePedWeapon}, + {"setPedVoice", SetPedVoice}, - {"getPedRotation", GetPedRotation}, - {"canPedBeKnockedOffBike", CanPedBeKnockedOffBike}, - {"getPedContactElement", GetPedContactElement}, - {"isPedInVehicle", IsPedInVehicle}, - {"doesPedHaveJetPack", DoesPedHaveJetPack}, - {"isPedWearingJetpack", DoesPedHaveJetPack}, // introduced in 1.5.5-9.13846 - {"isPedOnGround", IsPedOnGround}, - {"getPedTask", GetPedTask}, - {"getPedSimplestTask", GetPedSimplestTask}, - {"isPedDoingTask", IsPedDoingTask}, - {"getPedTarget", GetPedTarget}, - {"getPedTargetStart", GetPedTargetStart}, - {"getPedTargetEnd", GetPedTargetEnd}, - {"getPedTargetCollision", GetPedTargetCollision}, - {"getPedWeaponSlot", GetPedWeaponSlot}, - {"getPedWeapon", GetPedWeapon}, - {"getPedAmmoInClip", GetPedAmmoInClip}, - {"getPedTotalAmmo", GetPedTotalAmmo}, - {"getPedOccupiedVehicle", GetPedOccupiedVehicle}, - {"getPedOccupiedVehicleSeat", GetPedOccupiedVehicleSeat}, - {"getPedArmor", GetPedArmor}, - {"isPedChoking", IsPedChoking}, - {"isPedDucked", IsPedDucked}, - {"getPedStat", GetPedStat}, - {"getPedBonePosition", GetPedBonePosition}, {"setElementBonePosition", ArgumentParser}, {"setElementBoneRotation", ArgumentParser}, {"setElementBoneQuaternion", ArgumentParser}, - {"getElementBonePosition", ArgumentParser}, - {"getElementBoneRotation", ArgumentParser}, - {"getElementBoneQuaternion", ArgumentParser}, {"setElementBoneMatrix", ArgumentParser}, - {"getElementBoneMatrix", ArgumentParser}, - {"updateElementRpHAnim", ArgumentParser}, - {"getPedClothes", GetPedClothes}, - {"getPedControlState", GetPedControlState}, - {"getPedAnalogControlState", GetPedAnalogControlState}, - {"isPedDead", IsPedDead}, - - {"isPedDoingGangDriveby", IsPedDoingGangDriveby}, - {"getPedFightingStyle", GetPedFightingStyle}, - {"getPedAnimation", GetPedAnimation}, - {"getPedMoveState", GetPedMoveState}, - {"getPedWalkingStyle", GetPedMoveAnim}, - {"isPedHeadless", IsPedHeadless}, - {"isPedFrozen", IsPedFrozen}, - {"isPedFootBloodEnabled", IsPedFootBloodEnabled}, - {"getPedCameraRotation", GetPedCameraRotation}, - {"getPedOxygenLevel", GetPedOxygenLevel}, - {"isPedBleeding", ArgumentParser}, - - {"setPedWeaponSlot", SetPedWeaponSlot}, {"setPedRotation", SetPedRotation}, + {"setPedWeaponSlot", SetPedWeaponSlot}, {"setPedCanBeKnockedOffBike", SetPedCanBeKnockedOffBike}, {"setPedAnimation", SetPedAnimation}, {"setPedAnimationProgress", SetPedAnimationProgress}, {"setPedAnimationSpeed", SetPedAnimationSpeed}, {"setPedWalkingStyle", SetPedMoveAnim}, - {"addPedClothes", AddPedClothes}, - {"removePedClothes", RemovePedClothes}, {"setPedControlState", SetPedControlState}, {"setPedAnalogControlState", SetPedAnalogControlState}, {"setPedDoingGangDriveby", SetPedDoingGangDriveby}, @@ -98,15 +56,65 @@ void CLuaPedDefs::LoadFunctions() {"setPedCameraRotation", SetPedCameraRotation}, {"setPedAimTarget", SetPedAimTarget}, {"setPedStat", SetPedStat}, - {"warpPedIntoVehicle", WarpPedIntoVehicle}, - {"removePedFromVehicle", RemovePedFromVehicle}, {"setPedOxygenLevel", SetPedOxygenLevel}, {"setPedArmor", ArgumentParser}, - {"givePedWeapon", GivePedWeapon}, - {"isPedReloadingWeapon", IsPedReloadingWeapon}, {"setPedEnterVehicle", ArgumentParser}, {"setPedExitVehicle", ArgumentParser}, {"setPedBleeding", ArgumentParser}, + + {"getPedVoice", GetPedVoice}, + {"getElementBonePosition", ArgumentParser}, + {"getElementBoneRotation", ArgumentParser}, + {"getElementBoneQuaternion", ArgumentParser}, + {"getElementBoneMatrix", ArgumentParser}, + {"getPedRotation", GetPedRotation}, + {"getPedWeaponSlot", GetPedWeaponSlot}, + {"canPedBeKnockedOffBike", CanPedBeKnockedOffBike}, + {"getPedAnimation", GetPedAnimation}, + {"getPedAnimationProgress", ArgumentParser}, + {"getPedAnimationSpeed", ArgumentParser}, + {"getPedAnimationLength", ArgumentParser}, + {"getPedWalkingStyle", GetPedMoveAnim}, + {"getPedControlState", GetPedControlState}, + {"getPedAnalogControlState", GetPedAnalogControlState}, + {"isPedDoingGangDriveby", IsPedDoingGangDriveby}, + {"getPedFightingStyle", GetPedFightingStyle}, + + {"isPedHeadless", IsPedHeadless}, + {"isPedFrozen", IsPedFrozen}, + {"isPedFootBloodEnabled", IsPedFootBloodEnabled}, + {"getPedCameraRotation", GetPedCameraRotation}, + + {"getPedStat", GetPedStat}, + {"getPedOxygenLevel", GetPedOxygenLevel}, + {"getPedArmor", GetPedArmor}, + {"isPedBleeding", ArgumentParser}, + + {"getPedContactElement", GetPedContactElement}, + {"getPedTask", GetPedTask}, + {"getPedSimplestTask", GetPedSimplestTask}, + {"getPedTarget", GetPedTarget}, + {"getPedTargetStart", GetPedTargetStart}, + {"getPedTargetEnd", GetPedTargetEnd}, + {"getPedTargetCollision", GetPedTargetCollision}, + {"getPedWeapon", GetPedWeapon}, + {"getPedAmmoInClip", GetPedAmmoInClip}, + {"getPedTotalAmmo", GetPedTotalAmmo}, + {"getPedOccupiedVehicle", GetPedOccupiedVehicle}, + {"getPedOccupiedVehicleSeat", GetPedOccupiedVehicleSeat}, + {"getPedBonePosition", GetPedBonePosition}, + {"getPedClothes", GetPedClothes}, + {"getPedMoveState", GetPedMoveState}, + + {"doesPedHaveJetPack", DoesPedHaveJetPack}, + {"isPedInVehicle", IsPedInVehicle}, + {"isPedWearingJetpack", DoesPedHaveJetPack}, + {"isPedOnGround", IsPedOnGround}, + {"isPedDoingTask", IsPedDoingTask}, + {"isPedChoking", IsPedChoking}, + {"isPedDucked", IsPedDucked}, + {"isPedDead", IsPedDead}, + {"isPedReloadingWeapon", IsPedReloadingWeapon}, }; // Add functions @@ -2279,6 +2287,66 @@ int CLuaPedDefs::SetPedAnimationProgress(lua_State* luaVM) return 1; } +float CLuaPedDefs::GetPedAnimationProgress(CClientPed* ped) +{ + CTask* currentTask = ped->GetTaskManager()->GetActiveTask(); + std::int32_t type = currentTask->GetTaskType(); + + // check if animation (task type is 401) + if (type != 401) + return -1.0f; + + auto* animation = dynamic_cast(currentTask); + if (!animation) + return -1.0f; + + auto animAssociation = g_pGame->GetAnimManager()->RpAnimBlendClumpGetAssociation(ped->GetClump(), animation->GetAnimName()); + if (!animAssociation) + return -1.0f; + + return animAssociation->GetCurrentProgress() / animAssociation->GetLength(); +} + +float CLuaPedDefs::GetPedAnimationSpeed(CClientPed* ped) +{ + CTask* currentTask = ped->GetTaskManager()->GetActiveTask(); + std::int32_t type = currentTask->GetTaskType(); + + // check if animation (task type is 401) + if (type != 401) + return -1.0f; + + auto* animation = dynamic_cast(currentTask); + if (!animation) + return -1.0f; + + auto animAssociation = g_pGame->GetAnimManager()->RpAnimBlendClumpGetAssociation(ped->GetClump(), animation->GetAnimName()); + if (!animAssociation) + return -1.0f; + + return animAssociation->GetCurrentSpeed(); +} + +float CLuaPedDefs::GetPedAnimationLength(CClientPed* ped) +{ + CTask* currentTask = ped->GetTaskManager()->GetActiveTask(); + std::int32_t type = currentTask->GetTaskType(); + + // check if animation (task type is 401) + if (type != 401) + return -1.0f; + + auto* animation = dynamic_cast(currentTask); + if (!animation) + return -1.0f; + + auto animAssociation = g_pGame->GetAnimManager()->RpAnimBlendClumpGetAssociation(ped->GetClump(), animation->GetAnimName()); + if (!animAssociation) + return -1.0f; + + return animAssociation->GetLength(); +} + int CLuaPedDefs::SetPedAnimationSpeed(lua_State* luaVM) { CClientEntity* pEntity; diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaPedDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaPedDefs.h index 126c463af7..d97a484d8e 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaPedDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaPedDefs.h @@ -71,6 +71,9 @@ class CLuaPedDefs : public CLuaDefs LUA_DECLARE(IsPedDoingGangDriveby); LUA_DECLARE(GetPedFightingStyle); LUA_DECLARE(GetPedAnimation); + static float GetPedAnimationProgress(CClientPed* ped); + static float GetPedAnimationSpeed(CClientPed* ped); + static float GetPedAnimationLength(CClientPed* ped); LUA_DECLARE(GetPedMoveState); LUA_DECLARE(GetPedMoveAnim); LUA_DECLARE(IsPedHeadless); diff --git a/Client/sdk/game/CAnimBlendAssociation.h b/Client/sdk/game/CAnimBlendAssociation.h index 8d3501027e..f99b8bc982 100644 --- a/Client/sdk/game/CAnimBlendAssociation.h +++ b/Client/sdk/game/CAnimBlendAssociation.h @@ -40,8 +40,10 @@ class CAnimBlendAssociation virtual float GetBlendAmount() = 0; virtual void SetBlendAmount(float fAmount) = 0; virtual void SetCurrentProgress(float fProgress) = 0; - virtual float GetCurrentSpeed() = 0; + virtual float GetCurrentProgress() const noexcept = 0; virtual void SetCurrentSpeed(float fSpeed) = 0; + virtual float GetCurrentSpeed() const noexcept = 0; + virtual float GetLength() const noexcept = 0; virtual void SetAnimID(short sAnimID) = 0; virtual void SetAnimGroup(short sAnimGroup) = 0; virtual void SetFlags(short sFlags) = 0; diff --git a/Client/sdk/game/CAnimBlendHierarchy.h b/Client/sdk/game/CAnimBlendHierarchy.h index 7780250968..42cd336554 100644 --- a/Client/sdk/game/CAnimBlendHierarchy.h +++ b/Client/sdk/game/CAnimBlendHierarchy.h @@ -27,6 +27,7 @@ class CAnimBlendHierarchy virtual void RemoveFromUncompressedCache() = 0; virtual void RemoveQuaternionFlips() = 0; virtual void CalculateTotalTime() = 0; + virtual float GetTotalTime() const noexcept = 0; virtual CAnimBlendSequenceSAInterface* GetSequence(DWORD dwIndex) = 0; virtual CAnimBlendSequenceSAInterface* GetSequences() = 0; virtual unsigned short GetNumSequences() = 0; diff --git a/Client/sdk/game/Task.h b/Client/sdk/game/Task.h index a991ad9c98..98cd45b382 100644 --- a/Client/sdk/game/Task.h +++ b/Client/sdk/game/Task.h @@ -33,7 +33,8 @@ class CTask virtual void StopTimer(const CEvent* pEvent) = 0; virtual bool MakeAbortable(CPed* pPed, const int iPriority, const CEvent* pEvent) = 0; virtual const char* GetTaskName() = 0; - virtual class CTaskSAInterface* GetInterface() = 0; + virtual class CTaskSAInterface* GetInterface() noexcept = 0; + virtual const class CTaskSAInterface* GetInterface() const noexcept = 0; virtual bool IsValid() = 0; virtual void SetAsPedTask(CPed* pPed, const int iTaskPriority, const bool bForceNewTask = false) = 0; virtual void SetAsSecondaryPedTask(CPed* pPed, const int iType) = 0; diff --git a/Client/sdk/game/TaskBasic.h b/Client/sdk/game/TaskBasic.h index 29d1db780d..8227dcf1f9 100644 --- a/Client/sdk/game/TaskBasic.h +++ b/Client/sdk/game/TaskBasic.h @@ -34,7 +34,8 @@ class CTaskSimpleRunAnim : public virtual CTaskSimpleAnim class CTaskSimpleRunNamedAnim : public virtual CTaskSimpleAnim { public: - virtual ~CTaskSimpleRunNamedAnim(){}; + virtual const char* GetAnimName() const noexcept = 0; + virtual const char* GetGroupName() const noexcept = 0; }; class CTaskComplexDie : public virtual CTaskComplex From 733683d70dc037fdcbb256fb17d86e93bfedd239 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Tue, 15 Oct 2024 04:00:32 +0300 Subject: [PATCH 27/40] Extract TXD pool class (#3684) --- Client/game_sa/CModelInfoSA.cpp | 2 +- Client/game_sa/CPoolsSA.cpp | 41 ------------- Client/game_sa/CPoolsSA.h | 11 +--- Client/game_sa/CTxdPoolSA.cpp | 57 +++++++++++++++++++ Client/game_sa/CTxdPoolSA.h | 31 ++++++++++ Client/mods/deathmatch/logic/CClientModel.cpp | 4 +- .../deathmatch/logic/CClientModelManager.cpp | 2 +- Client/sdk/game/CPools.h | 10 +--- Client/sdk/game/CTxdPool.h | 22 +++++++ 9 files changed, 120 insertions(+), 60 deletions(-) create mode 100644 Client/game_sa/CTxdPoolSA.cpp create mode 100644 Client/game_sa/CTxdPoolSA.h create mode 100644 Client/sdk/game/CTxdPool.h diff --git a/Client/game_sa/CModelInfoSA.cpp b/Client/game_sa/CModelInfoSA.cpp index 2db97a5245..4bf3146d7f 100644 --- a/Client/game_sa/CModelInfoSA.cpp +++ b/Client/game_sa/CModelInfoSA.cpp @@ -743,7 +743,7 @@ CBoundingBox* CModelInfoSA::GetBoundingBox() bool CModelInfoSA::IsValid() { if (m_dwModelID >= MODELINFO_DFF_MAX && m_dwModelID < MODELINFO_TXD_MAX) - return !pGame->GetPools()->IsFreeTextureDictonarySlot(m_dwModelID - MODELINFO_DFF_MAX); + return !pGame->GetPools()->GetTxdPool().IsFreeTextureDictonarySlot(m_dwModelID - MODELINFO_DFF_MAX); if (m_dwModelID >= pGame->GetBaseIDforTXD() && m_dwModelID < pGame->GetCountOfAllFileIDs()) return true; diff --git a/Client/game_sa/CPoolsSA.cpp b/Client/game_sa/CPoolsSA.cpp index 42c534dcaa..1aaac0b40d 100644 --- a/Client/game_sa/CPoolsSA.cpp +++ b/Client/game_sa/CPoolsSA.cpp @@ -24,9 +24,6 @@ #include "CTrailerSA.h" #include "CTrainSA.h" #include "CWorldSA.h" -#include "CKeyGenSA.h" -#include "CFileLoaderSA.h" -#include "CPtrNodeSingleListSA.h" extern CGameSA* pGame; @@ -35,7 +32,6 @@ CPoolsSA::CPoolsSA() m_ppPedPoolInterface = (CPoolSAInterface**)0xB74490; m_ppObjectPoolInterface = (CPoolSAInterface**)0xB7449C; m_ppVehiclePoolInterface = (CPoolSAInterface**)0xB74494; - m_ppTxdPoolInterface = (CPoolSAInterface**)0xC8800C; m_bGetVehicleEnabled = true; } @@ -1107,40 +1103,3 @@ void CPoolsSA::InvalidateLocalPlayerClientEntity() { m_pedPool.arrayOfClientEntities[0] = {m_pedPool.arrayOfClientEntities[0].pEntity, nullptr}; } - -unsigned int CPoolsSA::AllocateTextureDictonarySlot(uint uiSlotId, std::string& strTxdName) -{ - CTextureDictonarySAInterface* pTxd = (*m_ppTxdPoolInterface)->AllocateAt(uiSlotId); - if (!pTxd) - return -1; - - strTxdName.resize(24); - - pTxd->usUsagesCount = 0; - pTxd->hash = pGame->GetKeyGen()->GetUppercaseKey(strTxdName.c_str()); - pTxd->rwTexDictonary = nullptr; - pTxd->usParentIndex = -1; - - return (*m_ppTxdPoolInterface)->GetObjectIndex(pTxd); -} - -void CPoolsSA::RemoveTextureDictonarySlot(uint uiTxdId) -{ - if (!(*m_ppTxdPoolInterface)->IsContains(uiTxdId)) - return; - - typedef uint(__cdecl * Function_TxdReleaseSlot)(uint uiTxdId); - ((Function_TxdReleaseSlot)(0x731E90))(uiTxdId); - - (*m_ppTxdPoolInterface)->Release(uiTxdId); -} - -bool CPoolsSA::IsFreeTextureDictonarySlot(uint uiTxdId) -{ - return (*m_ppTxdPoolInterface)->IsEmpty(uiTxdId); -} - -ushort CPoolsSA::GetFreeTextureDictonarySlot() -{ - return (*m_ppTxdPoolInterface)->GetFreeSlot(); -} diff --git a/Client/game_sa/CPoolsSA.h b/Client/game_sa/CPoolsSA.h index 0e6d3d9634..5718421d6c 100644 --- a/Client/game_sa/CPoolsSA.h +++ b/Client/game_sa/CPoolsSA.h @@ -15,9 +15,9 @@ #include "CVehicleSA.h" #include "CObjectSA.h" #include "CBuildingSA.h" -#include "CTextureDictonarySA.h" #include "CBuildingsPoolSA.h" #include "CDummyPoolSA.h" +#include "CTxdPoolSA.h" #define INVALID_POOL_ARRAY_ID 0xFFFFFFFF @@ -91,14 +91,9 @@ class CPoolsSA : public CPools void ResetPedPoolCount() { m_pedPool.ulCount = 0; } void InvalidateLocalPlayerClientEntity(); - uint AllocateTextureDictonarySlot(uint uiSlotID, std::string& strTxdName); - void RemoveTextureDictonarySlot(uint uiTxdId); - bool IsFreeTextureDictonarySlot(uint uiTxdId); - - ushort GetFreeTextureDictonarySlot(); - CBuildingsPool& GetBuildingsPool() noexcept override { return m_BuildingsPool; }; CDummyPool& GetDummyPool() noexcept { return m_DummyPool; }; + CTxdPool& GetTxdPool() noexcept { return m_TxdPool; }; private: // Pools @@ -109,10 +104,10 @@ class CPoolsSA : public CPools CPoolSAInterface** m_ppPedPoolInterface; CPoolSAInterface** m_ppObjectPoolInterface; CPoolSAInterface** m_ppVehiclePoolInterface; - CPoolSAInterface** m_ppTxdPoolInterface; CBuildingsPoolSA m_BuildingsPool; CDummyPoolSA m_DummyPool; + CTxdPoolSA m_TxdPool; bool m_bGetVehicleEnabled; }; diff --git a/Client/game_sa/CTxdPoolSA.cpp b/Client/game_sa/CTxdPoolSA.cpp new file mode 100644 index 0000000000..248f825836 --- /dev/null +++ b/Client/game_sa/CTxdPoolSA.cpp @@ -0,0 +1,57 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from https://www.multitheftauto.com/ + * + *****************************************************************************/ + +#include "StdInc.h" +#include "CTxdPoolSA.h" +#include "CGameSA.h" +#include "CKeyGenSA.h" + +extern CGameSA* pGame; + +CTxdPoolSA::CTxdPoolSA() +{ + m_ppTxdPoolInterface = (CPoolSAInterface**)0xC8800C; +} + +std::uint32_t CTxdPoolSA::AllocateTextureDictonarySlot(std::uint32_t uiSlotId, std::string& strTxdName) +{ + CTextureDictonarySAInterface* pTxd = (*m_ppTxdPoolInterface)->AllocateAt(uiSlotId); + if (!pTxd) + return -1; + + strTxdName.resize(24); + + pTxd->usUsagesCount = 0; + pTxd->hash = pGame->GetKeyGen()->GetUppercaseKey(strTxdName.c_str()); + pTxd->rwTexDictonary = nullptr; + pTxd->usParentIndex = -1; + + return (*m_ppTxdPoolInterface)->GetObjectIndex(pTxd); +} + +void CTxdPoolSA::RemoveTextureDictonarySlot(std::uint32_t uiTxdId) +{ + if (!(*m_ppTxdPoolInterface)->IsContains(uiTxdId)) + return; + + typedef std::uint32_t(__cdecl * Function_TxdReleaseSlot)(std::uint32_t uiTxdId); + ((Function_TxdReleaseSlot)(0x731E90))(uiTxdId); + + (*m_ppTxdPoolInterface)->Release(uiTxdId); +} + +bool CTxdPoolSA::IsFreeTextureDictonarySlot(std::uint32_t uiTxdId) +{ + return (*m_ppTxdPoolInterface)->IsEmpty(uiTxdId); +} + +std::uint16_t CTxdPoolSA::GetFreeTextureDictonarySlot() +{ + return (*m_ppTxdPoolInterface)->GetFreeSlot(); +} diff --git a/Client/game_sa/CTxdPoolSA.h b/Client/game_sa/CTxdPoolSA.h new file mode 100644 index 0000000000..c1f0ed8ece --- /dev/null +++ b/Client/game_sa/CTxdPoolSA.h @@ -0,0 +1,31 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from https://www.multitheftauto.com/ + * + *****************************************************************************/ + +#pragma once + +#include +#include "CPoolSAInterface.h" +#include "CBuildingSA.h" +#include "CTextureDictonarySA.h" + +class CTxdPoolSA final : public CTxdPool +{ +public: + CTxdPoolSA(); + ~CTxdPoolSA() = default; + + std::uint32_t AllocateTextureDictonarySlot(std::uint32_t uiSlotID, std::string& strTxdName); + void RemoveTextureDictonarySlot(std::uint32_t uiTxdId); + bool IsFreeTextureDictonarySlot(std::uint32_t uiTxdId); + + std::uint16_t GetFreeTextureDictonarySlot(); + +private: + CPoolSAInterface** m_ppTxdPoolInterface; +}; diff --git a/Client/mods/deathmatch/logic/CClientModel.cpp b/Client/mods/deathmatch/logic/CClientModel.cpp index 795bc08579..fd1e6e4ab5 100644 --- a/Client/mods/deathmatch/logic/CClientModel.cpp +++ b/Client/mods/deathmatch/logic/CClientModel.cpp @@ -213,7 +213,7 @@ void CClientModel::RestoreDFF(CModelInfo* pModelInfo) bool CClientModel::AllocateTXD(std::string &strTxdName) { - uint uiSlotID = g_pGame->GetPools()->AllocateTextureDictonarySlot(m_iModelID - MAX_MODEL_DFF_ID, strTxdName); + std::uint32_t uiSlotID = g_pGame->GetPools()->GetTxdPool().AllocateTextureDictonarySlot(m_iModelID - MAX_MODEL_DFF_ID, strTxdName); if (uiSlotID != -1) { m_bAllocatedByUs = true; @@ -234,6 +234,6 @@ void CClientModel::RestoreTXD(CModelInfo* pModelInfo) pModelInfo->SetTextureDictionaryID(0); } - g_pGame->GetPools()->RemoveTextureDictonarySlot(uiTextureDictonarySlotID); + g_pGame->GetPools()->GetTxdPool().RemoveTextureDictonarySlot(uiTextureDictonarySlotID); g_pGame->GetStreaming()->SetStreamingInfo(pModelInfo->GetModel(), 0, 0, 0, -1); } diff --git a/Client/mods/deathmatch/logic/CClientModelManager.cpp b/Client/mods/deathmatch/logic/CClientModelManager.cpp index 36c601b544..9b4ae7cc39 100644 --- a/Client/mods/deathmatch/logic/CClientModelManager.cpp +++ b/Client/mods/deathmatch/logic/CClientModelManager.cpp @@ -76,7 +76,7 @@ int CClientModelManager::GetFirstFreeModelID(void) int CClientModelManager::GetFreeTxdModelID() { - ushort usTxdId = g_pGame->GetPools()->GetFreeTextureDictonarySlot(); + std::uint16_t usTxdId = g_pGame->GetPools()->GetTxdPool().GetFreeTextureDictonarySlot(); if (usTxdId == -1) return INVALID_MODEL_ID; return MAX_MODEL_DFF_ID + usTxdId; diff --git a/Client/sdk/game/CPools.h b/Client/sdk/game/CPools.h index a5250fb657..5b7dd0bd2b 100644 --- a/Client/sdk/game/CPools.h +++ b/Client/sdk/game/CPools.h @@ -14,6 +14,7 @@ #include "Common.h" #include "CBuildingsPool.h" #include "CDummyPool.h" +#include "CTxdPool.h" class CClientEntity; class CEntity; @@ -107,12 +108,7 @@ class CPools virtual void ResetPedPoolCount() = 0; virtual void InvalidateLocalPlayerClientEntity() = 0; - virtual uint AllocateTextureDictonarySlot(uint uiSlotID, std::string& strTxdName) = 0; - virtual void RemoveTextureDictonarySlot(uint uiTxdID) = 0; - virtual bool IsFreeTextureDictonarySlot(uint uiTxdID) = 0; - - virtual ushort GetFreeTextureDictonarySlot() = 0; - virtual CBuildingsPool& GetBuildingsPool() noexcept = 0; - virtual CDummyPool& GetDummyPool() noexcept = 0; + virtual CDummyPool& GetDummyPool() noexcept = 0; + virtual CTxdPool& GetTxdPool() noexcept = 0; }; diff --git a/Client/sdk/game/CTxdPool.h b/Client/sdk/game/CTxdPool.h new file mode 100644 index 0000000000..1e4ff3493b --- /dev/null +++ b/Client/sdk/game/CTxdPool.h @@ -0,0 +1,22 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * + * Multi Theft Auto is available from https://www.multitheftauto.com/ + * + *****************************************************************************/ + +#pragma once + +#include "Common.h" + +class CTxdPool +{ +public: + virtual std::uint32_t AllocateTextureDictonarySlot(std::uint32_t uiSlotID, std::string& strTxdName) = 0; + virtual void RemoveTextureDictonarySlot(std::uint32_t uiTxdID) = 0; + virtual bool IsFreeTextureDictonarySlot(std::uint32_t uiTxdID) = 0; + + virtual std::uint16_t GetFreeTextureDictonarySlot() = 0; +}; From 84437e49e6ebca758e1e87d93e7846f9aa99a673 Mon Sep 17 00:00:00 2001 From: Fernando Rocha <34967844+Fernando-A-Rocha@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:15:26 +0100 Subject: [PATCH 28/40] Validate serial on player join (#3804) This will help prevent cheaters that use a particular type of spoofer, from connecting. Server owners are recommended to upgrade MTA server to a version with this change included. --- Server/mods/deathmatch/logic/CGame.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 58989394ec..d4efea393f 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -71,6 +71,7 @@ #include "version.h" #include "net/SimHeaders.h" #include +#include #define MAX_BULLETSYNC_DISTANCE 400.0f #define MAX_EXPLOSION_SYNC_DISTANCE 400.0f @@ -1783,7 +1784,21 @@ void CGame::Packet_PlayerJoinData(CPlayerJoinDataPacket& Packet) SString strIP = pPlayer->GetSourceIP(); SString strIPAndSerial("IP: %s Serial: %s Version: %s", strIP.c_str(), strSerial.c_str(), strPlayerVersion.c_str()); - if (!CheckNickProvided(szNick)) // check the nick is valid + + // Prevent player from connecting if serial is invalid + const std::regex serialRegex("^[A-F0-9]{32}$"); + if (!std::regex_match(strSerial, serialRegex)) + { + // Tell the console + CLogger::LogPrintf("CONNECT: %s failed to connect (Invalid serial) (%s)\n", szNick, strIPAndSerial.c_str()); + + // Tell the player the problem + DisconnectPlayer(this, *pPlayer, CPlayerDisconnectedPacket::SERIAL_VERIFICATION); + return; + } + + // Check the nick is valid + if (!CheckNickProvided(szNick)) { // Tell the console CLogger::LogPrintf("CONNECT: %s failed to connect (Invalid nickname) (%s)\n", szNick, strIPAndSerial.c_str()); From 30d8e6dbfe75db47cf396aa909f43c24c4dbe127 Mon Sep 17 00:00:00 2001 From: Fernando Rocha <34967844+Fernando-A-Rocha@users.noreply.github.com> Date: Fri, 18 Oct 2024 20:58:02 +0100 Subject: [PATCH 29/40] Fix Console (F8) not maintaining position & size when GUI Skin changed (#3803) --- Client/core/CGUI.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Client/core/CGUI.cpp b/Client/core/CGUI.cpp index c4a2729d7a..6273536347 100644 --- a/Client/core/CGUI.cpp +++ b/Client/core/CGUI.cpp @@ -56,9 +56,15 @@ CLocalGUI::~CLocalGUI() void CLocalGUI::SetSkin(const char* szName) { + CVector2D consolePos, consoleSize; + bool guiWasLoaded = m_pMainMenu != NULL; if (guiWasLoaded) + { + consolePos = m_pConsole->GetPosition(); + consoleSize = m_pConsole->GetSize(); DestroyWindows(); + } std::string error; @@ -93,7 +99,11 @@ void CLocalGUI::SetSkin(const char* szName) m_LastSettingsRevision = cvars->GetRevision(); if (guiWasLoaded) + { CreateWindows(guiWasLoaded); + m_pConsole->SetPosition(consolePos); + m_pConsole->SetSize(consoleSize); + } if (CCore::GetSingleton().GetConsole() && !error.empty()) CCore::GetSingleton().GetConsole()->Echo(error.c_str()); @@ -104,8 +114,8 @@ void CLocalGUI::ChangeLocale(const char* szName) bool guiWasLoaded = m_pMainMenu != NULL; assert(guiWasLoaded); - CVector2D vPos = m_pConsole->GetPosition(); - CVector2D vSize = m_pConsole->GetSize(); + CVector2D consolePos = m_pConsole->GetPosition(); + CVector2D consoleSize = m_pConsole->GetSize(); if (guiWasLoaded) DestroyWindows(); @@ -119,12 +129,8 @@ void CLocalGUI::ChangeLocale(const char* szName) if (guiWasLoaded) { CreateWindows(guiWasLoaded); - - if (m_pConsole != nullptr) - { - m_pConsole->SetPosition(vPos); - m_pConsole->SetSize(vSize); - } + m_pConsole->SetPosition(consolePos); + m_pConsole->SetSize(consoleSize); } } From 53deb031ed69ee6074c7a0abd13a47a7a4b48f33 Mon Sep 17 00:00:00 2001 From: Pot Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 18 Oct 2024 20:00:22 +0000 Subject: [PATCH 30/40] Update client en_US pot [ci skip] --- Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot index 0947cb8c01..e42652208b 100644 --- a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot +++ b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: MTA San Andreas 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-10 20:57+0000\n" +"POT-Creation-Date: 2024-10-18 20:00+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -298,7 +298,7 @@ msgstr "" #: Client/loader/MainFunctions.cpp:252 Client/loader/MainFunctions.cpp:267 #: Client/loader/MainFunctions.cpp:269 Client/loader/MainFunctions.cpp:846 #: Client/loader/CInstallManager.cpp:552 Client/loader/CInstallManager.cpp:561 -#: Client/core/CGUI.cpp:87 Client/core/CCore.cpp:1275 +#: Client/core/CGUI.cpp:93 Client/core/CCore.cpp:1275 #: Client/core/CCore.cpp:1288 Client/core/CSettings.cpp:2941 #: Client/core/CSettings.cpp:4166 Client/core/CSettings.cpp:4194 #: Client/core/CSettings.cpp:4764 Client/core/CConnectManager.cpp:80 @@ -1818,7 +1818,7 @@ msgid "English" msgstr "" #. Even the default skin doesn't work, so give up -#: Client/core/CGUI.cpp:86 +#: Client/core/CGUI.cpp:92 msgid "" "The skin you selected could not be loaded, and the default skin also could " "not be loaded, please reinstall MTA." From 64747aa255e290cd143ba15addeee7bee425929f Mon Sep 17 00:00:00 2001 From: FileEX Date: Sun, 20 Oct 2024 09:39:30 +0200 Subject: [PATCH 31/40] Fix #3814 Nitro handling flag bug (#3815) --- Client/game_sa/CVehicleSA.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Client/game_sa/CVehicleSA.cpp b/Client/game_sa/CVehicleSA.cpp index b4e7a2c438..9d4a02598e 100644 --- a/Client/game_sa/CVehicleSA.cpp +++ b/Client/game_sa/CVehicleSA.cpp @@ -1345,16 +1345,20 @@ void CVehicleSA::RecalculateHandling() continue; // If NOS is installed we need set the flag - if ((upgradeID >= 1008 && upgradeID <= 1010) && !(uiHandlingFlags & HANDLING_NOS_Flag)) + if ((upgradeID >= 1008 && upgradeID <= 1010)) { - uiHandlingFlags |= HANDLING_NOS_Flag; + if (!(uiHandlingFlags & HANDLING_NOS_Flag)) + uiHandlingFlags |= HANDLING_NOS_Flag; + nitroInstalled = true; } // If hydraulics is installed we need set the flag - if ((upgradeID == 1087) && !(uiHandlingFlags & HANDLING_Hydraulics_Flag)) + if ((upgradeID == 1087)) { - uiHandlingFlags |= HANDLING_Hydraulics_Flag; + if (!(uiHandlingFlags & HANDLING_Hydraulics_Flag)) + uiHandlingFlags |= HANDLING_Hydraulics_Flag; + hydralicsInstalled = true; } } From bfdfdb5f44726df85626e6e3e06c2a319c0c8962 Mon Sep 17 00:00:00 2001 From: lopsi <40902730+Lpsd@users.noreply.github.com> Date: Sun, 20 Oct 2024 09:40:36 +0200 Subject: [PATCH 32/40] Add main menu setting for browser GPU rendering (#3816) * Adds browser_enable_gpu and browser_enable_gpu_compositing CVARS * Adds options to "web browser" tab in main menu settings * Add isBrowserGPUEnabled lua definition (clientside) --- Client/cefweb/CWebApp.cpp | 10 +++++ Client/cefweb/CWebCore.cpp | 16 +++++++- Client/cefweb/CWebCore.h | 9 +++- Client/core/CClientVariables.cpp | 2 + Client/core/CCore.cpp | 8 +++- Client/core/CSettings.cpp | 41 ++++++++++++++++++- Client/core/CSettings.h | 3 ++ .../logic/luadefs/CLuaBrowserDefs.cpp | 7 ++++ .../logic/luadefs/CLuaBrowserDefs.h | 1 + Client/sdk/core/CWebCoreInterface.h | 5 ++- 10 files changed, 97 insertions(+), 5 deletions(-) diff --git a/Client/cefweb/CWebApp.cpp b/Client/cefweb/CWebApp.cpp index a6fe5397e5..6013d326d6 100644 --- a/Client/cefweb/CWebApp.cpp +++ b/Client/cefweb/CWebApp.cpp @@ -21,6 +21,16 @@ CefRefPtr CWebApp::HandleError(const SString& strError, unsi void CWebApp::OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr command_line) { + CWebCore* pWebCore = static_cast(g_pCore->GetWebCore()); + + if (!pWebCore->GetGPUEnabled()) // if GPU is disabled... + { + command_line->AppendSwitch("disable-gpu-compositing"); + command_line->AppendSwitch("disable-gpu"); + } + else if (!pWebCore->GetGPUCompositingEnabled()) // if GPU is enabled, but compositing is disabled... + command_line->AppendSwitch("disable-gpu-compositing"); + // command_line->AppendSwitch("disable-d3d11"); command_line->AppendSwitch("enable-begin-frame-scheduling"); diff --git a/Client/cefweb/CWebCore.cpp b/Client/cefweb/CWebCore.cpp index fe02e029a3..c30700b88b 100644 --- a/Client/cefweb/CWebCore.cpp +++ b/Client/cefweb/CWebCore.cpp @@ -49,10 +49,14 @@ CWebCore::~CWebCore() delete m_pXmlConfig; } -bool CWebCore::Initialise() +bool CWebCore::Initialise(bool gpuEnabled, bool gpuCompositingEnabled) { CefMainArgs mainArgs; void* sandboxInfo = nullptr; + + m_bGPUEnabled = gpuEnabled; + m_bGPUCompositingEnabled = gpuCompositingEnabled; + CefRefPtr app(new CWebApp); #ifdef CEF_ENABLE_SANDBOX @@ -869,3 +873,13 @@ void CWebCore::StaticFetchBlacklistFinished(const SHttpDownloadResult& result) OutputDebugLine("Updated browser blacklist!"); #endif } + +bool CWebCore::GetGPUEnabled() const noexcept +{ + return m_bGPUEnabled; +} + +bool CWebCore::GetGPUCompositingEnabled() const noexcept +{ + return m_bGPUCompositingEnabled; +} diff --git a/Client/cefweb/CWebCore.h b/Client/cefweb/CWebCore.h index 4db4a9036c..70a307372d 100644 --- a/Client/cefweb/CWebCore.h +++ b/Client/cefweb/CWebCore.h @@ -54,7 +54,7 @@ class CWebCore : public CWebCoreInterface public: CWebCore(); ~CWebCore(); - bool Initialise() override; + bool Initialise(bool gpuEnabled, bool gpuCompositingEnabled) override; CWebViewInterface* CreateWebView(unsigned int uiWidth, unsigned int uiHeight, bool bIsLocal, CWebBrowserItem* pWebBrowserRenderItem, bool bTransparent); void DestroyWebView(CWebViewInterface* pWebViewInterface); @@ -108,6 +108,9 @@ class CWebCore : public CWebCoreInterface static void StaticFetchWhitelistFinished(const SHttpDownloadResult& result); static void StaticFetchBlacklistFinished(const SHttpDownloadResult& result); + bool GetGPUEnabled() const noexcept; + bool GetGPUCompositingEnabled() const noexcept; + private: typedef std::pair WebFilterPair; @@ -129,4 +132,8 @@ class CWebCore : public CWebCoreInterface CXMLFile* m_pXmlConfig; int m_iWhitelistRevision; int m_iBlacklistRevision; + + // Shouldn't be changed after init + bool m_bGPUEnabled; + bool m_bGPUCompositingEnabled; }; diff --git a/Client/core/CClientVariables.cpp b/Client/core/CClientVariables.cpp index fb9bd3b245..a64cf8f724 100644 --- a/Client/core/CClientVariables.cpp +++ b/Client/core/CClientVariables.cpp @@ -358,6 +358,8 @@ void CClientVariables::LoadDefaults() DEFAULT("discord_rpc_share_data", false); // Consistent Rich Presence data sharing DEFAULT("discord_rpc_share_data_firsttime", false); // Display the user data sharing consent dialog box - for the first time DEFAULT("_beta_qc_rightclick_command", _S("reconnect")); // Command to run when right clicking quick connect (beta - can be removed at any time) + DEFAULT("browser_enable_gpu", true); // Enable GPU in CEF? (allows stuff like WebGL to function) + DEFAULT("browser_enable_gpu_compositing", true); // Enable GPU compositing in CEF? (required GPU enabled) if (!Exists("locale")) { diff --git a/Client/core/CCore.cpp b/Client/core/CCore.cpp index b9a2391f46..cc15103bef 100644 --- a/Client/core/CCore.cpp +++ b/Client/core/CCore.cpp @@ -1155,8 +1155,14 @@ CWebCoreInterface* CCore::GetWebCore() { if (m_pWebCore == nullptr) { + bool gpuEnabled; + bool gpuCompositingEnabled; + auto cvars = g_pCore->GetCVars(); + cvars->Get("browser_enable_gpu", gpuEnabled); + cvars->Get("browser_enable_gpu_compositing", gpuCompositingEnabled); + m_pWebCore = CreateModule(m_WebCoreModule, "CefWeb", "cefweb", "InitWebCoreInterface", this); - m_pWebCore->Initialise(); + m_pWebCore->Initialise(gpuEnabled, gpuCompositingEnabled); } return m_pWebCore; } diff --git a/Client/core/CSettings.cpp b/Client/core/CSettings.cpp index 847735a891..6bd1dcae0d 100644 --- a/Client/core/CSettings.cpp +++ b/Client/core/CSettings.cpp @@ -917,6 +917,16 @@ void CSettings::CreateGUI() m_pCheckBoxRemoteJavascript->GetPosition(vecTemp); m_pCheckBoxRemoteJavascript->AutoSize(NULL, 20.0f); + m_pCheckBoxBrowserGPUEnabled = reinterpret_cast(pManager->CreateCheckBox(m_pTabBrowser, _("Enable GPU rendering"), true)); + m_pCheckBoxBrowserGPUEnabled->SetPosition(CVector2D(vecTemp.fX + 300.0f, vecTemp.fY - 20.0f)); + m_pCheckBoxBrowserGPUEnabled->AutoSize(NULL, 20.0f); + m_pCheckBoxBrowserGPUEnabled->SetClickHandler(GUI_CALLBACK(&CSettings::OnGPUSettingChanged, this)); + + m_pCheckBoxBrowserGPUCompositingEnabled = + reinterpret_cast(pManager->CreateCheckBox(m_pTabBrowser, _("Enable GPU compositing"), true)); + m_pCheckBoxBrowserGPUCompositingEnabled->SetPosition(CVector2D(vecTemp.fX + 300.0f, vecTemp.fY)); + m_pCheckBoxBrowserGPUCompositingEnabled->AutoSize(NULL, 20.0f); + m_pLabelBrowserCustomBlacklist = reinterpret_cast(pManager->CreateLabel(m_pTabBrowser, _("Custom blacklist"))); m_pLabelBrowserCustomBlacklist->SetPosition(CVector2D(vecTemp.fX, vecTemp.fY + 30.0f)); m_pLabelBrowserCustomBlacklist->GetPosition(vecTemp); @@ -3287,6 +3297,14 @@ void CSettings::LoadData() m_pCheckBoxRemoteBrowser->SetSelected(bVar); CVARS_GET("browser_remote_javascript", bVar); m_pCheckBoxRemoteJavascript->SetSelected(bVar); + CVARS_GET("browser_enable_gpu", bVar); + m_pCheckBoxBrowserGPUEnabled->SetSelected(bVar); + + if (!bVar) + m_pCheckBoxBrowserGPUCompositingEnabled->SetEnabled(false); + + CVARS_GET("browser_enable_gpu_compositing", bVar); + m_pCheckBoxBrowserGPUCompositingEnabled->SetSelected(bVar); ReloadBrowserLists(); } @@ -3711,6 +3729,20 @@ void CSettings::SaveData() bBrowserSettingChanged = true; } + bool bBrowserGPUEnabled = false; + CVARS_GET("browser_enable_gpu", bBrowserGPUEnabled); + + bool bBrowserGPUSetting = m_pCheckBoxBrowserGPUEnabled->GetSelected(); + bool bBrowserGPUSettingChanged = (bBrowserGPUSetting != bBrowserGPUEnabled); + CVARS_SET("browser_enable_gpu", bBrowserGPUSetting); + + bool bBrowserGPUCompositingEnabled = false; + CVARS_GET("browser_enable_gpu_compositing", bBrowserGPUCompositingEnabled); + + bool bBrowserGPUCompositingSetting = m_pCheckBoxBrowserGPUCompositingEnabled->GetSelected(); + bool bBrowserGPUCompositingSettingChanged = (bBrowserGPUCompositingSetting != bBrowserGPUCompositingEnabled); + CVARS_SET("browser_enable_gpu_compositing", bBrowserGPUCompositingSetting); + // Ensure CVARS ranges ok CClientVariables::GetSingleton().ValidateValues(); @@ -3720,7 +3752,8 @@ void CSettings::SaveData() gameSettings->Save(); // Ask to restart? - if (bIsVideoModeChanged || bIsAntiAliasingChanged || bIsCustomizedSAFilesChanged || processsDPIAwareChanged) + if (bIsVideoModeChanged || bIsAntiAliasingChanged || bIsCustomizedSAFilesChanged || processsDPIAwareChanged || bBrowserGPUSettingChanged || + bBrowserGPUCompositingSettingChanged) ShowRestartQuestion(); else if (CModManager::GetSingleton().IsLoaded() && bBrowserSettingChanged) ShowDisconnectQuestion(); @@ -4873,3 +4906,9 @@ bool CSettings::IsActive() { return m_pWindow->IsActive(); } + +bool CSettings::OnGPUSettingChanged(CGUIElement* pElement) +{ + m_pCheckBoxBrowserGPUCompositingEnabled->SetEnabled(m_pCheckBoxBrowserGPUEnabled->GetSelected()); + return true; +} diff --git a/Client/core/CSettings.h b/Client/core/CSettings.h index bfeec87c44..014590b80c 100644 --- a/Client/core/CSettings.h +++ b/Client/core/CSettings.h @@ -338,6 +338,8 @@ class CSettings CGUIButton* m_pButtonBrowserWhitelistAdd; CGUIGridList* m_pGridBrowserWhitelist; CGUIButton* m_pButtonBrowserWhitelistRemove; + CGUICheckBox* m_pCheckBoxBrowserGPUEnabled; + CGUICheckBox* m_pCheckBoxBrowserGPUCompositingEnabled; bool m_bBrowserListsChanged; bool m_bBrowserListsLoadEnabled; @@ -382,6 +384,7 @@ class CSettings bool OnBrowserWhitelistRemove(CGUIElement* pElement); bool OnBrowserWhitelistDomainAddFocused(CGUIElement* pElement); bool OnBrowserWhitelistDomainAddDefocused(CGUIElement* pElement); + bool OnGPUSettingChanged(CGUIElement* pElement); bool OnMouseDoubleClick(CGUIMouseEventArgs Args); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.cpp index 6077f45346..a5b9fa95ac 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.cpp @@ -49,6 +49,7 @@ void CLuaBrowserDefs::LoadFunctions() {"resizeBrowser", ResizeBrowser}, {"guiCreateBrowser", GUICreateBrowser}, {"guiGetBrowser", GUIGetBrowser}, + {"isBrowserGPUEnabled", ArgumentParser}, }; // Add browser functions @@ -97,6 +98,7 @@ void CLuaBrowserDefs::AddClass(lua_State* luaVM) lua_classvariable(luaVM, "renderingPaused", "setBrowserRenderingPaused", "isBrowserRenderingPaused"); lua_classvariable(luaVM, "volume", "setBrowserVolume", "getBrowserVolume"); lua_classvariable(luaVM, "devTools", "toggleBrowserDevTools", nullptr); + lua_classvariable(luaVM, "gpuEnabled", nullptr, "isBrowserGPUEnabled"); lua_registerclass(luaVM, "Browser", "DxTexture"); @@ -1054,3 +1056,8 @@ int CLuaBrowserDefs::SetBrowserAjaxHandler(lua_State* luaVM) lua_pushboolean(luaVM, false); return 1; } + +bool CLuaBrowserDefs::IsBrowserGPUEnabled() noexcept +{ + return g_pCore->GetWebCore()->GetGPUEnabled(); +} diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.h index 33d156b0f5..988efb6c40 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaBrowserDefs.h @@ -51,4 +51,5 @@ class CLuaBrowserDefs : public CLuaDefs LUA_DECLARE(ResizeBrowser); LUA_DECLARE(GUICreateBrowser); LUA_DECLARE(GUIGetBrowser); + static bool IsBrowserGPUEnabled() noexcept; }; diff --git a/Client/sdk/core/CWebCoreInterface.h b/Client/sdk/core/CWebCoreInterface.h index e1e2f7651d..6bac4b777e 100644 --- a/Client/sdk/core/CWebCoreInterface.h +++ b/Client/sdk/core/CWebCoreInterface.h @@ -49,7 +49,7 @@ class CWebCoreInterface { public: virtual ~CWebCoreInterface() {} - virtual bool Initialise() = 0; + virtual bool Initialise(bool gpuEnabled, bool gpuCompositingEnabled) = 0; virtual CWebViewInterface* CreateWebView(unsigned int uiWidth, unsigned int uiHeight, bool bIsLocal, CWebBrowserItem* pWebBrowserRenderItem, bool bTransparent) = 0; @@ -90,4 +90,7 @@ class CWebCoreInterface virtual void WriteCustomList(const SString& strListName, const std::vector& customList, bool bReset = true) = 0; virtual void GetFilterEntriesByType(std::vector>& outEntries, eWebFilterType filterType, eWebFilterState state = eWebFilterState::WEBFILTER_ALL) = 0; + + virtual bool GetGPUEnabled() const noexcept = 0; + virtual bool GetGPUCompositingEnabled() const noexcept = 0; }; From c6e9d0b8a8a6d91ac38a77d5e9beef2999d46960 Mon Sep 17 00:00:00 2001 From: Pot Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 20 Oct 2024 07:42:29 +0000 Subject: [PATCH 33/40] Update client en_US pot [ci skip] --- .../MTA/locale/en_US/client.pot | 418 +++++++++--------- 1 file changed, 213 insertions(+), 205 deletions(-) diff --git a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot index e42652208b..8c1697efff 100644 --- a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot +++ b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: MTA San Andreas 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-18 20:00+0000\n" +"POT-Creation-Date: 2024-10-20 07:42+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -35,7 +35,7 @@ msgstr "" msgid "Remember decision" msgstr "" -#: Client/cefweb/CWebsiteRequests.cpp:51 Client/core/CSettings.cpp:974 +#: Client/cefweb/CWebsiteRequests.cpp:51 Client/core/CSettings.cpp:984 msgid "Allow" msgstr "" @@ -160,7 +160,7 @@ msgstr "" #: Client/mods/deathmatch/logic/CResource.cpp:375 #: Client/mods/deathmatch/logic/CClientGame.cpp:1089 Client/core/CCore.cpp:674 -#: Client/core/CSettings.cpp:3483 +#: Client/core/CSettings.cpp:3501 msgid "In-game" msgstr "" @@ -275,7 +275,7 @@ msgstr "" #: Client/mods/deathmatch/logic/CClientGame.cpp:533 #: Client/core/CMainMenu.cpp:304 Client/core/CCore.cpp:674 -#: Client/core/CSettings.cpp:3479 +#: Client/core/CSettings.cpp:3497 msgid "Main menu" msgstr "" @@ -298,10 +298,10 @@ msgstr "" #: Client/loader/MainFunctions.cpp:252 Client/loader/MainFunctions.cpp:267 #: Client/loader/MainFunctions.cpp:269 Client/loader/MainFunctions.cpp:846 #: Client/loader/CInstallManager.cpp:552 Client/loader/CInstallManager.cpp:561 -#: Client/core/CGUI.cpp:93 Client/core/CCore.cpp:1275 -#: Client/core/CCore.cpp:1288 Client/core/CSettings.cpp:2941 -#: Client/core/CSettings.cpp:4166 Client/core/CSettings.cpp:4194 -#: Client/core/CSettings.cpp:4764 Client/core/CConnectManager.cpp:80 +#: Client/core/CGUI.cpp:93 Client/core/CCore.cpp:1281 +#: Client/core/CCore.cpp:1294 Client/core/CSettings.cpp:2951 +#: Client/core/CSettings.cpp:4199 Client/core/CSettings.cpp:4227 +#: Client/core/CSettings.cpp:4797 Client/core/CConnectManager.cpp:80 #: Client/core/CConnectManager.cpp:111 Client/core/CConnectManager.cpp:127 #: Client/core/CConnectManager.cpp:263 Client/core/CConnectManager.cpp:321 #: Client/core/CConnectManager.cpp:404 Client/core/CConnectManager.cpp:411 @@ -678,7 +678,7 @@ msgstr "" #. * #: Client/mods/deathmatch/logic/CLocalServer.cpp:51 #: Client/core/CSettings.cpp:442 Client/core/CSettings.cpp:630 -#: Client/core/CSettings.cpp:904 Client/core/CSettings.cpp:2018 +#: Client/core/CSettings.cpp:904 Client/core/CSettings.cpp:2028 msgid "General" msgstr "" @@ -734,7 +734,7 @@ msgstr "" #: Client/gui/CGUIMessageBox_Impl.cpp:68 Client/loader/Dialogs.cpp:136 #: Client/core/CVersionUpdater.cpp:1790 Client/core/CVersionUpdater.cpp:1806 #: Client/core/CVersionUpdater.cpp:1841 Client/core/CSettings.cpp:132 -#: Client/core/CSettings.cpp:4784 +#: Client/core/CSettings.cpp:4817 msgid "Cancel" msgstr "" @@ -770,7 +770,7 @@ msgstr "" #: Client/core/CVersionUpdater.cpp:1956 Client/core/CVersionUpdater.cpp:1968 #: Client/core/CVersionUpdater.cpp:2120 Client/core/CVersionUpdater.cpp:2129 #: Client/core/CVersionUpdater.cpp:2138 Client/core/CVersionUpdater.cpp:2152 -#: Client/core/CSettings.cpp:127 Client/core/CSettings.cpp:4785 +#: Client/core/CSettings.cpp:127 Client/core/CSettings.cpp:4818 msgid "OK" msgstr "" @@ -784,9 +784,9 @@ msgstr "" #: Client/core/CVersionUpdater.cpp:1572 Client/core/CVersionUpdater.cpp:1590 #: Client/core/CVersionUpdater.cpp:1859 Client/core/CVersionUpdater.cpp:1878 #: Client/core/CQuestionBox.cpp:195 Client/core/CMainMenu.cpp:1200 -#: Client/core/CSettings.cpp:1389 Client/core/CSettings.cpp:1413 -#: Client/core/CSettings.cpp:4489 Client/core/CSettings.cpp:4563 -#: Client/core/CSettings.cpp:4593 Client/core/CSettings.cpp:4642 +#: Client/core/CSettings.cpp:1399 Client/core/CSettings.cpp:1423 +#: Client/core/CSettings.cpp:4522 Client/core/CSettings.cpp:4596 +#: Client/core/CSettings.cpp:4626 Client/core/CSettings.cpp:4675 #: Client/core/ServerBrowser/CServerInfo.cpp:481 msgid "Yes" msgstr "" @@ -913,10 +913,10 @@ msgstr "" #: Client/loader/Dialogs.cpp:132 Client/core/CVersionUpdater.cpp:1571 #: Client/core/CVersionUpdater.cpp:1589 Client/core/CVersionUpdater.cpp:1858 #: Client/core/CVersionUpdater.cpp:1877 Client/core/CQuestionBox.cpp:194 -#: Client/core/CMainMenu.cpp:1199 Client/core/CSettings.cpp:1388 -#: Client/core/CSettings.cpp:1412 Client/core/CSettings.cpp:4488 -#: Client/core/CSettings.cpp:4562 Client/core/CSettings.cpp:4592 -#: Client/core/CSettings.cpp:4641 Client/core/ServerBrowser/CServerInfo.cpp:481 +#: Client/core/CMainMenu.cpp:1199 Client/core/CSettings.cpp:1398 +#: Client/core/CSettings.cpp:1422 Client/core/CSettings.cpp:4521 +#: Client/core/CSettings.cpp:4595 Client/core/CSettings.cpp:4625 +#: Client/core/CSettings.cpp:4674 Client/core/ServerBrowser/CServerInfo.cpp:481 msgid "No" msgstr "" @@ -1123,12 +1123,12 @@ msgid "" msgstr "" #: Client/loader/MainFunctions.cpp:389 Client/core/CSettings.cpp:662 -#: Client/core/CSettings.cpp:1004 +#: Client/core/CSettings.cpp:1014 msgid "Fullscreen mode:" msgstr "" #: Client/loader/MainFunctions.cpp:389 Client/core/CSettings.cpp:670 -#: Client/core/CSettings.cpp:1615 +#: Client/core/CSettings.cpp:1625 msgid "Borderless window" msgstr "" @@ -1516,7 +1516,7 @@ msgstr "" msgid " - Unknown problem in _DialogUpdateResult" msgstr "" -#: Client/core/CVersionUpdater.cpp:2081 Client/core/CSettings.cpp:4590 +#: Client/core/CVersionUpdater.cpp:2081 Client/core/CSettings.cpp:4623 msgid "CUSTOMIZED GTA:SA FILES" msgstr "" @@ -1569,13 +1569,13 @@ msgstr "" msgid "Backwards" msgstr "" -#: Client/core/CKeyBinds.cpp:191 Client/core/CSettings.cpp:2240 -#: Client/core/CSettings.cpp:2268 +#: Client/core/CKeyBinds.cpp:191 Client/core/CSettings.cpp:2250 +#: Client/core/CSettings.cpp:2278 msgid "Left" msgstr "" -#: Client/core/CKeyBinds.cpp:192 Client/core/CSettings.cpp:2242 -#: Client/core/CSettings.cpp:2269 +#: Client/core/CKeyBinds.cpp:192 Client/core/CSettings.cpp:2252 +#: Client/core/CSettings.cpp:2279 msgid "Right" msgstr "" @@ -1895,102 +1895,102 @@ msgstr "" msgid "%s module is incorrect!" msgstr "" -#: Client/core/CCore.cpp:1275 +#: Client/core/CCore.cpp:1281 msgid "Error executing URL" msgstr "" -#: Client/core/CCore.cpp:1287 +#: Client/core/CCore.cpp:1293 #, c-format msgid "Error running mod specified in command line ('%s')" msgstr "" #. m_pCommands->Add ( "e", CCommandFuncs::Editor ); #. m_pCommands->Add ( "clear", CCommandFuncs::Clear ); -#: Client/core/CCore.cpp:1389 +#: Client/core/CCore.cpp:1395 msgid "this help screen" msgstr "" -#: Client/core/CCore.cpp:1390 Client/core/CCore.cpp:1391 +#: Client/core/CCore.cpp:1396 Client/core/CCore.cpp:1397 msgid "exits the application" msgstr "" -#: Client/core/CCore.cpp:1392 +#: Client/core/CCore.cpp:1398 msgid "shows the version" msgstr "" -#: Client/core/CCore.cpp:1393 +#: Client/core/CCore.cpp:1399 msgid "shows the time" msgstr "" -#: Client/core/CCore.cpp:1394 +#: Client/core/CCore.cpp:1400 msgid "shows the hud" msgstr "" -#: Client/core/CCore.cpp:1395 +#: Client/core/CCore.cpp:1401 msgid "shows all the binds" msgstr "" -#: Client/core/CCore.cpp:1396 +#: Client/core/CCore.cpp:1402 msgid "shows your serial" msgstr "" -#: Client/core/CCore.cpp:1405 +#: Client/core/CCore.cpp:1411 msgid "connects to a server (host port nick pass)" msgstr "" -#: Client/core/CCore.cpp:1406 +#: Client/core/CCore.cpp:1412 msgid "connects to a previous server" msgstr "" -#: Client/core/CCore.cpp:1407 +#: Client/core/CCore.cpp:1413 msgid "binds a key (key control)" msgstr "" -#: Client/core/CCore.cpp:1408 +#: Client/core/CCore.cpp:1414 msgid "unbinds a key (key)" msgstr "" -#: Client/core/CCore.cpp:1409 +#: Client/core/CCore.cpp:1415 msgid "copies the default gta controls" msgstr "" -#: Client/core/CCore.cpp:1410 +#: Client/core/CCore.cpp:1416 msgid "outputs a screenshot" msgstr "" -#: Client/core/CCore.cpp:1411 +#: Client/core/CCore.cpp:1417 msgid "immediately saves the config" msgstr "" -#: Client/core/CCore.cpp:1413 +#: Client/core/CCore.cpp:1419 msgid "clears the debug view" msgstr "" -#: Client/core/CCore.cpp:1414 +#: Client/core/CCore.cpp:1420 msgid "scrolls the chatbox upwards" msgstr "" -#: Client/core/CCore.cpp:1415 +#: Client/core/CCore.cpp:1421 msgid "scrolls the chatbox downwards" msgstr "" -#: Client/core/CCore.cpp:1416 +#: Client/core/CCore.cpp:1422 msgid "scrolls the debug view upwards" msgstr "" -#: Client/core/CCore.cpp:1417 +#: Client/core/CCore.cpp:1423 msgid "scrolls the debug view downwards" msgstr "" -#: Client/core/CCore.cpp:1420 +#: Client/core/CCore.cpp:1426 msgid "shows the memory statistics" msgstr "" -#: Client/core/CCore.cpp:1421 +#: Client/core/CCore.cpp:1427 msgid "shows the frame timing graph" msgstr "" -#: Client/core/CCore.cpp:1425 +#: Client/core/CCore.cpp:1431 msgid "for developers: reload news" msgstr "" @@ -2196,15 +2196,15 @@ msgstr "" msgid "Usertrack options" msgstr "" -#: Client/core/CSettings.cpp:573 Client/core/CSettings.cpp:3087 +#: Client/core/CSettings.cpp:573 Client/core/CSettings.cpp:3097 msgid "Radio" msgstr "" -#: Client/core/CSettings.cpp:574 Client/core/CSettings.cpp:3089 +#: Client/core/CSettings.cpp:574 Client/core/CSettings.cpp:3099 msgid "Random" msgstr "" -#: Client/core/CSettings.cpp:575 Client/core/CSettings.cpp:3091 +#: Client/core/CSettings.cpp:575 Client/core/CSettings.cpp:3101 msgid "Sequential" msgstr "" @@ -2279,11 +2279,11 @@ msgstr "" msgid "DPI aware" msgstr "" -#: Client/core/CSettings.cpp:669 Client/core/CSettings.cpp:1613 +#: Client/core/CSettings.cpp:669 Client/core/CSettings.cpp:1623 msgid "Standard" msgstr "" -#: Client/core/CSettings.cpp:671 Client/core/CSettings.cpp:1617 +#: Client/core/CSettings.cpp:671 Client/core/CSettings.cpp:1627 msgid "Borderless keep res" msgstr "" @@ -2291,57 +2291,57 @@ msgstr "" msgid "Mip Mapping" msgstr "" -#: Client/core/CSettings.cpp:743 Client/core/CSettings.cpp:1517 +#: Client/core/CSettings.cpp:743 Client/core/CSettings.cpp:1527 msgid "Low" msgstr "" -#: Client/core/CSettings.cpp:744 Client/core/CSettings.cpp:1519 +#: Client/core/CSettings.cpp:744 Client/core/CSettings.cpp:1529 msgid "Medium" msgstr "" -#: Client/core/CSettings.cpp:745 Client/core/CSettings.cpp:1086 -#: Client/core/CSettings.cpp:1521 Client/core/CSettings.cpp:3145 +#: Client/core/CSettings.cpp:745 Client/core/CSettings.cpp:1096 +#: Client/core/CSettings.cpp:1531 Client/core/CSettings.cpp:3155 msgid "High" msgstr "" -#: Client/core/CSettings.cpp:746 Client/core/CSettings.cpp:1523 +#: Client/core/CSettings.cpp:746 Client/core/CSettings.cpp:1533 msgid "Very high" msgstr "" #: Client/core/CSettings.cpp:761 Client/core/CSettings.cpp:784 -#: Client/core/CSettings.cpp:1017 Client/core/CSettings.cpp:1071 -#: Client/core/CSettings.cpp:1201 Client/core/CSettings.cpp:1527 -#: Client/core/CSettings.cpp:3152 Client/core/CSettings.cpp:3184 -#: Client/core/CSettings.cpp:3206 Client/core/CSettings.cpp:4234 +#: Client/core/CSettings.cpp:1027 Client/core/CSettings.cpp:1081 +#: Client/core/CSettings.cpp:1211 Client/core/CSettings.cpp:1537 +#: Client/core/CSettings.cpp:3162 Client/core/CSettings.cpp:3194 +#: Client/core/CSettings.cpp:3216 Client/core/CSettings.cpp:4267 msgid "Off" msgstr "" -#: Client/core/CSettings.cpp:785 Client/core/CSettings.cpp:1529 +#: Client/core/CSettings.cpp:785 Client/core/CSettings.cpp:1539 msgid "1x" msgstr "" -#: Client/core/CSettings.cpp:786 Client/core/CSettings.cpp:1531 +#: Client/core/CSettings.cpp:786 Client/core/CSettings.cpp:1541 msgid "2x" msgstr "" -#: Client/core/CSettings.cpp:787 Client/core/CSettings.cpp:1533 +#: Client/core/CSettings.cpp:787 Client/core/CSettings.cpp:1543 msgid "3x" msgstr "" -#: Client/core/CSettings.cpp:800 Client/core/CSettings.cpp:1019 -#: Client/core/CSettings.cpp:1539 Client/core/CSettings.cpp:3154 +#: Client/core/CSettings.cpp:800 Client/core/CSettings.cpp:1029 +#: Client/core/CSettings.cpp:1549 Client/core/CSettings.cpp:3164 msgid "Auto" msgstr "" -#: Client/core/CSettings.cpp:801 Client/core/CSettings.cpp:1541 +#: Client/core/CSettings.cpp:801 Client/core/CSettings.cpp:1551 msgid "4:3" msgstr "" -#: Client/core/CSettings.cpp:802 Client/core/CSettings.cpp:1543 +#: Client/core/CSettings.cpp:802 Client/core/CSettings.cpp:1553 msgid "16:10" msgstr "" -#: Client/core/CSettings.cpp:803 Client/core/CSettings.cpp:1545 +#: Client/core/CSettings.cpp:803 Client/core/CSettings.cpp:1555 msgid "16:9" msgstr "" @@ -2406,349 +2406,357 @@ msgid "Enable Javascript on remote websites" msgstr "" #: Client/core/CSettings.cpp:920 +msgid "Enable GPU rendering" +msgstr "" + +#: Client/core/CSettings.cpp:926 +msgid "Enable GPU compositing" +msgstr "" + +#: Client/core/CSettings.cpp:930 msgid "Custom blacklist" msgstr "" -#: Client/core/CSettings.cpp:931 Client/core/CSettings.cpp:966 +#: Client/core/CSettings.cpp:941 Client/core/CSettings.cpp:976 msgid "Enter a domain e.g. google.com" msgstr "" -#: Client/core/CSettings.cpp:939 +#: Client/core/CSettings.cpp:949 msgid "Block" msgstr "" -#: Client/core/CSettings.cpp:947 Client/core/CSettings.cpp:982 +#: Client/core/CSettings.cpp:957 Client/core/CSettings.cpp:992 msgid "Domain" msgstr "" -#: Client/core/CSettings.cpp:949 Client/core/CSettings.cpp:984 +#: Client/core/CSettings.cpp:959 Client/core/CSettings.cpp:994 msgid "Remove domain" msgstr "" #. Reset vecTemp -#: Client/core/CSettings.cpp:955 +#: Client/core/CSettings.cpp:965 msgid "Custom whitelist" msgstr "" #. Misc section label -#: Client/core/CSettings.cpp:997 +#: Client/core/CSettings.cpp:1007 msgid "Misc" msgstr "" #. Fast clothes loading -#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1010 -#: Client/core/CSettings.cpp:4803 +#: Client/core/CSettings.cpp:1013 Client/core/CSettings.cpp:1020 +#: Client/core/CSettings.cpp:4836 msgid "Fast CJ clothes loading:" msgstr "" #. Browser scan speed -#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1024 -#: Client/core/CSettings.cpp:4805 +#: Client/core/CSettings.cpp:1013 Client/core/CSettings.cpp:1034 +#: Client/core/CSettings.cpp:4838 msgid "Browser speed:" msgstr "" #. Single download -#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1038 -#: Client/core/CSettings.cpp:4807 +#: Client/core/CSettings.cpp:1013 Client/core/CSettings.cpp:1048 +#: Client/core/CSettings.cpp:4840 msgid "Single connection:" msgstr "" #. Packet tag -#: Client/core/CSettings.cpp:1003 Client/core/CSettings.cpp:1051 -#: Client/core/CSettings.cpp:4809 +#: Client/core/CSettings.cpp:1013 Client/core/CSettings.cpp:1061 +#: Client/core/CSettings.cpp:4842 msgid "Packet tag:" msgstr "" #. Progress animation -#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1064 -#: Client/core/CSettings.cpp:4811 +#: Client/core/CSettings.cpp:1014 Client/core/CSettings.cpp:1074 +#: Client/core/CSettings.cpp:4844 msgid "Progress animation:" msgstr "" #. Process priority -#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1077 -#: Client/core/CSettings.cpp:4801 +#: Client/core/CSettings.cpp:1014 Client/core/CSettings.cpp:1087 +#: Client/core/CSettings.cpp:4834 msgid "Process priority:" msgstr "" #. Debug setting -#: Client/core/CSettings.cpp:1004 Client/core/CSettings.cpp:1091 -#: Client/core/CSettings.cpp:4813 +#: Client/core/CSettings.cpp:1014 Client/core/CSettings.cpp:1101 +#: Client/core/CSettings.cpp:4846 msgid "Debug setting:" msgstr "" #. Streaming memory -#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1114 -#: Client/core/CSettings.cpp:4815 +#: Client/core/CSettings.cpp:1015 Client/core/CSettings.cpp:1124 +#: Client/core/CSettings.cpp:4848 msgid "Streaming memory:" msgstr "" #. Update build type -#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1215 +#: Client/core/CSettings.cpp:1015 Client/core/CSettings.cpp:1225 msgid "Update build type:" msgstr "" #. UpdateAutoInstall -#: Client/core/CSettings.cpp:1005 Client/core/CSettings.cpp:1194 +#: Client/core/CSettings.cpp:1015 Client/core/CSettings.cpp:1204 msgid "Install important updates:" msgstr "" -#: Client/core/CSettings.cpp:1018 Client/core/CSettings.cpp:1046 -#: Client/core/CSettings.cpp:1059 Client/core/CSettings.cpp:3156 -#: Client/core/CSettings.cpp:3172 Client/core/CSettings.cpp:3179 +#: Client/core/CSettings.cpp:1028 Client/core/CSettings.cpp:1056 +#: Client/core/CSettings.cpp:1069 Client/core/CSettings.cpp:3166 +#: Client/core/CSettings.cpp:3182 Client/core/CSettings.cpp:3189 msgid "On" msgstr "" -#: Client/core/CSettings.cpp:1031 Client/core/CSettings.cpp:3161 +#: Client/core/CSettings.cpp:1041 Client/core/CSettings.cpp:3171 msgid "Very slow" msgstr "" -#: Client/core/CSettings.cpp:1032 Client/core/CSettings.cpp:1045 -#: Client/core/CSettings.cpp:1058 Client/core/CSettings.cpp:1072 -#: Client/core/CSettings.cpp:1098 Client/core/CSettings.cpp:1110 -#: Client/core/CSettings.cpp:1202 Client/core/CSettings.cpp:1222 -#: Client/core/CSettings.cpp:3163 Client/core/CSettings.cpp:3170 -#: Client/core/CSettings.cpp:3177 Client/core/CSettings.cpp:3186 -#: Client/core/CSettings.cpp:3199 +#: Client/core/CSettings.cpp:1042 Client/core/CSettings.cpp:1055 +#: Client/core/CSettings.cpp:1068 Client/core/CSettings.cpp:1082 +#: Client/core/CSettings.cpp:1108 Client/core/CSettings.cpp:1120 +#: Client/core/CSettings.cpp:1212 Client/core/CSettings.cpp:1232 +#: Client/core/CSettings.cpp:3173 Client/core/CSettings.cpp:3180 +#: Client/core/CSettings.cpp:3187 Client/core/CSettings.cpp:3196 +#: Client/core/CSettings.cpp:3209 msgid "Default" msgstr "" -#: Client/core/CSettings.cpp:1033 Client/core/CSettings.cpp:3165 +#: Client/core/CSettings.cpp:1043 Client/core/CSettings.cpp:3175 msgid "Fast" msgstr "" -#: Client/core/CSettings.cpp:1084 Client/core/CSettings.cpp:3141 +#: Client/core/CSettings.cpp:1094 Client/core/CSettings.cpp:3151 msgid "Normal" msgstr "" -#: Client/core/CSettings.cpp:1085 Client/core/CSettings.cpp:3143 +#: Client/core/CSettings.cpp:1095 Client/core/CSettings.cpp:3153 msgid "Above normal" msgstr "" -#: Client/core/CSettings.cpp:1121 +#: Client/core/CSettings.cpp:1131 msgid "Min" msgstr "" -#: Client/core/CSettings.cpp:1134 +#: Client/core/CSettings.cpp:1144 msgid "Max" msgstr "" #. Windows 8 compatibility -#: Client/core/CSettings.cpp:1141 +#: Client/core/CSettings.cpp:1151 msgid "Windows 8 compatibility:" msgstr "" -#: Client/core/CSettings.cpp:1145 +#: Client/core/CSettings.cpp:1155 msgid "16-bit color" msgstr "" -#: Client/core/CSettings.cpp:1150 +#: Client/core/CSettings.cpp:1160 msgid "Mouse fix" msgstr "" #. Cache path info -#: Client/core/CSettings.cpp:1168 +#: Client/core/CSettings.cpp:1178 msgid "Client resource files:" msgstr "" -#: Client/core/CSettings.cpp:1172 +#: Client/core/CSettings.cpp:1182 msgid "Show in Explorer" msgstr "" #. Auto updater section label -#: Client/core/CSettings.cpp:1187 Client/core/CSettings.cpp:1190 +#: Client/core/CSettings.cpp:1197 Client/core/CSettings.cpp:1200 msgid "Auto updater" msgstr "" #. Check for updates -#: Client/core/CSettings.cpp:1228 +#: Client/core/CSettings.cpp:1238 msgid "Check for update now" msgstr "" -#: Client/core/CSettings.cpp:1382 +#: Client/core/CSettings.cpp:1392 msgid "Some settings will be changed when you next start MTA" msgstr "" -#: Client/core/CSettings.cpp:1383 +#: Client/core/CSettings.cpp:1393 msgid "" "\n" "\n" "Do you want to restart now?" msgstr "" -#: Client/core/CSettings.cpp:1386 +#: Client/core/CSettings.cpp:1396 msgid "RESTART REQUIRED" msgstr "" -#: Client/core/CSettings.cpp:1406 +#: Client/core/CSettings.cpp:1416 msgid "Some settings will be changed when you disconnect the current server" msgstr "" -#: Client/core/CSettings.cpp:1407 +#: Client/core/CSettings.cpp:1417 msgid "" "\n" "\n" "Do you want to disconnect now?" msgstr "" -#: Client/core/CSettings.cpp:1410 +#: Client/core/CSettings.cpp:1420 msgid "DISCONNECT REQUIRED" msgstr "" #. Update the joystick name -#: Client/core/CSettings.cpp:1737 +#: Client/core/CSettings.cpp:1747 msgid "Joypad not detected - Check connections and restart game" msgstr "" -#: Client/core/CSettings.cpp:1932 +#: Client/core/CSettings.cpp:1942 msgid "Binding axis" msgstr "" -#: Client/core/CSettings.cpp:1932 +#: Client/core/CSettings.cpp:1942 msgid "Move an axis to bind, or escape to clear" msgstr "" -#: Client/core/CSettings.cpp:2009 +#: Client/core/CSettings.cpp:2019 msgid "Language:" msgstr "" -#: Client/core/CSettings.cpp:2009 +#: Client/core/CSettings.cpp:2019 msgid "Skin:" msgstr "" -#: Client/core/CSettings.cpp:2009 +#: Client/core/CSettings.cpp:2019 msgid "Presets:" msgstr "" -#: Client/core/CSettings.cpp:2058 +#: Client/core/CSettings.cpp:2068 msgid "Chat" msgstr "" -#: Client/core/CSettings.cpp:2075 +#: Client/core/CSettings.cpp:2085 msgid "Load" msgstr "" -#: Client/core/CSettings.cpp:2087 +#: Client/core/CSettings.cpp:2097 msgid "Colors" msgstr "" -#: Client/core/CSettings.cpp:2088 +#: Client/core/CSettings.cpp:2098 msgid "Layout" msgstr "" -#: Client/core/CSettings.cpp:2089 Client/core/CSettings.cpp:2335 +#: Client/core/CSettings.cpp:2099 Client/core/CSettings.cpp:2345 msgid "Options" msgstr "" -#: Client/core/CSettings.cpp:2095 +#: Client/core/CSettings.cpp:2105 msgid "Chat Background" msgstr "" -#: Client/core/CSettings.cpp:2095 +#: Client/core/CSettings.cpp:2105 msgid "Chat Text" msgstr "" -#: Client/core/CSettings.cpp:2095 +#: Client/core/CSettings.cpp:2105 msgid "Input Background" msgstr "" -#: Client/core/CSettings.cpp:2095 +#: Client/core/CSettings.cpp:2105 msgid "Input Text" msgstr "" -#: Client/core/CSettings.cpp:2118 +#: Client/core/CSettings.cpp:2128 msgid "Lines:" msgstr "" -#: Client/core/CSettings.cpp:2118 +#: Client/core/CSettings.cpp:2128 msgid "Scale:" msgstr "" -#: Client/core/CSettings.cpp:2118 +#: Client/core/CSettings.cpp:2128 msgid "Width:" msgstr "" -#: Client/core/CSettings.cpp:2121 +#: Client/core/CSettings.cpp:2131 msgid "Size" msgstr "" -#: Client/core/CSettings.cpp:2170 +#: Client/core/CSettings.cpp:2180 msgid "after" msgstr "" -#: Client/core/CSettings.cpp:2170 +#: Client/core/CSettings.cpp:2180 msgid "for" msgstr "" -#: Client/core/CSettings.cpp:2170 +#: Client/core/CSettings.cpp:2180 msgid "sec" msgstr "" -#: Client/core/CSettings.cpp:2173 +#: Client/core/CSettings.cpp:2183 msgid "Fading" msgstr "" -#: Client/core/CSettings.cpp:2179 +#: Client/core/CSettings.cpp:2189 msgid "Fade out old lines" msgstr "" -#: Client/core/CSettings.cpp:2219 +#: Client/core/CSettings.cpp:2229 msgid "Horizontal:" msgstr "" -#: Client/core/CSettings.cpp:2219 +#: Client/core/CSettings.cpp:2229 msgid "Vertical:" msgstr "" -#: Client/core/CSettings.cpp:2219 +#: Client/core/CSettings.cpp:2229 msgid "Text-Align:" msgstr "" -#: Client/core/CSettings.cpp:2219 +#: Client/core/CSettings.cpp:2229 msgid "X-Offset:" msgstr "" -#: Client/core/CSettings.cpp:2220 +#: Client/core/CSettings.cpp:2230 msgid "Y-Offset:" msgstr "" -#: Client/core/CSettings.cpp:2226 +#: Client/core/CSettings.cpp:2236 msgid "Position" msgstr "" -#: Client/core/CSettings.cpp:2241 Client/core/CSettings.cpp:2255 +#: Client/core/CSettings.cpp:2251 Client/core/CSettings.cpp:2265 msgid "Center" msgstr "" -#: Client/core/CSettings.cpp:2254 +#: Client/core/CSettings.cpp:2264 msgid "Top" msgstr "" -#: Client/core/CSettings.cpp:2256 +#: Client/core/CSettings.cpp:2266 msgid "Bottom" msgstr "" -#: Client/core/CSettings.cpp:2304 +#: Client/core/CSettings.cpp:2314 msgid "Font" msgstr "" -#: Client/core/CSettings.cpp:2341 +#: Client/core/CSettings.cpp:2351 msgid "Hide background when not typing" msgstr "" -#: Client/core/CSettings.cpp:2346 +#: Client/core/CSettings.cpp:2356 msgid "Nickname completion using the \"Tab\" key" msgstr "" -#: Client/core/CSettings.cpp:2351 +#: Client/core/CSettings.cpp:2361 msgid "Allow server to flash the window" msgstr "" -#: Client/core/CSettings.cpp:2356 +#: Client/core/CSettings.cpp:2366 msgid "Allow tray balloon notifications" msgstr "" -#: Client/core/CSettings.cpp:2361 +#: Client/core/CSettings.cpp:2371 msgid "Chat text black/white outline" msgstr "" @@ -2756,85 +2764,85 @@ msgstr "" #. SString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); #. Create a messagebox to notify the user #. sSString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); -#: Client/core/CSettings.cpp:2610 Client/core/CSettings.cpp:2617 +#: Client/core/CSettings.cpp:2620 Client/core/CSettings.cpp:2627 msgid "Press a key to bind, or escape to clear" msgstr "" -#: Client/core/CSettings.cpp:2611 +#: Client/core/CSettings.cpp:2621 msgid "Binding a primary key" msgstr "" -#: Client/core/CSettings.cpp:2618 +#: Client/core/CSettings.cpp:2628 msgid "Binding a secondary key" msgstr "" -#: Client/core/CSettings.cpp:2694 +#: Client/core/CSettings.cpp:2704 msgid "GTA GAME CONTROLS" msgstr "" -#: Client/core/CSettings.cpp:2696 +#: Client/core/CSettings.cpp:2706 msgid "MULTIPLAYER CONTROLS" msgstr "" -#: Client/core/CSettings.cpp:2941 Client/core/CSettings.cpp:4764 +#: Client/core/CSettings.cpp:2951 Client/core/CSettings.cpp:4797 msgid "Your nickname contains invalid characters!" msgstr "" -#: Client/core/CSettings.cpp:3778 +#: Client/core/CSettings.cpp:3811 msgid "Red:" msgstr "" -#: Client/core/CSettings.cpp:3778 +#: Client/core/CSettings.cpp:3811 msgid "Green:" msgstr "" -#: Client/core/CSettings.cpp:3778 +#: Client/core/CSettings.cpp:3811 msgid "Blue:" msgstr "" -#: Client/core/CSettings.cpp:3778 +#: Client/core/CSettings.cpp:3811 msgid "Transparency:" msgstr "" -#: Client/core/CSettings.cpp:3781 +#: Client/core/CSettings.cpp:3814 msgid "Color" msgstr "" -#: Client/core/CSettings.cpp:3858 +#: Client/core/CSettings.cpp:3891 msgid "Preview" msgstr "" -#: Client/core/CSettings.cpp:4166 +#: Client/core/CSettings.cpp:4199 msgid "Please disconnect before changing language" msgstr "" -#: Client/core/CSettings.cpp:4194 +#: Client/core/CSettings.cpp:4227 msgid "Please disconnect before changing skin" msgstr "" -#: Client/core/CSettings.cpp:4482 +#: Client/core/CSettings.cpp:4515 msgid "" "Volmetric shadows can cause some systems to slow down.\n" "\n" "Are you sure you want to enable them?" msgstr "" -#: Client/core/CSettings.cpp:4486 +#: Client/core/CSettings.cpp:4519 msgid "PERFORMANCE WARNING" msgstr "" -#: Client/core/CSettings.cpp:4506 +#: Client/core/CSettings.cpp:4539 msgid "" "Screen upload is required by some servers for anti-cheat purposes.\n" "\n" "(The chat box and GUI is excluded from the upload)\n" msgstr "" -#: Client/core/CSettings.cpp:4508 +#: Client/core/CSettings.cpp:4541 msgid "SCREEN UPLOAD INFORMATION" msgstr "" -#: Client/core/CSettings.cpp:4523 +#: Client/core/CSettings.cpp:4556 msgid "" "Some scripts may play sounds, such as radio, from the internet.\n" "\n" @@ -2842,11 +2850,11 @@ msgid "" "bandwidth consumption.\n" msgstr "" -#: Client/core/CSettings.cpp:4526 +#: Client/core/CSettings.cpp:4559 msgid "EXTERNAL SOUNDS" msgstr "" -#: Client/core/CSettings.cpp:4555 +#: Client/core/CSettings.cpp:4588 msgid "" "It seems that you have the Rich Presence connection option enabled.\n" "Do you want to allow servers to share their data?\n" @@ -2854,11 +2862,11 @@ msgid "" "This includes yours unique ID identifier." msgstr "" -#: Client/core/CSettings.cpp:4560 +#: Client/core/CSettings.cpp:4593 msgid "CONSENT TO ALLOW DATA SHARING" msgstr "" -#: Client/core/CSettings.cpp:4584 +#: Client/core/CSettings.cpp:4617 msgid "" "Some files in your GTA:SA data directory are customized.\n" "MTA will only use these modified files if this check box is ticked.\n" @@ -2868,7 +2876,7 @@ msgid "" "Are you sure you want to use them?" msgstr "" -#: Client/core/CSettings.cpp:4633 +#: Client/core/CSettings.cpp:4666 msgid "" "Enabling DPI awareness is an experimental feature and\n" "we only recommend it when you play MTA:SA on a scaled monitor.\n" @@ -2877,77 +2885,77 @@ msgid "" "Are you sure you want to enable this option?" msgstr "" -#: Client/core/CSettings.cpp:4639 +#: Client/core/CSettings.cpp:4672 msgid "EXPERIMENTAL FEATURE" msgstr "" -#: Client/core/CSettings.cpp:4782 +#: Client/core/CSettings.cpp:4815 msgid "Please enter a nickname" msgstr "" -#: Client/core/CSettings.cpp:4783 +#: Client/core/CSettings.cpp:4816 msgid "" "Please enter a nickname to be used ingame. \n" "This will be your name when you connect to and play in a server" msgstr "" -#: Client/core/CSettings.cpp:4801 +#: Client/core/CSettings.cpp:4834 msgid "Very experimental feature." msgstr "" -#: Client/core/CSettings.cpp:4803 +#: Client/core/CSettings.cpp:4836 msgid "Stops stalls with CJ variations (Uses 65MB more RAM)" msgstr "" -#: Client/core/CSettings.cpp:4805 +#: Client/core/CSettings.cpp:4838 msgid "Older routers may require a slower scan speed." msgstr "" -#: Client/core/CSettings.cpp:4807 +#: Client/core/CSettings.cpp:4840 msgid "Switch on to use only one connection when downloading." msgstr "" -#: Client/core/CSettings.cpp:4809 +#: Client/core/CSettings.cpp:4842 msgid "Tag network packets to help ISPs identify MTA traffic." msgstr "" -#: Client/core/CSettings.cpp:4811 +#: Client/core/CSettings.cpp:4844 msgid "Spinning circle animation at the bottom of the screen" msgstr "" -#: Client/core/CSettings.cpp:4813 +#: Client/core/CSettings.cpp:4846 msgid "Select default always. (This setting is not saved)" msgstr "" -#: Client/core/CSettings.cpp:4815 +#: Client/core/CSettings.cpp:4848 msgid "Maximum is usually best" msgstr "" -#: Client/core/CSettings.cpp:4817 Client/core/CSettings.cpp:4819 +#: Client/core/CSettings.cpp:4850 Client/core/CSettings.cpp:4852 msgid "Auto updater:" msgstr "" -#: Client/core/CSettings.cpp:4817 +#: Client/core/CSettings.cpp:4850 msgid "Select default unless you like filling out bug reports." msgstr "" -#: Client/core/CSettings.cpp:4819 +#: Client/core/CSettings.cpp:4852 msgid "Select default to automatically install important updates." msgstr "" -#: Client/core/CSettings.cpp:4821 +#: Client/core/CSettings.cpp:4854 msgid "16-bit color:" msgstr "" -#: Client/core/CSettings.cpp:4821 +#: Client/core/CSettings.cpp:4854 msgid "Enable 16 bit color modes - Requires MTA restart" msgstr "" -#: Client/core/CSettings.cpp:4823 +#: Client/core/CSettings.cpp:4856 msgid "Mouse fix:" msgstr "" -#: Client/core/CSettings.cpp:4823 +#: Client/core/CSettings.cpp:4856 msgid "Mouse movement fix - May need PC restart" msgstr "" From 8e66bddd29fd7f2d566826022c286a9cbb31b3f0 Mon Sep 17 00:00:00 2001 From: Dutchman101 <12105539+Dutchman101@users.noreply.github.com> Date: Sun, 20 Oct 2024 07:44:09 +0000 Subject: [PATCH 34/40] Update CEF to 130.1.2+g48f3ef6+chromium-130.0.6723.44 --- utils/buildactions/install_cef.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/buildactions/install_cef.lua b/utils/buildactions/install_cef.lua index 65b686aa56..364bedf3e2 100644 --- a/utils/buildactions/install_cef.lua +++ b/utils/buildactions/install_cef.lua @@ -9,8 +9,8 @@ local CEF_URL_PREFIX = "https://cef-builds.spotifycdn.com/cef_binary_" local CEF_URL_SUFFIX = "_windows32_minimal.tar.bz2" -- Change here to update CEF version -local CEF_VERSION = "129.0.12+gf09539f+chromium-129.0.6668.101" -local CEF_HASH = "ec759dbfafafac2ae26f4960caad1c8464205a7787ec247e0fc21ab4620c8a5c" +local CEF_VERSION = "130.1.2+g48f3ef6+chromium-130.0.6723.44" +local CEF_HASH = "f436f0f23caa8167d14e8de331d15fbb534e411f4235895024c2e242510e8deb" function make_cef_download_url() return CEF_URL_PREFIX..http.escapeUrlParam(CEF_VERSION)..CEF_URL_SUFFIX From 9e804de1322d50aa2e0cea1c2960b05bbe3fd99b Mon Sep 17 00:00:00 2001 From: lopsi <40902730+Lpsd@users.noreply.github.com> Date: Tue, 22 Oct 2024 00:21:58 +0200 Subject: [PATCH 35/40] Remove CEF GPU compositing (#3821) --- Client/cefweb/CWebApp.cpp | 9 +++------ Client/cefweb/CWebCore.cpp | 8 +------- Client/cefweb/CWebCore.h | 4 +--- Client/core/CClientVariables.cpp | 1 - Client/core/CCore.cpp | 4 +--- Client/core/CSettings.cpp | 30 ++--------------------------- Client/core/CSettings.h | 2 -- Client/sdk/core/CWebCoreInterface.h | 3 +-- 8 files changed, 9 insertions(+), 52 deletions(-) diff --git a/Client/cefweb/CWebApp.cpp b/Client/cefweb/CWebApp.cpp index 6013d326d6..dde8e11863 100644 --- a/Client/cefweb/CWebApp.cpp +++ b/Client/cefweb/CWebApp.cpp @@ -23,13 +23,10 @@ void CWebApp::OnBeforeCommandLineProcessing(const CefString& process_type, CefRe { CWebCore* pWebCore = static_cast(g_pCore->GetWebCore()); - if (!pWebCore->GetGPUEnabled()) // if GPU is disabled... - { - command_line->AppendSwitch("disable-gpu-compositing"); + if (!pWebCore->GetGPUEnabled()) command_line->AppendSwitch("disable-gpu"); - } - else if (!pWebCore->GetGPUCompositingEnabled()) // if GPU is enabled, but compositing is disabled... - command_line->AppendSwitch("disable-gpu-compositing"); + + command_line->AppendSwitch("disable-gpu-compositing"); // always disable this, causes issues with official builds // command_line->AppendSwitch("disable-d3d11"); command_line->AppendSwitch("enable-begin-frame-scheduling"); diff --git a/Client/cefweb/CWebCore.cpp b/Client/cefweb/CWebCore.cpp index c30700b88b..bd26c68711 100644 --- a/Client/cefweb/CWebCore.cpp +++ b/Client/cefweb/CWebCore.cpp @@ -49,13 +49,12 @@ CWebCore::~CWebCore() delete m_pXmlConfig; } -bool CWebCore::Initialise(bool gpuEnabled, bool gpuCompositingEnabled) +bool CWebCore::Initialise(bool gpuEnabled) { CefMainArgs mainArgs; void* sandboxInfo = nullptr; m_bGPUEnabled = gpuEnabled; - m_bGPUCompositingEnabled = gpuCompositingEnabled; CefRefPtr app(new CWebApp); @@ -878,8 +877,3 @@ bool CWebCore::GetGPUEnabled() const noexcept { return m_bGPUEnabled; } - -bool CWebCore::GetGPUCompositingEnabled() const noexcept -{ - return m_bGPUCompositingEnabled; -} diff --git a/Client/cefweb/CWebCore.h b/Client/cefweb/CWebCore.h index 70a307372d..815e4b5815 100644 --- a/Client/cefweb/CWebCore.h +++ b/Client/cefweb/CWebCore.h @@ -54,7 +54,7 @@ class CWebCore : public CWebCoreInterface public: CWebCore(); ~CWebCore(); - bool Initialise(bool gpuEnabled, bool gpuCompositingEnabled) override; + bool Initialise(bool gpuEnabled) override; CWebViewInterface* CreateWebView(unsigned int uiWidth, unsigned int uiHeight, bool bIsLocal, CWebBrowserItem* pWebBrowserRenderItem, bool bTransparent); void DestroyWebView(CWebViewInterface* pWebViewInterface); @@ -109,7 +109,6 @@ class CWebCore : public CWebCoreInterface static void StaticFetchBlacklistFinished(const SHttpDownloadResult& result); bool GetGPUEnabled() const noexcept; - bool GetGPUCompositingEnabled() const noexcept; private: typedef std::pair WebFilterPair; @@ -135,5 +134,4 @@ class CWebCore : public CWebCoreInterface // Shouldn't be changed after init bool m_bGPUEnabled; - bool m_bGPUCompositingEnabled; }; diff --git a/Client/core/CClientVariables.cpp b/Client/core/CClientVariables.cpp index a64cf8f724..8019c2687b 100644 --- a/Client/core/CClientVariables.cpp +++ b/Client/core/CClientVariables.cpp @@ -359,7 +359,6 @@ void CClientVariables::LoadDefaults() DEFAULT("discord_rpc_share_data_firsttime", false); // Display the user data sharing consent dialog box - for the first time DEFAULT("_beta_qc_rightclick_command", _S("reconnect")); // Command to run when right clicking quick connect (beta - can be removed at any time) DEFAULT("browser_enable_gpu", true); // Enable GPU in CEF? (allows stuff like WebGL to function) - DEFAULT("browser_enable_gpu_compositing", true); // Enable GPU compositing in CEF? (required GPU enabled) if (!Exists("locale")) { diff --git a/Client/core/CCore.cpp b/Client/core/CCore.cpp index cc15103bef..12e8cf81d5 100644 --- a/Client/core/CCore.cpp +++ b/Client/core/CCore.cpp @@ -1156,13 +1156,11 @@ CWebCoreInterface* CCore::GetWebCore() if (m_pWebCore == nullptr) { bool gpuEnabled; - bool gpuCompositingEnabled; auto cvars = g_pCore->GetCVars(); cvars->Get("browser_enable_gpu", gpuEnabled); - cvars->Get("browser_enable_gpu_compositing", gpuCompositingEnabled); m_pWebCore = CreateModule(m_WebCoreModule, "CefWeb", "cefweb", "InitWebCoreInterface", this); - m_pWebCore->Initialise(gpuEnabled, gpuCompositingEnabled); + m_pWebCore->Initialise(gpuEnabled); } return m_pWebCore; } diff --git a/Client/core/CSettings.cpp b/Client/core/CSettings.cpp index 6bd1dcae0d..1cfe5c90eb 100644 --- a/Client/core/CSettings.cpp +++ b/Client/core/CSettings.cpp @@ -918,14 +918,8 @@ void CSettings::CreateGUI() m_pCheckBoxRemoteJavascript->AutoSize(NULL, 20.0f); m_pCheckBoxBrowserGPUEnabled = reinterpret_cast(pManager->CreateCheckBox(m_pTabBrowser, _("Enable GPU rendering"), true)); - m_pCheckBoxBrowserGPUEnabled->SetPosition(CVector2D(vecTemp.fX + 300.0f, vecTemp.fY - 20.0f)); + m_pCheckBoxBrowserGPUEnabled->SetPosition(CVector2D(vecTemp.fX + 300.0f, vecTemp.fY - 25.0f)); m_pCheckBoxBrowserGPUEnabled->AutoSize(NULL, 20.0f); - m_pCheckBoxBrowserGPUEnabled->SetClickHandler(GUI_CALLBACK(&CSettings::OnGPUSettingChanged, this)); - - m_pCheckBoxBrowserGPUCompositingEnabled = - reinterpret_cast(pManager->CreateCheckBox(m_pTabBrowser, _("Enable GPU compositing"), true)); - m_pCheckBoxBrowserGPUCompositingEnabled->SetPosition(CVector2D(vecTemp.fX + 300.0f, vecTemp.fY)); - m_pCheckBoxBrowserGPUCompositingEnabled->AutoSize(NULL, 20.0f); m_pLabelBrowserCustomBlacklist = reinterpret_cast(pManager->CreateLabel(m_pTabBrowser, _("Custom blacklist"))); m_pLabelBrowserCustomBlacklist->SetPosition(CVector2D(vecTemp.fX, vecTemp.fY + 30.0f)); @@ -3300,12 +3294,6 @@ void CSettings::LoadData() CVARS_GET("browser_enable_gpu", bVar); m_pCheckBoxBrowserGPUEnabled->SetSelected(bVar); - if (!bVar) - m_pCheckBoxBrowserGPUCompositingEnabled->SetEnabled(false); - - CVARS_GET("browser_enable_gpu_compositing", bVar); - m_pCheckBoxBrowserGPUCompositingEnabled->SetSelected(bVar); - ReloadBrowserLists(); } @@ -3736,13 +3724,6 @@ void CSettings::SaveData() bool bBrowserGPUSettingChanged = (bBrowserGPUSetting != bBrowserGPUEnabled); CVARS_SET("browser_enable_gpu", bBrowserGPUSetting); - bool bBrowserGPUCompositingEnabled = false; - CVARS_GET("browser_enable_gpu_compositing", bBrowserGPUCompositingEnabled); - - bool bBrowserGPUCompositingSetting = m_pCheckBoxBrowserGPUCompositingEnabled->GetSelected(); - bool bBrowserGPUCompositingSettingChanged = (bBrowserGPUCompositingSetting != bBrowserGPUCompositingEnabled); - CVARS_SET("browser_enable_gpu_compositing", bBrowserGPUCompositingSetting); - // Ensure CVARS ranges ok CClientVariables::GetSingleton().ValidateValues(); @@ -3752,8 +3733,7 @@ void CSettings::SaveData() gameSettings->Save(); // Ask to restart? - if (bIsVideoModeChanged || bIsAntiAliasingChanged || bIsCustomizedSAFilesChanged || processsDPIAwareChanged || bBrowserGPUSettingChanged || - bBrowserGPUCompositingSettingChanged) + if (bIsVideoModeChanged || bIsAntiAliasingChanged || bIsCustomizedSAFilesChanged || processsDPIAwareChanged || bBrowserGPUSettingChanged) ShowRestartQuestion(); else if (CModManager::GetSingleton().IsLoaded() && bBrowserSettingChanged) ShowDisconnectQuestion(); @@ -4906,9 +4886,3 @@ bool CSettings::IsActive() { return m_pWindow->IsActive(); } - -bool CSettings::OnGPUSettingChanged(CGUIElement* pElement) -{ - m_pCheckBoxBrowserGPUCompositingEnabled->SetEnabled(m_pCheckBoxBrowserGPUEnabled->GetSelected()); - return true; -} diff --git a/Client/core/CSettings.h b/Client/core/CSettings.h index 014590b80c..db6c077df4 100644 --- a/Client/core/CSettings.h +++ b/Client/core/CSettings.h @@ -339,7 +339,6 @@ class CSettings CGUIGridList* m_pGridBrowserWhitelist; CGUIButton* m_pButtonBrowserWhitelistRemove; CGUICheckBox* m_pCheckBoxBrowserGPUEnabled; - CGUICheckBox* m_pCheckBoxBrowserGPUCompositingEnabled; bool m_bBrowserListsChanged; bool m_bBrowserListsLoadEnabled; @@ -384,7 +383,6 @@ class CSettings bool OnBrowserWhitelistRemove(CGUIElement* pElement); bool OnBrowserWhitelistDomainAddFocused(CGUIElement* pElement); bool OnBrowserWhitelistDomainAddDefocused(CGUIElement* pElement); - bool OnGPUSettingChanged(CGUIElement* pElement); bool OnMouseDoubleClick(CGUIMouseEventArgs Args); diff --git a/Client/sdk/core/CWebCoreInterface.h b/Client/sdk/core/CWebCoreInterface.h index 6bac4b777e..6b95690756 100644 --- a/Client/sdk/core/CWebCoreInterface.h +++ b/Client/sdk/core/CWebCoreInterface.h @@ -49,7 +49,7 @@ class CWebCoreInterface { public: virtual ~CWebCoreInterface() {} - virtual bool Initialise(bool gpuEnabled, bool gpuCompositingEnabled) = 0; + virtual bool Initialise(bool gpuEnabled) = 0; virtual CWebViewInterface* CreateWebView(unsigned int uiWidth, unsigned int uiHeight, bool bIsLocal, CWebBrowserItem* pWebBrowserRenderItem, bool bTransparent) = 0; @@ -92,5 +92,4 @@ class CWebCoreInterface eWebFilterState state = eWebFilterState::WEBFILTER_ALL) = 0; virtual bool GetGPUEnabled() const noexcept = 0; - virtual bool GetGPUCompositingEnabled() const noexcept = 0; }; From 792d9aa6bbd6bdc451f3e78afacda5fdeb5df11b Mon Sep 17 00:00:00 2001 From: Pot Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 22:24:06 +0000 Subject: [PATCH 36/40] Update client en_US pot [ci skip] --- .../MTA/locale/en_US/client.pot | 416 +++++++++--------- 1 file changed, 206 insertions(+), 210 deletions(-) diff --git a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot index 8c1697efff..5d498383f8 100644 --- a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot +++ b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: MTA San Andreas 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-20 07:42+0000\n" +"POT-Creation-Date: 2024-10-21 22:24+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -35,7 +35,7 @@ msgstr "" msgid "Remember decision" msgstr "" -#: Client/cefweb/CWebsiteRequests.cpp:51 Client/core/CSettings.cpp:984 +#: Client/cefweb/CWebsiteRequests.cpp:51 Client/core/CSettings.cpp:978 msgid "Allow" msgstr "" @@ -160,7 +160,7 @@ msgstr "" #: Client/mods/deathmatch/logic/CResource.cpp:375 #: Client/mods/deathmatch/logic/CClientGame.cpp:1089 Client/core/CCore.cpp:674 -#: Client/core/CSettings.cpp:3501 +#: Client/core/CSettings.cpp:3489 msgid "In-game" msgstr "" @@ -275,7 +275,7 @@ msgstr "" #: Client/mods/deathmatch/logic/CClientGame.cpp:533 #: Client/core/CMainMenu.cpp:304 Client/core/CCore.cpp:674 -#: Client/core/CSettings.cpp:3497 +#: Client/core/CSettings.cpp:3485 msgid "Main menu" msgstr "" @@ -298,10 +298,10 @@ msgstr "" #: Client/loader/MainFunctions.cpp:252 Client/loader/MainFunctions.cpp:267 #: Client/loader/MainFunctions.cpp:269 Client/loader/MainFunctions.cpp:846 #: Client/loader/CInstallManager.cpp:552 Client/loader/CInstallManager.cpp:561 -#: Client/core/CGUI.cpp:93 Client/core/CCore.cpp:1281 -#: Client/core/CCore.cpp:1294 Client/core/CSettings.cpp:2951 -#: Client/core/CSettings.cpp:4199 Client/core/CSettings.cpp:4227 -#: Client/core/CSettings.cpp:4797 Client/core/CConnectManager.cpp:80 +#: Client/core/CGUI.cpp:93 Client/core/CCore.cpp:1279 +#: Client/core/CCore.cpp:1292 Client/core/CSettings.cpp:2945 +#: Client/core/CSettings.cpp:4179 Client/core/CSettings.cpp:4207 +#: Client/core/CSettings.cpp:4777 Client/core/CConnectManager.cpp:80 #: Client/core/CConnectManager.cpp:111 Client/core/CConnectManager.cpp:127 #: Client/core/CConnectManager.cpp:263 Client/core/CConnectManager.cpp:321 #: Client/core/CConnectManager.cpp:404 Client/core/CConnectManager.cpp:411 @@ -678,7 +678,7 @@ msgstr "" #. * #: Client/mods/deathmatch/logic/CLocalServer.cpp:51 #: Client/core/CSettings.cpp:442 Client/core/CSettings.cpp:630 -#: Client/core/CSettings.cpp:904 Client/core/CSettings.cpp:2028 +#: Client/core/CSettings.cpp:904 Client/core/CSettings.cpp:2022 msgid "General" msgstr "" @@ -734,7 +734,7 @@ msgstr "" #: Client/gui/CGUIMessageBox_Impl.cpp:68 Client/loader/Dialogs.cpp:136 #: Client/core/CVersionUpdater.cpp:1790 Client/core/CVersionUpdater.cpp:1806 #: Client/core/CVersionUpdater.cpp:1841 Client/core/CSettings.cpp:132 -#: Client/core/CSettings.cpp:4817 +#: Client/core/CSettings.cpp:4797 msgid "Cancel" msgstr "" @@ -770,7 +770,7 @@ msgstr "" #: Client/core/CVersionUpdater.cpp:1956 Client/core/CVersionUpdater.cpp:1968 #: Client/core/CVersionUpdater.cpp:2120 Client/core/CVersionUpdater.cpp:2129 #: Client/core/CVersionUpdater.cpp:2138 Client/core/CVersionUpdater.cpp:2152 -#: Client/core/CSettings.cpp:127 Client/core/CSettings.cpp:4818 +#: Client/core/CSettings.cpp:127 Client/core/CSettings.cpp:4798 msgid "OK" msgstr "" @@ -784,9 +784,9 @@ msgstr "" #: Client/core/CVersionUpdater.cpp:1572 Client/core/CVersionUpdater.cpp:1590 #: Client/core/CVersionUpdater.cpp:1859 Client/core/CVersionUpdater.cpp:1878 #: Client/core/CQuestionBox.cpp:195 Client/core/CMainMenu.cpp:1200 -#: Client/core/CSettings.cpp:1399 Client/core/CSettings.cpp:1423 -#: Client/core/CSettings.cpp:4522 Client/core/CSettings.cpp:4596 -#: Client/core/CSettings.cpp:4626 Client/core/CSettings.cpp:4675 +#: Client/core/CSettings.cpp:1393 Client/core/CSettings.cpp:1417 +#: Client/core/CSettings.cpp:4502 Client/core/CSettings.cpp:4576 +#: Client/core/CSettings.cpp:4606 Client/core/CSettings.cpp:4655 #: Client/core/ServerBrowser/CServerInfo.cpp:481 msgid "Yes" msgstr "" @@ -913,10 +913,10 @@ msgstr "" #: Client/loader/Dialogs.cpp:132 Client/core/CVersionUpdater.cpp:1571 #: Client/core/CVersionUpdater.cpp:1589 Client/core/CVersionUpdater.cpp:1858 #: Client/core/CVersionUpdater.cpp:1877 Client/core/CQuestionBox.cpp:194 -#: Client/core/CMainMenu.cpp:1199 Client/core/CSettings.cpp:1398 -#: Client/core/CSettings.cpp:1422 Client/core/CSettings.cpp:4521 -#: Client/core/CSettings.cpp:4595 Client/core/CSettings.cpp:4625 -#: Client/core/CSettings.cpp:4674 Client/core/ServerBrowser/CServerInfo.cpp:481 +#: Client/core/CMainMenu.cpp:1199 Client/core/CSettings.cpp:1392 +#: Client/core/CSettings.cpp:1416 Client/core/CSettings.cpp:4501 +#: Client/core/CSettings.cpp:4575 Client/core/CSettings.cpp:4605 +#: Client/core/CSettings.cpp:4654 Client/core/ServerBrowser/CServerInfo.cpp:481 msgid "No" msgstr "" @@ -1123,12 +1123,12 @@ msgid "" msgstr "" #: Client/loader/MainFunctions.cpp:389 Client/core/CSettings.cpp:662 -#: Client/core/CSettings.cpp:1014 +#: Client/core/CSettings.cpp:1008 msgid "Fullscreen mode:" msgstr "" #: Client/loader/MainFunctions.cpp:389 Client/core/CSettings.cpp:670 -#: Client/core/CSettings.cpp:1625 +#: Client/core/CSettings.cpp:1619 msgid "Borderless window" msgstr "" @@ -1516,7 +1516,7 @@ msgstr "" msgid " - Unknown problem in _DialogUpdateResult" msgstr "" -#: Client/core/CVersionUpdater.cpp:2081 Client/core/CSettings.cpp:4623 +#: Client/core/CVersionUpdater.cpp:2081 Client/core/CSettings.cpp:4603 msgid "CUSTOMIZED GTA:SA FILES" msgstr "" @@ -1569,13 +1569,13 @@ msgstr "" msgid "Backwards" msgstr "" -#: Client/core/CKeyBinds.cpp:191 Client/core/CSettings.cpp:2250 -#: Client/core/CSettings.cpp:2278 +#: Client/core/CKeyBinds.cpp:191 Client/core/CSettings.cpp:2244 +#: Client/core/CSettings.cpp:2272 msgid "Left" msgstr "" -#: Client/core/CKeyBinds.cpp:192 Client/core/CSettings.cpp:2252 -#: Client/core/CSettings.cpp:2279 +#: Client/core/CKeyBinds.cpp:192 Client/core/CSettings.cpp:2246 +#: Client/core/CSettings.cpp:2273 msgid "Right" msgstr "" @@ -1895,102 +1895,102 @@ msgstr "" msgid "%s module is incorrect!" msgstr "" -#: Client/core/CCore.cpp:1281 +#: Client/core/CCore.cpp:1279 msgid "Error executing URL" msgstr "" -#: Client/core/CCore.cpp:1293 +#: Client/core/CCore.cpp:1291 #, c-format msgid "Error running mod specified in command line ('%s')" msgstr "" #. m_pCommands->Add ( "e", CCommandFuncs::Editor ); #. m_pCommands->Add ( "clear", CCommandFuncs::Clear ); -#: Client/core/CCore.cpp:1395 +#: Client/core/CCore.cpp:1393 msgid "this help screen" msgstr "" -#: Client/core/CCore.cpp:1396 Client/core/CCore.cpp:1397 +#: Client/core/CCore.cpp:1394 Client/core/CCore.cpp:1395 msgid "exits the application" msgstr "" -#: Client/core/CCore.cpp:1398 +#: Client/core/CCore.cpp:1396 msgid "shows the version" msgstr "" -#: Client/core/CCore.cpp:1399 +#: Client/core/CCore.cpp:1397 msgid "shows the time" msgstr "" -#: Client/core/CCore.cpp:1400 +#: Client/core/CCore.cpp:1398 msgid "shows the hud" msgstr "" -#: Client/core/CCore.cpp:1401 +#: Client/core/CCore.cpp:1399 msgid "shows all the binds" msgstr "" -#: Client/core/CCore.cpp:1402 +#: Client/core/CCore.cpp:1400 msgid "shows your serial" msgstr "" -#: Client/core/CCore.cpp:1411 +#: Client/core/CCore.cpp:1409 msgid "connects to a server (host port nick pass)" msgstr "" -#: Client/core/CCore.cpp:1412 +#: Client/core/CCore.cpp:1410 msgid "connects to a previous server" msgstr "" -#: Client/core/CCore.cpp:1413 +#: Client/core/CCore.cpp:1411 msgid "binds a key (key control)" msgstr "" -#: Client/core/CCore.cpp:1414 +#: Client/core/CCore.cpp:1412 msgid "unbinds a key (key)" msgstr "" -#: Client/core/CCore.cpp:1415 +#: Client/core/CCore.cpp:1413 msgid "copies the default gta controls" msgstr "" -#: Client/core/CCore.cpp:1416 +#: Client/core/CCore.cpp:1414 msgid "outputs a screenshot" msgstr "" -#: Client/core/CCore.cpp:1417 +#: Client/core/CCore.cpp:1415 msgid "immediately saves the config" msgstr "" -#: Client/core/CCore.cpp:1419 +#: Client/core/CCore.cpp:1417 msgid "clears the debug view" msgstr "" -#: Client/core/CCore.cpp:1420 +#: Client/core/CCore.cpp:1418 msgid "scrolls the chatbox upwards" msgstr "" -#: Client/core/CCore.cpp:1421 +#: Client/core/CCore.cpp:1419 msgid "scrolls the chatbox downwards" msgstr "" -#: Client/core/CCore.cpp:1422 +#: Client/core/CCore.cpp:1420 msgid "scrolls the debug view upwards" msgstr "" -#: Client/core/CCore.cpp:1423 +#: Client/core/CCore.cpp:1421 msgid "scrolls the debug view downwards" msgstr "" -#: Client/core/CCore.cpp:1426 +#: Client/core/CCore.cpp:1424 msgid "shows the memory statistics" msgstr "" -#: Client/core/CCore.cpp:1427 +#: Client/core/CCore.cpp:1425 msgid "shows the frame timing graph" msgstr "" -#: Client/core/CCore.cpp:1431 +#: Client/core/CCore.cpp:1429 msgid "for developers: reload news" msgstr "" @@ -2196,15 +2196,15 @@ msgstr "" msgid "Usertrack options" msgstr "" -#: Client/core/CSettings.cpp:573 Client/core/CSettings.cpp:3097 +#: Client/core/CSettings.cpp:573 Client/core/CSettings.cpp:3091 msgid "Radio" msgstr "" -#: Client/core/CSettings.cpp:574 Client/core/CSettings.cpp:3099 +#: Client/core/CSettings.cpp:574 Client/core/CSettings.cpp:3093 msgid "Random" msgstr "" -#: Client/core/CSettings.cpp:575 Client/core/CSettings.cpp:3101 +#: Client/core/CSettings.cpp:575 Client/core/CSettings.cpp:3095 msgid "Sequential" msgstr "" @@ -2279,11 +2279,11 @@ msgstr "" msgid "DPI aware" msgstr "" -#: Client/core/CSettings.cpp:669 Client/core/CSettings.cpp:1623 +#: Client/core/CSettings.cpp:669 Client/core/CSettings.cpp:1617 msgid "Standard" msgstr "" -#: Client/core/CSettings.cpp:671 Client/core/CSettings.cpp:1627 +#: Client/core/CSettings.cpp:671 Client/core/CSettings.cpp:1621 msgid "Borderless keep res" msgstr "" @@ -2291,57 +2291,57 @@ msgstr "" msgid "Mip Mapping" msgstr "" -#: Client/core/CSettings.cpp:743 Client/core/CSettings.cpp:1527 +#: Client/core/CSettings.cpp:743 Client/core/CSettings.cpp:1521 msgid "Low" msgstr "" -#: Client/core/CSettings.cpp:744 Client/core/CSettings.cpp:1529 +#: Client/core/CSettings.cpp:744 Client/core/CSettings.cpp:1523 msgid "Medium" msgstr "" -#: Client/core/CSettings.cpp:745 Client/core/CSettings.cpp:1096 -#: Client/core/CSettings.cpp:1531 Client/core/CSettings.cpp:3155 +#: Client/core/CSettings.cpp:745 Client/core/CSettings.cpp:1090 +#: Client/core/CSettings.cpp:1525 Client/core/CSettings.cpp:3149 msgid "High" msgstr "" -#: Client/core/CSettings.cpp:746 Client/core/CSettings.cpp:1533 +#: Client/core/CSettings.cpp:746 Client/core/CSettings.cpp:1527 msgid "Very high" msgstr "" #: Client/core/CSettings.cpp:761 Client/core/CSettings.cpp:784 -#: Client/core/CSettings.cpp:1027 Client/core/CSettings.cpp:1081 -#: Client/core/CSettings.cpp:1211 Client/core/CSettings.cpp:1537 -#: Client/core/CSettings.cpp:3162 Client/core/CSettings.cpp:3194 -#: Client/core/CSettings.cpp:3216 Client/core/CSettings.cpp:4267 +#: Client/core/CSettings.cpp:1021 Client/core/CSettings.cpp:1075 +#: Client/core/CSettings.cpp:1205 Client/core/CSettings.cpp:1531 +#: Client/core/CSettings.cpp:3156 Client/core/CSettings.cpp:3188 +#: Client/core/CSettings.cpp:3210 Client/core/CSettings.cpp:4247 msgid "Off" msgstr "" -#: Client/core/CSettings.cpp:785 Client/core/CSettings.cpp:1539 +#: Client/core/CSettings.cpp:785 Client/core/CSettings.cpp:1533 msgid "1x" msgstr "" -#: Client/core/CSettings.cpp:786 Client/core/CSettings.cpp:1541 +#: Client/core/CSettings.cpp:786 Client/core/CSettings.cpp:1535 msgid "2x" msgstr "" -#: Client/core/CSettings.cpp:787 Client/core/CSettings.cpp:1543 +#: Client/core/CSettings.cpp:787 Client/core/CSettings.cpp:1537 msgid "3x" msgstr "" -#: Client/core/CSettings.cpp:800 Client/core/CSettings.cpp:1029 -#: Client/core/CSettings.cpp:1549 Client/core/CSettings.cpp:3164 +#: Client/core/CSettings.cpp:800 Client/core/CSettings.cpp:1023 +#: Client/core/CSettings.cpp:1543 Client/core/CSettings.cpp:3158 msgid "Auto" msgstr "" -#: Client/core/CSettings.cpp:801 Client/core/CSettings.cpp:1551 +#: Client/core/CSettings.cpp:801 Client/core/CSettings.cpp:1545 msgid "4:3" msgstr "" -#: Client/core/CSettings.cpp:802 Client/core/CSettings.cpp:1553 +#: Client/core/CSettings.cpp:802 Client/core/CSettings.cpp:1547 msgid "16:10" msgstr "" -#: Client/core/CSettings.cpp:803 Client/core/CSettings.cpp:1555 +#: Client/core/CSettings.cpp:803 Client/core/CSettings.cpp:1549 msgid "16:9" msgstr "" @@ -2409,354 +2409,350 @@ msgstr "" msgid "Enable GPU rendering" msgstr "" -#: Client/core/CSettings.cpp:926 -msgid "Enable GPU compositing" -msgstr "" - -#: Client/core/CSettings.cpp:930 +#: Client/core/CSettings.cpp:924 msgid "Custom blacklist" msgstr "" -#: Client/core/CSettings.cpp:941 Client/core/CSettings.cpp:976 +#: Client/core/CSettings.cpp:935 Client/core/CSettings.cpp:970 msgid "Enter a domain e.g. google.com" msgstr "" -#: Client/core/CSettings.cpp:949 +#: Client/core/CSettings.cpp:943 msgid "Block" msgstr "" -#: Client/core/CSettings.cpp:957 Client/core/CSettings.cpp:992 +#: Client/core/CSettings.cpp:951 Client/core/CSettings.cpp:986 msgid "Domain" msgstr "" -#: Client/core/CSettings.cpp:959 Client/core/CSettings.cpp:994 +#: Client/core/CSettings.cpp:953 Client/core/CSettings.cpp:988 msgid "Remove domain" msgstr "" #. Reset vecTemp -#: Client/core/CSettings.cpp:965 +#: Client/core/CSettings.cpp:959 msgid "Custom whitelist" msgstr "" #. Misc section label -#: Client/core/CSettings.cpp:1007 +#: Client/core/CSettings.cpp:1001 msgid "Misc" msgstr "" #. Fast clothes loading -#: Client/core/CSettings.cpp:1013 Client/core/CSettings.cpp:1020 -#: Client/core/CSettings.cpp:4836 +#: Client/core/CSettings.cpp:1007 Client/core/CSettings.cpp:1014 +#: Client/core/CSettings.cpp:4816 msgid "Fast CJ clothes loading:" msgstr "" #. Browser scan speed -#: Client/core/CSettings.cpp:1013 Client/core/CSettings.cpp:1034 -#: Client/core/CSettings.cpp:4838 +#: Client/core/CSettings.cpp:1007 Client/core/CSettings.cpp:1028 +#: Client/core/CSettings.cpp:4818 msgid "Browser speed:" msgstr "" #. Single download -#: Client/core/CSettings.cpp:1013 Client/core/CSettings.cpp:1048 -#: Client/core/CSettings.cpp:4840 +#: Client/core/CSettings.cpp:1007 Client/core/CSettings.cpp:1042 +#: Client/core/CSettings.cpp:4820 msgid "Single connection:" msgstr "" #. Packet tag -#: Client/core/CSettings.cpp:1013 Client/core/CSettings.cpp:1061 -#: Client/core/CSettings.cpp:4842 +#: Client/core/CSettings.cpp:1007 Client/core/CSettings.cpp:1055 +#: Client/core/CSettings.cpp:4822 msgid "Packet tag:" msgstr "" #. Progress animation -#: Client/core/CSettings.cpp:1014 Client/core/CSettings.cpp:1074 -#: Client/core/CSettings.cpp:4844 +#: Client/core/CSettings.cpp:1008 Client/core/CSettings.cpp:1068 +#: Client/core/CSettings.cpp:4824 msgid "Progress animation:" msgstr "" #. Process priority -#: Client/core/CSettings.cpp:1014 Client/core/CSettings.cpp:1087 -#: Client/core/CSettings.cpp:4834 +#: Client/core/CSettings.cpp:1008 Client/core/CSettings.cpp:1081 +#: Client/core/CSettings.cpp:4814 msgid "Process priority:" msgstr "" #. Debug setting -#: Client/core/CSettings.cpp:1014 Client/core/CSettings.cpp:1101 -#: Client/core/CSettings.cpp:4846 +#: Client/core/CSettings.cpp:1008 Client/core/CSettings.cpp:1095 +#: Client/core/CSettings.cpp:4826 msgid "Debug setting:" msgstr "" #. Streaming memory -#: Client/core/CSettings.cpp:1015 Client/core/CSettings.cpp:1124 -#: Client/core/CSettings.cpp:4848 +#: Client/core/CSettings.cpp:1009 Client/core/CSettings.cpp:1118 +#: Client/core/CSettings.cpp:4828 msgid "Streaming memory:" msgstr "" #. Update build type -#: Client/core/CSettings.cpp:1015 Client/core/CSettings.cpp:1225 +#: Client/core/CSettings.cpp:1009 Client/core/CSettings.cpp:1219 msgid "Update build type:" msgstr "" #. UpdateAutoInstall -#: Client/core/CSettings.cpp:1015 Client/core/CSettings.cpp:1204 +#: Client/core/CSettings.cpp:1009 Client/core/CSettings.cpp:1198 msgid "Install important updates:" msgstr "" -#: Client/core/CSettings.cpp:1028 Client/core/CSettings.cpp:1056 -#: Client/core/CSettings.cpp:1069 Client/core/CSettings.cpp:3166 -#: Client/core/CSettings.cpp:3182 Client/core/CSettings.cpp:3189 +#: Client/core/CSettings.cpp:1022 Client/core/CSettings.cpp:1050 +#: Client/core/CSettings.cpp:1063 Client/core/CSettings.cpp:3160 +#: Client/core/CSettings.cpp:3176 Client/core/CSettings.cpp:3183 msgid "On" msgstr "" -#: Client/core/CSettings.cpp:1041 Client/core/CSettings.cpp:3171 +#: Client/core/CSettings.cpp:1035 Client/core/CSettings.cpp:3165 msgid "Very slow" msgstr "" -#: Client/core/CSettings.cpp:1042 Client/core/CSettings.cpp:1055 -#: Client/core/CSettings.cpp:1068 Client/core/CSettings.cpp:1082 -#: Client/core/CSettings.cpp:1108 Client/core/CSettings.cpp:1120 -#: Client/core/CSettings.cpp:1212 Client/core/CSettings.cpp:1232 -#: Client/core/CSettings.cpp:3173 Client/core/CSettings.cpp:3180 -#: Client/core/CSettings.cpp:3187 Client/core/CSettings.cpp:3196 -#: Client/core/CSettings.cpp:3209 +#: Client/core/CSettings.cpp:1036 Client/core/CSettings.cpp:1049 +#: Client/core/CSettings.cpp:1062 Client/core/CSettings.cpp:1076 +#: Client/core/CSettings.cpp:1102 Client/core/CSettings.cpp:1114 +#: Client/core/CSettings.cpp:1206 Client/core/CSettings.cpp:1226 +#: Client/core/CSettings.cpp:3167 Client/core/CSettings.cpp:3174 +#: Client/core/CSettings.cpp:3181 Client/core/CSettings.cpp:3190 +#: Client/core/CSettings.cpp:3203 msgid "Default" msgstr "" -#: Client/core/CSettings.cpp:1043 Client/core/CSettings.cpp:3175 +#: Client/core/CSettings.cpp:1037 Client/core/CSettings.cpp:3169 msgid "Fast" msgstr "" -#: Client/core/CSettings.cpp:1094 Client/core/CSettings.cpp:3151 +#: Client/core/CSettings.cpp:1088 Client/core/CSettings.cpp:3145 msgid "Normal" msgstr "" -#: Client/core/CSettings.cpp:1095 Client/core/CSettings.cpp:3153 +#: Client/core/CSettings.cpp:1089 Client/core/CSettings.cpp:3147 msgid "Above normal" msgstr "" -#: Client/core/CSettings.cpp:1131 +#: Client/core/CSettings.cpp:1125 msgid "Min" msgstr "" -#: Client/core/CSettings.cpp:1144 +#: Client/core/CSettings.cpp:1138 msgid "Max" msgstr "" #. Windows 8 compatibility -#: Client/core/CSettings.cpp:1151 +#: Client/core/CSettings.cpp:1145 msgid "Windows 8 compatibility:" msgstr "" -#: Client/core/CSettings.cpp:1155 +#: Client/core/CSettings.cpp:1149 msgid "16-bit color" msgstr "" -#: Client/core/CSettings.cpp:1160 +#: Client/core/CSettings.cpp:1154 msgid "Mouse fix" msgstr "" #. Cache path info -#: Client/core/CSettings.cpp:1178 +#: Client/core/CSettings.cpp:1172 msgid "Client resource files:" msgstr "" -#: Client/core/CSettings.cpp:1182 +#: Client/core/CSettings.cpp:1176 msgid "Show in Explorer" msgstr "" #. Auto updater section label -#: Client/core/CSettings.cpp:1197 Client/core/CSettings.cpp:1200 +#: Client/core/CSettings.cpp:1191 Client/core/CSettings.cpp:1194 msgid "Auto updater" msgstr "" #. Check for updates -#: Client/core/CSettings.cpp:1238 +#: Client/core/CSettings.cpp:1232 msgid "Check for update now" msgstr "" -#: Client/core/CSettings.cpp:1392 +#: Client/core/CSettings.cpp:1386 msgid "Some settings will be changed when you next start MTA" msgstr "" -#: Client/core/CSettings.cpp:1393 +#: Client/core/CSettings.cpp:1387 msgid "" "\n" "\n" "Do you want to restart now?" msgstr "" -#: Client/core/CSettings.cpp:1396 +#: Client/core/CSettings.cpp:1390 msgid "RESTART REQUIRED" msgstr "" -#: Client/core/CSettings.cpp:1416 +#: Client/core/CSettings.cpp:1410 msgid "Some settings will be changed when you disconnect the current server" msgstr "" -#: Client/core/CSettings.cpp:1417 +#: Client/core/CSettings.cpp:1411 msgid "" "\n" "\n" "Do you want to disconnect now?" msgstr "" -#: Client/core/CSettings.cpp:1420 +#: Client/core/CSettings.cpp:1414 msgid "DISCONNECT REQUIRED" msgstr "" #. Update the joystick name -#: Client/core/CSettings.cpp:1747 +#: Client/core/CSettings.cpp:1741 msgid "Joypad not detected - Check connections and restart game" msgstr "" -#: Client/core/CSettings.cpp:1942 +#: Client/core/CSettings.cpp:1936 msgid "Binding axis" msgstr "" -#: Client/core/CSettings.cpp:1942 +#: Client/core/CSettings.cpp:1936 msgid "Move an axis to bind, or escape to clear" msgstr "" -#: Client/core/CSettings.cpp:2019 +#: Client/core/CSettings.cpp:2013 msgid "Language:" msgstr "" -#: Client/core/CSettings.cpp:2019 +#: Client/core/CSettings.cpp:2013 msgid "Skin:" msgstr "" -#: Client/core/CSettings.cpp:2019 +#: Client/core/CSettings.cpp:2013 msgid "Presets:" msgstr "" -#: Client/core/CSettings.cpp:2068 +#: Client/core/CSettings.cpp:2062 msgid "Chat" msgstr "" -#: Client/core/CSettings.cpp:2085 +#: Client/core/CSettings.cpp:2079 msgid "Load" msgstr "" -#: Client/core/CSettings.cpp:2097 +#: Client/core/CSettings.cpp:2091 msgid "Colors" msgstr "" -#: Client/core/CSettings.cpp:2098 +#: Client/core/CSettings.cpp:2092 msgid "Layout" msgstr "" -#: Client/core/CSettings.cpp:2099 Client/core/CSettings.cpp:2345 +#: Client/core/CSettings.cpp:2093 Client/core/CSettings.cpp:2339 msgid "Options" msgstr "" -#: Client/core/CSettings.cpp:2105 +#: Client/core/CSettings.cpp:2099 msgid "Chat Background" msgstr "" -#: Client/core/CSettings.cpp:2105 +#: Client/core/CSettings.cpp:2099 msgid "Chat Text" msgstr "" -#: Client/core/CSettings.cpp:2105 +#: Client/core/CSettings.cpp:2099 msgid "Input Background" msgstr "" -#: Client/core/CSettings.cpp:2105 +#: Client/core/CSettings.cpp:2099 msgid "Input Text" msgstr "" -#: Client/core/CSettings.cpp:2128 +#: Client/core/CSettings.cpp:2122 msgid "Lines:" msgstr "" -#: Client/core/CSettings.cpp:2128 +#: Client/core/CSettings.cpp:2122 msgid "Scale:" msgstr "" -#: Client/core/CSettings.cpp:2128 +#: Client/core/CSettings.cpp:2122 msgid "Width:" msgstr "" -#: Client/core/CSettings.cpp:2131 +#: Client/core/CSettings.cpp:2125 msgid "Size" msgstr "" -#: Client/core/CSettings.cpp:2180 +#: Client/core/CSettings.cpp:2174 msgid "after" msgstr "" -#: Client/core/CSettings.cpp:2180 +#: Client/core/CSettings.cpp:2174 msgid "for" msgstr "" -#: Client/core/CSettings.cpp:2180 +#: Client/core/CSettings.cpp:2174 msgid "sec" msgstr "" -#: Client/core/CSettings.cpp:2183 +#: Client/core/CSettings.cpp:2177 msgid "Fading" msgstr "" -#: Client/core/CSettings.cpp:2189 +#: Client/core/CSettings.cpp:2183 msgid "Fade out old lines" msgstr "" -#: Client/core/CSettings.cpp:2229 +#: Client/core/CSettings.cpp:2223 msgid "Horizontal:" msgstr "" -#: Client/core/CSettings.cpp:2229 +#: Client/core/CSettings.cpp:2223 msgid "Vertical:" msgstr "" -#: Client/core/CSettings.cpp:2229 +#: Client/core/CSettings.cpp:2223 msgid "Text-Align:" msgstr "" -#: Client/core/CSettings.cpp:2229 +#: Client/core/CSettings.cpp:2223 msgid "X-Offset:" msgstr "" -#: Client/core/CSettings.cpp:2230 +#: Client/core/CSettings.cpp:2224 msgid "Y-Offset:" msgstr "" -#: Client/core/CSettings.cpp:2236 +#: Client/core/CSettings.cpp:2230 msgid "Position" msgstr "" -#: Client/core/CSettings.cpp:2251 Client/core/CSettings.cpp:2265 +#: Client/core/CSettings.cpp:2245 Client/core/CSettings.cpp:2259 msgid "Center" msgstr "" -#: Client/core/CSettings.cpp:2264 +#: Client/core/CSettings.cpp:2258 msgid "Top" msgstr "" -#: Client/core/CSettings.cpp:2266 +#: Client/core/CSettings.cpp:2260 msgid "Bottom" msgstr "" -#: Client/core/CSettings.cpp:2314 +#: Client/core/CSettings.cpp:2308 msgid "Font" msgstr "" -#: Client/core/CSettings.cpp:2351 +#: Client/core/CSettings.cpp:2345 msgid "Hide background when not typing" msgstr "" -#: Client/core/CSettings.cpp:2356 +#: Client/core/CSettings.cpp:2350 msgid "Nickname completion using the \"Tab\" key" msgstr "" -#: Client/core/CSettings.cpp:2361 +#: Client/core/CSettings.cpp:2355 msgid "Allow server to flash the window" msgstr "" -#: Client/core/CSettings.cpp:2366 +#: Client/core/CSettings.cpp:2360 msgid "Allow tray balloon notifications" msgstr "" -#: Client/core/CSettings.cpp:2371 +#: Client/core/CSettings.cpp:2365 msgid "Chat text black/white outline" msgstr "" @@ -2764,85 +2760,85 @@ msgstr "" #. SString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); #. Create a messagebox to notify the user #. sSString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); -#: Client/core/CSettings.cpp:2620 Client/core/CSettings.cpp:2627 +#: Client/core/CSettings.cpp:2614 Client/core/CSettings.cpp:2621 msgid "Press a key to bind, or escape to clear" msgstr "" -#: Client/core/CSettings.cpp:2621 +#: Client/core/CSettings.cpp:2615 msgid "Binding a primary key" msgstr "" -#: Client/core/CSettings.cpp:2628 +#: Client/core/CSettings.cpp:2622 msgid "Binding a secondary key" msgstr "" -#: Client/core/CSettings.cpp:2704 +#: Client/core/CSettings.cpp:2698 msgid "GTA GAME CONTROLS" msgstr "" -#: Client/core/CSettings.cpp:2706 +#: Client/core/CSettings.cpp:2700 msgid "MULTIPLAYER CONTROLS" msgstr "" -#: Client/core/CSettings.cpp:2951 Client/core/CSettings.cpp:4797 +#: Client/core/CSettings.cpp:2945 Client/core/CSettings.cpp:4777 msgid "Your nickname contains invalid characters!" msgstr "" -#: Client/core/CSettings.cpp:3811 +#: Client/core/CSettings.cpp:3791 msgid "Red:" msgstr "" -#: Client/core/CSettings.cpp:3811 +#: Client/core/CSettings.cpp:3791 msgid "Green:" msgstr "" -#: Client/core/CSettings.cpp:3811 +#: Client/core/CSettings.cpp:3791 msgid "Blue:" msgstr "" -#: Client/core/CSettings.cpp:3811 +#: Client/core/CSettings.cpp:3791 msgid "Transparency:" msgstr "" -#: Client/core/CSettings.cpp:3814 +#: Client/core/CSettings.cpp:3794 msgid "Color" msgstr "" -#: Client/core/CSettings.cpp:3891 +#: Client/core/CSettings.cpp:3871 msgid "Preview" msgstr "" -#: Client/core/CSettings.cpp:4199 +#: Client/core/CSettings.cpp:4179 msgid "Please disconnect before changing language" msgstr "" -#: Client/core/CSettings.cpp:4227 +#: Client/core/CSettings.cpp:4207 msgid "Please disconnect before changing skin" msgstr "" -#: Client/core/CSettings.cpp:4515 +#: Client/core/CSettings.cpp:4495 msgid "" "Volmetric shadows can cause some systems to slow down.\n" "\n" "Are you sure you want to enable them?" msgstr "" -#: Client/core/CSettings.cpp:4519 +#: Client/core/CSettings.cpp:4499 msgid "PERFORMANCE WARNING" msgstr "" -#: Client/core/CSettings.cpp:4539 +#: Client/core/CSettings.cpp:4519 msgid "" "Screen upload is required by some servers for anti-cheat purposes.\n" "\n" "(The chat box and GUI is excluded from the upload)\n" msgstr "" -#: Client/core/CSettings.cpp:4541 +#: Client/core/CSettings.cpp:4521 msgid "SCREEN UPLOAD INFORMATION" msgstr "" -#: Client/core/CSettings.cpp:4556 +#: Client/core/CSettings.cpp:4536 msgid "" "Some scripts may play sounds, such as radio, from the internet.\n" "\n" @@ -2850,11 +2846,11 @@ msgid "" "bandwidth consumption.\n" msgstr "" -#: Client/core/CSettings.cpp:4559 +#: Client/core/CSettings.cpp:4539 msgid "EXTERNAL SOUNDS" msgstr "" -#: Client/core/CSettings.cpp:4588 +#: Client/core/CSettings.cpp:4568 msgid "" "It seems that you have the Rich Presence connection option enabled.\n" "Do you want to allow servers to share their data?\n" @@ -2862,11 +2858,11 @@ msgid "" "This includes yours unique ID identifier." msgstr "" -#: Client/core/CSettings.cpp:4593 +#: Client/core/CSettings.cpp:4573 msgid "CONSENT TO ALLOW DATA SHARING" msgstr "" -#: Client/core/CSettings.cpp:4617 +#: Client/core/CSettings.cpp:4597 msgid "" "Some files in your GTA:SA data directory are customized.\n" "MTA will only use these modified files if this check box is ticked.\n" @@ -2876,7 +2872,7 @@ msgid "" "Are you sure you want to use them?" msgstr "" -#: Client/core/CSettings.cpp:4666 +#: Client/core/CSettings.cpp:4646 msgid "" "Enabling DPI awareness is an experimental feature and\n" "we only recommend it when you play MTA:SA on a scaled monitor.\n" @@ -2885,77 +2881,77 @@ msgid "" "Are you sure you want to enable this option?" msgstr "" -#: Client/core/CSettings.cpp:4672 +#: Client/core/CSettings.cpp:4652 msgid "EXPERIMENTAL FEATURE" msgstr "" -#: Client/core/CSettings.cpp:4815 +#: Client/core/CSettings.cpp:4795 msgid "Please enter a nickname" msgstr "" -#: Client/core/CSettings.cpp:4816 +#: Client/core/CSettings.cpp:4796 msgid "" "Please enter a nickname to be used ingame. \n" "This will be your name when you connect to and play in a server" msgstr "" -#: Client/core/CSettings.cpp:4834 +#: Client/core/CSettings.cpp:4814 msgid "Very experimental feature." msgstr "" -#: Client/core/CSettings.cpp:4836 +#: Client/core/CSettings.cpp:4816 msgid "Stops stalls with CJ variations (Uses 65MB more RAM)" msgstr "" -#: Client/core/CSettings.cpp:4838 +#: Client/core/CSettings.cpp:4818 msgid "Older routers may require a slower scan speed." msgstr "" -#: Client/core/CSettings.cpp:4840 +#: Client/core/CSettings.cpp:4820 msgid "Switch on to use only one connection when downloading." msgstr "" -#: Client/core/CSettings.cpp:4842 +#: Client/core/CSettings.cpp:4822 msgid "Tag network packets to help ISPs identify MTA traffic." msgstr "" -#: Client/core/CSettings.cpp:4844 +#: Client/core/CSettings.cpp:4824 msgid "Spinning circle animation at the bottom of the screen" msgstr "" -#: Client/core/CSettings.cpp:4846 +#: Client/core/CSettings.cpp:4826 msgid "Select default always. (This setting is not saved)" msgstr "" -#: Client/core/CSettings.cpp:4848 +#: Client/core/CSettings.cpp:4828 msgid "Maximum is usually best" msgstr "" -#: Client/core/CSettings.cpp:4850 Client/core/CSettings.cpp:4852 +#: Client/core/CSettings.cpp:4830 Client/core/CSettings.cpp:4832 msgid "Auto updater:" msgstr "" -#: Client/core/CSettings.cpp:4850 +#: Client/core/CSettings.cpp:4830 msgid "Select default unless you like filling out bug reports." msgstr "" -#: Client/core/CSettings.cpp:4852 +#: Client/core/CSettings.cpp:4832 msgid "Select default to automatically install important updates." msgstr "" -#: Client/core/CSettings.cpp:4854 +#: Client/core/CSettings.cpp:4834 msgid "16-bit color:" msgstr "" -#: Client/core/CSettings.cpp:4854 +#: Client/core/CSettings.cpp:4834 msgid "Enable 16 bit color modes - Requires MTA restart" msgstr "" -#: Client/core/CSettings.cpp:4856 +#: Client/core/CSettings.cpp:4836 msgid "Mouse fix:" msgstr "" -#: Client/core/CSettings.cpp:4856 +#: Client/core/CSettings.cpp:4836 msgid "Mouse movement fix - May need PC restart" msgstr "" From a5dfc5223358127299511b618ab29da08ff23030 Mon Sep 17 00:00:00 2001 From: Prox <77501848+Proxy-99@users.noreply.github.com> Date: Wed, 23 Oct 2024 19:28:56 +0300 Subject: [PATCH 37/40] add setVehicleSmokeTrailEnabled & isVehicleSmokeTrailEnabled function (#3810) --- .../logic/luadefs/CLuaVehicleDefs.cpp | 20 +++++++++++++++++++ .../logic/luadefs/CLuaVehicleDefs.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index 6ac42bf386..fabdf76f16 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -92,6 +92,7 @@ void CLuaVehicleDefs::LoadFunctions() {"getVehicleModelWheelSize", ArgumentParser}, {"getVehicleWheelFrictionState", ArgumentParser}, {"getVehicleEntryPoints", ArgumentParser}, + {"isVehicleSmokeTrailEnabled", ArgumentParser}, // Vehicle set funcs {"createVehicle", CreateVehicle}, @@ -156,6 +157,7 @@ void CLuaVehicleDefs::LoadFunctions() {"setVehicleWheelScale", ArgumentParser}, {"setVehicleModelWheelSize", ArgumentParser}, {"spawnVehicleFlyingComponent", ArgumentParser}, + {"setVehicleSmokeTrailEnabled", ArgumentParser}, }; // Add functions @@ -244,6 +246,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "getModelWheelSize", "getVehicleModelWheelSize"); lua_classfunction(luaVM, "getWheelFrictionState", "getVehicleWheelFrictionState"); lua_classfunction(luaVM, "getEntryPoints", ArgumentParser); + lua_classfunction(luaVM, "isSmokeTrailEnabled", "isVehicleSmokeTrailEnabled"); lua_classfunction(luaVM, "setComponentVisible", "setVehicleComponentVisible"); lua_classfunction(luaVM, "setSirensOn", "setVehicleSirensOn"); @@ -292,6 +295,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "setVariant", "setVehicleVariant"); lua_classfunction(luaVM, "setWheelScale", "setVehicleWheelScale"); lua_classfunction(luaVM, "setModelWheelSize", "setVehicleModelWheelSize"); + lua_classfunction(luaVM, "setSmokeTrailEnabled", "setVehicleSmokeTrailEnabled"); lua_classfunction(luaVM, "resetComponentPosition", "resetVehicleComponentPosition"); lua_classfunction(luaVM, "resetComponentRotation", "resetVehicleComponentRotation"); @@ -4340,3 +4344,19 @@ bool CLuaVehicleDefs::SpawnVehicleFlyingComponent(CClientVehicle* const vehicle, return vehicle->SpawnFlyingComponent(partNodeIndex, collisionType, removalTime.value_or(-1)); } + +bool CLuaVehicleDefs::SetSmokeTrailEnabled(CClientVehicle* vehicle, bool state) +{ + std::uint16_t model = vehicle->GetModel(); + if (model != 512 && model != 513) + throw LuaFunctionError("Invaild model ID"); + + vehicle->SetSmokeTrailEnabled(state); + return true; +} + +bool CLuaVehicleDefs::IsSmokeTrailEnabled(CClientVehicle* vehicle) noexcept +{ + return vehicle->IsSmokeTrailEnabled(); +} + diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index 28c2f5e372..5e4695e850 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -181,4 +181,7 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleComponents); static bool SpawnVehicleFlyingComponent(CClientVehicle* const vehicle, std::uint8_t nodeIndex, std::optional componentCollisionType, std::optional removalTime); + + static bool SetSmokeTrailEnabled(CClientVehicle* vehicle, bool state); + static bool IsSmokeTrailEnabled(CClientVehicle* vehicle) noexcept; }; From 26d18288730fd3a7a854152da60c9acd18ab6c6f Mon Sep 17 00:00:00 2001 From: Prox <77501848+Proxy-99@users.noreply.github.com> Date: Wed, 23 Oct 2024 19:30:57 +0300 Subject: [PATCH 38/40] add ped dynamic shadows functions (#3809) --- Client/game_sa/CSettingsSA.cpp | 14 +++++++++++++ Client/game_sa/CSettingsSA.h | 2 ++ Client/mods/deathmatch/logic/CClientGame.cpp | 10 +++++---- .../logic/luadefs/CLuaWorldDefs.cpp | 21 ++++++++++++++++++- .../deathmatch/logic/luadefs/CLuaWorldDefs.h | 5 ++++- Client/sdk/game/CSettings.h | 2 ++ 6 files changed, 48 insertions(+), 6 deletions(-) diff --git a/Client/game_sa/CSettingsSA.cpp b/Client/game_sa/CSettingsSA.cpp index 4ce70b5eed..95b66d40df 100644 --- a/Client/game_sa/CSettingsSA.cpp +++ b/Client/game_sa/CSettingsSA.cpp @@ -316,6 +316,20 @@ void CSettingsSA::SetDynamicPedShadowsEnabled(bool bEnable) m_bDynamicPedShadowsEnabled = bEnable; } +bool CSettingsSA::IsDynamicPedShadowsEnabledByVideoSetting() const noexcept +{ + bool pedDynamicShadows; + g_pCore->GetCVars()->Get("dynamic_ped_shadows", pedDynamicShadows); + return pedDynamicShadows; +} + +bool CSettingsSA::ResetDynamicPedShadows() noexcept +{ + pGame->GetSettings()->SetDynamicPedShadowsEnabled(pGame->GetSettings()->IsDynamicPedShadowsEnabledByVideoSetting()); + return true; +} + + // // Volumetric shadow hooks // diff --git a/Client/game_sa/CSettingsSA.h b/Client/game_sa/CSettingsSA.h index 7947c94929..3986ec1059 100644 --- a/Client/game_sa/CSettingsSA.h +++ b/Client/game_sa/CSettingsSA.h @@ -147,6 +147,8 @@ class CSettingsSA : public CGameSettings bool IsDynamicPedShadowsEnabled(); void SetDynamicPedShadowsEnabled(bool bEnable); + bool IsDynamicPedShadowsEnabledByVideoSetting() const noexcept; + bool ResetDynamicPedShadows() noexcept; float GetAspectRatioValue(); eAspectRatio GetAspectRatio(); diff --git a/Client/mods/deathmatch/logic/CClientGame.cpp b/Client/mods/deathmatch/logic/CClientGame.cpp index bc20947eac..429bafb365 100644 --- a/Client/mods/deathmatch/logic/CClientGame.cpp +++ b/Client/mods/deathmatch/logic/CClientGame.cpp @@ -5456,10 +5456,6 @@ void CClientGame::ResetMapInfo() // Players m_pPlayerManager->ResetAll(); - // Reset Frozen Time - g_pGame->GetClock()->ResetTimeFrozen(); - g_pGame->GetSettings()->ResetVolumetricShadows(); - // Disable the change of any player stats g_pMultiplayer->SetLocalStatsStatic(true); @@ -6887,6 +6883,12 @@ void CClientGame::ResetWorldProperties(const ResetWorldPropsInfo& resetPropsInfo // Reset volumetric shadows g_pGame->GetSettings()->ResetVolumetricShadows(); + + // Reset Frozen Time + g_pGame->GetClock()->ResetTimeFrozen(); + + // Reset DynamicPedShadows + g_pGame->GetSettings()->ResetDynamicPedShadows(); } void CClientGame::OnWindowFocusChange(bool state) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp index 382c2c7488..9a9e038b19 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp @@ -106,6 +106,7 @@ void CLuaWorldDefs::LoadFunctions() {"restoreWorldModel", RestoreWorldBuilding}, {"setTimeFrozen", ArgumentParser}, {"setVolumetricShadowsEnabled", ArgumentParser}, + {"setDynamicPedShadowsEnabled", ArgumentParser}, // World create funcs {"createSWATRope", CreateSWATRope}, @@ -131,6 +132,7 @@ void CLuaWorldDefs::LoadFunctions() {"resetTimeFrozen", ArgumentParser}, {"resetVolumetricShadows", ArgumentParser}, {"resetWorldProperties", ArgumentParser}, + {"resetDynamicPedShadows", ArgumentParser}, // World check funcs {"areTrafficLightsLocked", AreTrafficLightsLocked}, @@ -139,7 +141,8 @@ void CLuaWorldDefs::LoadFunctions() {"isWorldSpecialPropertyEnabled", ArgumentParserWarn}, {"isGarageOpen", IsGarageOpen}, {"isTimeFrozen", ArgumentParser}, - {"isVolumetricShadowsEnabled", ArgumentParser}}; + {"isVolumetricShadowsEnabled", ArgumentParser}, + {"isDynamicPedShadowsEnabled", ArgumentParser}}; // Add functions for (const auto& [name, func] : functions) @@ -2278,3 +2281,19 @@ void CLuaWorldDefs::ResetWorldProperties(std::optional resetSpecialWorldPr { g_pClientGame->ResetWorldProperties(ResetWorldPropsInfo{resetSpecialWorldProperties.value_or(true), resetWorldProperties.value_or(true), resetWeatherProperties.value_or(true), resetLODs.value_or(true), resetSounds.value_or(true)}); } + +bool CLuaWorldDefs::SetDynamicPedShadowsEnabled(bool enable) +{ + g_pGame->GetSettings()->SetDynamicPedShadowsEnabled(enable); + return true; +} + +bool CLuaWorldDefs::IsDynamicPedShadowsEnabled() noexcept +{ + return g_pGame->GetSettings()->IsDynamicPedShadowsEnabled(); +} + +bool CLuaWorldDefs::ResetDynamicPedShadows() noexcept +{ + return g_pGame->GetSettings()->ResetDynamicPedShadows(); +} diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h index ac38251dc7..f430bd63dd 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h @@ -140,6 +140,9 @@ class CLuaWorldDefs : public CLuaDefs static bool ResetVolumetricShadows() noexcept; static void ResetWorldProperties(std::optional resetSpecialWorldProperties, std::optional resetWorldProperties, std::optional resetWeatherProperties, std::optional resetLODs, std::optional resetSounds) noexcept; - + + static bool SetDynamicPedShadowsEnabled(bool enable); + static bool IsDynamicPedShadowsEnabled() noexcept; + static bool ResetDynamicPedShadows() noexcept; }; diff --git a/Client/sdk/game/CSettings.h b/Client/sdk/game/CSettings.h index d5ef10a05b..6ce85f2c2e 100644 --- a/Client/sdk/game/CSettings.h +++ b/Client/sdk/game/CSettings.h @@ -140,6 +140,8 @@ class CGameSettings virtual bool IsDynamicPedShadowsEnabled() = 0; virtual void SetDynamicPedShadowsEnabled(bool bEnable) = 0; + virtual bool IsDynamicPedShadowsEnabledByVideoSetting() const noexcept = 0; + virtual bool ResetDynamicPedShadows() noexcept = 0; virtual float GetAspectRatioValue() = 0; virtual eAspectRatio GetAspectRatio() = 0; From 353b6c60ec9719ab06c982616c6846eb85e0ab91 Mon Sep 17 00:00:00 2001 From: Pot Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:33:46 +0000 Subject: [PATCH 39/40] Update client en_US pot [ci skip] --- .../MTA/locale/en_US/client.pot | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot index 5d498383f8..ec1109aa63 100644 --- a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot +++ b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: MTA San Andreas 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-21 22:24+0000\n" +"POT-Creation-Date: 2024-10-23 16:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -433,23 +433,23 @@ msgstr "" msgid "MTA Client verification failed!" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5623 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5619 msgid "In a ditch" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5623 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5619 msgid "En-route to hospital" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5623 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5619 msgid "Meeting their maker" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5624 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5620 msgid "Regretting their decisions" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5624 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5620 msgid "Wasted" msgstr "" @@ -744,16 +744,16 @@ msgstr "" msgid "Download error: %s" msgstr "" -#: Client/game_sa/CSettingsSA.cpp:767 +#: Client/game_sa/CSettingsSA.cpp:781 msgid "Can't find valid screen resolution." msgstr "" #. Confirm that res should be used -#: Client/game_sa/CSettingsSA.cpp:843 +#: Client/game_sa/CSettingsSA.cpp:857 msgid "Are you sure you want to use this screen resolution?" msgstr "" -#: Client/game_sa/CSettingsSA.cpp:845 Client/loader/Dialogs.cpp:194 +#: Client/game_sa/CSettingsSA.cpp:859 Client/loader/Dialogs.cpp:194 msgid "MTA: San Andreas" msgstr "" From e92702ca56a30b0c434cc29402b2d378ba4d7da4 Mon Sep 17 00:00:00 2001 From: Fernando Rocha <34967844+Fernando-A-Rocha@users.noreply.github.com> Date: Fri, 25 Oct 2024 21:27:10 +0100 Subject: [PATCH 40/40] Strip server name's spaces from beginning and end (#3805) --- Server/mods/deathmatch/logic/CMainConfig.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Server/mods/deathmatch/logic/CMainConfig.cpp b/Server/mods/deathmatch/logic/CMainConfig.cpp index a535aa0ab6..d47950e73e 100644 --- a/Server/mods/deathmatch/logic/CMainConfig.cpp +++ b/Server/mods/deathmatch/logic/CMainConfig.cpp @@ -133,6 +133,9 @@ bool CMainConfig::Load() return false; } + // Strip spaces from beginning and end of server name + m_strServerName = SString(m_strServerName).TrimStart(" ").TrimEnd(" "); + // Grab the forced server ip(s) GetString(m_pRootNode, "serverip", m_strServerIP); m_strServerIP = SString(m_strServerIP).Replace(" ", "");