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

Takirell

Модмейкер
  • Постов

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

  • Посещение

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

  1. Блок OnDeath в помощь. Его нужно повесить на нужных НПС, но выглядеть это будет так: Begin OnDeath Player ;Здесь условия и то, что должно произойти End После название блока, как Вы могли заметить, идет Player - игра понимает его, как убийцу. Заместо этого аргумента может быть кто угодно.   Конкретно в ваниле - не припоминаю, но Вы можете сами его создать и разместить, в чем проблема? Просто нужно будет повесить на него специальный скрипт, срабатывания которого ограничить переменной sDoOnce, например, возводить которую в "1" после того, как игрок встанет в триггер и сработает блок OnTriggerActor. А сбрасывать переменную (если это нужно) уже, скажем, в GameMode, после того, как игрок отойдет на какое-то расстояние от триггера. Или при иных условиях.   Создать новый топик и добавить в него условие в виде GetIsCurrentPackage с указанием в параметре условия пакета и выставление типа условия OR, вместо AND. Там есть флажки для этого. Ну и,  созданный топик нужно добавлять скриптом через AddTopic.   Хмм... чессказать, не слышал о таком. Да, я вижу, что код написан неверно и будет постоянно отдавать игре команду на включение\отключение, т.к, опять таки - нет проверок-ограничителей на выполнение тех или иных действий. Щас прям с ходу не исправлю, времени не особо...   Я использую SayTo, но с привязкой к таймеру. Ппж (хз когда), скину пример скрипта. Там, на самом деле, все оч просто. P.S Если честно, то многие вещи мне было бы удобнее объяснить Вам в дискорде, например, с демонстрацией экрана, т.к это заняло бы в разы меньше времени, чем я буду все это пытаться расписывать и заливать скрины :D
  2. Takirell

    Лилит Мерунес

    SandKing20, Если хотите, можете связаться со мной в ЛС и я вышлю Вам новую версию. Там есть на что посмотреть и что проверять, на самом то деле.
  3. Takirell

    Лилит Мерунес

    SandKing20, В общем и целом - все прошло более чем неплохо, тестировали переделанную часть квеста самой Лилит, все еще остается моменты с ее внедрением в основную сюжетку. Просто времени этим заниматься пока что нет, увы :с
  4. Ну или, совсем костыльный метод - убрать магнитуду у добавляемых эффектов поглощения запаса сил, не трогая скрипты вовсе.
  5. Я тогда гляну на досуге и дополню скрипт. А сам то он работает у Вас? По поводу третьего Вашего вопроса - скиньте мне kf-анимацию 
  6. В общем, выкроил я чуть времени, вот что получилось... Вроде бы как работает, проверьте. Переменную sOpen использовал в качестве "отмычки" для каких-то дальнейших действий, т.к не оч понимаю - что у Вас там за дверь и как она открывается (анимированная или нет). Могу фрагменты кода и к этому добавить, если надо. Только объясните - какую модель двери используете. У Вас все верно было написано, в принципе, только не хватало переменных и саб-переменных, чтобы отделять на трех кнопках варианты. Ну и, конечно же, эти гейм-моды... отучайтесь так делать, пожалуйста. Вы должны понимать, что игре все равно, сколько раз Вы вызовете GetButtonPressed, под какими переменными и из какого по счету гейм-мода, она все равно будет считать кнопки от 1 до 10. И вот, как можете видеть, у нас всего 3 основных кнопки, но на каждую из них, с помощью переменных, я привязываю разный текст. "sSub" у нас служит для вариантов ответа из под других вариантов, но условие с ней располагается выше, чем проверка "sChoice", поскольку мы, как я уже сказал, вызываем еще одно меню с ответами из под меню с предыдущими ответами. "sSys" - переменная, которая в целом отвечает за контроль меню и пока она больше нуля, игра проверяет - нажаты ли кнопки или нет. Есть еще несколько вариантов, как написать этот скрипт, но я выбрал этот, т.к мне он показался более наглядным. Надеюсь, логика более-менее понятна. Не скажу, что скрипт сложный, просто надо правильно выстроить последовательность и не запутаться в переменных.
  7. garretzav, Спасибо за данную информацию, будет время - проверю. Возможно, в новом OBSE что-то изменилось.
  8. Значит так... здесь, я бы попросил Вас составить мне полную блок-диаграмму с вариациями ответов и действиями, которые должны происходить после выбора того или иного варианта. Можно в виде схемы в паинте, можно просто текстом. Желательно прикрепить куски кода с тем, что должно происходить после выбора ответа, дабы мне было проще ориентироваться. Это упростит мне задачу и сэкономит время.   А вот с третьим вопросом придется чуть повозиться... вернее даже, причина не столь в сложности реализации, а в том, что мне нужен будет Ваш мод и его ресурсы, чтобы наглядно реализовать данную фишку в нем. На пальцах я могу объяснить, конечно, но вряд ли это что-то даст.
  9. Приветствую. Задачи мне ясны, но времени для их реализации у меня сейчас не шибко много, посему буду по ходу дела отвечать. Касательно первого вопроса с отравлением лука: я правильно понимаю, что Вам не нужно, чтобы конкретный лук (как оружие) был отравлен именно тем ядом, что скрипт нашел в сумке у ГГ? Нужно лишь обыграть момент с активацией активатора (тавтология, да), показать табличку, чтобы игрок сделал выбор и, как я смотрю - сделать какие-то действия? Так или иначе, с Вашего позволения, я переделал скрипт в более... правильный (с моего взгляда) вариант. 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 - это, как я понял, пакеты НПС? А... что Вы, простите, хотите, чтобы игра проверила в гейм-моде? Просто пакет, без указания у кого он? Я исправил на то, как должно быть и, как можете заметить, добавил несколько условий для более корректной работы.
  10. У меня было примерно похожее, только система зависла и вылетела в BSOD, когда был открыт конструктор (не во время сохранения), после перезагрузки ПК - плагин погиб. Вряд ли можно как-то его исцелить, у меня не вышло.
  11. 790, Мой мод - [CCE], а sdr.dll - это сторонний OBSE-плагин, который нужен для работы моего мода. Я не являюсь автором sdr и не отвечаю за его работоспособность. У Вас, похоже, какой-то другой мод крашит игру (судя по ID скрипта, на который он ругается). Смотрите, какой плагин в Вашей сборке стоит под порядковым номером загрузки "04" и от этого уже пляшите. А SDR написал, мол "загружены правильные исправления" или типа того.
  12. 790, Ваш лог ругается на sdr, а не на мой мод. К тому же, в [CCE] нет скриптов с FormID 0400ac62.
  13. Добро пожаловать в клуб моддинг Облы, где все сделано именно таким образом, ибо даже с OBSE и "плюшками" к нему, приходиться изгаляться.
  14. 790, Я гляну на досуге, из-за чего может не работать мод. Это странно, там особо нечему НЕ работать.
  15. 790, Не уверен, что дело в этом. Вы действительно правильно используете данный мод? Так, как написано в Ридми к нему?
  16. 790, Попробуйте переустановить плагин с чистым сохранением без него.
  17. Значит, другого варианта решения данной проблемы не существует, кроме как отрубить сначала все вообще и по 1-2 плагина включать, каждый раз проверяя.
  18. Уважаемые, а новая игра решает проблему? Сколько наиграно часов? После чего началась вся эта свистопляска? Какая версия OBSE и какие моды к нему установлены? Пробовали отключать все сторонние моды, оставляя только ваниль + DLC, а потом потихоньку подрубать другие плагины? Алгоритм действий проведенных хотелось бы увидеть. Описанные вами проблемы, очень напоминают эффект скриптовой функции SetRigidBodyMass, которую если вызвать на каком-то объекте, чтобы обездвижить его (отключить физику), начинается сущий кошмар. P.S Башед-патч я бы вообще вынес через Alt+F4 и более его никогда не создавал. Сейчас от него нет практически никакого толку, на моей практике, был вред, чем польза.
×
×
  • Создать...