Перейти к содержанию

Скрипт с disable\enable


LofZ

Рекомендуемые сообщения

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

 

Это полезно:

- чтобы создавать эффект внезапности и новизны: «вдруг из столицы приезжает старый дядюшка Нереварина».

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

 

Итак:

 

1.Создайте нужный предмет или персонаж с уникальным ИД и разместите его в мире игры.

 

2. При необходимости создайте новую запись журнала, после которой должен появиться предмет.

 

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

 

 

begin awake-book

 

; скрипт о том, что когда Нереварину во сне начал являться Дагот Ур, в одном доме внезапно появилась некая книжка.

; автор – LofZ, sefy.narod.ru

 

short once

 

if ( MenuMode == 1 )

return

endif

 

if ( once == 1 )

return

endif

 

if (GetJournalIndex "A1_Dreams" < 1 )

disable

; Примечание: записи журнала – это только один тип условий. Хотя он и самый распространенный, условия можно ставить какие угодно.

; Например if ( player -> gethealth < 50 ) – если у игрока здоровье < 50 пунктов

; if ( GameHour >= 0 ), if ( GameHour < 6 ) – если на дворе ночь от полуночи до 6 утра (до рассвета).

; не забывайте, что каждый блок if должна закрывать строчка endif.

 

endif

 

if ( once == 0 )

if ( GetJournalIndex "A1_Dreams" >= 1 )

enable

set once to 1

 

; обратите внимание на условие вначале – когда (once == 1), скрипт не выполняется, т.е. «невидимая пелена» с книги спадает.

 

endif

endif

 

end

Ссылка на комментарий
Поделиться на другие сайты

  • 2 года спустя...

Еще несколько конкретных примеров под конкретные нужды, чтоб не мучаться =)

 

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

 

1. Простейший пример, когда "по умолчанию" объекта нет, но в определенный момент он должен появится:

begin AppearScript

short once

if ( once == 0 )
set once to 1
disable
elseif ( once == 1 )
if ( getjournalindex "1a_MyQuest" == 15 )
	enable
	set once to 2
endif
endif

end

 

2. Когда объект "по умолчанию" есть, но на определенном этапе должен исчезнуть. Особенно применимо к НПС, которые после выполнения квеста должны "уйти" из локации. Причем исчезнет объект не прямо на глазах у Игрока, а только когда тот вернется в ячейку в следующий раз.

begin DissappearScript

short once

if ( once == 0 )
if ( getjournalindex "1a_MyQuest" >= 31 )
	if ( CellChanged == 1 )
		disable
		set once to 1
	endif
endif
endif

end

 

3. Скрипт для объектов, которые днем есть, а ночью - нет.

Если у для ваших нужд ночное время длятся от 0 часов до 6 утра, то скрипт будет более простым. (См. этот топик)

begin day_and_night

short daytime

if ( gamehour < 22.00 ); время измеряется от 0 до 23 часов, поэтому чтобы корректно отделить день от ночи надо это учитывать
if ( gamehour > 6.00 ) 
	set daytime to 1; день
else
	set daytime to 0;  ночь
endif
else
set daytime to 0;  ночь

endif

if ( daytime == 0 )
if ( getdisabled == 0 ); чтобы disable выпонилось только 1 раз, а не каждый фрейм
	disable
endif
elseif ( daytime == 1 )
if ( getdisabled == 1 ); чтобы enable выпонилось только 1 раз, а не каждый фрейм
	enable
endif
endif

end

Изменено пользователем TJ
Ссылка на комментарий
Поделиться на другие сайты

  • 4 года спустя...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...