Босоногий воришка Опубликовано 11 марта, 2024 Опубликовано 11 марта, 2024 Спасибо! Помог разобраться наконец-то. Я нигде нормального объяснения для этой проги не смог найти. Моя проблема была в том, что она постоянно писала мне сообщение об ошибке, что неверные данные при запаковке бса-архива. Я понять просто не мог, что ещё нужно было. Я указывал в первой строчке название файла, да только путь к нему упускал. :facepalm Воришка и пришельцы
piramis Опубликовано 20 марта, 2024 Опубликовано 20 марта, 2024 Собствено ситуация - при сохранении плагина CS упал, и файл сохранился с расширением .tes, а при переименовании в .esp увы не распознается конструктором да и игрой тоже- пишет что плагин is not a valid TES file, да и в списке файлов конструктор показывает его как пустой, хотя размер такой как и должен был бы быть. Собственно, у плагина нет привязки к мастерфайлу Oblivion.esm, потерял он при неудавшемся сохранении. Кто-то пробовал чинить такое ? (Там не то чтобы что-то важное..но показало необходимость время от времени копировать файл плагина)
Takirell Опубликовано 20 марта, 2024 Опубликовано 20 марта, 2024 20.03.2024 14:21:37, piramis сказал(-а): Собствено ситуация - при сохранении плагина CS упал, и файл сохранился с расширением .tes, а при переименовании в .esp увы не распознается конструктором да и игрой тоже- пишет что плагин is not a valid TES file, да и в списке файлов конструктор показывает его как пустой, хотя размер такой как и должен был бы быть. Собственно, у плагина нет привязки к мастерфайлу Oblivion.esm, потерял он при неудавшемся сохранении. Кто-то пробовал чинить такое ? (Там не то чтобы что-то важное..но показало необходимость время от времени копировать файл плагина) У меня было примерно похожее, только система зависла и вылетела в BSOD, когда был открыт конструктор (не во время сохранения), после перезагрузки ПК - плагин погиб. Вряд ли можно как-то его исцелить, у меня не вышло. Ничто не истинно, все потрачено
Atosamyc Опубликовано 20 марта, 2024 Опубликовано 20 марта, 2024 20.03.2024 14:21:37, piramis сказал(-а): (Там не то чтобы что-то важное..но показало необходимость время от времени копировать файл плагина) БЭКАП ДЕЛАЙ, БЭКАП!111 А у вас на компьютере нет возможности откатиться на предыдущую версию при помощи свойства -> предыдущие версии? В случае, если прям вообще файл важный, можно испытать счастья вытянуть его из харда, при помощи программы Recuva (и подобных). Ну это прям извращение последнее и поэтому на будущее хочется посоветовать делать бэкапы. 2 Як-цуп-цоп
piramis Опубликовано 20 марта, 2024 Опубликовано 20 марта, 2024 20.03.2024 17:17:29, Atosamyc сказал(-а): БЭКАП ДЕЛАЙ, БЭКАП!111 А у вас на компьютере нет возможности откатиться на предыдущую версию при помощи свойства -> предыдущие версии? В случае, если прям вообще файл важный, можно испытать счастья вытянуть его из харда, при помощи программы Recuva (и подобных). Ну это прям извращение последнее и поэтому на будущее хочется посоветовать делать бэкапы. Да это уже что-то вообще сложное :D А насчет важности, да нет плагин не погиб, в качестве бэкапа работает то, что у меня Обливион в двух экземплярах стоит, и почти все моды одинаковые, просто перетащил старый вариант из второго в первый и все. Пропали некоторые изменения, которые делались в процессе доделки, интерьеры в основном. Но это даже ничего, так-как кое что немного не понравилось, но не настолько чтобы взяться удалять и переделывать.
ArtemSH Опубликовано 26 марта, 2024 Опубликовано 26 марта, 2024 Коллеги, добрый день. У меня возникло сразу несколько вопросов по разным темам. Буду рад помощи в любом из них. Вопрос 1. Проблема: активатор перестал быть активным в игре после добавления в код строчек, создающих loop-поиск в инвентаре на наличие определённого ТИПА объекта. До этого активатор работал исправно. Контекст: я сделал активатор в виде лука, который по квесту можно отравить. Вылезает менюшко с выбором "отравить\не трогать". После этого добавил в код проверку на наличие ЛЮБОГО яда в инвентаре. Главное, чтобы в инвентаре был объект типа "яд". После этого активатор стал недоступен. Я не силен в скриптинге, не понимаю в чем моя ошибка. Вот код: Спойлер scn BrimBoBelfBowScript short NKVD short PoisonInventoryLoop int ButtonPois ref refitem begin onactivate if (NKVD == 0) MessageBox "What do you want to do with Belf's bow?", "Poison Bow", "Leave it" set NKVD to 1 return endif if (NKVD == 2) MessageBox "You've already poisoned the Bow" set nkvd to 0 return endif END begin onactivate foreach refItem <- player if refItem.GetObjectType == 40 ; Alchemy Item if refItem.IsPoison set PoisonInventoryLoop to 1 ; Found the first poison in the inventory endif endif loop end begin gamemode if nkvd == 1 set buttonpois to GetButtonPressed if ButtonPois == -1 ; Header return endif if ButtonPois == 0 ; Poison Bow if ( getstage BrimBoDocksWorm >= 25) && (player.isActorDetected == 0) && (PoisonInventoryLoop == 1) MessageBox "You successfully poisoned the bow." set BrimBoDocksWorm.wormchoice to 6 set NKVD to 2 return endif endif if ( getstage BrimBoDocksWorm >= 25) && (player.isActorDetected == 0) && (PoisonInventoryLoop == 0) MessageBox "You don't have any poison with you." set NKVD to 0 return endif if ( getstage BrimBoDocksWorm >= 25) && (player.isActorDetected == 1) MessageBox "You were caught. Bow was not poisoned." player.ModCrimeGold 350 ModPCInfamy 1 set NKVD to 0 return endif if (getstage BrimBoDocksWorm < 25) MessageBox "Why would you do this?" set NKVD to 0 return endif endif if ButtonPois == 1 set NKVD to 0 return endif end begin gamemode if (GetDayOfWeek == 6) && (BrimBoBelfGoSmith8x1 == 1) && (BrimBoBelfREF.GetInCell BrimBoSmith == 1) BrimBoBelfActREF.disable endif if (GetDayOfWeek == 1) && (BrimBoBelfGoSmithMONDAY8x1 == 1) && (BrimBoBelfREF.GetInCell BrimBoSmith == 1) BrimBoBelfActREF.enable endif end begin gamemode If ( getstage BrimBoDocksWorm >= 50 ) if (BrimBoDocksWorm.wormchoice == 6) || (BrimBoDocksWorm.wormchoice == 1) || (BrimBoDocksWorm.wormchoice == 8) || (BrimBoDocksWorm.wormchoice == 9) BrimBoBelfActREF.disable BBLienlornChestREF.additem BrimBoSteelBowBelf 1 endif endif end Вопрос 2. Проблема: не понимаю как создать меню с разветвленным выбором, где каждый из трех выборов ведет, в свою очередь, к своим собственным трем выборам, которые, снова, ведут к своим собственным выборам. Таким образом, возникла бы трехуровневая система меню. Но вместо этого любой выбор в первом меню всегда открывает меню второго уровня из самого первого выбора и затем тут же сбрасывает меню второго уровня к первому выбору из этого меню. См. контекст для ясности. То есть, выборы не работают, они сводятся только всегда к первой строке каждого меню. Плюс к тому меню не закрывается в конце как должно, а постоянно возникает вновь. Контекст: На дверь повешен скрипт, как если бы игрок говорил со смотрителем за этой дверью. У нас, как в диалоге, есть выбор реплик, каждая из которых ведет к своему собственному развитию событий. В итоге любой вариант в первом блоке считывается как выбор первой фразы (nobody) и ведет к фразе "Than get lost!", которая по идее должна закончить диалог, но вместо этого дверь как бы активируется вновь (при повторной активации там будет другой диалог, с другими выборами) и игра тут же выбирает первый вариант из этого нового блока, а он моментально ведет к закрывающей новой фразе ( i assume it was wind"), но при этом меню не закрывается как должно бы. Я где-то допустил ошибку, но не вижу её в упор. Вот код: Спойлер scn BrimBoSewerGateScript ; copy of VANILLA script ; activated by linked child ; activates optionally linked parent after 1 sec delay short open short next short busy float timer ref mySelf ref myParent short buttonsystem short rangedchoice short choicepressed short choicepressed2 short choicepressed3 short choicepressed4 short choicepressed5 begin onLoad ; set up ref vars set mySelf to getSelf set myParent to getParentRef ; prepare linked pathsgrid points disableLinkedPathPoints end begin onActivate if isActionRef player == 1 if open == 0 messagebox "You hear the voice: What do you want and who you are?", "Nobody", "Who's asking?", "I've heard there is a place for a gentleman to relax" set buttonsystem to 1 endif elseif rangedchoice == 2 messagebox "You hear the voice: You again! What will be at this time?", "...", "Who's speaking with me?", "I've heard there is a place for a gentleman to relax" endif if rangedchoice == 3 messagebox "You hear the voice: Welcome! Come in?", "Yes", "No" endif if isActionRef mySelf == 0 && busy == 0 if open == 0 playgroup forward 0 set open to 1 enableLinkedPathPoints else playgroup backward 0 set open to 0 disableLinkedPathPoints endif set next to 1 set timer to 1 set busy to 1 endif end begin gamemode if buttonsystem == 1 set choicepressed to GetButtonPressed if choicepressed == -1 ; header return endif if choicepressed == 0; Nobody messagebox "Than get lost! Tell yourself your stupid charades!" set rangedchoice to 2 set buttonsystem to 0 return endif if choicepressed == 1; "who's asking?" messagebox "You sound like a lizard or something! Who're you?", "Imperial Legion! Open![SPEECH 65]", "I've heard there is a place for a gentleman to relax" set choicepressed2 to GetButtonPressed if choicepressed2 == -1; header return endif if choicepressed2 == 0; legion if player.getav speechcraft >= 65 messagebox "You hear the voice: Blessings upon Empire and all their serves! We are humble dwellers of these sewers. Please, share this gift of sea with us and be quiet about this place!" player.additem Gold001 450 set open to 1 set rangedchoice to 3 set buttonsystem to 0 endif elseif player.getav speechcraft < 65 MessageBox "And I am a new emperor! Come back when you sober up, lad!" return set rangedchoice to 2 set buttonsystem to 0 endif if choicepressed2 == 1; I've heard... messagebox "Then you find a right place to come! Welcome, weirdo!" set open to 1 set rangedchoice to 3 endif endif if choicepressed == 2 ; I've heard... messagebox "Then you find a right place to come! Welcome, friend!" set open to 1 set rangedchoice to 3 endif endif end begin gamemode if rangedchoice == 2 set choicepressed3 to GetButtonPressed if choicepressed3 == -1 ; header return endif if choicepressed3 == 0; ... messagebox "i assume it was wind who acts like a stupid child!" set rangedchoice to 2 set buttonsystem to 0 return endif if choicepressed3 == 1; whos speaking with me messagebox "Empire's Queen! Pay one hundreed gold or leave. A fine for dullness", "[Pay 100 gold]", "I assume sometimes there is no need in words [SPEECH 65]", "[Leave]" set choicepressed4 to GetButtonPressed if choicepressed4 == -1; header return endif if choicepressed4 == 0; PAY if player.GetItemCount gold001 >= 100 MessageBox "Right. Come in then, weirdo" player.removeitem Gold001 100 set open to 1 set rangedchoice to 3 set buttonsystem to 0 ; BBCheasel.additem gold001 100 endif elseif player.GetItemCount gold001 < 100 MessageBox "Good! One idiot less" set rangedchoice to 2 set buttonsystem to 0 return endif endif if choicepressed4 == 1; speech if player.getav speechcraft >= 65 MessageBox "Mmm. Nonsense. But it sounds...solid. You're weird, but not stupid. Come in." set open to 1 set rangedchoice to 3 set buttonsystem to 0 endif elseif player.getav speechcraft < 65 MessageBox "Oh well. Pathos only increases cringe" set rangedchoice to 2 set buttonsystem to 0 return endif if choicepressed4 == 2; leave set rangedchoice to 2 set buttonsystem to 0 return endif if choicepressed3 == 2; messagebox "Then you find a right place to come! Welcome, weirdo!" set open to 1 set rangedchoice to 3 set buttonsystem to 0 endif endif end begin gamemode if rangedchoice == 3 set choicepressed5 to GetButtonPressed if choicepressed5 == -1 ; header return endif if choicepressed5 == 0 ; yes ; set rangedchoice to 3 set open to 1 set buttonsystem to 0 return endif if choicepressed5 == 1 ; no ; set rangedchoice to 3 set buttonsystem to 0 return endif endif end begin gameMode ; daisy-chain activation if next == 1 && timer <=0 set next to 0 myParent.activate mySelf 1 endif if timer > 0 set timer to timer - getSecondsPassed endif if isAnimPlaying == 0 && busy == 1 set busy to 0 endif end Вопрос 3. Проблема: неписи, используя определенную анимацию, должны перемещаться из точки А в точку Б, затем снова в А, а после в В, затем снова в А, затем в С и т.д. Как это сделать, я пока не понял. Контекст: увидел анимацию переноски ящиков в Cyrodiil Rebuild и решил применить её в моде. Но возник вопрос, как это совместить с перемещением по схеме. То есть неписи как бы таскают ящики из доков в здания, причем разные. Допустим, из доков в магазин еды, затем снова в доки, а после в магазин брони и т.д. Какой пакет АИ нужно использовать и как его для этого настроить? В CR не было такой схемы. По идее это что-то вроде патруля у стражи, но мб я ошибаюсь? Буду рад любым предположениям и советам по теме. Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασσα αὐτῷ ὑπακούουσιν
BDR338 Опубликовано 30 марта, 2024 Опубликовано 30 марта, 2024 Вопрос по импорту текстур и моделей из мода для Скайрима в Обливион. Возможно ли портировать определенные доспехи и оружие оттуда сюда, к кому можно обратиться? Меня сильно интересует один мод для Ская, очень хотел бы себе эти доспехи в Обливион, но сам не обладаю навыками такого переноса, можно ли с кем то договориться в частном порядке?
Bianor Опубликовано 30 марта, 2024 Опубликовано 30 марта, 2024 30.03.2024 10:43:48, BDR338 сказал(-а):Возможно ли портировать определенные доспехи и оружие оттуда сюда Оружие относительно просто, потому что это модель без привязки к скелету, доспехи намного сложнее потому что скелеты в Скайриме и Обливионе разные, да ещё и т-поза у них разная. В любом случае без 3d max-а не обойтись.
piramis Опубликовано 2 апреля, 2024 Опубликовано 2 апреля, 2024 26.03.2024 11:58:54, ArtemSH сказал(-а): Вопрос 3. Проблема: неписи, используя определенную анимацию, должны перемещаться из точки А в точку Б, затем снова в А, а после в В, затем снова в А, затем в С и т.д. Как это сделать, я пока не понял. Контекст: увидел анимацию переноски ящиков в Cyrodiil Rebuild и решил применить её в моде. Но возник вопрос, как это совместить с перемещением по схеме. То есть неписи как бы таскают ящики из доков в здания, причем разные. Допустим, из доков в магазин еды, затем снова в доки, а после в магазин брони и т.д. Какой пакет АИ нужно использовать и как его для этого настроить? В CR не было такой схемы. По идее это что-то вроде патруля у стражи, но мб я ошибаюсь? Буду рад любым предположениям и советам по теме. Как вариант прописать каждому "грузчику" набор пакетов на весь день. С 10 до 11 носит с одного корабля в книжную лавку, с 11 до 12 носит с другого корабля в оружейную лавку и так далее. Даже можно прописать час отдыха, когда неписи будут сидеть с анимацией еды или выпивки. Сочетание нескольких таких грузчиков с разными маршрутами и даст нужную портовую суету, тем более нормально когда один целевой груз, прибывший конкретному заказчику-лавочнику и будут носить целый час минимум. 1
piramis Опубликовано 2 апреля, 2024 Опубликовано 2 апреля, 2024 Доброго дня (или вечера) консультативный вопрос для тех, кто делал или использовал моды с броней в виде корон, венцов и тому подобного, занимающие слот амулета или хвоста, так чтобы они сидели на голове вместе с прической. Вопрос таков- имеет ли на ваш взгляд смысл такая броня ? Номинальный уровень защиты она повышает, но вот повышает ли фактический ? Дело в том, что в игре учитывается еще и то, по какой части тела наносится удар, и на этом расчитывается повреждение конкретной брони и получаемый урон. Как-то не очень представляю нанесение удара туда, где как-бы находится амулет.
Bianor Опубликовано 3 апреля, 2024 Опубликовано 3 апреля, 2024 02.04.2024 22:50:52, piramis сказал(-а):Дело в том, что в игре учитывается еще и то, по какой части тела наносится удар, и на этом расчитывается повреждение конкретной брони и получаемый урон. Так это считается только для расчёта износа экипировки. Попали низко - минус прочность ботинок. Урон же, вне зависимости от того, куда попали, гасится показателем брони. От хедшотов в TES не поиграешь попадание в голую голову снимает столько же ХП, как и попадание в грудь, защищённую кирасой.
Takirell Опубликовано 4 апреля, 2024 Опубликовано 4 апреля, 2024 26.03.2024 11:58:54, ArtemSH сказал(-а):Коллеги, добрый день. Приветствую. Задачи мне ясны, но времени для их реализации у меня сейчас не шибко много, посему буду по ходу дела отвечать. Касательно первого вопроса с отравлением лука: я правильно понимаю, что Вам не нужно, чтобы конкретный лук (как оружие) был отравлен именно тем ядом, что скрипт нашел в сумке у ГГ? Нужно лишь обыграть момент с активацией активатора (тавтология, да), показать табличку, чтобы игрок сделал выбор и, как я смотрю - сделать какие-то действия? Так или иначе, с Вашего позволения, я переделал скрипт в более... правильный (с моего взгляда) вариант. scn BrimBoBelfBowScript short NKVD short PoisonInventoryLoop short ButtonPois ref refitem Ref rItem begin onactivate ;Check User if (GetActionRef == PlayerRef) ;Reset Poison Flag Let PoisonInventoryLoop := 0 Let refitem := 0 ;Deterct Any Poison In Player Inventory ForEach rItem <- PlayerRef if rItem.IsPoison set PoisonInventoryLoop to 1 Let refitem := rItem.GetBaseObject break endif loop Endif ;Messages Block if (NKVD == 0) MessageBox "What do you want to do with Belf's bow?", "Poison Bow", "Leave it" set NKVD to 1 return Elseif (NKVD == 2) MessageBox "You've already poisoned the Bow" return endif END begin gamemode if NKVD == 1 set ButtonPois to GetButtonPressed if ButtonPois == 0 ; Poison Bow if (GetStage BrimBoDocksWorm >= 25) && (Player.IsActorDetected == 0) && (PoisonInventoryLoop == 1) MessageBox "You successfully poisoned the bow." set BrimBoDocksWorm.wormchoice to 6 if (IsFormValid refitem) PlayerRef.RemoveItem refitem 1 Endif set NKVD to 2 return endif if (GetStage BrimBoDocksWorm >= 25) && (Player.IsActorDetected == 0) && (PoisonInventoryLoop == 0) MessageBox "You don't have any poison with you." set NKVD to 0 return endif if ( GetStage BrimBoDocksWorm >= 25) && (Player.IsActorDetected == 1) MessageBox "You were caught. Bow was not poisoned." Player.ModCrimeGold 350 ModPCInfamy 1 set NKVD to 0 return endif if (GetStage BrimBoDocksWorm < 25) MessageBox "Why would you do this?" set NKVD to 0 return endif Elseif (ButtonPois == 1) ;Leave Button (Nothing) set NKVD to 0 return endif endif ;Enable\Disable Self if (GetDisabled == 0) if (GetDayOfWeek == 6) ;&& (BrimBoBelfREF.GetIsCurrentPackage BrimBoBelfGoSmith8x1 == 1) && (BrimBoBelfREF.GetInCell BrimBoSmith == 1) ;Disable ;Return endif Elseif (GetDayOfWeek == 1) ;&& (BrimBoBelfREF.GetIsCurrentPackage BrimBoBelfGoSmithMONDAY8x1 == 1) && (BrimBoBelfREF.GetInCell BrimBoSmith == 1) ;Enable ;Return Endif If (GetStage BrimBoDocksWorm >= 50) && (GetDisabled == 0) if (BrimBoDocksWorm.wormchoice == 6) || (BrimBoDocksWorm.wormchoice == 1) || (BrimBoDocksWorm.wormchoice == 8) || (BrimBoDocksWorm.wormchoice == 9) ;BBLienlornChestREF.AddItem BrimBoSteelBowBelf 1 ;Disable endif endif end BrimBoBelfGoSmithMONDAY8x1 и BrimBoBelfGoSmith8x1 - это, как я понял, пакеты НПС? А... что Вы, простите, хотите, чтобы игра проверила в гейм-моде? Просто пакет, без указания у кого он? Я исправил на то, как должно быть и, как можете заметить, добавил несколько условий для более корректной работы. 1 Ничто не истинно, все потрачено
Takirell Опубликовано 4 апреля, 2024 Опубликовано 4 апреля, 2024 26.03.2024 11:58:54, ArtemSH сказал(-а):Вопрос 2. Значит так... здесь, я бы попросил Вас составить мне полную блок-диаграмму с вариациями ответов и действиями, которые должны происходить после выбора того или иного варианта. Можно в виде схемы в паинте, можно просто текстом. Желательно прикрепить куски кода с тем, что должно происходить после выбора ответа, дабы мне было проще ориентироваться. Это упростит мне задачу и сэкономит время. А вот с третьим вопросом придется чуть повозиться... вернее даже, причина не столь в сложности реализации, а в том, что мне нужен будет Ваш мод и его ресурсы, чтобы наглядно реализовать данную фишку в нем. На пальцах я могу объяснить, конечно, но вряд ли это что-то даст. 1 Ничто не истинно, все потрачено
ArtemSH Опубликовано 4 апреля, 2024 Опубликовано 4 апреля, 2024 04.04.2024 10:15:16, Takirell сказал(-а): Приветствую. Задачи мне ясны, но времени для их реализации у меня сейчас не шибко много, посему буду по ходу дела отвечать. Касательно первого вопроса с отравлением лука: я правильно понимаю, что Вам не нужно, чтобы конкретный лук (как оружие) был отравлен именно тем ядом, что скрипт нашел в сумке у ГГ? Нужно лишь обыграть момент с активацией активатора (тавтология, да), показать табличку, чтобы игрок сделал выбор и, как я смотрю - сделать какие-то действия? Так или иначе, с Вашего позволения, я переделал скрипт в более... правильный (с моего взгляда) вариант. scn BrimBoBelfBowScript short NKVD short PoisonInventoryLoop short ButtonPois ref refitem Ref rItem begin onactivate ;Check User if (GetActionRef == PlayerRef) ;Reset Poison Flag Let PoisonInventoryLoop := 0 Let refitem := 0 ;Deterct Any Poison In Player Inventory ForEach rItem <- PlayerRef if rItem.IsPoison set PoisonInventoryLoop to 1 Let refitem := rItem.GetBaseObject break endif loop Endif ;Messages Block if (NKVD == 0) MessageBox "What do you want to do with Belf's bow?", "Poison Bow", "Leave it" set NKVD to 1 return Elseif (NKVD == 2) MessageBox "You've already poisoned the Bow" return endif END begin gamemode if NKVD == 1 set ButtonPois to GetButtonPressed if ButtonPois == 0 ; Poison Bow if (GetStage BrimBoDocksWorm >= 25) && (Player.IsActorDetected == 0) && (PoisonInventoryLoop == 1) MessageBox "You successfully poisoned the bow." set BrimBoDocksWorm.wormchoice to 6 if (IsFormValid refitem) PlayerRef.RemoveItem refitem 1 Endif set NKVD to 2 return endif if (GetStage BrimBoDocksWorm >= 25) && (Player.IsActorDetected == 0) && (PoisonInventoryLoop == 0) MessageBox "You don't have any poison with you." set NKVD to 0 return endif if ( GetStage BrimBoDocksWorm >= 25) && (Player.IsActorDetected == 1) MessageBox "You were caught. Bow was not poisoned." Player.ModCrimeGold 350 ModPCInfamy 1 set NKVD to 0 return endif if (GetStage BrimBoDocksWorm < 25) MessageBox "Why would you do this?" set NKVD to 0 return endif Elseif (ButtonPois == 1) ;Leave Button (Nothing) set NKVD to 0 return endif endif ;Enable\Disable Self if (GetDisabled == 0) if (GetDayOfWeek == 6) ;&& (BrimBoBelfREF.GetIsCurrentPackage BrimBoBelfGoSmith8x1 == 1) && (BrimBoBelfREF.GetInCell BrimBoSmith == 1) ;Disable ;Return endif Elseif (GetDayOfWeek == 1) ;&& (BrimBoBelfREF.GetIsCurrentPackage BrimBoBelfGoSmithMONDAY8x1 == 1) && (BrimBoBelfREF.GetInCell BrimBoSmith == 1) ;Enable ;Return Endif If (GetStage BrimBoDocksWorm >= 50) && (GetDisabled == 0) if (BrimBoDocksWorm.wormchoice == 6) || (BrimBoDocksWorm.wormchoice == 1) || (BrimBoDocksWorm.wormchoice == 8) || (BrimBoDocksWorm.wormchoice == 9) ;BBLienlornChestREF.AddItem BrimBoSteelBowBelf 1 ;Disable endif endif end BrimBoBelfGoSmithMONDAY8x1 и BrimBoBelfGoSmith8x1 - это, как я понял, пакеты НПС? А... что Вы, простите, хотите, чтобы игра проверила в гейм-моде? Просто пакет, без указания у кого он? Я исправил на то, как должно быть и, как можете заметить, добавил несколько условий для более корректной работы. Спасибо большое! Да. скрипт просто чекает есть ли в сумке любой яд, и если есть, то лук успешно отравляется. Я видимо напортачил с блоками гейммода, поскольку я закомментировал loop и убрал его условие из меню, но лук все равно не действует как активатор, с ним нельзя взаимодействовать. Новый вариант скрипта, где обьединены все части в единый блок, наверное, действительно лучше. Спасибо! С пакетами ИИ суть следующая: у персонажа Бельф существует рутина, каждые выходные он уходит охотиться. Утром в субботу он "берет" лук, а утро в понедельник возвращает. Это обставлено, насколько помню, через то, что скрипт проверяет находится ли Бельф в ячейке и проигрывается ли нужный пакет, и если оба условия верны, то лук отключается (скрипт объектный), а Бельф получает в инвентарь реальный (игровой) лук, а когда пакет "возращения", то лук "включается" и игровой лук убирается из инвентаря. Да, введенные Вами изменения сделали скрипт намного лучше, спасибо! 1 Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασσα αὐτῷ ὑπακούουσιν
ArtemSH Опубликовано 4 апреля, 2024 Опубликовано 4 апреля, 2024 04.04.2024 11:08:39, Takirell сказал(-а): Значит так... здесь, я бы попросил Вас составить мне полную блок-диаграмму с вариациями ответов и действиями, которые должны происходить после выбора того или иного варианта. Можно в виде схемы в паинте, можно просто текстом. Желательно прикрепить куски кода с тем, что должно происходить после выбора ответа, дабы мне было проще ориентироваться. Это упростит мне задачу и сэкономит время. А вот с третьим вопросом придется чуть повозиться... вернее даже, причина не столь в сложности реализации, а в том, что мне нужен будет Ваш мод и его ресурсы, чтобы наглядно реализовать данную фишку в нем. На пальцах я могу объяснить, конечно, но вряд ли это что-то даст. Я создал диаграмму. Вот на имгуре: https://imgur.com/a/J8XpNIC Три тира у меню. В каждом тире свои выборы. Первый тир - первая встреча (rangedchoice1) и её выборы(choicepressed, choicepressed2). Второй тир - вторая встреча (rangedchoice2) и её выборы(choicepressed3, choicepressed4). Третий тир - третья встреча (rangedchoice3) и её выбор(choicepressed5), когда мы "притерлись" к сообществу, найденному игроком за дверью (сообщество пиратов\бандитов). Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασσα αὐτῷ ὑπακούουσιν
Takirell Опубликовано 5 апреля, 2024 Опубликовано 5 апреля, 2024 04.04.2024 19:40:10, ArtemSH сказал(-а):Я создал диаграмму. Вот на имгуре: Хорошо, как у меня будет свободное время и силы - я займусь этим меню. 1 Ничто не истинно, все потрачено
piramis Опубликовано 10 апреля, 2024 Опубликовано 10 апреля, 2024 (изменено) 03.04.2024 00:35:02, Bianor сказал(-а): Так это считается только для расчёта износа экипировки. Попали низко - минус прочность ботинок. Урон же, вне зависимости от того, куда попали, гасится показателем брони. От хедшотов в TES не поиграешь попадание в голую голову снимает столько же ХП, как и попадание в грудь, защищённую кирасой. Вот не уверен. Был у меня давний опыт по созданию обнаженных амазонок и суккубов, им из брони были выданы только сандалии, куда и были прописаны параметры полного сета брони. Однако такие враги очень быстро погибали. Пришлось всю концепцию изменить и выдавать полную броню в виде частей тел, закрывающих почти полностью фигуру персонажей, что получилось даже удобнее, так как можно кастомизировать внешность нипов, по мускулистости, телосложению, размеру груди, деманам и сатирам выдавать копыта или лапы и тому подобное. Вот в таком виде нипы оказались играбельны, хотя защиты головы у них все равно нет, как и у оригинальных бандитов и мародеров. до выдачи шлемов в виде модели головы как-то не дошло :) Изменено 10 апреля, 2024 пользователем piramis
Takirell Опубликовано 15 июня, 2024 Опубликовано 15 июня, 2024 26.03.2024 11:58:54, ArtemSH сказал(-а):Проблема: не понимаю как создать меню с разветвленным выбором В общем, выкроил я чуть времени, вот что получилось... Вроде бы как работает, проверьте. Переменную sOpen использовал в качестве "отмычки" для каких-то дальнейших действий, т.к не оч понимаю - что у Вас там за дверь и как она открывается (анимированная или нет). Могу фрагменты кода и к этому добавить, если надо. Только объясните - какую модель двери используете. Спойлер scn BrimBoSewerGateScript Short sButton Short sChoice Short sOpen Short sSub Short sSys Begin OnActivate ;Check User if (GetActionRef == PlayerRef) if (sChoice == 0) MessageBox "You hear the voice: What do you want and who you are?", "Nobody", "Who's asking?", "I've heard there is a place for a gentleman to relax" Let sSys := 1 Return Elseif (sChoice == 2) MessageBox "You hear the voice: You again! What will be at this time?", "...", "Who's speaking with me?", "I've heard there is a place for a gentleman to relax" Let sSys := 1 Return Elseif (sChoice == 3) MessageBox "You hear the voice: Welcome! Come in?", "Yes", "No" Let sSys := 1 Return Endif Else Activate Return Endif End Begin GameMode ;Button Control if (sSys > 0) Let sButton := GetButtonPressed ;1ST BUTTON if (sButton == 0) if (sSub == 1) ;"Imperial Legion! Open! [SPEECH 65]" if (PlayerRef.GetActorValue speechcraft >= 65) MessageBox "You hear the voice: Blessings upon Empire and all their serves! We are humble dwellers of these sewers. Please, share this gift of sea with us and be quiet about this place!" PlayerRef.AddItem Gold001 450 Let sChoice := 3 Let sOpen := 1 Let sSub := 0 Let sSys := 0 Return Else MessageBox "And I am a new emperor! Come back when you sober up, lad!" Let sChoice := 2 Let sSub := 0 Let sSys := 0 Return Endif Elseif (sSub == 2) ;PAY if (PlayerRef.GetItemCount Gold001 >= 100) MessageBox "Right. Come in then, weirdo" ;BBCheasel.additem gold001 100 Player.RemoveItem Gold001 100 Let sChoice := 3 Let sOpen := 1 Let sSub := 0 Let sSys := 0 Return Else MessageBox "Good! One idiot less" Let sSub := 0 Let sSys := 0 Return Endif Endif if (sChoice == 0) ;Nobody MessageBox "Than get lost! Tell yourself your stupid charades!" Let sChoice := 2 Let sSub := 0 Let sSys := 0 Return Elseif (sChoice == 2) ;... MessageBox "i assume it was wind who acts like a stupid child!" Let sSys := 0 Return Elseif (sChoice == 3) ;Yes ;Здесь должно что-то происходить, да. Let sSys := 0 Return Endif ;2ST BUTTON Elseif (sButton == 1) if (sSub == 1) ;I've heard... MessageBox "Then you find a right place to come! Welcome, weirdo!" Let sChoice := 3 Let sOpen := 1 Let sSub := 0 Let sSys := 0 Return Elseif (sSub == 2) ;Speech if (PlayerRef.GetActorValue speechcraft >= 65) MessageBox "Mmm. Nonsense. But it sounds...solid. You're weird, but not stupid. Come in." Let sChoice := 3 Let sOpen := 1 Let sSub := 0 Let sSys := 0 Return Else MessageBox "Oh well. Pathos only increases cringe" Let sSub := 0 Let sSys := 0 Return Endif Endif if (sChoice == 0) ;"who's asking?" MessageBox "You sound like a lizard or something! Who're you?", "Imperial Legion! Open! [SPEECH 65]", "I've heard there is a place for a gentleman to relax" Let sSub := 1 Return Elseif (sChoice == 2) ;whos speaking with me MessageBox "Empire's Queen! Pay one hundreed gold or leave. A fine for dullness", "[Pay 100 gold]", "I assume sometimes there is no need in words [SPEECH 65]", "[Leave]" Let sSub := 2 Return Elseif (sChoice == 3) ;No Let sSys := 0 Return Endif ;3ST BUTTON Elseif (sButton == 2) if (sSub == 2) ;Leave Let sSub := 0 Let sSys := 0 Return Endif if (sChoice == 0) ;I've heard... MessageBox "Then you find a right place to come! Welcome, friend!" Let sChoice := 3 Let sOpen := 1 Let sSys := 0 Return Elseif (sChoice == 2) ;I've heard... MessageBox "Then you find a right place to come! Welcome, weirdo!" Let sChoice := 3 Let sSys := 0 Return Endif Endif Endif End У Вас все верно было написано, в принципе, только не хватало переменных и саб-переменных, чтобы отделять на трех кнопках варианты. Ну и, конечно же, эти гейм-моды... отучайтесь так делать, пожалуйста. Вы должны понимать, что игре все равно, сколько раз Вы вызовете GetButtonPressed, под какими переменными и из какого по счету гейм-мода, она все равно будет считать кнопки от 1 до 10. И вот, как можете видеть, у нас всего 3 основных кнопки, но на каждую из них, с помощью переменных, я привязываю разный текст. "sSub" у нас служит для вариантов ответа из под других вариантов, но условие с ней располагается выше, чем проверка "sChoice", поскольку мы, как я уже сказал, вызываем еще одно меню с ответами из под меню с предыдущими ответами. "sSys" - переменная, которая в целом отвечает за контроль меню и пока она больше нуля, игра проверяет - нажаты ли кнопки или нет. Есть еще несколько вариантов, как написать этот скрипт, но я выбрал этот, т.к мне он показался более наглядным. Надеюсь, логика более-менее понятна. Не скажу, что скрипт сложный, просто надо правильно выстроить последовательность и не запутаться в переменных. 1 Ничто не истинно, все потрачено
ArtemSH Опубликовано 17 июня, 2024 Опубликовано 17 июня, 2024 (изменено) 15.06.2024 18:48:00, Takirell сказал(-а): В общем, выкроил я чуть времени, вот что получилось... Вроде бы как работает, проверьте. Переменную sOpen использовал в качестве "отмычки" для каких-то дальнейших действий, т.к не оч понимаю - что у Вас там за дверь и как она открывается (анимированная или нет). Могу фрагменты кода и к этому добавить, если надо. Только объясните - какую модель двери используете. Спойлер scn BrimBoSewerGateScript Short sButton Short sChoice Short sOpen Short sSub Short sSys Begin OnActivate ;Check User if (GetActionRef == PlayerRef) if (sChoice == 0) MessageBox "You hear the voice: What do you want and who you are?", "Nobody", "Who's asking?", "I've heard there is a place for a gentleman to relax" Let sSys := 1 Return Elseif (sChoice == 2) MessageBox "You hear the voice: You again! What will be at this time?", "...", "Who's speaking with me?", "I've heard there is a place for a gentleman to relax" Let sSys := 1 Return Elseif (sChoice == 3) MessageBox "You hear the voice: Welcome! Come in?", "Yes", "No" Let sSys := 1 Return Endif Else Activate Return Endif End Begin GameMode ;Button Control if (sSys > 0) Let sButton := GetButtonPressed ;1ST BUTTON if (sButton == 0) if (sSub == 1) ;"Imperial Legion! Open! [SPEECH 65]" if (PlayerRef.GetActorValue speechcraft >= 65) MessageBox "You hear the voice: Blessings upon Empire and all their serves! We are humble dwellers of these sewers. Please, share this gift of sea with us and be quiet about this place!" PlayerRef.AddItem Gold001 450 Let sChoice := 3 Let sOpen := 1 Let sSub := 0 Let sSys := 0 Return Else MessageBox "And I am a new emperor! Come back when you sober up, lad!" Let sChoice := 2 Let sSub := 0 Let sSys := 0 Return Endif Elseif (sSub == 2) ;PAY if (PlayerRef.GetItemCount Gold001 >= 100) MessageBox "Right. Come in then, weirdo" ;BBCheasel.additem gold001 100 Player.RemoveItem Gold001 100 Let sChoice := 3 Let sOpen := 1 Let sSub := 0 Let sSys := 0 Return Else MessageBox "Good! One idiot less" Let sSub := 0 Let sSys := 0 Return Endif Endif if (sChoice == 0) ;Nobody MessageBox "Than get lost! Tell yourself your stupid charades!" Let sChoice := 2 Let sSub := 0 Let sSys := 0 Return Elseif (sChoice == 2) ;... MessageBox "i assume it was wind who acts like a stupid child!" Let sSys := 0 Return Elseif (sChoice == 3) ;Yes ;Здесь должно что-то происходить, да. Let sSys := 0 Return Endif ;2ST BUTTON Elseif (sButton == 1) if (sSub == 1) ;I've heard... MessageBox "Then you find a right place to come! Welcome, weirdo!" Let sChoice := 3 Let sOpen := 1 Let sSub := 0 Let sSys := 0 Return Elseif (sSub == 2) ;Speech if (PlayerRef.GetActorValue speechcraft >= 65) MessageBox "Mmm. Nonsense. But it sounds...solid. You're weird, but not stupid. Come in." Let sChoice := 3 Let sOpen := 1 Let sSub := 0 Let sSys := 0 Return Else MessageBox "Oh well. Pathos only increases cringe" Let sSub := 0 Let sSys := 0 Return Endif Endif if (sChoice == 0) ;"who's asking?" MessageBox "You sound like a lizard or something! Who're you?", "Imperial Legion! Open! [SPEECH 65]", "I've heard there is a place for a gentleman to relax" Let sSub := 1 Return Elseif (sChoice == 2) ;whos speaking with me MessageBox "Empire's Queen! Pay one hundreed gold or leave. A fine for dullness", "[Pay 100 gold]", "I assume sometimes there is no need in words [SPEECH 65]", "[Leave]" Let sSub := 2 Return Elseif (sChoice == 3) ;No Let sSys := 0 Return Endif ;3ST BUTTON Elseif (sButton == 2) if (sSub == 2) ;Leave Let sSub := 0 Let sSys := 0 Return Endif if (sChoice == 0) ;I've heard... MessageBox "Then you find a right place to come! Welcome, friend!" Let sChoice := 3 Let sOpen := 1 Let sSys := 0 Return Elseif (sChoice == 2) ;I've heard... MessageBox "Then you find a right place to come! Welcome, weirdo!" Let sChoice := 3 Let sSys := 0 Return Endif Endif Endif End У Вас все верно было написано, в принципе, только не хватало переменных и саб-переменных, чтобы отделять на трех кнопках варианты. Ну и, конечно же, эти гейм-моды... отучайтесь так делать, пожалуйста. Вы должны понимать, что игре все равно, сколько раз Вы вызовете GetButtonPressed, под какими переменными и из какого по счету гейм-мода, она все равно будет считать кнопки от 1 до 10. И вот, как можете видеть, у нас всего 3 основных кнопки, но на каждую из них, с помощью переменных, я привязываю разный текст. "sSub" у нас служит для вариантов ответа из под других вариантов, но условие с ней располагается выше, чем проверка "sChoice", поскольку мы, как я уже сказал, вызываем еще одно меню с ответами из под меню с предыдущими ответами. "sSys" - переменная, которая в целом отвечает за контроль меню и пока она больше нуля, игра проверяет - нажаты ли кнопки или нет. Есть еще несколько вариантов, как написать этот скрипт, но я выбрал этот, т.к мне он показался более наглядным. Надеюсь, логика более-менее понятна. Не скажу, что скрипт сложный, просто надо правильно выстроить последовательность и не запутаться в переменных. Спасибо большое, Такирелль! Я использую модель sewerdoor01 (nif-file), которая соединяет двери комнат (не тоннелей) в канализации. Деревянная поднимающаяся дверь с овальной частью сверху. Я так понял я делаю много лишних блоков вместо одного, так что уже начал постепенно переписывать структуру скриптов в моде чтобы было поменьше одинаковых блоков, чтоб не множить сущности. Спасибо Вам еще раз! В своем скрипте я запутался в том, что именно делают мои переменные из-за чего как бы я ни бился, результата не было, только ошибки, а ваш действительно нагляден. Буду анализировать его и постигать науку скриптинга дальше :) Изменено 17 июня, 2024 пользователем ArtemSH 1 Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασσα αὐτῷ ὑπακούουσιν
Takirell Опубликовано 18 июня, 2024 Опубликовано 18 июня, 2024 17.06.2024 20:53:55, ArtemSH сказал(-а):Деревянная поднимающаяся дверь с овальной частью сверху. Я тогда гляну на досуге и дополню скрипт. А сам то он работает у Вас? По поводу третьего Вашего вопроса - скиньте мне kf-анимацию 1 Ничто не истинно, все потрачено
ArtemSH Опубликовано 19 июня, 2024 Опубликовано 19 июня, 2024 Да, проверил. Работают варианты. :good2: Скинул в ЛС 1 Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασσα αὐτῷ ὑπακούουσιν
SisterlovingAltmer Опубликовано 13 июля, 2024 Опубликовано 13 июля, 2024 (изменено) 10.04.2024 18:34:49, piramis сказал(-а): Вот не уверен. Был у меня давний опыт по созданию обнаженных амазонок и суккубов, им из брони были выданы только сандалии, куда и были прописаны параметры полного сета брони. Однако такие враги очень быстро погибали. Пришлось всю концепцию изменить и выдавать полную броню в виде частей тел, закрывающих почти полностью фигуру персонажей, что получилось даже удобнее, так как можно кастомизировать внешность нипов, по мускулистости, телосложению, размеру груди, деманам и сатирам выдавать копыта или лапы и тому подобное. Вот в таком виде нипы оказались играбельны, хотя защиты головы у них все равно нет, как и у оригинальных бандитов и мародеров. до выдачи шлемов в виде модели головы как-то не дошло :) Вот кстати о броне в виде частей тел. Как, бездна подери, эту броню импортировать так, чтобы текстуры отображались? Текстуры тел Oblivion в упор почему-то не видит. Изменено 13 июля, 2024 пользователем SisterlovingAltmer
piramis Опубликовано 14 июля, 2024 Опубликовано 14 июля, 2024 (изменено) 13.07.2024 14:54:20, SisterlovingAltmer сказал(-а): Вот кстати о броне в виде частей тел. Как, бездна подери, эту броню импортировать так, чтобы текстуры отображались? Текстуры тел Oblivion в упор почему-то не видит. В смысле "импортировать" ? Просто положить в отдельную папочку (или в несколько папок) набор из частей тел от реплейсера, роберта для мужчин, hgec или роберта для женщин, и потом просто делаем броньки, используя их. Лично я сделал так : Руки и ноги как перчатки и ботинки. Для кирас дополнительно добавляем параметры брони и прочности от щита (в этом качестве используем upper body), для понож добавляем параметры брони и прочности также от шлема (для них используем Lover_body. обычные или с набедрениками). Иногда приходится делать часть тела/брони, соединенные вместе обувь и поножи, такое пришлось использовать для копыт. Соответствие верхних частей тела мужских тел и женской груди у меня такое : Boy- A SLatH (легкоатлет) или Scrawny (стройный) - B Defaulth - C Musc (мускулистый) - D HeavyMusc (тяжелоатлет) - E Для нижних частей тела можно составлять пары вариантов для мужчин с эрекцией и без, для женщин нормальные бедра, узкие (под маленькую грудь), мускулистая lover_body, например от варианта EBE, которая будет более уместна с мускулистой верхней частью (обычно все женские upper_body имеют обычный вариант и мускулистый fight, но это уже на личный выбор, для нордов и орков подходит, для имперцев не очень, для редгардов более-менее, для эльфов категорически нет) Мужские тела взяты из самого последнего реплейсера RM (Robert Male) 52/ (можно взять тут например https://tesall.club/files/modi-dlya-oblivion/repleiseri-tela/repleiser-robert/3477-robert-s-male-body-replacer) С женскими немножко сложнее, так чтобы лежало все в одном месте, но вообщем есть, для HGEC даже два реплейсера есть, во втором (SetBody Reloaded Blockhead Edition) есть копыта, лапы, и адекватная грудь размера F (если оно конечно кому надо) но второй не совместим с множеством более ранних модов. Изменено 14 июля, 2024 пользователем piramis
dizzy221 Опубликовано 14 июля, 2024 Опубликовано 14 июля, 2024 (изменено) Люди добрые помогите разобраться с плагином https://tesall.club/files/modi-dlya-oblivion/geimplei-i-izmeneniya/8743-sprint-dlya-oblivion Пытаюсь отключить повреждение запасу сил в этом плагине. Не трудно догадаться что за спеллы дебафа отвечает этот кусок кода - скрин Я не разбираюсь в моддинге CS, через TES4Edit я могу эффектам указать величину эффекта в 0, это решает проблему, но постоянный спам вверху что бафф/дебафф активирован и снят напрягает. Я пытался убрать из скрипта этот кусок кода, но тогда спринт перестает работать. Как я понял, редактирование скриптов возможно только в рамках CS из за компиляции, но там у меня ничего не выходит и нет нормальных мануалов чтобы в этом быстро разобраться. Изменено 14 июля, 2024 пользователем dizzy221
IgorLutiy Опубликовано 14 июля, 2024 Опубликовано 14 июля, 2024 14.07.2024 13:04:35, dizzy221 сказал(-а):Как я понял, редактирование скриптов возможно только в рамках CS из за компиляции, но там у меня ничего не выходит и нет нормальных мануалов чтобы в этом быстро разобраться. Проблема в том, что на странице мода забыли указать, что ему нужен расширитель скриптов OBSE. И чтобы редактировать такие скрипты нужно CS запускать через OBSE (кажется так, сорри, запускал это дело в последний раз лет 10 назад, деталей уже не помню, а Обливиона под рукой нет). И далее просто редактируем скрипт и все. Надо убрать указанные фрагменты, не зацепив лишнего, от if WeightS < 5 до соответствующего ему endif. В обоих местах. Все должно работать, сложностей никаких нет, главное правильно запустить редактор с OBSE. 1 Мир друзьям - смерть врагам! Мой новый сайт-блог: https://igorlutiy.pp.ua - как некое подведение итогов моей жизни в интернете Мой профиль на Самиздате: http://samlib.ru/l/ljutyj_i/
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти