Модератор форума: КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 декабря 2010, 18:01



11
Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.




KAIN48  Offline  Сообщение №631 написано: 29 января 2012, 02:20 | Отредактировано: KAIN48 - 29 января 2012, 07:30


Шаманистый шаман


Graf, Привет!
Цитата Graf

Возможно ли сделать с помощью скрипта, что бы после третьего выстрела (и попадания в нпц), нпц умирал, не смотря на то, сколько у него осталось жизней?


Это наверное подменой оружия можно сделать.
Допустим в инвентаре 2 магазина(коробок) с одним патроном. (Создать новые аммо) калибр и тп. и Clip Raunds 1
Скриптом считать наличие в инвентаре, как стало 0, менять оружие на оружие с уроном 1000 и плюс три магазина с одним патроном каждый, как стало 2 снова менять на обычный ствол.
Вот только как с перезарядкой быть! Получится выстрелил - перезарядил, как из древней берданки, или одноствольного охотничьего ружья!
А второе наверное не сделать
Пока.
И ещё, нужно как то решить проблему выстрела не по цели! Допустим игрок выстрелил один раз или два и сменил оружие на мощное, тогда непись будет убит с первого выстрела, или со второго.
Вывод - подумать можно, но скорее всего то же не реально. Ведь нет способа узнать в кого стреляет игрок.

Мы вышли из дома, когда во всех... Поздно вышли!
Artem13  Offline  Сообщение №632 написано: 29 января 2012, 07:24


Mercenaries. Со смертью на ты.


Graf, внимательно читай описание секций (блоков). OnHit должен вешаться на объект, ПО которому стреляют, т.е. на непися. А OnActivate не работает на оружии. Для оружия есть блок OnFire.
С попаданиями в принципе можно попробовать, вроде есть функция для определения повреждения конечностей, но тогда все повреждения придётся прописывать в глобальном скрипте, при этом нужно как то получить РефИД цели. Возможно, с помощью НВСЕ и можно, но помучиться придётся серьёзно.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Римайер  Offline  Сообщение №633 написано: 29 января 2012, 09:09


хоМяк


957
Graf, KAIN48, Artem13, а если "эффект" замутить? Есть эффекты 100% убивающие неписей?

Volkogava  Offline  Сообщение №634 написано: 29 января 2012, 09:26 | Отредактировано: Volkogava - 29 января 2012, 09:29



73
Graf, если мне память не изменяет, есть подобный эффект в Fallout 3 - там от Репеллента со второго или третьего удара взрываются головы у кротокрысов, вследствие чего они, естественно умирают. Собственно, может это то что нужно?

Вот сдам бутылки - тогда и куплю гранатомет (©)
Artem13  Offline  Сообщение №635 написано: 29 января 2012, 09:42


Mercenaries. Со смертью на ты.


Римайер, тут трабла именно в подсчёте попаданий.

Добавлено (29.01.2012, 13:42)
---------------------------------------------
Volkogava, там достаточно одного удара, просто нужно подождать, скорее всего реализовано как отравление.


<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Римайер  Offline  Сообщение №636 написано: 29 января 2012, 09:56


хоМяк


957
Artem13, каждый выстрел считать попаданием, и считать выстрелы :) На третьем срабатывает эффект. Чего стеснятся то, пушка так и так читерная выходит ;)

Volkogava  Offline  Сообщение №637 написано: 29 января 2012, 10:05 | Отредактировано: Volkogava - 29 января 2012, 10:06



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

Вот сдам бутылки - тогда и куплю гранатомет (©)
Graf  Offline  Сообщение №638 написано: 29 января 2012, 14:59



179
Цитата Volkogava

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


Хм, можно попробывать...

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Spalny_Vagon  Offline  Сообщение №639 написано: 29 января 2012, 17:37


Мастер


Цитата Artem13

Римайер, тут трабла именно в подсчёте попаданий.


Интересная задача. Вот один из возможных вариантов решения.
Предварительно создаем две фракции: WoundedFaction (раненные) и KilledFaction (убитые)
Пишем эффектовый скрипт:
Code
scn HeadThreekScript

ref HitTarget
short doOnce

BEGIN ScriptEffectStart
set HitTarget to GetSelf
if HitTarget.getdead == 0
  if HitTarget.GetInFaction WoundedFaction == 0 && HitTarget.GetInFaction KilledFaction == 0
   HitTarget.addtofaction WoundedFaction 1
  elseif HitTarget.GetInFaction WoundedFaction == 1 && HitTarget.GetInFaction KilledFaction == 0
   HitTarget.addtofaction KilledFaction 1
   HitTarget.removefromfaction WoundedFaction
  elseif HitTarget.GetInFaction WoundedFaction == 0 && HitTarget.GetInFaction KilledFaction == 1
   set doOnce to 1
  endif
endif
end

BEGIN ScriptEffectFinish
if doOnce == 1
  HitTarget.killactor player 1, 2
endif
end

Смысл скрипта такой: при первом попадании НПС добавляется во фракцию раненных, при втором выбывает из фракции раненных во фракцию убитых, при третьем умирает.
На базе этого скрипта создается Базовый эффект, который в свою очередь служит основой для Объектного эффекта, который вешается на оружие.
Проверено в игре, работает.

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Artem13  Offline  Сообщение №640 написано: 29 января 2012, 17:40


Mercenaries. Со смертью на ты.


Spalny_Vagon, прикольно. С фракциями не работал и даже не подумал, что можно их припахать.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Graf  Offline  Сообщение №641 написано: 29 января 2012, 18:06



179
Spalny_Vagon, Спасибо попробую.

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Spalny_Vagon  Offline  Сообщение №642 написано: 29 января 2012, 18:09


Мастер


Цитата Artem13

С фракциями не работал.


Кроме фракций еще можно использовать ранги. Также широко применяются и ActorValue, в частности переменные типа variable01, которые весьма удобны (я их использую довольно часто). К сожалению, Беседка их тоже использует, поэтому применять их в скриптах, подобных приведенному выше (на кого бог пошлет), нельзя.

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Vi[RUS]  Offline  Сообщение №643 написано: 30 января 2012, 22:03



275
Как сделать так, чтобы NPC первым завел диалог с игроком, если он(игрок) попадает в определенный триггер?

Graf  Offline  Сообщение №644 написано: 30 января 2012, 22:13



179
Цитата Vi|RUS|

short sDoOnce

Begin OnTrigger Player

if ( sDoOnce == 0 )
NPCRef.startconversation player greeting
Set sDoOnce to 1
endif
End



Помойму это написано в картотеке...

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Spalny_Vagon  Offline  Сообщение №645 написано: 31 января 2012, 06:48 | Отредактировано: Spalny_Vagon - 31 января 2012, 08:15


Мастер


Цитата Vi|RUS|

Как сделать так, чтобы NPC первым завел диалог с игроком, если он(игрок) попадает в определенный триггер?


Можно и без триггера, специально для этого есть AI-пакет Dialogue. Указываешь нужные дистанции, и НПС на определенном расстоянии до ГГ начнет диалог. При этом первая фраза должна быть из топика Greeteng.

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Graf  Offline  Сообщение №646 написано: 31 января 2012, 06:54



179
Spalny_Vagon, Опять же, это не моё сообщение... А он просил именно вступая в триггер, я ему и ответил.

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Vi[RUS]  Offline  Сообщение №647 написано: 31 января 2012, 16:15



275
Graf, Spalny_Vagon, Спасибо! good

Добавлено (31.01.2012, 20:15)
---------------------------------------------
А как сделать так, чтобы непись убегал (пакет Travel) после определенного варианта диалога?


Graf  Offline  Сообщение №648 написано: 31 января 2012, 17:34



179
Vi[RUS], Я так вижу ты не проходил мой мод "Arena Mod v1.5" рекомендую скачать, там всё это есть, и даже больше. Просто будешь использывать скрипты которые написал я, в своём плагине.
Вставь в Result Script (End) такую строчку:
Code
NpcRef.addscriptpackage "PackageTravel"
resetAi


Ну а в аи пекете, указывакшь куда будет бежать NPC. Но это добавление НПЦ свой пакет, в игре не проверял, так как есть некие проблемы.

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Vi[RUS]  Offline  Сообщение №649 написано: 1 февраля 2012, 19:24



275
Graf,
Скрипт вставил. НПЦ выбегает из интерьера в котором он находился, но если вслед за ним из интерьера выйду и я, то он снова вернется обратно в интерьер, побродит там пару сек, снова выйдет и обратно вернется, и так далее. unsure

Graf  Offline  Сообщение №650 написано: 1 февраля 2012, 19:52



179
Vi[RUS], Ну правильно, у него же и работают его стандартные аи пакеты. А я дал скрипт на их обновление и добавление нового.

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Volkogava  Offline  Сообщение №651 написано: 5 февраля 2012, 11:08



73
Каким образом можно посмотреть, сколько свободного места осталось у определенного NPC?

Делаю так:

float WWEinfo
short InfoActive


при активации предмета:

Set InfoActive to 1
Set WWEinfo to ( WKCSref.GetAV CarryWeight - WKCSref.GetAV InventoryWeight) ;
ShowMessage InfoCWSmMsg WWEinfo ; Свободного места: %.2f
Set InfoActive to 0


В результате он мне показывает только CarryWeight, не учитывая вычитание.
Пробовал оставить только WKCSref.GetAV InventoryWeight, тогда в сообщении в любом случае показывает 0.00

Добавлено (05.02.2012, 15:08)
---------------------------------------------
И еще вопрос - команда PlaceAtMe, как сказано в Вики, размещаемый объект будет с теми же значениях координат (XYZ), что и на вызываемом объекте. Так вот, можно ли разместить объект, например, выше вызываемого?


