Сколько много ошибок !!! Итак, по порядку. Не особо важно какой средой компилируешь. Я пользуюсь Microsoft Visual C++ 6.0, а вот в Microsoft Visual Studio 8 чувствую себя не в своей тарелке
![biggrin :)](https://wolfmap.ru/forum/images/smilies/biggrin.gif)
. Попробовал скомпилировать свои исходники через Microsoft Visual Studio 8 - всё как по маслу.
Так вот. Во первых - попробуй скомпилить dll-ки не меняя кода. А то я заметил, ты уже пробовал прикрутить ППШ, Мосинку, MP44 и т.д. Там ты допустил ряд ошибок.
К примеру, 'WP_MP44' : undeclared identifier. Это значит что переменная ( в данном случае константа из перечисления (enum) ) не объявлена. Объявить это значит указать тип и имя. Например:
int b;
Так мы объявили переменную b типа int ( целочисленные ). Можно так же сразу и инициализировать ( присвоить значение). Например:
int b = 3;
В случае с WP_MP44 мы имеем дело с перечислениями. Зайди в файл bg_public.h и перейди к строчке 502 ( комбинация CTRL+G ). Там будет находиться перечисление с названием weapon_t:
typedef enum {...} weapon_t;
Вот пример работы с перечислениями:
typedef enum {zero, one, two} chisla;
Теперь константе zero присвоено значение 0, one и two соответственно 1 и 2. И там, где мы видим эти константы, подразумеваются числовые значения. Поэтому под WP_MP40, например, скрывается число 3.
Из этого вытекает, что если нам нужно ввести ещё константы для нового оружия, то в перечисление weapon_t необходимо дописать имена этих констант ( WP_MP44 и т.д. ) перед последней константой WP_NUM_WEAPONS.
Последняя хранит количество констант.
Но для введения нового оружия этого не достаточно. Надобно еще помимо проекта cgame внести изменения в game. Я сейчас вот этим и занимаюсь. Пока не выходит. Все dll-ки компилируются нормально , а при загрузке игра вылетает. Поэтому если не получится расширить список оружия, придется занимать место теслы и огнемёта, а может и гранату какую-нить выкинуть.
Кстати с изменением положения оружия в селекторе проблем нет. В проекте cgame в файле cg_weapons есть такой двумерный массивчик weapBanks[][]. В нём-то и хранится инфа о положении оружия. Только нельзя забывать про его размеры. Их нельзя превышать. Размерность указывается в квадратных скобках. Вообще-то двумерный массив можно воспринимать как массив, элементами которого являются массивы. В первой скобке указывается кол-во вложенных массивов, во второй кол-во элементов этих вложенных массивов. А MAX_WEAP_BANKS и MAX_WEAPS_IN_BANK это константы инициализированные в q_shared.h начиная со строчки 1031.
Немножко длинновато получилось. :D Это была попытка этакого ЛикБез'а по C++. Если что непонятно - спрашивайте, с радостью помогу.