Участник
Пользователь
- Сообщения
- 892
- Реакции
- 149
- Помог
- 25 раз(а)
Здравствуйте, у меня возник вопрос по работе ArrayFindString.
У меня есть аррай, я его пушу в нужный момент, и потом получаю его индекс через ArrayFindString. Оно получает нужный индекс, и выводит.
Но вопрос, возможно ли работать с этим нативом, если я использую ArrayGetArray/ArrayPushArray, по факту, у меня в этом аррае есть string значения и целые числа.
Возможно ли узнать индекс не пробегаясь цыклом, а найти его по string значению?
У меня есть аррай, я его пушу в нужный момент, и потом получаю его индекс через ArrayFindString. Оно получает нужный индекс, и выводит.
C++:
#include <amxmodx>
new Array: g_ArrayTest;
public plugin_init() {
g_ArrayTest = ArrayCreate(256);
register_clcmd("say /array", "CmdArrayPush");
}
public CmdArrayPush(UserId) {
ArrayPushString(g_ArrayTest, "Yes");
ArrayPushString(g_ArrayTest, "Yes2");
new Index = ArrayFindString(g_ArrayTest, "Yes");
new Index2 = ArrayFindString(g_ArrayTest, "Yes2");
client_print(UserId, print_chat, "%i", Index2);
client_print(UserId, print_chat, "%i", Index);
}
Но вопрос, возможно ли работать с этим нативом, если я использую ArrayGetArray/ArrayPushArray, по факту, у меня в этом аррае есть string значения и целые числа.
Возможно ли узнать индекс не пробегаясь цыклом, а найти его по string значению?
Код:
#include <amxmodx>
#include <reapi>
enum any: eArrayData {
ARRAY_INDEX[128],
ARRAY_FLAG[16],
ARRAY_VALUE[256],
ARRAY_ROUND
};
new const FILEPATH[] = "addons/amxmodx/configs/testitems.ini";
new Array: g_ArrayItems;
public plugin_init() {
@ReadFile();
}
@ReadFile() {
new szData[256], iFile, szRound[5], ArrayData[eArrayData];
iFile = fopen(FILEPATH, "r");
if(iFile) {
g_ArrayItems = ArrayCreate(eArrayData);
while(!feof(iFile)) {
fgets(iFile, szData, charsmax(szData));
trim(szData);
if(!szData[0] || szData[0] == ';')
continue;
if(szData[0] == '"') {
parse(szData,
ArrayData[ARRAY_INDEX], charsmax(ArrayData[ARRAY_INDEX]),
ArrayData[ARRAY_FLAG], charsmax(ArrayData[ARRAY_FLAG]),
ArrayData[ARRAY_VALUE], charsmax(ArrayData[ARRAY_VALUE]),
szRound, charsmax(szRound)
);
ArrayData[ARRAY_ROUND] = str_to_num(szRound);
ArrayPushArray(g_ArrayItems, ArrayData);
}
}
fclose(iFile);
}
}