Вот сдам бутылки - тогда и куплю гранатомет (©)
Graf  Offline  Сообщение №652 написано: 5 февраля 2012, 11:37



179
Цитата Volkogava

И еще вопрос - команда PlaceAtMe, как сказано в Вики, размещаемый объект будет с теми же значениях координат (XYZ), что и на вызываемом объекте. Так вот, можно ли разместить объект, например, выше вызываемого?


А почему нет?

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Volkogava  Offline  Сообщение №653 написано: 5 февраля 2012, 12:07



73
Цитата синтаксис

PlaceAtMe ItemID, count, [distance], [direction]



ID помещаемого объекта, количество, дистанция от вызываемого, направление (слева, справа, спереди, сзади)

Выше/ниже там нет, поэтому и спрашиваю.

Вот сдам бутылки - тогда и куплю гранатомет (©)
Spalny_Vagon  Offline  Сообщение №654 написано: 5 февраля 2012, 12:13


Мастер


Цитата Volkogava

И еще вопрос - команда PlaceAtMe, как сказано в Вики, размещаемый объект будет с теми же значениях координат (XYZ), что и на вызываемом объекте. Так вот, можно ли разместить объект, например, выше вызываемого?


На http://geck.bethsoft.com в одном месте сказано, что можно указать направление и расстояние до вызывающего объекта (про высоту не сказано ничего), а в другом месте сказано, что ни направление, ни расстояние не работают, поэтому указывать их не имеет никакого смысла, все равно размещаемый объект выпадет куда попало на свободное место.

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Volkogava  Offline  Сообщение №655 написано: 5 февраля 2012, 12:25



73
Цитата Spalny_Vagon

На http://geck.bethsoft.com в одном месте сказано, что можно указать направление и расстояние до вызывающего объекта (про высоту не сказано ничего), а в другом месте сказано, что ни направление, ни расстояние не работают, поэтому указывать их не имеет никакого смысла, все равно размещаемый объект выпадет куда попало на свободное место.


Обидно.
--
Ну а по первому вопросу есть какие-нибудь идеи?

Вот сдам бутылки - тогда и куплю гранатомет (©)
Artem13  Offline  Сообщение №656 написано: 5 февраля 2012, 13:05 | Отредактировано: Artem13 - 5 февраля 2012, 13:14


Mercenaries. Со смертью на ты.


Цитата Volkogava

Ну а по первому вопросу есть какие-нибудь идеи?


Тремя командами (Obj - ID того, чего размещаешь, dlt - на какую высоту помещаешь):
Code
   
float zzz

player.PlaceAtMe Obj 1
set zzz to player.GetPos Z
Obj.SetPos Z (zzz + dlt)


Да, это для размещения над игроком.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
ITU  Offline  Сообщение №657 написано: 5 февраля 2012, 13:15 | Отредактировано: ITU - 5 февраля 2012, 13:18



995
Цитата Artem13

   float zzz Obj.PlaceAtMe set zzz to GetPos Z Obj.SetPos Z (zzz + dlt)


так коллизия не двигается...
а с фурнитурой вообще прикол
можно сделать спавн xmarker чуть выше, а уже потом на него вешать появление чего хочешь

Code
ref targetobj
float zzz

set targetobj to xmarket.placeatme 1 0 0
set zzz to targetobj.GetPos Z
targetobj.SetPos Z (zzz+число)
targetobj.placeatme объект 1
targetobj.disable
targetobj.MarkForDelete


как-то так, если где не ошибся

Spalny_Vagon  Offline  Сообщение №658 написано: 5 февраля 2012, 13:31


Мастер


Цитата Volkogava

Ну а по первому вопросу есть какие-нибудь идеи?


Нет никаких идей, на мой взгляд там все правильно. Почему у Вас не считает, я не знаю. Я проверил в игре (фаллаут-3), у меня считает по любому, как его не крути, может у Вас в message что-то не так, хотя там тоже вроде как трудно ошибиться.
Попробуйте так:
Code
float WWEinfo  
;short InfoActive - это явно лишнее, оно на результат никак не влияет.

begin onActivate
Set WWEinfo to WKCSref.GetAV CarryWeight  
Set WWEinfo to WWEinfo - WKCSref.GetAV InventoryWeight  
ShowMessage InfoCWSmMsg WWEinfo ; Свободного места: %.2f  
end

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Volkogava  Offline  Сообщение №659 написано: 5 февраля 2012, 15:20



73
Цитата ITU

можно сделать спавн xmarker чуть выше, а уже потом на него вешать появление чего хочешь


Спасибо ребят, это обязательно пригодится.

Вот сдам бутылки - тогда и куплю гранатомет (©)
Graf  Offline  Сообщение №660 написано: 10 февраля 2012, 00:13



179
Привет всем.
А как сделать определённому оружию урон по конечностям, который укажу я? Например голова - урон 200, рука - урон 50 ну и т.д.

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





Ответ на жалобу смотрите в разделе жалоб