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

Что не так со скриптом?


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

Бояре, почему сей скрипт не работает? Сделан путем копипаста с другого моего скрипта, который был вполне дееспособен. Висит на специальном двемерском рычаге. Типа того, который двери Аркнтанда открывает. Прошлый скрипт висел на аналогичном рычаге, и все работало. ;-)

Еще хотелось бы сделать так, чтобы огонь, который 00_light_fire_fuel, изначально был выключен. ;-)

Скрипт:

Begin 00_crank_fuel

Short doonce

If ( doonce == 0 )
If ( OnActivate == 1 )
	"00_light_fire_fuel"->disable
	PlaySound3D "spiderATTACK1"
	MessageBox "Подача топлива прекращена."
	Rotate X 160
	Set doonce to 1
	return
endif
endif

If ( doonce == 1 )
If ( OnActivate == 1 )
	"00_light_fire_fuel"->enable
	MessageBox "Ведется подача топлива."
	PlaySound3D "steamATTACK2"
	Rotate X -160
	Set doonce to 0
	return
 endif
endif

End

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

А он выдает какую-нибудь ошибку или что?

 

Галочка "References persist" на огне стоит?

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

Тьфу! Точно ведь! Не поставил, хотя и знал об этой особенности! Спасибо. ;-)

 

Ошибку не выдает, просто ничего не происходит.

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

Очень странно. Вроде срабатывает, по крайней мере, рычаг теперь вертится, звук проигрывается и мессага вылезает. Но огонь все равно не исчезает. ;-) Может быть, это потому, что их там не один, а аж девять штук?

 

И все еще хотелось бы доработать скрипт так, чтобы огонь изначально был выключен.

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

Begin 00_crank_fuel

 

Short doonce

Short OneTime

 

if ( OneTime == 0 )

"00_light_fire_fuel"->disable

set OneTime to 1

endif

 

If ( doonce == 0 )

If ( OnActivate == 1 )

"00_light_fire_fuel"->enable

PlaySound3D "spiderATTACK1"

MessageBox "Подача топлива прекращена."

Rotate X 160

Set doonce to 1

endif

endif

 

If ( doonce == 1 )

If ( OnActivate == 1 )

"00_light_fire_fuel"->disable

MessageBox "Ведется подача топлива."

PlaySound3D "steamATTACK2"

Rotate X -160

Set doonce to 0

endif

endif

 

End

 

можно упростить конструкцию:

Begin 00_crank_fuel

 

Short doonce

Short OneTime

 

if ( OneTime == 0 )

"00_light_fire_fuel"->disable

set OneTime to 1

endif

 

If ( OnActivate == 1 )

 

If ( doonce == 0 )

"00_light_fire_fuel"->enable

PlaySound3D "spiderATTACK1"

MessageBox "Подача топлива прекращена."

Rotate X 160

Set doonce to 1

elseif ( doonce == 1 )

"00_light_fire_fuel"->disable

MessageBox "Ведется подача топлива."

PlaySound3D "steamATTACK2"

Rotate X -160

Set doonce to 0

endif

 

endif

 

End

 

 

Может быть, это потому, что их там не один, а аж девять штук?

Я никогда не искушал судьбу подобным. По моему игра поймет какой огонь тебе надо погасить. Я делаю для таких целей уникальный объект, наверное покатит если не больше 1 Reference в 1 ячейке.

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

Вот девять штук - это плохо. Попробуй сделать так:

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

Сделать глоб. переменную FFLightsOn

На огонь - скрипт:

 

begin FFLightScript

if(FFLightsOn=1)
if(GetDisabled=1)
enable
endif
elseif(FFLightsOn=0)
if(GetDisabled=0)
disable
endif

end

То есть, если переменная равна 0, огонь исчезает, а если 1 - появляется.

В скрипте рычага вместо disable/enable на огонь ставишь эту переменную в 0 и 1 соответственно.

Заодно снимается проблема с тем, чтобы сначала огни были потушены.

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

Спасибо! Очень полезно.

Я никогда не искушал судьбу подобным. По моему игра поймет какой огонь тебе надо погасить. Я делаю для таких целей уникальный объект, наверное покатит если не больше 1 Reference в 1 ячейке.

Ну, у меня огонь тоже с уникальным ID, но их девять штук рядом. :-D Попробую оставить один.

Сделать глоб. переменную FFLightsOn

Попробую, спасибо. ;-)

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

Мой метод работает для любого количества (если работает). Ты так можешь хоть во всех комнатах разом сделать освещение с одним выключателем.
Ссылка на комментарий
Поделиться на другие сайты

уникальным ID
уникальный - это когда всего 1 Reference объекта всего существует, все остальное - неуникальное =)

 

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

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

Заменил модель и оставил один огонек, помогло. Громоздить глобальные переменные ради включения печки в пещере для моего ящера я уж не стал. ;-) Спасибо, господа, вы очень помогли.
Ссылка на комментарий
Поделиться на другие сайты

Кстати, можно сделать и без глоб. переменной. Тогда можно сделать эту переменную локальной (для рычага), поставить ему галочку реф.перс, а в скрипте огня вместо FFLightsOn писать IDрычага->FFLightsOn

 

Вроде может сработать.

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

Кстати, можно сделать и без глоб. переменной. Тогда можно сделать эту переменную локальной (для рычага), поставить ему галочку реф.перс, а в скрипте огня вместо FFLightsOn писать IDрычага->FFLightsOn
IDрычага.FFLightsOn - так вроде.

 

А можно еще нифоскопом объеденить все девять огней в одну модель, хех.

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

Это разве не для Облы?
Для Морры вроде тоже, но только при ссылках на переменные в других скриптах.
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

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