[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Форум » Игры серии GTA » GTA IV » Вопросы по скриптингу GTA IV (Общие вопросы по ScriptHookDotNet)
Вопросы по скриптингу GTA IV
wmysterio
Администраторы
Скриптер
21.02.14 12:25
Offline
В этой теме обсуждаются общие вопросы по скриптингу GTA 4. Пока этот род моддинга не очень развит в этой части игры, но на некоторые вопросы всё же можно ответить.

wmysterio
Администраторы
Скриптер
04.04.19 15:59
Offline
Цитата ed9mkm ()
Придумал сделать счетчик очень простым способом. Просто создал новый класс
Да, так тоже можно. Почему-то не подумал об этом ) Этот способ подойдёт, если нужно контролировать 1 ракету. Для других нужно отдельные счётчики делать.

ed9mkm
Пользователи
06.04.19 09:31
Offline
Цитата wmysterio ()
Да, так тоже можно. Почему-то не подумал об этом ) Этот способ подойдёт, если нужно контролировать 1 ракету. Для других нужно отдельные счётчики делать.

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

Добавлено (06.04.19, 15:14)
---------------------------------------------
JulioNIB написал достаточно много полезных инструкций. Но он все для VB пишет. Я не знаю, как перевести с VB на C# вот это: "msg(Starting PTFX, 3000)"



Добавлено (07.04.19, 11:58)
---------------------------------------------
Сделал привязку к оружию кодом:

Код
if (Player.Character.Weapons.Current == Weapon.Handgun_DesertEagle && Player.Character.isShooting)

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

По-прежнему хочу узнать, как в C# писать код, который в VB "msg(Starting PTFX, 3000)". Он задает время в миллисекундах, на протяжении которого будет работать эффект частиц. Но пока не знаю, что значит это "msg".
Отредактировал ed9mkm - Воскресенье, 07.04.19, 11:59
Прикрепления: 1398936.jpg(40.9 Kb)

wmysterio
Администраторы
Скриптер
07.04.19 19:43
Offline
Цитата ed9mkm ()
Но пока не знаю, что значит это "msg".
Скиньте код JulioNIB. Я так ничего не пойму. Скорее всего это пользовательская функция.

ed9mkm
Пользователи
07.04.19 23:19
Offline
Цитата wmysterio ()
Скиньте код JulioNIB. Я так ничего не пойму. Скорее всего это пользовательская функция.

http://gtaxscripting.blogspot.com/2013/04/tut-particle-effects.html
В этой инструкции данный код.

wmysterio
Администраторы
Скриптер
08.04.19 00:12
Offline
Цитата ed9mkm ()
В этой инструкции данный код.
JulioNIB похоже ненавидит своих читателей, раз весь код в картинках выкладывает sad

Скорее всего "msg" - пользовательская функция, которая выводит субтитры на экран. Выглядит примерно так:
pubic void msg( string message, int time ) {
/* ... */
}

msg(Starting PTFX, 3000)

ed9mkm
Пользователи
08.04.19 14:12
Offline
Цитата wmysterio ()
Скорее всего "msg" - пользовательская функция, которая выводит субтитры на экран.

Здесь вроде бы не выводит ничего, а устанавливает время действия эффектов частиц. 3000 - это миллисекунды. Точно не знаю, конечно.

wmysterio
Администраторы
Скриптер
08.04.19 15:07
Offline
Цитата ed9mkm ()
Здесь вроде бы не выводит ничего, а устанавливает время действия эффектов частиц.
Нет, не устанавливает. Выводит в субтитрах текст. Как в Sanny Builder опкод 00BC.

Эффект будет существовать, пока он не будет остановлен нативной функцией "STOP_PTFX".

ed9mkm
Пользователи
11.04.19 12:14
Offline
Цитата wmysterio ()
Эффект будет существовать, пока он не будет остановлен нативной функцией "STOP_PTFX".

Увы. Эффект будет существовать, пока он работает, как таковой - т.е. если его продолжительность, например, 5 секунд, то столько он и будет. Я использовал в одном случае зацикливание (в if), чтобы эффект работал долго.

Хороший у вас скрипт для записи координат. Но я его немного доработал:

Код
        void FirstScript_KeyDown( object sender, KeyEventArgs e ) {
            if ( e.Key == System.Windows.Forms.Keys.O ) {
                Game.DisplayText("Position saved into File...");
                File.WriteAllText( "scripts\\PLAYER_POS.txt", Player.Character.Position.X.ToString() + "F, " +Player.Character.Position.Y.ToString() + "F, " + Player.Character.Position.Z.ToString() + "F, " + Player.Character.Heading.ToString() + "F", Encoding.Default );
            }
        }

Player.Character.Heading - это угол актера. Во многих случаях важно установить актеров, повернутыми лицами в определенную сторону.

А этот код может менять актерам шлемы, очки и прочее из того, что в трейнере есть в пункте "Hats":
Код
Musor.Skin.SetPropIndex(PedProp.UNKNOWN_0, 0);

Добавлено (16.09.19, 11:12)
---------------------------------------------
Не знаю, насколько возможно воплотить это в реальность, но пытаюсь понять, как заставить в GTA 4 толпу нападать на конкретные автомобили, а не на педов. Среди нативных функций есть одна, которая заставляет актеров стрелять в конкретную точку, в т.ч. и в автомобиль. Но мне нужно не стрелять, а чтобы толпа била машину. К сожалению когда выдают конкретным актерам не огнестрельное оружие, то они ничего не делают, не нападают на заданную позицию.

Хочу либо создать совместимый класс с классом Vehicle, чтобы прописать... для машины RelationshipGroup и таким образом заставить актеров бить машины, помеченные ненавистным для них типом (команда ped.Task.FightAgainstHatedTargets(150.0F, -1);). Не знаю, насколько это возможно. Второй вариант - создать как-нибудь принципиально новое задание - атаковать машину. Такой оппкод есть для GTA SA. А для GTA 4 и близко нет. Для GTA 5 есть класс Entity, которым может быть как пед, так и транспорт и объекты. Там с этим проще. Но в GTA 4 нужно что-то придумать. Задача - чтобы толпа в игре громила конкретные автомобили.


wmysterio
Администраторы
Скриптер
17.09.19 18:21
Offline
Цитата ed9mkm ()
Хочу либо создать совместимый класс с классом Vehicle
Не получится, он запечатан.
Цитата ed9mkm ()
К сожалению когда выдают конкретным актерам не огнестрельное оружие, то они ничего не делают, не нападают на заданную позицию.
В нативках посмотреть надо, пока ничего похожего я не нашел.

ed9mkm
Пользователи
18.09.19 12:01
Offline
Цитата wmysterio ()
В нативках посмотреть надо, пока ничего похожего я не нашел.

Все нативки очень тщательно пересмотрел - нет такого. Еще пытаюсь понять, можно ли заставить водителя пожарной машины использовать водяную пушку. Тоже не нахожу такого. Хотя для ГТА 5 я написал один мод, где водометы полиции используют эту пушку - там есть в Task такое задание - стрельба средствами транспортного средства в кого-то. Для ГТА 5 больше возможностей в скриптинге. Но ГТА 4 ценю за некоторые преимущества - в частности, за возможность написания скриптов массовых драк. А в ГТА 5 дерется не больше трех актеров одновременно, а другие "ждут очереди".

Добавлено (18.09.19, 19:18)
---------------------------------------------
Имитацию водяной пушки смог сделать с помощью эффектов частиц.

Код
GTA.Native.Function.Call("TRIGGER_PTFX_ON_VEH", "shot_directed_water", vodomet, 0.0, 1.0, 2.5, 256.0, 0.0, 0.0, 5.00000000);

Но это только визуально. Пытаюсь сделать эффект физического воздействия этой воды.

Форум » Игры серии GTA » GTA IV » Вопросы по скриптингу GTA IV (Общие вопросы по ScriptHookDotNet)
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Поиск: