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

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


Сообщения - kenking

Страницы: 1 ... 14 15 [16]
226
Потихоньку разбираюсь. Есть вопросы:
1) Как от найденного компонента перейти к child, next, root, а также прочитать их названия (+ 172 // NodeName)?
2) Какой алгоритм добавления новой функции в плагин?
Допустим, я знаю такой адрес:
:007F0ED0     ; RwFrame *__cdecl RwFrameScale(RwFrame *frame, RwV3D *v, int combine)Как добавить в плагин? 
3) Планируешь ли добавить в примеры код IVF? Не устаю повторять - это лучший мод на эту тему, когда-либо сделанный для SA! Хорошо бы с комментариями добавить его в примеры (ну или выслать в ЛС, если можно). Кстати, (я про это писал уже на GCU форуме) в версии IVF 2.1 на прицепах поворотники не работают.

227
Цитировать
Ты о чём? Вроде всё правильно сделал.
Да там https://github.com/DK22Pac/plugin-sdk/tree/master/examples теперь везде

Цитировать
CDamageManager: added enum ePanels and enum eDoors

ну так-то ничего страшного, теперь протестил, что да как делать при коммите, в следующий раз всё будет как надо.


228
В в CDamageManager.h есть ещё "пустые" перечисления
tComponent
tComponentGroup
eWheels

Ну с eWheels вроде, как понятно - это 6 колёс, а остальные что означают? 

Цитировать
Красным отмечены файлы, которые ты изменил (и которые, по идее, нужно "закоммитить")
При сборке примеров у меня выходило сообщение компилятора:
Цитировать
Main.obj : найден .netmodule MSIL или модуль, откомпилированный с параметром /GL; перезапускается компоновка с параметром /LTCG; добавьте /LTCG в командную строку компоновки для повышения производительности компоновщика
В общем я добавил во все примеры. Также по незнанию, я начал было экспериментировать в этом решении. ??? "Откатил" всё назад. Теперь буду учиться в своём решении, а не в plugin-sdk.

Цитировать
Как будет время - можешь попробовать сделать коммит.
Вот и сделал... :(

229
Цитировать
Нет. Даже на plugin_vc у меня времени почти нет.
Жаль, было бы хорошо собрать плагин для GTA3, VC и SA в один "инструмент". А если ещё сделать для IV и V - это была бы самая крутая вещь для скриптинга GTA.

Цитировать
Я не скажу, что это очень сложно. Это просто требует времени. Много времени. Сейчас в plugin-sdk (SA) более 2700 адресов.
Поиск всех этих адресов в exe какой-либо другой версии может занять месяцы (с моим графиком). Я для себя вообще отбросил этот вариант.
Да для SA это в общем-то без надобности. Я скрипты писал тоже только под exe 1.0. Да и остальные скриптёры тоже.

Цитировать
Действительно, не работает.
UPD: разобрался, это ошибка в sdk. Дело в том, что есть 2 функции GetDoorStatus. Одна в качестве аргумента принимает перечисление eDoors, вторая - id компонента. В sdk эти функции были перепутаны. Уже исправил.
Вот теперь всё отлично!

Как я понял, после каждого обновления надо пересобирать плагин?

В plugin-sdk файлы отмечены разными значками:

Что означают эти предупреждения и "кирпичи". Какие нужны действия?


230
Не думаю, что ради этого стоит напрягаться - сейчас мало кто учитывает 1.1 - даже MVL работает лишь с 1.0
Я в клео скриптах учитываю. В библиотеке клео тоже учитывали это дело. Не думаю, что это большой напряг для того, кто разбирается в этом. Ну автору, конечно, решать.

UPD:
По коду открытия компонентов есть непонятка. Вот здесь:
if (automobile->m_damageManager.GetDoorStatus(doorId) != 3)Для VC и GTA3 значение 3 - это компонент отсутствует, т.е. он повредился и отвалился. Для SA такое состояние компонента будет 4. Однако при замене 3 на 4 плагин перестаёт работать, т.е. компоненты не открываются и не закрываются. Это как понимать?

Цитировать
Если ты знаешь значения этого перечисления - можешь их добавить в файле CDamageManager.h, и далее использовать их при вызове (напр. DOOR_FRONT_LEFT).
Добавил:
enum eDoors
{
BONNET = 0,
BOOT = 1,
DOOR_FRONT_LEFT = 2,
DOOR_FRONT_RIGHT = 3,
DOOR_REAR_LEFT = 4,
DOOR_REAR_RIGHT = 5
};

А также:
enum ePanels
{
WING_FRONT_LEFT = 0,
WING_FRONT_RIGHT = 1,
WINDSCREEN = 4,
BUMP_FRONT = 5,
BUMP_REAR = 6
};

231
С plugin_vc и VC_DXFont разобрался, спасибо.
Как я понял, и для SA, и для VC плагины идут только под версию exe 1.0. Ну для SA то ладно, а для VC хорошо бы и версию 1.1 учитывать.
А есть ли в планах и для GTA3 плагин сделать?

Цитировать
Но я бы советовал использовать специальные утилиты для обновления/изменения:
Git for Windows
TortoiseGit
Скачал, установил.

Цитировать
Создать аккаунт на github.
Сообщить мне свой никнейм (мне нужно будет добавить его в список редакторов).
kenkingGitHub (никнейм kenking уже кто-то занял, наглость какая  ;D)

Цитировать
Тебе нужно мыслить по-другому - ты "вклиниваешься" в процесс каждый фрейм.
Буду пробовать, после клео как-то непривычно. Ещё раз большое спасибо за подробные пояснения!

Цитировать
Заметь, что и в твоём скрипте, и в этом примере есть небольшая проблема - это выполнение действий над авто в цикле, без доп. проверки на существование этого авто. Чисто теоретически - пока обрабатывается открытие/закрытие, с авто может что-то случиться
Есть такое дело. Я проверку там в общем-то сознательно не поставил, потому как при написании такого скрипта для VC во время процесса открывания/закрывания компонента специально взрывал авто и вылета не было, поскольку авто сразу не удаляется. Ну так-то проверку лучше ставить, согласен.

232
Цитировать
По поводу VC_DXFont - в plugin_vc открой в студии файл game_vc/RenderWare.cpp и глянь, не закомменчена ли строка
Вот:


С примерами буду разбираться, спасибо.

Ещё вопросы:
1) При обновлении sdk как лучше обновить у себя? Достаточно ли будет копировать новые файлы с заменой старых и пересобрать плагин? Шаблон пересобирать надо или нет?
2) В SA_CreateCar CStreaming::RequestModel(modelId, 2); цифра 2 что означает?
а в SA_PedSpawner стоит 0
CStreaming::RequestModel(modelID, 0);
UPD:
Вот здесь
void CVehicle::OpenDoor(CPed* ped, int componentId, eDoors door, float doorOpenRatio, bool playSound)eDoors door - что ставить? В клео я ставил 0-5, а здесь пишет аргумент типа int несовместим с параметром типа "eDoors".
Вот код моего скрипта (для GTA3, но не суть), не пойму, как сделать такое в плагине (для SA). Цикл for в частности, как реализовать wait 0? Можно пример? Пожалуйста  ???

{$CLEO .cs}
05E5: 15@ = game_version
if
  15@ == 0
then
    6@ = 0x52E660
    7@ = 0x545930
    8@ = 0x52EF90
    9@ = 0x52E750
else
    if
      15@ == 1
    then 
        6@ = 0x52E8A0
        7@ = 0x545B30
        8@ = 0x52F1D0
        9@ = 0x52E990
    else
        05DC: end_custom_thread
    end   
end
var
   12@: float
end

while true
wait 0
    if
      Player.Defined($PLAYER_CHAR)
    then
        if and
          $ONMISSION == 0
          Actor.Driving($PLAYER_ACTOR)
          80DE: not player $PLAYER_CHAR driving_vehicle_type #PREDATOR
          80DE: not player $PLAYER_CHAR driving_vehicle_type #SPEEDER
          80DE: not player $PLAYER_CHAR driving_vehicle_type #REEFER
          80DE: not player $PLAYER_CHAR driving_vehicle_type #GHOST
        then
            if
              05EE: key_pressed 219 // [
            then
                0@ = 17 // ComponentID
                1@ = 0  // eDoors
                gosub @open_component // капот
                repeat
                  wait 0
                until 85EE: not key_pressed 219 // [ 
            end
            if
              05EE: key_pressed 221 // ]
            then
                0@ = 18
                1@ = 1
                gosub @open_component // багажник
                repeat
                  wait 0
                until 85EE: not key_pressed 221 // ] 
            end
            if and
              05EE: key_pressed 186 // ;
              05EE: key_pressed 187 // =
            then
                0@ = 15
                1@ = 2
                gosub @open_component // левая передняя дверь
                repeat
                  wait 0
                until 85EE: not key_pressed 187 // = 
            end
            if and
              05EE: key_pressed 222 // '
              05EE: key_pressed 187 // =
            then
                0@ = 11
                1@ = 3
                gosub @open_component // правая передняя дверь
                repeat
                  wait 0
                until 85EE: not key_pressed 187 // = 
            end
            if and
              05EE: key_pressed 186 // ;
              05EE: key_pressed 189 // -
            then
                0@ = 16
                1@ = 4
                gosub @open_component // левая задняя дверь
                repeat
                  wait 0
                until 85EE: not key_pressed 189 // - 
            end
            if and
              05EE: key_pressed 222 // '
              05EE: key_pressed 189 // -
            then
                0@ = 12
                1@ = 5
                gosub @open_component // правая задняя дверь
                repeat
                  wait 0
                until 85EE: not key_pressed 189 // - 
            end
        end
    end
end

:open_component
if
  Actor.Driving($PLAYER_ACTOR)
then 
    03C0: 10@ = actor $PLAYER_ACTOR car
    05E7: 10@ = car 10@ struct
    0085: 11@ = 10@
    05E4: call_function_method 6@ struct 11@ num_params 1 pop 0 0@ {1..19} 2@ // IsComponentPresent
    if
      2@ == 1
    then
        0085: 3@ = 10@
        3@ += 0x288 // CDamageManager
        05E4: call_function_method 7@ struct 3@ num_params 1 pop 0 1@ {0..5} 4@ // GetDoorStatus
        if
          4@ <> 3
        then
            05E4: call_function_method 8@ struct 10@ num_params 1 pop 0 1@ {0..5} 5@ // IsDoorFullyOpen
            if
              5@ == 0
            then
                for 12@ = 0.0 TO 1.0 step 0.1
                   05E3: call_function_method 9@ struct 10@ num_params 3 pop 0 12@ 1@ 0@ {1..19} // CAutomobile__OpenDoor
                   wait 0
                end
            else
                for 12@ = 1.0 DOWNTO 0.0 step 0.1
                   05E3: call_function_method 9@ struct 10@ num_params 3 pop 0 12@ 1@ 0@ {1..19} // CAutomobile__OpenDoor
                   wait 0
                end
            end
        end 
    end 
end
return         

233
Цитировать
Попробуй именно пересобрать (не Build, а Rebuild).
А после этого пересобери VC_DXFont.
Так и делал. Пересобрал ещё раз - тоже самое.

Цитировать
Пример по спавну авто и управлению компонентом уже добавил.
За пример с подробными комментариями огромное спасибо!

Цитировать
Спрашивай если что-то не понятно.
Как вращать компоненты (CMatrix__rotateAroundX, CMatrix__rotateAroundY, CMatrix__rotateAroundZ)? Попробовал так:
if (automobile->m_aCarNodes[CAR_DOOR_RR])
automobile->m_aCarNodes[CAR_DOOR_RR]->modelling.at.z += 1.57f;
и так:
if (automobile->m_aCarNodes[CAR_DOOR_RF])
automobile->m_aCarNodes[CAR_DOOR_RF]->modelling.up.z += 1.57f;
Вот что вышло:  ;D


Сделай пожалуйста пример вращения компонента в цикле на транспорте игрока.

234
Цитировать
plugin_vc пересобрал с _D3D_INCLUDE?
Да.

Цитировать
прямо сейчас занимаюсь классом CCarCtrl, после покажу пример создания транспорта и манипулирования им.
Жду с нетерпением. Спасибо, что подробно всё разъясняешь.


235
Теперь при сборке VC_DXFont выходит:
1>------ Перестроение всех файлов начато: проект: VC_DXFont, Конфигурация: Release Win32 ------
1>  Main.cpp
1>Main.obj : error LNK2001: неразрешенный внешний символ ""struct IDirect3DDevice8 * & _RwD3DDevice" (?_RwD3DDevice@@3AAPAUIDirect3DDevice8@@A)"
1>D:\Games\GTA Vice City 1.0\VC_DXFont.asi : fatal error LNK1120: неразрешенных внешних элементов: 1
========== Перестроение всех проектов: успешно: 0, с ошибками: 1, пропущено: 0 ==========

236
Цитировать
или удали зависимость вручную (нужно убрать обьявление _D3D_INCLUDE в настройках проекта plugin_vc):
Удалил. Плагин VC собрался. А пример VC_DXFont не идёт. Там же #include <d3dx8.h>

Цитировать
уже поправил это (зависимость от d3d8) в VC, скачай репозиторий заново
Скачал и новую версию. Здесь плагин VC не собирается. Вот



За пример в видео спасибо, но я имел ввиду создание транспорта в определённых координатах, с загрузкой модели
00A5: 0@ = create_car #PONY at 0.0 0.0 0.0

237
Дмитрий, во-первых, хочу сказать спасибо за проделанную работу по plugin-sdk, во-вторых, хочу сказать, что есть большое желание освоить написание плагинов для GTA. Года два назад я начал было, но инфы по написанию плагинов очень мало, написал один простой плагин и на этом как-то изучение остановилось. При написании клео скриптов мне в своё время очень помогли исходники скриптов Дениса. По ним-то я и научился писать высокоуровневый код, а начинал с написания в меточном стиле. Так вот к чему это я всё - хорошо бы здесь написать несколько простых примеров для SA, например, как создавать транспорт с определённой моделью в определённых координатах, работу с транспортом и компонентами транспорта и т.д. Хорошо бы, как сделано здесь http://ru-script.3dn.ru/publ/gta_iv/gta_iv/obzor_klassa_vehicles/35-1-0-177 - тот же код в примере клео скрипта. Заранее спасибо.

Кстати, плагин для VC не собирается. У меня отсутствует dxd8.h. Можно заменить строчку на dxd9.h или где взять dxd8.h 

Страницы: 1 ... 14 15 [16]