Безобразное решение! - Во-первых, тогда освобождённый из спутников персонаж станет голым. Голыми будут и все персонажи, с которыми я это сделаю, но ещё не возьму в спутники. - Во-вторых я должен тогда поменять в игре всех персонажей, которые являются потенциальными спутниками. Для совместимости же с другими модами, мой мод должен как можно меньше затрагивать ванильных персонажей. Вообще, мод должен минимально затрагивать остальную игру - только в той мере, в какой это совершенно необходимо. Чем меньше мод портит остальную игру, тем выше его совместимость с другими модами.
Gargule, Извини за резкий ответ Все мы постоянно учимся и все были когда-то чайниками. Чем больше узнаёшь, тем больше понимаешь, что остаёшься чайником
Можно ли сделать скрипт на кольцо, который бы при одевании и снимании кольца менял один Outfit персонажа, одевшего кольцо, на другой? Поясню. В игре есть объекты Outfit. Это списки, содержащие элементы брони и одежды. Каждому персонажу (кроме ГГ) в игре назначен один из стандартных Outfit. Персонаж одевает всё, что есть в этом списке, пока ГГ не возьмёт его в компаньоны. Но когда персонаж будет взят на службу, броня из Outfit будет замещаться на то, что будет выдано игроком персонажу, но только в том случае, если новая шмотка круче по мнению компьютера. В результате, хускарлов игрок не может переодеть в платье или раздеть. Мне нужно кольцо, которое можно было бы дать компаньону так, чтобы оно сделало Outfit персонажа пустым. Я вижу это так. Папирус позиционируется как объектно-ориентированный язык, значит, надо для каждого экземпляра кольца создать две локальные переменные со ссылками на Outfit0 и Outfit1. В игре создать пустой Outfit0. При одевании кольца заменять Outfit1 на Outfit персонажа, а Outfit персонажа на Outfit0. При снимании кольца операция проходит наоборот. Проблема в том, что я не знаком с папирусом. Поэтому подскажите, возможно ли это, или не стоить терять время, и, если возможно, то с чего надо начинать копать и что брать за прототип.
Kepper, как я понял, хотя меш и один, но он всё равно может состоять из частей. В этом случае там присутствуют 2 или 3 партиции. Присвоить им можно любой номер, но если их число сократить, то вторая партиция просто не будет отображаться. При совпадении номеров в А, АА и нифе, броня рисоваться должна. Если не рисуется, то причина другая. Может быть даже самая дурацкая, например, сейв испорченный просмотром предыдущего варианта брони. Немножко по вопросу распределения слотов на днях пояснила Кристина в ветке по моделированию. Но всё равно, у меня тут осталось много непонятностей. Как раз сейчас с этим разбираюсь.
AleksTirex, огромное спасибо! Одна беда, вопрос я задавал, ещё находясь дома, а сейчас отвечаю, уже и гостиницы в Армении, где у меня нет ни редактора ни Скайрима. Ничего, через несколько дней буду всё это отрабатывать.
Выше я жаловался ни то, что у меня отказывался открываться редактор. Просто чистый редактор на чистой игре. Кроме того, не открывались никакие свойства скриптов (вис редактор). Хотел переставлять операционную систему. А причина моих бед нашлась и оказалась очень неожиданной. Сегодня обновился RAW конвертер Nikon Capture NX2 и все проблемы исчезли. Действительно, раньше они появились сразу после предыдущего обновления этого конвертера Так что, виновата его версия 2.4.3.
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №518
| Тема: Вопросы по скриптам Papyrus
написано: 19 октября 2013, 23:47
| Отредактировано: Myprism - 20 октября 2013, 10:10
VALKNUT, как я понимаю, в результате диалогов меняются числовые параметры игрока. Например, у НПС стоит, что он может следовать за игроком, но возможности следования присвоена цифра -1. В результате диалога она меняется. В параметрах пакетов же есть условия их выполнения. Т.е. пакет не ставится НПС в процессе игры, он там уже должен стоять, но в процессе игры меняются условия, которые включают тот или иной пакет.
Pein019, дракон будет летать сквозь землю и постройки только в том случае, если эта земля насыпана модом и постройки внесены им же. Те же, что уже есть в игре, имеют карту высот, дракон летает в соответствии с нею. Для новых объектов надо создать карту высот (в меню редактора). Насчёт остального, в игре существуют ряд маркеров для драконов. Вот как раз для тех мест, куда он будет садиться и куда падать. Надо взять в качестве образца готовое место с драконом и повторить оттуда то, что нужно. Чтобы дракон падал на землю при ухудшении здоровья, не нужно делать ничего. Он будет так поступать всегда.
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №520
| Тема: Вопросы по скриптам Papyrus
написано: 21 октября 2013, 17:06
| Отредактировано: Myprism - 21 октября 2013, 15:58
AleksTirex, я в папирусе пока новичок. Как компилировать скрипт использующий функции из СКСЕ? Компилятор же выдаёт ошибки: (9,36): GetOutfit is not a function or does not exist (12,11): QueueNiNodeUpdate is not a function or does not exist (21,10): QueueNiNodeUpdate is not a function or does not exist
SKSE поставил 1_06_16. Может, там надо давать ссылку на конкретный скрипт из SKSE?
Оп! Причину нашёл. Оказывается, надо ставить SKSE не в виде инсталлера, а в виде зип-архива. Они различаются папкой src, которая инсталлером не ставится. С ней всё скомпилировалось!
Добавлено (21 Октября 2013, 21:06) --------------------------------------------- AleksTirex, ну вот, пошли первые результаты! Прежде всего, ещё раз хочу поблагодарить за пропуск мне в мир скриптов. Мне, главное, нужно было получить образец, зацепку, которую я дальше буду изменять.
Результаты очень интересные. Строка akActor.RemoveAllItems(Game.GetPlayer()) оказалась не нужна вообще. Дело в том, что в игре есть фича восстановления персонажей в исходное состояние. Она действует так: после удаления последней шмотки полностью восстанавливается до Оутфит одёжка персонажа. Так, например, аналогичной консольной командой раздеть персонажа не получится, так как он тут же оденется. То же самое оказалось и тут. Но выяснилась одна деталь: этот механизм восстанавливает персонажа не до нового оутфита, а до родного игрового. Таким образом, эта строка полностью отменяет все действия скрипта. А вот убирание этой строки (два раза, естественно), дало как раз такой результат, как нужно. При этом при выдаче кольца, оутфит полностью пропадает, но восстанавливается, если кольцо забрать назад.
2. Теперь ты удалил всё из инвентаря НПС, он типа опять оделся в одежду из родного оутфит. После этого меняешь оутфит на новый и... и получаешь 100% эффект из пункта №1.
А вот тут нет. Движок игры при опустошении инвентаря ставит старый оутфит и игнорирует, что он был заменён. У персонажа он был заменён, но игра поставит старый. Реально это выглядит так: при одевании кольца герой на мгновение становится прозрачным, на второе мгновение - голым (в новом оутфите нет одежды), и тут же одевает старый оутфит. Дальше это можно продолжать до бесконечности Скорее всего, ставя новый оутфит, игра сама помнит дефолтный. А механизм "починки" инвентаря персонажа не чинит текущий оутфит, а возвращает дефолтный. Это пока первые результаты, а дальше мне предстоит играться тут много. Дело в том, что я не пустой оутфит использую. Там у меня компоненты тела. Я хочу не только дать возможность игроку без ограничений переодевать компаньона, но и менять ему модель тела, не используя реплейсеров для всей игры. Тут мне ещё придётся много играться с занимаемыми многокомпонентной бронёй слотами
Да, все персонажи - потенциальные компаньоны являются уникальными актёрами. Для следования нужно ставить отношения к главному герою, а это можно сделать только для уникальных актёров.
Немного из другой области, но всё равно, на всякий случай спрошу. В игре для персонажей предусмотрены два оутфита. Ещё и оутфит для сна. Пакеты позволяют его установить именно для сна, но в игре это не работает. На самом деле, во всём Скайриме разработчики установили спальный оутфит всего нескольким персонажам. Я проверил всех, не переодевается ни один. Как будто механизм предусмотрен, но почему то не работает. Может знаешь, как починить?
akActor.SetOutfit(kOutfitEmpty)akActor.GetActorBase().SetOutfit(kOutfitEmpty) Результаты таких команд разные.
А в чём заключается разница? Возможно, первый вариант меняет оутфит у данного экземпляра неписи, а второй у всех экземпляров данной неписи? На одном уникальном персонаже (да Лидка это) я разницы не вижу.
В конце подземелий Храма Ветреного Пика есть драугр-бос (вылезает из саркофага), у него находится драконья скрижаль. Но это же левельный драугр, у которого в инвентаре ничего нет. Как ему передают эту самую скрижаль?
Конечно же я ничего не помню. Просто забери её из кольценосцев исправленную и всё.
Imperator3, Спасибо! Похоже, это то, что нужно. По крайней мере, это реальная ссылка на эту скрижаль. Мне нужно вместе с ней этому драугру амулет подсунуть Теперь понятно, где копать.
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №525
| Тема: Вопросы по скриптам Papyrus
написано: 26 октября 2013, 02:34
| Отредактировано: Myprism - 23 октября 2013, 09:59
Есть у меня в моде два призрака, которых можно брать в компаньоны. Отличает их от прочих неписей только 2 свойства: 1. Установлено isGhost, что делает их неуязвимыми и 2. Молитва GhostAbility - делает непись полупрозрачной и светящейся. Естественно возникло желание дать возможность игроку их воскрешать. Скрипт воскрешения вставил в колечко:
Event OnEquipped(Actor akActor) if akActor != Game.GetPlayer() akActor.RemoveSpell(RemovedSpell) endIf endEvent
Event OnUnequipped(Actor akActor) if akActor != Game.GetPlayer() akActor.SetGhost(false) endIf endEvent
В свойствах скрипту передаётся молитва GostAbility
Почти получилось Вернее, вторая часть работает идеально - после снимания кольца непись навсегда становится уязвимой. А во с первой частью хуже: 1. При одевании кольца свечение гаснет медленно и красиво, а вот полупрозрачность сохраняется. 2. При выходе в другую локацию свечение возобновляется и убирается повторным одеванием кольца. Почему не убирается полупрозрачность? И, почему свечение возвращается?
С полупрозрачностью разобрался, точнее научился её лечить, добавив строку akActor.SetAlpha(1)
Никаких строк с удалением всех вещей (в том числе и в сундук) ставить нельзя. Можно было бы, если бы это был скрипт молитвы, но строка удаления вещей удаляет и кольцо, в результате чего скрипт переходит во вторую фазу и ничего не делает Из-за этого я ранее неправильно интерпретировал его работу. В текущем же виде всё отлично. При одевании кольца неписью визуально ничего не меняется, но все шмотки, что раньше были у неё в оутфите становятся доступны для обмена и отбирания. Если кольцо снять, предварительно отобрав все шмотки, непись их восстановит себе при переходе в другую локацию. Если отобрать часть, то так и будет ходить полуголой, но если недостающие ей вернуть, то она будет считать их своим оутфитом, и примет их именно в оутфит!
Event OnEquipped(Actor akActor) if akActor != Game.GetPlayer() if akActor.HasSpell(RemovedSpell) akActor.removeSpell(RemovedSpell) endif akActor.SetAlpha(1) akActor.QueueNiNodeUpdate() endIf endEvent
Event OnUnequipped(Actor akActor) if akActor != Game.GetPlayer() akActor.SetGhost(false) endIf endEvent
Параметром тут передаётся установленная у моих призраков молитва GhostAbility. Скрипт работает как надо, за исключением одного: он снимает действие молитвы, но как будто не убирает у непися саму эту молитву. Дело в том, что при переносе в другую локацию непись снова находится под действием этой молитвы и для снимания этого действия надо снова одевать амулет (скрипт на пока амулете). Как убивать эту молитву с корнями?
И, раз я научился менять оутфиты, хочу сделать переодевание ко сну хоть у своих персонажей. В связи с этим вопрос: как засекать события засыпания и просыпания?
Добавлено (26 Октября 2013, 06:34) --------------------------------------------- Понял, почему призрачность восстанавливается при смене локаций. Проблема в том, что спеллы можно убирать только у актёра, а при смене локации происходит синхронизация спелов актёра с базовым актёром. А ведь GhostAbility стоит именно у базового актёра и у него я пока не знаю как её убирать
Специалисты по квестам, помогите. У меня очень простой квест: игрок должен забрать ключ убив Драугра. Всё нормально, если ключ лежит рядом с Драугром: после убийства драугра появляется указатель на ключ, с предложением его забрать. После забирания квест заканчивается. Но я хочу, чтобы этот ключ был внутри драугра (у него), чтобы игрок забирал его с трупа. Положить непосредственно в инвентарь я не могу, так как драугр левельный. Тогда я в игре делаю алиас для драугра Specific Reference (непосредственно на него) и алиас для ключа Create Reference to Object in Draugr (алиас драугра). Но после убийства драугра ключа у него не обнаруживается. Т.е. моя проблема в том, что я ничего не могу дать левельному участнику квеста. Где собака зарыта? Диалогов в квесте нет.
Artem13, - Алиаса для локации я не создал. Сейчас попробую, но с тем же Ветреным Пиком мне это не помогло. Я не сумел тому драугру ничего добавить. - Квест обджект, как я понял, означает только, что герой не может выкинуть его из инвентаря. Но протестирую специально. - Скрипт там стандартный для установки нужной стадии квеста. В квесте Ветренного Пика этот скрипт просто сдаёт камень Фаренгару и переводит квест дальше Я делаю какую-то простую ошибку Там же в алиасе неписи и места для инвентаря и для молитв, а у меня туда ничего не передаётся, вещей не оказывается, а молитвы не действуют.
AleksTirex, с переодеванием на ночь получается отлично! Я просто для сна ставлю спальный оутфит вместо обычного. Вот только актёра я передаю скрипту через параметр, что наверняка не есть правильно Как узнать актёра в скрипте на отслеживание смены AI-пакетов?
Изменение репутации для пользователя Myprism
MyprismOffline
Сообщение №530
| Тема: Вопросы по скриптам Papyrus
написано: 27 октября 2013, 02:25
| Отредактировано: Myprism - 27 октября 2013, 02:45
AleksTirex, то что нужно! Просто у меня на первых порах проблемы с синтаксисом и я не знал, как правильно использовать Self. Параметром я назвал передачу значения переменной в скрипт. В данном случае, у меня было Actor property akAktor Auto.
Добавлено (27 Октября 2013, 06:25) --------------------------------------------- И всё же не компилируется Вот начало скрипта: Scriptname aaSleeping extends ObjectReference
Package Property akPackageSleep Auto ;Actor akActor = Self ;Actor akActor = Self.GetActorRef() Actor akActor = Self as Actor Outfit kOutfit
Event OnPackageStart(Package akNewPackage) if akNewPackage == akPackageSleep ; пакет начался, НПС идёт к кровати kOutfit = akActor.GetActorBase().GetOutfit(false) akActor.SetOutfit(akActor.GetActorBase().GetOutfit(true)) endif endEvent
Ругается во всех трёх вариантах одинаково: (6,16): no viable alternative at input 'Self' (6,21): required (...)+ loop did not match anything at input 'as' (6,6): Unknown user flag Self
я бы просто создал скрипт, который при смерти драугра добавляет ключик, и повесил бы его на алиас драугра))
Дело в том, что у меня задача давать что-то алиасу не единственная. Я только хотел отработать с этим ключом саму технологию. Главное, мне нужно научиться давать спелл алиасу, так как его я потом могу у алиаса забрать, а вот у самого объекта этого сделать нельзя. Важна технология. А обходных путей много: например, создать специально уникального драугра, которому можно напихать что угодно. Да и в прежней версии мода этот ключик у меня лежал рядом с драугром и всё было в порядке за исключением того, что иногда ключик улетал фиг знает куда от взрывов
Добавлено (27 Октября 2013, 10:31) --------------------------------------------- В принципе, то, что мне надо, описано в видеоуроках Кальяна. Но для меня просто пытка смотреть нудный и затянутый видеоряд. Ведь приходится совершенно непроизводительно тратить время на просмотр банальных вещей, в надежде выловить изюминку. Для специалиста нужна текстовая документация или исходник примера, а видео это для дебилов из поколения пепси А там же ведь 4 части. Многократно просмотрел всё, не обнаружил, что я пропустил. Вот если бы посмотреть исходник, я бы нашёл упущенное... Вообще, кому удалось создать квестом вещь в инвентаре левельного персонажа?
AleksTirex, Большое спасибо! Теперь всё в порядке. Не хватало правильного типа скрипта в заголовке. На случай, если кому ещё пригодится, вот работающий вариант:
Scriptname aaSleeping extends Actor
Package Property akPackageSleep Auto Outfit kOutfit0 Outfit kOutfit1 ;Сон
Event OnPackageStart(Package akNewPackage) if akNewPackage == akPackageSleep ; пакет начался, НПС идёт к кровати kOutfit0 = GetActorBase().GetOutfit(false) kOutfit1 = GetActorBase().GetOutfit(true) endif endEvent
Event OnPackageEnd(Package akOldPackage) if akOldPackage == akPackageSleep ; пакет продолжается, НПС лёг на кровать SetOutfit(kOutfit1) endif endEvent
Event OnPackageChange(Package akOldPackage) if akOldPackage == akPackageSleep ; пакет закончился, НПС встал с кровати SetOutfit( kOutfit0) endif endEvent
Скрипт переодевает персонажа в установленный ему спальный оутфит, когда персонаж ложится в кровать. Т.е. исправляет недоделку игры. В качестве параметра скрипту надо передать спальный пакет персонажа.
Увы, нет. Я использую сейв специально сделанный в начале игры без каких либо модов. Правда сейчас у меня возникли сомнения. Работы было много и я мог его испортить. Создам и проверю по-новой, но не сразу. Пока в этом тайм аут. Скажи, пожалуйста, для правильного заполнения алиасов достаточно ли сделать один сев в игре с отключенным модом, или надо чисто проходить её до этого места? Правильно ли ставить квестам галочку, чтобы они начинались с самого начала игры?
To all: В этой ветке я не раз спрашивал, как сделать так, чтобы супруг или супруга соглашались жить с главным героям в локациях мода, а сами эти локации появились в меню выбора места проживания с супругом. Решение нашлось (Извините, на английском):
Getting the vanilla spouses to move in was a lot easier than I expected. A couple of people have asked, so I thought I'd share what i did here. If you're new to script or dialogue editing, check the CK Wiki out, for a good introduction. I hope I've included enough detail for this mini-tutorial, but let me know if things don't work or if you have questions.
These steps will allow you to:
+ Get your spouse to move to your new house + Get your spouse's AI to do things around the new house + If your spouse has a trade, will let the find a job (I think - this is the part I didn't thoroughly test).
PART I: SET UP THE DIALOGUE
1) Find the Quest/Relationship quest "RelationshipMarriageFIN." Go to Dialogue Views: you need to adds dialogue nodes to RelationshipMarriageFINMovingView and RelationshipMarriagePostWeddingView. You'll be doing the same thing in both places, so just repeat the following for each of them:
2) Copy the topic node for one of the other houses and paste them in the same topic area, Be sure to copy all seven response-infos for the seven voice types. Then link them to the original node. You'll need to link each of the seven responses to the "I want to move" node to your new node (see wiki for how to do this).
3) In your new node, change the topic (which is the player's line) to refer to your custom house ("I want us to move to YourHouse"): You don't need a voice for that, so no need to record new voice files.
PART II: THE QUEST SCRIPTS
4) Still in the Quest Editor, go to Quest Aliases. You'll be setting up a new alias for your house. Copy and paste works just fine here, just change the name of the Alias to refer to your house.
5) Double click on your new Alias to set up some functions. In the Factions area, choose factions that begin with ServiceSpouse followed by the closest city and their profession. Since my house was outside Whiterun, I just copied the factions from Breezehome. What I *think* this does, though I haven't tested it for all spouses, is that if they have a trade, like smithing, they'll commute to the smithy in that town. So if you're in the middle of the country, you might not want any factions (or to define your own.)
6) More importantly, on the right bottom of the Alias window is an area for Alias Package Data, which defines what the spouse ai is allowed to do in the house. Double click that to open up a package page. I essentially used one of the existing packages as a template to allow all the basic activities, gave it a new name, and let the CK save it as a new Editor ID. It's important to give it a new name, because you WILL be changing one important thing, and you don't want to accidentally overwrite the ai for a vanilla house. In the first line, the package defines the cell where these things will be allowed to happen. Make sure to have your house's indoor cell selected. Hit OK to save the package, make sure the new package is what shows up on the alias page, and then hit OK on the Alias page to save it.
PART III: BACK TO THE DIALOGUE
7) Almost done! For each of the seven responses (and remember you need to do it for 2 dialogue views), you'll need to add a papyrus fragment. You can essentially begin with what you already copied. But what you will need to do it add a new property for the script fragment, so click on the Script name, then hit properties. You'll be adding a property called ReferenceAlias which you will then define as the alias you created in step 4 (example YourHouse). You can also name the property the same thing. Hit return to go back to the topic info window.
8) You will want to change the script fragment to be: (GetOwningQuest() as RelationshipMarriageSpouseHouseScript).MoveSpouse(akspeaker, YourHouse)
9) Now, while you can copy and paste that fragment for all seven (14) of the responses, you will also need to manually set the ReferenceAlias property (step 7) manually for each them. A little tedious, but it doesn't take too long.
10) Remember to do this for both dialogue views. One is for immediately after the wedding, the other is for any time during your long, happy marriage. Make sure you've compiled all your scripts and that they don't have any errors. Hit OK on the Quest Editor.
That's it!
Now this will only work for vanilla spouses or custom spouses that use vanilla spouse voices. If you have a custom spouse with new voicing, you'd add an "info" response to the moving topic for both the post-wedding and moving views (which is how you'd get them to move to the vanilla houses, too).
Under Miscellaneous/Idle Markers, you'll find those neat little blue ai squares, that you can put all over your house (appropriate ones, please, unless you like your spouse grazing on the floor). Because of the navmesh bug, your spouse won't always go to them, but once Beth fixes that (I hope), your spouse's package will let them pick animations and activities to do. They'll also use activators like alchemy tables, etc. In my test, I had Argis the Bulwark sweeping the floors in full Ebony Mail. "Yes, dear."
By the way, I'm pretty sure this can work for multiple houses. The only thing I'm nervous about is that linking my new dialogue node to the "I want to move" topic, technically counted as a change to the "I want to move" topic itself. I'm hoping that you can add more than one link through an esp.
В редакторе условия выполнения чего-либо записаны так: условие 1 and условие 2 and условие 3 and условие 4 and Вместо оператора and может быть установлен оператор or. Но каков порядок их выполнения? Ведь оператор в последней строке смысла не имеет. По обычным правилам сначала выполняются операторы and и только потом or. Но это предмет предварительной договорённости. Тут же, как я понимаю, скобки не предусмотрены. Это значит, что для того, чтобы написать условие: (условие 1) and ((условие 2) or (условие 3)) and (условие 4), я должен сделать вот такую громоздкую запись: условие 1 and условие 2 and условие 4 or условие 1 and условие 3 and условие 4 and ???
AleksTirex, я просто в шоке! Это своя логика. Целесообразность именно её понять нельзя, её можно только принять :)
Цитата AleksTirex
или (и (2) и (1) и (4))или (и (3) и (1) и (4))
Великолепный пример и объяснение. Надо просто читать справа налево и понимать логические операторы в бытовом смысле А почему избегают сложных построений, теперь понятно - ведь объём таких вычислений резко растёт с ростом числа ИЛИ.
Тогда скажи, ещё пожалуйста, эквивалентны ли комбинации условий: условие 1 and условие 4 and условие 2 or условие 3 or и условие 1 and условие 2 or условие 3 or условие 4 and
AleksTirex, Мой интерес обусловлен вот чем. Для создания учителя можно взять уже готового, но в его диалогах прописано условие, кто их произносит. Стоит поставить туда своего персонажа, и он будет учить и говорить всё это, но оригинальный перестанет. А вот если туда поставить обоих, то работать начинают оба, но вот с этой самой непонятной логикой. Например, чтобы учить магии разрушения, то прототипом надо брать Фаральду, а у неё стоит условие, что ученик должен быть членом коллегии магов. Но моему учителю это должно быть безразлично. Выходит так: если я всем учителям ставлю ИЛИ и двигаю их вниз списка, то получаю нужный мне функционал, но некоторые проверки (принадлежность Коллегии) надо для моего персонажа выводить за скобки. Вроде, с программированием на разных языках у меня не было раньше проблем, но вот квесты и диалоги в Скайриме меня часто приводят в недоумение...
источником света является солнце. От которого получаем градиенту/теплую тень.Чем ближе к источнику света - тем светлей. Чем дальше - тем темней. Аналогично и с цветовой гамой: чем ближе к источнику - тем теплей ... чем дальше - тем боле холодная.
Не смог пройти мимо... 1. Солнце от нас на каком расстоянии? Сопоставьте размеры любой планеты с расстоянием от неё до её светила и Вы поймёте, что в пределах планеты освещённость не зависит от расстояния до солнца Но зависит от угла падения (по косинусу). 2. А теперь, пожалуйста, предъявите в студию доказательства изменения спектрального состава излучения в зависимости от расстояния светила от планеты. Кстати, не плохо бы обговорить, что такое "тёплый" и что такое "холодный" свет. Для цветов принято считать красноватые тёплыми, голубоватые холодными, а вот для источников света, наоборот, чем холоднее поверхность источника (если это тепловое излучение), тем краснее его цвет и чем горячее источник, тем синее его излучение. Есть даже такая формула Планка.
Нельзя. Текстура не существует в игре без модели. Но существуют модели куба, на которые можно натянуть 6 текстур или модели квадратов, из которых можно собрать этот самый куб. Кстати, модель квадрата при желании можно сделать и в текстовом редакторе Дальше нужна либо развёртка звёздного неба на стороны куба, либо другая сферическая панорама, которую можно развернуть на 6 сторон. Если есть шестисторонняя панорама, то её можно натянуть и на сферу. Это я проделал для палантиров в своём моде Кольценосцы . Там я использовал собственные панорамы и натянул их на сферы. До того, как я научился натягивать панорамы на сферы, в старом моде Небесный Замок я использовал кубик. Кубик с панорамой Гималаев там лежит на столе в Библиотеке Замка.