Перейти к содержимому


Фотография
* * * * - 12 Голосов

Вопросы по плагиностроению

как создать торговца oblivion cs торговец cs как создать торговца oblivion моделирование

  • Авторизуйтесь для ответа в теме

#3641 Ссылка на это сообщение X-command

X-command
  • Следопыт
  • 70 сообщений

Отправлено

Здесь задавать вопросы по плагиностроению для Обливиона.

Тема по Обливиону. Тема по Морровинду тут.


<a href="http://profile.xfire.../xcommand"><img src="http://miniprofile.x...2/xcommand.png" border="0" class="linked-sig-image" /></a>
Сила - способность улыбаться © Белльмере-сан "One Piece"<img src="http://www.kolobok.u...zer/pirate.gif" border="0" class="linked-sig-image" />


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3724

#3642 Ссылка на это сообщение piramis

piramis
  • Талант
  • 242 сообщений
  •    

Отправлено

Так это считается только для расчёта износа экипировки. Попали низко - минус прочность ботинок. Урон же, вне зависимости от того, куда попали, гасится показателем брони. От хедшотов в TES не поиграешь попадание в голую голову снимает столько же ХП, как и попадание в грудь, защищённую кирасой.

Вот не уверен. Был у меня давний опыт по созданию обнаженных амазонок и суккубов, им из брони были выданы только сандалии, куда и были прописаны параметры полного сета брони. Однако такие враги очень быстро погибали. Пришлось всю концепцию изменить и выдавать полную броню в виде частей тел, закрывающих почти полностью фигуру персонажей, что получилось даже удобнее, так как можно кастомизировать внешность нипов, по мускулистости, телосложению, размеру груди, деманам и сатирам выдавать копыта или лапы и тому подобное. Вот в таком виде нипы оказались играбельны, хотя защиты головы у них все равно нет, как и у оригинальных бандитов и мародеров. до выдачи шлемов в виде модели головы как-то не дошло :)


Сообщение отредактировал piramis: 10 апреля 2024 - 19:38


#3643 Ссылка на это сообщение Takirell

Takirell
  • <~Broken Steel~>
  • 912 сообщений
  •    

Отправлено

Проблема: не понимаю как создать меню с разветвленным выбором

В общем, выкроил я чуть времени, вот что получилось... Вроде бы как работает, проверьте. Переменную sOpen использовал в качестве "отмычки" для каких-то дальнейших действий, т.к не оч понимаю - что у Вас там за дверь и как она открывается (анимированная или нет). Могу фрагменты кода и к этому добавить, если надо. Только объясните - какую модель двери используете.

 

У Вас все верно было написано, в принципе, только не хватало переменных и саб-переменных, чтобы отделять на трех кнопках варианты. Ну и, конечно же, эти гейм-моды... отучайтесь так делать, пожалуйста.
Вы должны понимать, что игре все равно, сколько раз Вы вызовете GetButtonPressed, под какими переменными и из какого по счету гейм-мода, она все равно будет считать кнопки от 1 до 10. И вот, как можете видеть, у нас всего 3 основных кнопки, но на каждую из них, с помощью переменных, я привязываю разный текст. "sSub" у нас служит для вариантов ответа из под других вариантов, но условие с ней располагается выше, чем проверка "sChoice", поскольку мы, как я уже сказал, вызываем еще одно меню с ответами из под меню с предыдущими ответами.

"sSys" - переменная, которая в целом отвечает за контроль меню и пока она больше нуля, игра проверяет - нажаты ли кнопки или нет.
Есть еще несколько вариантов, как написать этот скрипт, но я выбрал этот, т.к мне он показался более наглядным.

Надеюсь, логика более-менее понятна.
Не скажу, что скрипт сложный, просто надо правильно выстроить последовательность и не запутаться в переменных.


Ничто не истинно, все потрачено

#3644 Ссылка на это сообщение ArtemSH

ArtemSH
  • Следопыт
  • 67 сообщений
  •    

Отправлено

В общем, выкроил я чуть времени, вот что получилось... Вроде бы как работает, проверьте. Переменную sOpen использовал в качестве "отмычки" для каких-то дальнейших действий, т.к не оч понимаю - что у Вас там за дверь и как она открывается (анимированная или нет). Могу фрагменты кода и к этому добавить, если надо. Только объясните - какую модель двери используете.

 

У Вас все верно было написано, в принципе, только не хватало переменных и саб-переменных, чтобы отделять на трех кнопках варианты. Ну и, конечно же, эти гейм-моды... отучайтесь так делать, пожалуйста.
Вы должны понимать, что игре все равно, сколько раз Вы вызовете GetButtonPressed, под какими переменными и из какого по счету гейм-мода, она все равно будет считать кнопки от 1 до 10. И вот, как можете видеть, у нас всего 3 основных кнопки, но на каждую из них, с помощью переменных, я привязываю разный текст. "sSub" у нас служит для вариантов ответа из под других вариантов, но условие с ней располагается выше, чем проверка "sChoice", поскольку мы, как я уже сказал, вызываем еще одно меню с ответами из под меню с предыдущими ответами.

"sSys" - переменная, которая в целом отвечает за контроль меню и пока она больше нуля, игра проверяет - нажаты ли кнопки или нет.
Есть еще несколько вариантов, как написать этот скрипт, но я выбрал этот, т.к мне он показался более наглядным.

Надеюсь, логика более-менее понятна.
Не скажу, что скрипт сложный, просто надо правильно выстроить последовательность и не запутаться в переменных.

 

Спасибо большое, Такирелль!

Я использую модель sewerdoor01 (nif-file), которая соединяет двери комнат (не тоннелей) в канализации. Деревянная поднимающаяся дверь с овальной частью сверху. 

Я так понял я делаю много лишних блоков вместо одного, так что уже начал постепенно переписывать структуру скриптов  в моде чтобы было поменьше одинаковых блоков, чтоб не множить сущности.

Спасибо Вам еще раз! В своем скрипте я запутался в том, что именно делают мои переменные из-за чего как бы я ни бился, результата не было, только ошибки, а ваш действительно нагляден. Буду анализировать его и постигать науку скриптинга дальше :)

 


Сообщение отредактировал ArtemSH: 17 июня 2024 - 21:54

Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασ­σα αὐτῷ ὑπακούουσιν


#3645 Ссылка на это сообщение Takirell

Takirell
  • <~Broken Steel~>
  • 912 сообщений
  •    

Отправлено

Деревянная поднимающаяся дверь с овальной частью сверху.

Я тогда гляну на досуге и дополню скрипт.
А сам то он работает у Вас?
По поводу третьего Вашего вопроса - скиньте мне kf-анимацию 


Ничто не истинно, все потрачено

#3646 Ссылка на это сообщение ArtemSH

ArtemSH
  • Следопыт
  • 67 сообщений
  •    

Отправлено

Да, проверил. Работают варианты.  :good2: 

Скинул в ЛС


Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασ­σα αὐτῷ ὑπακούουσιν


#3647 Ссылка на это сообщение SisterlovingAltmer

SisterlovingAltmer
  • Форумный сестролюб
  • 43 сообщений
  •    

Отправлено

Вот не уверен. Был у меня давний опыт по созданию обнаженных амазонок и суккубов, им из брони были выданы только сандалии, куда и были прописаны параметры полного сета брони. Однако такие враги очень быстро погибали. Пришлось всю концепцию изменить и выдавать полную броню в виде частей тел, закрывающих почти полностью фигуру персонажей, что получилось даже удобнее, так как можно кастомизировать внешность нипов, по мускулистости, телосложению, размеру груди, деманам и сатирам выдавать копыта или лапы и тому подобное. Вот в таком виде нипы оказались играбельны, хотя защиты головы у них все равно нет, как и у оригинальных бандитов и мародеров. до выдачи шлемов в виде модели головы как-то не дошло :)

Вот кстати о броне в виде частей тел. Как, бездна подери, эту броню импортировать так, чтобы текстуры отображались? Текстуры тел Oblivion в упор почему-то не видит.


Сообщение отредактировал SisterlovingAltmer: 13 июля 2024 - 15:56


#3648 Ссылка на это сообщение piramis

piramis
  • Талант
  • 242 сообщений
  •    

Отправлено

Вот кстати о броне в виде частей тел. Как, бездна подери, эту броню импортировать так, чтобы текстуры отображались? Текстуры тел Oblivion в упор почему-то не видит.

В смысле "импортировать" ?  Просто положить в отдельную папочку (или в несколько папок) набор из частей тел от реплейсера, роберта для мужчин, hgec или роберта для женщин, и потом просто делаем броньки, используя их. Лично я сделал так :

 

Руки и ноги как перчатки и ботинки. Для кирас дополнительно добавляем параметры брони и прочности от щита (в этом качестве используем upper body), для понож добавляем параметры брони и прочности также от шлема (для них используем Lover_body. обычные или с набедрениками).

Иногда приходится делать часть тела/брони, соединенные вместе обувь и поножи, такое пришлось использовать для копыт.

 

Соответствие верхних частей тела мужских тел и женской груди у меня такое :

Boy- A

SLatH (легкоатлет) или Scrawny (стройный) - B

Defaulth - C

Musc (мускулистый) - D

HeavyMusc (тяжелоатлет) - E

 

Для нижних частей тела можно составлять пары вариантов для мужчин с эрекцией и без, для женщин нормальные бедра, узкие (под маленькую грудь), мускулистая lover_body, например от варианта EBE, которая будет более уместна с мускулистой верхней частью (обычно все женские upper_body имеют обычный вариант и мускулистый fight, но это уже на личный выбор, для нордов и орков подходит, для имперцев не очень, для редгардов более-менее, для эльфов категорически нет)

 

Мужские тела взяты из самого последнего реплейсера RM (Robert Male) 52/ (можно взять тут например https://tesall.club/...e-body-replacer)

 

С женскими немножко сложнее, так чтобы лежало все в одном месте, но вообщем есть, для HGEC даже два реплейсера есть, во втором (SetBody Reloaded Blockhead Edition) есть копыта, лапы, и адекватная грудь размера F (если оно конечно кому надо) но второй не совместим с множеством более ранних модов.


Сообщение отредактировал piramis: 14 июля 2024 - 12:48


#3649 Ссылка на это сообщение dizzy221

dizzy221
  • Новенький
  • 2 сообщений

Отправлено

Люди добрые помогите разобраться с плагином

https://tesall.club/...t-dlya-oblivion

 

Пытаюсь отключить повреждение запасу сил в этом плагине.

Не трудно догадаться что за спеллы дебафа отвечает этот кусок кода - 

скрин

Я не разбираюсь в моддинге CS, через TES4Edit я могу эффектам указать величину эффекта в 0, это решает проблему, но постоянный спам вверху что бафф/дебафф активирован и снят напрягает.

Я пытался убрать из скрипта этот кусок кода, но тогда спринт перестает работать. Как я понял, редактирование скриптов возможно только в рамках CS из за компиляции, но там у меня ничего не выходит и нет нормальных мануалов чтобы в этом быстро разобраться. 


Сообщение отредактировал dizzy221: 14 июля 2024 - 14:06


#3650 Ссылка на это сообщение IgorLutiy

IgorLutiy
  • Выбраковщик
  • 1 107 сообщений
  •    

Отправлено

Как я понял, редактирование скриптов возможно только в рамках CS из за компиляции, но там у меня ничего не выходит и нет нормальных мануалов чтобы в этом быстро разобраться.

Проблема в том, что на странице мода забыли указать, что ему нужен расширитель скриптов OBSE. И чтобы редактировать такие скрипты нужно CS запускать через OBSE (кажется так, сорри, запускал это дело в последний раз лет 10 назад, деталей уже не помню, а Обливиона под рукой нет). И далее просто редактируем скрипт и все. Надо убрать указанные фрагменты, не зацепив лишнего, от if WeightS < 5 до соответствующего ему endif. В обоих местах. Все должно работать, сложностей никаких нет, главное правильно запустить редактор с OBSE.


Мир друзьям - смерть врагам!

Мой новый сайт-блог: https://igorlutiy.pp.ua - как некое подведение итогов моей жизни в интернете

Мой профиль на Самиздате: http://samlib.ru/l/ljutyj_i/


#3651 Ссылка на это сообщение Takirell

Takirell
  • <~Broken Steel~>
  • 912 сообщений
  •    

Отправлено

Проблема в том, что на странице мода забыли указать, что ему нужен расширитель скриптов OBSE. И чтобы редактировать такие скрипты нужно CS запускать через OBSE (кажется так, сорри, запускал это дело в последний раз лет 10 назад, деталей уже не помню, а Обливиона под рукой нет). И далее просто редактируем скрипт и все. Надо убрать указанные фрагменты, не зацепив лишнего, от if WeightS < 5 до соответствующего ему endif. В обоих местах. Все должно работать, сложностей никаких нет, главное правильно запустить редактор с OBSE.

Ну или, совсем костыльный метод - убрать магнитуду у добавляемых эффектов поглощения запаса сил, не трогая скрипты вовсе.


Ничто не истинно, все потрачено

#3652 Ссылка на это сообщение dizzy221

dizzy221
  • Новенький
  • 2 сообщений

Отправлено

Проблема в том, что на странице мода забыли указать, что ему нужен расширитель скриптов OBSE. И чтобы редактировать такие скрипты нужно CS запускать через OBSE (кажется так, сорри, запускал это дело в последний раз лет 10 назад, деталей уже не помню, а Обливиона под рукой нет). И далее просто редактируем скрипт и все. Надо убрать указанные фрагменты, не зацепив лишнего, от if WeightS < 5 до соответствующего ему endif. В обоих местах. Все должно работать, сложностей никаких нет, главное правильно запустить редактор с OBSE.

ааа, спасибо, не знал что и CS тоже через OBSE надо запускать, попробую


Ну или, совсем костыльный метод - убрать магнитуду у добавляемых эффектов поглощения запаса сил, не трогая скрипты вовсе.

так я уже сделал но подбешивает постоянное уведомление об эффекте при нажатии на клавишу)



#3653 Ссылка на это сообщение холод

холод
  • Новенький
  • 10 сообщений

Отправлено

Доброго времени суток)Вопрос разработчикам модификаций для "The Elder Scrolls IV: Oblivion" есть возможность значительно модифицировать игру через редактирование  Oblivion. exe? И если да, то какой нужен софт? Я так понимаю данный файл отвечает за многие параметры игры. Искал информацию в сети, так ничего и не нашел(



#3654 Ссылка на это сообщение IgorLutiy

IgorLutiy
  • Выбраковщик
  • 1 107 сообщений
  •    

Отправлено

есть возможность значительно модифицировать игру через редактирование  Oblivion. exe? И если да, то какой нужен софт? Я так понимаю данный файл отвечает за многие параметры игры. Искал информацию в сети, так ничего и не нашел

Нет. Ида, олька, гидра - если вам эти слова ни о чем не говорят - забудьте про это (но если прям невтерперж, двигайтесь в направлении reverse engineering). Не отвечает, это просто исполнительный файл запуска игры.


Мир друзьям - смерть врагам!

Мой новый сайт-блог: https://igorlutiy.pp.ua - как некое подведение итогов моей жизни в интернете

Мой профиль на Самиздате: http://samlib.ru/l/ljutyj_i/


#3655 Ссылка на это сообщение холод

холод
  • Новенький
  • 10 сообщений

Отправлено

Нет. Ида, олька, гидра - если вам эти слова ни о чем не говорят - забудьте про это (но если прям невтерперж, двигайтесь в направлении reverse engineering). Не отвечает, это просто исполнительный файл запуска игры.

Благодарю за ответ,) Я думал что экзешник задает параметры физики поведение объектов в игре, отражений, света и прочего .Жаль тес 4 не самая плохая игра в серии свитков, но там  физика полное говно (особенно во время боя)



#3656 Ссылка на это сообщение ArtemSH

ArtemSH
  • Следопыт
  • 67 сообщений
  •    

Отправлено

Коллеги, приветствую.
 

Накопилось снова несколько вопросов. Буду рад помощи!
 

Вопрос 1. Есть ли функция, определяющая конкретного актора, который убил другого актора? В OSFM не обнаружил такой функции.
 

Контекст: один из вариантов решения квеста может быть убийство цели прямо без повода, то есть игрок может просто наброситься на цель без всякого разговора или подводки и убить её (вариант возможен до определенной стадии квеста). Проблема в том, что скрипт реагирует только на факт убийства, а не на того, кто именно его совершил. Пытался сделать через блок OnHit, но тогда каждый удар по персонажу заставляет игру лагать...и всё равно не работает)))
 

Вот скрипт на данный момент:

 


if (BrimBoDocksWorm.DuelBelf == 0) && BrimBoBelfREF.getdead == 1 ; && (BrimBoDocksWorm.WormChoice !=( 1 || 8 || 9 || 3) )
set BrimBoDocksWorm.WormChoice to 14


Я в нем забил на попытку обойти это ограничение. Переменная DuelBelf получает 1, когда игрок выбирает "правильные" варианты устранения цели по квесту, а если он решит убить цель вне срежиссированных ситуаций, то переменная WormChoice получит соответствующее значение, которое, в свою очередь, активирует при смерти цели стадию квеста "я убил цель средь бела дня".

Вопрос 2. Есть ли какой-либо triggerbox, который обозначал бы закрытую зону, прохождение по которой означало бы tresspassing для игрока?
 

Контекст: в таверне есть отдельная комната хозяина в той же ячейке (cell), здесь использована модель здания гильдии бойцов из Брумы, из-за чего возникает не-иммерсивная ситуация, когда можно спокойно завалиться в комнату к владельцу, и это никем не считается за проникновение.
 

Вопрос 3. Как сделать несколько персонажей, которые имели бы топик продажи комнаты в таверне, который, в свою очередь, появлялся бы у каждого из персонажей при определенном пакете ИИ?

 

Контекст: отец-владелец таверны иногда уходит на прогулку, его подменяет то один, то другой его сын. Соответственно на этот период действия пакета необходимо чтобы топик с продажей комнаты появлялся у сыновей, а в остальное время отсутствует.

Скрипт ренты комнаты в таверне брал из гайда: https://cs.uesp.net/...A_Room_Tutorial


Вопрос 4. Как стоило бы оптимизировать код чтобы обьекты которые появляются в определенные дни (переходят в состояние enable и обратно) не нагружали память? Вроде Артмур говорил. что такие переключения стакаются в сохранении, приводя к save bloat'у, поэтому этих переключений стоит избегать. если это так, то как стоит поступить? Сдвигать обьект и уменьшать в размерах?
 

Контекст: Раз в неделю на несколько дней в мое поселение "приезжают" корабли, которые активируют (enable) свою модель, пока игрока нет рядом. Я сперва написал код через gamemode блок, а затем попытался сделать кастомную функцию. Не знаю, что из этого лучше, а к этому добавилось и затруднение с памятью, описанное выше.

Скрипты такие:

scn BrimBoCommerceAArrival

float fQuestDelayTime

begin gamemode

Set fQuestDelayTime to 1
	if (GetDayOfWeek == 4) && (player.GetInSameCell BBShipCom1REF== 0)   && (GameHour >= 9) && (GameHour <= 12)
		BBShipCom1REF.enable 
		BBDoorCom1REF.enable

		if BBOrtangoREF.GetDisabled == 1 &&  BrimBoFeldiusREF.GetDisabled == 1   &&  BrimBoCalzioneREF.GetDisabled == 1  &&	BrimBoTulviaREF.GetDisabled == 1  &&	BrimBoTulviusREF.GetDisabled == 1  
			
	    BBOrtangoREF.enable
		BrimBoFeldiusREF.Enable
        BrimBoCalzioneREF.Enable
		BrimBoTulviaREF.Enable
			BrimBoTulviusREF.Enable
		endif

		call BrimBoSwapFunction
	endif

Параллельно с этим сделал функцию, но она не работала, поэтому в первом скрипте я раскоментировал enable персонажей.

scn BrimBoSwapFunction

int swap ; traders forcefully move to shp room or to market depending on day
int timer
short cooldown

begin function   {}
	
if GetDayOfWeek == 1
		let swap :=2
		elseif GetDayOfWeek == 4
		let swap :=1
	elseif (GetDayOfWeek != 1) || (GetDayOfWeek != 4)
		let swap:= 0
	endif

	if swap == 2 ; /// they MOVE to ship
		
 if  BrimBoTulviaREF.GetDistance BrimBoDEPARTURETradersREF < 35
		BrimBoTulviaREF.MoveTo BrimBoShipTraderMarkerREF
		endif
	 if	BrimBoTulviusREF.GetDistance BrimBoDEPARTURETradersREF < 35
		BrimBoTulviusREF.MoveTo BrimBoShipTraderMarkerREF
endif
	 if	BrimBoFeldiusREF.GetDistance BrimBoDEPARTURETradersREF < 35
		BrimBoFeldiusREF.MoveToMarker BrimBoShipTraderMarkerREF
endif
	 if	BrimBoCalzioneREF.GetDistance BrimBoDEPARTURETradersREF < 35
		BrimBoCalzioneREF.MoveToMarker BrimBoShipTraderMarkerREF
endif
	 if	BBOrtangoREF.GetDistance BrimBoDEPARTURETradersREF < 35
		BBOrtangoREF.MoveToMarker BrimBoShipTraderMarkerREF
endif
	endif


	if swap == 1 ; /// they MOVE to city
		
    set cooldown to 1
	set timer to timer + GetSecondsPassed

	if timer > 5
		BrimBoTulviaREF.MoveToMarker BrimBoDEPARTURETradersREF
	endif

	if timer > 10
		BrimBoTulviusREF.MoveToMarker BrimBoDEPARTURETradersREF
    endif

	if timer > 15
			BrimBoFeldiusREF.MoveToMarker BrimBoDEPARTURETradersREF
		endif
		
	if timer > 20
				BrimBoCalzioneREF.MoveToMarker BrimBoDEPARTURETradersREF
		endif
		
	if timer > 25
       BBOrtangoREF.MoveToMarker BrimBoDEPARTURETradersREF
	 endif


		 
	endif
	
	if timer >30
   set cooldown to 0
	endif
	
	if cooldown == 0
		set timer to 0
		endif
 
end

Вопрос 5. Как в нифскопе сменить ось вращения обьекта?
 

Контекст: взял обьект по адресу clutter\chandelierhook01.nif, а у него точка вращения где-то далеко от самой модели. Как её сместить? Если начинаю опускать обьект в  Nifskope, ось вращения опускается вместе с ним. Оперировать обьектом в редакторе CS совершенно невозможно.

Вопрос 6. Как сделать серию диалогов между нпс по скрипту? И по окончании диалога менялась бы стадия квеста. (вопрос о методе реализации, теоретически я понимаю как это делается, практически же не работает)

Контекст: После определенного топика в диалоге с нпс1 прямо в окне результирующего скрипта я прописал функцию startconversation SpecialTopicForTwo для нпс1 с нпс2. Первый нпс говорит свои слова, а второй нет, хотя в результирующем скрипте фразы нпс1 я написал такой же текст 
startconversation SpecialTopicForTwo (в топике прописаны фразы и первого и второго нпс).  Вместо этого первый нпс толкает и толкает свою речь по кругу....

Вот скрипт, сделанный уже через переменную, а не напрямую в результирующем окне диалога:

 

	; JAGER TO MARWEN


	if jagershocked == 1
	if brimbomarvenneref.getinsamecell BrimBoJagerref   
			BrimBoJagerref.StartConversation BrimBoMarvenneREF, BrimBoJagerSHoutToMarvTopic
			 
		endif
	;	endif
		endif


	if MarvenneShoutJager == 1
		BrimBoMarvenneREF.StartConversation BrimBoJagerref, BrimBoJagerSHoutToMarvTopic
	endif
	
	if JagerSaystoPlayer == 1
		BrimBoJagerref.StartConversation player, brimboJagerToPlayerTopic
	endif
	

ПС. Пытался сделать через SayTo, и это совершенно не работало. А startconversation хотя бы заставляет болванчиков действовать.

ППС. Попытался сделать через переменную, которая запускала бы алгоритм. Переменная активируется в результирующем окне диалога, а её тело прописано в скрипте квеста. Но так вообще перестало всё работать. Так же пробовал прописывать 
startconversation в стадии квеста (где было уместно), но так тоже ничего не работает.

Еще раз спасибо за помощь в работе над модификацией и в разъяснении трудностей! :)

 


Сообщение отредактировал ArtemSH: 05 августа 2024 - 19:18

Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασ­σα αὐτῷ ὑπακούουσιν


#3657 Ссылка на это сообщение piramis

