Demolir.uptar Опубликовано 20 сентября, 2012 Опубликовано 20 сентября, 2012 Прошу помощи в создании скрипта. Основное назначение скрипта в подсчете времени, которое использует активатор в активном режиме. Более подробно: я "включаю" активатор-свечу и начинается отсчет времени, но мне нужно чтобы свеча "сгорела" только после 2 часов (дней) игрового времени. И самое главное: учитывается то условие, что я могу "задувать" свечу в процессе, т.е. вопрос - как отследить скриптом именно "рабочее время" свечи, а не с того момента как я "зажег" ее впервые? На вопрос какую команду использовать для отсчета, GetSecondsPassed (для реалтайма), или типа GameDaysPassed (игровое) - без разницы.
TES-Diesel modding Опубликовано 20 сентября, 2012 Опубликовано 20 сентября, 2012 (изменено) Такая проблема, игра " не видит" некоторые текстуры в игре. В нифскопе, КС все нормально, и в максе тоже. А в игре...крах. Вот они, афроамериканские черные: Закономерность: если выключить свет в КС, то текстуры пропадают, и становятся как в игре - чоорными. Изменено 20 сентября, 2012 пользователем Death The Kid Заходите в мой инстаграм @argunov.ceramic, я там посудку делаю :heart:
defmotion3 Опубликовано 20 сентября, 2012 Опубликовано 20 сентября, 2012 'Demolir.uptar' сказал(-а): Прошу помощи в создании скрипта. Основное назначение скрипта в подсчете времени, которое использует активатор в активном режиме. Более подробно: я "включаю" активатор-свечу и начинается отсчет времени, но мне нужно чтобы свеча "сгорела" только после 2 часов (дней) игрового времени. И самое главное: учитывается то условие, что я могу "задувать" свечу в процессе, т.е. вопрос - как отследить скриптом именно "рабочее время" свечи, а не с того момента как я "зажег" ее впервые? На вопрос какую команду использовать для отсчета, GetSecondsPassed (для реалтайма), или типа GameDaysPassed (игровое) - без разницы. Все равно какую, главное чтобы скрипт исполнялся независимо от объекта-свечи (такие скрипты работают только когда игрок в одной локации со свечей) т.е. просто вешаем скрипт на квест и там же управляем всем процессом (в том числе *скоростью* скрипта , т.к. по дефолту квестовые скрипты *медленноваты*. 'Raser0919' сказал(-а): Про использование массива прошу поподробней. Подробней надо самому читать , что означают и как работают команды ОБСЕ, могу показать только работающий скрипт: scn aaAIQQQ array_var qai short busy float tq int si begin menumode set busy to 1 end begin gamemode let tq+=getsecondspassed if tq>5||busy==1 let tq:=0 if qai let qai:=ar_null endif let si:=ar_size qai if si<0 let qai:=ar_construct array endif let qai:=GetHighActors ;собственно этой командой запоминаем в массив всех нпс в cell let si:=ar_size qai if si>0 printC"QAI SIZE==%0f"si endif set busy to 0 endif end
defmotion3 Опубликовано 20 сентября, 2012 Опубликовано 20 сентября, 2012 'Raser0919' сказал(-а): 4.Не пользуйтесь всегда глобальными скриптами(скрипты квестов). Если есть возможность используйте скрипты на предметах одежде и т.д. Потому что глобальные скрипты огромных размеров тратят очень много памяти. Тут в общем не хотелось бы спорить, но у скриптов на объектах и спеллах есть большой недостаток: Информация о референсах в них хранится очень короткое время, что может привести к вылетам, при обращении к ним, так же стопроцентный вылет если дать игроку два таких объекта (спелла)со скриптами, а также такие скрипты исполняются каждый фрейм, что тормозит ЦП, так уж лучше использовать больше памяти , чем время ЦП и падение фпс, кроме того предметы или атеры (ссылки на них) , которые хранятся в квестовых скриптах никогда не потеряются, к ним всегда можно обратиться из другого скрипта, что очень удобно.
Пакость Опубликовано 20 сентября, 2012 Опубликовано 20 сентября, 2012 Косо сохранены файлы текстур. Подбери правильные параметры сохранения DDS файлов
TES-Diesel modding Опубликовано 21 сентября, 2012 Опубликовано 21 сентября, 2012 Пересохранила, все равно так же. И модель через макс перегоняла. Все едино, нет изменений. Ума не приложу, в чем дела, раньше с такими косяками не встречалась. Заходите в мой инстаграм @argunov.ceramic, я там посудку делаю :heart:
Demolir.uptar Опубликовано 21 сентября, 2012 Опубликовано 21 сентября, 2012 ЦитатаВсе равно какую, главное чтобы скрипт исполнялся независимо от объекта-свечи Это понятно само собой, т.е. что на сам активатор вешать такой скрипт смысла нет. Но если в квестовом использовать скриптовый таймер по принципу set timer to timer - getsecondspassed, то он будет исполняться пока не истечет заданное время, т.е. временно заморозить его с запоминанием текущего показателя нельзя, можно только досрочно прервать. Единственное, что приходит пока в голову - это использовать 2 независимых скриптовых таймера и целые числа в качестве условий. Но этот вариант плох тем, что для его работы суммарное время в 2 часа придется дробить на участки минут по 20, и использовать постоянно "если-если" (If, elseif и т.д.). В ходе выполнения скрипта 2 таймера стартуют друг за другом, но используют то целочисленное, которое осталось от предыдущего, до тех пор пока все показатели не сведутся к нулю. Правда в итоге суммарное время уже не будет точно = 2 часам, а где-то около этого. В теории такой скрипт работать должен, но на практике...нужно проверять.
Raser Опубликовано 22 сентября, 2012 Опубликовано 22 сентября, 2012 'defmotion3' сказал(-а): Тут в общем не хотелось бы спорить, но у скриптов на объектах и спеллах есть большой недостаток: Информация о референсах в них хранится очень короткое время, что может привести к вылетам, при обращении к ним, так же стопроцентный вылет если дать игроку два таких объекта (спелла)со скриптами, а также такие скрипты исполняются каждый фрейм, что тормозит ЦП, так уж лучше использовать больше памяти , чем время ЦП и падение фпс, кроме того предметы или атеры (ссылки на них) , которые хранятся в квестовых скриптах никогда не потеряются, к ним всегда можно обратиться из другого скрипта, что очень удобно. Спасибо, это очень познавательно. Не знал, похоже и вправду верна пословица: "Век живи - век учись"
Raser Опубликовано 22 сентября, 2012 Опубликовано 22 сентября, 2012 'Demolir.uptar' сказал(-а): Как вариант, можно задать ссылку на назначаемую "горячую клавишу" не через условие в скрипте, а методом создания так называемого внешнего BatchScript. Это отдельный скриптовый файл в формате ini, который располагается в папке с игрой (обычно для этого создается отдельная папка INI), и содержит в себе информацию, которая будут использоваться определенным модом (на подобие этого работает Papyrus Script в Skyrim). Например, тело скрипта может содержать такую информацию: scn ScriptName long Key Begin GameMode if getgamerestarted RunBatchScript "Data\Ini\ModName.ini" ; запуск внешнего скрипта с указанием пути к нему endif if ( IsKeyPressed key ) ; здесь обычно выполняется нужное действие endif end В таком случае в баш-скрипте ModName.ini указывается информация о назначении клавиши: set QuestScript.key to 71 ; где QuestScript это QuestID, а 71 кодировка клавиши G (по таблице скан-кодов можно выбрать любую другую) ******** Возможно создание внешнего скрипта это не самый лучший вариант, но определенно заметно, что значительное количество скриптеров используют именно его. Тем более, что во внешнем скрипте можно задать далеко не только назначение "горячей клавиши". Она работает, просто для этой команды используются скан-коды клавиш Windows (Virtual-Key Codes), а для iskeypressed2 и 3 используются коды DirectX. Клавиши те же, но разная нумерация. Да, есть и такой способ. Но он немного неудобен потому что задавать клавишу через скан-код не удобно. Хотя да, этот тип задания тоже существует. Но в скриптах можно сделать и так, чтобы клавишу можно было менять когда захочешь, но это будет посложнее. У меня другой вопрос, как записывать информацию в ini файл через скрипт. Ну например id того оружия, которое использовалось?
Demolir.uptar Опубликовано 23 сентября, 2012 Опубликовано 23 сентября, 2012 'Raser0919' сказал(-а): У меня другой вопрос, как записывать информацию в ini файл через скрипт. Ну например id того оружия, которое использовалось? С помощью функций OBSE вероятно никак, поскольку Batch Script это больше своеобразный аналог .bat script, но конечно же не полноценный соперник Papyrus. Насколько мне известно, RunBatchScript используется лишь для запуска внешнего скрипта, но не для сохранения информации в нем http://cs.elderscrolls.com/index.php/Talk:RunBatchScript, т.е. внешний ini/txt служит как хранилище готовых исходников, которые будут использоваться определенным модом (или несколькими модами кстати). Однако есть такой интересный плагин для OBSE, как Pluggy, и у него есть свои функции (FileToString, UserFileExists, InFile и т.д.) для работы с внешними файлами. Я с ним не работал, но в некоторых модах (Name That Horse например) через скрипты производился экспорт данных в формат .dat и .txt. Так же есть плагин для OBSE под названием Sistem Dialog. Плаг крайне малоизвестный, но он позволяет экспортировать/импортировать данные во внешний формат .xml. Собственно перебрасывать можно все что угодно, вплоть до цифровых изображений. Есть мод на его основе Ingame Browser, позволяющий даже выходить в интернет (не покидая игры конечно).
Санек Опубликовано 27 сентября, 2012 Опубликовано 27 сентября, 2012 Решил в игре сделать свою книгу и интересует вопрос, какой размер изображения нужно сделать что бы в кс поставить на страницу книги картинку? Убей одного, и тебя назовут убийцей. Убей миллионы, и тебя назовут победителем. Убей всех, и будешь считаться богом.Нас окружает темнота. Мы должны научится двигаться в ней бесшумно и уверенно.Те, кто играют в игры дьявола, рано или поздно обнажают его меч.
JIyka Опубликовано 27 сентября, 2012 Опубликовано 27 сентября, 2012 Посмотрите ЗДЕСЬ Там описаны стандарты изображений: <FONT face=1> <DIV align="center"><IMG src="Book/pek/FR01/1.dds" width=480 height=512> (ширина и высота, соответственно)
Katze Siegie Опубликовано 27 сентября, 2012 Опубликовано 27 сентября, 2012 (изменено) Возникла вот такая проблеме. При создании собственного esp, я отмечаю oblivion.esm, нужные мне два мода и делаю активным свой. Но как только я его сохраняю и открываю снова мой esp, он теряет parent masters, кроме oblivion.esm. Я добавлял нужные esp и через Wrye Bash, и через TES4 Edit, но всё равно в следующий раз при открытии мой файл теряет их, и внесённые изменения пропадют. Что тут можно сделать? Нашёл решение. Перевёл нужные esp в псевдо-esm. Изменено 27 сентября, 2012 пользователем Siegfried88 Ein Volk, Ein Reich, Ein Katzen!
Санек Опубликовано 27 сентября, 2012 Опубликовано 27 сентября, 2012 'JIyka' сказал(-а): Посмотрите ЗДЕСЬ Там описаны стандарты изображений: <FONT face=1> <DIV align="center"><IMG src="Book/pek/FR01/1.dds" width=480 height=512> (ширина и высота, соответственно) Спасибо глянем. Убей одного, и тебя назовут убийцей. Убей миллионы, и тебя назовут победителем. Убей всех, и будешь считаться богом.Нас окружает темнота. Мы должны научится двигаться в ней бесшумно и уверенно.Те, кто играют в игры дьявола, рано или поздно обнажают его меч.
Raser Опубликовано 10 октября, 2012 Опубликовано 10 октября, 2012 'defmotion3' сказал(-а): Все равно какую, главное чтобы скрипт исполнялся независимо от объекта-свечи (такие скрипты работают только когда игрок в одной локации со свечей) т.е. просто вешаем скрипт на квест и там же управляем всем процессом (в том числе *скоростью* скрипта , т.к. по дефолту квестовые скрипты *медленноваты*. Подробней надо самому читать , что означают и как работают команды ОБСЕ, могу показать только работающий скрипт: scn aaAIQQQ array_var qai short busy float tq int si begin menumode set busy to 1 end begin gamemode let tq+=getsecondspassed if tq>5||busy==1 let tq:=0 if qai let qai:=ar_null endif let si:=ar_size qai if si<0 let qai:=ar_construct array endif let qai:=GetHighActors ;собственно этой командой запоминаем в массив всех нпс в cell let si:=ar_size qai if si>0 printC"QAI SIZE==%0f"si endif set busy to 0 endif end Я нашел более чудодейственный способ обработать всех npc в локации. scn allnpcwork ref actor short nums float fquestdelaytime begin gamemode set fquestdelaytime to 0.0001; самый быстрый тип квестового скрипта. set nums to getnumsref 69 if(nums > 0) set actor to getfirstref 69 nums while(actor) ; тут мы прописываем условия и работу актеров, например: ;if(actor.getdistance player < 150) ;actor.startcombat player ;endif loop set actor to getnextref else set actor to 0; выгружаем значение переменной actor если в локации нет ни одного персонажа. endif end Вполне рабочий способ, и менее громоздкий в отличие от массива, который просто записывает либо имена, либо количество npc но не помогает при нужде непосредственной работы с ними. 'Demolir.uptar' сказал(-а): Это понятно само собой, т.е. что на сам активатор вешать такой скрипт смысла нет. Но если в квестовом использовать скриптовый таймер по принципу set timer to timer - getsecondspassed, то он будет исполняться пока не истечет заданное время, т.е. временно заморозить его с запоминанием текущего показателя нельзя, можно только досрочно прервать. Единственное, что приходит пока в голову - это использовать 2 независимых скриптовых таймера и целые числа в качестве условий. Но этот вариант плох тем, что для его работы суммарное время в 2 часа придется дробить на участки минут по 20, и использовать постоянно "если-если" (If, elseif и т.д.). В ходе выполнения скрипта 2 таймера стартуют друг за другом, но используют то целочисленное, которое осталось от предыдущего, до тех пор пока все показатели не сведутся к нулю. Правда в итоге суммарное время уже не будет точно = 2 часам, а где-то около этого. В теории такой скрипт работать должен, но на практике...нужно проверять. Зачем так утруждать? Есть более проверенный способ. Сначала я расскажу немного теории, но потом от теории к практике. Вот создали активатор-свечу. Например дали ей referenceid mylight. Теперь же необходимо сделать так, чтобы свеча горела, то есть активатор горел и сгорал когда нужно, ну скажем через 2 часа. Но при этом нужно еще сделать так, чтобы учитывалось и задувание свечи. Нам понадобятся две переменных. 1-я пусть будет time а 2-я пусть будет timermult. Обе формата float. То есть с плавающей запятой, но не об этом я. Дело в том, что ты использовал один таймер, но надеялся что этот таймер будет правильно работать, но с задуванием свечи он аннулируется. Так чтобы не было такого, тебе нужно проверять сколько времени прошло, ну предположим time это таймер основной. То есть теперь сделаем так, чтобы была еще одна переменная, которая говорит сколько времени осталось. Это и будет переменной timermult. Определяем легко, то есть каждую секунду таймер будет отсчитываться от основного времени, тем самым сокращая основное время. timermult - timer. Это будет делаться только пока горит свеча, ну а если она потухла, это значит что таймер не отсчитывается. Легче будет показать на примере: scn timer float time float timer float timermult short onlight float fquestdelaytime; ты же через квест делать собрался? begim gamemode set fquestdelaytime to 0.001 if(mylight.isactionref == player) && (onlight == 0) ;определяем активированная ли свеча set onight to 1;степень включености свечи: 1, 2-включена, 0, 3-выключена endif if(onlight == 1) set timermult to 7200; это количество секунд равная реальным 2-м часам, ну это я для примера, а так вместо 7200 пиши что хочешь set onlight to 2 endif if(onlight == 2) set time to time + getsecondspassed if(time < timermult) set timer to timermult - time ; а вот тут ты пишешь основной скрипт, который определяет горение свечи, короче делаешь визуальную картинку из своего скрипта. endif endif If(timer == 0) ; то есть хана пришла, свеча сгорела set onlight to -1 ; все, свеча сгорела, скрипт тоже. return endif if(onlight == 2) && (mylight.isactionref == player); это выключение свечи set timermult to timer ;Вот тут ты пишешь выключение своей свечи, просто команду убирания пламени забыл set onlight to 5 endif ;Скрипт будет настолько быстро работать что активация приведет к одновременному включению выключению свечи, это как предосторожность if(onlight == 5) set timerlig to timerlig + getsecondspassed if(timerlig > 0.5) set onlight to 3 set timerlig to 0 endif if(onlight == 3) && (mylight.isactionref == player);это включение повторно своей свечи. set onlight to 6 endif ;Скрипт будет настолько быстро работать что активация приведет к одновременному включению выключению свечи, это как предосторожность if(onlight == 6) set timerlig to timerlig + getsecondspassed if(timerlig > 0.5) set onlight to 2 set timerlig to 0 endif end Вроде бы все. Не мультипость!
Demolir.uptar Опубликовано 19 октября, 2012 Опубликовано 19 октября, 2012 'Raser0919' сказал(-а):Зачем так утруждать? Есть более проверенный способ. Спасибо, но мне уже давно ответили в другой теме. Там скрипт намного короче, и тем не менее результативен.
TES-Diesel modding Опубликовано 15 декабря, 2012 Опубликовано 15 декабря, 2012 Что-то не так с некоторыми моделями (а может быть, с текстурами). Фишка в том, что в КС при включенном автоосвещением не видно этих черных текстур, а в игре - видно. Они самоэкспортированы из макса, наверное, в этом вся проблема. Вот, гардины на занавесках чеерные: http://s47.radikal.ru/i117/1212/fa/43cd7336a1b1.png И так с некоторыми мелкими деталями. Помогите, пожалуста! Т_Т Заходите в мой инстаграм @argunov.ceramic, я там посудку делаю :heart:
gkalian Опубликовано 15 декабря, 2012 Опубликовано 15 декабря, 2012 Я, конечно, не особо уверен, но может быть в моделях в BSLightingShaderProperty все цвета черные? Это через нифскоп смотрится. Haem Projects — Discord — Patreon
TES-Diesel modding Опубликовано 15 декабря, 2012 Опубликовано 15 декабря, 2012 Эээ...а где это можно посмотреть? http://i064.radikal.ru/1212/84/16bb244d864d.jpg Вообще, это во втором доме такие проблемы... Срез покрывала на кровати также черный. Виноваты наверное настройки экспорта из макса. Вот здесь видно: http://i037.radikal.ru/1212/3c/350c7f8a8d60.png П.С. превью выложить на могу, поэтому скрин через ссылку... Заходите в мой инстаграм @argunov.ceramic, я там посудку делаю :heart:
gkalian Опубликовано 15 декабря, 2012 Опубликовано 15 декабря, 2012 Определенно структура нифа неправильная, совершенно неправильная, я бы сказал ужасная. А, это же Обливион, тут иначе немного. На значки со словами Material нажмите, выкрутите на светлые участки, хотя бы все, кроме нижнего левого (он, емнип, может быть темным). Haem Projects — Discord — Patreon
TES-Diesel modding Опубликовано 15 декабря, 2012 Опубликовано 15 декабря, 2012 Всяко попробовала. Эти черные дыры как были, так и остались... http://s017.radikal.ru/i413/1212/c7/31673c436c10.png Ах, да, не я делала модель, поэтом не знаю, что за настройки были использованы при экспорте. Заходите в мой инстаграм @argunov.ceramic, я там посудку делаю :heart:
gkalian Опубликовано 15 декабря, 2012 Опубликовано 15 декабря, 2012 Возможно, дело в вертекс-вершинах, иногда они окрашиваются в другой цвет, хм. Правда тут уже надо более профессиональных людей спрашивать, я не много не в курсе, но вообще через нифскоп их можно сбросить, правда я не помню как, увы. Haem Projects — Discord — Patreon
CrazyHackGUT Опубликовано 17 декабря, 2012 Опубликовано 17 декабря, 2012 (изменено) Делаю свой первый мод и заступорился на скрипте :nea: Делаю банк крови. Там меняешь часть жизни (75%) на деньги (неплохая сумма, 25 000 монеток). Деньги я могу давать: Player.AddItem 0000000f 25000 Но мне надо забрать жизнь (75%, как уже говорилось) и ещё наложить заклятие, которое не даёт снова взять денег 1 неделю. Не подскажете скрипт? Если нужен OBSE, так и скажите новобранцу. Тем более который впервые пишет скрипты ;) :lol Буду премного благодарен. P.S. Если нужен исходник скрипта, даю только в ЛС. В Аську (617161763) или в Скайп (HackGUT) Изменено 17 декабря, 2012 пользователем HackGUT
TES-Diesel modding Опубликовано 9 января, 2013 Опубликовано 9 января, 2013 (изменено) Эм...народ. Столкнулась с проблемой (пожалуй, начну сначала) Первым делом продублировала расу Альдмеров, заменила модель головы на н06 и поставила соответствующую текстуру. На ГГ этой расы смотрится вполне приемлемо: А теперь...Пробуем заменить расу на новую у какого-либо непися, итог: Напрашивается вопрос - почему остаются такие следы и что делать? UPD Странное дело. Стоило только продублировать непися и заменить его расу на новую, лицо становится...хоть и не красивым, но без всяких там разводьев по моське. Но...так каждого непися заменять - это же конфликтов не оберешься! Ах да. Ползунки все двигала, следы не убираются. Изменено 9 января, 2013 пользователем Death The Kid Заходите в мой инстаграм @argunov.ceramic, я там посудку делаю :heart:
bo1ook Опубликовано 9 января, 2013 Опубликовано 9 января, 2013 (изменено) 09.01.2013 03:00:37, Death The Kid сказал(-а):Эм...народ. Столкнулась с проблемой (пожалуй, начну сначала) Первым делом продублировала расу Альдмеров, заменила модель головы на н06 и поставила соответствующую текстуру. На ГГ этой расы смотрится вполне приемлемо: А теперь...Пробуем заменить расу на новую у какого-либо непися, итог: Напрашивается вопрос - почему остаются такие следы и что делать? UPD Странное дело. Стоило только продублировать непися и заменить его расу на новую, лицо становится...хоть и не красивым, но без всяких там разводьев по моське. Но...так каждого непися заменять - это же конфликтов не оберешься! Ах да. Ползунки все двигала, следы не убираются. Проблема скорее всего в фалах фейсегена.Или в .egt файле головы. Изменено 9 января, 2013 пользователем bo1ook
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти