Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - kenking

Страницы: [1] 2 3 ... 11
1
Идеи / Re: Перевозка транспорта
« : Сегодня в 08:30:44 am »
Вопрос с камерой пока не решил.

Реализовал движение тягачей с прицепами в трафике.

https://www.youtube.com/watch?v=MsEpXEAPwvc&feature=youtu.be

xanser, ещё раз большое спасибо за предоставленный код для VC.


2
Моды / Re: D3D8 мод для GTA VC.
« : Ноябрь 11, 2018, 03:24:50 pm »
Как оказалось, для прицепов-авто дамми дверей можно не ставить, достаточно поднять повыше ped_frontseat.

3
Идеи / Re: Перевозка транспорта
« : Ноябрь 09, 2018, 04:58:06 pm »
xanser, большое спасибо за плагин и особенно за предоставленный код.

Начал делать подобный мод (пока только для сцепки тягачей и прицепов) для GTA3 (1.0) на основе plugin-sdk.


В общем разобрался. Есть затруднение с камерой. Вот эти строчки:
Код: C++
  1. Patch(0x68AB84, 1.0f);  // camera
  2. Patch(0x68AB84, 1.0f + 2 * ModelInfo[Trailers[T]->id]->colModel->colBox.inf.y); // camera


Не знаю как реализовать на основе plugin-sdk. Адрес 0x68AB84 используется в функции CCamera::SetZoomValueCamStringScript
В базе GTA3 получается в этой функции используется CCamera.m_fZoomValueCamStringScript
Попробовал записать так:
Код: C++
  1. patch::SetFloat(0x6FAE24, 1.0f + 2 * CModelInfo::ms_modelInfoPtrs[trail->m_nModelIndex]->m_pColModel->m_boundBox.m_vecMax.y, true);

не работает  :(

0x6FAE24 рассчитал так: к адресу 0x6FACF8 (TheCamera) прибавил смещение 0x12C (m_fZoomValueCamStringScript), поскольку в sdk нет этих данных в классе CCamera.

Или надо использовать не patch::SetFloat?
Кто может подсказать? Пожалуйста.

4
Цитировать
Почему  имя  оружие и его id. Не подходит для получения оружия.
Если Вас не затруднит, Скажите пожалуйста  какие id  писать?
В каком смысле не подходят? Смотри перечисления
Код: C++
  1. eWeaponModel
  2. eWeaponType

Для кода в сообщениях используй [code=cpp

5
Моды / Re: D3D8 мод для GTA VC.
« : Октябрь 26, 2018, 02:10:11 pm »
Про совпадение экстр для тягача и прицепа есть в моем коде для SA (ссылку на код писал выше). Есть такая переменная CVehicleModelInfo::ms_compsToUse[2] (для VC адрес 0x699538), вот в неё, перед созданием прицепа, записываются значения экстр, считываемые с тягача. В CLEO скриптах есть для этого опкод 0506: vehicle_model 163 set_next_variation -1 1

Поясню для чего важно совпадение экстр для моделей автобусов "гармошек" - как правило, экстрами в таких моделях задаются таблички с маршрутами и госномера, если в этом случае не будет совпадение экстр (и цвета прицепа и тягача), то такая сцепка будет выглядеть нехорошо.

Цитировать
Чтобы прицепы сами по себе не гоняли, я поставил в default.ide тип ignore и поднял все dummy дверей на высоту, недосягаемую для посадки, пед просто ходит туда-сюда возле места двери, не садясь. Пока так.
Ага, понятно. А то я думаю, как это реализовать. Если дамми дверей не ставить, то при попытке педа сесть в такой транспорт, крах игры.

6
Моды / Re: D3D8 мод для GTA VC.
« : Октябрь 26, 2018, 08:31:47 am »
Сочетание ID тягача и ID прицепа можно также вынести в файл .dat (а также сочетание номеров экстр, цвета моделей и т.д.). Тогда каждый сможет задействовать нужные ему ID.

Цитировать
К тому, что есть, я могу добавить возможность рандомно подсаживать вдалеке водителей в припаркованные тягачи с прицепом и автовозы с грузом и пускать их в свободное движение, будет похоже на то, что они выруливают на дорогу и дальше едут сами в трафике. Тогда зависимость будет лишь от парковки в скрипте и универсальность сохранится
Вопрос: если таким образом реализовывать автобус типа "гармошка", то каким образом будет регулироваться соответствие экстр на тягаче и прицепе?

И ещё вопрос такой: в твоём моде имеются прицепы и полуприцепы, они установлены как обычные авто? И как реализован запрет входа/выхода педов в эти модели?

7
Свободное общение / Re: Фрилансер кидала
« : Октябрь 26, 2018, 08:18:46 am »
Вряд ли те данные настоящие.

8
Моды / Re: D3D8 мод для GTA VC.
« : Октябрь 25, 2018, 07:55:27 am »
Цитировать
Я думал над тем, чтобы это все ездило еще и на дорогах, но не знаю, как лучше реализовать.
Я именно это и имел ввиду. Для SA я писал код для цепляния прицепов в трафике. http://forum.gtabuilder.ru/index.php?topic=337.msg2541#msg2541

Посмотри, может что-то подобное можно реализовать?

9
Моды / Re: D3D8 мод для GTA VC.
« : Октябрь 24, 2018, 02:01:41 pm »
Спасибо! В трафике встречаются модели с прицепами и перевозчик авто? Или предусмотрено только для авто игрока?

10
Моды / Re: D3D8 мод для GTA VC.
« : Октябрь 20, 2018, 05:13:34 pm »
Круто!

11
Моды / Re: D3D8 мод для GTA VC.
« : Октябрь 20, 2018, 11:39:20 am »
А что по поводу кода для прицепов и отдельного мода?

12
Обновил 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 ==========

UPDATE:
Спасибо DK за подсказку. Ошибка исчезла после обновление проекта. Готовый код плагина здесь https://github.com/kenkingGitHub/GTA-Projects/blob/master/NewChooseComponent/NewChooseComponent.cpp

13
Решил заменить для 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 этой темы. Просьба подсказать в чём ошибка.

14
Скриптинг / Re: Прицепить звук к объекту.
« : Июль 13, 2018, 10:30:14 am »
По дыму - посмотри этот скрипт https://gta.com.ua/file_details.phtml?id=2821, может пригодится.

15
Общие вопросы / Re: Помощь с CLEO
« : Май 18, 2018, 09:44:25 am »
Смещение 0x1F0 - это m_fGasPedal значение float https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_vc/game_vc/CVehicle.h
показывает нажата ли педаль газа на транспорте. Перезаписью этого значения не заставишь двигаться транспорт.

Страницы: [1] 2 3 ... 11