Один из вариантов(типа злой) прохождения "храма" позволяет игроку получить "портативный водоочиститель", простейшая штуковина, скрипт SRHWaterCleanerScript [SCPT: XX38D3C1] раз в 12 часов смотрит наш инвентарь ищет там грязную воду, удаляет её, спавнит чистую воду и уходит на перезарядку. Если отредактировать его в нижеприведенный формат - этот переносной очиститель сможет работать с дополнительной грязной водой которую добавляет какой то из модов в МСМе обозванный "Вода и еда".
Но тут нюанс, эта дополнительная грязная вода живет в RA-Items.esm а значит или в море квестов подключать его как мастер, или отдельным патчем-плагином подрубать.
Спойлер
scn SRHWaterCleanerScript
;=======Скрипт портативного водоочистителя
short iIsInInventory ;ну понятно
short iWaitModeCounter ;short-так надо
float fLastAction ;когда сработал последний раз
float fOstatok ;для точности (в режиме сна скрипт не исполняется)
float fDelta ;пауза между срабатываниями (1 = 1 день)
Begin OnAdd Player
set fDelta to 0.5
set iIsInInventory to 1
set fLastAction to GameDaysPassed ;начальное "обнуление"
end
Begin OnDrop Player
set iIsInInventory to 0
end
Begin GameMode
if iIsInInventory
if (GameDaysPassed - fLastAction) > fDelta ;прошло ли достаточно времени
set iWaitModeCounter to ((GameDaysPassed - fLastAction)/fDelta) ;если игрок спал(и если не спал - тоже)
set fOstatok to ((GameDaysPassed - fLastAction) - (iWaitModeCounter*fDelta)) ;остаток времени, который не должен потеряться
if Player.GetItemCount WaterUnpurified > 0
Player.RemoveItem WaterUnpurified iWaitModeCounter 1
Player.AddItem WaterPurified iWaitModeCounter 1
set fLastAction to (GameDaysPassed - fOstatok) ;компенсируем остаток времени
else
if Player.GetItemCount WOxWaterBad > 0
Player.RemoveItem WOxWaterBad iWaitModeCounter 1
Player.AddItem WaterPurified iWaitModeCounter 1
set fLastAction to (GameDaysPassed - fOstatok) ;компенсируем остаток времени
else
if Player.GetItemCount WOxWaterTerrible > 0
Player.RemoveItem WOxWaterTerrible iWaitModeCounter 1
Player.AddItem WaterPurified iWaitModeCounter 1
set fLastAction to (GameDaysPassed - fOstatok) ;компенсируем остаток времени
else
set fLastAction to GameDaysPassed ;"обнуление", если нечего конвертировать
endif
endif
endif
endif
endif
end
Немного поиграл уже с правкой - полет нормальный. По сути она просто добавляет на авторском же коде дополнительные проверки на дополнительную воду, а если не находит и её - уводит очиститель в перезарядку.
Вполне осознанно не подключал облученную воду, только грязную.
Один из вариантов(типа злой) прохождения "храма" позволяет игроку получить "портативный водоочиститель", простейшая штуковина, скрипт SRHWaterCleanerScript [SCPT: XX38D3C1] раз в 12 часов смотрит наш инвентарь ищет там грязную воду, удаляет её, спавнит чистую воду и уходит на перезарядку. Если отредактировать его в нижеприведенный формат - этот переносной очиститель сможет работать с дополнительной грязной водой которую добавляет какой то из модов в МСМе обозванный "Вода и еда".
Но тут нюанс, эта дополнительная грязная вода живет в RA-Items.esm а значит или в море квестов подключать его как мастер, или отдельным патчем-плагином подрубать.
scn SRHWaterCleanerScript
;=======Скрипт портативного водоочистителя
short iIsInInventory ;ну понятно
short iWaitModeCounter ;short-так надо
float fLastAction ;когда сработал последний раз
float fOstatok ;для точности (в режиме сна скрипт не исполняется)
float fDelta ;пауза между срабатываниями (1 = 1 день)
Begin OnAdd Player
set fDelta to 0.5
set iIsInInventory to 1
set fLastAction to GameDaysPassed ;начальное "обнуление"
end
Begin OnDrop Player
set iIsInInventory to 0
end
Begin GameMode
if iIsInInventory
if (GameDaysPassed - fLastAction) > fDelta ;прошло ли достаточно времени
set iWaitModeCounter to ((GameDaysPassed - fLastAction)/fDelta) ;если игрок спал(и если не спал - тоже)
set fOstatok to ((GameDaysPassed - fLastAction) - (iWaitModeCounter*fDelta)) ;остаток времени, который не должен потеряться
if Player.GetItemCount WaterUnpurified > 0
Player.RemoveItem WaterUnpurified iWaitModeCounter 1
Player.AddItem WaterPurified iWaitModeCounter 1
set fLastAction to (GameDaysPassed - fOstatok) ;компенсируем остаток времени
else
if Player.GetItemCount WOxWaterBad > 0
Player.RemoveItem WOxWaterBad iWaitModeCounter 1
Player.AddItem WaterPurified iWaitModeCounter 1
set fLastAction to (GameDaysPassed - fOstatok) ;компенсируем остаток времени
else
if Player.GetItemCount WOxWaterTerrible > 0
Player.RemoveItem WOxWaterTerrible iWaitModeCounter 1
Player.AddItem WaterPurified iWaitModeCounter 1
set fLastAction to (GameDaysPassed - fOstatok) ;компенсируем остаток времени
else
set fLastAction to GameDaysPassed ;"обнуление", если нечего конвертировать
endif
endif
endif
endif
endif
end
Немного поиграл уже с правкой - полет нормальный. По сути она просто добавляет на авторском же коде дополнительные проверки на дополнительную воду, а если не находит и её - уводит очиститель в перезарядку.
Вполне осознанно не подключал облученную воду, только грязную.
Поделиться сообщением
Ссылка на сообщение