piramis
  • Талант
  • 242 сообщений
  •    

Отправлено

Вопрос по поведению CS возник. 

Зачастую приходится копировать из одного мода в другой локации. Очевидно, если локация создана из стандартных элементов, она переносится без проблем, но затем, при загрузке активного мода снова CS обычно выкидывал кучу предупреждений, что такие-то объекты недоступны и удалены. Это про уровневые существа из мода-донора, которые естественно не могли быть перенесены. В последнее время таких предупреждений что-то нет, хотя работает все корректно, локация переносится, объекты из "донорского" мода адекватно удаляются, и на их место можно ставить уровневых персонажей из текущего мода.

Это не то чтобы проблема, но любые изменения того, что годами работало так, а стало иначе, настораживают конечно.



#3658 Ссылка на это сообщение Takirell

Takirell
  • <~Broken Steel~>
  • 912 сообщений
  •    

Отправлено

Вопрос 1. Есть ли функция, определяющая конкретного актора, который убил другого актора? В OSFM не обнаружил такой функции.

Блок OnDeath в помощь. Его нужно повесить на нужных НПС, но выглядеть это будет так:

Begin OnDeath Player
;Здесь условия и то, что должно произойти
End

После название блока, как Вы могли заметить, идет Player - игра понимает его, как убийцу. Заместо этого аргумента может быть кто угодно.

 

Вопрос 2. Есть ли какой-либо triggerbox, который обозначал бы закрытую зону, прохождение по которой означало бы tresspassing для игрока?

Конкретно в ваниле - не припоминаю, но Вы можете сами его создать и разместить, в чем проблема? Просто нужно будет повесить на него специальный скрипт, срабатывания которого ограничить переменной sDoOnce, например, возводить которую в "1" после того, как игрок встанет в триггер и сработает блок OnTriggerActor. А сбрасывать переменную (если это нужно) уже, скажем, в GameMode, после того, как игрок отойдет на какое-то расстояние от триггера. Или при иных условиях.

 

Вопрос 3. Как сделать несколько персонажей, которые имели бы топик продажи комнаты в таверне, который, в свою очередь, появлялся бы у каждого из персонажей при определенном пакете ИИ?

Создать новый топик и добавить в него условие в виде GetIsCurrentPackage с указанием в параметре условия пакета и выставление типа условия OR, вместо AND. Там есть флажки для этого. Ну и,  созданный топик нужно добавлять скриптом через AddTopic.

 

Вопрос 4. Как стоило бы оптимизировать код чтобы обьекты которые появляются в определенные дни (переходят в состояние enable и обратно) не нагружали память?

Хмм... чессказать, не слышал о таком. Да, я вижу, что код написан неверно и будет постоянно отдавать игре команду на включение\отключение, т.к, опять таки - нет проверок-ограничителей на выполнение тех или иных действий. Щас прям с ходу не исправлю, времени не особо...

 

Вопрос 6. Как сделать серию диалогов между нпс по скрипту?

Я использую SayTo, но с привязкой к таймеру. Ппж (хз когда), скину пример скрипта. Там, на самом деле, все оч просто.

P.S Если честно, то многие вещи мне было бы удобнее объяснить Вам в дискорде, например, с демонстрацией экрана, т.к это заняло бы в разы меньше времени, чем я буду все это пытаться расписывать и заливать скрины :D


Ничто не истинно, все потрачено

#3659 Ссылка на это сообщение ArtemSH

ArtemSH
  • Следопыт
  • 67 сообщений
  •    

Отправлено

Да, я только за дискорд. Будет вполне удобно :)

Спасибо! 

Блок OnDeath в помощь. Его нужно повесить на нужных НПС, но выглядеть это будет так:

Begin OnDeath Player
;Здесь условия и то, что должно произойти
End

После название блока, как Вы могли заметить, идет Player - игра понимает его, как убийцу. Заместо этого аргумента может быть кто угодно.

 

Конкретно в ваниле - не припоминаю, но Вы можете сами его создать и разместить, в чем проблема? Просто нужно будет повесить на него специальный скрипт, срабатывания которого ограничить переменной sDoOnce, например, возводить которую в "1" после того, как игрок встанет в триггер и сработает блок OnTriggerActor. А сбрасывать переменную (если это нужно) уже, скажем, в GameMode, после того, как игрок отойдет на какое-то расстояние от триггера. Или при иных условиях.

 

