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


Фотография

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


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

#41 BiDi

BiDi

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

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

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

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

Благодарю!
Seemann, вопрос немного не в тему. Можно ли в СА через скрипт(без клео и подобных) реализовать телепортер? Ну при нажатии определённых клавиш выводилось окно ( или что-нибудь) и там вводишь координаты XYZ и туда перемещаешся?
.1

#42 Seemann

Seemann

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

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

Отправлено 11 March 2009 - 13:25

BiDi,
http://sannybuilder....?pid=2956#p2956
http://sannybuilder....opic.php?id=252
но эти варианты требуют CLEO (перемещение в точку с красным маркером на карте)

http://sannybuilder....hp?pid=724#p724
это вариант без CLEO (перемещение в координаты из внешнего файла)

Еще можно задействовать Coords Manager в Sanny Builder или программу SA Teleport

Ввод текста в игру невозможен без CLEO или иного доступа к памяти (например, печать букв реализована в моде Design Your Own Mission через ассемблер)

#43 BiDi

BiDi

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

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

Отправлено 12 March 2009 - 09:51

Еще можно задействовать Coords Manager в Sanny Builder или программу SA Teleport

Да я знаю, просто хотелось в скрипте без клео это реализовать, а раз нельзя - значит нельзя.


Кстати, есть ли уже готовые скрипты для Делфи Хука? А то самому с 0 очень сложно и ничего не получается.
.1

#44 Seemann

Seemann

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

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

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

Т.е. реального Sanny Bulder'а for GTA4 мы никогда больше не увидим?

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

Кстати, есть ли уже готовые скрипты для Делфи Хука? А то самому с 0 очень сложно и ничего не получается.

Пока только 2 (один идет в комплекте, еще один это скрипт вывода координат на экран). Насчет не получается - говори, что конкретно, я уверен, мы сможем решить эту проблему.

#45 BiDi

BiDi

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

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

Отправлено 12 March 2009 - 17:59

Вобщем по скрипту "спавнера" удалось поставить машину в определённую точку, а не перед игроком, удалось игроку дать броню:). Собственно хотелось бы узнать, как создать машину определённой модели ( хэш надо указывать?) в определённой точке и педа какого нибудь. Пока хватит).
.1

#46 Seemann

Seemann

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

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

Отправлено 12 March 2009 - 19:07

Чтобы создать машину, педа или объект, нужно сначала загрузить соответствующую модель. Отличие движка GTA4 от предыдущих игр в том, что вместо имени модели в скриптах используется хэш имени. Хэши уже многократно обсуждались на этом форуме. Список хэшей машин и педов доступен в файле ScriptingEnums.pas (в конце файла). Для объектов хэш можно узнать здесь
http://www.gtamoddin...ic_Model_Hashes

Например, хеш модели INFERNUS
MODEL_INFERNUS = $18F25AC7

Универсальный способ - это использовать функцию GetModelHash, которая возвращает хэш для любой строки:

GetModelHash('INFERNUS') вернет число $18F25AC7.

Сначала загружаем модель через RequestModel(хэш). Потом в цикле проверяем, загружена ли модель - HasModelLoaded(хэш). Выгружаем после использования - MarkModelAsNoLongerNeeded(хэш).

Пример создания машины в координатах 0 0 0:

RequestModel(MODEL_INFERNUS);
	while not HasModelLoaded(MODEL_INFERNUS) do
	  Wait(0);
	CreateCar(MODEL_INFERNUS, 0.0, 0.0, 0.0, v, true); // CreateChar или CreateObject
	MarkModelAsNoLongerNeeded(MODEL_INFERNUS);

v - это переменная куда будет записан хендл машины (var v: vehicle)

Для CreateChar первым параметром указывается PedType. Списка значений для GTA 4 пока нет, но например 4 - это PedMale, 5 - это PedFemale.

не забываем после того, как машина, пед или объект больше не нужен, нужно превратить его в обычную машину, прохожего или объект, чтобы игра смогла удалить их из памяти. Делается это командой MarkXXXXAsNoLongerNeeded (MarkCarAsNoLongerNeeded, MarkCharAsNoLongerNeeded, MarkObjectAsNoLongerNeeded). Если этого не делать, машина никогда не исчезнет и будет занимать место в памяти. Если спаунить много машин и не удалять их, игра быстро вылетит (такое имеет место быть в мультиплеере, когда читеры часто спаунят машины).

Сообщение отредактировал Seemann: 12 March 2009 - 19:31


#47 Chipsman

Chipsman

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

  • Главные администраторы
  • PipPipPip
  • 786 сообщений
  • Пол:Не определился


Отправлено 12 March 2009 - 19:37

собственно если знаком с си++ то можно смотреть примеры на форумсах для си++ хука (сслыка в первом посте была вроди), считай все тоже самое)

кстати у меня появилась прикольная идея для мода, вот доделаю впл/хпл-редактор и уже буду более подробно разбиратся..

Собственно хотелось бы узнать, как создать машину определённой модели

вот тот же первый тамошний пример будет выглядеть приблизительно так:
function mySpawnCar: vehicle;
var
mymodel: eModel;
myped: ped;
x,y,z:f32;

begin
mymodel:= MODEL_BANSHEE;  // можно посмотреть в ScriptingEnums.pas

RequestModel(mymodel); // запрашиваем модель

while not(HasModelLoaded(mymodel)) do
begin
 Wait(0);														// ждем пока не загрузится
end;

GetPlayerChar(GetPlayer(), myped);		 // получаем игрока

GetCharCoordinates(myped, x, y, z);	// получем его координаты

CreateCar(mymodel, x, y, z, Result, true);  // спавним тачку в тех же координатах

MarkModelAsNoLongerNeeded(mymodel); // освобождаем память

end;

это я так.. сходу написал, не проверял, но должно работать)

и педа какого нибудь

с педом по идее все точно так же, только вместо CreateCar нужно имользовать функцию CreateChar, ну и собственно наша функция должна возвращать ped а не vehicle

эдит
блин) пока строчил ответ тут уже ответили

Сообщение отредактировал Chipsman: 12 March 2009 - 19:38


#48 BiDi

BiDi

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

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

Отправлено 12 March 2009 - 20:43

Да, машинку удалось поставить), теперь решил усадить в неё педа, но не получилось. Что не так ( исходник присоединил)? И ещё с самого начала забыл спросить, то что очень хотел спросить =). Как игрока переместить в определённые координаты? Да, я знаю, что уже надоел, просто на форумсах 30 с лишним страниц да ещё и на инглише.

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


.1

#49 Seemann

Seemann

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

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

Отправлено 12 March 2009 - 23:36

Да, машинку удалось поставить), теперь решил усадить в неё педа, но не получилось.

ну у тебя параметры неправильно написаны. Надо так

CreateRandomCharAsDriver(v, p);
v - это наша созданная машина (инфернус)
p - это переменная, в которую будет записан хендл педа (по аналогии с переменной v). ее нужно объявить как var p: Ped;

как игрока переместить в определённые координаты?

есть нейтив SET_CHAR_COORDINATES. Но в текущей версии хука он не поддерживается. В следующем обновлении добавлю.

#50 Capushon

Capushon

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

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

Отправлено 14 March 2009 - 18:20

2Seemann:

Может быть когда-нибудь увидим. Лично у меня сейчас совсем нет времени заниматься таким большим проектом

Это очень плохие новости ... :(
Может listener поможет?

Но я уверен, кто-нибудь со временем напишет нормальный редактор скриптов.

Боюсь к этому времени может угаснуть интерес к скриптингу - квалификация теряется с каждым днём ...
Сначала ты надежда и гордость, Потом о спину ломают аршин. ©БГ

#51 RussianCJ

RussianCJ

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

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

Отправлено 14 March 2009 - 18:52

Скрипты на дельфи тоже работают только на английских версиях четвёрки? А то на 1С никак не запустить (замена экзешника выдаёт ошибку)...

#52 Dageron

Dageron

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

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


Отправлено 14 March 2009 - 19:22

Попробуй установить второй патч для как для английской версии

Сообщение отредактировал Dageron: 14 March 2009 - 19:22

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

#53 Seemann

Seemann

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

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

Отправлено 18 March 2009 - 09:04

2Seemann:

Может быть когда-нибудь увидим. Лично у меня сейчас совсем нет времени заниматься таким большим проектом

Это очень плохие новости ... :(
Может listener поможет?

может)

Боюсь к этому времени может угаснуть интерес к скриптингу - квалификация теряется с каждым днём ...

Придется нам с тобой уступить дорогу более молодым и амбициозным ;)

Скрипты на дельфи тоже работают только на английских версиях четвёрки? А то на 1С никак не запустить (замена экзешника выдаёт ошибку)...

наверно да, С++ хук рассчитан на английскую версии игры, а значит и дельфи хук тоже. Вообще складывается такая ситуация, что обладатели версии 1С будут в вечном проигрыше, так как большинство программ и модов разрабатывается с учетом более распространенной в планетарном масштабе западной версии игры. Также было с обладателями версий 1.01 и 2.00 игры SA, которые проигрывали обладателям версии 1.0. Советую переходить с версии 1С на стандартную MULTI5 (английскую), чтобы не иметь в будущем никаких проблем с модами, русификатор ведь можно накатить на любую версию игры. Для игры по инету можно держать отдельную лицензионную версию игры без модов.

#54 Dageron

Dageron

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

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


Отправлено 18 March 2009 - 16:24

Не у всех может быть возможность скачать такой объем (~13 гб). 1С игра должна работать если поверх нее поставить второй английский патч. Только вот русик потом действительно придется ставить т.к. русский язык аннулируется.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#55 listener

listener

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

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 18 March 2009 - 17:19

Может listener поможет?

Но я уверен, кто-нибудь со временем напишет нормальный редактор скриптов.

Боюсь к этому времени может угаснуть интерес к скриптингу - квалификация теряется с каждым днём ...


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

А вообще, дело не в редакторе. Редактор можно взять любой который поддерживает работу с проектами. (Я сам пользуюсь SlickEdit, для всего, что не укладывается в вижуал студию). Дело в компиляторе, а его надо дописывать. Прикрутить же поддержку компилятора хоть к тому же notepad++ - не особо сложная задача.

Вещь, которой хотелось бы именно от среды разработки скриптов - интеграция скриптов с остальными ресурсами: подстановка имен моделей через аналог intellisense, выбор точек на карте (а лучше, непосредственно в 3D), редактирование описаний объектов и т.д. Вместе получается достаточно большая задача.

Самое обидное (я опять повторяюсь, но что делать), что большой зинтересованности я не вижу. Ты - практически единственный человек, который как-то и что-то пытается сделать. Самое же распространенное мнение: ""Ну, вот будут скрипты, может быть, мы чего-нибудь сможем сделать. А так, lua нужно учить, C++ нужно учить, а мы этого не хотим и не будем".

Новый синтаксис придется учить в любом случае. Я, для начала, точно буду делать C-подобный парсер. Да, переделать его на синтаксис любого другого процедурного языка, в котором есть нормальные структуры - не проблема, но: 1) сначала нужно доделать работающую версию; 2) многие вещи придется делать по-другому (я достаточно повозился, чтобы впихнуть то, что получается в скриптовом байткоде, в C-шный синтаксис с минимальными изменениями).

Если интересно, что и как получается - создай тему для обсуждения именно скриптового языка (пока не привязывая ее к статье wiki) - я расскажу, что у меня пока получается; возможно, всплывут какие-то непроработанные моменты. (В этой теме, наверное, это будет не совсем удобно - она слишком общая, в ней будет возникать слишком много шума)
You think your day was surreal? Try mine.

#56 Capushon

Capushon

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

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

Отправлено 19 March 2009 - 22:21

2listener:

Вещь, которой хотелось бы именно от среды разработки скриптов - интеграция скриптов с остальными ресурсами: подстановка имен моделей через аналог intellisense

Ну в крайнем случае имена моделей можно пока и руками набирать (их ID'ы), такое уже было в первых версиях билдера от Бартона,

выбор точек на карте (а лучше, непосредственно в 3D)

и без этого можно пока жить - раньше обходились.
Руки чешутся что-нидь замодить глобальное.

Новый синтаксис придется учить в любом случае.

Это не проблема.

Ты - практически единственный человек, который как-то и что-то пытается сделать.

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

Если интересно, что и как получается - создай тему для обсуждения именно скриптового языка (пока не привязывая ее к статье wiki) - я расскажу, что у меня пока получается; возможно, всплывут какие-то непроработанные моменты. (В этой теме, наверное, это будет не совсем удобно - она слишком общая, в ней будет возникать слишком много шума)

Я думаю, тема нужна будет с появлением предмета обсуждения, чтобы можно было посмотреть, попробовать и обсудить баги.

ps: Очень надеюсь на лучшее ... ;-)
Сначала ты надежда и гордость, Потом о спину ломают аршин. ©БГ

#57 RussianCJ

RussianCJ

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

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

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

Советую переходить с версии 1С на стандартную MULTI5 (английскую), чтобы не иметь в будущем никаких проблем с модами, русификатор ведь можно накатить на любую версию игры. Для игры по инету можно держать отдельную лицензионную версию игры без модов.

Я пробовал ставить английский патч, а затем русик...все равно английский язык оставался(

#58 Capushon

Capushon

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

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

Отправлено 22 March 2009 - 10:51

2RussianCJ:

Я пробовал ставить английский патч, а затем русик...все равно английский язык оставался(

Я подробно описывал как получить русскую версию с английскими патчами:
http://sannybuilder....?pid=5884#p5884
Сначала ты надежда и гордость, Потом о спину ломают аршин. ©БГ

#59 RussianCJ

RussianCJ

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

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

Отправлено 22 March 2009 - 18:53

Поставил патч 1.0.3.0, сделал всё по тутору...все равно не робит

#60 Capushon

Capushon

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

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

Отправлено 23 March 2009 - 08:58

2RussianCJ:

Поставил патч 1.0.3.0, сделал всё по тутору...все равно не робит

Да, я уже посмотрел - старая фишка с заменой байт в конфиге уже не проходит.
Думаю...

ps: Как временный выход - поставить на чистую игру два английских патча, сохранить

binkw32.dll
gta4Browser.exe
gtaEncoder.exe
GTAIV.exe
GTAIV.exe.cat
GTAIV.exe.cfg

от патча 1.0.2.0 (где это ещё работало), затем поставить последний патч, но вернуть вышеперечисленные файлы на место. Изменить в конфиге байты.
Другого способа получить русский язык и возможность модов пока нет.

Забыл сказать, файл russian.gxt тоже имеет изменения, я брал его от русского патча.

Сообщение отредактировал Capushon: 23 March 2009 - 09:32

Сначала ты надежда и гордость, Потом о спину ломают аршин. ©БГ




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

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