Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
vitacite

Dayz оружейная мастерская.

Recommended Posts

Вступление: 

Бодрого дня комрады. Данный гайд расчитан на тех кто умеет пользоваться 3D Studio Max, умеет пользоваться Object Builder и хотя бы пытался делать собственные модели.  Я разбираюсь с этой темой с нуля,  у меня есть опыт создания стволов для Арма 3, но в Dayz, как выяснилось все совсем иначе. Статей будет видимо несколько ибо Богемия, это такая Богемия, что не важно какую игру она делает. Инструменты остаются кривожопыми, паралогичными и в целом непонятными.

 

Начнем с полного нуля. Т.е. выбора модели и подготовки ее и текстур.

1.  Модельный контент на самом деле ограничен в использовании. Отсюда за порт калаша из Арма 3 без учета авторских прав, может влететь не только в виде SteamBan-а вашего мода, но еще и за нарушение авторских прав.

Поступим честно. Купим модель у автора на стоке.  В данном случае я выбрал модель АК12 я выбрал за внешний вид. Вот ссылка на саму модель. Заодно оцените сколько стоит труд моделлеров. 

https://www.cgtrader.com/3d-models/military/gun/ak-12-m

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Кроме того эта модель имеет полный набор необходимых текстур (имеет карту теней, карту высот, нормали и прочее). Что позволит создать адекватный мультиматериал.  Правда все это не форматах Dayz SA (Арма 2), по переделать это не так сложно.

Сразу скажу т.к. модель в игре будет смотреться несколько иначе.  Мне придется разобраться АК 12, чтобы выделить необходимые движущиеся части, курок, затвор, отделить магазин, прицелы, приклад в отдельные части. Так, как это используется в Dayz. Все это будет делаться в 3D макс. А так же сохранить в формате, который адекватно экспортируется в Dayz Object Builder.

По мере прогресса, я буду выкладывать отчеты с подробным описанием действий. 

 

Использованный софт:  изучение модели, для составление гайда (название селекшенов, лодов и тд.) проводилось с помощью программы Elitness из пакета Mikero tools  https://mikero.bytex.digital/Downloads. Подгонка моделей проводилась в бесплатной ученической версии 3DStudio Max, конверт текстур Photoshop, подгонка моделей Object Builder, конфиги писал в notepad  ++

 

План действий такой. 

 

Распил 3D модели в 3D макс на отдельные части (те, которые будут выделены в прокси, как отдельные предметы)

Создание текстур и материалов (AS,SMDI,NOHQ) на базе приложенных в модели и подгонка материала.

Создание селекшенов и лода memory

Перемещение частей в прокси и подгонка их к базе.

Создание model.cfg

Создание config.cpp 

Импорт всего этого добра в собственный

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

 

 

 

 

 

 

 

Изначально модель была не готова для конверсии. В первых, все части были собраны в одну представляя из себя нагромождение частей АК-12,  во-вторых пришлось делать Detoch частей модели например затвора, т.к. изначально он был представлен двумя несвязанными друг с другом полигонами, а у нас затвор - движующаяся часть.  В итоге скрыв лишние LOD-ы (они пока нам не нужны) и пересобрав там где надо запчасти. Получилась следующая картина.

image.png.3bd46f8e2a28c9c681f78dac63e49209.png

 

Я заранее выделил, как отдельные модели части которые будут подвергнуты анимации. А именно курок (base curok) и затвор basehutter. А также выгрузил в отдельную модель рамку прицела и приклад, чтобы подцепить к модели через прокси. Об этом расскажем отдельно. А планки Пиккатини сделал неснимаемыми (без них между прицелом и базой АК будет большой зазор). Так пришлось повозиться с место крепления съемного приклада, т.к. при разборе модели на зап.части там образовалась дыра.  Готовую модель требуется конвентировать в формат FBX.

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

 

 

 

 

 

 

 

Выделяем только те части которые нами выбраны для моделирования и делаем export selected.

В моем случае я подготовил папку

P:\тегпроекта\weapons\firearms\AK12\source\

При сохранении чтобы все потом правильно экспортировалось, желательно выставить чекпоинты в открытых свитках, как на скриншоте, остальное оставить по умолчанию. 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

И обязательное условие формат для экспорта должен быть FBX 2010.  Не спрашивайте почему, это загадка для меня связанная с работой Object Builder, но в моем случае нормальный экспорт получается только в 2010 FBX.

Так же отдельными моделями по такому же принципу выгружаем приклад и прицел и магазин(ы) автомата. Это отдельные модели которые мы будем цеплять через прокси.

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

 

 

 

 

 

 

 

При импорте в Object Builder отключите чекпоинт на Sharp & Smoth edges (иначе все идет кубами) и Animation (ее просто нет), включите Prepare materials. 

Полученный автомат загружается неправильно ориентированным в пространстве, незатекстуренным, но с готовыми к работе selection. 

 

Сохраняем нашу модель под именем 

 

P:\тегпроекта\weapons\firearms\AK12\ak12_base.p3d 

И займемся конфигом.  

Открываем notepad++ и создаем model.cfg следующего содержания 

class CfgSkeletons
{
	class Default;
		class ak12_base_skel : Default //название скелета
	{
		skeletonInherit = "";
		isDiscrete = 1;
		SkeletonBones[]=
		{
			"magazine"	,"",  //кости для анимации сменный магазин
			"trigger"	,"",  //курок
			"bolt"	,""       //затвор
		};
	};
};


class CfgModels
{
// BASE CLASS DEFINITIONS START
	class Default;
  	class ak12_base:Default  //цепляем скелет к нашей модели.
	{
		skeletonName="ak12_base_Skel";
		sections[]=
		{
			"magazine"   //выделяем сецию магазин
		};

		class Animations
		{
		};
	};
// BASE CLASS DEFINITIONS END
};

Он базовый позже мы его дополним. Конфиг я планирую использовать от ванильного АК47, врядли он будет сильно отличается, от АК12. 

По схожим прнципам копируем файлы с будующими прокси..

Магазин на 30 патронов.

ak12_magazine_30rnd.p3d

Магазин под барабан 

ak12_magazine_drum.p3d

Прицельная рамка

ak12_sight.p3d

Съемный приклад

ak12_stock.p3d 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Итоговый вид моего рабочего каталога.

Пришло время занятся материалом для нашего АК.

Архив содержит текстуры для базы АК12 в формате TGA (это кстати важно т.к. позволяет сохранять битность тестур, а там где мы работаем с материалами мы будем работать с каналами)

 

AK12_Base_A.tga  - диффузная карта
AK12_Base_AO.tga - окружение
AK12_Base_MSA.tga - карта отражения
AK12_Base_MT_AO_0_G.tga - карта металик, карта отражения, и окружение вместе.
AK12_Base_N.tga - карта нормалей (тут пришлось заморочиться т.к. эта карта нормалей для OpenGL.  а в нашем случае карта нормалей нужна для Direct X.)

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Разницу можно увидет на скриншотте выше в левой части нормаль в OpenGl формате в правой части нормальн в DirectX формате. 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

В нашем случае я поменял красный и зеленый каналы, синий не тронул. 

https://community.bistudio.com/wiki/Texture_Map_Types

про разницу карты нормалей между openGL и директ X тут - 

https://help.cc0textures.com/doku.php?id=usage:directx-opengl

 

Для нормального материала нам понадобится карты AS и SMDI

Создадим их AS из AO не меняем..

Для SMDI берем родную текстуру 

AK12_Base_MSA.tga и создаем SMDI  (как можно узнать из статьи выше карта SMDI хранит информацию в зеленом и синем канале игнорируя красный и альфу). Создаем пустую картинку аналогичных размеров и начинаем копирование нужных каналов.  Соответственно зеленый канал из оригинальной тестуры, я скопировал в синий канал новой текстуры SMDI, красный канал SMDI залил белым (0), а в зеленый канал скопировал текстуру из красного оригинального (содержащего блестяшки и сильно ее затенил).

(скрин не влез из-за ограничений  800кб) но ничего продолжим ниже.

 

 

 

 

Продолжение следует........

Edited by vitacite (see edit history)

Share this post


Link to post
Share on other sites



Опа опа, звучит вкусно. Надеюсь пушка будет с учётом скриптов и всё как надо. Жду продолжений.

Share this post


Link to post
Share on other sites

Я работаю в Maya  и могу сказать что она будет намного функциональней чем 3d max. 

Share this post


Link to post
Share on other sites

Продолжение статьи "Оружейная мастерская"

Большая просьба комментарии оставить на потом. Иначе вам и другим будет неудобно читать. Скриншотов много, придется делать длинную статью в комментариях. Как разберусь что и куда и все это изложу.. обсудим. 

Продолжение....

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Результат получился примерно такой...

Далее я скопировал стандартный материал, и редактировал его под наш АК12

// листинг файла AK12_Base.rvmat
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,1};
emmisive[]={0,0,0,1};
specular[]={0.72352946,0.72352946,0.72352946,1};
specularPower=105;
PixelShaderID="Super";
VertexShaderID="Super";

class Stage1
{
	texture="olke\weapons\firearms\ak12\data\ak12_base_nohq.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage2
{
	texture="#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage3
{
	texture="#(argb,8,8,3)color(0,0,0,0,MC)";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage4
{
	texture="olke\weapons\firearms\ak12\data\ak12_base_as.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage5
{
	texture="olke\weapons\firearms\ak12\data\ak12_base_smdi.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};
class Stage6
{
	texture="#(ai,64,64,1)fresnel(1.61,1.4)";
	uvSource="none";
};
class Stage7
{
	texture="dz\data\data\env_land_co.paa";
	uvSource="tex";
	class uvTransform
	{
		aside[]={1,0,0};
		up[]={0,1,0};
		dir[]={0,0,0};
		pos[]={0,0,0};
	};
};

Материал абсолютно не отличается от подобных в Арма 3, все тож самое идеалогия и тд. Правда надо отметить, что нормали видно лучше. C блеском и яркостью пришлось сильно повозиться, т.к. блестяшки я затенил недостаточно и все сияло, и блестело, будто это автомат арабского шейха :)))

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Результат измученного материала получился примерно такой.

Аналогично я поступил с прикладом, (магазины и прицельная рамка, с базовой текстурой). На скриншотте все выглядит целой моделью, однако в Object Builder, представляется все не так..

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Прежде чем АК12 принял такой вид пришлось повозиться с позиционированием. Делал я это следующим образом. В свежеимпортированную модель АК12 подгружал прокси в виде ванильного автомата из Dayz и позиционироал по нему. Сказать что это еб...ня.. это не сказать ничего. Спасибо богемии интератив за ох...ные инструменты. Гореть им в аду. 

image.png.dbeb9cac378c1db29a90b622470acc33.png

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Причем эта ........ть работает только в бульдозере.. т.е. запускаем смотрим двигаем так чтобы совпало... ну вы поняли... Cовместив наши объекты с оригинальными удаляем прокси и оставляем объект в нужной позиции. (на скриншоте ванильный АК 101 из Dazy и полпрозрачный оригинальный который мы крутим вокруг своей оси и позиционируем). Все было бы проще, если бы БИС-ы удосужились в Samples под Dayz сделать и оружие, но они не удосужились.

Это ведь великий секрет!

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Обратите внимание, как позиционирован приклад в пространстве!!!  Т.е. от оригинальной модели пришлось его вертеть по всем осям. Пока не получился вот такой результат.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Прокси тут затенен, а мой приклад от АК 12 полупрозрачный т.к. в текущий момент выделен.

 

Как вы могли заметить из предыдущего скриншотта я выделил знакомые мне selection по Arma3, в Dayz они называются так же bolt - затвор, trigger - курок? bullet- пуля (она там отдельной

моделькой внутри автомата (будет потом вылетать при стрельбе обеспечивая анимацию отстрела) и соответствуют костям в конфиге. Так же были подвязаны прокси магазин, прицел и приклад. Судя по рендерингу в бульдозере все позиционировалось правильно.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Для того чтобы разобраться дальше нам потребуется программа Elitness из пакета Mikero Tools ...

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Что мы можем в ней наблюдать..

Стандартная модель АК 101 содержит 5 визуальных лодов.

ViewPilot, Geometry, Memory, ViewGeometry, FireGeometry.

Так же визуальный лод содержит кости для анимаций

под затвор (bolt), пулю (bullet), переключатель огня (firemod), курок (tigger) магазин (magazin) и камо (camo) (для смены текстур налету). и непонятный пока zbitek

Все части автомата подцеплены через прокси (в случае с АК101 они находятся в папке attachments),  model.cfg не сильно отличается от моего.. разве что содержит загадочное слово ZBYTEK.

Лод Geometry крайне упрощен, и содержит всего один компонент. 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Лод memory содержит, как старые известные по Арма 3 точки, так и новые с которыми будем разбираться.
elitness3.jpg.3cd70a6d16ea5fbeb165f87c1c226f2e.jpg

 

 

 

 

 

 

 

 

Обратите внимание, что Lod-а теней нет вообще, они генерируются налету из визуалки.

Для начала сделаем то просто.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Простую коробку для геометрии, с учетом размера приклада (думаю позже буду ее подгонять под плечо и анимации от АК 101).

Не забываем делать поиск компонентов и выставлять массу.

В property name = autocenter 0 (отменить выравнивание по центру)

Параметр масса = 20.

 

Так же я создал Lod Memory в котором обозначил оси для анимации движения затвора - bolt axis, nabojnicestart и nabojniceend для траектории вылета отстреляной гильзы, eye - положение глаз игрока при прицеливании (потребует подгонки) и usti hlavne место вылетания пули и огня. 

Желательно названия точек сохранять такими если не врут вики для Арма 3, названия прописаны в движок.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Продолжение следует... 

 

 

Edited by vitacite (see edit history)

Share this post


Link to post
Share on other sites
04.08.2020 в 12:22, vitacite сказал:

В нашем случае я поменял красный и зеленый каналы, синий не тронул. 

 

Речь о карте нормалей.

Автор гайда не много запамятовал, что не вменяется ему в вину), чтобы привести формат нормали из OpenGL в DirectX формат мы инвертировали ТОЛЬКО зелёный канал.

 

Так же нужно иметь ввиду что не всякую нормаль не DirectX получится подобным образом, то есть инверсией каналов, привести к нужному результату, на моём опыте был случай когда для меня так и осталось загадкой под какой рендер была сделана нормаль, ибо ни какие танцы с бубном с помощью инверсий каналов нормали не помогли получить нужный результат.

Share this post


Link to post
Share on other sites
04.08.2020 в 17:13, vitacite сказал:

Все части автомата подцеплены через прокси (в случае с АК101 они находятся в папке attachments),  model.cfg не сильно отличается от моего.. разве что содержит загадочное слово ZBYTEK.

 

ZBYTEK

Это загадочное, чешское слово).

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

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

Share this post


Link to post
Share on other sites
04.08.2020 в 12:22, vitacite сказал:

И обязательное условие формат для экспорта должен быть FBX 2010.  Не спрашивайте почему, это загадка для меня связанная с работой Object Builder, но в моем случае нормальный экспорт получается только в 2010 FBX.

 

Ни какой загадки.

Во времена кислого не знаю, а вот во времена появления Объект билдера богемия прикрутила ему библиотеку которая давала возможность работать с контентом формата FBX, было это времена эдак 2010, о чём собственно и говорит версия формата используемая билдером. Сегодня мы лицезреем, например в максе возможность экспортировать в FBX формата 2020, споём гимн великим чехам).

 

