Перейти к содержимому


Фотография

Скриптинг в GTA IV


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 215

#21 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 18 February 2009 - 16:21

Хмм, новая страница, читайте про Delphi Hook на предыдущей странице
http://forums.gtamod...w...post&p=1230


Залил в нашу вики все 3 pas-файла

http://gtamodding.ru...i/Scripting.pas - Список всех доступных функций
http://gtamodding.ru...iptingEnums.pas - Список текстовых параметров
http://gtamodding.ru...iptingUtils.pas - Список вспомогательных функций

Желающие могут напрямую править эти файлы, дополняя их или исправляя ошибки.


Кроме того, добавил списки скриптовых функций движка GTA 4
http://gtamodding.ru...товых функций_1
http://gtamodding.ru...товых функций_2
http://gtamodding.ru...товых функций_3

(из технических ограничений пришлось разбить полный список на 3 разные статьи).

Опять-таки, приветствуется помощь по устранению красных ссылок в этом списке ;) Примеры оформления статей о скриптовых функциях можно увидеть здесь
http://gtamodding.ru...i/GET_PLAYER_ID
http://gtamodding.ru..._TO_PLAYERINDEX

Обязательно использование шаблона Native в таких статьях!

#22 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 18 February 2009 - 16:40

Немного информации о структуре дельфи-скрипта. Скрипт - это отдельная динамическая библиотека с расширением .dh (регулируется директивой {$E .dh}. Каждому такому скрипту соответствует новый поток (thread), который создается и завершается, когда DLL соответственно загружается и выгружается из памяти. Отдельных манипуляций с потоком проводить не надо. Если нужно завершить скрипт досрочно, используйте функцию TerminateThisScript(). Каждый скрипт должен иметь функцию RunTick и экспортировать ее. После начала игры эта функция будет вызываться ядром каждую миллисекунду. Не забывайте про wait() в циклах.

#23 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 01 March 2009 - 13:06

10 дней, 15 скачавших и ни одного отзыва. Проект никому не интересен? Стоит его развивать или нет?

#24 Johnix

Johnix

    Активный участник

  • Пользователи
  • PipPipPip
  • 87 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 01 March 2009 - 13:58

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

#25 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 01 March 2009 - 14:33

Принцип работы похож на CLEO

это скрипты, которые не зависят от сейвов. Они запускаются вместе с игрой (не важно новой или сохраненной) и завершаются, когда игра закрывается. В таких скриптах можно и миссии делать, и кар спавнеры, год моды, супермены и много чего еще.

#26 Johnix

Johnix

    Активный участник

  • Пользователи
  • PipPipPip
  • 87 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 01 March 2009 - 14:35

а если миссию делать, то где ее прописывать? или там она сама появляется? гы я нуб
Изображение
Изображение

#27 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 01 March 2009 - 14:48

Я сам не писал миссии, поэтому могу только предполагать. Создаешь скрипт, который сначала будет проверять какие-то стартовые условия (например, нахождение в определенном месте), после этого устанавливается флаг миссии (функция SetMissionFlag(1); ), после этого выполняется код миссии (фейд, вводный текст, создание актеров и т.п.), в конце-концов флаг миссии обнуляется и скрипт либо завершается (TerminateThisScript()), либо возвращается в исходную точку (если миссия может проходиться неоднократно). Все это собирается в одну дллку с расширением .DH и кидается в корневую папку игры. Этот скрипт начнет работу после запуска игры (тут надо еще продумать механизм сохранения результатов, иначе миссия будет доступна при каждом новом запуске игры). В теории должно работать, но начинать все же лучше с простых скриптов :)

#28 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 02 March 2009 - 11:56

Скачал только сегодня, слов нет - круто! Seeman, ты молодец что сделал этот hook замечательный, теперь не придется разбираться в lua или C++! :)
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#29 quadrat

quadrat

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 05 March 2009 - 23:50

Seemann, огромный тебе респект за проделанную работу, а можно этот хук приспособить для gta san andreas ?

Сообщение отредактировал quadrat: 06 March 2009 - 00:04


#30 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 06 March 2009 - 12:18

Этот хук нет, ибо скриптовые движки SA и IV очень разные. Вообще для SA есть один хук, который позволяет писать внешние скрипты на C++ (самая известная программа, которая его использует, это San An Studios. Теоретически его можно "научить" языку Дельфи аналогичным способом, как я сделал с C++ хуком для IV. Но я вряд ли буду этим заниматься.

#31 VcSaJen

VcSaJen

    Активный участник

  • Пользователи
  • PipPipPip
  • 270 сообщений
  • Пол:Мужчина
  • Интересы:GTA, скриптинг в GTA.


Отправлено 07 March 2009 - 00:23

О, наконец-то кто то взялся за это (Delphi Hook'а)!

#32 BiDi

BiDi

    Активный участник

  • Пользователи
  • PipPipPip
  • 155 сообщений
  • Пол:Мужчина
  • Город:Россия

Отправлено 09 March 2009 - 10:17

оооммм. Может кто-нибудь написать скрипт бессмертия ( ну чтоб с небоскрёба упал и дальше пошёл :) :) или базукой под себя пальнул и жив)? Ну если это конечно возможно.
.1

#33 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 09 March 2009 - 10:44

Ну бессмертие это банально, уже есть куча тренеров для этого
http://www.gtaforums...howtopic=392973
http://www.gtaforums...howtopic=393676

Вы бы лучше что-нибудь оригинальное придумали.

#34 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 09 March 2009 - 10:45

Да, есть уже такие скрипты. Тебе на чем надо (lua/c++/delphi)?

Сообщение отредактировал Dageron: 09 March 2009 - 10:47

в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#35 BiDi

BiDi

    Активный участник

  • Пользователи
  • PipPipPip
  • 155 сообщений
  • Пол:Мужчина
  • Город:Россия

Отправлено 09 March 2009 - 11:05

Ну бессмертие это банально, уже есть куча тренеров для этого

Не знал. Это я просто поиздеваться. После сюжетки в гта4 делать нечего!

Вы бы лучше что-нибудь оригинальное придумали.

Ага, не очень уж это и просто. Я так и не понял куда что сувать. Прочитаю про Делфи Хук по подробнее. Вот в са было - открыл мэйн и сиди пиши миссии, а здесь чуш какая то.

Да, есть уже такие скрипты. Тебе на чем надо (lua/c++/delphi)?

На Делфи. А чо ещё есть скрипты для делфи?
.1

#36 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 09 March 2009 - 11:35

Ага, не очень уж это и просто. Я так и не понял куда что сувать. Прочитаю про Делфи Хук по подробнее. Вот в са было - открыл мэйн и сиди пиши миссии, а здесь чуш какая то.

здесь почти тоже самое. Только вместо майна - исходник на дельфи, который компилируется в DLL. Вместо опкодов - функции, типа GetPlayerActor(). Спрашивай, что конкретно не ясно, можно поучиться на примере создания того же скрипта бессмертия.

#37 BiDi

BiDi

    Активный участник

  • Пользователи
  • PipPipPip
  • 155 сообщений
  • Пол:Мужчина
  • Город:Россия

Отправлено 09 March 2009 - 16:59

здесь почти тоже самое. Только вместо майна - исходник на дельфи, который компилируется в DLL. Вместо опкодов - функции, типа GetPlayerActor(). Спрашивай, что конкретно не ясно, можно поучиться на примере создания того же скрипта бессмертия.

Ну пока вопросов нет, т.к. буду эксперементировать с готовыми скриптами.
А есть програмка, позволяющая вычислять координаты игрока в игре? Или скрипт?

Сообщение отредактировал BiDi: 09 March 2009 - 17:13

.1

#38 GooD-NTS

GooD-NTS

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 494 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород


Отправлено 09 March 2009 - 17:05

Seemann, а сейчас с помощью всех этих хуков можно сделать что-то типа плеера анимации?
Ну, что-то типа чтобы можно было прописать файл с анимацией, и конкретную анимацию и чтобы ”проигралась”... или как-то так...

я сам просто еще не сильно в этих скриптах разбирался.

Изображение

RAGE research project, public side: OpenIV (Журнал изменений План развития) | openFormats


#39 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 10 March 2009 - 21:01

BiDi,
написал простой скрипт, который по нажатию F4 выводит координаты игрока на экран. .DH файл и исходник (.dpr) в аттаче

GooD-NTS,
написать-то можно, только нужно знать, какой нейтив цепляет анимацию к педу

Прикрепленные файлы

  • Прикрепленный файл  Coords.rar   22.15К   49 загрузок


#40 Capushon

Capushon

    Активный участник

  • Пользователи
  • PipPipPip
  • 39 сообщений
  • Пол:Мужчина
  • Город:Украина

Отправлено 10 March 2009 - 21:13

2Seemann:

10 дней, 15 скачавших и ни одного отзыва. Проект никому не интересен? Стоит его развивать или нет?

Т.е. реального Sanny Bulder'а for GTA4 мы никогда больше не увидим?
Сначала ты надежда и гордость, Потом о спину ломают аршин. ©БГ




Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных