Здесь задавать вопросы по плагиностроению для Обливиона.
Тема по Обливиону. Тема по Морровинду тут.
Вопросы по плагиностроению
#1281
Отправлено
Сила - способность улыбаться © Белльмере-сан "One Piece"<img src="http://www.kolobok.u...zer/pirate.gif" border="0" class="linked-sig-image" />
#1282
Отправлено
#1283
Отправлено
Все равно какую, главное чтобы скрипт исполнялся независимо от объекта-свечи
Это понятно само собой, т.е. что на сам активатор вешать такой скрипт смысла нет. Но если в квестовом использовать скриптовый таймер по принципу set timer to timer - getsecondspassed, то он будет исполняться пока не истечет заданное время, т.е. временно заморозить его с запоминанием текущего показателя нельзя, можно только досрочно прервать. Единственное, что приходит пока в голову - это использовать 2 независимых скриптовых таймера и целые числа в качестве условий. Но этот вариант плох тем, что для его работы суммарное время в 2 часа придется дробить на участки минут по 20, и использовать постоянно "если-если" (If, elseif и т.д.). В ходе выполнения скрипта 2 таймера стартуют друг за другом, но используют то целочисленное, которое осталось от предыдущего, до тех пор пока все показатели не сведутся к нулю. Правда в итоге суммарное время уже не будет точно = 2 часам, а где-то около этого. В теории такой скрипт работать должен, но на практике...нужно проверять.
#1284
Отправлено
Тут в общем не хотелось бы спорить, но у скриптов на объектах и спеллах есть большой недостаток:
Информация о референсах в них хранится очень короткое время, что может привести к вылетам, при обращении к ним, так же стопроцентный вылет если дать игроку два таких объекта (спелла)со скриптами,
а также такие скрипты исполняются каждый фрейм, что тормозит ЦП,
так уж лучше использовать больше памяти , чем время ЦП и падение фпс,
кроме того предметы или атеры (ссылки на них) , которые хранятся в квестовых скриптах никогда не потеряются, к ним всегда можно обратиться из другого скрипта, что очень удобно.
Спасибо, это очень познавательно. Не знал, похоже и вправду верна пословица: "Век живи - век учись"
#1285
Отправлено
Как вариант, можно задать ссылку на назначаемую "горячую клавишу" не через условие в скрипте, а методом создания так называемого внешнего 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 того оружия, которое использовалось?
#1286
Отправлено
У меня другой вопрос, как записывать информацию в ini файл через скрипт. Ну например id того оружия, которое использовалось?
С помощью функций OBSE вероятно никак, поскольку Batch Script это больше своеобразный аналог .bat script, но конечно же не полноценный соперник Papyrus. Насколько мне известно, RunBatchScript используется лишь для запуска внешнего скрипта, но не для сохранения информации в нем http://cs.elderscrol...:RunBatchScript, т.е. внешний ini/txt служит как хранилище готовых исходников, которые будут использоваться определенным модом (или несколькими модами кстати).
Однако есть такой интересный плагин для OBSE, как Pluggy, и у него есть свои функции (FileToString, UserFileExists, InFile и т.д.) для работы с внешними файлами. Я с ним не работал, но в некоторых модах (Name That Horse например) через скрипты производился экспорт данных в формат .dat и .txt.
Так же есть плагин для OBSE под названием Sistem Dialog. Плаг крайне малоизвестный, но он позволяет экспортировать/импортировать данные во внешний формат .xml. Собственно перебрасывать можно все что угодно, вплоть до цифровых изображений. Есть мод на его основе Ingame Browser, позволяющий даже выходить в интернет (не покидая игры конечно).
#1287
Отправлено
Нас окружает темнота. Мы должны научится двигаться в ней бесшумно и уверенно.
Те, кто играют в игры дьявола, рано или поздно обнажают его меч.
#1289
Отправлено
Нашёл решение. Перевёл нужные esp в псевдо-esm.
Сообщение отредактировал Siegfried88: 27 сентября 2012 - 21:20
#1290
Отправлено
Посмотрите ЗДЕСЬ
Там описаны стандарты изображений:
<FONT face=1>
<DIV align="center"><IMG src="Book/pek/FR01/1.dds" width=480 height=512> (ширина и высота, соответственно)
Спасибо глянем.
Нас окружает темнота. Мы должны научится двигаться в ней бесшумно и уверенно.
Те, кто играют в игры дьявола, рано или поздно обнажают его меч.
#1291
Отправлено
Все равно какую, главное чтобы скрипт исполнялся независимо от объекта-свечи (такие скрипты работают только когда игрок в одной локации со свечей)
т.е. просто вешаем скрипт на квест и там же управляем всем процессом (в том числе *скоростью* скрипта , т.к. по дефолту квестовые скрипты *медленноваты*.
Подробней надо самому читать , что означают и как работают команды ОБСЕ,
могу показать только работающий скрипт:
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 но не помогает при нужде непосредственной работы с ними.
Это понятно само собой, т.е. что на сам активатор вешать такой скрипт смысла нет. Но если в квестовом использовать скриптовый таймер по принципу 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
Вроде бы все.
#1292
Отправлено
Зачем так утруждать? Есть более проверенный способ.
Спасибо, но мне уже давно ответили в другой теме. Там скрипт намного короче, и тем не менее результативен.
#1293
Отправлено
Что-то не так с некоторыми моделями (а может быть, с текстурами).
Фишка в том, что в КС при включенном автоосвещением не видно этих черных текстур, а в игре - видно.
Они самоэкспортированы из макса, наверное, в этом вся проблема.
Вот, гардины на занавесках чеерные:
http://s47.radikal.r...3cd7336a1b1.png
И так с некоторыми мелкими деталями.
Помогите, пожалуста! Т_Т
#1294
Отправлено
Я, конечно, не особо уверен, но может быть в моделях в BSLightingShaderProperty все цвета черные? Это через нифскоп смотрится.
#1295
Отправлено
Эээ...а где это можно посмотреть?
http://i064.radikal....6bb244d864d.jpg
Вообще, это во втором доме такие проблемы...
Срез покрывала на кровати также черный. Виноваты наверное настройки экспорта из макса.
Вот здесь видно:
http://i037.radikal....50c7f8a8d60.png
П.С. превью выложить на могу, поэтому скрин через ссылку...
#1296
Отправлено
Определенно структура нифа неправильная, совершенно неправильная, я бы сказал ужасная.
А, это же Обливион, тут иначе немного.
На значки со словами Material нажмите, выкрутите на светлые участки, хотя бы все, кроме нижнего левого (он, емнип, может быть темным).
#1297
Отправлено
Всяко попробовала.
Эти черные дыры как были, так и остались...
http://s017.radikal....1673c436c10.png
Ах, да, не я делала модель, поэтом не знаю, что за настройки были использованы при экспорте.
#1298
Отправлено
Возможно, дело в вертекс-вершинах, иногда они окрашиваются в другой цвет, хм. Правда тут уже надо более профессиональных людей спрашивать, я не много не в курсе, но вообще через нифскоп их можно сбросить, правда я не помню как, увы.
#1299
Отправлено
Делаю свой первый мод и заступорился на скрипте
Делаю банк крови. Там меняешь часть жизни (75%) на деньги (неплохая сумма, 25 000 монеток). Деньги я могу давать:
Player.AddItem 0000000f 25000
Но мне надо забрать жизнь (75%, как уже говорилось) и ещё наложить заклятие, которое не даёт снова взять денег 1 неделю. Не подскажете скрипт? Если нужен OBSE, так и скажите новобранцу. Тем более который впервые пишет скрипты :lol
Буду премного благодарен.
P.S. Если нужен исходник скрипта, даю только в ЛС. В Аську (617161763) или в Скайп (HackGUT)
Сообщение отредактировал HackGUT: 17 декабря 2012 - 17:52
#1300
Отправлено
Эм...народ. Столкнулась с проблемой (пожалуй, начну сначала)
Первым делом продублировала расу Альдмеров, заменила модель головы на н06 и поставила соответствующую текстуру.
На ГГ этой расы смотрится вполне приемлемо:
А теперь...Пробуем заменить расу на новую у какого-либо непися, итог:
Напрашивается вопрос - почему остаются такие следы и что делать?
UPD
Странное дело. Стоило только продублировать непися и заменить его расу на новую, лицо становится...хоть и не красивым, но без всяких там разводьев по моське. Но...так каждого непися заменять - это же конфликтов не оберешься!
Ах да. Ползунки все двигала, следы не убираются.
Сообщение отредактировал Death The Kid: 09 января 2013 - 07:45
#1301
Отправлено
Эм...народ. Столкнулась с проблемой (пожалуй, начну сначала)
Первым делом продублировала расу Альдмеров, заменила модель головы на н06 и поставила соответствующую текстуру.
На ГГ этой расы смотрится вполне приемлемо:
А теперь...Пробуем заменить расу на новую у какого-либо непися, итог:
Напрашивается вопрос - почему остаются такие следы и что делать?
UPD
Странное дело. Стоило только продублировать непися и заменить его расу на новую, лицо становится...хоть и не красивым, но без всяких там разводьев по моське. Но...так каждого непися заменять - это же конфликтов не оберешься!
Ах да. Ползунки все двигала, следы не убираются.
Проблема скорее всего в фалах фейсегена.Или в .egt файле головы.
Сообщение отредактировал bo1ook: 09 января 2013 - 23:02
Темы с аналогичным тегами как создать торговца, oblivion cs торговец, cs как создать торговца, oblivion, моделирование
Моддинг →
Моддинг Oblivion →
Какие файлы в моде отвечают за изменение лиц и заставку в меню игры Oblivion?Автор AlexisUmbra, 06 апр 2024 oblivion, tes 4, tes 4 oblivion и 5 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Моды Oblivion →
Каковы правила загрузки модов на сайт?Автор AlexisUmbra, 04 мар 2024 моды, обливион, tes и 2 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Моды Oblivion →
Где можно заказать сборку?Автор KiritoSwords, 03 апр 2023 сборка на заказ и 2 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Обсуждение Oblivion →
Чемпион Сиродила между TES4 и TES5Автор PavelIks, 26 янв 2022 oblivion, tes и 1 еще... |
|
|||
The Elder Scrolls →
Oblivion →
Обсуждение Oblivion →
ШРИФТЫ ИЗ ИГРЫАвтор ALexid, 20 дек 2021 шрифт, oblivion |
|
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 скрытых