Итого, в сухом остатке, так сказать, изменения в самом формате в версиях выше 2010 оказались на столько радикальными, что это вводит в ступор билдер.

Share this post


Link to post
Share on other sites

После подгонки и проверки в живую, на клиенте

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Я подсветил фон, чтобы была видна ярко-желтая сетка модели. Точки которые используются видны в окне, (более детально можно будет увидеть открыв пример.)

 

Файр-геометрию делаем более детальной чем геометрию.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Листинг файла config.cpp

class CfgPatches
{
	class olke_weapons_firearms_AK12
	{
		units[] = {};
		weapons[] = 
		{
			"ak12_base"  // класс оружия
		};
		requiredVersion = 0.1;
		requiredAddons[] =  // перечисления требуемых аддонов
		{
			"DZ_Data",
			"DZ_Weapons_Firearms",
			"DZ_Weapons_Ammunition",
			"DZ_Weapons_Magazines"
		};
		magazines[] = 
		{
			"ak12_magazine_30rnd", // список используемых магазинов
			"ak12_magazine_drum"
		};
		ammo[] =  {}; // боеприпас если нужно делать свой, в данном случае используем ванильный
	};
};

class Mode_Safe; // режимы стрельбы оружия
class Mode_SemiAuto;
class Mode_Burst;
class Mode_FullAuto;
class cfgWeapons
{
	//инициализация существующего класса AKM на базе которого будем делать АК12
	class AKM; 
	// наследуем все параметры класса АКМ, далее будем изменять только то, что нужно изменить под себя.
	class ak12_base: AKM 
	{
		scope = 2; // делаем видимым
		displayName="$STR_АК12BASE"; // короткое название которое отображается в игре привяжем к файлу локализации
		descriptionShort="$STR_AK12DESC"; // короткое описание нашего ствола
		model = "\olke\weapons\firearms\AK12\ak12_base.p3d"; //полный путь к модели
//		attachments[] = {"weaponButtstockAK", "WeaponHandguardAK", "weaponWrap", "weaponOpticsAK", "weaponFlashlight", "weaponMuzzleAK", "weaponBayonetAK"}; // задел под аттачменты на будущее
		itemSize[] = {6, 3}; // размер в инвентаре 
		PPDOFProperties[] = {1, 0.5, 50, 175, 4, 10};
		WeaponLength = 0.476735;
		recoilModifier[] = {1, 1, 1};
		swayModifier[] = {1.5, 1.5, 1};
		hiddenSelectionsTextures[] = {"olke\weapons\firearms\ak12\data\AK12_Base_co.paa"};
		hiddenSelectionsMaterials[] = {"olke\weapons\firearms\ak12\data\AK12_Base.rvmat"};
		ironsightsExcludingOptics[]= {}; // список прицелов (это отдельная тема)
		magazines[] =  //список магазинов
		{ 
			"ak12_magazine_30rnd",
			"ak12_magazine_drum"
		}; 
		reloadAction="ReloadAKM"; // анимация (нужно будет потом подгонять в игре)
		modes[]= // доступные режимы стрельбы
		{
			"SemiAuto",
			"FullAuto"
		};
		// описание режимов стрельбы
		class FullAuto : Mode_FullAuto 
		{
			soundSetShot[] = {"AK_Shot_SoundSet", "AK_Tail_SoundSet", "AK_InteriorTail_SoundSet"};
			soundSetShotExt[] = {{"AK_silencer_SoundSet", "AK_silencerTail_SoundSet", "AK_silencerInteriorTail_SoundSet"}, {"AK_silencerHomeMade_SoundSet", "AK_silencerHomeMadeTail_SoundSet", "AK_silencerInteriorHomeMadeTail_SoundSet"}};
			begin1[] = {"dz\sounds\weapons\firearms\AK74\ak74_single_1", 1, 1, 800};
			begin2[] = {"dz\sounds\weapons\firearms\AK74\ak74_single_1", 1, 1, 800};
			begin3[] = {"dz\sounds\weapons\firearms\AK74\ak74_single_1", 1, 1, 800};
			soundBegin[] = {"begin1", 0.33333, "begin2", 0.33333, "begin3", 0.33333};
			beginSilenced_Pro[] = {"dz\sounds\weapons\firearms\AK101\akSilenced", 1, 1, 75};
			beginSilenced_HomeMade[] = {"dz\sounds\weapons\firearms\AK101\akSilenced", 1, 1, 100};
			soundBeginExt[] = {{"beginSilenced_Pro", 1}, {"beginSilenced_HomeMade", 1}};
			reloadTime = 0.1;
			recoil = "recoil_AK74";
			recoilProne = "recoil_AK74_prone";
			dispersion = 0.003;
			magazineSlot = "magazine";
		};
		
