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

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

Опубликовано

Такая проблема...у некоторых людей использующих USLEP и мой мод: "Комната коллекционера" возникает проблема с витринами для кинжалов,с большими витринами для оружия,с вертикальными стойками под оружие и с одним манекеном на нижнем этаже...И самое странное что у меня с витринами для кинжалов и с вертикальными стойками для оружия всё в порядке...а вот с большими витринами для оружия  и с одним манекеном на нижнем этаже у меня тоже какие-то непонятки...я всё делаю правильно,манекен через linkedRef привязываю к xmarkerheading,потом привязываю xmarkerheading к манекену,а затем через "ActiveParents" привязываю манекена к триггеру...в случае c большими витринами я через linkedRef привязываю "синий триггер" к "оранжевому активатору" и при привязывании выбираю "WRackActivator",потом я привязываю "оранжевый активатор" к "синему триггеру",и при привязывании выбираю "WRackTrigger" (я таким же способом делал витрины для кинжалов,но витрины для кинжалов работают,а большие витрины почему-то нет)...и в конечном итоге что большие витрины для оружия,что один манекен на нижнем этаже не работают...и самое интересное...если я на то место где стоит нерабочий манекен,поставлю рабочий (который я сам проверял в игре,и он работал) то этот рабочий манекен на том месте тоже перестанет работать...и я так же не могу понять почему у некоторых использующих мой мод не работают витрины для кинжалов и вертикальные стойки под оружие (я тоже использую USLEP,и у меня витрины для кинжалов и вертикальные стойки под оружие работают) ...Кто-нибудь может пожалуйста помочь решить эту проблему?

Комната коллекционера 3.0.rar

Опубликовано
Сравни скрипты для стоек ванильные и из неофициального патча.
 
Также, я если честно не особо знаю нюансы работы GetLinkedRef() при указанном кейворде и без (на вики этого не указано). Но есть подозрение, что скрипт просто не получает нужный LinkedRef. Вопрос: зачем ты используешь WRackActivator и WRackTrigger, если в скрипте это никак не фигурирует? Мне всегда было интересно, откуда у людей берется это странное желание делать лишние телодвижения, не понимая что они значат и для чего. Это ж ритуал какой-то. В действиях должна быть логика, а в коде однозначность.
 
Вообще напиши лучше свой скрипт для манекенов и стоек. Так не будет никаких тонкостей с совместимостью и можно сделать так, как захочется.
Я бы подходил к этой системе со стендами вообще иначе (вот древняя версия скрипта для витрины, что когда-то писал):

Спойлер

Scriptname WH_WeaponRackSCR01 extends ObjectReference

Message property WH_RackMenu_message00 auto
Message property WH_RackMenu_message01 auto
Message property WH_RackMenu_messageFail01 auto
Message property WH_RackMenu_messageFail02 auto

Keyword property BlockPlayerActivation auto
Keyword property BlockWorkshopInteractionKeyword auto

Sound property AMBElectricArcSmall auto

Formlist property SuitableKeywords auto
Formlist property WH_WeaponTypeMeleeKeywords auto

Objectreference property WeapMarker auto hidden
Objectreference property WeapMarkerGun auto
Objectreference property WeapMarker2HMelee auto
Objectreference property GunToPlace auto hidden
Objectreference property LightMarker auto
Objectreference property LightLampOff auto

GlobalVariable property WH_PlayerActRackFirstTimeGlobal auto

bool property IsMeleeIncluded = false auto 
int WH_IsWeaponPlaced = 0
int WH_WeaponHadKeywordFeaturedInitially = 0
int WH_BackLightIsOn = 0


;=================================================

Event OnActivate(ObjectReference akActionRef)
	if akActionRef == Game.Getplayer()
		if WH_PlayerActRackFirstTimeGlobal.GetValue() == 0
			WH_PlayerActRackFirstTimeGlobal.SetValue(1)
			WH_RackMenu_message00.Show()
		endif

	RackMenu()
	endif
endevent


Function RackMenu(int Button = 0)						;0 - activate   1 - preview weapon 2 - cancel
	Button = WH_RackMenu_message01.Show()
	
	if Button == 0
		RackActivate()
	elseif Button == 1
		 RackLights()
	elseif Button == 2
		;Player wants to leave
	endif
endfunction

Function RackActivate()
	weapon Gun
	WeapMarker = WeapMarkerGun
			
	if WH_IsWeaponPlaced == 0		;;; WE WANT TO PUT WEAPON <<<<<<<<<<<<<<<<<<<
		
		Gun  =  Game.GetPlayer().GetEquippedWeapon()

		if (Gun.HasKeywordInFormList(SuitableKeywords) == true)	
			
			GunToPlace = Game.GetPlayer().DropObject(Gun, 1)
			
			if GunToPlace.HasKeywordInFormList(WH_WeaponTypeMeleeKeywords)== true && IsMeleeIncluded == true
				WeapMarker = WeapMarker2HMelee
			endif

			GunToPlace.MoveTo(WeapMarker)
			GunToPlace.SetMotionType(Motion_Keyframed)
			GunToPlace.AddKeyword(BlockPlayerActivation)
			GunToPlace.AddKeyword(BlockWorkshopInteractionKeyword)
							
		else
			WH_RackMenu_messageFail02.show()
		endif

			WH_IsWeaponPlaced = 1

	elseif WH_IsWeaponPlaced == 1             ;;; WE WANT TO TAKE WEAPON BACK  <<<<<<<<<<<<<<<<<<<
			
			GunToPlace.RemoveKeyword(BlockPlayerActivation)
			GunToPlace.RemoveKeyword(BlockWorkshopInteractionKeyword)
			GunToPlace.SetMotionType(Motion_Dynamic)
			Game.Getplayer().AddItem(GunToPlace)
			WH_IsWeaponPlaced = 0

	endif	
endfunction

Function RackLights()
	
	if WH_BackLightIsOn == 0 
		WH_BackLightIsOn = 1
		AMBElectricArcSmall.play(SELF)
		LightMarker.Enable()
		utility.wait(0.5)				;;because it happens with delay
		 LightLampOff.Disable()
	else
		WH_BackLightIsOn = 0	
		AMBElectricArcSmall.play(SELF)
		LightLampOff.Enable()
		utility.wait(0.5)				;;because it happens with delay
		LightMarker.Disable()
	endif	
endfunction
Опубликовано
В своё время помню сталкивался с подобной загадкой, и насколько помню конкретно со скриптами оно никак связанно не было, а скорей с модельной подноготной этих самых манекенов и какими-то глубинными внутренними багами в движке игры. Причём именно, доказано, на разных машинах/разных ОСях оно вело себя по разному.
Итого в моём случае помогало просто подбирать положение и вроде не любило больших целых значений (чёткой ориентации по сторонам света). Но тоже так-себе решение ибо эти манекены и ванильные игровые много где не работают.

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

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

Создать аккаунт

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

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

Войти

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

Войти
×
×
  • Создать...