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


Фотография

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


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

#1 Seemann

Seemann

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

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

Отправлено 08 January 2009 - 15:58

Открою темку для обсуждения скриптинга. На gtaforums.com скриптят вовсю, чем мы хуже?

Итак, для начала. В настоящее время есть два способа для создания новых скриптов: 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 Dageron

Dageron

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

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


Отправлено 08 January 2009 - 16:10

Отлично :). Это лучше, чем CLEO в SA. А через ScriptHook можно при желании миссиию написать?
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#3 Seemann

Seemann

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

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

Отправлено 08 January 2009 - 16:19

При желаниии можно все. По идее идея хука не нова - еще в вайс сити был похожий хук (speedo от spookie), там и новая миссия была. Потом этот хук портировали в SA (сейчас используется в программах gta_sa_loader и San An Studios). Сравнить хук и CLEO некорректно, т.к. тут используются разные подходы к скриптингу. Хук - это по сути те же ASI, только с возможностью использовать native functions, а CLEO было расширением имеющегося скриптового движка SA, поэтому и возможности его были ограничены. Скриптовый движок 4ки вообще другой в сравнении с SA.

#4 Axel218

Axel218

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

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

Отправлено 08 January 2009 - 16:54

Незнаю как вам - а мне C++ ближе, хоть я его недавно изучать начал =) Так а я не понял - если используются DLL'ки, их же можно писать и на Delphi? В чём разница - метод вызовов функций или что?

#5 RussianCJ

RussianCJ

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

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

Отправлено 08 January 2009 - 17:23

Я пробовал юзать Alice, но с ним идёт библиотека binkw32.dll, которая заменяет оригинал в корневой папке четвёрки. С библиотекой из Alice моя четвёрка (лицензия от 1С) просто не запускается (закрывается сразу).

#6 Seemann

Seemann

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

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

Отправлено 08 January 2009 - 19:05

Так а я не понял - если используются DLL'ки, их же можно писать и на Delphi? В чём разница - метод вызовов функций или что?

Исходники С++ ScriptHook написаны, как это ни странно, на С++ В Дельфи они не скомпилятся.

Я пробовал юзать Alice, но с ним идёт библиотека binkw32.dll, которая заменяет оригинал в корневой папке четвёрки. С библиотекой из Alice моя четвёрка (лицензия от 1С) просто не запускается (закрывается сразу).

А 1С вроде не поддерживается. Ставь другой ехе.

#7 CatZilla

CatZilla

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

  • LCSTeam
  • PipPipPip
  • 35 сообщений
  • Пол:Мужчина

Отправлено 09 January 2009 - 04:22

Страждущие могут переписать scripthook на дельфи, только зачем?
Изображение

#8 Axel218

Axel218

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

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

Отправлено 09 January 2009 - 07:02

Чтобы скриптинг был более доступным для начинающих программистов

#9 Akmal

Akmal

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

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

Отправлено 09 January 2009 - 09:21

Alex писал что *Поддержки gtaiv.exe от 1С небудет никогда*,или что то типо того :D
Asus P5KC/Asus EN8800 GTS 512/2GB PQI 800Mhz/HDD500+400+120/BP 500W

#10 RussianCJ

RussianCJ

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

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

Отправлено 09 January 2009 - 10:11

Тобиш владельцам лицензионок можно напрочь забыть о скриптинге? :(

#11 Dageron

Dageron

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

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


Отправлено 09 January 2009 - 10:22

Ну так поставь другой *.exe.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#12 RussianCJ

RussianCJ

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

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

Отправлено 09 January 2009 - 10:35

если будет работать, то залейте куда-нить плиз нужный exe, заархивированный.

#13 Axel218

Axel218

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

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

Отправлено 09 January 2009 - 12:29

gamecopyworld.com тебе в помощь

#14 RussianCJ

RussianCJ

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

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

Отправлено 09 January 2009 - 13:01

выдаёт ошибку WS10 после замены

#15 X3M_NRG

X3M_NRG

    Участник

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

Отправлено 16 January 2009 - 21:25

У мя версия от 1с, луа скриптинг работает, ну по крайней мере очиста вонтед левла, а паркур мод не сработал... не САБЖ по мне лучше 2-ой способ, всё равно хотел C++ выучить, а тут такая возможность))) да и кар спавнера я не видел на луа)))

#16 Seemann

Seemann

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

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

Отправлено 16 February 2009 - 14:38

Кто-нибудь заинтересован в возможности написания скриптов в Дельфи? Все тоже самое что в C++ хуке, только на языке паскаль.

#17 Dageron

Dageron

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

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


Отправлено 16 February 2009 - 15:04

Да! Я очень заинтересован. И те многие, кто занимались скриптингом в SA долгое время
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#18 Seemann

Seemann

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

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

Отправлено 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 gadina

gadina

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений
  • Пол:Мужчина
  • Город:Россия, город Герой Тула
  • Интересы:Спрашивать люблю, если что то не знаю.

Отправлено 18 February 2009 - 05:55

А мануал по Паскалю ? И много много таких вот примеров. Я хочу попробовать. Чёрт его знает может и получится.
Люди добрые помогите начинающему скриптеру.

#20 Seemann

Seemann

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

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

Отправлено 18 February 2009 - 15:13

Выкладываю бета-версию Delphi Hook'а (название рабочее, если у кого-то есть хорошие варианты - предлагайте).

В общем, теперь можно писать новые скрипты для 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 из папки игры.

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

  • Прикрепленный файл  dhook.rar   116.98К   166 загрузок





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

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