Скриптинг в GTA IV
#1
Отправлено 08 January 2009 - 15:58
Итак, для начала. В настоящее время есть два способа для создания новых скриптов: Alice от Alexander'а и С++ ScriptHook от aru. Первый позволяет добавлять в игру lua-скрипты, второй - писать целые программы на языке C++. Рассмотрим их плюсы и минусы.
Alice:
+ не нужны дополнительные программы, скрипты можно писать в блокноте
- ограниченные возможности скриптов, нет отладки
- требуется знание Lua
ScriptHook:
+ поскольку скрипты - это Dll, то возможности для скриптов не ограничены, можно использовать внешние ресурсы, задействовать все возможности ООП
- требуется знание С++ и компилятор
Оба способа похожи в том, что они используют нововведение RAGE - native functions - огромный набор (около 3000) функций, позволяющих управлять почти всем в игре. Они пришли на смену опкодам.
Полный список native functions: http://www.gtamoddin...ative_functions
В общем можно сказать, что Alice больше подходит для небольших и простых скриптов, в то время как возможности ScriptHook'а не почти ограничены, но зато и работать с ним сложнее.
Ссылки:
Alice - http://www.gtaforums...howtopic=386816
ScriptHook - http://www.gtaforums...howtopic=390582
Документация по native functions - http://www.gtaforums...howtopic=387783
#2
Отправлено 08 January 2009 - 16:10
#3
Отправлено 08 January 2009 - 16:19
#4
Отправлено 08 January 2009 - 16:54
#5
Отправлено 08 January 2009 - 17:23
#6
Отправлено 08 January 2009 - 19:05
Исходники С++ ScriptHook написаны, как это ни странно, на С++ В Дельфи они не скомпилятся.Так а я не понял - если используются DLL'ки, их же можно писать и на Delphi? В чём разница - метод вызовов функций или что?
А 1С вроде не поддерживается. Ставь другой ехе.Я пробовал юзать Alice, но с ним идёт библиотека binkw32.dll, которая заменяет оригинал в корневой папке четвёрки. С библиотекой из Alice моя четвёрка (лицензия от 1С) просто не запускается (закрывается сразу).
#7
Отправлено 09 January 2009 - 04:22
#8
Отправлено 09 January 2009 - 07:02
#9
Отправлено 09 January 2009 - 09:21
#10
Отправлено 09 January 2009 - 10:11
#11
Отправлено 09 January 2009 - 10:22
#12
Отправлено 09 January 2009 - 10:35
#13
Отправлено 09 January 2009 - 12:29
#14
Отправлено 09 January 2009 - 13:01
#15
Отправлено 16 January 2009 - 21:25
#16
Отправлено 16 February 2009 - 14:38
#17
Отправлено 16 February 2009 - 15:04
#18
Отправлено 16 February 2009 - 16:59
Вот пример скрипта (часть .pas файла)
function KeyPressed(const Key: Smallint): Boolean; begin Result := Hi(GetKeyState(Key)) = $FF; end; function GetPlayer: Player; begin Result := ConvertIntToPlayerIndex(GetPlayerId); end; procedure RunTick; cdecl; begin if KeyPressed(Ord('K')) then begin AddScore(GetPlayer, 1); end; end;
#19
Отправлено 18 February 2009 - 05:55
#20
Отправлено 18 February 2009 - 15:13
В общем, теперь можно писать новые скрипты для GTA IV, используя Delphi (на гтафорумс уже давно пишут скрипты на языках C++ и .net-языках, типа VB.Net), чем мы хуже? ). Принцип работы похож на CLEO - каждый скрипт компилируется в отдельный файл с расширением .dh, который можно при желании удалить. Работа хука основана на C++ Script Hook от aru (про него можно прочитать в первом сообщении темы), я не являюсь оригинальным автором его.
В настоящий момент доступно для использования более 600 функций из скриптового движка игры (аналог опкодов), т.е. все, которые были описаны в C++ Hook. Cмотрите файл Scripting.pas для поиска нужной.
Всего в GTA IV около 3000 функций. Если кто-то желает помочь с переводом дополнительных функций в Дельфи, обращайтесь. Будем использовать для этого нашу вики.
В оригинальном архиве идет файл dhook.asi (ядро хука, скомпилировано из С++ Hook), 3 pas-файла с описаниями функций; списками некоторых параметров, типа статов или номеров оружия; и некоторыми вспомогательными функциями. Кроме того, там же лежит пример скрипта (спаун случайной машины рядом с игроком по нажатию K), и болванка (шаблон) скрипта.
Работы предстоит еще много, поэтому приветствуются замечания и предложения. Если что-то не работает, постите также содержание файла dhook.log из папки игры.
Прикрепленные файлы
Количество пользователей, читающих эту тему: 3
0 пользователей, 3 гостей, 0 анонимных