Как правильно передать индекс перечисления

Сообщения
264
Реакции
132
Помог
13 раз(а)
Если сделать так :
new temp = WEAPON_HEGRENADE

То в temp передастся индекс нужный, но при этом компилятор выдаст :

warning 213: tag mismatch

А как делать правильно ? подскажите пжлст.
 
Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
murlemur, Есть понимание, что такое тег в amxx, и как оно работает? WEAPON_HEGRENADE является элементом энумерации WeaponIdType, соотвественно при сопоставлении подразумевается подчинение тегу WeaponIdType. temp безтеговый, вот и варнинг. Решить можно по-разному, всё зависит от конкретного кейса применения. Например:
new WeaponIdType:temp = WEAPON_HEGRENADE
new temp = _:WEAPON_HEGRENADE
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
BlackSignature, добавлю, вместо _: можно использовать тег any:.
У него более обширный функционал, конечно, но он как-то выглядит более читабельно. Чисто имхо, разумеется.
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
Если вдруг придется сбрасывать энумерованный массив данных
Код:
enum _:TestData
{
     TEST_INFO1,
     TEST_INFO2
};

new g_eTestData[MAX_PLAYERS + 1][TestData];

//сбрасывать там, где понадобится
arrayset(g_eTestData[0][_:0], 0, sizeof(g_eTestData) * sizeof(g_eTestData[]));
 
Последнее редактирование:
Сообщения
397
Реакции
221
Помог
13 раз(а)
Albertio, если не ошибаюсь, то запись должна быть такой:
Код:
-arrayset(g_eTestData[0][_:0], 0, sizeof(g_eTestData) * sizeof(g_eTestData));
+arrayset(g_eTestData[0][_:0], 0, sizeof(g_eTestData) * sizeof(g_eTestData[]));
 
Сообщения
25
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
b0t, Albertio, Если использовать:
C++:
-arrayset(g_eTestData[0][_:0], 0, sizeof(g_eTestData) * sizeof(g_eTestData[]));
То мгновенно будет ошибка.
Run time error 5: memory access
Наиболее корректно будет:
C++:
+arrayset(g_eTestData[1][_:0], 0, sizeof(g_eTestData))
 
Последнее редактирование:
Сообщения
336
Реакции
414
Помог
7 раз(а)
satanizmov, это в каком месте будет такая ошибка? Данным способом пользуюсь не 1 раз и подобных ошибок не было. Может ты не умеешь его использовать и пихаешь в циклы какие нибудь? Тогда другое дело.
 
Сообщения
25
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Albertio, сколько у нас получается по отдельности тут sizeof(g_eTestData) и тут sizeof(g_eTestData[]) ?
 
Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
Код:
// arrayset() двумерного массива: https://dev-cs.ru/threads/7762/
stock arrayset_2d(any:array[][], any:value, size1, size2) {
    arrayset(array[0], value, size1 * size2);
}

// arrayset() трёхмерного массива: https://dev-cs.ru/threads/7762/
stock arrayset_3d(any:array[][][], any:value, size1, size2, size3) {
    arrayset(array[0][0], value, size1 * size2 * size3);
}
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу