Решился я все таки создать новую тему, а то давно никто-ничего не писал в этой ветке.  Название темы "Создание мода", выбрал обширное потому что, надеюсь здесь мы затронем и Mod Tools (с его инструмантами), и моделированние в Maya, и конвертер для Call of duty 4 и скрипты на видоизменном C++ (будь он не ладен). 
 Идея моя такова - предлагаю создать мод с открытыми исходниками - что бы каждый желающий мог на свое усмотрение менять вид менюшек и внедрять в игру свое оружие. За основу предлагаю взять ModWarfare - благо его исходники лежат в Mod Tools ...\Mods\ModWarfare\, там же лежит и батник makeMod.bat, который корректно компилит файлы с расширением .menu (в отличии от ModBuilder) 
 Мои предложения по моду: 
 1. Создать три отдельных окна аттачмента, для выбора онного во всех возможных вариациях. Пример: 
 сейчас я сделал только вывод окон - нужно еще разобраться с их вызовом. Да, еще можно добавлять слоты с оружием. Но все впирается в С++. 
 2. Использовать для начала стандартные xmodel из сингла ( например М4 с коллиматором+глушак+подствол). Пример: 
 а вообще товарищ Tomtels (у него очень качественные стволы) обещал поделиться своими моделями оружки. Ну и можно експортировать оружие из других игр например СТАЛКЕР или Crysys где оружие не плохое. 
 Перехожу к деталям. Как я понял, все скриптовые файлы менюх мультиплеера .menu и .inc находятся в Мод Тоолсе по пути 
 ...\raw\ui_mp\** 
 . По-моему даже папка так и называется user interface_мультиплеер. Все не обходимые скрипты берем отдуда. Но пока меня интерисует папка в Мод тулсе ...Mods\ModWarfare\ui_mp\ там и лежат исходники скриптов меню ModWarfare. В частности меня интерисуют два файла cac_ingame.inc и cac_loadout_ingame.inc. Судя по их названиям они были взяты из игры и отправлены в Мод Тоолс разрабами . 
 В файле cac_loadout_ingame.inc. вызывается функция, которая выводит окно выбранного аттачмента под оружием: 
 PREPROC_SHADER_DRAW_ALIGNED ( 77 60 32 32 LOADOUT_ALIGN, ORIGIN_LOADOUT, tablelookup( "mp/attachmenttable.csv", 9, STAT_CAC_PRIMARY_ATTACHMENT, 6 ), 1 1 1 1, 0, 1, 1 1 1 1) 
 объявление этой функции можно найти в файле common_macro.inc. Первый аргумент функции (77 60 32 32) указывает на физическое расположение окна выбранного аттачмента на экране (77 и 60 это коортинаты в X Y, а 32 и 32 это размер картинки аттачмента по X и Y соответственно) Значит если присваивать первому аргументу определенные координаты то получаем вывод картинки в нужном месте. Далее, tablelookup( "mp/attachmenttable.csv... я так понял - это оператор который обращается в некую таблицу mp/attachmenttable.csv. Такого файла в Мод тоолсе не существует (на что указывает даже обратный слеш), по видимому этот файл генерируется из какой-то библиотеки и представляет собой (по моему) некую константу. А вот аргумент STAT_CAC_PRIMARY_ATTACHMENT -явный, его объявление можно найти в файле cac_ingame.inc. В нем то и находится аттачмент который функция должна загружать в меню. Если рассмотреть объявление STAT_CAC_PRIMARY_ATTACHMENT то мы видим: 
 #define STAT_CAC_PRIMARY_ATTACHMENT tableLookup("mp/attachmentTable.csv", 4, dvarString (loadout_primary_attachment ), 9) 
 Здесь объявлеется что будет загружено в окне аттачмента но не в игре. Опять тот же мифический аргумент - mp/attachmentTable.csv и более интересный - loadout_primary_attachment Переменная типа String - loadout_primary_attachment - является как бы контейнером-перевозчиком аттачмента а получает она содержимое из еще одной переменной attachmentName в чем можна убедиться из вот этого: 
 #define LOCAL_ATTACHMENT_ACTION( attachmentDvar, attachmentName, paction, groupArg ) \ 
 setdvar loadout_primary_attachment attachmentName; \ 
 scriptMenuResponse "loadout_primary_attachment:"groupArg":"attachmentName;\ 
 UPDATE_PERK1 \ 
 close self; 
 /* 
 setdvar loadout_camo camo_none; \ 
 open "ocd_popup_cac_camo"; 
 */ 
 в свою очередь attachmentName - содержит уже сам аттачмент - или gl или acog или silencer.... 
 !!! Впрос ко всей аудитории - каким образом исходя из содержимого attachmentName присваивать первому аргументу функции PREPROC_SHADER_DRAW_ALIGNED нужные нам координаты (таким образом получая окно с Gl слева, окно с Silencer по средине и Reflex или Acog справа). 
 Далее, это только функция вывода окон с аттачментом а еще нужно разобраться с выбором аттачмента - что бы при выборе к примеру оптики - не пропадал глушак и на оборот и т.д.. По моему это все зарыто в дефайне : 
 #define LOCAL_ATTACHMENT_ITEM( itemNum, p_setstat, groupArg ,p_numref, pname, paction, ptype, statDvar, bitMask )\ 
 CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, "@"+tablelookup("mp/attachmentTable.csv",4,pname,3), LOCAL_ATTACHMENT_ACTION( statDvar, pname, paction, groupArg );, AI_FOCUS_ACTION(groupArg,pname), ;, when( ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ), ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ) \ 
 CHOICE_BUTTON_FOCUS_VIS_ADV( itemNum, "@"+tablelookup("mp/attachmentTable.csv",4,pname,3), LOCAL_ATTACHMENT_ACTION2( statDvar, pname, paction, groupArg );, AI_FOCUS_ACTION(groupArg,pname), ;, when( ptype == "secondary" && dvarBool( "attach_allow_"groupArg"_"pname ) ), ptype == "primary" && dvarBool( "attach_allow_"groupArg"_"pname ) ) \ 
 CHOICE_BUTTON_FOCUS_VIS_NOHI( itemNum, "", ;, AI_FOCUS_ACTION(groupArg,pname), ;, when( !dvarBool( "attach_allow_"groupArg"_"pname ) ); ) \ 
 CHOICE_DBUTTON_VIS( itemNum, "@"+tablelookup("mp/attachmentTable.csv",4,pname,3), when( !dvarBool( "attach_allow_"groupArg"_"pname ) ); ) 
 И существует еще третья проблема - это загрузка в саму игру выбранного оружия. Я так понял это осуществляется с помощью вот этого: 
 scriptMenuResponse "loadout_primary_attachment:"groupArg":"attachmentName;\ 
 это выражение есть в дефайне описаном выше.