Последние сообщения

Страницы: [1] 2 3 ... 10
1
Программирование / Re: Написание плагина. Настройка проекта
« Последний ответ от kenking Сегодня в 11:43:07 am »
Обновил sdk. Пересобрал сам плагин. Подправил немного код своего плагина.
Код: C++
  1. #include "plugin.h"
  2.  
  3. unsigned int nGetRandomNumberInRange(int min, int max) {
  4.     ((unsigned int(__cdecl *)(int, int))0x54A4C0)(min, max);
  5. }
  6.  
  7. int nCountCompsInRule(signed int compRulesBits) {
  8.     ((int(__cdecl *)(signed int))0x520990)(compRulesBits);
  9. }
  10.  
  11. using namespace plugin;
  12.  
  13. int randomId, numberId, result;
  14.  
  15. class NewChooseComponent {
  16. public:
  17.     static int Choose(int type, signed int compRulesBits) {
  18.         switch (type) {
  19.         case 1:
  20.         case 2:
  21.             numberId = nCountCompsInRule(compRulesBits);
  22.             result = (compRulesBits >> 4 * nGetRandomNumberInRange(0, numberId)) & 0xF;
  23.             break;
  24.         case 3:
  25.             numberId = nCountCompsInRule(compRulesBits);
  26.             randomId = nGetRandomNumberInRange(-1, numberId);
  27.             if (randomId == -1) {
  28.                 result = -1;
  29.                 break;
  30.             }
  31.             result = (compRulesBits >> 4 * randomId) & 0xF;
  32.             break;
  33.         case 4:
  34.             result = nGetRandomNumberInRange(0, 6);
  35.             break;
  36.         default:
  37.             result = -1;
  38.             break;
  39.         }
  40.         return result;
  41.     }
  42.  
  43.     NewChooseComponent() {
  44.         patch::RedirectJump(0x5209C0, Choose);
  45.     };
  46. } NewChooseComponents;
  47.  

Теперь при сборке выходит другая ошибка:
Цитировать
1>------ Перестроение всех файлов начато: проект: III_NewChooseComponent, Конфигурация: GTA3 Release Win32 ------
1>D:\Programs\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\CL.exe /c /I"D:\Projects\plugin-sdk\plugin_iii\\" /I"D:\Projects\plugin-sdk\plugin_iii\game_iii\\" /I"D:\Projects\plugin-sdk\shared\\" /Zi /nologo /W3 /WX- /diagnostics:classic /sdl /O2 /Oi /Oy- /GL /D _NDEBUG /D _USING_V110_SDK71_ /D _CRT_SECURE_NO_WARNINGS /D _CRT_NON_CONFORMING_SWPRINTFS /D GTA3 /D "GTAGAME_NAME=\"3\"" /D "GTAGAME_ABBR=\"3\"" /D "GTAGAME_ABBRLOW=\"3\"" /D "GTAGAME_PROTAGONISTNAME=\"Claude\"" /D "GTAGAME_CITYNAME=\"Liberty City\"" /D PLUGIN_SGV_10EN /D _USING_V110_SDK71_ /D _WINDLL /D _MBCS /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /std:c++latest /Fo"D:\Projects\GTA-Projects\III_NewChooseComponent\.obj\GTA3\Release\\" /Fd"D:\Projects\GTA-Projects\III_NewChooseComponent\.obj\GTA3\Release\vc141.pdb" /Gd /TP /analyze- /errorReport:prompt /Zc:threadSafeInit- III_NewChooseComponent.cpp
1>III_NewChooseComponent.cpp
1>D:\Programs\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\link.exe /ERRORREPORT:PROMPT /OUT:"D:\Games\Grand Theft Auto III\scripts\III_NewChooseComponent.III.asi" /NOLOGO /LIBPATH:"D:\Projects\plugin-sdk\output\lib\\" plugin_iii.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:"D:\Games\Grand Theft Auto III\scripts\III_NewChooseComponent.III.pdb" /SUBSYSTEM:WINDOWS,"5.01" /OPT:REF /OPT:ICF /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:\Games\Grand Theft Auto III\scripts\III_NewChooseComponent.III.lib" /MACHINE:X86 /SAFESEH /DLL "D:\Projects\GTA-Projects\III_NewChooseComponent\.obj\GTA3\Release\III_NewChooseComponent.obj"
1>plugin_iii.lib(Patch.obj) : error LNK2001: неразрешенный внешний символ ""int __cdecl plugin::GetGlobalAddress(int)" (?GetGlobalAddress@plugin@@YAHH@Z)"
1>D:\Games\Grand Theft Auto III\scripts\III_NewChooseComponent.III.asi : fatal error LNK1120: неразрешенных внешних элементов: 1
1>Сборка проекта "III_NewChooseComponent.vcxproj" завершена с ошибкой.
========== Перестроение всех проектов: успешно: 0, с ошибками: 1, пропущено: 0 ==========
2
Программирование / Re: Написание плагина. Настройка проекта
« Последний ответ от Shagg_E Октябрь 16, 2018, 02:11:00 pm »
Я нужные функции, которых нет в SDK, добавлял перед "using namespace plugin;" так:

