Вопросы по плагиностроению
#222
Отправлено
Есть сундук, в котором нет вещей. Игрок нацеливается и активирует пробелом 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
Отправлено
но к коням
"GetItemCount" какого места в сём фентезийном мире?
Вот и напиши
If(AA == 1)
Messagebox "сундук пуст"
Endif
- Niko_Valer это нравится
#224
Отправлено
в морку играют, но мало, а авторов еще меньше...
Begin abc
Short AA
if ( onActivate )
if ( AA == 0)
Set AA to 1
Player -> AddItem, "Item ID", 1
Messagebox "вы получили предмет"
else
Messagebox "сундук пуст"
endif
endif
End
- J'Rama и Niko_Valer нравится это
#225
Отправлено
Доброго здравия ZWolol жду исправления следующих ошибок, заранее спасибо, вот ссылка:
https://tesall.ru/to...61#entry1580532
#226
Отправлено
А вот и нуб с нубским вопросом.
Сделала начало квеста в конструкторе, и оно работает. Непись взаимодействует с игроком, как задумано.
Проблема в том, что работать мой плужик вроде как не должен — прочла в руководстве, что каждый выбор — Choice — в диалоге с одним NPC должен иметь свой собственный номер (он же АйДи, как я поняла).
Я вызывала свои готовые чойсы с номерами 2, 3 и 4 как ответы в разных ветках диалога вместо того, чтобы писать новый ответ с новым номером.
Зачем я разрисовала её вырвиглазными цветами? Чтобы было видно, что в поле Info у меня все ответы располагаются выше вопросов: например, Реплика 7, вызываемая чойсом 4, выше Реплик 2 и 5, на которые служит ответом.
Вот как это разворачивается в игре:
Ниубивайте миня.
Я хочу разобраться, почему это работает (если память не изменяет, в самом КС я видела подобное использование готовых чойсов в качестве ответа на новую реплику), должно ли это вообще работать, и если нет, то к каким багам это может привести.
Может, я тупо не поняла правило насчет нумерации чойсов, и оно не накладывает ограничение на использование уже готовых пронумерованных чойсов? То есть, в окне результатов диалога номера МОГУТ повторяться, если тебе нужно вызвать уже готовый ответ?
Использовала только мастерфайлы Morrowind.esm и Tribunal.esm.
Непися тестировала с подключенным GFM_1C второй версии и с отключенным.
#227
Отправлено
Все ответы с чойсами должны быть выше стартового диалога.
ты указываешь любые номера чойсов для каждого ответа
диалоги с чойсами могут быть в произвольном порядке.
если выбран ответ с чойс 1, то сработает диалог с чойс 1, не зависимо от его положения в списке.
даже может быть два диалога с чойс 1, но с разными условиями
например: первый с проверкой наличия предмета, значит следующий сработает при его отсутствии.
разные ответы могут иметь одинаковые чойсы
например: не знаю 4, подумаю 4, (4 значит приходи завтра).
#229
Отправлено
Пытаюсь определить созвездие игрока, модифицировав способ, предложенный Mortuus'ом.
- ввожу дополнительную характеристику в бонусы созвездий,
- есть глобальная переменная, глобальный скрипт и локальный,
- локальный повешен на бочку для тестирования,
- в идеале бочка должна при активации запускать глобальный скрипт и выдавать мессадж о твоем созвездии.
Вот оба скрипта на картинке, глобальный и локальный соответственно:
Что получается:
1) Меняю консолью знак на Башню, активирую бочку, получаю мессадж "Башня", последующие мессаджи тоже "Башня".
2) Меняю знак на Воина, активирую бочку, первый мессадж опять "Башня", последующие "Воин".
3) Меняю на Башню, активирую бочку, первый мессадж "Воин", последующие - "Башня".
Всё это — без перезагрузок.
Предполагаю, на этапе 2) первый, неверный мессадж я получаю потому, что глобальная переменная уже встала в 1, а на этапе 2), соответственно, потому что переменная встала в 2. (?)
Но я не понимаю, почему машина, дойдя до линии StartScript Mort_constellation не выполняет глобальный скрипт сразу, изменяя глобальную переменную в соответствии с наложенным на игрока эффектом.
И главное, почему, если я ставлю блок условий с мессаджами НАВЕРХ, перед блоком со стартом скрипта, всё работает без сбоев.
Если не лень, проясните для меня этот момент, пожалуйста, я чувствую, что вчухивание в него должно вести к просветлению и продвижению в скриптописании.
Второй вопрос:
Манипуляции с введением доп. характеристик в бонусы созвездий ожидаемо приводят к тому, что меню знаков рождения отображает эти характеристики, типа так:
Получается, что Сокуциус Эргалла врёт игроку о знаках. Это не очень этично с его стороны, да.
Если я правильно поняла смысл предложения Mortuus'а "заменяем этими характеристиками существующие бонусы знаков", результат будет тот же — левые характеристики, отображаемые в меню.
Альтернативных способов записать ВСЕ СОЗВЕЗДИЯ в глобальную переменную я не нагуглила, уже с неделю утопая в страницах типа "С днем рождения, Петя!" и предложениях установить моды, меняющие созвездия.
Поэтому, если вам есть куда ткнуть меня носом, ткните.
#230
Отправлено
StartScript - не запускает скрипт, а только его активирует.
Следовательно, нужна пауза для его выполнения.
Если б у тебя вместо закомментированной Activate стоял бы Return, то вторая часть скрипта выполнилась бы в следующем фрейме (тогда глобальный бы уже сработал).
Аналогично, когда ты переносишь проверку перед StartScript, скрипт устанавливает state и заканчивается, и эта проверка выполнится в следующем фрейме.
На счет отображения могу посоветовать менять характеристики после меню выбора, типа камень созвездия, который позволяет менять выбор как в обливионе (камень воина, мага...)
#231
Отправлено
Спасибо!
Что технически лучше - поставить Return или поменять местами блоки? Если бы блоков с проверкой глобальной переменной было много — машине было бы проще выполнить Return, а после проверить переменную? Или все же лучше сначала проверять блоки с проверкой переменной и обходиться без Return-а? (Боюсь я им злоупотреблять. Подозрительный он).
На счет отображения могу посоветовать менять характеристики после меню выбора
Видимо, я чего-то не понимаю, но у меня тут порочный круг получается.
Поскольку не все созвездия дают игроку уникальные характеристики, определить такие созвездия и записать в переменную я могу только предварительно добавив в них какую-то характеристику или изменив/заменив существующие. Так? То есть, при вызове меню мои проделки будет видно. А пока я не вызову меню, я не смогу выбрать созвездие, и определять мне нечего.
#232
Отправлено
Порядок не имеет значение. Нужно делать проще и понятней.
Мне понятней когда все последовательно. Сначала действие, а потом проверка.
if ( state == 1 )
я бы заменил на:
if ( state == 0 ) return
set state to 0
У выбора созвездий есть ограничения движка.
Обход ограничений всегда с костылями. Я стараюсь с этим не связываться.
- nihille это нравится
#233
Отправлено
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
Отправлено
У тебя все проверки внутри блока
if ( state == 1 )
...
set state to 0
endif
Я хотел предложить в начале проверок
if ( state == 0 )
return
endif
set state to 0
...
В этом случае наглядней, сразу все видно.
Не нужно бежать в конец и смотреть что там и нет ли чего после endif
да еще и внутри может оказаться else
Каждый пишет как ему нравится...
- nihille это нравится
#236
Отправлено
Понадобилась книга, которая, если ее открываешь, понижает интеллект игрока.
Вешать на нее энчант нельзя по сюжету, чтоб ее нельзя было найти обнаружением чар.
Нужно, чтобы игрок не успевал увидеть в меню магии, что его шарахнуло "проклятие", а получал только предупреждающий мессадж.
- создала заклинание типа "проклятие" отнять интеллект 5 единиц.
- кряхтя и плача, написала для книги такой скрипт (первая часть потырена из ванильного скрипта с запечатанными письмами, с ней, думаю, все нормально):
Все вроде работает.
Что меня смущает: я использовала таймер каким-то, извиняюсь, наизжопным способом, потому что так, как в примерах MSFD со снятием проклятий, он работал стремно: проклятие висело некоторое время после того, как игрок закрывал книгу и выходил из меню, и это было дольше реальных трех секунд, поэтому терялось больше интеллекта, чем задано заклинанием.
Отсюда просьба проверить скрипт на дыры и возможные баги. Можно ли так изгаляться с таймером вообще?
Сообщение отредактировал nihille: 23 июля 2021 - 21:03
#237
Отправлено
Проблема с гиперссылками в диалогах.
NPC говорит фразу с ключевыми словами "лепестки горьколистника", "обрезки металла", "рубин".
В уже существующих топиках создала новые фразы для этого NPC.
Ключевые слова не подсвечиваются, фразы не выводятся.
Добавление тем при помощи AddTopic выводит их в список тем непися, нужные фразы непись говорит, но ключевые слова не подсвечиваются.
На пробу создала тему "горьколистник", написала фразу для непися там. Работает без всякого AddTopic, ключевое слово подсвечивается, при клике выводит нужную фразу (конструктор сам выделил "горьколистник" в словосочетании "лепестки горьколистника").
Мне хотелось бы пользоваться уже готовыми топиками, добавляя фразы туда. Чтоб не замусоривать конструктор похожими топиками.
Как выдрессировать непися?
Плагин собираю на Морровинд+Трибунал без посторонних программ.
Сообщение отредактировал nihille: 15 августа 2021 - 14:23
#238
Отправлено
В диалогах гиперсылки выделяются: @лепестки горьколистника#.
(большие/малые буквы имеют значение).
Редактор удаляет спец.символы и нужно заменять их на {лепестки горьколистника}.
"mod_prepare" делает эту замену перед редактированием и после.
В *.top файлах перечислены возможные замены:
лепестков горьколистника лепестки горьколистника
- nihille это нравится
#239
Отправлено
ZWolol, спасибо,
читала про mod_prepare, просто боюсь, что если начну осваивать еще что-то, кроме КС, вообще никогда не дострою плаг ). Ведь строили же люди и на чистом КС.
Если так и не удастся понять, в чем проблема и как решить, воспользуюсь твоим советом.
Написание буква в букву соблюдаю свято. При нажатии кнопки "обновить гиперссылки" все мои ключевые слова редактор заключал в @...# . Но в игре не работает. Сломала голову, почему.
-----------
ПС: Услышала, что в русской локализации КС просто берет и обрушивает гиперссылки. Потому что может. Похоже, "на чистом КС" по-русски фиг чего напишешь без mod_prepare.
Сообщение отредактировал nihille: 15 августа 2021 - 17:51
#240
Отправлено
mod_prepare вылечил мои диаложыки, спасибо за помощь!
У меня еще два острых вопроса:
1. Игрок видит таблички с именами персонажей и названиями объектов уже при старте игры. Можно ли как-то отключить эту его способность? (Нужно для сценки, где игрок теряет подвижность, а свет гаснет. Коряво, что он у меня при этом в кромешной тьме видит надпись «шкаф» или имя непися поблизости).
2. Если изменить основную характеристику игрока через Mod – например: Player->ModPersonality 2, прибавится ли это 2 и к его текущей, и к максимальной характеристике? Получится ли так, что игрок в итоге сможет прокачать Привлекательность до 102?
#241
Отправлено
Табличек не будет только если нет текста в названии активаторов (комната с активаторами без названий).
У вещей не знаю и у дверей наверно останется. Еще MCP и MWSE могут добавлять к названию принадлежность.
Функция ModStat не может устанавливать атрибут больше его лимита (100), тогда как SetStat может.
Примечание: Это может быть неверно для таких необычных характеристик как сопротивления, которые могут быть отрицательными или превосходить 100.
- nihille это нравится
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 скрытых