Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
ITU, такое ощущение, что он у тебя постоянно на игрока срабатывает. И еще настораживает окончание "due to crime" в описании функции. Моего аглицкого не хватает для достоверного перевода и я навскидку определяю, что фракция враждебна к ГГ по причине криминала с его стороны.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
DrHax, Привет! Не хотят по хорошему - будем по плохому! Удаляй у всех принадлежность к фракции, всё из AI пакетов. Агрессивность ставь на Не агрессивный. И на любого из врагов такой скрипт.
Code
scn AAAKainCombatScript
begin GameMode if Getdistance Player < 90 AAAKain188MercARef.StartCombat Player AAAKain188MercBRef.StartCombat Player AAAKain188MercCRef.StartCombat Player endif end
Здесь третья строчка расстояние до игрока - меньше 90 Дальше список тех кто будет нападать на ГГ Попробуй. Пока.
Добавлено (26.06.2011, 13:02) --------------------------------------------- ITU, Привет! Пока
Цитата ITU
нужна функция определения враг ли непись ГГ или нет
А нельзя сделать проверку на предмет. Не знаю всех условий, но допустим так. Пришёл ГГ и если ничего плохого не сделал, у него этого предмета нет (в инвентаре, без сообщения, допустим квестовый, что бы не выбросил). Как только совершил плохое дело. Этот предмет добавился. И тогда при входе в триггер будет проверяться наличие этого предмета и делаться соответствующие выводы. Фракция враждебна, или атака, или дверь не откроется. Игрок даже и знать не будет, что эта "вилка, ложка" - в роли оценки поведения. Я бы так сделал, что бы голову не ломать! Пока.
Мы вышли из дома, когда во всех... Поздно вышли!
Изменение репутации для пользователя Artem13
Artem13Offline
Сообщение №275
написано: 26 июня 2011, 09:19
| Отредактировано: Artem13 - 26 июня 2011, 09:22
ITU, попробуй http://geck.bethsoft.com/index.php/GetActorCrimePlayerEnemy и GetPCEnemyOfFaction (она без описания, но по логике должна возвращать 1, если ГГ враждебен фракции. Фракция, вероятно, указывается в качестве параметра) О, еще наше IsActorEvil.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
А нельзя сделать проверку на предмет. Не знаю всех условий, но допустим так. Пришёл ГГ и если ничего плохого не сделал, у него этого предмета нет (в инвентаре, без сообщения, допустим квестовый, что бы не выбросил). Как только совершил плохое дело. Этот предмет добавился. И тогда при входе в триггер будет проверяться наличие этого предмета и делаться соответствующие выводы. Фракция враждебна, или атака, или дверь не откроется. Игрок даже и знать не будет, что эта "вилка, ложка" - в роли оценки поведения. Я бы так сделал, что бы голову не ломать! Пока.
не пойдет совсем, так я не знаю кто должен войти это может любой нетральный, враг какой, друг ГГ или сам ГГ, вообщем все кто есть в игре или в модах здесь не приход ГГ, тут приход в дом ГГ гостей собственно если пришел враг, включается сирена, включаются защитные поля и прибегает охрана если кто другой, то свободно проходит, перед ним автоматом отключаются защитные поля
Интересно! Они у тебя в моде по своим законам живут. Сами ходят куда хотят! Сами становятся врагами и друзьями! Круто! Трудно наверное будет сделать по правильному. Фракций много. Даже если взять пример с бронёй любой фракции - там скрипты, замучаешься прокручивать до конца. Наличие оружия в руках - то же не показатель. Хотя в принципе - подошёл ГГ к границе зоны охраны. Выпало сообщение " Убрать оружие" У брал - проходи, гостем будешь. Не убрал - огонь турелей на поражение - поля закрыты. А на время нахождения в локации запретить игроку доступ в инвентарь. Так он кулаками драться будет! Не знаю - единственный путь, это убивать ГГ при попытке нападения. И убивать сразу (поставить выкрученные турели, охрану, поселить сильных NPC или скриптом забирать здоровье). Игрок один раз попробует задираться, его убьют. Думаю после загрузки сохранения будет вести себя прилично. Пока.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
DrHax, Привет! Не хотят по хорошему - будем по плохому! Удаляй у всех принадлежность к фракции, всё из AI пакетов. Агрессивность ставь на Не агрессивный. И на любого из врагов такой скрипт. Code scn AAAKainCombatScript
begin GameMode if Getdistance Player < 90 AAAKain188MercARef.StartCombat Player AAAKain188MercBRef.StartCombat Player AAAKain188MercCRef.StartCombat Player endif end
Здесь третья строчка расстояние до игрока - меньше 90 Дальше список тех кто будет нападать на ГГ Попробуй. Пока.
Мы с DrHax мод вместе делаем. Обьясняю почему не подходит: т.к. как только зашел в триггер, враги уже сразу со стволами ищут тебя. А надо что бы они просто врагами были (я ж даже им занятия придумал - один "на стреме", один сидит на стуле - типа шишак, один че-то чинит, а один спит.) И смысл в том что бы убить врагов неожиданно (застать врасплох я б даже сказал), т.к. я им чрезмерно уж мощные пухи, много хп и высокие скиллы поставил. А если сделать меньше, то это будет как избиение младенцев (у всех же модов дофига и пистолеты мощные как антиматериалки )
SERGANT-AK47, Привет! А вы без триггера делайте. Скрипт повесьте на любого из врагов, или на всех. if Getdistance Player < 90 - этой строчкой регулируйте расстояние, когда они обнаружат ГГ. Конечно по правильному было бы сделать проверки на всё - невидимость, звук, способности ГГ, например если игрок крадётся - радиус обнаружения уменьшается. Примером может быть Призрак с крыши поста Мохаве. Там сообщения в диалоге - зависят от уровня способностей игрока. Помните - "Как тихо ты подошёл....." или "Я тебя услышала за километр..." (примерно такие).
Если вам нужно верните, или создайте новые AI пакеты. Того который должен спать привяжите к кровати Linked Ref связью и дайте пакет SandBoxCurrentLocation Тому который должен сидеть на стуле - то же самое. Тому кто должен бродить только пакет SandBoxCurrentLocation - будет бродить по локации взаимодействуя с маркерами. Иму же можно датать пакет Guard (охрана) или Patrol (патруль) и назначить маршрут патрулирования. Почитать о этом можно здесь - Патруль Можно в скрипт добавить проверку на убийство, кого то из врагов. if AAAKain188MercARef.GetDead Или когда NPC заметит ГГ if GetDetected player Или когда был атакован if AAAKain188MercARef.GetAttacked Можно использовать все или только нужные для каждого NPC. Пробуйте по заменять проверки и подберите нужную. Пока.
Мы вышли из дома, когда во всех... Поздно вышли!
Изменение репутации для пользователя SERGANT-AK47
SERGANT-AK47Offline
Сообщение №282
написано: 27 июня 2011, 14:00
| Отредактировано: SERGANT-AK47 - 27 июня 2011, 14:01
KAIN48, Сделал им одну template data. Поставил флажки на Al data, Packages и Factions. Они стали меня без скрипта атаковать, но и друг друга тоже!! В Al data агрессивность переставил с очень агрессивных на просто агрессивных. НО(!) Теперь они друг друга атакуют, а меня нет!!!! Что за лажа???
SERGANT-AK47, Привет! У меня только одно предположение, что они все из разных фракций. Не могут неписи из одной фракции атаковать друг друга. Я сейчас примерно то же самое делаю. Организую постоянные атаки врагов на пост охраны. Создал для нападающих фракцию враждебную ГГ. В остальных настройках у них ничего нет, в пакетах AI то же - вот смотри.
И атакуют как положено, друг с другом не дерутся. Первая группа атакует по команде AAAKain188MercA.StartCombat Player Все последующие по различному таймеру для смерти каждого атакующего из первой группы. Возникают из "небытия" по команде AAAKainXMarkerRef.PlaceAtMe AAAKain188MercA 1 5 0 на маркер в нужном - невидимом ГГ месте и оттуда идут в атаку. Сейчас вот размышляю, как лучше остановить эти атаки. Вариантов несколько 1 - после смерти определённого NPC из охраны 2 - после необходимого колличества 3 - сделать одну, но массированную (большими силами нападающих) 4 - сделать с повтором раз в день и тп. Если мод не очень большой и тебе не трудно вышли через Народ. Я скачаю и посмотрю. Пока.
Возможно во фракции стоит флажок Special Combat. Он вроде позволяет неписям воевать между собой, состоя в одной фракции. Ещё можно посмотреть флаги Ignore Damaging в настройке комбат-стиля. Они отвечают за возможность применения гранат, ракетниц и т.д. по своим. Вернее за запрещение применения, если свой попадает в сферу взрыва. Кстати в игре вроде есть ограничение по дружественному огню. Через три попадания непись становится агрессивным к нападающему. Но это относится в отношениях ГГ и компаньона. Возможно и неписи внутри фракции подпадают под это дело.
За сим прощаюсь, Олег.
Мне бы хоть ненадолго, в любое время, кроме 90-х. Чтобы конфета была с ладошку, чтобы, упав с велосипеда, коленку разбить, чтобы на первое свидание сходить...
Всем привет. Я хочу сделать мод для ФО3 с созданием ствола на верстаке. Я понял что это делается через скрипты и что надо работать со скриптами у которых написано в начале ИД Schematics. Объясните плиз или дайте ссылку на тутор, как сделать свой рецепт
SERGANT-AK47, проще посмотреть скрипт из собственно Ф3. Там на самом деле всё просто. При активации верстака проверяется: 1. наличие рецепта 2. наличие ингредиентов затем из инвентаря удаляются ингредиенты и добавляется собранный ствол. Здесь один недостаток по сравнению с НВ - количество рецептов определено на этапе создания и расширить их количество можно только изменением скрипта и сообщения.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя SERGANT-AK47
SERGANT-AK47Offline
Сообщение №287
написано: 4 июля 2011, 11:26
| Отредактировано: SERGANT-AK47 - 4 июля 2011, 11:27
Artem13, Я понял что смотреть надо и делать по аналогии на основе скриптов с подписью вначале Schematics и названием ствола (SchematicsDartGunItemSCRIPT) и редактировать скрипт SchematicsWorkBenchScript. Но как именно я не могу понять. Именно это я и прошу объяснить
SERGANT-AK47, эээ, слегка не понял что значит "как именно". Собственно сборка идёт в одном скрипте - SchematicsWorkBenchScript. Остальные, емнип, просто добавляют рецепт в пип-бой. Ладно, вечером приду домой, попробую разжевать - сейчас нет под рукой скриптов.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя SERGANT-AK47
SERGANT-AK47Offline
Сообщение №289
написано: 4 июля 2011, 12:16
| Отредактировано: SERGANT-AK47 - 4 июля 2011, 12:58
Artem13, Мне надо: 1)Рецепт для верстака 2)Заметка в пип-бое о рецепте 3)Схема (как я понял 2 и 3 это одно и тоже находится в Note и ИД с приставкой Schematics) Э-ээ... Вечер уже сейчас, а позже мне возможно надо будет уйти
SERGANT-AK47, нет, 2 и 3 не одно и тоже. Одно и тоже - 1 и 2 В Ф3 нет рецептов как таковых. Поэтому порядок такой: 1. Продумываешь из чего что собирать. 2. Создаёшь заметки с рецептами/схемами 3. Создаёшь рецепты/схемы-активаторы. При их активации в пип-бой добавляется заметка из п. 2, а сами активаторы исчезают. (Это как раз и делают скрипты Schematics) 4. Пишешь скрипты для пункта 3. 5. Создаёшь сообщение с кнопками выбора схемы. 6. Пишешь скрипт для верстака, в котором в секции OnActivate вызывается Сообщение из п.5., а в GameMode анализ выбора игрока и собственно сборка.
Могу завтра-послезавтра нарисовать тебе тутор небольшой
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Могу завтра-послезавтра нарисовать тебе тутор небольшой
Хорошо, спасибо, а то я почти не че не понял 1 - продумал. 2 - сделал 3 - э-ээ. чего-чего о0 4 - скрипты не мое 5 - Это в message делается? 6 - аналогично 4
Друзья, кому что обещал я помню, работа идёт, в скором времени раздам слонов
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Подскажите пожалуйста, если я хочу поставить всплывающие сообщения, появляющиеся, когда происходят различные события. Пример. ГГ натыкается на когтя смерти, появляется сообщение типа "во попал", ну как мысли вслух. Весь скрипт можно не писать, просто как он должен выглядеть. Спасибо.
"Ковальски, если ты не выживешь…, я могу забрать твой музыкальный центр?" Полковник Джек О'Нилл "Звездные врата"
Kraas, боле-менее приемлемо с т.зр. совместимости - почти никак. Придётся вешать скрипт либо на игрока, либо на цель, что приведёт к несовместимости с к-л другим модом или даже патчем. В рамках стандартных возможностей. Как дела с этим в НВСЕ, я не в курсе - не использую. Есть другой вариант - создать собственных монстров, хоть техже КС, но с твоими собтв. ID, и на них повешать скрипт.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Artem13, Не не канает. Я хотел изобразить реакцию ГГ более живо, что-ли. Ну мы же все время думаем, и обо всем. Вот и хотел этакий "поток сознания" бегущей строкой пустить. Жаль, что так нельзя, ну что ж. Мож кто-нить додумается.
"Ковальски, если ты не выживешь…, я могу забрать твой музыкальный центр?" Полковник Джек О'Нилл "Звездные врата"
Не,я не утверждаю 100%, но в первом приближении такой возможности не нашёл.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
А вот это у тебя правильно написано Судя по названиям вот эта часть RIFFVertibirdAIQuest квест, а вот эта часть hasVBRadio to 1 - я не знаю что такое. Но set (установить) квест, либо set (неизвестное) - оба никакак Сам то скрипт простой. При добавлении в инвентарь предмета (на котором скрип) должно что то произойти, а вот что непонятно. Напиши просто словами, что должно произойти и при каких условиях, если они есть дополнительные условия. И если не секрет, что это hasVBRadio to 1. Has - похоже на начало функции, а VBRadio - на ID радиостанции. Напиши, что нужно и попробуем сделать. Пока.