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

Varang

Граждане
  • Постов

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

  • Посещение

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

  1. При юзании Equip прошлый раз он сбоил сразу при начале скрипта в Рамимилке. Но этот вариант я щас тоже потестил, он не робит. Думаю, об адекватном юзании Equip все ж можно забыть, увы, движок не не может и не будет адекватно обрабатывать эту функцию. Ты мне лучше растолкуй четко, как нормально сделать в моей ситуации направленные скрипты на НПС, уже имеющих на себе висящие скрипты? Т.е. как сделать грамотные активаторы, не парализующие всю игру. На примере Дрена и братьев Йенит, например (локация вилла Дрена)? И как запустить ModCurrentMagicka и ModCurrentFatugue грамотно, не перегружая скрипт, где здоровье, но через него же? Костыль с ModCurrentH\M\F мне пока кажется более перспективным, думаю, есть смысл больше на нем сосредоточиться. Я могу "занусуть" скрипт с зельями магии в скрипт зелий здоровья? Вот так: begin A_A_NPC_USING_POTION_HEALTH float timerHealthshort doOnce Short OnPCHitMe If (OnPCHitMe == 1)StartScript "A_A_NPC_USING_POTION_MAGIC" endif if ( doOnce ); NPC мертв return elseIf ( OnDeath ); NPC умер set doOnce to 1; фиксируем смерть return endif if ( timerHealth > 0 ); если задан таймер задержки set timerHealth to ( timerHealth - getsecondspassed ); уменьшаем таймер elseif ( GetEffect, sEffectRestoreHealth ); еще не кончился эффект elseif ( GetHealthGetRatio < 0.5); стало мало жизни if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек Modcurrenthealth 200 PlaySound3D "Drink" RemoveItem "p_restore_health_e" 1 set timerHealth to 3; задаем три секунды таймеру elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего Modcurrenthealth 100 PlaySound3D "Drink" RemoveItem "p_restore_health_q" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_s" > 0 ) Modcurrenthealth 50 PlaySound3D "Drink" RemoveItem "p_restore_health_s" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_c" > 0 ) Modcurrenthealth 25 PlaySound3D "Drink" RemoveItem "p_restore_health_c" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_b" > 0 ) Modcurrenthealth 15 PlaySound3D "Drink" RemoveItem "p_restore_health_b" 1 set timerHealth to 3 endif endif end И ВОТ НА МАГИЮ: begin A_A_NPC_USING_POTION_MAGICfloat timerMagshort doOnce if ( doOnce ); NPC мертв return elseIf ( OnDeath ); NPC умер set doOnce to 1; фиксируем смерть return endif ;---------------------------------Магияif ( timerMag > 0 ); если задан таймер задержки set timerMag to ( timerMag - getsecondspassed ); уменьшаем таймер elseif ( GetEffect, sEffectRestoreSpellPoints ); еще не кончился эффект elseif ( GetMagicka < 150); стало мало маны if ( GetItemCount "p_restore_magicka_e" > 0 ); есть в наличии бутылек Modcurrentmagicka 300 PlaySound3D "Drink" RemoveItem "p_restore_magicka_e" 1 set timerMag to 3; задаем три секунды таймеру elseif ( GetItemCount "p_restore_magicka_q" > 0 ); проверка на следующий бутылек если нет предыдущего Modcurrentmagicka 150 PlaySound3D "Drink" RemoveItem "p_restore_magicka_q" 1 set timerMag to 3 elseif ( GetItemCount "p_restore_magicka_s" > 0 ) Modcurrentmagicka 75 PlaySound3D "Drink" RemoveItem "p_restore_magicka_s" 1 set timerMag to 3 elseif ( GetItemCount "p_restore_magicka_c" > 0 ) Modcurrentmagicka 40 PlaySound3D "Drink" RemoveItem "p_restore_magicka_c" 1 set timerMag to 3 elseif ( GetItemCount "p_restore_magicka_b" > 0 ) Modcurrentmagicka 20 PlaySound3D "Drink" RemoveItem "p_restore_magicka_b" 1 set timerMag to 3 endif endif end
  2. а причем тут бутылек отражения???
  3. да даже с блоком магии уже не работает, много. Если currenthealth устанавливает и максимальное, то какая команда регенит часть текущего? а просто ModHealth тогда что делает (кс не выдает ошибку в скрипте, получается, есть такая команда?). ПС Я, кстати, потестил, вместо ModCurrentHealth 15 в последнем блоке поставил 1500 - однако 1500 здоровья у бандитки из Аддамасартуса не стало, она отрегенила ХП до максимума (а всего у нее порядка 88 ХП) и потом все равно быстро померла. Так все же точно, что делает эта команда - регенит на указанное число в рамках текущего ХП или устанавливает максимум? И как мне поступить м магией и усталостью тогда? Запускать отдельные скрипты внутри моего?
  4. И как это сделать? Я могу сделать же, например, активатор, который развешает скрипты при входе на виллу Дрена на братьев Йенит и Орваса, и как-то прописать, что если я вышел с виллы, скрипт останавливается, или нет? А потом - если я вернусь, он включится по новому (если внутри еще останутся живые)? Когда добавил звук и все остальные модификаторы (восстановление магии и стамины), игра стала зависать и вылетать при срабатывании скрипта! Однако, если оставить только скрипт с восстановлением здоровья - игра работает. Не перегружен ли скрипт, может, его как-то упростить? begin A_A_NPC_USING_POTION_PLEASE float timerHealthfloat timerMagfloat timerFatshort doOnce if ( doOnce ); NPC мертв returnelseIf ( OnDeath ); NPC умер set doOnce to 1; фиксируем смерть returnendif if ( timerHealth > 0 ); если задан таймер задержки set timerHealth to ( timerHealth - getsecondspassed ); уменьшаем таймерelseif ( GetEffect, sEffectRestoreHealth ); еще не кончился эффектelseif ( GetHealthGetRatio < 0.5); стало мало жизни if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек Modcurrenthealth 200PlaySound3D "Drink"RemoveItem "p_restore_health_e" 1 set timerHealth to 3; задаем три секунды таймеру elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего Modcurrenthealth 100PlaySound3D "Drink"RemoveItem "p_restore_health_q" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_s" > 0 ) Modcurrenthealth 50PlaySound3D "Drink"RemoveItem "p_restore_health_s" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_c" > 0 ) Modcurrenthealth 25PlaySound3D "Drink"RemoveItem "p_restore_health_c" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_b" > 0 ) Modcurrenthealth 15PlaySound3D "Drink"RemoveItem "p_restore_health_b" 1 set timerHealth to 3 endifendif;---------------------------------Магияif ( timerMag > 0 ); если задан таймер задержки set timerMag to ( timerMag - getsecondspassed ); уменьшаем таймерelseif ( GetEffect, sEffectRestoreSpellPoints ); еще не кончился эффектelseif ( GetMagicka < 150); стало мало маны if ( GetItemCount "p_restore_magicka_e" > 0 ); есть в наличии бутылек Modcurrentmagicka 300PlaySound3D "Drink"RemoveItem "p_restore_magicka_e" 1 set timerMag to 3; задаем три секунды таймеру elseif ( GetItemCount "p_restore_magicka_q" > 0 ); проверка на следующий бутылек если нет предыдущего Modcurrentmagicka 150PlaySound3D "Drink"RemoveItem "p_restore_magicka_q" 1 set timerMag to 3 elseif ( GetItemCount "p_restore_magicka_s" > 0 ) Modcurrentmagicka 75PlaySound3D "Drink"RemoveItem "p_restore_magicka_s" 1 set timerMag to 3 elseif ( GetItemCount "p_restore_magicka_c" > 0 ) Modcurrentmagicka 40PlaySound3D "Drink"RemoveItem "p_restore_magicka_c" 1 set timerMag to 3 elseif ( GetItemCount "p_restore_magicka_b" > 0 ) Modcurrentmagicka 20PlaySound3D "Drink"RemoveItem "p_restore_magicka_b" 1 set timerMag to 3 endifendif;----------------------------Усталостьif ( timerFat > 0 ); если задан таймер задержки set timerFat to ( timerFat - getsecondspassed ); уменьшаем таймерelseif ( GetEffect, sEffectRestoreFatigue ); еще не кончился эффектelseif ( GetFatigue < 150); стало мало сил if ( GetItemCount "p_restore_fatigue_e" > 0 ); есть в наличии бутылек Modcurrentfatigue 400PlaySound3D "Drink"RemoveItem "p_restore_fatigue_e" 1 set timerFat to 3; задаем три секунды таймеру elseif ( GetItemCount "p_restore_fatigue_q" > 0 ); проверка на следующий бутылек если нет предыдущего Modcurrentfatigue 200PlaySound3D "Drink"RemoveItem "p_restore_fatigue_q" 1 set timerFat to 3 elseif ( GetItemCount "p_restore_fatigue_s" > 0 ) Modcurrentfatigue 100PlaySound3D "Drink"RemoveItem "p_restore_fatigue_s" 1 set timerFat to 3 elseif ( GetItemCount "p_restore_fatigue_c" > 0 ) Modcurrentfatigue 50PlaySound3D "Drink"RemoveItem "p_restore_fatigue_c" 1 set timerFat to 3 elseif ( GetItemCount "p_restore_fatigue_b" > 0 ) Modcurrentfatigue 25PlaySound3D "Drink"RemoveItem "p_restore_fatigue_b" 1 set timerFat to 3 endifendif end Не все ясно с командой Modcurrent...где-то пишут, что она модифицирует здоровье, добавляя\уменьшая, где-то - что устанавливает текущее...
  5. Погоди, это проблема? Т.е. скрипт опять будет работать постоянно?
  6. А почему тогда в первых двух пещерах норм срабатывает? Если бы была система в ошибках, я бы уже давно смирился, но дело именно в том, что где-то скрипт срабатывает без проблем, а где-то - глючит. Я тут попробовал сделать на основе заклинаний - вроде норм работает, ошибок нет. Да, костылек на фоне зелий, но для баланса вполне норм. Единственный минус - нет звукового и визуального эффекта. Насколько я помню, нельзя создать визуальный эффект заклинания в Морре без его четкого применения. Но можно хотя бы звук сделать (или звук восстановления, или звук выпивания при перетаскивании бутылки на персонажа)? Как привязать звук сразу после выпивания зелья? begin A_A_NPC_USING_POTION_PLEASE float timerHealthfloat timerMagfloat timerFatshort doOnce if ( doOnce ); NPC мертв returnelseIf ( OnDeath ); NPC умер set doOnce to 1; фиксируем смерть returnendif if ( timerHealth > 0 ); если задан таймер задержки set timerHealth to ( timerHealth - getsecondspassed ); уменьшаем таймерelseif ( GetEffect, sEffectRestoreHealth ); еще не кончился эффектelseif ( GetHealthGetRatio < 0.5); стало мало жизни if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек Modcurrenthealth 200;какая-то команда звука???RemoveItem "p_restore_health_e" 1 set timerHealth to 3; задаем три секунды таймеру elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего Modcurrenthealth 100RemoveItem "p_restore_health_q" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_s" > 0 ) Modcurrenthealth 50RemoveItem "p_restore_health_s" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_c" > 0 ) Modcurrenthealth 25RemoveItem "p_restore_health_c" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_b" > 0 ) Modcurrenthealth 15RemoveItem "p_restore_health_b" 1 set timerHealth to 3 endifendif end И в итоге - что делать с глобальными нацеленными, запускающимися с 1го активатора? Делать несколько активаторов и кидать их либо в помещения с НПС на входе, либо пряо под ноги там, где можно зайти с разных сторон в ячейку (или активатор сразу на входе срабатывает в ячейку в любом случае?).
  7. Что значит в текущей? Если я пытаюсь зайти в Рамимилк, это разве не текущая ячейка становится? Поясни, пожалуйста. ПС Кстати, в Рамимилк таже постоянно вылетает вот такая ошибка, которую я уже давно безуспешно пытаюсь устранить (в своем плагине я ловушки не менял в этой локации, в редакторе там числится заморозка, а не проклятие здоровья). Она не может провоцировать ошибку (ну мало ли)? Trap spell 'dread curse: health' is invalid trap. Object 'com_chest_Daed_ruin_01' in cell 'Ramimilk, Shrine'.
  8. Не знаю, тесты не однозначны. Аддамасартус и Заинсипилу робят без проблем, а в Рамимилке вылетает ошибка и скрипт не работает на первом же НПС на входе. Вылетов, правда, нет теперь. Script Error: EXPRESSION in A_A_NPC_USING_POTION_PLEASE Infix to postfix Руководство пишет что подобные ошибки из-за синтаксиса, хз, где-то запятые или пробелы отсутствуют, что ли....Right Eval, кстати, раньше всегда была ошибка. а теперь вот это вот все...
  9. Увы. Не помогло, вдобавок каждый второй бой игра стала вылетать.
  10. А поточнее? Так? if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек AddItem "p_restore_health_e"" 1 Equip "p_restore_health_e" 1; выпить бутылек RemoveItem "p_restore_health_e"" 1 set timerHealth to 3; задаем три секунды таймеру elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего
  11. А нужна ли цифра 1 после наименования зелья? Ведь итак больше 1 не выпивает на 1 раз? Или это несущественно? Equip, "p_restore_health_b" 1 или просто Equip, "p_restore_health_b" ? ВОТ нашел на буржуйском сайте, судя по всему, тоже ничего не удалось через эти команды, чувак сдался и начал через спеллы. И тоже не сильно преуспел. В общем, вот и ответ, походу. Функция СЛОМАНА, судя по всему, юзание зелий через Equip на нормальной рабочей основе невозможно, ибо это рабочая команда для шмота и одежды, и Трибунал проблему не решил, поэтому то, что написано в описании MCP - неправда.
  12. Просто хотелось бы получить более-менее четкий ответ касательно целесообразности дальнейшей работы с данным скриптом. На все мучительные попытки итак с перерывами уже ушло полгода, в праздники хотелось бы хоть немного поиграть. Т.е. если шансов нормально наладить его нет, и проблема на уровне движка-глючности скриптовой команды, я забиваю и делаю иные, более банальные способы усилить НПС в игре. Просто тут вроде все еще немало матерых монстров моддинга на форуме, в т.ч. спецов по скриптам, и немного странно, что до этого никто или даже не задавался мыслью слепить такой скрипт для разнообразия игры, или, имея вагон опыта скриптописания, не имеет никаких идей касательно возможных ошибок, по причине которых не работает именно данный вариант. Если у кого-то все же есть время и возможность прочитать эту тему, кроме тех, кто мне итак пытается помочь, дайте совет, пожалуйста. Спасибо. ПС Не может ли быть ошибкой отсутствие переменной для функциональной команды Equip, хотя в руководстве ее не нашел для NPC, только для ГГ (Short OnPCEquip и Short PCSkipEquip)?
  13. А что это такое за режим? Вот, пожалуйста. Morrowind.7z
  14. Я не удаляю трупы. Никогда. В общем, я сделал, как вы сказали - убрал глобалки вообще. Создал тестового сильного перса, погнал тестить. Зашел в Аддамасартус, Зайнсипилу и Рамимилк. В первых двух пещерах бегал, перезаходил в помещение по 2-3 раза, выходил из игры и загружался - ошибок не было, правда, игра 2 раза вылетела прямо в бою, чего раньше у меня никогда не было. Потом дошел до Рамимилка, и мне еще на входе - та -дам! Уж не знаю, это сглюкнули персы в самой локации, или меня ДОГНАЛ скрипт, зависший в какой-то из передыдущих локаций (хотя там все работало идеально). После этого в самом Рамимилке из 4 персон только 1 или 2 хоть как-то пили зелья. Script Error: EXPRESSION in A_A_NPC_USING_POTION Infix to postfix Вылетает ошибка, снова...как видите, локальный скрипт тоже не хочет работать корректно на постоянной основе. Вопрос...что же мне делать? Ты говорил насчет передачи инфы в MCP.
  15. У меня просто есть ощущения, что локалки тоже "падают" либо после вторичного посещения локации с недобитым неписем с локалкой на нем, либо повторной подгрузки сейва игры в одной сессии, или, наооборот, зависают даже после того, как ГГ ушел, и, как следствие, глючат. Может, подстраховаться какой-то проверкой на дистанцию все же, дабы скрипт отключался при отдалении\уходе героя от локации?
  16. Как мне сейчас отключить глобальные и продолжить тест? Просто удалить их игры и оставить лишь локалку? И почему тогда глобальные скрипты, вешающие броньку на кричуров, работают норм, и ошибок не выдают? ПС Сейчас удалил глобалку со всеми "именными скриптами". Запустил сейв, зашел в ячейку с НПС под локалкой. Ошибки не было никакой (не считая ругательств касательно отсутствующих скриптов глобальных при запуске), ИИ начал пить зелья и убил меня. Но при еще одной перезагрузке с того же сейва ИИ уже не пил ничего и просто дал себя быстро убить. Т.е. локалка тоже по-своему нестабильна, или я что-то не понимаю о перезапусках сейвов в одной сессии игры?
  17. Периодически при запусках сейвов вылезает: Script Error: EXPRESSION in A_A_NPC_USING_POTION (локальный скрипт большинства НПС, как я писал выше) Right eval Также иногда вылезает при приближении агрессивного НПС в локации, иногда вообще ниоткуда при прогулка по городам и весям.
  18. Что значит "не падает" спустя 3 сек? И что надо делать...а локальные смысл тестить отдельно, если и так ясно, что игра в них тоже видит что-то не то (а что именно, я хз)...
  19. А поконкретнее? Как я уже говорил, проблема не только в нацеленных, но и в локальных...
  20. Всем добрый день еще раз (кому уже надоедал по данному вопросу). В общем, некоторое время я делал плагин с балансом под себя, в целом, был почти доволен, но одной из никак не поддающихся частей данного творения стали скрипты, дающие (точнее, заставляющие) НПС пить зелья здоровья, маны и усталости с регулярной четкостью. Данные скрипты мне помогали делать два товарища, Муурн Шепард и olol, за что им огромное спасибо, но увы, что-то идет не так и полностью адекватно эти скрипты работать не хотят. Общая концепция была такова- есть общий скрипт для большинства НПС в игре, не затронутых иными скриптами, заботливо мной развешенный вручную на тонну НПС, так или иначе агрессивно или потенциально агрессивно настроеннных к ГГ - его название: A_A_NPC_USING_POTION, и его текст здесь: Для НПС, уже имеющих некие скрипты, данный скрипт копировался с изменением названия, и был создан специальный активатор, на который был повешен скрипт-свитчер (помещен в Имперскую канцелярию на старте игры), под названием A_A_ACTIVATOR_USING_POTION, его текст здесь: Предполагалось, что этот глобальный скрипт будет запускать нацеленные индивидуальные скрипты на тех НПС, что в нем указаны (именные скрипты), а большинство остальных в игре будут запускаться автоматически на НПС, на которых они развешены. Прошло несколько дней тестов. В общем, данная система скриптов не хочет работать корректно, какие бы мы варианты не перебирали с товарищем olol. Причем, нельзя сказать, что скрипты не работают полностью. Но четкой работы нет. Часто возникают ошибки вроде этих (как на глобальном с нацеленными, тк и в локальных): Script Error: EXPRESSION in A_A_NPC_USING_POTION Right eval Script Error: EXPRESSION in A_ahaz Right eval Script Error: EXPRESSION in A_Aebondeius_Jucanis Right eval Ситуации самые разные. Персонаж может идти по дороге за переделами города - и выплывает ошибка, дается вариант выбора, если нажать "No" - игра вылетает. Если нажать Yes - в данной ячейке (например, если это локальный скрипт A_A_NPC_USING_POTION) - скрипт перестает работать. Иногда эти ошибки не возникают при повторной загрузке с более старого сейва, но потом могут потом появиться снова. Почти гарантированно возникают, если вернуться в ту же локацию, где уже был, но там остался недобитым НПС, на котором и висел этот скрипт. Плюс еще постоянно вылезающие ошибки по нацеленным скриптам для НПС, с которыми я еще даже близко не встречался! Иногда можно играть 1,5 - 2 часа, и никаких ошибок не выползает - а потом вдруг снова. Я убирал\ставил снова запятые после Equip, проверял синтаксис по руководству MSFD - результатов это не давало. Для сравнения - в этом же моде у меня есть активатор-скрипт, "запускающий" броню на многих существах в игре, тоже глобальный с нацеленными скриптами в нем, но там ошибок не возникает...У кого есть конструктивные мысли\советы, как можно, наконец, доработать эти скрипты до их полной работоспособности. Есть мнение, что, может, надо устраивать скриптам некие проверки на дистанции, дабы все они отключались, как только ГГ удаляется из ячейки, но в каком именно ключе это должно быть прописано? Я бы еще понял, если все было так плохо, и не работало НИЧЕГО. Но были, как я уже говорил, часы тестов, когда НПС исправно пили свои зелья стамины, здоровья и маны, отчаянно не желая сдаваться и умирать, а потом на ровном месте в игре возникали ошибки. Прилагаю свой ESP для проверки на всякий случай. Надеюсь на помощь, спасибо заранее! MorrowindAgain.zip
  21. да я уж потестил, понял, что это мой плагин создает глюки (хз пойми как), которые я, увы, устранить пока не могу никак...
  22. Вопрос такой - что за глюк может быть, игра зависает намертво при попытке перетащить предмет из трупа в свой. Встрял прямо в начале игры - убил контрабандистку в Аддамасартус, попытался снять с нее сапоги нетча - игра зависла. Баг не разовый, он не уходит! Где-то в файлах игры можно посмотреть, с чем ошибка связана? В своем моде я много чего переделывал, но конкретно в сапогах нетча - только параметры брони, цену и зачаровательный объем...помогите, пожалуйста, все прохождение портится уже на этом этапе...может ли скрипт выпивания зелий, висящий на НПС, каким-то образом влиять на это?
  23. Возник вопрос при намечающемся прохождении за вора - по какой формуле рассчитывается шанс обнаружения персонажа по Хамелеоном, какие характеристики НПС влияют на это? И на что влияяет характеристика Stealth у Creature? Второй вопрос - в игре несколько Даготов (например, Велос), не числящихся нигде (0 шт). Как можно проверить, не используютс ли они где-то уже игре, не добавляются ли скриптами?
  24. Истину глаголишь! Всяких паровых центрурионов, по идее, только молотами и секирами с недюжинной силой и крушить, ну что там ковырять -то их всякими ножичками?
×
×
  • Создать...