SlowPoke Опубликовано 30 июня, 2020 Жалоба Поделиться Опубликовано 30 июня, 2020 Есть возможность подсказать, на какую функцию MWSE смотреть? :/Вот сюды?Насколько я понимаю, скрипты MWSE можно сохранять прямо в стандартный раздел TES CS "Редактировать скрипты"?Т.е. оставить скрипт на контейнере неизменным, а отредактировать только тот скрипт, который отвечает за предметы, которые должны оказаться в этом контейнере? Да, это похоже на правду. Но я рекомендую делать это через Lua, ибо старый MWSE-функционал - неудобные костыли. Вот эта функция разместит под ногами игрока мешок с id sack_id и перенесет в него все предметы из инвентаря. Сам мешок нужно предварительно создать в КС. local function transferItems local cell = tes3.getPlayerCell() local sack = tes3.createReference{object="sack_id", position=tes3.player.position, orientation=tes3.player.orientation, cell=cell} for _, stack in pairs(tes3.player.inventory) do tes3.transferItem{from=tes3.player, to=sack, item=stack.object, count=stack.count, playSound=true} end end Остается только зарегистрировать функцию на нажатие какой-нибудь клавиши, в данном случае на backspace: local function initialized(e) event.register("keyUp", transferItems, { filter = tes3.scanCode.backspace } ) end event.register("initialized", initialized) Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 30 июня, 2020 Жалоба Поделиться Опубликовано 30 июня, 2020 (изменено) А этот скрипт перенесет вещи только из инвентаря или надетые тоже? А, все, разобрался. Только то, что не надето. Изменено 30 июня, 2020 пользователем Муурн Шепард Ссылка на комментарий Поделиться на другие сайты Поделиться
-=ChieF=- Опубликовано 4 июля, 2020 Жалоба Поделиться Опубликовано 4 июля, 2020 (изменено) Для истории.Вот с таким LUA-скриптом и предварительно созданным контейнером sack_id весь инвентарь персонажа (кроме денег) перемещается в этот самый sack_id: local function transferItems(e) local cell = tes3.getPlayerCell() local sack = tes3.createReference{object="sack_id", position=tes3.player.position, orientation=tes3.player.orientation, cell=cell} for _, stack in pairs(tes3.player.object.inventory) do tes3.transferItem{from=tes3.player, to=sack, item=stack.object, count=stack.count, playSound=true} end end local function initialized(e) event.register("keyUp", transferItems, { filter = tes3.scanCode.backspace } ) end event.register("initialized", initialized) Изменено 4 июля, 2020 пользователем -=ChieF=- Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 15 октября, 2020 Жалоба Поделиться Опубликовано 15 октября, 2020 (изменено) Как сделать оружие, наносящее повышенный урон определённым существам? Как научить скрипт отличить одно существо от другого, в какую сторону копать? Изменено 15 октября, 2020 пользователем РЕДМЕНЪ Ссылка на комментарий Поделиться на другие сайты Поделиться
olol Опубликовано 15 октября, 2020 Жалоба Поделиться Опубликовано 15 октября, 2020 (изменено) Либо использовать расширенные скрипты или вешать скрипты на нужные существа.Если скрипт висит на крысе, то он должен обрабатывать действия для крысы. Изменено 15 октября, 2020 пользователем olol Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 15 октября, 2020 Жалоба Поделиться Опубликовано 15 октября, 2020 А насколько безопасно (для игры) вешать скрипты на существ? Я глянул - вроде на тех, кого хочется "обидеть", скрипты не висят; т.е. такой вариант можно попробовать. Ссылка на комментарий Поделиться на другие сайты Поделиться
olol Опубликовано 15 октября, 2020 Жалоба Поделиться Опубликовано 15 октября, 2020 Если в скрипте нет ошибок, то может быть только конфликт с другим модом добавляющим к ним скрипты.Больших проблем я не вижу. Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 15 октября, 2020 Жалоба Поделиться Опубликовано 15 октября, 2020 может быть только конфликт с другим модом добавляющим к ним скриптыВот в этом и закавыка.Хорошо, спасибо, буду искать способы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 15 октября, 2020 Жалоба Поделиться Опубликовано 15 октября, 2020 Как сделать оружие, наносящее повышенный урон определённым существам? Как научить скрипт отличить одно существо от другого, в какую сторону копать?Повесить на оружие скрипт, отслеживающий его в руках. Повесить на существо скрипт, наносящий допурон при получении урона. Ссылка на комментарий Поделиться на другие сайты Поделиться
raddimus Опубликовано 17 октября, 2020 Жалоба Поделиться Опубликовано 17 октября, 2020 Вот были у меня развешаны на оригинальные двери такие скрипты, и всё вроде работало нормально. А тут вот добавил ещё квартиру, и в оригинальном муравьинде дверь не исчезает при получении журнальной записи, а в ОпенМВ всё норм. Мож совет какой дадите...Begin AOV_C1short doonceif ( doonce == 1 )Returnendifif ( GetJournalIndex AOV_Elmussa < 100 )if ( GetDisabled == 1 )EnableReturnendifendifif ( GetJournalIndex AOV_Elmussa >= 100 )if ( GetDisabled == 0 )Disableset doonce to 1ReturnendifendifEnd Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 17 октября, 2020 Жалоба Поделиться Опубликовано 17 октября, 2020 Вот были у меня развешаны на оригинальные двери такие скрипты, и всё вроде работало нормально. А тут вот добавил ещё квартиру, и в оригинальном муравьинде дверь не исчезает при получении журнальной записи, а в ОпенМВ всё норм. Мож совет какой дадите... Begin AOV_C1short doonceif ( doonce == 1 )Returnendifif ( GetJournalIndex AOV_Elmussa < 100 )if ( GetDisabled == 1 )EnableReturnendifendifif ( GetJournalIndex AOV_Elmussa >= 100 )if ( GetDisabled == 0 )Disableset doonce to 1ReturnendifendifEnd Переменную зря завел if ( GetJournalIndex AOV_Elmussa >= 100 ) DisableEndif Вот и весь скрипт. Ссылка на комментарий Поделиться на другие сайты Поделиться
raddimus Опубликовано 17 октября, 2020 Жалоба Поделиться Опубликовано 17 октября, 2020 Переменную зря завел if ( GetJournalIndex AOV_Elmussa >= 100 )DisableEndif Вот и весь скрипт.Вообще я подозревал, но ленился разобраться.Спасибо! Пошёл сушить скрипты и вообще переписывать плагин. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 17 октября, 2020 Жалоба Поделиться Опубликовано 17 октября, 2020 Begin AOV_C1 if ( GetJournalIndex AOV_Elmussa >= 100 ) if ( GetDisabled == 0 ) Disable Return endif endif EndПравильней будет так, чтобы не вызывать команду Disable каждый фрейм, когда объект уже отключен. Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 18 октября, 2020 Жалоба Поделиться Опубликовано 18 октября, 2020 не вызывать команду Disable каждый фрейм ??Getdisabled тоже команда. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 18 октября, 2020 Жалоба Поделиться Опубликовано 18 октября, 2020 (изменено) ??Getdisabled тоже команда.Исходя из того, что во всех скриптах, написанных разработчиками, применяется такой подход, я смею предположить, что команда GetDisabled занимает меньше времени, чем команда Disable. Изменено 18 октября, 2020 пользователем Муурн Шепард Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 19 октября, 2020 Жалоба Поделиться Опубликовано 19 октября, 2020 (изменено) Исходя из того, что во всех скриптах, написанных разработчиками, применяется такой подход, я смею предположить, что команда GetDisabled занимает меньше времени, чем команда Disable.Разработчики из Беседки пишут как угодно. Изменено 19 октября, 2020 пользователем Larkin Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 19 октября, 2020 Жалоба Поделиться Опубликовано 19 октября, 2020 (изменено) ??Getdisabled тоже команда.Смысл, как я понимаю, в том, чтобы не удалять бесконечно УЖЕ удалённый объект. Должно быть одноразовое условие, и Getdisabled как раз и есть одно из них. Дополнительно: Disable делает объект невидимым, но не удаляет его из игры, и все скрипты, повешенные на данный объект, продолжают исполняться. Таковых объектов могут быть десятки/сотни и все вместе они отнимают ресурсы игры. Следовательно, если объект не предполагается использовать далее, для полного удаления желательно использовать SetDelete 1. ==========Поэкспериментировал с оружием, наносящим доп. урон. Повесить на оружие скрипт, отслеживающий его в руках. Повесить на существо скрипт, наносящий допурон при получении урона.Это можно сделать одним скриптом, а не двумя.HitOnMe отлично справляется с задачей. При попытке атаковать существо определённым оружием включается флаг, позволяющий "сделать что-то необычное", в т.ч. нанести доп.урон. Поскольку для отнятия здоровья неважно, будет урон физический или магический, я пока сделал добавление проклятия с последующим удалением через 1 сек.(в сжатом виде): short keeningHit ; объявление переменной обязательно If ( status == 0 )Set keeningHit to HitOnMe KeeningSet status to 1endif If ( status == 1 )if ( "ID существа"->HitOnMe, "ID уникального оружия" )"ID существа"->AddSpell "ID заклинания"Set status to 2endifendif Скрипт вещается на любое живое существо (не пробовал вешать на активаторы, но по идее, должно работать; например, ударил молотом по скале - скала разлетелась вдребезги и расчистила проход). Это полностью рабочий вариант: при ударе оружием существо получает доп. урон магией на 1 с. При следующем ударе всё повторяется.Если не удалять проклятие, оно будет висеть на существе до конца боя. Если оружием ударить другое существо, ничего не будет. Но что касается доп. физического урона, я опять затупил.Вроде как я понимаю, что оно должно выглядеть примерно как "set Damage to Damage + 10" ; но... как переменная/функция пишется в Морре? Как шифруется физ. урон? - пока не могу найти, туплю. ==========Вариант с HitOnMe полностью рабочий, но меня немножко смущает, что скрипт вешается на существо и, следовательно, затрагивает все копии. Если кто-то напишет на существо другой скрипт, конфликт неизбежен. Можно ли скрипт повесить на оружие (чтобы избежать конфликтов)? Экспериментирую.Рабочий вариант сжато выглядит прим. так: If ( status == 0 )if ( OnPCEquip == 1 ) ; чтобы работало только когда оружие экипировано; если оружие в инвентаре, работать не будетSet status to 1endifendif If ( status == 1 )If ( Player->GetTarget "ID существа" == 1 )"ID существа"->AddSpell "ID заклинания"Set status to 2endifendif Скрипт вешается на оружие. GetTarget как раз работает только на определённом существе. Если этим оружием ударить другое существо, ничего не будет.Недостаток (серьёзный, на мой взгляд) этого варианта в том, что проклятие будет висеть до конца боя. Можно один раз ударить существо и потом бегать от него кругами, пока оно не умрёт. Отнять проклятие не получится. Скорее всего то же самое будет с физ. уроном.Следовательно, надо искать другие условия; например, отслеживать один-единственный удар. Но как? - я пока не нашёл.Предположительно, будет работать отслеживание по звуку удара (-?), но не могу найти, какие звуки прикручены к разным типам оружия. Кто-нибудь подскажет? Изменено 19 октября, 2020 пользователем РЕДМЕНЪ Ссылка на комментарий Поделиться на другие сайты Поделиться
Dun Dram Опубликовано 19 октября, 2020 Жалоба Поделиться Опубликовано 19 октября, 2020 Скрипт вешается на оружие. GetTarget как раз работает только на определённом существе. Если этим оружием ударить другое существо, ничего не будет. Недостаток (серьёзный, на мой взгляд) этого варианта в том, что проклятие будет висеть до конца боя. Можно один раз ударить существо и потом бегать от него кругами, пока оно не умрёт. Отнять проклятие не получится. Скорее всего то же самое будет с физ. уроном. Следовательно, надо искать другие условия; например, отслеживать один-единственный удар. Но как? - я пока не нашёл.А может, проще не скриптовать на существе дополнительный урон, а баффать атаку игрока? Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 19 октября, 2020 Жалоба Поделиться Опубликовано 19 октября, 2020 Смысл, как я понимаю, в том, чтобы не удалять бесконечно УЖЕ удалённый объект. Должно быть одноразовое условие, и Getdisabled как раз и есть одно из них. Дополнительно: Disable делает объект невидимым, но не удаляет его из игры, и все скрипты, повешенные на данный объект, продолжают исполняться. Таковых объектов могут быть десятки/сотни и все вместе они отнимают ресурсы игры. Следовательно, если объект не предполагается использовать далее, для полного удаления желательно использовать SetDelete 1. ==========Поэкспериментировал с оружием, наносящим доп. урон. Это можно сделать одним скриптом, а не двумя.HitOnMe отлично справляется с задачей. При попытке атаковать существо определённым оружием включается флаг, позволяющий "сделать что-то необычное", в т.ч. нанести доп.урон. Поскольку для отнятия здоровья неважно, будет урон физический или магический, я пока сделал добавление проклятия с последующим удалением через 1 сек.(в сжатом виде):short keeningHit ; объявление переменной обязательноIf ( status == 0 )Set keeningHit to HitOnMe KeeningSet status to 1endifIf ( status == 1 )if ( "ID существа"->HitOnMe, "ID уникального оружия" )"ID существа"->AddSpell "ID заклинания"Set status to 2endifendifСкрипт вещается на любое живое существо (не пробовал вешать на активаторы, но по идее, должно работать; например, ударил молотом по скале - скала разлетелась вдребезги и расчистила проход). Это полностью рабочий вариант: при ударе оружием существо получает доп. урон магией на 1 с. При следующем ударе всё повторяется.Если не удалять проклятие, оно будет висеть на существе до конца боя. Если оружием ударить другое существо, ничего не будет.Но что касается доп. физического урона, я опять затупил.Вроде как я понимаю, что оно должно выглядеть примерно как "set Damage to Damage + 10" ; но... как переменная/функция пишется в Морре? Как шифруется физ. урон? - пока не могу найти, туплю. ==========Вариант с HitOnMe полностью рабочий, но меня немножко смущает, что скрипт вешается на существо и, следовательно, затрагивает все копии. Если кто-то напишет на существо другой скрипт, конфликт неизбежен.Можно ли скрипт повесить на оружие (чтобы избежать конфликтов)? Экспериментирую.Рабочий вариант сжато выглядит прим. так:If ( status == 0 )if ( OnPCEquip == 1 ) ; чтобы работало только когда оружие экипировано; если оружие в инвентаре, работать не будетSet status to 1endifendifIf ( status == 1 )If ( Player->GetTarget "ID существа" == 1 )"ID существа"->AddSpell "ID заклинания"Set status to 2endifendifСкрипт вешается на оружие. GetTarget как раз работает только на определённом существе. Если этим оружием ударить другое существо, ничего не будет.Недостаток (серьёзный, на мой взгляд) этого варианта в том, что проклятие будет висеть до конца боя. Можно один раз ударить существо и потом бегать от него кругами, пока оно не умрёт. Отнять проклятие не получится. Скорее всего то же самое будет с физ. уроном.Следовательно, надо искать другие условия; например, отслеживать один-единственный удар. Но как? - я пока не нашёл.Предположительно, будет работать отслеживание по звуку удара (-?), но не могу найти, какие звуки прикручены к разным типам оружия.Кто-нибудь подскажет?Disable скрывает объект. Беседка спокойно вызывает disable в каждом кадре, что говорит о том, что там есть защита от скрывания уже скрытого объекта. Это вообще не то о чем нужно париться.===У второго варианта еще недостаток, что нельзя обратится к другой копии существа. Ну собственно решение есть как для первого варианта так и для вторго, главные вопросы это у тебя несколько копий существ? Скрипт точно неохота вешать на них? Почему бы не создать копию существ и уже на них повешать скрипт? Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 19 октября, 2020 Жалоба Поделиться Опубликовано 19 октября, 2020 Disable скрывает объект. Беседка спокойно вызывает disable в каждом кадре, что говорит о том, что там есть защита от скрывания уже скрытого объекта. Это вообще не то о чем нужно париться.Да я незнай, у меня ход мыслей простой: раз учебники рекомендуют Getdisabled/SetDelete, то я делаю. ==========У второго варианта еще недостаток, что нельзя обратится к другой копии существа. Ну собственно решение есть как для первого варианта так и для второго, главные вопросы это у тебя несколько копий существ? Скрипт точно неохота вешать на них? Почему бы не создать копию существ и уже на них повешать скрипт?Это должны быть дефолтные существа (их несколько копий, тех же крыс 137), а не новый уникальный монстр. Не очень хочется изменять дефолтных существ, поэтому пробую повесить скрипт на оружие - оно в любом случае будет уникальное и конфликтовать ни с чем не будет. У второго варианта еще недостаток, что нельзя обратится к другой копии существа. Не совсем понял, о чём именно речь. Нельзя обратиться к другой копии? - дак это и нужно. Когда я сражаюсь с одной крысой, доп.урон должен проходить только по ней, а вторая крыса вооон на том пригорке пострадать не должна.Я наоборот переживаю, что изменения могут затронуть все копии, и когда я сражаюсь с одной крысой, другая помрёт сама по себе - такого точно не надо. А может, проще не скриптовать на существе дополнительный урон, а баффать атаку игрока?А я уже делал так, в обеих вариантах - это рабочие способы.Можно увеличить атаку ГГ/повысить силу/навык, в результате физ.урон увеличится. Пусть ненамного, но увеличится. Но я тут плохо понимаю механику; например, я повысил атаку на 20n - а на сколько именно вырос урон, в цифровом выражении? Я увеличил силу/навык на 20n - а на сколько именно вырос урон, в цифровом выражении?Когда я вешаю доп. магический урон, я сразу вижу чёткие цифры и могу отредактировать спеллы/скрипт так, чтобы доп.урон не был бы слишком большим. В варианте "повысить атаку/силу/навык" итоговый результат мне не совсем понятен. Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 19 октября, 2020 Жалоба Поделиться Опубликовано 19 октября, 2020 (изменено) Да я незнай, у меня ход мыслей простой: раз учебники рекомендуют Getdisabled/SetDelete, то я делаю. ========== Это должны быть дефолтные существа (их несколько копий, тех же крыс 137), а не новый уникальный монстр. Не очень хочется изменять дефолтных существ, поэтому пробую повесить скрипт на оружие - оно в любом случае будет уникальное и конфликтовать ни с чем не будет. Не совсем понял, о чём именно речь. Нельзя обратиться к другой копии? - дак это и нужно. Когда я сражаюсь с одной крысой, доп.урон должен проходить только по ней, а вторая крыса вооон на том пригорке пострадать не должна.Я наоборот переживаю, что изменения могут затронуть все копии, и когда я сражаюсь с одной крысой, другая помрёт сама по себе - такого точно не надо. А я уже делал так, в обеих вариантах - это рабочие способы.Можно увеличить атаку ГГ/повысить силу/навык, в результате физ.урон увеличится. Пусть ненамного, но увеличится. Но я тут плохо понимаю механику; например, я повысил атаку на 20n - а на сколько именно вырос урон, в цифровом выражении? Я увеличил силу/навык на 20n - а на сколько именно вырос урон, в цифровом выражении?Когда я вешаю доп. магический урон, я сразу вижу чёткие цифры и могу отредактировать спеллы/скрипт так, чтобы доп.урон не был бы слишком большим. В варианте "повысить атаку/силу/навык" итоговый результат мне не совсем понятен. Ну раз точно неохота вешать скрипты, то урон и спелл повешать нельзя. Ты ни как не обратишься к конкретной крысе из скрипта на оружии, ни которую бьют, ни на пригорке. Просто rat->modcutrenthealth не будет работать с несколькими объектами. Тогда нужно придумывать другое, например увеличить атаку игроку, что повлияет на вероятность атаки, или силу. Можно спавнить перед игроком невидимый объект, который магией надамажит вокруг себя.Навык, эффект увел атаку на урон не влияют. Сила влияет на урон сложно, подробней тут:https://youtu.be/DFDmi_z1DPM Изменено 19 октября, 2020 пользователем Larkin Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 19 октября, 2020 Жалоба Поделиться Опубликовано 19 октября, 2020 Ну раз точно неохота вешать скрипты, то урон и спелл повешать нельзя.Неохота вешать скрипты на дефолтных существ (только если других вариантов не будет), а на оружие/шмотки - запросто. Ты ни как не обратишься к конкретной крысе из скрипта на оружии, ни которую бьют, ни на пригорке. Не согласен. GetTarget именно так и работает; я же писал несколько часов назад. Просто rat->modcutrenthealth не будет работать с несколькими объектами. Я ещё не трогал ModCurrentHealth; в чём её преимущества перед другими способами?И, напомню, мне не надо работать с несколькими копиями зараз. Или я, или ты чего-то недопонимаем. Или оба сразу .За видео спасибо, а... в письменном виде есть где почитать? Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 19 октября, 2020 Жалоба Поделиться Опубликовано 19 октября, 2020 Не согласен. GetTarget именно так и работает; я же писал [url=https://www.fullrest.ru/forum/topic/3058-tonkosti-skriptov/Вот ты спорщик а. Расскажешь потом, что вышло. Где то есть письменный вид, на тиаруме скорей всего. Ссылка на комментарий Поделиться на другие сайты Поделиться
Марк К. Марцелл Опубликовано 22 октября, 2020 Жалоба Поделиться Опубликовано 22 октября, 2020 Джентльмеры, подскажите. Реально ли заблокировать действие на игрока одного конкретного магического эффекта? Например, восстановления магии. Пьёт игрок зелье пополнения маны - ничего не происходит. Пьёт другое - снова ничего. Кастует амулетом - тоже ничего. Остальные эффекты действуют как положено. Ссылка на комментарий Поделиться на другие сайты Поделиться
aL☢ Опубликовано 22 октября, 2020 Жалоба Поделиться Опубликовано 22 октября, 2020 Да. 1 строчка в луа.Ну так напиши человеку какая. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти