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

"Remote Container" или доступ к контейнеру из любого места


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

Жаль, что не получится реализовать общий сундук, в который можно было бы вкладывать вещи в Балморе, а потом достать их в Дагон Феле, например. Или можно? Удобно же.

Я вроде где-то читал о реализации такой вещицы.

 

А, вот, MSFD:

Info from the UESP: There is an undocumented feature in the Activate function by specifying the player after the function, for example:

begin RemoteContainer
short OnPCEquip
if ( OnPCEquip == 1 )
  set OnPCEquip to 0
  "dh_remote_chest_01"->Activate, player
endif

If the container is persistent (references persist) this script should open the container wherever the player is. This is a great way to create 'carryable' containers by attaching a script similar to the above to a ring or similar item.

 

Идея очень понравилась. К сожалению МСФД не расписывает подробней её проработку.

Пока адаптировал плагин с лопатами и кладами подумал сделать такой отовсюду доступный контейнер:

На объект (_BYT_remote_hole_anchor), который другим скриптом можно расставлять куда угодно, крепится такой скрипт:

 

begin BYT_RemoteHole
Short state
Short button
if ( OnActivate == 1 )
if ( player->HasItemEquipped, "_BYT_scoop" == 0 )
	MessageBox, "Возьмите в руки совок!" "Ладно"
	Return
elseif ( GetPCSneaking == 1 )
	  set state to 1
else
	PlaySound3D, "digging"
	 "_BYT_remote_hole"->Activate, player
endif
endif
If ( state == 1 )
			MessageBox "Что сделать с кладом?", "Посмотреть содержимое", "Сровнять с землей и убрать"
			Set state to 2
EndIf
If ( state == 2 )
			Set button to GetButtonPressed
					  if ( button == 0 )
		 PlaySound3D, "digging"
		 Set state to 7
		  Return
 Elseif ( button == 1 )
		  Set state to 3
 Endif
EndIf
If ( state == 3 )
			MessageBox "Точно сровнять клад с землей?", "Да", "Нет"
			Set state to 4
EndIf
If ( state == 4 )
			Set button to GetButtonPressed
							if ( button == 0 )
											Set state to 5
							ElseIf ( button == 1 )
											Set state to 0
											Return
							EndIf
EndIf
If ( state == 5 )
			Disable
			Set state to 6
			Return
EndIf
If ( state == 6 )
			SetDelete 1
			Return
EndIf
If ( state == 7 )
	 "_BYT_remote_hole"->Activate, player
	Set state to 0
EndIf
end

 

 

Скрипт не работает как надо: активация объекта не приводит к открытию вседоступного контейнера (_BYT_remote_hole). Тупо ничего не происходит при попытке активировать.

Пробовал делать исходный объект (_BYT_remote_hole_anchor) со скриптом, как активатором, так и контейнером, но результата нет. "Вседоступный" контейнер помещён в мир, Referenced Persist отмечено галкой.

 

Исходный скрипт из МФСД предлагает проворачивать активацию контейнера через экипировку. Но контейнер или статик-то не наденешь, да и надо, чтобы объект визуально лежал на земле.

Что делать?

 

З.Ы. Пробовал исходный МСФД-шный скрипт прицепить к кольцу, но контейнер всё равно не активируется при экипировке колечка(((

З.Ы.Ы. Попробовал в скрипте на исходном объекте (_BYT_remote_hole_anchor) заменить обе строки

"_BYT_remote_hole"->Activate, player

на добавление в инвентарь кольца и его экипировку (пока без проверки надето и есть ли оно уже), но контейнер так и не открывается.

new%20(11).gif

 

 

Что-то не так с этой недокументированной функцией? Что-то не так со мной со скриптами?

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

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

"Вседоступный" контейнер помещён в мир, Referenced Persist отмечено галкой.
А игрок был в ячейке, в которй этот контейнер находится?

 

Вообще, идея не нова.

http://mw.modhistory.com/download-95-1261

http://mw.modhistory.com/download-95-3759

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

Контейнеры в игре работают довольно криво. Попробуй сначала активировать его вручную один раз, потом через скрипт.

А игрок был в ячейке, в которй этот контейнер находится?

Он у меня в центре Сейда Нина стоит. И в ячейке был и активировал его предварительно и постфактум. Не получается. Через кольцо сейчас попробую ещё раз, но уже проверял.

 

О, этих не видел. Посмотрю как там сделано.

 

 

Upd:

Посмотрел – безблагодатность. Там надо ходить в спец комнатку и активировать контейнер каждую загрузку игры и каждые 72 часа (похоже что; об этом и в МСФД говорится). Это как-то тупо и совсем не подходит под мою реализацию. Проще уж телепорт крепить на мой клад, чтобы игрока телепортировало в пещерку, изображающую клад изнутри…

 

К слову в консоли этот "вседоступный" контейнер отображается как "_BYT_remote_hole0000000" а не просто "_BYT_remote_hole". Думал, что из-за этого не открывается, но не в этом дело.

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

К слову в консоли этот "вседоступный" контейнер отображается как "_BYT_remote_hole0000000" а не просто "_BYT_remote_hole". Думал, что из-за этого не открывается, но не в этом дело.

В консоли все так отображается. Не считая, конечно, копий объекта.

 

 

"_BYT_remote_hole"->Activate, player

В Морроувинде просто Activate (айди непися, заюзавшего объект, появилось только в Обливионе). Правда, не уверен, повлияет ли.

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

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

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

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

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

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

Войти

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

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

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