Перейти к содержанию

kotovstomat

Ветераны
  • Постов

    135
  • Зарегистрирован

Весь контент kotovstomat

  1. Нужно "ловить" событие "отключения", то есть превращение прототипа типа NPC в прототип типа Generic. Из этой сентенции я плавно перетекаю в ProView, где вижу: 015153 - Общее.pro KnwName Автоматон 028482 - Персонаж.pro KnwName Автоматон DIALOG=30009, Counter: 114, 65, 65, 0 Flags: 0x013E59A0 Дальше внимательно следим за пальцами - я беру в руки мышку и усердно тычу в SockMonkey ScriptMaker, открывая 30009Automaton_talk.scr 0. have critter Attachee stop following his leader //внимательному читателю тут все должно быть кристально ясно 1. transform Attachee into basic prototype 15133 //здесь внимательный читатель уже догадался, что при указании номера прототипа следует использовать вычитание ( Npro - 20 ) 2. return and SKIP default //раз читатель внимательный, то тут и объяснять нечего Далее, следуя поставленной задаче - а именно предотвратить "отключение", я предлагаю два простейших варианта: стереть все строки кода из соответствующих скриптов, или стереть с помощью hex-редактора байты, указывающие на скрипт. Но есть и другие пути, гораздо более интересные, которые могут внести в игру дополнительную мармеладку, шоколадку, или изюминку. Что сразу приходит в голову - сделать скрипт на диалог, как у обычных последователей, в диалоге прописать отключение. Все ограничено широтой мышления, обширностью фантазии и ограничениями скриптовых команд.
  2. Для получения формулы использовались правила Fallout PnP и тестовый модуль. В модуле были отмечены расстояния до цели (вплотную к цели расстояние = 1), взято оружие с дальностью 25, минимальной необходимой силой 12, без бонусов к точности и относительно стандартная схема развития персонажа. Firearms Mastery в тесте не учитывалась, ее значения можно узнать из мануала: Firearms Apprentice – the Speed of the Character with a gun is increased by 5; Firearms Expert – called shots are made with 2/3 the penalty; Firearms Master - the Character’s chance of success is unaffected by range penalties. Полученные результаты можно увидеть в таблице вероятности попадания, где статы ST - сила, PE - восприятие, скилл FA - огнестрельное оружие: Руководствуясь таблицей и правилами Fallout PnP, можно вывести приблизительную формулу вероятности попадания: Chance to Hit = Firearms - (MSR - ST) - (Range - PE / 2) - AC - ШТРАФ_ЗА_ОСВЕЩЕННОСТЬ - ШТРАФ_ЗА_ПРЕПЯТСТВИЕ - ШТРАФЫ_ОРУЖИЯ (или + БОНУСЫ_ОРУЖИЯ), при MSR > = ST, где не учитывается Firearms Mastery Это небольшое исследование изначально служило пособием для дальнейшей эмуляции вероятности попадания скриптом. Параметры, которые возможно вернуть, используя команды скрипта, это Firearms, ST, PE, а также фиксированные численные значения, которые устанавливаются внутри скрипта: MSR, Range, Бонусы/Штрафы оружия. Для оставшихся параметров можно определить средние значения и установить их как единый фиксированный штраф. Далее, я должен упомянуть о странном распределении вероятности попадания, которое перечеркнуло дальнейшее создание скрипта эмуляции. В таблице вероятности попадания сразу бросается в глаза, что наибольшее ее значение при Range = 9. Я объясняю подобное резкое возрастание вероятности попадания недоработками авторов игры.
  3. Тут какое дело - изменения минимальные, и касаются только номера прототипа, а анимация уже тю-тю, исчезла, что наводит меня на разные подозрения.
  4. Всем фрисек сиске, поцоны. Столкнулся с проблемой следующего рода: при редактировании прототипа огнестрельного оружия (2Handed) теряется анимация выстрела, то есть нет анимации вылетающего огня, пороха, ошметков из ствола. Все остальное при этом работает стройно и красиво. Анимация теряется уже при редактировании номера прототипа. Пробовал на разных прототипах, везде пропадает. Редактирую ICY Hexplorer, используя мануал, прилагаемый к ProView. Кто с этим сталкивался? Как решить? Какие подводные камни? Вот вам пища для мозга - два одинаковых про, отличающиеся номерами и именами файлов: http://slil.ru/27712604
  5. за то время что ты в форумы писал, давно бы уже сделал по тому способу что я предлагал
  6. kotovstomat

    Vampire Hunter

    Нет. Есть кнопка интерфейса воровство. За функционирование этой кнопки отвечает arcanum.exe, следовательно, чтобы изменить ее назначение надо править arcanum.exe. Еще каких-либо свободных кнопок нет. Добавлять новые кнопки видимо, подобно аду, и вряд ли существует человек, согласный на подобные муки. Для простоты, если ты не знаешь, как это сделать, примем что это невозможно. При воровстве можно было бы сделать перехват действий игрока скриптом, но нет соответствующих точек входа в скрипт. Но тебе придется согласиться, что мне было проще написать "нет", чем объяснять вещи, которые тебе неинтересны и в которых ты не понимаешь.
  7. А, известная загвоздка) Дело в том, что формулы разные для каждого типа предметов. Есть ли где-то эти формулы в общем доступе, я не знаю, зато знаю как хитрым шаманством обойти проблему. Я делаю так: нахожу в редактируемом .pro файле исходное значение арта, конвертирую его в 10 систему счисления, а затем прибавляю по 100 (50, 25, 5), смотря результат в ProView, когда результат дойдет до нужного значения, останавливаюсь. Не так много как кажется, главное наловчиться.
  8. Идея изменения баланса возникала наверно у каждого, кто играл в Arcanum. К сожалению, я ни разу не видел конкретных обоснованных предложений. Интересно, существуют ли какие-то закономерности или формулы при создании баланса? Или все делается на глазок, а потом долго и нудно правится? С очками действий та еще неприятная засада, скорее всего за них отвечает arcanum.exe, а как его поправить?
  9. Ссылки: - Программная начинка: http://slil.ru/28065706 * data * - изменен 006299 – mithril_revolver.pro, добавлен 30427mithril_revolver_CRITICAL_HIT.scr - скрипты _HIT, CRITICAL_HIT используют #332 из spelleyecandy.mes, _CRITICAL_HIT по сравнению с _HIT наносит двойной урон * modules * - тестовый модуль mithril_revolver для предупреждения разногласий (я так и не смог обнаружить проблему с проигрыванием анимации, у меня все в порядке) * установка * - распаковать в одноименные папки корневого каталога игры с заменой оригинальных файлов - Арты Арт схемы МР ART << Арт в руках ART << Арт в инвентаре ART << From Virgil7 (который целый вечер побыл модератором ^^): Ниже идёт старый пост, который можно не читать - особой информации не несёт, а удалять жалко ---------------------------------- Арт мега-клевый. Как создавался? Без фотошопа понятное дело не обошлось, а откуда сама картинка? Мне вот что еще интересно было бы узнать: при создании персонажа с высоким навыком Firearms повышается его Technological Attitude, а соответсвенно при создании мага с каждым новым изученным заклинанием повышается Magical Attitude. Как стрелять-то?
  10. kotovstomat

    Vampire Hunter

    Интересный вариант, но мод планировался именно как мод, то есть набор квестов/локаций/предметов/etc. без изменения оригинальной игры.
  11. kotovstomat

    Vampire Hunter

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

    Vampire Hunter

    Проблема состояла не в этом, а в том, как это будет выглядеть для игрока. Cоответствующих анимаций нет, а использовать существующие было бы несколько странно. Проблема номер два - интерфейс игры не предполагает пить кровь направо и налево, и предоставляет только две возможности попить крови вволю: через диалог, но в этом случае придется писать новые диалоги для каждого NPC, и через предметы по типу лопаты, то есть использования предметов на чем/ком-либо. Во втором случае я сплю и вижу, как протагонист хранит на поясе верные вставные вампирские челюсти с повешенным на них скриптом: 0. random number 0 to 25: store in Local 0 1. damage Extra Object unresistably for Local 0 points of type 0 damage 2. heal Triggerer for Local 0 points 3. return and SKIP default Но к сожалению, мою блестящую идею отвергли. Все что осталось от вампира в вампире - воровство жизни при атаке, примерно как в HoMM 3. УПД1: если найдется вдохновленный товарищ для рисования артов, которого привлекает идея вставных вампирских челюстей, то почему бы и нет? Скрипт доработаю, идею отполирую. КДПВ:
  13. kotovstomat

    Vampire Hunter

    Заглохло. В курсе дела было еще два человека - Темный и Сильвер, но увы мне, моя вина - я опять все запорол) Нашел работу и сломал старый компьютер. На новом ни капли не осталось. Если эти два человека появятся и преподнесут на блюдечке что у них сохранилось. может и выйдет дальнейший толк из того что мы с ними планировали.
  14. Самое полное описания скриптового языка Арканума - это, как ни странно, worldedmanual.doc))) Там на самом деле все просто и понятно, если нет проблем с английским языком. Еще советую скачать ScriptEd и пользоваться им заодно с тройковским редактором скриптов. Если все-таки пойдете по моему терновому пути, опишу еще одну проблему: если брать Local2 = 1, то количество Current Looped Object, попадающих под определение побочной цели - 3 штуки. За каждый вызов скрипта будет создаваться свой набор команд для каждого CLO. Решение этой проблемы существует, но тут надо конкретно писать скрипт и смотреть. Triggerer тоже будет являться CLO, надо это обязательно помнить при указании Local2. Все что я описал - когда то существовало не только на бумаге, но вполне себе сносно работало в виде холишотгана.
  15. Мне тоже так кажется...видимо это ограничение движка... Наблюдение из игры - если на одной линии стоят два персонажа, попасть во второго обычно можно только промахнувшись по первому... Скриптово реализовать проникновение заряда по прямой "по-честному" действительно невозможно, это уже успело загубить несколько моих идей. Но и тут можно без мыла в жопу залезть, используя хитрый способ. Скриптовый язык Арканума я порядочно уже подзабыл, опишу лишь общий принцип. get distance between two objects (triggerer, extra object) in L0 // triggerer - "стреляющий", extra object - "цель" get distance between two objects (triggerer, current looped object) in L1 // triggerer - "стреляющий", current looped object - "побочная цель" get distance between two objects (extra object, current looped object) in L2 // extra object - "цель", current looped object - "побочная цель" Для указания на Current Looped Object используем Loop for Everyone in Vicinity. Используется скриптовая команда distance between (obj) and (obj): get in (num), на выходе получаем целочисленные значения Local0, Local1 и Local2 в тайлах. Тайлы в Аркануме - это вполне себе квадраты, поэтому я рисую такую веселую картинку: Надеюсь, картинка многое прояснила_) В данном случае скрипт проникновения снаряда будет верен при всех Local2 = 1, при значениях Local2 = 2 и более возникает некоторый казус, о котором скажу позже. Чтобы нанести Additional Damage побочной цели, необходимо сделать проверку принадлежности побочной цели к сектору обстрела. В данном случае нам необходимо знать про побочную цель следующее: принадлежит ли побочная цель радиусу Local2?, находится ли побочная цель позади цели? Проверка проводится сравнением значений дистанций, которые сохранены в локальных переменных. Итак, при Local2 = 1 & (Local0 + Local2) = Local1 Current Looped Object получает Additional Damage. Далее в скрипте нужно просчитать, сколько урона получит побочная цель. Руководствуясь правилами Fallout PnP, я узнал как идет расчет Damage. К сожалению, большинство параметров невозможно получить скриптово в Аркануме. Самое простое решение задачи - задать рандомный дамадж, исходя из характеристик оружия. Кроме того, в Аркануме существует непонятная мне зависимость точности попадания от расстояния до цели - при увеличении расстояния увеличивается точность, я от этого тронулся мозгом. Если считать Additional Damage более менее честно, то тут вам прямая дорога за Fallout PnP, благо он переведен на русский язык, как вариант, те параметры, которые невозможно вернуть в значения, можно определить как фиксированные штрафы. Теперь о казусе. При Local2 = 2 и более, значение "позади цели" принимает все более размытый характер, побочная цель действительно будет находиться позади, но не на одной линии. Я долго ломал себе мозг, и понял что скриптом нельзя определить направление, углы, и прочие простые и приятные вещи. Можно взять только радиус. *** Надеюсь, то что я написал. поможет вам в решении вашей задачи.
  16. data/Rules/ MapList.mes // // Map List Info // // Types: // START_MAP -- This is the starting map (there should only be one of these!) // SHOPPING_MAP -- This is the shopping map used in character creation. If not // present, then this process is skipped during character creation. // Starting Location (Convert for World by:) // (54624 - 32) / 64 = 853 // (45408 - 32) / 64 = 709 // Area: <#> -- This is the Index # in area.mes that the map maps to // List of valid maps for game & Starting X/Y position {5000}{ShopMap, 31, 29, Type: SHOPPING_MAP} {5001}{Multiplayer-Map, 1916, 134, Type: START_MAP, WorldMap: 0} {5002}{PSchuylers Lev 1-fixed, 96, 126, WorldMap: 0, Area: 21} 5002 номер карты, ее "имя" для игры PSchuylers Lev 1-fixed имя папки, содержащей файлы карты 96, 126 координаты стартовой локации WorldMap: 0 не разобрался, что это такое, вероятно, номер карты мира Area: 21 см. комментарии разработчиков. В файлах игры нет файла area.mes, зато есть файл gamearea.mes. data/mes/ gamearea.mes // // Area -- List of areas // X-Coord, Y-Coord /Name /Description./Radius:<#> // // Coords are on the main world-map. Radius is detection radius (in sectors), // in other words, the # of sectors that the player must pass near it on the // WorldMap to make it visible if it isn't already known; default value is 5. // {0}{0, 0, 0, 0 /A Place Unimportant/This is the unknown area.} {1}{1916, 134, 0, 0 /Vormantown /Vormantown. /Radius:80} {21}{62243,65664, 0, 0 /Тарант/Самый большой промышленный город в Аркануме.} См. комментарии разработчиков.
  17. kotovstomat

    Vampire Hunter

    Иметь место будет, несомненно) Как то я про фаерболлы и прочие мелкие магические радости не подумал. Еще вариант есть такой: оружию на HIT повесить скрипт: 0. IF Extra Object is named 7900 THEN damage Extra Object for (num) points of type (num) damage ELSE return and SKIP default А в oname.mes прописать {7900}{7900 Вампир}. Самих NPC вампиров сделать лмбо с очень большим количеством HP, либо повесить им регенерацию на TAKING_DAMAGE. То есть так: 0. heal Attachee for 100 points Я пока склоняюсь к регенерации. Только значение урона от оружия против вампиров должно компенсировать регенерацию. Очевидный минус такого решения - если сильно напрячься, вампира все таки можно убить обычным оружием, и никакая регенерация не спасет. Был тут вопрос, как реализовать вампиризм. Тут уже следует исходить из того какие у нас вампиры. Вампиры, как известно по фильмам и разным литературным и не очень произведениям, бывают разные. Главное в вампирах это что они ПЬЮТ КРОВЬ! Теперь возникает вопрос как они ее пьют. Есть вампиры, которые убивают и одновременно пьют кровь, есть такие которые пьют исподтишка, нападая из-за угла в темном переулке. Есть вампиры, которые пьют кровь добровольных жертв, и такие, которые выпивают кровь не полностью. Тут можно выделить три момента: 1) подбежать/подлететь/подойти 2) зафиксировать/убить 3) выпить кровь целиком/не полностью Соответсвенно тому, что вампиры пьют кровь, у них должен быть голод и насыщение. Эти параметры в интерфейсе арканума никак не вывести, разве только флоатами, что не очень хорошо. И на этом моменте я вспоминаю фоллаут 2. Помните, там в Дене были наркоманы, шляющиеся по улицам? Так вот, за их поведение и реплики отвечали не какие нибудь 2-3 команды скрипта, а там целая жизнь наркомана расписывалась. Учитывались такие параметры как степень зависимости, количество принятого джета, количество джета в инвентаре, и еще куча других. В зависимости от этих состояний он делал то или иное действие: например, принять джет, атаковать игрока, и еще куча. Так вот, если брать вампира, то реализовать это можно так: На вампира на HEARTBEAT вешается скрипт со следующими параметрами: Степень голода (увеличивается с течением времени) Количество крови в вампире (увеличивается на количество выпитой крови) Вампир будет в четырех возможных состояниях в зависимости от уменьшения степени голода. Голоден, атакует жертву (убивает) Голоден, фиксирует жертву, пьет кровь полностью (убивает) Голоден, фиксирует жертву пьет кровь, пьет кровь частично в зависимости от степени голода Не голоден, не атакует никого Надежную фиксацию жертвы можно обеспечить, сняв с нее все fatigue points. Если все моменты продумать, то вполне можно вампиризм сделать)
  18. kotovstomat

    Vampire Hunter

    Кстати, если интересно, то есть один изумительно простой скрипт на TAKING_DAMAGE, вешается на NPC. 0. IF Triggerer is wielding item named (num) THEN return and RUN default ELSE return and SKIP default Вместо (num) подставляете номер из oname.mes, например {2001}{2001 Серебряный меч}. Если в момент получения дмг атакующий держит в руках серебряный меч, то дмг учитывается, в обратном случае дмг не наносится. Еще в WorldEd есть такие флаги, как Nigh invulnerable на NPC и Uber на оружие. Если флаги развешены, то NPC с флагом Nigh invelnerable можно нанести дмг только оружием с флагом Uber. Единственный минус в обоих случаях - учитывается только дмг, который прописан в .про оружия, то есть если было 2-12 ПВ 1-6 УС, то больше ни за что не отнимет. Это будет важно, если на оружие повешен скрипт на HIT. Я об это уже рога поломал, думал у меня скрипт, который четыре дня писал, не работает.
  19. На конкретный момент работающий код, повешенный на HIT и MISS, имеет следующий вид: 0. Counter 0 = Counter 0 + 1 1. IF Counter 0 == 7 THEN do nothing ELSE goto line 4 2. Counter 0 = 0 3. stat 1 of Player: adjust by 4 4. IF Counter 0 <= 5 THEN goto line 7 5. have Triggerer perform animation 12 6. stat 1 of Player: adjust by -4 7. return and SKIP default
  20. 0. Local 0 = Local 0 + 1 1. damage Triggerer unresistably for Local 0 points of type 0 damage 2. IF Local 0 <= 5 THEN goto line 5 3. have Triggerer perform animation 12 4. stat 11 of Triggerer: adjust by -5 5. return and SKIP default Нет, увы, локал варами тут никак. У меня уже есть поправленный прото с приклепленными на него скриптами на HIT и MISS. Строка один у меня вроде отладчика, чтобы состояние лвар0 контролировать) Так вот, каждый выстрел Триггерер получает дмг ровно 1. А что там с каунтерами? Как их применять? УПД: с каунтерами все ясно. Заменил в коде локал0 на каунтер0. Все отлично работает без всяких там мобов. Скрипт у меня в .про прописан. Завтра буду доводить до ума. А пока уже почти три ночи и у меня голова плохо думает.
  21. Зачем для моба counter? Это нецелевое расходование средств) Нам ведь нужно только учитывать количество вылетевших патронов. Это HIT и MISS.
  22. да, эта штука гораздо удобнее чем сцрмейкер. Спасибо. Попробую написать и потестить. УПД: удобнее то удобнее, но скрипт написаный в сокманки, отлично себя зарекомендовавший в игре, наотказ не хочет компилиться в скриптеде. Он, видите ли, не признает вычитание (5): invalid action opcode "Local 8 = 11 - Local 0"
  23. все правильно, да. Ну раз можно с локал варами, тогда остается ровно одна проблема - развешать этот скрипт в прототипы. А нужен ли он народу? вот мой инкремент! Уменьшению скорости обязательно должно следовать ее обратное увеличение, поэтому я настаиваю на этих строках: Естественно, заменяя global на local. Но это все лирика и сотрясание воздуха. Кому нужен этот скрипт? Реально тактическую составляющую, даже минимальную, в пошаговый режим он не внесет. Или внесет? Пока что получается красивая теория, почти как опыты в пробирке.
  24. любой глобал вар берем. Ноль - это так, для примера. Проще конечно взять локал вар, но будет ли она сохраняться для каждого нового вызова скрипта? С глобал варами вообще засада. Потому что если в висинити будут хотя бы два криттера, имеющих огнестрельное оружие, то для каждого надо будет завести свою глобал вару. /я не пробовал его писать, и скорее всего не буду. Просто пришла в голову мысль по аналогии с тем скриптом что я пишу, и решил сюда выложить, вдруг кому пригодится/ а все переменные по умолчанию 0, не так ли? тогда к чему ее где-то в скрипте устанавливать?
×
×
  • Создать...