Код: C++
  1. auto    StoreShadowToBeRenderedd = (void(__cdecl *)(unsigned char type, unsigned int texture, CVector* posn, float topX, float topY, float rightX, float rightY, short intensity, unsigned char red, unsigned char green, unsigned char blue, float zDistance, bool drawOnWater, float scale, int realTimeShadow, bool drawOnBuildings))0x56E6C0;
  2.  
3
Программирование / Re: Написание плагина. Настройка проекта
« Последний ответ от kenking Октябрь 16, 2018, 01:00:23 pm »
Решил заменить для GTA3 функцию ChooseComponent на функцию аналогичную для SA, поскольку для GTA3 эта функция в укороченном варианте. С заменой функций на свои до сих пор не совсем разобрался. Написал такой код:
Код: C++
  1. #include "plugin.h"
  2.  
  3. using namespace plugin;
  4.  
  5. int randomId, v2, v4, result;
  6.  
  7. class NewChooseComponent {
  8. public:
  9.     static int __cdecl CountCompsInRule(signed int compRulesBits) {
  10.         return plugin::CallAndReturn<int, 0x520990, signed int>(compRulesBits);
  11.     }
  12.    
  13.     static unsigned int __cdecl GetRandomNumberInRange(int min, int max) {
  14.         return plugin::CallAndReturn<unsigned int, 0x54A4C0, int, int>(min, max);
  15.     }
  16.  
  17.     static int Choose(int type, signed int compRulesBits) {
  18.         switch (type) {
  19.         case 1:
  20.         case 2:
  21.             v2 = CountCompsInRule(compRulesBits);
  22.             result = (compRulesBits >> 4 * GetRandomNumberInRange(0, v2)) & 0xF;
  23.             break;
  24.         case 3:
  25.             v4 = CountCompsInRule(compRulesBits);
  26.             randomId = GetRandomNumberInRange(-1, v4);
  27.             if (randomId == -1) {
  28.                 result = -1;
  29.                 break;
  30.             }
  31.             result = (compRulesBits >> 4 * randomId) & 0xF;
  32.             break;
  33.         case 4:
  34.             result = GetRandomNumberInRange(0, 6);
  35.             break;
  36.         default:
  37.             result = -1;
  38.             break;
  39.         }
  40.         return result;
  41.     }
  42.  
  43.     NewChooseComponent() {
  44.         patch::RedirectJump(0x5209C0, Choose);
  45.     };
  46. } NewChooseComponents;
  47.  

Поскольку в sdk не добавлена функция CountCompsInRule и зачем-то убрали, добавленные ранее, функции
Код: C++
  1. // returns random float in range [min;max)
  2. static float GetRandomNumberInRange(float min, float max);
  3. // returns random int in range [min;max)
  4. static unsigned int GetRandomNumberInRange(int min, int max);
  5. // returns random int in range 0-32767
  6. static unsigned int GetRandomNumber();

попробовал добавить нужные функции непосредственно в код плагина. Не уверен, что сделал это верно. Просьба подсказать, хотя при сборке плагина показывается ошибка в другом месте:
Цитировать
1>------ Перестроение всех файлов начато: проект: III_NewChooseComponent, Конфигурация: GTA3 Release Win32 ------
1>D:\Programs\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\CL.exe /c /I"D:\Projects\plugin-sdk\plugin_iii\\" /I"D:\Projects\plugin-sdk\plugin_iii\game_iii\\" /I"D:\Projects\plugin-sdk\shared\\" /Zi /nologo /W3 /WX- /diagnostics:classic /sdl /O2 /Oi /Oy- /GL /D _NDEBUG /D _USING_V110_SDK71_ /D _CRT_SECURE_NO_WARNINGS /D _CRT_NON_CONFORMING_SWPRINTFS /D GTA3 /D "GTAGAME_NAME=\"3\"" /D "GTAGAME_ABBR=\"3\"" /D "GTAGAME_ABBRLOW=\"3\"" /D "GTAGAME_PROTAGONISTNAME=\"Claude\"" /D "GTAGAME_CITYNAME=\"Liberty City\"" /D PLUGIN_SGV_10EN /D _USING_V110_SDK71_ /D _WINDLL /D _MBCS /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /std:c++latest /Fo"D:\Projects\GTA-Projects\III_NewChooseComponent\.obj\GTA3\Release\\" /Fd"D:\Projects\GTA-Projects\III_NewChooseComponent\.obj\GTA3\Release\vc141.pdb" /Gd /TP /analyze- /errorReport:prompt /Zc:threadSafeInit- III_NewChooseComponent.cpp
1>III_NewChooseComponent.cpp
1>D:\Programs\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\link.exe /ERRORREPORT:PROMPT /OUT:"D:\Games\Grand Theft Auto III\scripts\III_NewChooseComponent.III.asi" /NOLOGO /LIBPATH:"D:\Projects\plugin-sdk\output\lib\\" plugin_iii.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:"D:\Games\Grand Theft Auto III\scripts\III_NewChooseComponent.III.pdb" /SUBSYSTEM:WINDOWS,"5.01" /OPT:REF /OPT:ICF /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:\Games\Grand Theft Auto III\scripts\III_NewChooseComponent.III.lib" /MACHINE:X86 /SAFESEH /DLL "D:\Projects\GTA-Projects\III_NewChooseComponent\.obj\GTA3\Release\III_NewChooseComponent.obj"
1>III_NewChooseComponent.obj : error LNK2001: неразрешенный внешний символ ""public: static void __cdecl plugin::patch::RedirectJump(int,void *,bool)" (?RedirectJump@patch@plugin@@SAXHPAX_N@Z)"
1>D:\Games\Grand Theft Auto III\scripts\III_NewChooseComponent.III.asi : fatal error LNK1120: неразрешенных внешних элементов: 1
1>Сборка проекта "III_NewChooseComponent.vcxproj" завершена с ошибкой.
========== Перестроение всех проектов: успешно: 0, с ошибками: 1, пропущено: 0 ==========


Что не так с RedirectJump? Делал по примеру SpawnTruckCheat в посте № 55 этой темы. Просьба подсказать в чём ошибка.
5
Моды / Re: Grand Theft Auto Vice City Quaesitum City (мод с русскими постройками)
« Последний ответ от Eden Октябрь 12, 2018, 12:35:51 pm »
Такое пристальное внимание к интерьерам парадных, чего не сказать про окна. Любопытно посмотреть на фото в реальности.
7
Моды / Re: Grand Theft Auto Vice City Quaesitum City (мод с русскими постройками)
« Последний ответ от DK Октябрь 06, 2018, 09:55:49 pm »
100к полигонов? Ха. Моя машина с 8 процессорами и 3 видеокартами этого не почувствует.
Давай ещё докидывай соточку - и я подумаю над тем, чтобы скачать этот мод.
И вообще, будущие сборки на тесты кидай только мне - тут я решаю, что тормозит, а что нет.
8
Моды / Re: Grand Theft Auto Vice City Quaesitum City (мод с русскими постройками)
« Последний ответ от Sektor Октябрь 06, 2018, 09:53:59 pm »
Цитировать
В этом скине 90 тысяч полигонов, а в пушке 20 тысяч
Это многовато, для такого вида. Если таких актеров будет на много, тогда уже почувствуете просадки (скины с костями сами по себе дорогие штуки).  Да и такое качество не к чему от 3-тьего лица. Даже пушки например, от первого лица 20 тысяч полигонов себе позволить не могут. В основном всякая детализация на картах нормалей делается. Вообщем смотрите сами, мое дело рассказать.
9
Моды / Re: Grand Theft Auto Vice City Quaesitum City (мод с русскими постройками)
« Последний ответ от daniltk2 Октябрь 05, 2018, 08:08:29 pm »

В этом скине 90 тысяч полигонов, а в пушке 20 тысяч
А вы тут говорите о какой-то слабой оптимизации игры
Это и в заполненной контентом игре нормально работает
Хрущевки у меня не настолько тяжелые, как мод Eden'а, чтобы возникали казусы
Да и мой опыт говорит о том, что вылеты возникают из-за кривых скриптов, не сделанной с нуля коллизии и плохим отношением к img архиву (во многих модах, например Myriad Islands, тупо испорчены архивы кривым установщиком из-за частой замены, потому что куча дубликатов поверх друг друга ставятся)
Модели и маппинг игра хорошо ест, пример тому мои работы - Кордон мод, где в площади 1500x500 стоит 2,5 тысяч объектов с одним тхд, да и я билдовский кордон из 6 тысяч моделей конвертил, и капитолий из Fallout 3 со всем мусором, где объектов тоже несколько тысяч
10
Моды / Re: Grand Theft Auto Vice City Quaesitum City (мод с русскими постройками)
« Последний ответ от Shagg_E Октябрь 05, 2018, 04:03:47 pm »
Полагаю тогда, мне имеет смысл переделать всю геометрию разрушенного города, расширить её местами деталями, оптимизировать колы, кол-во моделей в принципе и помещения платформы, как и её верхнюю (её в принципе надо будет перелопачивать с нуля) часть.

Я собственно, почему и не брался за всё это. Во первых, я не догадывался о возможности оптимизации именно через урезание кол-ва объектов. Я думал, что дело именно в полигонаже. Оказывается, что нет.
Во вторых, конечно же объем работы. Верх платформы требует просто циклопического объема работ, а здесь еще и руины такую подляну устроили. Себя очень трудно переосилить.)
Я тоже про оптимизацию количеством объектов не додумывался, но после поста Sector-а всё встало на свои места.
Надеюсь, для daniltk2 тоже хоть что-нибудь оказалось в этой теме полезным/новым(т.к. мы в его теме флудим, кек)
Страницы: [1] 2 3 ... 10