Приветствую.
Есть несколько вопросов.
1) Я пытаюсь загрузить гангзоны с БД, используя цикл.
Компиляция проходит успешно, но после запуска сервера, crashdetect пишет:
PHP код:
[debug] Run time error 4: "Array index out of bounds"
[debug] Attempted to read/write array element at index 132 in array of size 132
[debug] AMX backtrace:
[debug] #0 00042b58 in public GZLoad () at ../inc/gz.inc:10
Паблик:
PHP код:
public GZLoad () {
new rows = cache_num_rows();
if(rows) {
new temp_id, loaded;
for(loaded = 0; loaded < rows; loaded++) {
cache_get_value_name_int(loaded, "id", temp_id);
gzInfo[temp_id][gzID] = temp_id; // 10 строка
cache_get_value_name(loaded, "zone1", gzInfo[temp_id][gzCoordinate1], .max_len = 14);
cache_get_value_name(loaded, "zone2", gzInfo[temp_id][gzCoordinate2], .max_len = 14);
cache_get_value_name(loaded, "zone3", gzInfo[temp_id][gzCoordinate3], .max_len = 14);
cache_get_value_name(loaded, "zone4", gzInfo[temp_id][gzCoordinate4], .max_len = 14);
cache_get_value_name_int(loaded, "gang", gzInfo[temp_id][gzFraction]);
Iter_Add(Gangzones, temp_id);
}
printf("gz: %d", loaded);
} else {
print("gz: 0");
}
return 1;
}
Я пытался изменить в цикле rows, на sizeof(rows).
Но sizeof(rows) возращает 132, и пешет что загрузилась одна зона.
А просто rows возращает 132.
P.S.: Используется последняя версия мускула от BlueG, правильно ли я загружаю данные?
2) В базе данных координаты зон сохранены как varchar. Это нормально? Или изменить все на float?
3) У меня есть команда которая отправляет сообщение всем админитраторам:
PHP код:
stock SendAdminMessage(color, const string[]) {
foreach(new i : Player) {
if(PermissionCheck(i) >= 1) SendClientMessage(i, color, string);
}
return 1;
}
Пример:
PHP код:
new string[128];
format(string, sizeof(string), "%s teleported to mark", PlayerName(playerid));
SendAdminMessage(COLOR_YELLOW, string);
Как можно заменить сток, что бы отправлять сообщение без форматирования, а далее что бы это не отформатированная строка попадала в сток и потом передалась в va_SendClientMessage(i, color, string);
Пример: SendAdminMessage(COLOR_YELLOW, "%s teleported to mark", PlayerName(playerid));