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


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

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


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

#221 Ссылка на это сообщение Язoн

Язoн
  • 1 364 сообщений
  •    

Отправлено

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


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

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


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

#222 Ссылка на это сообщение Niko_Valer

Niko_Valer
  • Новенький
  • 7 сообщений
  •    

Отправлено

Не пойму как написать следующий скрипт:

Есть сундук, в котором нет вещей. Игрок нацеливается и активирует пробелом onActivate этот сундук.

При активации появляется message box "Вы нашли в сундук объект", объект попадает в инвентарь.

При повторном нажатии на сундук должна появиться message box "Сундук пуст".

Для понимания объясняю что в сундук не надо залазить и перетаскивать вещь в инвентарь, так как там её все равно нет.

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

Скрипт:

Begin abc

Short AA

If ( onActivate ==1)

If ( AA == 0)

Set AA to 1

Player -> AddItem, "Item ID", 1

Messagebox "вы получили предмет"

Endif

Endif

If ( GetItemCount, "Item ID" >= 1)

Messagebox "сундук пуст"

Endif

End

#223 Ссылка на это сообщение Пакость

Пакость
  • ⊛⇖⇧⇧⇓⇖⇗⇛⊜← = ☕

  • 4 011 сообщений
  •    

Отправлено

Потому что не играет уже больше никто в Морру...
но к коням
"GetItemCount" какого места в сём фентезийном мире?
Вот и напиши
If(AA == 1)
Messagebox "сундук пуст"
Endif

#224 Ссылка на это сообщение ZWolol

ZWolol
  • Авантюрист
  • 138 сообщений
  •    

Отправлено

в морку играют, но мало, а авторов еще меньше...

 

Begin abc

 

Short AA

 

if ( onActivate )

if ( AA == 0)

Set AA to 1

Player -> AddItem, "Item ID", 1

Messagebox "вы получили предмет"

else

Messagebox "сундук пуст"

endif

endif

 

End



#225 Ссылка на это сообщение hzhzhz

hzhzhz
  • Аватар пользователя hzhzhz
  • Следопыт
  • 89 сообщений
  •  

Отправлено

Доброго здравия ZWolol жду исправления следующих ошибок, заранее спасибо, вот ссылка:

https://tesall.ru/to...61#entry1580532



#226 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

А вот и нуб с нубским вопросом.

 

Сделала начало квеста в конструкторе, и оно работает. Непись взаимодействует с игроком, как задумано.

 

Проблема в том, что работать мой плужик вроде как не должен — прочла в руководстве, что каждый выбор — Choice — в диалоге с одним NPC должен иметь свой собственный номер (он же АйДи, как я поняла).

Я вызывала свои готовые чойсы с номерами 2, 3 и 4  как ответы в разных ветках диалога вместо того, чтобы писать новый ответ с новым номером.

 

Вот схема:

 

Зачем я разрисовала её вырвиглазными цветами? Чтобы было видно, что в поле Info у меня все ответы располагаются выше вопросов: например, Реплика 7, вызываемая чойсом 4, выше Реплик 2 и 5, на которые служит ответом.

 

Вот как это разворачивается в игре:

Ещё одна схема. Простите.

 

Ниубивайте миня.

Я хочу разобраться, почему это работает (если память не изменяет, в самом КС я видела подобное использование готовых чойсов в качестве ответа на новую реплику), должно ли это вообще работать, и если нет, то к каким багам это может привести.

Может, я тупо не поняла правило насчет нумерации чойсов, и оно не накладывает ограничение на использование уже готовых пронумерованных чойсов? То есть, в окне результатов диалога номера МОГУТ повторяться, если тебе нужно вызвать уже готовый ответ?

 

Использовала только мастерфайлы Morrowind.esm и Tribunal.esm.

Непися тестировала с подключенным  GFM_1C  второй версии  и с отключенным.



#227 Ссылка на это сообщение ZWolol

ZWolol
  • Авантюрист
  • 138 сообщений
  •    

Отправлено

Все ответы с чойсами должны быть выше стартового диалога.

ты указываешь любые номера чойсов для каждого ответа

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

 

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

даже может быть два диалога с чойс 1, но с разными условиями

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

 

разные ответы могут иметь одинаковые чойсы

например: не знаю 4, подумаю 4, (4 значит приходи завтра).



#228 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

>> ZWolol

Спасибо, мастер! Аригато, сэмпай! ) Действительно очень рада, что не требуется загромождать Инфо ненужными дублями.



#229 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

Пытаюсь определить созвездие игрока, модифицировав способ, предложенный Mortuus'ом.

 

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

- есть глобальная переменная, глобальный скрипт и локальный,

- локальный повешен на бочку для тестирования,

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

Вот оба скрипта на картинке, глобальный и локальный соответственно:

image.png

 

Что получается:

1) Меняю консолью знак на Башню, активирую бочку, получаю мессадж "Башня", последующие мессаджи тоже "Башня".

2) Меняю знак на Воина, активирую бочку, первый мессадж опять "Башня", последующие "Воин".

3) Меняю на Башню, активирую бочку, первый мессадж "Воин", последующие - "Башня".

Всё это  — без перезагрузок.

Предполагаю, на этапе 2) первый, неверный мессадж я получаю потому, что глобальная переменная уже встала в 1, а на этапе 2), соответственно, потому что переменная встала в 2. (?)

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

И главное, почему, если я ставлю блок условий с мессаджами НАВЕРХ, перед блоком со стартом скрипта, всё работает без сбоев.

Если не лень, проясните для меня этот момент, пожалуйста, я чувствую, что вчухивание в него должно вести к просветлению и продвижению в скриптописании.

 

Второй вопрос:

Манипуляции с введением доп. характеристик в бонусы созвездий ожидаемо приводят к тому, что меню знаков рождения отображает эти характеристики, типа так:

image.png

Получается, что Сокуциус Эргалла врёт игроку о знаках. Это не очень этично с его стороны, да.

Если я правильно поняла смысл предложения  Mortuus'а "заменяем этими характеристиками существующие бонусы знаков", результат будет тот же — левые характеристики, отображаемые в меню.

Альтернативных способов записать ВСЕ СОЗВЕЗДИЯ в глобальную переменную я не нагуглила, уже с неделю утопая в страницах типа "С днем рождения, Петя!" и предложениях установить моды, меняющие созвездия.

Поэтому, если вам есть куда ткнуть меня носом, ткните.



#230 Ссылка на это сообщение ZWolol

ZWolol
  • Авантюрист
  • 138 сообщений
  •    

Отправлено

StartScript - не запускает скрипт, а только его активирует.

Следовательно, нужна пауза для его выполнения.

 

Если б у тебя вместо закомментированной Activate стоял бы Return, то вторая часть скрипта выполнилась бы в следующем фрейме (тогда глобальный бы уже сработал).

Аналогично, когда ты переносишь проверку перед StartScript, скрипт устанавливает state и заканчивается, и эта проверка выполнится в следующем фрейме.

 

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



#231 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

Спасибо! :)

Что технически лучше - поставить Return или поменять местами блоки? Если бы блоков с проверкой глобальной переменной было много — машине было бы проще выполнить Return, а после проверить переменную? Или все же лучше сначала проверять блоки с проверкой переменной и обходиться без Return-а? (Боюсь я им злоупотреблять. Подозрительный он).

 

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

Видимо, я чего-то не понимаю, но у меня тут порочный круг получается.

Поскольку не все созвездия дают игроку уникальные характеристики, определить такие созвездия и записать в переменную я могу только предварительно добавив в них какую-то характеристику или изменив/заменив существующие. Так? То есть, при вызове меню мои проделки будет видно. А пока я не вызову меню, я не смогу выбрать созвездие, и определять мне нечего.
 



#232 Ссылка на это сообщение ZWolol

ZWolol
  • Авантюрист
  • 138 сообщений
  •    

Отправлено

Порядок не имеет значение. Нужно делать проще и понятней.

Мне понятней когда все последовательно. Сначала действие, а потом проверка.

 

if ( state == 1 )

 

я бы заменил на:

 

if ( state == 0 ) return

set state to 0

 

У выбора созвездий есть ограничения движка.

Обход ограничений всегда с костылями. Я стараюсь с этим не связываться.



#233 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

if ( state == 1 )

 

я бы заменил на:

 

if ( state == 0 ) return

set state to 0

Если state равно нулю, вернуться и сделать его равным нулю? Непонятно. Ведь и проверка проводится, когда state равна 1.

 

А вот если, как ты выше говорил, ретюрн поставить в блок с активацией, а второй блок начать с if ( state == 1 )   set state to 0, то бочка становится прям божественной, а из проверок можно убрать мои бесконечные set state to 0:

 

Надеюсь, что это работает потому, что правильно )).

 

PS Хотя мне кажется, место этому "set state to 0" перед последним "endif" в конце блока проверок:

...

...

elseif ( "mort global_variable" == 4 )
  MessageBox "Атронах, твоей магии не холодно?"
endif
set state to 0
endif
end


Сообщение отредактировал nihille: 19 июля 2021 - 17:17


#234 Ссылка на это сообщение ZWolol

ZWolol
  • Авантюрист
  • 138 сообщений
  •    

Отправлено

У тебя все проверки внутри блока

if ( state == 1 )

...

  set state to 0

endif

 

Я хотел предложить в начале проверок

if ( state == 0 )

   return

endif

set state to 0

...

 

В этом случае наглядней, сразу все видно.

Не нужно бежать в конец и смотреть что там и нет ли чего после endif

да еще и внутри может оказаться else

 

Каждый пишет как ему нравится...



#235 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

А!..

Извини, что я трудная и часто просто не догоняю. Спасибо, что пояснил )


Сообщение отредактировал nihille: 20 июля 2021 - 12:15


#236 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

Понадобилась книга, которая, если ее открываешь, понижает интеллект игрока.

Вешать на нее энчант нельзя по сюжету, чтоб ее нельзя было найти обнаружением чар.

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

- создала заклинание типа "проклятие" отнять интеллект 5 единиц.

- кряхтя и плача, написала для книги такой скрипт (первая часть потырена из ванильного скрипта с запечатанными письмами, с ней, думаю, все нормально):

Все вроде работает.

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

 

Отсюда просьба проверить скрипт на дыры и возможные баги. Можно ли так изгаляться с таймером вообще?


Сообщение отредактировал nihille: 23 июля 2021 - 21:03


#237 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

Проблема с гиперссылками в диалогах.

NPC говорит фразу с ключевыми словами "лепестки горьколистника", "обрезки металла", "рубин".

В уже существующих топиках создала новые фразы для этого NPC.

Ключевые слова не подсвечиваются, фразы не выводятся.

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

На пробу создала тему "горьколистник", написала фразу для непися там. Работает без всякого AddTopic, ключевое слово подсвечивается, при клике выводит нужную фразу (конструктор сам выделил "горьколистник" в словосочетании "лепестки горьколистника").

 

Мне хотелось бы пользоваться уже готовыми топиками, добавляя фразы туда. Чтоб не замусоривать конструктор похожими топиками.

Как выдрессировать непися?

 

Плагин собираю на Морровинд+Трибунал без посторонних программ.


Сообщение отредактировал nihille: 15 августа 2021 - 14:23


#238 Ссылка на это сообщение ZWolol

ZWolol
  • Авантюрист
  • 138 сообщений
  •    

Отправлено

В диалогах гиперсылки выделяются: @лепестки горьколистника#.

(большие/малые буквы имеют значение).

 

Редактор удаляет спец.символы и нужно заменять их на {лепестки горьколистника}.

"mod_prepare" делает эту замену перед редактированием и после.

 

В *.top файлах перечислены возможные замены:

лепестков горьколистника лепестки горьколистника



#239 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

ZWolol, спасибо,

читала про mod_prepare, просто боюсь, что если начну осваивать еще что-то, кроме КС, вообще никогда не дострою плаг ). Ведь строили же люди и на чистом КС.

 

Если так и не удастся понять, в чем проблема и как решить, воспользуюсь твоим советом.

 

Написание буква в букву соблюдаю свято. При нажатии кнопки "обновить гиперссылки" все мои ключевые слова редактор заключал в @...# . Но в игре не работает. Сломала голову, почему.

 

-----------

ПС: Услышала, что в русской локализации КС просто берет и обрушивает гиперссылки. Потому что может. Похоже, "на чистом КС" по-русски фиг чего напишешь без mod_prepare.

 


Сообщение отредактировал nihille: 15 августа 2021 - 17:51


#240 Ссылка на это сообщение nihille

nihille
  • Авантюрист
  • 173 сообщений
  •    

Отправлено

mod_prepare вылечил мои диаложыки, спасибо за помощь!

 

У меня еще два острых вопроса:

1. Игрок видит таблички с именами персонажей и названиями объектов уже при старте игры. Можно ли как-то отключить эту его способность? (Нужно для сценки, где игрок теряет подвижность, а свет гаснет. Коряво, что он у меня при этом в кромешной тьме видит надпись «шкаф» или имя непися поблизости).

 

2. Если изменить основную характеристику игрока через Mod – например: Player->ModPersonality 2, прибавится ли это 2 и к его текущей, и к максимальной характеристике? Получится ли так, что игрок в итоге сможет прокачать Привлекательность до 102?



#241 Ссылка на это сообщение ZWolol

ZWolol
  • Авантюрист
  • 138 сообщений
  •    

Отправлено

Табличек не будет только если нет текста в названии активаторов (комната с активаторами без названий).

У вещей не знаю и у дверей наверно останется. Еще MCP и MWSE могут добавлять к названию принадлежность.

 

Функция ModStat не может устанавливать атрибут больше его лимита (100), тогда как SetStat может.

Примечание: Это может быть неверно для таких необычных характеристик как сопротивления, которые могут быть отрицательными или превосходить 100.






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

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