Уголок скриптолога Скрипты для TES4 CS: что, где, почем
#41
Отправлено 28 Март 2008 - 16:56
Это сработало :) ! Спасибо.
Правда есть небольшой ньюанс. Если сохранился в городе в какой нибудь ячейке, при входе скрипт не срабатывал (конечно можно повесить скрипт на все двери в городе, но это не очень удобно). Я сделал по другому:
begin onLoad
if act == 0
set act to 1
else
set act to 0
endif
end
и прицепил на одну вещичку в городе, и сработало. Только, блин, чуть погромче бы.
#42
Отправлено 28 Март 2008 - 17:28
А скрипт лучше не на вещичку, а на что-нибудь неподвижное, предмет архитектуры какой-нибудь. Если ты, конечно, сделал не так :)
#43
Отправлено 28 Март 2008 - 19:07
#44 Гость_MaZoFaKo_*
Отправлено 18 Апрель 2008 - 02:38
#45
Отправлено 18 Апрель 2008 - 17:01
http://www.tesnexus.com/downloads/images/thumbs/14892-1-1201089721.jpg
вот тут (теснексус)
http://www.tesnexus....le.php?id=14892
или все же чисто скрипты выложить?
Сообщение отредактировал w31: 18 Апрель 2008 - 18:20
#47
Отправлено 19 Апрель 2008 - 02:11
вторая стадия читаем письмо, журнал обновляется и плюс указывается направление. Какие рез. скрипты использовать на этих этапах? ;)
#48
Отправлено 19 Апрель 2008 - 05:32
begin gamemode
player.additem [id письма] 1
end
При чтение появляется след. стадия:
begin onactivate
setstage [id квеста] [номер стадии]
activate
end
#49
Отправлено 20 Апрель 2008 - 09:33
MaZoFaKo (18.4.2008, 22:47) писал:
вот, как и обещал. правда я подумал - у нас умельцев мало что-ли? и забил на эти заморские скрипты.
вот, выкладываю свою версию.
после код набирается как на секретном чемоданчике, выбором комбинации из 4-х цифр (сейчас это 2983). после правильного набора всей комбинации при нажатии на любую кнопку меню (в т.ч. и отмена) бочка откроется.
да, все кто знает как его можно улучшить или желают просто потестить - милости просим. я его еще в своем моде использовать давно собираюсь, поэтому дело полезное.
еще вопрос: возможно ли выстроить мои кнопки в 1 ряд?
есть прикрепленный esp плагин для тестирования
он добавляет в testinghall в одном из углов такую бочку:
(код 2983)
CodeLock.zip (1,39К)
Количество загрузок:: 232
MaZoFaKo, тебе для таблички прийдется только изменить предмет активации в блоке gamemode.
а вот текст скрипта:
ScriptName 1CodeLock short button short success; правильный ввод short active; проверка на работу short key1 short key2 short key3 short key4 Begin OnActivate if (success == 1); если код подобран - всегда откроемся activate elseif (success == 0); надо подобрать код set active to -1 endif end begin gamemode if (active == 0) return elseif (active ==-1) if (success == 1) set active to 0 activate elseif (success == 0) messagebox "> [%.0f] [%.0f] [%.0f] [%.0f] <", key1, key2, key3, key4 "[ <> ]" "[ <> ]" "[ <> ]" "[ <> ]" "Отмена" set active to 1 if (key1 == 2 && key2 == 9 && key3 == 8 && key4 == 3); код = 2 9 8 3 set success to 1; все верно set active to -1 endif endif elseif (active == 1); служебная мутотня set button to GetButtonPressed if (button ==-1) ; скип elseif (button == 0) set key1 to key1+1 set active to -1 if (key1 == 10) set key1 to 0 endif elseif (button == 1) set key2 to key2+1 set active to -1 if (key2 == 10) set key2 to 0 endif elseif (button == 2) set key3 to key3+1 set active to -1 if (key3 == 10) set key3 to 0 endif elseif (button == 3) set key4 to key4+1 set active to -1 if (key4 == 10) set key4 to 0 endif elseif (button == 4) set active to 0 endif endif end
Сообщение отредактировал w31: 20 Апрель 2008 - 09:45
#50
Отправлено 20 Апрель 2008 - 14:11
Цитата
begin onactivate
setstage [id квеста] [номер стадии]
activate
end
Остается проблема. Скрипт редактор ругается. Если скрипт привязывается к объекту то выдает ошибку типс, отсутствует параметр Quest, если тип квест, то ошибку что установлен некорректный блок. Как быть?
#51
Отправлено 20 Апрель 2008 - 14:15
#52
Отправлено 23 Апрель 2008 - 23:19
да, выход по той же кнопке, что и ввод.
Прикрепленные файлы
-
CodeLock.zip (2,92К)
Количество загрузок:: 236
Сообщение отредактировал w31: 23 Апрель 2008 - 23:20
#53
Отправлено 26 Апрель 2008 - 09:21
Ситуация в следующем:
Квест имеет 5 стадий.
Запуск квеста идет скриптом
scn aaMDGrivus
Begin gamemode
player.additem 0PlayerLetter 1
setstage aaaGrivus 1
end
При условии (Coditions), что игрок не в мире SE.
1 стадия – Текст сообщения « Типа откуда это письмо, надо его прочитать»
Условие стадии (Coditions) – GetStage aaaGrivus == 1
2 стадия – Игрок должен прочитать письмо в своем инвентаре, письмо под скриптом:
scn aaaLeter
Begin onActivate
setstage aaaGrivus 2
Activate
end
На этой стадии условий я не поставил, после прочтения должно добавиться сообщение и направление на НПС в таверне. Есть еще 3 стадии прописаны и последняя закончена командой стоп квест.
Проблема у меня в самом начале, при запуске игры добавляется это самое письмо, с сообщением. После нажимаем продолжить или сделать активным это задание. Окно сообщения пропадает, но письмо все равно добавляется в инвентарь бесконечное число раз, прочтение письма не дает никаких результатов. Подскажите, в чем же тут ошибка :help: ?
#54
Отправлено 26 Апрель 2008 - 10:26
scn aaMDGrivus
begin gamemode
if GetStageDone aaaGrivus == 0
setstage aaaGrivus 1
player.additem 0PlayerLetter 1
endif
end
Причём привяжи скрипт к квесту.
#55
Отправлено 26 Апрель 2008 - 12:16
или
if GetStageDone aaaGrivus 1 == 0
или
if GetStage aaaGrivus << 1
Стадии, кстати, лучше нумеровать 5-10-15..., чтобы потом если что можно было ещё парочку вставить без проблем.
На само письмо, кстати, тоже неплохо бы поставить аналогичную проверку на стадию.
#56
Отправлено 26 Апрель 2008 - 19:22
На 2 стадии на письмо повесил скрипт:
scn aaaLeter
Begin onActivate
if GetStageDone aaaGrivus 2 == 1
setstage aaaGrivus 2
Activate
endif
end
Но после прочтения нет сообщения и направления нет.
#57 Гость_MaZoFaKo_*
Отправлено 26 Апрель 2008 - 20:23
И последнее: можно ли на, допустим, бревно, поставить два активатора, чтоб срабатывало при одновременном воздействии на оба?
#58
Отправлено 26 Апрель 2008 - 20:30
Если нужно обновление при прочтении, то скрипт такой:
scn aaaLeter
Begin onEquip
if isActionRef player == 1
if GetStageDone aaaGrivus 2 != 1
setstage aaaGrivus 2
Activate
endif
endif
end
блок onEquip - действие с предметом в инвентаре.(вообще, может в этом я и не прав, серьезная ошибка была следующая)
В строке if GetStageDone aaaGrivus 2 нужно ставить НЕравно (!=) 1, или равно 0. Потому что название функции - "Пройдена ли стадия такая-то"
Cтрока if isActionRef player == 1 нужна, чтобы избежать ситуации, когда книгу взял НПС и решил её почитать, а у ГГ при этом квест обновился. Здесь, как я понял, это не нужно, но просто на будущее..
#60
Отправлено 26 Апрель 2008 - 21:02
При двойном клике на объект во второй закладке можно выставить родителя для объекта. Для этого оба они должны быть Persistent Reference (галка внизу). Нажав кнопку Select Ref in Render Window, можно выбрать родителя сразу в окне, тут как везде.
Далее, нужно посмотреть скрипт активатора ловушки и, может быть, самой ловушки.
Например, возьмем CTrapCaveIn01Script - скрипт падающих камней в пещерах - и разберем его по косточкам
Цитата
if triggered == 0
set fTrapDamage to 5
set fTrapPushBack to 300
set fLevelledDamage to 1
set fTrapMinVelocity to 150
set bTrapContinuous to 0;все выше - установка значений для ловушки - урон и т.п.
playgroup unequip 1; собственно, падение камней. такая функция применяется для всяких обвалов, короче, для врубания физики там, где это предусмотрено.
enableLinkedPathPoints; включить присоединенные (кнопкой R) Path Grid'ы - точки движения
set triggered to 1; чтобы сработало 1 раз
set timer to 6; таймер дэмэджа
setDestroyed 1; больше активировать не получится
triggerHitShader 4; "рябь" в глазах, с силой 4
endif
end
Вместо playgroup unequip часто используется ещё playgroup forward или playgroup backward - это проигрывание анимации, зависит от ситуации.
Дальше,
Цитата
if triggered == 1 && next == 0 && timer < 5;через 1 секунду активируется Parent камней.
set next to 1; чтобы parent'а больше не тревожить
set myParent to getParentRef; получение ref'а родителя
set mySelf to getSelf; познавание себя
myParent.activate mySelf 1; активировать родителя собой.
endif
Цитата
set fTrapDamage to 0
set fTrapPushBack to 0
set triggered to 2
endif
Цитата
set timer to timer - getSecondsPassed
endif
Цитата
reset3DState;возвращает модель в начальное положение
set triggered to 0;чтобы снова можно было активировать
setDestroyed 0;то же, что и выше
enableLinkedPathPoints; включить соединенную с ловушкой сетку путей. странный скрипт, сетка дважды включается, но ни разу не выключается. а скрипт-то встречается часто.. разрабы, ай-яй-яй.
end
Другой объект - TrigZonePlayer01:
Цитата
if triggered == 0
set triggered to 1
set target to getParentRef
set mySelf to getSelf
target.activate mySelf 1; активируется parent
endif
end
begin onReset
set triggered to 0
end
Таким образом, второй объект активирует прописанного в свойствах Parent'а, например, первый объект.
По двум активаторам - можно, конечно. Только надо скрипт писать новый. Чтобы один активатор прибавлял единицу к переменной, и другой - тоже. И проверка на >=2.
Фух... Вопросы?