Создать новый топик и добавить в него условие в виде GetIsCurrentPackage с указанием в параметре условия пакета и выставление типа условия OR, вместо AND. Там есть флажки для этого. Ну и,  созданный топик нужно добавлять скриптом через AddTopic.

 

Хмм... чессказать, не слышал о таком. Да, я вижу, что код написан неверно и будет постоянно отдавать игре команду на включение\отключение, т.к, опять таки - нет проверок-ограничителей на выполнение тех или иных действий. Щас прям с ходу не исправлю, времени не особо...

 

Я использую SayTo, но с привязкой к таймеру. Ппж (хз когда), скину пример скрипта. Там, на самом деле, все оч просто.

P.S Если честно, то многие вещи мне было бы удобнее объяснить Вам в дискорде, например, с демонстрацией экрана, т.к это заняло бы в разы меньше времени, чем я буду все это пытаться расписывать и заливать скрины :D


Пοταπός ἐστιν οὗτος ὅτι καὶ οἱ ἄνεμοι καὶ ἡ θάλασ­σα αὐτῷ ὑπακούουσιν


#3660 Ссылка на это сообщение Takirell

Takirell
  • <~Broken Steel~>
  • 912 сообщений
  •    

Отправлено

Да, я только за дискорд

Можете добавляться: Takirell #5333


Ничто не истинно, все потрачено

#3661 Ссылка на это сообщение piramis

piramis
  • Талант
  • 242 сообщений
  •    

Отправлено

Предыдущий вопрос снят..разрешилось  :D

 

Но теперь по такой мелочи хотелось бы посоветоватся. У меня есть мод с новыми заклинаниями. Чтобы не добавлять их каждый раз через консоль ( тем более номер мода еще и постоянно меняется из-за CS, изменяющего другие моды) показалось удобным сделать специального торговца, и дом для нее, за пределами игрового мира (Лишний раз лезть в ячейки игрового мира пусть даже из-за такой мелочи тоже не охота, мало ли что где зацепится.)

 

А вот куда вывести дверь от него ? Вроде как магазин не особо и нужный, каждому персонажу туда разве один раз зайти. Опять где-то за пределами границ мира на опушке леса поставить загогулину и на нее навесить дверь внутрь. Но тогда вопрос- не сможет ли хозяйка пойти погулять ? У нее АИ-пакет один- постоянно быть дома и оказывать услуги, торговать, дом со всем содержимым принадлежит ей, за пределами дома сетки путей нет. 

======

 

Заодно поделюсь недавними наблюдениями за уровневыми списками заклинаний. Если в списке стоит пометка calculate from all levels, то выбирается заклинание оптимальное под уровень игрока или меньше его. Если же эта пометка не стоит, вражеский маг выбирает максимально лучшее. Всем известно, но тут есть два замечания :

 

- фактически, если посмотреть в CS, по многим листам путаница. Вроде как наилучшими должны быть левеледлисты с пометкой Lvl100, а без такой пометки- коректироватся под наш уровень, но к сожалению это не соблюдается, иногда даже наоборот, или чаще всего подобные листы одинаковы, и лист спеллов босса с пометкой lvl100 одинаков по калькуляции с листом обычных врагов, то есть босс не имеет никаких преимуществ в атаке против нашего протагониста и мало отличается от своих подчиненных (ну разве что шапку носит)

 

-видимо при выдаче заклинаний нипам из списка учитывается не уровень нашего персонажа, а уровень его владения в соответствующих школах магии, именно это и указано в графе уровней- 25, 75, 100. Однако возможно как-то учитывается и текущий уровень, так в эксперименте против игрового персонажа 25 уровня с владением колдовством 5 все равно два мага использовали призыв существ уровня ученика школы колдовства, у одного из них спелллст был помечен как Calculate from all levels <= PC's level, а у другого нет, мог использовать по максимуму.


Сообщение отредактировал piramis: 23 августа 2024 - 15:38






Темы с аналогичным тегами как создать торговца, oblivion cs торговец, cs как создать торговца, oblivion, моделирование

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых