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

"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 пользователей онлайн

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