Здесь задавать вопросы по плагиностроению для Обливиона.
Тема по Обливиону. Тема по Морровинду тут.
Вопросы по плагиностроению
#3421
Отправлено
Сила - способность улыбаться © Белльмере-сан "One Piece"<img src="http://www.kolobok.u...zer/pirate.gif" border="0" class="linked-sig-image" />
#3422
Отправлено
Ну, вообще, я уже сделал отдельный esp, в котором есть сканер, который чекает всех актеров в радиусе 2048 юнитов и если непись - стражник, меняет его уровень на любой в интервале с 30 по 35-й. Просто у меня SetLevel выбивает игру почему-то.
А так - да, по сути, это является решением Вашей проблемы.
Попробую понадеяться, что, возможно, дорасту когда-нибудь до того, чтобы самому такие "сканеры" делать.
Как бы там ни было - спасибо! Хоть что-то (вроде как) удалось!
Не желаете еще заморочку?
Насколько сложно реализовать в игре уязвимость/сопротивление определенному типу оружия?
Пример: скелет: должен иметь сопротивление колющему урону (стрелы) и уязвимость к дробящему.
#3423
Отправлено
Как бы там ни было - спасибо! Хоть что-то (вроде как) удалось!
В общем, я родил данный плагин, можете разобрать его и проверить работу. Принцип очень прост, я его уже выше описывал. В спеллах найдите заклинание сканера и гляньте скрипт, все должно быть понятно.
Просто я не могу его толком проверить, почему-то игра вылетает при использовании команды SetLevel. Кстати, работает оно с OBSE, если что. Без него не будет.
Прикрепленные файлы
- jpsmith это нравится
#3424
Отправлено
Насколько сложно реализовать в игре уязвимость/сопротивление определенному типу оружия?
Не слишком сложно, но придется помуздыкаться. Поможет в этом Event-Handler типа "OnHealthDamage", который будет фиксировать урон до того, как тот будет применен на актера. Крутая штука, но в ней есть некоторые тонкости - придется подумать над условиями его срабатывания, к примеру: проверка на текущую анимацию атакующего, наличие оружие в руке и его тип. Ну, в целом, реализовать можно.
- jpsmith это нравится
#3425
Отправлено
Не слишком сложно, но придется помуздыкаться. Поможет в этом Event-Handler типа "OnHealthDamage", который будет фиксировать урон до того, как тот будет применен на актера. Крутая штука, но в ней есть некоторые тонкости - придется подумать над условиями его срабатывания, к примеру: проверка на текущую анимацию атакующего, наличие оружие в руке и его тип. Ну, в целом, реализовать можно.
За плагин - еще больше спасибо! Просидел вчера много времени, отловил с десяток стражников, переписал им уровни... Комсомол подкрался, откуда не ждали!
Теперь один стражник нормально может замахать 5-6 пум (если их не больше 2, конечно), 2 или даже 3 сприганнов. НО! После этих 5 пум у него вся броня в труху. И здоровья, понятное дело, чуть.
И если со здоровьем можно что-то придумать даже с моим знаниями (была идея накинуть на них что-то типа регенерации ужасных зомби), то вот что делать с броней...
Снова придется читать Интернеты, много думать...
А со скелетами... В процессе чтения нашел презабавнейшую функцию: OnHitWith. Не знаю, как с дробящим, но со стрелами - милое дело: OnHitWith Arrow1Iron - урон "железной" стрелой.
Конечно, остаются еще всяческие стрелы с зачарованиями...
Так вот: получается, поймать, что по скелету попали стрелой - нефиг делать. Но вот как уменьшить величину урона? В процентах от того, который нанесен?
Придется разбираться, что за "OnHealthDamage" такое.
#3426
Отправлено
то вот что делать с броней...
А надо ли оно Вам? Они все равно каждые 3 дня респавнятся, смысл городить скрипты еще и для каждой копии, размещенной в мир? Умер и умер, естественный отбор.
Так вот: получается, поймать, что по скелету попали стрелой - нефиг делать. Но вот как уменьшить величину урона? В процентах от того, который нанесен?
OnHealthDamage возвращает 3 параметра: атакующего, получившего урон и величину урона. Я же написал, что этот хандлер возвращает все это ДО ТОГО, как урон будет применен на актера.
P.S Мне лень мудрить с математическими действиями, я знаю, что тут можно чуть иначе посчитать.
Let fDamage := Abs fDamage - получаем абсолютную величину урона; rTarget.ModAV2 Health fDamage - предотвращаем таким образом получение первоначального урона; Let fDamage := (fDamage\100)*-5 - делим урон на 100%, получая вещественную величину в одном проценте и умножаем на 5, получая тем самым 5% от той величины, которая должна была быть нанесена. rTarget.ModAV2 Health fDamage - наносим актеру урон, который рассчитали в прошлой строке. Величина уже отрицательная и именно отнимет ХП, поскольку было умножено на "-5", а не на "5".
- jpsmith это нравится
#3427
Отправлено
А надо ли оно Вам? Они все равно каждые 3 дня респавнятся, смысл городить скрипты еще и для каждой копии, размещенной в мир? Умер и умер, естественный отбор.
Они как-то странно респавнятся. Глюк, наверно, но в моей игре, скажем, возле руин Гарлас-Агея уже дней 50 торчит стражник. Рядом - труп его лошади.Там Врата появляются. Мой перс мимо пробегал, как раз, когда этот стражник махался там со стражей Врат. На пару монстров завалили, Врата закрыл, стражника вылечил. Теперь он там так и стоит.
Проблема с амуницией решилась маленьким модом, позволяющим обмениваться вещами с NPC. Забрал у него шмот, починил (чуток прокачал Оружейника), отдал обратно.
Сообщение отредактировал jpsmith: 07 мая 2022 - 10:28
#3429
Отправлено
OnHealthDamage возвращает 3 параметра: атакующего, получившего урон и величину урона. Я же написал, что этот хандлер возвращает все это ДО ТОГО, как урон будет применен на актера.
Придется все равно спрашивать: своими силами не получается.
Как собрать в одном скрипте OnHitWith и OnHealthDamage?
#3431
Отправлено
Никак. Это два разных обработчика. И к тому же, OnHitWith криво работает, как хандлер. Не возвращает атакующего)
Как я понимаю, даже если я переберусь через баррикаду OnHitWith, запросто окажется, что что он, воспринимая в качестве аргумента Arrow1Iron, от всяких там Arrow1Steel или Arrow1Ebony откажется напрочь.
Так что, пожалуй, я согласен не упорствовать и отказаться от него. Но пока он весьма удобен для определения того, каким оружием нанесен урон.
Если не OnHitWith, то как узнать, каким типом оружия прилетело этому скелету?
И про OnHealthDamage - все равно вопрос остается. Как эта штука работает в скрипте? Пример можно?
Сообщение отредактировал jpsmith: 07 мая 2022 - 21:02
#3432
Отправлено
jpsmith, OnHitWith - вещь, в принципе. Вроде как в новых версиях OBSE его поправили, но я не проверял.
На счет OnHealthDamage... чессказать, я тоже пока не имею мыслей, как отфильтровать урон непосредственно от стрел, с уроном от дробящего оружия все +\- понятно.
И про OnHealthDamage - все равно вопрос остается. Как эта штука работает в скрипте? Пример можно?
Ну, сперва нужно написать саму функцию, которая и будет что-то у нас делать в этом типе хандлера:
scn TestDamageFunction Float fDamage Ref rAttacker Ref rTarget Begin Function {fDamage, rAttacker} ;Определяем цель, по которой приходит урон Let rTarget := GetSelf ;Ограничиваем срабатывание хандлера в случае несоответствия некоторых условий (их всегда можно дописать при необходимости) if (IsFormValid rTarget == 0) || (IsFormValid rAttacker== 0) || (fDamage <= 0) Return Endif ;Получаем абсолютную величину урона Let fDamage := Abs fDamage PrintToConsole "Актер *%n* был атакован актером *%n* и получил *%g* ед. урона!" rTarget rAttacker fDamage Return End
Теперь, чтобы эта функция работала, ее нужно зарегистрировать в игре. Как правило, все Event-хандлеры принято запускать при загрузке сейва единожды из квеста\токена или любого другого гейм-мода:
Begin GameMode if (GetGameLoaded) || (GetGameRestarted) SetEventHandler "OnHealthDamage" TestDamageFunction Return Endif End
В принципе, это все. Имею ввиду, что хандлер зарегистрирован и должен выплевывать в консоль текст, который мы писали, используя функцию PrintToConsole. Теперь уже нужно правильно писать саму функцию)
- jpsmith это нравится
#3433
Отправлено
jpsmith, OnHitWith - вещь, в принципе. Вроде как в новых версиях OBSE его поправили, но я не проверял.
На счет OnHealthDamage... чессказать, я тоже пока не имею мыслей, как отфильтровать урон непосредственно от стрел, с уроном от дробящего оружия все +\- понятно....
В принципе, это все. Имею ввиду, что хандлер зарегистрирован и должен выплевывать в консоль текст, который мы писали, используя функцию PrintToConsole. Теперь уже нужно правильно писать саму функцию)
Все-таки SetEventHandler!
OnHithWith и OnHealthDamage прописаны в одной таблице. Но: OnHithWith работает без всякого SetEventHandler, а если примерно так же состряпать конструкцию с OnHealthDamage - конструктор ругается!
Тогда снова: их не собрать в одном скрипте. Но, может, можно в одном скрипте настроить два хэндлера (последовательно, через И/ИЛИ, еще как-то)?
Как здесь, например:
scn SomeQuestScript
begin gamemode
if getGameRestarted
SetEventHandler "OnHit" FnOnHitByPlayer object::PlayerRef
SetEventHandler "OnMagicEffectHit" FnOnPlayerRestoreHealth ref::PlayerRef object::"REHE"
SetEventHandler "LoadGame" FnOnLoadGame
endif
end
?
Или тут все равно будет только один срабатывать?
#3434
Отправлено
OnHithWith и OnHealthDamage прописаны в одной таблице. Но: OnHithWith работает без всякого SetEventHandler, а если примерно так же состряпать конструкцию с OnHealthDamage - конструктор ругается!
OnHitWith, как и OnHit - ванильные блоки из игры, посему их хавает компилятор без проблем, если Вы вешаете скрипт с этим блоком на актера. А OnHealthDamage - уже новый блок, который работает ИСКЛЮЧИТЕЛЬНО как хандлер и никак иначе. Посему компилятор плюется ошибками при попытке впихнуть невпихуемое.
Тогда снова: их не собрать в одном скрипте. Но, может, можно в одном скрипте настроить два хэндлера
Да, в одной функции их не собрать, но в игру можно запускать хоть сразу 100 хандлеров, втч. и одного типа, но чтобы у них были разные исполняемые функции. Проблема в том, что от 100 таких обработчиков игре стремительно поплохеет, но от парочки наших - вряд ли. Просто я не хотел бы плодить лишние хандлеры там, где можно обойтись без них. Но тут, похоже, не тот случай...
Похоже, чтобы ловить удары оружием, все же придется вводить еще один хандлер OnHitWith, в нем уже выдавать цели токен, который будет находится в сумке у НПС порядка 3-5 кадров, затем удаляться автоматически. По идеи, за этот момент, пока токен у НПС, OnHealthDamage должен будет успеть среагировать на наличие отметки у НПС и выполнить все необходимые рассчеты. Ну, в теории, оно, вроде бы как, должно и работать.
Осталось только решить - как мы будем определять нежить и конкретные их типы?) Вариантов тут тоже несколько)
#3435
Отправлено
Осталось только решить - как мы будем определять нежить и конкретные их типы?) Вариантов тут тоже несколько)
Тем и хорош понравился OnHitWith, что его можно прямо на скелета навесить! Без всяких изысков: OnHitWith Arrow1Iron - моб атакован стрелой! Красота в простоте!
Точно не вариант его использовать?
Вопрос "как будем определять", я так понимаю, риторический? Я пока, как чувак в той книжке: из словарного запаса в 25000 слов знал только 5, означающих простейшие человеческие потребности: жрать, спать, ср... и пр.
У скелетов, скажем, есть абилка (или что-то в таком духе), которая называется вроде бы "Защита костей". Не подойдет в качестве критерия?
Собственно, чуть ли не вся нежить вроде бы имеет что-то в таком духе.
В порядке бреда: в качестве основы этой абилки может выступать скриптовый эффект. Нельзя ли таким образом втолкать обработку OnHealthDamage и OnHitWith?
p.s. Попробовал повесить скрипт с конструкцией
begin OnHitWith Arrow2Steel && OnHealthDamage {fDamage, rTarget}
PrintToConsole "OriginalDamage %g" fDamage
end
Сообщение в консоли появляется! Именно, если стальной стрелой нанес урон.
Сообщение отредактировал jpsmith: 08 мая 2022 - 05:17
#3436
Отправлено
Точно не вариант его использовать?
Я же сказал, что придется использовать 2 хандлера - этот и OnHealthDamage.
У скелетов, скажем, есть абилка (или что-то в таком духе), которая называется вроде бы "Защита костей".
Вот я тоже о ней подумал. Можно проверять по имени актера, а можно и по пути меша.
В порядке бреда: в качестве основы этой абилки может выступать скриптовый эффект.
Действительно бред, поскольку запускать хандлеры и вешать подобного рода блоки в скриптовый эффект - онанизм планетарного уровня. Игра ловит клин после таких приколов и скрипт-профайлер вообще виснет наглухо, переставая выполнять какие-либо скрипты.
begin OnHitWith Arrow2Steel && OnHealthDamage {fDamage, rTarget}
PrintToConsole "OriginalDamage %g" fDamage
end
Я, считай, за 10+ лет практики, многие извращения видел в скриптинге, но такое... впервые)
Не мудрите и просто дайте мне время, я подумаю и попробую сделать отдельный esp-файл, как в прошлый раз.
#3437
Отправлено
Не мудрите и просто дайте мне время, я подумаю и попробую сделать отдельный esp-файл, как в прошлый раз.
Странный сайт. Непривычный. Обычно задаешь вопрос - получаешь в ответ "Е... ты дебил!", "Учи матчасть!", в лучшем случае - ссылки на какой-нибудь FAQ или ту самую матчасть.
Прям социализм какой-то!
#3438
Отправлено
ссылки на какой-нибудь FAQ или ту самую матчасть
Заданный Вами вопрос достаточно интересный, да и к тому же, я сам хотел сделать подобную систему для себя. Тут теперь есть мотивация, почему бы и нет?
Зачастую лучше самому все сделать и объяснить на готовом, чем пытаться донести тупо словами.
Раз уж мы тут задумали такой мод, то мне нужные точные данные... на сколько уязвимы будут скелеты к дробящему оружию, а также на сколько резистивны к стрелам. Все вот в этом духе) Концепт ясен, но ТЗ нет)
#3439
Отправлено
Заданный Вами вопрос достаточно интересный, да и к тому же, я сам хотел сделать подобную систему для себя. Тут теперь есть мотивация, почему бы и нет?
Зачастую лучше самому все сделать и объяснить на готовом, чем пытаться донести тупо словами.
Раз уж мы тут задумали такой мод, то мне нужные точные данные... на сколько уязвимы будут скелеты к дробящему оружию, а также на сколько резистивны к стрелам. Все вот в этом духе) Концепт ясен, но ТЗ нет)
Чтоб меня! В кои то веки - человек с похожими интересами (прямо как тот, с Reddit-a 2011 года).
Идеи были такие: вначале казалось, что можно вбахать прямо-таки 50% сопротивления колющему урону. Потом несколько поумерил аппетиты, вспомнив, что, во-первых, скелеты бывают разные, и валить "чемпиона" с его 350 НР и так непросто, во-вторых, по идее, лич - тоже вариация скелета...
Так что, думаю, разумным было бы 30, максимум 40 процентов сопротивления. И примерно столько же - уязвимости к дробящему урону (какой-никакой, а стимул прокачать такой тип оружия).
В идеале можно было бы забабахать .ini файлик, в котором прописать нужные величины, ориентируясь, к примеру, на уже существующую сложность игры.
Сообщение отредактировал jpsmith: 08 мая 2022 - 22:24
#3440
Отправлено
(прямо как тот, с Reddit-a 2011 года)
Жаль, что когда я начал только осваивать все это ремесло, у меня не было кого-то вроде себя нынешнего :D
В идеале можно было бы забабахать .ini файлик
Ну, в общем, вроде как даже что-то получилось. Мод получился не шибко сложный, если понимаете синтаксис и в целом более-менее ориентируетесь в скриптинге, механика работы должна быть понятна. По идеи, должно работать не только в случае, если бьет игрок, но и когда атакуют другие НПС. Пробуйте)
Прикрепленные файлы
- jpsmith это нравится
#3441
Отправлено
Позволю себе еще один вопрос, хотя, подозреваю, что затея неосуществима.
Была такая идея: игрок получает сообщение каждый раз, когда в Сиродиле открываются новые Врата (в период прохождения главного квеста). Типа, местное население, обнаружив такой сюрприз, sms-ит "Защитнику": "Приди и спаси нас!"
Согласно найденной в Интернете информации, после закрытия одних Врат новые появляются не сразу, а после того, как игрок посещает игровую ячейку, в которой эти Врата могут появиться. С каким-то шансом.
Человек писал, что можно состряпать мод, который сделает появление Врат со стопроцентной вероятностью в определенной ячейке. Не мой вариант.
Пытался проверить: закрыл Врата возле Бравила. Побежал (без фаст-трэвела) к Лейавину. Три раза пробовал. Все три раза возле Лейавина оказывались открытыми трое Врат, в одних и тех же местах.
Так как это работает? Возможно ли реализовать идею? И если да, то как?
Темы с аналогичным тегами как создать торговца, oblivion cs торговец, cs как создать торговца, oblivion, моделирование
Моддинг →
Моддинг Oblivion →
Какие файлы в моде отвечают за изменение лиц и заставку в меню игры Oblivion?Автор AlexisUmbra, 06 апр 2024 oblivion, tes 4, tes 4 oblivion и 5 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Моды Oblivion →
Каковы правила загрузки модов на сайт?Автор AlexisUmbra, 04 мар 2024 моды, обливион, tes и 2 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Моды Oblivion →
Где можно заказать сборку?Автор KiritoSwords, 03 апр 2023 сборка на заказ и 2 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Обсуждение Oblivion →
Чемпион Сиродила между TES4 и TES5Автор PavelIks, 26 янв 2022 oblivion, tes и 1 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Обсуждение Oblivion →
ШРИФТЫ ИЗ ИГРЫАвтор ALexid, 20 дек 2021 шрифт, oblivion |
|
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 скрытых