Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
Я тут накатал было один способ без этой функции, но потом сообразил, что он имеет тот же недостаток, что и с ней: кто бы ни убил когтя, счётчик увеличивается. Хоть и немногие помимо игрока на это способны, но всё же.
Изменение репутации для пользователя LonelyTraveler
LonelyTravelerOffline
Сообщение №1442
написано: 20 марта 2015, 22:05
| Отредактировано: LonelyTraveler - 20 марта 2015, 22:06
Пожалуйста! Помогите склепать такую задачу, по идее не слишком сложна должна быть.
Берется 1 активатор в виде консольной панели, который будет выводить сообщение (разное); 1 активатор рычаг; 5 активаторов переключателей (те, что с красной(выкл) и зелёной(вкл) лампочкой и 1 терминал.
Суть квеста - нужно настроить соотношение давления газа. Нажав на консольной панели нам показывает сообщение (начальный статус) - [0:100]
Рядом с терминалом прикреплены 5 переключателей. Каждый из них обозначает свою скрытую цифру. первый переключатель - это 1; второй - это 2; третий - это 4; четвертый - это 8; пятый - это 16. В терминале следующее сообщение: [Числовой множитель], открыв его выводятся числа: 1, 2, 3, 4.
Нажав на первый переключатель (1), посмотрим на консоль, оно выдаст сообщение [1:99] Если нажать на первый(1) переключатель и на третий(4), а потом посмотреть на консоль, она выдаст сообщение [5:95]. (потому что включены переключатели один(1) и три(4): 1+4=5) Если не меняя включенные переключатели, открыть терминал, можно выбрать множитель - например 3. Теперь сумма всех переключателей умножается на 3. Переключатель один(1) и три(4) будут выводить сообщение у консоли (1+4=5*3=15) - [15:85] Если включить все переключатели, и выставить множитель 4, то сообщение будет [100:0], (вместо 124:0, так как 100 это максимальное должно быть).
Задача: уравновесить давление - нужно [50:50]. Это переключатель один(1), четыре(8) и 5(16) (1+8+16=25) и в терминале ставим множитель на 2, (25*2=50). Теперь поворачиваем рычаг, и открывается большая железная дверь. Ах да, если выставлено любое другое соотношение, кроме как 50:50, то при повороте рычага происходит взрыв с последующей смертью ГГ.
Такая вот идея. Огромное спасибо, если поможете воплотить её в фоллыч.
Изменение репутации для пользователя Филя12
Филя12Offline
Сообщение №1443
написано: 21 марта 2015, 04:03
| Отредактировано: Филя12 - 21 марта 2015, 04:06
>>кто бы ни убил когтя, счётчик увеличивается. А увеличивается даже если пишешь плэйера - Player.GetDeadCount ? А все таки как же можно сделать так чтоб при убийстве 20 разных когтей с разным ИД появлялся мессадж? Есть какие сособы? может какие другие команды есть которые можно прописать?
вам наверное этот вопрос несложный
а в gekk нету готового скрипт где это сделано?
>>"Помирить" ты их никак не сможешь, если функция не работает со списками, то она не работает не чуть-чуть а насовсем.. Спасибо за ответ. Жаль значит нужно другой спосб искать
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1444
написано: 21 марта 2015, 05:55
| Отредактировано: КсюXa - 21 марта 2015, 18:35
А все таки как же можно сделать так чтоб при убийстве 20 разных когтей с разным ИД появлялся мессадж?
Допустим, я сделаю мод, который добавит в игру новый вид существ по имени "Клошка". Совершенно новое существо. Будет водиться повсеместно и питаться кем попало. Для создания этого существа использую модели-текстуры оригинальных когтей, анимации когтей, все параметры сделаю как у когтей. И для оригинальной игры, и для модов - для всех кроме игрока - это новое существо совершенно не коготь и никакого отношения к когтям не имеет, и поэтому, разумеется, никакая считалка когтей ни за что не согласится убийство этих "клошек" считать убийством когтей. А вот игрок с первого взгляда скажет - это ж коготь! Называется не так, но я же вижу!
Поэтому ответ на твой вопрос категорически отрицательный: никакой мод не сможет считать разных когтей.
Теперь вернёмся к твоей идее списка блюдей когтей. Чтобы не портить базовые объекты и не конфликтовать с другими модами, перво-наперво берём AddSpell и прицепляем на каждого базового когтя из списка свой Actor Effect со скриптовым Base Effect внутри. А скрипт этого эффекта висит ждёт пока носитель эффекта не помрёт, после чего смотрит "IsKiller Player", и если смертельный удар был нанесён ГГ - плюсует какую-то там глобальную переменную. Тот же квестовый скрипт, который поначалу развешивал эффекты, в основное время сидит и ждёт, чтобы та глобальная переменная стала кратна 20, а чуть ой выдаёт сообщение "Наш пострел уже мастер маникюра N-го разряда!"
Такой вариант не будет считать любых когтей, и он будет засчитывать только нанесение смертельного удара - но это довольно-таки похоже на то, чего ты хотел добиться вначале.
Ещё GetCauseOfDeath есть! Правда, будет трудно доказать, что метнул барана (если причина смерти - попадание бараном по лбу) именно ГГ... Пусть считается самоубийством (cf.: suicide by drawing on a cop )
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1448
написано: 21 марта 2015, 11:59
| Отредактировано: Joopeeter - 21 марта 2015, 12:01
Про GetCauseOfDeath я не забуду, потому что успел хорошенько побиться об неё головой. Потом понял, что она на самом деле толком не работает - то покажет 0 на зашибленном бараном, то -1 на мёртвом, то ещё что-нибудь несуразное...
>>Может и Когтей так же отслеживать? Спасибо за ответ. Интересно, разбирался - там скрипит сидит на самом репеленте и выходит ты репелентом при убийстве считаешь. Так? а мне надо любым оружием: кулак репелент или гранатомет - неважно.
>>перво-наперво берём AddSpell и прицепляем на каждого базового когтя из списка свой Actor Effect со скриптовым Base Effect внутри. >>Тот же квестовый скрипт, который поначалу развешивал эффекты, А как это сделать через скрипт квеста? чего то я не понял - пишу CrDeathClaw.addspell ClawSpell И ничего опять не сохраняется. пишет invalid reference "CrDeathClaw" (only object reference and reference veriables are allowed in this context) CrDeathClaw это ж ведь же базовый коготь? и писал CrDeathClawList.addspell ClawSpell список тоже не сохраняется. как цеплять актор эффект скриптом квеста?
>>плюсует какую-то там глобальную переменную это еще за что такое? как ее делать?
спасибо за ответы!
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1451
написано: 21 марта 2015, 18:18
| Отредактировано: КсюXa - 22 марта 2015, 14:36
>>плюсует какую-то там глобальную переменную это еще за что такое?
Ннуууууууу... Глобальная переменная - это такая же переменная, как и в скриптах, только для её объявления в ГЕКК есть отдельный раздел Globals. И к глобальной переменной (variables по-английски, а не veriables) любой скрипт (хоть полный, хоть результ-скрипт стадии квеста или топика) может обратится напрямую. Т.е. - не надо указывать к какому скрипту относится эта переменная, что значительно упрощает жизнь мододелу.
>>Значит ошибка в ClawSpell >>А перед этим создал этот самый ClawSpell? Я пока сделал его как актор эффект у болотника (водяное дыхание) MirklurkWaterBreathing но через addspell он не ставится базовому когтю никак. пробовал еще и прямо его ставить CrDeathClaw.addspell MirklurkWaterBreathing - то же не ставится и ту же ошибку показывает а MirklurkWaterBreathing он у блотника стоит значит должен ставится. я только не пойму почему тогда когтю он не ставится скриптово, через addspell? вы же пишите что базовому спелл можно дать?
>>в ГЕКК есть отдельный раздел Globals Спасибо теперь понял. Я раньше этот раздел видел только не знал зачем он нужен.
>>(variables по-английски, а не veriables) А я по памяти с ошибки печатал. сам ошибся не знаю как скрины тут выкладывать.
Заходишь на сайт, ссылку на который тебе дал Ипатов, загружаешь туда нужную картинку (там всего две кнопки: Выберите файл и Отправить) После отправки откроется окно, в котором будут даны коды для вставки. Выбираешь код "превью с миниатюрой" (см. скриншот ниже), копируешь код и вставляешь в свое сообщение.
Цитаты здесь, на форуме: выделяешь в тексте пользователя тот фрагмент, который хочешь процитировать и жмешь под сообщением этого же пользователя кнопку "Цитата".
Ой, всё...
Изменение репутации для пользователя Филя12
Филя12Offline
Сообщение №1455
написано: 22 марта 2015, 09:27
| Отредактировано: Филя12 - 22 марта 2015, 09:38
Цитаты здесь, на форуме: выделяешь в тексте пользователя тот фрагмент, который хочешь процитировать и жмешь под сообщением этого же пользователя кнопку "Цитата".
Спасибо! Уже попробовал
Добавлено (22 Марта 2015, 12:27) --------------------------------------------- Еще забыл что на счет когтей написать: если скрипт-считалку из эффектов поставить на самих базовых когтей с Begin OnDeath, тогда все хорошо считается и все нормально. Но там на некоторых когтях уже другие скрипты стоят, как тогда быть? Не охота чтот лезть туда.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1456
написано: 22 марта 2015, 09:40
| Отредактировано: КсюXa - 22 марта 2015, 13:38
Чтобы игрок не забыл, какой он замечательный молодец.
ну там да - переменную нужно использовать, я просто ее не стал ставить пока. чтобы дойти до этого уровня. я так еще количество с 20 до 4 убрал пока - надоело уже по 20 когтей грохать чтобы только скрипт проверить
Я пока этот скрипт сделаю и так уже мастером по подстриганию когтей стану - без всякого мессаджа
если в актор-эффекте то после того как забью одного зверя сразу получаю мастера. что-то тут не то
Однократно проверяй. Заверни с таким же DoOnce, как заворачивал AddSpell, иначе работает: таак... я умер.. меня убил ГГ.. звезду графу Суворову! таак.. я всё ещё мёртв.. убийца всё ещё ГГ.. звезду графу Суворову! таак... я всё ещё мёртв...
Ха! Интересная весч - оказалось если писать в консоли KillAll Player то все убийства гг засчитываются. даже нигде не читал об таком, писали просто про чит KillAll и все.
жаль что раньше не знал, а то уже когтей штук 200 перебил пока скрипт проверял. такто дело веселее
Добавлено (09 Апреля 2015, 06:30) --------------------------------------------- Привет! опять борьба! Не знаю даже как быть.
вот хочу сделать захирательную гранату и мне нужно чтобы когда гг или нпц горят, то если прыгнуть в воду, эффект снимался. И еще - чтобы чем дольше эффект, тем сильнее одетые вещи портились.
для оружия вроде есть ModWeaponHealthPerc, чем дольше эффект, тем сильнее оружие портится. Но как быть с минами и гранатами? чтобы не порились. их же не отремонтировать!
и еще - одетые вещи- бронька, шлемы. для них можно как-то сделать так чтобы постепенно портились от эффекта? вроде того как ModWeaponHealthPerc в эффекте скрипта работает, но для бронек.
На счет горения. Вот не знаю как отключить эффект горения когда гг или нпц в воде. есть Dispel для эффекта но как его так прикрутить чтобы снимался в воде? IsSwimming пробовал но чтото не работает
REF target
Begin ScriptEffectUpdate
SET target TO GetSelf
IF target.IsSwimming target.Dispel FireGrenadeEffect ENDIF
END --- это мне для мода для Фаллаут 3 надо если что. Можете помочь?
Да, она так работает. На самом деле тут даже не нужен референс - пишем "если неприцельно IsSwimming, то неприцельно Dispel", и оно самонаведётся куда надо. Неловкий момент там в основном в том, что про ГГ IsSwimming не работает...
Как на ГГ одеть нужную одежду (которя уже в инветаре) например как в ДЛС Мертвые деньги ГГ появляется в комбинезоне уже одетом - в нашем ПОИСКЕ по форуму и так и сяк писал ни черта он не ищет.