Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4
  1. #1
    Аватар для vladivanovx
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.12.2016
    Сообщений
    27
    Репутация:
    0 ±

    Выход за пределы массива и проблема с y_va

    Приветствую.
    Есть несколько вопросов.
    1) Я пытаюсь загрузить гангзоны с БД, используя цикл.
    Компиляция проходит успешно, но после запуска сервера, crashdetect пишет:
    PHP код:
    [debugRun time error 4"Array index out of bounds"
    [debugAttempted to read/write array element at index 132 in array of size 132
    [debugAMX backtrace:
    [
    debug#0 00042b58 in public GZLoad () at ../inc/gz.inc:10 
    Паблик:
    PHP код:
    public GZLoad () {
      new 
    rows cache_num_rows();
      if(
    rows) {
        new 
    temp_idloaded;
        for(
    loaded 0loaded rowsloaded++) {
          
    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(Gangzonestemp_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 
    Player) {
        if(
    PermissionCheck(i) >= 1SendClientMessage(icolorstring);
      }
      return 
    1;

    Пример:
    PHP код:
    new string[128];
    format(stringsizeof(string), "%s teleported to mark"PlayerName(playerid));
    SendAdminMessage(COLOR_YELLOWstring); 
    Как можно заменить сток, что бы отправлять сообщение без форматирования, а далее что бы это не отформатированная строка попадала в сток и потом передалась в va_SendClientMessage(i, color, string);
    Пример: SendAdminMessage(COLOR_YELLOW, "%s teleported to mark", PlayerName(playerid));

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    1) Массив gzInfo увеличь на единицу.

    2) Float

      Открыть/закрыть
    3) Никак. Точнее, нормальных способов нет. А с существующими потом проблем не оберёшься

    UPD: Не заметил, что речь про инклуд y_va. Собстно, ответ на третий вопрос дал Ziggi
    Последний раз редактировалось DeimoS; 07.01.2017 в 01:24.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    vladivanovx (06.01.2017)
  4. #3
    Аватар для vladivanovx
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.12.2016
    Сообщений
    27
    Репутация:
    0 ±
    Благодарю за помощь.

  5. #4
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Координаты гангзон лучше хранить целым числом.


    PHP код:
    stock SendAdminMessage(color, const string[], va_args<>) {
      static 
    temp[144];
      
    va_format(tempsizeof(temp), stringva_start<2>);
      foreach (new 
    Player) {
        if (
    PermissionCheck(i) >= 1) {
          
    SendClientMessage(icolortemp);
        }
      }
      return 
    1;


 

 

Информация о теме

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

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •