Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Визуальный уровень
denis2000Дата: Пн, 10.10.2011, 21:36 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Визуальный уровень

Редактирование текстур, добавление новых текстур в игру, 3D моделирование и т.д.

Если у вас появились вопросы по созданию и редактированию трехмерных объектов ,изменению и добавлению текстур. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл:
1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R])
2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx"
3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо)
Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#"
Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]

[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти?
Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win хр лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка:
...
$app_data_root$ = true | false| $fs_root$| users\
(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx)
...
$logs$ = true| false| $app_data_root$| logs\
(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи)
...
[/cut][cut=Получение более подробной информации о вылете (ХОВАН)]
Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...)
Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так:
Код
function abort(fmt, ...)
                       local reason = string.format(fmt, ...)
                       error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Код
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil)

Второй:
Код
Expression    : 0
Function      : ErrorLog
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
Line          : 49
Description   : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic'

[/cut]


Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Ср, 09.08.2017, 11:21 | Сообщение # 766
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата sergej5500 ()
От какой точки в данном случае ведется отсчет? Где нулевая точка для point_x="120" и point_y="221"?

Ставите point_x="0" и point_y="0" и выясняете эту точку. Это левый верхний угол фрейма окна апгрейда-ремонта.

Цитата sergej5500 ()
Можно ли, сделав один раз скрин окна апгрейда, с помощью этого скрина вычислить координаты маркеров?

Чтобы один раз сделать скрин, придется для начала сделать координатную сетку для этого. Как я бы сделал:
1. Выяснил мин и макс координаты из существующих схем апгрейда. Например Х=150...200 У=80..160
2. Поставил бы апгрейдам координаты Х=150,У=80;Х=160,У=90...(то есть каждый раз с шагом 10 по обоим координатам, если по одной из координат диапазон закончиться раньше, то ее не менять, а менять только вторую) и сдалал скриншоты .
3. В Фотошопе объединил полученные скриншоты в одном слое и получил узлы координатной сетки, в другом слое нарисовал бы сетку используя полученные узлы и подписал координаты полученной координатной сетки.

4. Теперь сделав скриншот окна нового ствола и наложив на него полученную сетку можно легко и достаточно точно вычислять координаты меток (точность +-5 пикселей).


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Ср, 09.08.2017, 21:26 | Сообщение # 767
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

denis2000,

За помощь спасибо. Я с Вашей помощью нашёл такой способ. Возможно, кому то пригодится.

1. Делаем скрин окна апгрейда в разрешении 16х9.
2. Преобразуем полученный скрин в размер 1366х768 (если нужно).
3. Открываем скрин в Paint.net.
4. Подбираем на скрине место будущего маркера. Запоминаем координаты. В выбранных координатах будет левый верхний угол маркера.

5. Координату Y можно брать в готовом виде. Что выдал курсор в Paint.net, то и вставляем.

6. Координату Х нужно вычислять. Полученную от Paint.net координату умножаем на 50. Затем делим на 53. Результат округляем до целого числа. Затем вычитаем из него 135. Конечное число вставляем в файл схемы апгрейда.
 
men_stalkerДата: Чт, 17.08.2017, 13:56 | Сообщение # 768
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

Здравствуйте, подскажите как модель со скелетом в 3ds max запихать? Пытался конвертером Бардака с ключом -bones но полученный файл с расширением .bones не знаю как экспортировать в макс. Да и потом наверняка нужно совмещать с моделью (соответственно весы совмещать и т.д.). Как грамотно экспортировать модель из сталкера в 3ds max?
 
denis2000Дата: Чт, 17.08.2017, 14:01 | Сообщение # 769
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата men_stalker ()
Здравствуйте, подскажите как модель со скелетом в 3ds max запихать?

Ищите плагины/скрипты для своей версии макса.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Пт, 18.08.2017, 12:30 | Сообщение # 770
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

Цитата denis2000 ()
Ищите плагины/скрипты для своей версии макса.

То есть формат .bones единственный, в который можно конвертировать .ogf?
 
denis2000Дата: Пт, 18.08.2017, 15:34 | Сообщение # 771
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата men_stalker ()
То есть формат .bones единственный, в который можно конвертировать .ogf?

Единственный формат в который можно перевести ogf конвертором - это object.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
men_stalkerДата: Пт, 18.08.2017, 16:17 | Сообщение # 772
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

denis2000, вот что мне написал батник:
OGF options:
-ogf assume OGF format for input file(s)
-object save as .object file (default)
-skls save all motions as .skls file
-skl <NAME> save motion <NAME> as .skl file
-bones save all bones as .bones file
Именно об этом формате я интересуюсь, как его импортировать в макс?
 
zhenya4342Дата: Вт, 07.11.2017, 04:09 | Сообщение # 773
Гражданский
Пользователи
Сообщений: 2
Награды: 0
Репутация: [ 0 ]

Всем привет! Возможно глупый вопрос задаю, однако, я занимаюсь моделированием буквально пару часов)
Возникла наибанальнейшай проблема - сделал модель сталкера в MilkShape 3D, впихнул в игру - а она жутко полигональная, аж порезаться можно biggrin
Собсна, как убрать эту полигональность и сделать модель сглаженной? Прикол в том, что в формате object (в Actor Editor) и в самом MilkShape она сглажена, а уже после экспорта в OGF через Actor Editor она и становится жутко полигональной
В инете искал - не нашёл, поэтому прошу тапками не кидатся
 
denis2000Дата: Вт, 07.11.2017, 08:07 | Сообщение # 774
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

zhenya4342, Ежели модель в редакторе сглаженная, а после импорта в игре нет, то вероятнее всего у вас на SDK 0.7 не стоит фикс групп сглаживания: https://yadi.sk/d/Qc--POUodzWnA

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
zhenya4342Дата: Пн, 13.11.2017, 19:04 | Сообщение # 775
Гражданский
Пользователи
Сообщений: 2
Награды: 0
Репутация: [ 0 ]

denis2000, действительно не стоял, помогло, спасибо!
Даже не знал о таком фиксе

В шапке темы ссылка на chm файл сборника модостроения за авторством ХОВАНа не рабочая, поправьте

Спасибо. Ссылка исправлена.
denis2000


Сообщение отредактировал zhenya4342 - Пн, 13.11.2017, 19:27
 
БабайДата: Пт, 12.01.2018, 21:20 | Сообщение # 776
Ветеран
Пользователи
Сообщений: 484
Награды: 9
Репутация: [ 233 ]

Всем Привет! Скачал сборник моделей, написано, что он для ЧН. В сборнике есть одинаковые модели, помеченные как для ЧН и ЗП. Насколько мне известно, модели из ЧН и ЗП взаимозаменяемы. Или все-таки есть какая-то разница?

Правильно заданный вопрос - половина правильного ответа!
 
denis2000Дата: Пт, 12.01.2018, 23:12 | Сообщение # 777
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Бабай, Скелеты то одинаковые, а вот настройки юзердаты могут отличаться.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
БабайДата: Сб, 13.01.2018, 08:31 | Сообщение # 778
Ветеран
Пользователи
Сообщений: 484
Награды: 9
Репутация: [ 233 ]

Цитата denis2000 ()
настройки юзердаты могут отличаться

Имеется в виду анимации и текстуры?


Правильно заданный вопрос - половина правильного ответа!
 
denis2000Дата: Вс, 14.01.2018, 11:40 | Сообщение # 779
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Бабай, Нет имеется ввиду юзердата: в частности настройки имунитетов модели и пулестойкости.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вс, 18.02.2018, 18:18 | Сообщение # 780
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Возник вопрос.

Имеется ГУИ-окно такого вида.



[cut=Конфиг и скрипт]

<chit_code x="275" y="60" width="547" height="595">
<texture>ui_inGame2_gps_navigator_form</texture>
<btn_cancel x="405" y="515" width="116" height="22">
<texture>ui_mod_button</texture>
<text font="letterica16">st_menu_close</text>
</btn_cancel>
<btn_item x="35" y="235" width="116" height="22">
<texture>ui_mod_button</texture>
<text font="letterica16">st_item_spawn</text>
</btn_item>
<btn_obj x="35" y="285" width="116" height="22">
<texture>ui_mod_button</texture>
<text font="letterica16">st_obj_spawn</text>
</btn_obj>
<btn_20k x="405" y="235" width="116" height="22">
<texture>ui_mod_button</texture>
<text font="letterica16">st_20k</text>
</btn_20k>
<btn_1h_30m x="405" y="285" width="116" height="22">
<texture>ui_mod_button</texture>
<text font="letterica16">st_1h_30m</text>
</btn_1h_30m>
<btn_5m x="405" y="335" width="116" height="22">
<texture>ui_mod_button</texture>
<text font="letterica16">st_5m</text>
</btn_5m>
<btn_surge_1 x="405" y="385" width="116" height="22">
<texture>ui_mod_button</texture>
<text font="letterica16">st_surge_start</text>
</btn_surge_1>
</chit_code>

function chit_code_init()
mod_elements.chit_code():ShowDialog(true)
get_hud():HideActorMenu()
end
class "chit_code" (CUIScriptWnd)
function chit_code:__init(owner) super()
self.owner = owner
self:InitControls()
self:InitCallBacks()
end
function chit_code:__finalize()
end
function chit_code:InitControls()
self:SetWndRect(Frect():set(0,0,1024,768))
local xml = CScriptXmlInit()
xml:ParseFile("ui_mod_elements.xml")
self.chit_code=xml:InitStatic("chit_code",self)
self:Register(xml:Init3tButton("chit_code:btn_cancel",self.chit_code),"btn_cancel")
self:Register(xml:Init3tButton("chit_code:btn_item",self.chit_code),"btn_item")
self:Register(xml:Init3tButton("chit_code:btn_obj",self.chit_code),"btn_obj")
self:Register(xml:Init3tButton("chit_code:btn_20k",self.chit_code),"btn_20k")
self:Register(xml:Init3tButton("chit_code:btn_1h_30m",self.chit_code),"btn_1h_30m")
self:Register(xml:Init3tButton("chit_code:btn_5m",self.chit_code),"btn_5m")
self:Register(xml:Init3tButton("chit_code:btn_surge_1",self.chit_code),"btn_surge_1")
end
function chit_code:InitCallBacks()
self:AddCallback("btn_cancel",ui_events.BUTTON_CLICKED,self.btn_cancel,self)
self:AddCallback("btn_item",ui_events.BUTTON_CLICKED,self.btn_item,self)
self:AddCallback("btn_obj",ui_events.BUTTON_CLICKED,self.btn_obj,self)
self:AddCallback("btn_20k",ui_events.BUTTON_CLICKED,self.btn_20k,self)
self:AddCallback("btn_1h_30m",ui_events.BUTTON_CLICKED,self.btn_1h_30m,self)
self:AddCallback("btn_5m",ui_events.BUTTON_CLICKED,self.btn_5m,self)
self:AddCallback("btn_surge_1",ui_events.BUTTON_CLICKED,self.btn_surge_1,self)
end
function chit_code:btn_cancel()
self:HideDialog()
get_hud():HideActorMenu()
end
function chit_code:btn_item()
self:HideDialog()
get_hud():HideActorMenu()
ui_si.spawn_item_dialog():ShowDialog(true)
end
function chit_code:btn_obj()
self:HideDialog()
get_hud():HideActorMenu()
ui_si.spawn_object_dialog():ShowDialog(true)
end
function chit_code:btn_20k()
db.actor:give_money(20000)
xr_sound.set_sound_play(db.actor:id(),"pda_tips")
news_manager.relocate_money(db.actor,"in",20000)
end
function chit_code:btn_1h_30m()
xr_effects.forward_game_time(actor,nil,{"1","30"})
end
function chit_code:btn_5m()
local dir = db.actor:direction()
local pos = db.actor:position()
pos = pos:add(dir:mul(5))
db.actor:set_actor_position(pos)
end
function chit_code:btn_surge_1()
xr_effects.start_surge(db.actor)
end
function chit_code:OnKeyboard(dik,keyboard_action)
CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
if dik == DIK_keys.DIK_ESCAPE then
self:HideDialog()
get_hud():HideActorMenu()
end
end
end
[/cut]

Хочу добавить в окно название: "Чит-меню". То есть строку с текстом. Смотрел другие окна, но там в основном применяется функция Update.

Эта строка не будет меняться. Как проще всего добавить строку в гуи-окно?

Самое простое, что пришло в голову - это в Пайнт-Нет добавить надпись прямо в текстуру. Но не хочется её портить.
 
Поиск: