Закусочная У семи дорог: (OFFLINE) Инструкция: как создать диалоги для хозяина таверны - Закусочная У семи дорог

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

Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

Инструкция: как создать диалоги для хозяина таверны

#1 User offline   Volodimer Icon

  • Патриарх Закусочной
  • PipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 823
  • Регистрация: 28 Апрель 06

Отправлено 15 Октябрь 2006 - 18:12

Решил начать выкладывать инструкции по созданию мода. По просьбе Iskatelя начну с создания диалогов. В качестве подопытного кролика выступил хозяин Таверны.
Будем считать, что уже сделано следующее.
1. Создан интерьер таверны. В данном случае ячейка с ней называется aaaInn7Ways
2. Создан NPC - хозяин таверны. Он должен быть торговцем. В даном случае хозяин - NPC с идентификатором aaaJuli, в самой таверне ему присваиваем имя Juli.
3. Он вставлен в интерьер.
4. Таверна связана с внешним миром.

Далее необходимо настроить NPC для того, чтобы хозяин мог сдавать комнату постояльцу.
Первое - необходимо выбрать комнату, в которую будет селиться постоялец. Дверь в нее обзываем Inn7WaysRentDoor, а кровать - Inn7WaysRentBed. Кровати назначаем хозяина - Juli (на закладке Owenership выбираем из списка NPC - aaaJuli) и отмечаем там же флажок Quest. Для двери - отмечаем там же флажок Quest, на закладке Lock отмечаем флажок Close и выбираем средний уровень замка.

Далее нужно сделать - создать скрипт.
Scriptname Publican_Inn7WaysJuli

;CellName: aaaInn7Ways
;Publican: aaaJuli
;Room: upstairs, last door on the right
;Door Ref: Inn7WaysRentDoor



short rent
short rentday
short rentmonth
short cleanup
short setup



begin gamemode


if ( rent == 1 )
	
	if ( setup == 0 )
		set rentday to GameDay
		set rentmonth to GameMonth
		set setup to 1
		Inn7WaysRentDoor.unlock	
		Inn7WaysRentBed.SetOwnership

	else
	
		if ( GameDay != rentday )
			set cleanup to 1
		elseif ( GameMonth != rentmonth )
			set cleanup to 1
		endif
	endif

	if ( Player.GetInCell WawnetInnTavern == 0 )
		if ( Cleanup == 1 )
			set Cleanup to 2
		endif
	endif

	if ( Cleanup == 2 )
		
		set rent to 0 
		set setup to 0
		set rentday to 0
		set rentmonth to 0
		set cleanup to 0
		Inn7WaysRentDoor.SetOpenState 0
		Inn7WaysRentDoor.lock 30
		Inn7WaysRentBed.SetOwnership aaaJuli
	endif
endif

End


Скрипт этот назначаем для aaaJuli.

Следующая стадия - создание диалога. Для этого открываем окно Квестов и выбираем квест BedRental. В нем есть 3 топика - bed, BedNo, BedYes. В каждом из них нужно создать диалоги.

Начнем с bed. Создаем в данном топике новый диалог (нажимаем правую кнопку мыши и выбираем Создать. Давжды щелкаем по заголовку диалога (сейчас Empty) и в верхнем окне вводим текст диалога:

"Конечно, друг, у меня есть комната, которую ты можешь снять. Она наверху, в конце коридора, последняя дверь направо. Всего 20 золотых. Устраивает?"

Далее настраиваем чуствительность (выбираем из списка Happy, значение выставляем 20). После чего нажимаем Ok. Далее настраиваем условия квеста. Нужно создать 2 условия (кнопка New). Для первого выбираем из списка функцию GetIsID (показывает, для какого NPC работает скрипт), в качестве параметра выбираем NPC 'aaaJuli', значение оставляем 1. Для второго условия выбираем функцию GetScriptVariable (для проверки значения переменной скрипта), параметр - 'Juli' + переменную rent. Значение устанавливаем в 0 (поскольку комната еще не снята).

Ну и наконец, нужно добавить в окно Add Topic 2 темы: опять правой кнопкой мыши выбираем Add Topic, в появившемся окне выбираем BedYes, аналогично добавляем тему AddNo.

Следующий диалог - опять в топике bed для случая, если комната уже снята. Текст:
"Хочешь посмотреть свою комнату? Запомни, наверху, в конце коридора. Последняя дверь направо."
Условия те же самые, только значение rent = 1.
Никаких топиков здесь добавлять не надо.

Дальше переходим к топику BedYes.
Для случая, когда 20 золотых есть. Текст:
"Отлично! Твоя комната ждет тебя. Это вверх по лестнице, последняя дверь направо. Спасибо еще раз, желаю хорошо отдохнуть!"
Условия:
Функция GetIsID, в качестве параметра выбираем NPC 'aaaJuli', значение оставляем 1.
Функция GetItemCount (для проверки количества какого-то инвентаря), выбираем 'Gold001' устанавливаем значение >=20. Кроме того, нужно установить флажок OnTarget.
Далее в окне Script вводим:

player.removeitem gold001 20
set aaaJuli.rent to 1

Для случая, когда 20 золотых нет. Текст:
"Послушай, друг, у меня здесь не какая-нибудь ночлежка. Нет золота - нет комнаты. И никаких исключений."
Для условия GetItemCount устанавливаем значение <20.

Для топика BedNo. Тест:
"Хорошо, но ты многое потеряешь. Это отличная комната, и, если честно, мне кажется, тебе бы не помешал отдых."
Одно условие: Функция GetIsID, в качестве параметра выбираем NPC 'aaaJuli', значение оставляем 1.

Все, теперь можно проверять работоспособность мода.

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

#2 User offline   Miko Leopardo Icon

  • Прохожий
  • Pip
  • Группа: Пользователи
  • Сообщений: 18
  • Регистрация: 03 Июль 06

Отправлено 16 Октябрь 2006 - 03:41

Бальшое Пасибо! А то никак чота не получалося!
0

#3 User offline   Volodimer Icon

  • Патриарх Закусочной
  • PipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 823
  • Регистрация: 28 Апрель 06

Отправлено 16 Октябрь 2006 - 18:35

View PostMiko Leopardo (16.10.2006, 3:41) писал:

Бальшое Пасибо! А то никак чота не получалося!

Я и сам не сразу разобрался. Главное - все работает. Только вот побочное явление - после этого мод "немного" вырос (раз так в 5). Но главное - работает (правда надо еще озвучку сделать, но Юлианос комнату уже сдает).
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
пользователей:0 гостей:1 скрытых пользователей:0