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

Элементарный скрипт с дисейблом


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

Написал простейший скрипт на включение\отключение защитного поля. Надо сказать, что в моем интерьере есть три различных отключаемых поля, и для всех созданы похожие скрипты, которые вешаются на рычаги. Скрипты созданы банальным копипастом по образу и подобию первого, с небольшими модификациями. Так вот, первые два скрипта отлично функционируют, а этот - нет! :-D Пробовал копипастить его содержимое в новый скрипт, создавать новый активатор и вешать на него этот скрипт - все бесполезно, при клике ничего не происходит. Где ошибка? о_0

Begin 00_energy_wall_1

Short doonce

If ( doonce == 0 )
If ( OnActivate == 1 )
	"00_The_Energy_Wall2"->disable
	PlaySound3D "enchant success"
	MessageBox "Эти центурионы не опасны, если их не атаковать."
	Rotate X 180
	Set doonce to 1
	return
 endif
endif

If ( doonce == 1 )
If ( OnActivate == 1 )
	"00_The_Energy_Wall2"->enable
	PlaySound3D "SothaGiantBlade"
	Rotate X -180
	Set doonce to 0
	return
 endif
endif


End

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

А на чем висит скрипт? Если не на вращающейся стене, то в Rotate надо указать что вращать:

Object_ID -> Rotate, X, 180

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

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

1. Активатор-силовое поле должен иметь ункальный ID

2. Активатор-силовое поле должен быть Reference Persist (галочку нужно выставить)

3. Функции PlaySound3D не существует (PlaySound либо PlaySound3DVP, еще не забывай указать на какой объект должен проиграться звук, если не укажешь, то проиграется на сам рычаг)

4. Можно обойтись без return'ов

 

остальное все вроде норма =)

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

Ты что, всё ещё над лагранаком маешься? Я себе в Дорминион пещеру с роботом обратно перетащил, кстати. ;-) Изменено пользователем Скампецкий
Ссылка на комментарий
Поделиться на другие сайты

По ходу, проблема была в отсутствии галочки в Reference Persist, никогда бы не подумал, что это может привести к таким последствиям.

2Скампецкий:

Ога, через год решил таки доделать, что он валяется тут у меня впустую, а я так старательно диалоги для центуриона придумывал. :-D

 

Кстати, оффтоп, но тем не менее, не создавать же ради этого новую тему: какое условие нужно проставить в диалоге, чтобы предмет выбрасывался только в первый раз при активации топика?

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

По ходу, проблема была в отсутствии галочки в Reference Persist, никогда бы не подумал, что это может привести к таким последствиям.

Угу, об этом, кажысь, еще в MSFD писалось. Типа команды не воздействуют на объект, если галочу не выставить. Причем, если не ошибаюсь это актуально только в том случае, если скрипт лежит не на управляемом объекте. (как в твоем случае, когда скрипт прикреплен к рычагу, а воздействует на силовое поле) =)

 

Кстати, оффтоп, но тем не менее, не создавать же ради этого новую тему: какое условие нужно проставить в диалоге, чтобы предмет выбрасывался только в первый раз при активации топика?

Хм... я бы попробовал в резулте использовать как в скрпте комбинацию с короткой переменой:

 

short once

if once == 0
Player->AddItem или PlaceAtPC
set once to 1
endif

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

Кстати, оффтоп, но тем не менее, не создавать же ради этого новую тему: какое условие нужно проставить в диалоге, чтобы предмет выбрасывался только в первый раз при активации топика?

Просто пиши в результате диалога, как сказал ТиДжей

Player->AddItem "предмет" кол-во

или PlaceAtPC "предмет" 1 1 1

Возможно и команда PositionCell также сработает. Только ограничь повторное обращение к этой же фразе, если это не нужно (например, добавлением журнальной записи. Выще создай фразу, в котрой ничего не выкидывается, содержащую условие по этой самой записи). А то каждый раз будет выкидывать предметы.

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

Спасибо за ценные рекомендации. ;-)

Кстати, что не так с PlaySound3D? Функция была сперта мной из стандартного морровиндского скрипта, и звук воспроизводится вполне адекватно.

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

Кстати, что не так с PlaySound3D? Функция была сперта мной из стандартного морровиндского скрипта, и звук воспроизводится вполне адекватно.

