BonaQua
Друг
В этом уроке мы научимся создавать стеклянные/прозрачные объекты.
Нам потребуется:
- s3pe
- s3oc
- Блокнот
- Object Tool
- Подключение к интернету
Создаём папку, в которую поместим временные файлы.Запускаем программу s3oc, выполняем команду File -> New (Clone)(legacy) или Cloning -> Normal objects (в зависимости от версии Вашей программы). Находим предмет, который будем делать стеклянным и выполняем команду Clone or Fix... -> Start -> Ok |



Теперь открываем сохранённый файл формата package в S3pe: File -> Open.Извлекаем все файлы с тегами (Tag) MLOD и MODL: Resource -> Export -> To file... сохраняем в папку с временными файлами. Этих файлов с тегами может быть от 2-х до 6-ти. |


Создаём в рабочей папке папок под кол-во файлов из предыдущего шага. Названия можете дать любые, но лучше 1,2,3 и так далее, чтобы не путаться. Кладём MLOD'ы и MODL'ы по одному файлу в каждую папку. |

Выбираем папку 1, кликаем по файлу правой кнопкой мыши и выбираем функцию Открыть с помощью... - S3ObjTool.exe: |

В появившемся окошке кликаем на кнопку "Decompile" и указываем путь к файлу в папке "1" -> Open: |


Если всё сделали верно, в правом окошке появится сообщение "No errors": |

Повторите этот шаг для остальных файлов. |
Если вы откроете сейчас любую из созданных вами папок, то увидите очень приличное количество новых файлов. Кое-какие нам нужно будет подправить в блокноте. но для начала нужно выяснить какие. Возвращаемся в S3ObjTool, жмём MODL\MLOD Info и указываем путь к уже известному нам файлу в папке "1": |

Справа появилась некая информация:![]() | |
Находим группу (Group) с самым большим числом граней (Faces). Под этой строчкой находится еще одна - MTST. Под ней мы видим block со своими индивидуальными номерами, которые нам и нужны. Открываем папку "1" и находим в ней block (.mtlsrc), которые нам показала программа. |

Кликаем правой кнопкой мыши на первый нужный нам block и выбираем: Отправить... - Блокнот: |

Видим следующее:![]() | |
Этот код нам и предстоит править. Но для начала нужно повторить операцию Отправить -> Блокнот для всех нужных нам block в папке "1" и вернуться к S3ObjTool: снова кликаем по MLOD\MODL Info, но на этот раз указываем путь к файлу в папке "2". Ищем в правом окошке Group с самым большим значением Faces, находим в папке "2" показанные файлы block и вновь повторяем "Отправить" -> "Блокнот". |
В каких-то ситуациях файлов block может не быть вообще. Как здесь:![]() | |
В этом случае смотрим на значение Matl_block. На скриншоте выше Matl_block = 1 - это значит, что в папке нам нужно искать файл под названием "...block01.mtlsrc". В конце концов, у вас должно быть открыто от 2-х до 8-ти окошек Блокнота с текстовым содержимым. |
Переходим в одно из окон Блокнота (сoветую запомнить номер открытого в нем block'а), жмём Ctrl + A, копируем один из следующих кодов и вставляем вместо выделенного текста: |
Неперекрашиваемая текстура (стекло останется в игре только того цвета, что мы зададим ему в следующем шаге):
; decompiled with S3ModlD V1.00 - by Wesley Howe
MATD 0103
MtlName 0x920790DF
ShaderName GlassForObjectsTranslucent
MTNF 12
UVScales 1 3 0.000030518509 0.000000000000 0.000000000000
EdgeDarkening 1 1 0.000000000000
NormalUVScale 1 2 1.000000000000 1.000000000000
RefractionDistortionScale 1 1 0.000000000000
NormalMapScale 1 1 1.000000000000
Shininess 1 1 20.000000000000
DiffuseUVScale 1 2 1.000000000000 1.000000000000
Specular 1 3 0.500000000000 0.500000000000 0.500000000000
SpecularUVScale 1 2 1.000000000000 1.000000000000
Diffuse 1 4 0.321782201529 0.321782201529 0.321782201529 0.141975298524
FresnelOffset 1 1 0.500000000000
Transparency 1 1 1.000000000000
Перекрашиваемая текстура (стеклу можно задать узор в Create - A - Style):
*данный код пока только проверяется, гарантии его работы на всех предметах нет*
; decompiled with S3ModlD V1.00 - by Wesley Howe
MATD 0103
MtlName 0xE01A0BB8
ShaderName GlassForObjectsTranslucent
MTNF 21
Transparency 1 1 1.000000000000
DiffuseUVSelector 1 3 0.000030518509 0.000000000000 0.000000000000
UVScales 1 3 0.000030518509 0.000000000000 0.000000000000
EdgeDarkening 1 1 0.000000000000
SpecularUVSelector 1 3 0.000030518509 0.000000000000 0.000000000000
SpecularMap 4 4 30000003 00000000 00000000 00000000
MaskWidth 2 1 00000200
MaskHeight 2 1 00000200
SpecularUVScale 1 2 1.000000000000 1.000000000000
DiffuseMap 4 4 30000004 00000000 00000000 00000000
MaskWidth 2 1 00000200
MaskHeight 2 1 00000200
NormalMapScale 1 1 1.000000000000
DiffuseUVScale 1 2 1.000000000000 1.000000000000
0x449A3A67 2 1 00848484
Specular 1 3 0.495049506426 0.495049506426 0.495049506426
Shininess 1 1 20.000000000000
Diffuse 1 4 0.519999980927 0.519801974297 0.519801974297 0.802469074726
NormalUVScale 1 2 1.000000000000 1.000000000000
RefractionDistortionScale 1 1 0.000000000000
FresnelOffset 1 1 0.200000002980
Сохраняем файл с заменённым текстом (не закрываем его!): Файл -> Сохранить и копируем тот же самый код во все остальные окна Блокнота. Каждое из них также следует сохранить. |
Цвет. Идём на Вы должны авторизоваться, чтобы увидеть эту ссылку сайт и выбираем из списка один из оттенков - исключительно на ваш вкус. По сути, нам от этого сайта нужны только значения Red - Green - Blue для выбранного вами цвета. Если не хотите ограничиваться выбором, представленным на сайте, можно подобрать свой цвет в графическом редакторе, к примеру, в Photoshop'е. Я выбрала нечто под названием "brown 2": |

Когда цвет выбран, и значения RGB находятся перед вами, переходим на эту страничку, вводим в указанной строчке Red - в первое окошко(#1), Green - во второе (#2), Blue - в третье (#3) и кликаем на кнопку Start: |

Ниже, на чёрном фоне появился ряд новых значений RGB. Нам нужна колонка RGB 0÷1: |

Разворачиваем любое из окон Блокнота и находим в тексте строчку Diffuse: |

Видим в ней 4 значения. Первые три отвечают за цвет - по порядку: Red, Green и Blue. Копируем первое число из колонки RGB 0÷1, вставляем его вместо первого числа в строчке Diffuse и дописываем к нему 7 нулей: |

Таким образом, было 0.321782201529 -> изменили на 0.933330000000. Повторяем то же самое для 2-го и 3-го числа в колонке RGB 0÷1 - второе вставляем в Блокнот на место второго и дописываем 7 нулей, третье на место третьего - тоже приписываем 7 нулей: |


4-е число в этой строке отвечает за прозрачность текстуры. Чем оно меньше, тем более прозрачным получится предмет. Например, при значении 0.100000000000, цвет стекла практически неразличим, а при значении 0.800000000000 цвет остаётся достаточно насыщенным.
Сохраняем файл: Файл -> Сохранить. Копируем строчку Diffuse целиком и вставляем в каждое окно Блокнота вместо такой же строчки. Еще раз сохраняем каждый из файлов (Файл - Сохранить) и закрываем группу целиком. |
Собираем объект. Снова понадобится S3ObjTool. Кликаем Recompile и указываем по очереди путь ко всем файлам в папках, которые мы создавали в шаге 4. |

S3ObjTool можно закрыть. Разворачиваем s3pe и импортируем в package изменённые MLOD'ы и MODL'ы: Resource -> Import - From file... -> выбрать файл с иконкой S3ObjTool. |


После каждого удачного импорта в списке окажется новый зачёркнутый файл: | |
![]() | |
После того, как импортировали в package все файлы из подпапок, сохраняем oбъект: File -> Save |

Закрываем s3pe и запускаем s3oc: Open (Fix) -> сохранённый package. |

Ждём полной загрузки и дважды кликаем на название: |

Теперь можно изменить детали вашего объекта и добавить превью, которое будет отображаться в каталоге предметов: Catalog Name - название предмета Catalog Desc. - описание предмета Price - цена Размер иконки не должен превышать 128х128px, её фон должен быть прозрачным, формат - png. |
Готово? Жмём Start и терпеливо ждём. Как только появилось окошко "Ok", можно поздравить себя, закрыть s3oc, скопировать packagе в папку Packages и запустить игру. Стекло само по себе выглядит замечательно. А если слегка поэкспериментировать с освещением, можно добиться чего-нибудь интересного: |


- Стекло на втором скрине - измененный ковер 4х4*
- Чтобы получить эффект, как на 2-м скрине, нужно:
- удалить напольное покрытие (в нужной части комнаты);
- положить стеклянный ковер (находится в декоре) - использовать чит: moveobjects on;
- края ковра (между ними и плитками пола останется небольшой просвет) застелить напольным покрытием.