Ваши массивы recoilTableX
и recoilTableY
являются 2-мерными 1 :
DWORD recoilTableY[<# elements in first dimension>][<# elements in second dimension>] = {...};
DWORD recoilTableX[<# elements in first dimension>][<# elements in second dimension>] = {...};
Но при чтении отдельных значений из массивов ваш код индексируется только в первое измерение . Вот почему вы получаете сообщение об ошибке, так как вы не можете получить доступ ко всему массиву как к единому целому числу, как вы пытаетесь это сделать. Вы должны указать индексы для ВСЕХ доступных измерений.
Изменить это:
AssaultRifle::recoilTableX[shotTiming]
AssaultRifle::recoilTableY[shotTiming]
На это вместо:
AssaultRifle::recoilTableX[0][shotTiming]
AssaultRifle::recoilTableY[0][shotTiming]
MAX_INDEX_WEAPON
равно 1, поэтому в первом измерении массивов есть только 1 слот, поэтому ЕДИНСТВЕННЫЙ допустимый индекс в первом измерении равен 0, что делает первое измерение довольно бесполезным и должно быть удалено, если только вы не Планирование добавления значений для дополнительного оружия в будущем.
MAX_INDEX_RECOIL
равно 29, поэтому во втором измерении массивов имеется 29 слотов, поэтому ЕДИНСТВЕННЫЕ допустимые индексы во втором измерении включают 0..28 включительно, но ваш код позволяет получить доступ к индексу 29.
NAMES ваших MAX_INDEX_WEAPON
и MAX_INDEX_RECOIL
констант вводят в заблуждение, так как на самом деле они вообще не используются в качестве индексов.
1: также, ваши массивы должны быть объявлены как const
.
Попробуйте вместо этого:
#pragma once
#include <Windows.h>
namespace AssaultRifle
{
const size_t MAX_WEAPONS = 1;
const size_t MAX_RECOILS = 29;
const int recoilTableY[MAX_WEAPONS][MAX_RECOILS] = {
{ { 40, 48, 48, 48, 33, 33, 28, 24, 16, 13, 18, 22, 24, 29, 33, 33, 33, 29, 22, 20, 17, 17, 17, 17, 20, 27, 27, 27, 26 } }
};
const int recoilTableX[MAX_WEAPONS][MAX_RECOILS] = {
{ { -36, 5, -59, -49, 3, 20, 25, 45, 43, 32, 82, 8, 43, -32, -25, -40, -35, -32, -43 , -42, -42, -55, -25, 15, 20, 35, 50, 62, 40 } }
};
}
if (bAk == 1)
{
int fireRate = 134;
if (shotTiming < AssaultRifle::MAX_RECOILS)
{
int valueX = (AssaultRifle::recoilTableX[0][shotTiming] * 0.48) + shakerNum;
int smoothingX = valueX / 5;
int valueY = (AssaultRifle::recoilTableY[0][shotTiming] * 0.48) + shakerNum;
int smoothingY = valueY / 5;
Sleep(3);
for (int i = 0; i < 5; i++)
{
mouse_move(valueX, valueY);
Sleep(fireRate / 5);
}
shotTiming++;
cout << valueX;
}
}