ой да, сорри, парю, есть такая :-[

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

Что-то игра вообще вылетает при использовании этой переменной в результате. Вылетает при первом клике по топику.

Результат следующий:

short once

if once == 0
player-> additem "misc_dwrv_artifact60" 2
MessageBox "Неясно, как оценил центурион ваше остроумие, но из него выпало две трубки. Неплохо, пригодятся в хозяйстве."
set once to 1
endif

Journal "00_FP_Lagranac1" 2

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

Что-то игра вообще вылетает при использовании этой переменной в результате. Вылетает при первом клике по топику.

Результат следующий:

ой, я скобочки забыл =)

if ( once == 0 )

 

если не поможет, значит в результе нельзя объявлять локальные переменные,

тогда можно сделать иначе:

 

Если я не ошибаюсь, то в топике можно сделать разные варианты ответа (и соответственно результаты нажатия на топик) в зависимости от индекса журнала.

Я смотрю, тут после нажатия индекс изменится, вот за это и можно зацепиться, если в условии варианта ответа поставить:

Journal ID_Записи

После того, как в резулте измениться индекс журнала, этот вариант больше не появиться.

 

Еще способ:

1) Написать скрипт на добавление вещи

 

Begin 00_Lagranac1_Script

short once

if ( once == 0 )
player-> additem "misc_dwrv_artifact60" 2
MessageBox "Неясно, как оценил центурион ваше остроумие, но из него выпало две трубки. Неплохо, пригодятся в хозяйстве."
set once to 1
Journal "00_FP_Lagranac1" 2
endif

end

 

2) В резулте сделать команду StartScript, "Begin 00_Lagranac1_Script"

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

Вылетает все равно. Буду пробовать другие способы, сенькс. :-)

Ну, правильно, а чего вы хотите? Когда это будет работать? Если в открытом диалоге, мессаджбокс не работает.

Вот так будет выглядеть скрипт, когда трубки выпадают после прикосновения к центуриону. Только после этого, до него уже не дотронешься.

 

Begin 00_Lagranac1_Script

 

short once

 

if ( menumode )

return

endif

 

if ( once == 1 )

return

endif

 

if ( onActivate == 1 )

if ( once == 0 )

player-> additem "misc_dwrv_artifact60" 2

MessageBox "Неясно, как оценил центурион ваше остроумие, но из него выпало две трубки. Неплохо, пригодятся в хозяйстве."

Journal "00_FP_Lagranac1" 2

set once to 1

endif

endif

 

end

 

А если в диалоге, то можно обойтись без скрипта. Создай фразу для центуриона: ""Неясно, как оценил центурион ваше остроумие, но из него выпало две трубки. Неплохо, пригодятся в хозяйстве."".

В результате: player->additem "misc_dwrv_artifact60" 2 (без пробелов)

Journal "00_FP_Lagranac1" 2

 

Чуть выше создай еще одну фразу для центуриона, с условием Journal "00_FP_Lagranac1" >= 2 и другим содержанием типа "центурион молчит, как истукан".

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

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

Сенькс, еще вчера все сделал именно вышеописанным образом, с журнальной записью. :-) Насчет мессаджбокса - я правильно понял, что он не работает в диалоге именно в сочетании с переменной?

Он вроде бы нехорошо работает в сочетании с диалогом, потому что это как разные открытые окна. А вообще с переменными и локальными и глобальными он должен сосуществовать нормально.

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

Ну не знаю, у меня мессаджбоксы во всех топиках этого кричера стоят и нормально выводятся. В диалоге же ведь они вылезают просто как текст, без отдельного окна. Да и в стандартном Морровинде они в диалогах используются. И вообще никогда не замечал связанных с ними глюков, кроме этого случая. о_0
Ссылка на комментарий
Поделиться на другие сайты

Ну не знаю, у меня мессаджбоксы во всех топиках этого кричера стоят и нормально выводятся. В диалоге же ведь они вылезают просто как текст, без отдельного окна. Да и в стандартном Морровинде они в диалогах используются. И вообще никогда не замечал связанных с ними глюков, кроме этого случая. о_0

Ну, я подозреваю в данном случае глюк был из-за объявления в резулте короткой переменной, наверное движок такого просто не понимает =)

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

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

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

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

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

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

Войти

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

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

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