-
Постов
3448 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Календарь
Весь контент Муурн Шепард
-
Так. У меня по-вчерашнему тестированию вышло, что скрипт, даже запущенный на куче неписей, реально срабатывает только на одном. Так что либо дело в очередности целевых скриптов (глобальных, но запущенных по одной цели), либо в том, что команда Equip не может сработать на неписе в нокдауне.
-
Почему не работает? Со времен Трибунала вполне работает. Кроме нее -- ничего. Вы уверены, что баги с прошлым вариантом скрипта были именно из-за этой функции? Конечно. См. выше создание невидимого активатора с ExplodeSpell.
-
Сколько у вас неписей в бою, когда вы тестируете скрипт? Судя по всему, если неписей несколько, то один "целевой" скрипт не может адекватно отработать на всех. Вероятно, нужно будет создать целую кучу копий этого скрипта и потом запускать каждую для своего непися. Проверяя, соответственно, чтобы скрипт с одним и тем же названием не был уже запущен. Это совсем другой момент. OnPCEquip отслеживает надетость предмета (и только на игрока). То есть длительный процесс. Если зелье выпито, то, соответственно, оно уничтожится и никогда не будет считаться надетым на игрока. И команда OnPCEquip будет работать с зельями не так, как работает с любыми другими вещами. Не пили зелья неписи явно по другой причине.
-
Мда, действительно странно. Попробуйте вместо elseif подставить if, и добавить после каждого блока, кроме последнего, по endif'у. Прошу прощения, что запутал на прошлой странице.
-
Кстати, важно. Добавьте в самое начало скрипта блок if ( GetHealth <= 0 ) StopScript AI_Using_Potion return endif Это точно конечный вариант? Можете скинуть скрипт целиком, засунув его под спойлер?
-
Вероятно, чтобы мор добавлялся им заново, если игрок их каким-то образом вылечит.
-
Это ни в коем случае не должен быть elseif. if ( GetHealthGetRatio < 0.5) ; здоровье меньше 50%if ( GetItemCount p_restore_health_b > 0 )if ( GetSpell "1_Potion_B" == 0 )removeitem "p_restore_health_b" 1AddSpell "1_Potion_B"endifendifelseif ( GetItemCount p_restore_health_c > 0 )if ( GetSpell "1_Potion_C" == 0 )removeitem "p_restore_health_C" 1AddSpell "1_Potion_C"endifendifelseif ( GetItemCount p_restore_health_s > 0 )if ( GetSpell "1_Potion_S" == 0 )removeitem "p_restore_health_s" 1AddSpell "1_Potion_S"endifendifelseif ( GetItemCount p_restore_health_q > 0 )if ( GetSpell "1_Potion_Q" == 0 )removeitem "p_restore_health_q" 1AddSpell "1_Potion_Q"endifendifelseif ( GetItemCount p_restore_health_e > 0 )if ( GetSpell "1_Potion_EK" == 0 )removeitem "p_restore_health_e" 1AddSpell "1_Potion_EK"endifendifendif Жирным выделены лишние endif'ы, а курсивом -- которые нужно добавить.
-
В принципе, можно, но мне было бы очень лениво прописывать блоки и переменные для каждого зелья (дешевого, стандартного и т. д.). Будет выглядеть примерно так: float timerHealth1; таймер для уценненных зелий float timerHealth2; таймер для дешевых зелий float timerHealth3; таймер для стандартных зелий float timerHealth4; таймер для качественных зелий float timerHealth5; таймер для экслюзивных зелий float myX float myY float myZ if ( GetSpell "Spell1" == 1 ); сделать такой же блок для всех пяти переменных и, соответственно, менять айди заклинания set timerHealth1 to ( timerHealth1 + getsecondspassed ) set MyX to GetPos X set MyY to GetPos Y set MyZ to GetPos Z DummyNPC->SetPos X MyX DummyNPC->SetPos Y MyY DummyNPC->SetPos Z MyZ if ( timerHealth1 >= 5 ) ; 5 секунд откат RemoveSpell "Spell1" set timerHealth1 to 0 endif endif А блок с выпиванием зелья будет выглядеть так: if ( GetItemCount p_restore_health_b > 0 ) if ( GetSpell "Spell1" == 0 ) removeitem "p_restore_health_b" 1 AddSpell "Spell1" PlaceAtMe "DummyNPC1" 1,1,0; непись, который обеспечит искорки. Возможно, для разных уровней зелья стоит создать разных неписей, однако оставить одно айди для усталости/здоровья/магии, потому что искорки всегда выглядят одинаково. endif endif Хм, чтобы добавить соответствующий эффект можно попробовать создать непися, на котором висит постоянная невидимость. На непися навесить скрипт float timer short doonce if ( MenuMode == 1 ) return endif if ( doonce == 1 ) SetDelete 1 return endif if ( GetDisabled == 0 ) Disable ExplodeSpell "Healing spell"; это должна быть не постоянная характеристика, а именно заклинание endif set timer to ( timer + getSecondsPassed ) if ( timer >= 3 ) set doonce to 1 return endif UPD: Поправил скрипты. Для искорок лучше создать даже не непися, а какой-нибудь очень мелкий или невидимый активатор (или не активатор, а колечко). Sound marker'ы не подойдут, на них будет постоянно выскакивать ошибка.
-
Хм... а попробуйте вместо modcurrenthealth использовать explodeSpell "SpellID". Вместо SpellID подставьте какое-нибудь лечащее заклинание для теста. Если сработает, то потом нужно будет создать для каждого зелья по соответствующему заклинанию. В блок, в котором пьется зелье.
-
Добавить в начало скрипта это. short counterHealth short counterMagicka short counterFatigue if ( counterHealth > 0 ) set counterHealth to ( counterHealth - 1 ) return endifА в каждый блок с "выпиванием" зелья восстановления здоровья добавить set counterHealth to 40; или такое же число, как мощность зельяИ сделать такие же блоки для counterMagicka и counterFatigue. Про эффект и звездочки пока не знаю, увы.
-
Мда, понятно. Тогда нужно заменить каждый блок с выпиванием зелья на такой removeitem "some_potion" 1 modcurrenthealth 50Где вместо 50 подставить ожидаемый эффект от зелья. И вместо health писать fatigue/magicka соответственно.
-
А разве скрипт зависит от попаданий? Он ведь должен активироваться в самом начале боя, когда непись кричит боевую фразу. И после работает мгновенно.
-
Новые сундуки самый удобный вариант, кстати. И шмотки надевать не будут, и неписей затрагивать вообще не придется.
-
Снять Blocked и заново открыть окно с неписем. Почему так сделана часть неписей -- не знаю, ни на какие игровые параметры, насколько мне известно, blocked не влияет. Либо можно создать какой-нибудь скрипт и вручную прописать там каждую вещь, которую хочется добавить, а скрипт закинуть в Game Play->Edit Start Scripts. И в нем самом поставить условие вроде if ( MerchantsInventoryUpdate == 0 ) Nalcaria->AddItem XXX 1 Ajirra->AddItem YYY 1 Arille->AddItem ZZX 15 Set MerchantsInventoryUpdate to 1; эту переменную сделать глобальной endif StopScript ScriptName Но с этим мороки слишком много, как мне кажется. Прописать ему отрицательное количество.
-
Ну так и императора монархом надо было назвать, не выдумывая связей с европейскими титулами.
-
Эээ, крона? Как еще можно назвать монету с отчеканенной короной?
-
Внезапно, у "crowns", которые выглядят как кроны, перевод тоже единственный возможный. И если нареканий на кронпринца и кучу других европейских титулов нету, то почему так не глянулись кроны?
-
Тогда почему там есть кронпринцы?
-
И почему вы пришли к такому выводу?