		class SemiAuto : Mode_SemiAuto 
		{
			soundSetShot[] = {"AK_Shot_SoundSet", "AK_Tail_SoundSet", "AK_InteriorTail_SoundSet"};
			soundSetShotExt[] = {{"AK_silencer_SoundSet", "AK_silencerTail_SoundSet", "AK_silencerInteriorTail_SoundSet"}, {"AK_silencerHomeMade_SoundSet", "AK_silencerHomeMadeTail_SoundSet", "AK_silencerInteriorHomeMadeTail_SoundSet"}};
			begin1[] = {"dz\sounds\weapons\firearms\AK74\ak74_single_1", 1, 1, 800};
			begin2[] = {"dz\sounds\weapons\firearms\AK74\ak74_single_1", 1, 1, 800};
			begin3[] = {"dz\sounds\weapons\firearms\AK74\ak74_single_1", 1, 1, 800};
			soundBegin[] = {"begin1", 0.33333, "begin2", 0.33333, "begin3", 0.33333};
			beginSilenced_Pro[] = {"dz\sounds\weapons\firearms\AK101\akSilenced", 1, 1, 75};
			beginSilenced_HomeMade[] = {"dz\sounds\weapons\firearms\AK101\akSilenced", 1, 1, 100};
			soundBeginExt[] = {{"beginSilenced_Pro", 1}, {"beginSilenced_HomeMade", 1}};
			reloadTime = 0.1;
			recoil = "recoil_AK74";
			recoilProne = "recoil_AK74_prone";
			dispersion = 0.003;
			magazineSlot = "magazine";
		};

		class DamageSystem 
		{
			class GlobalHealth 
			{
				class Health 
				{
					hitpoints = 250;
					healthLevels[] = {{1.0, {"DZ\weapons\firearms\ak74\Data\aks74u.rvmat"}}, {0.7, {"DZ\weapons\firearms\ak74\Data\aks74u.rvmat"}}, {0.5, {"DZ\weapons\firearms\ak74\Data\aks74u_damage.rvmat"}}, {0.3, {"DZ\weapons\firearms\ak74\Data\aks74u_damage.rvmat"}}, {0.0, {"DZ\weapons\firearms\ak74\Data\aks74u_destruct.rvmat"}}};
				};
			};
		};

		class AnimationSources // анимации перезарядки магазина от M_249
		{
			class ReloadAnim{source="reload";weapon="dbo_M249";};
			class ReloadMagazine{source="reloadmagazine";weapon="dbo_M249";};
			class Revolving{source="revolving";weapon="dbo_M249";};
		};
	};
};

class CfgMagazines // Описание боеприпаса
{
	class Ammunition_Base; //инициализируем Ammunition_Base
	class Mag_AKM_30Rnd; //вызываем базовый класс  Mag_AKM_30Rnd
	class ak12_magazine_30rnd: Mag_AKM_30Rnd //наследуем базовый класс от AKM нашим классом для AK12
	{
		scope = 2; //делаем видимым
		displayName = "$STR_AK12_30RND"; //название в файле локализации
		descriptionShort = "$STR_AK12_30RND_DESC";//краткое описание в файле локализации
		model = "\olke\weapons\firearms\AK12\ak12_magazine_30rnd.p3d"; //название модели
		weight = 230; // вес
		itemSize[] = {1,2}; // размер в инвентаре число занимаемых слотов
		count = 30; // объем магазина
		ammo="Bullet_762x39"; // калибр... ;))) будем считать что у нас модифицированный АК12 под 7.62 x 39
		ammoItems[] = {"Ammo_762x39"}; // отсылка к патрону
		isMeleeWeapon = 0; // нет нельзя использовать как холодное оружие
		tracersEvery=1; // трассеры включены
	};
	
	class ak12_magazine_drum: Mag_AKM_30Rnd //наследуем базовый класс от AKM нашим классом для AK12 для барабана
	{
		scope = 2; //делаем видимым
		displayName = "$STR_AK12_60RND"; //название в файле локализации
		descriptionShort = "$STR_AK12_60RND_DESC";//краткое описание в файле локализации
		model = "\olke\weapons\firearms\AK12\ak12_magazine_drum.p3d"; //название модели для барабанного мазина
		weight = 230; // вес
		itemSize[] = {2,2}; // размер в инвентаре число занимаемых слотов
		count = 60; // объем магазина
		ammo="Bullet_762x39"; // калибр... ;))) будем считать что у нас модифицированный АК12 под 7.62 x 39
		ammoItems[] = {"Ammo_762x39"}; // отсылка к патрону
		isMeleeWeapon = 0; // нет нельзя использовать как холодное оружие
		tracersEvery=1; // трассеры включены
	};

};

class CfgNonAIVehicles
{
	class ProxyAttachment;
	class Proxyak12_magazine_30rnd: ProxyAttachment
	{
		scope = 2;
		inventorySlot = "magazine";
		model = "\olke\weapons\firearms\AK12\ak12_magazine_30rnd.p3d"; // наш магазин в прокси по умолчанию.
	};

	class Proxyak12_magazine_drum: ProxyAttachment
	{
		scope = 2;
		inventorySlot = "magazine";
		model = "\olke\weapons\firearms\AK12\ak12_magazine_drum.p3d"; // 
	};
};


 В принципе минимально нужные действия мы совершили. 

 

листинг файла локализации stringtable.csv

Скрытый текст

"Language","original","russian",
"STR_AUTHOR", "Virtual World Engeneing Team","Virtual World Engeneing Team",
"STR_АК12BASE","Kalashnikov assault rifle sample 2012","Автомат Калашникова образца 2012 года"
"STR_AK12DESC","Specifications AK-12: Weapon length in firing position: 880-940 mm Length with a complex butt: 690 mm Barrel length: 415 mm Weight with empty magazine: 3.5 kg Rate of fire: 700 rounds per minute. Capacity store: 30 rounds","Технические характеристики АК-12:Длина оружия в боевом положении: 880-940 мм.Длина со сложенным прикладом: 690 мм.Длина ствола: 415 мм.Вес с пустым магазином: 3.5 кг.Темп стрельбы: 700 выстрелов в минуту.Емкость магазина: 30 патронов"
"STR_AK12_30RND","30-round magazine","Магазин на 30 патронов"
"STR_AK12_30RND_DESC","30-round magazine 7.62x39 AK12 (AK-15)","Магазин на 30 патронов 7.62x39 к АК-12 (АК-15)"
"STR_AK12_60RND","60-round Drum","Барабан на 60 патронов"
"STR_AK12_60RND_DESC","60-round Drum 7.62x39 AK12 (AK-15)","Барабан на 60 патронов 7.69x39 к АК-12 (АК-15)"

 

Я подготовил специальный "учебный" незабинаренный пакет. Его не получится добавить в

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Рабочая папка для проекта в примере:

P:\olke\weapons\firearms\AK12\ 

 

 

В пакете находится два материала в формате rvmat, незабинаренная модель и все конфиги, текстур нет, т.к. я планирую использовать этот и другие стволы данного художника в своем моде.

 

Ссылка на страницу автора  оригинальных 3Д моделей  https://www.cgtrader.com/eforbstudio

При желании можете купить модель (модели) автора и запилить свой пак используя данный гайд.  

 

Итоговый результат:

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

PS: Собственно все.  Больше спасибо SteelRat за консультутации, по 3dmax и Dayz. 🙂.  PPS: Файлы конфигурации содержат подробные комментации на русском языке. В зависимости от версий Dayz параметры могут менятся,  точки в memory лод и анимацию необходимо подгонять в игре под анимацию игрока. 

 

 

 

Edited by vitacite (see edit history)

Share this post


Link to post
Share on other sites

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Share this post


Link to post
Share on other sites

по ссылке:

Цитата

 

Нет доступа

Свяжитесь с владельцем или войдите в аккаунт с правом доступа. Подробнее…

 

возможно прикрепить архивом к сообщению темы, дабы файлы не потерялись ни при каких условиях на форуме и были всегда доступны?

 

Share this post


Link to post
Share on other sites
2 часа назад, 123new сказал:

по ссылке:

возможно прикрепить архивом к сообщению темы, дабы файлы не потерялись ни при каких условиях на форуме и были всегда доступны?

 

FIX. Добавил архив в статью... 

Edited by vitacite (see edit history)

Share this post


Link to post
Share on other sites

Возник вопрос... только начинаю разбираться с портированием и всеми танцами с бубном, которые касаются этой темы. Стоит задача к модели прикрутить возможность устанавливать и снимать глушитель. Всё работает, если брать за основу стандартный слот (к примеру от АК). Глушитель снят - его не видно, одет - соответственно видно. НО! Так же этот глушитель подходит ко всем АК... а, это недопустимо. Глушитель портирован, так же как и модель ствола. Прописывал свой слот под этот глушитель, теперь на оружии отображается глушитель, вне зависимости одет он или нет... слот при этом работает, подтягивает настройки глушака (звук и тд).

Я больше чем уверен, что это отсутствие опыта и таких вопросов было валом... но, я сбился с ног искать ответы. Помогите советом или ткните носом в соответствующие источники. Спасибо)

Share this post


Link to post
Share on other sites

Всё просто. Чтобы был именно свой глушитель на соответствующем оружии а не родной для этого нужно:
1. Добавить модель глушитель по аналогии как сделаны ванильные + класс слота
2. Добавить прокси глушителя на оружие в нужных лодах включая лод Memory
3. В конфиге оружия config.cpp в строчке attachments[] = {}; добавить слот глушителя, все слоты обязательно указывать в кавычках иначе работать не будет
4. В конфиге глушителей, в новом классе нового глушителя обязательно должна быть строчка inventorySlot = "название_слота";
5. В этом же конфиге в классе CfgNonAiVehicles обязательно должен быть указан класс прокси глушителя
6. В классе слотов должен быть обязательно указан слот глушителя

class CfgSlots {
	class Slot_weaponMuzzleAK2016 {
		name = "weaponMuzzleAK2016";
		displayName = "weaponMuzzleAK2016";
		ghostIcon = "supressor";
	};
};
class CfgNonAIVehicles {
 	class ProxyAttachment;    // External class reference
	
	class Proxysuppressor_osprey : ProxyAttachment {
		scope = 2;
		inventorySlot = "weaponMuzzleAK2016";
		model = "\WeaponPack_Suppressors\suppressor_osprey.p3d";
	};
};


Для наглядности пример

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Edited by AKuznecov (see edit history)

Share this post


Link to post
Share on other sites

Здравствуйте, возникла такая проблема при портировании собственой модели в дейз. И при спавне просто крашится дейз. Чем это может быть вызвано ?

Share this post


Link to post
Share on other sites
4 часа назад, Tokar сказал:

Здравствуйте, возникла такая проблема при портировании собственой модели в дейз. И при спавне просто крашится дейз. Чем это может быть вызвано ?

1. Возможно модель неправильно собрана
2. Отсутствует config.cpp и model.cfg

Share this post


Link to post
Share on other sites

Здравствуйте, не ставится на оружие универсальный фонарь.
Прокси есть и в кфг аттачмент тоже

Share this post


Link to post
Share on other sites

Здравствуйте. Можете помочь с 1м вопросиком. Вот я сделал пушку в memory закинул boundingbox всё вроде правильно, все прокси и тд. Но в инвентаре она отображается вверху рамочки и видно только половину модели. С чем это может быть связано.

 

Спасибо

Share this post


Link to post
Share on other sites

 

13 часов назад, Tokar сказал:

Здравствуйте. Можете помочь с 1м вопросиком. Вот я сделал пушку в memory закинул boundingbox всё вроде правильно, все прокси и тд. Но в инвентаре она отображается вверху рамочки и видно только половину модели. С чем это может быть связано.

 

Спасибо

В Memory должны быть две точки на прямоугольнике boundingbox_max и boundingbox_min
В Geometry должно быть написано autocenter со значением 0

Share this post


Link to post
Share on other sites
05.11.2020 в 22:48, Tokar сказал:

Здравствуйте, возникла такая проблема при портировании собственой модели в дейз. И при спавне просто крашится дейз. Чем это может быть вызвано ?

Проблема в model.cfg. Там нужно указывать название портированной модели. 

Была такая история, когда не разобравшись вместо имени модели указывал имя класса)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By vitacite
      Бесплатные проекты - "пацаны собрались и замутили сервачок" долго не живут.  В этом я убеждался много раз. Нет сначала на интузиазме эффективность неплохая, но затем все это затухает управляемость команды падает.  Начинаются вопросы - "а почему это должен делать я?",  отмазки "да я на даче сегодня", "да у меня командировка" и тд...  + кто-то должен спонсировать оплату сервера, антидудосов и прочей лобуды, а такого человека интерес тоже может пропасть в любой момент. А чтобы проект был хороший - кому-то надо реально "въебывать", как на второй работе, и  кому-то постоянно вливать туда бабло.
      Поэтому, лично я, считаю любой некоммерческий проект заранее проваленным!  Побегать недельку другую с друзьями это да. Что-то более серьезное, не тратьте свои силы и время! Как минимум на  тему сталкера я таких проектов видел 10 штук и в некоторых даже сам поучаствовал. Начиналось все амбициозно и даже набирало онлайн до 100 человек. Но заканчивалось все одинаково 3-4 месяца и с десято скучающих тел, на безлюдном сервере.  С точки зрения администации, игроки ведут себя как проститутки, бегая с сервера на сервер, друзья перешли, или потому что на том добавили новый прикольный скрип, или прикольную тачку, или тут плохой пинг, а там хороший, или админ козел забанил за читы и тд.  а все эти приколюхи требуют денег, а игровое сообщество не очень расположено их платить за некачественный контент. Да и сама администрация достаточно быстро забивает и расслабляется.
      (я сейчас не говорю о конкретном проекте, скорее это собирательный образ халявы).
       
      А теперь по-существу.  Так сколько должен стоить контент с хотя бы приемлемым качеством?  

      Свое мнение я написал ниже.
       
       
      Спасибо за внимание.
       
      А что думаете Вы напишите ниже в комментариях!
       
       
    • By 123new
      Вижу крайне много любопытных вопросов по поводу идентификаторов игрока в игре. Что же, разжую для не знающих немного.
       
      В игре есть следующие типы идентификаторов:
      1. Steam64ID идентификатор профиля игрока (на пиратках его UID называют), примерно такой: 765475....65 (17 цифр).
      2. Так называемый мною, BIS ID - uid из окна (консоли) сервера игры и ADM-файлов логов сервера, который пишется самой игрой
      3. Battleye GUID игрока.
       
      Первый идентификатор (Steam64ID) на ПК является прямым идентификатором стим-профиля игрока, уникальным у каждого игрока. Т.е. публичным идентификатором вашего профиля для большинства стим-игр (например, Counter-Strike).
      Второй идентификатор (BIS ID) является определенной хеш-суммой, полученной из Steam64ID посредством конвертации сначала в sha256, а затем в base64. Спасибо за это разъяснение и пример кода-конвертации авторам игры на своем официальном форуме.
      Третий идентификатор (Battleye GUID) является публичным идентификатором Battleye античита, получаемый также из Steam64ID поcредством получения его хеш-суммы MD5. Этот же идентификатор есть в логах сервера от Battleye, в любых RCON-приложениях (DART, BEC и т.п.), также его можно конвертировать самим.
       
      Так вот, как же получить Steam64ID:
      1. Зайти на любой ресурс, предназначенный для сбора таких данных. например на: https://steamid.io/
      2. Ввести ссылку на ваш стим-профиль
      3. Получить результат из кучи данных, одно поле из которых и будет содержать ваш Steam64ID
       
      Как получить BIS ID:
      1. Открыть любой Phyton-конвертер в интернете, например: https://www.tutorialspoint.com/execute_python_online.php
      2. Ввести в него следующий код:
      # Hello World program in Python from hashlib import sha256 from base64 import b64encode def construct_bi_uid(steam_id): hashed = sha256() hashed.update(str(steam_id)) return b64encode(hashed.digest()) print construct_bi_uid(76514925976798981) 3. заменить 76514925976798981 на ваш Steam64ID
      4. Отправить код в исполнение, нажав Execute.
      5. Получить результат

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
       
      Как получить Battleye GUID:
      1. Открыть любой ресурс с готовой формой конвертирования, например:
      https://armstalker.com/guid/
      https://dayzrussia.com/f/index.php?pages/dayzguid/
      либо написать свою, на основе данных, предложенных на странице Github
      https://gist.github.com/chris579/53053b6d6438df9a9718c23c0d6bbd69
      Оставлю ниже лишь код для Phyton:
      # Thanks to gunlinux import md5 steamid=76514925976798981 temp = "" for i in range(8): temp += chr((steamid & 0xFF)) steamid >>= 8 m = md5.new("BE"+temp) print m.hexdigest() 2. Вставить в поле ввода UID(Steam64ID) ваш Steam64ID
      3. Нажать кнопку конвертирования или исполнить код, и получить в готовом виде Battleye GUID
       
      Возможно имеются и другие методы и наработки в получении данных идентификаторов более простыми методами, на других языках, либо автоматически. Я описал лишь известные мне.
      Все желающие могут добавить в комментариях свои способы конвертаций, возможно это поможет кому-либо.
    • By DrTauren
      Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье 
       
      Скачать серверные файлы через Steam: steam://rungameid/223350
      На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
       
      P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс 
    • By Serdce
      Ссылка на первоисточник - https://github.com/BrettNordin/Exile
      Я всего лишь перевёл
      Собственно переходим по ссылке, и скачиваем архив.
      Для тех, кто не знает как качать с хаба скрин 
      И так, едем дальше
      Скачанный архив распаковываем в удобное место для работы,
      Идём в ваш @ExileServer, там нас интересуют файлы - extDB2.dll , extDB2.so , extDB2-conf.ini , XM8.dll , XM8.so Удаляем эти файлы
      Далее идём в @ExileServer которую мы скачали, всё её содержимое копируем в аналогичную папку на сервере.
      Теперь идём в вашу MPmissions и там распаковываем вашу миссию "Exile.название карты",
      Туда мы копируем содержимое папки Exile.MapName из архива,
      Далее открываем ваш config.cpp и ищем там class CfgExileCustomCode 
      В него мы добавляем - #include "CfgExileCustomCode.cpp"
      Должно получится так
      Запаковываем обратно)
      Ну и теперь из архива мы копируем tbbmalloc.dll, tbbmalloc_x64.dll в папку расположения вашего Arma3_server.exe
      Не забываем поменять в вашем файле запуска сервера с arma3server.exe на arma3server_x64.exe 
      Ну и финишная прямая, открываем вашу базу данных ( желательно с название exile ) и добавляем файл Exile_Database_Update_64x.sql
      Далее настройте под себя ваш extdb3-conf.ini
       
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.