Закрыть Привет! Если вы читаете это - Вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы пользоваться всеми возможностями нашего форума. Обратите внимание, запрещены непристойные, матерные, бессмысленные (цифры, случайный набор букв) ники. Удачи!

Реклама







 
Писать по поводу рекламы VK: vk.com/sergey68

** Как получить V.I.P --> КЛИК **

Тема: Очищаем массив игрока

Показано с 1 по 5 из 5

  1. #1
    Зарегистрированый

    Аватар для descripter

    Статус: Оффлайн
    Регистрация:08.02.2018
    Сообщений:5
    Репутация:0 [+/-] 

    Очищаем массив игрока

    Это не совсем функция, но она имеет место быть. Она чистит массив игрока, тот, что объявлен через enum!

    PHP код:
    #define ClearEnumData(%0,%1); {new __null[%1];%0=__null;} 
    Пример использования:
    PHP код:
    enum TEST_INFO
    {
        
    name[128],
        
    age,
        
    status[128]
    };
    new 
    t_info[TEST_INFO];

    #define ClearEnumData(%0,%1); {new __null[%1];%0=__null;}

    main()
    {
        
    // заполняем массив всякой хренью
        
    strcat(t_info[name], "Антон Стяжкин");
        
    t_info[age] = 20;
        
    strcat(t_info[status], "Студент");
        
    // выводим результат до чистки
        
    printf("%s %d-лет - \"%s\""t_info[name], t_info[age], t_info[status]);
        
    // чистим
        
    ClearEnumData(t_infoTEST_INFO);
        
    // смотрим что осталось
        
    printf("%s %d-лет - \"%s\""t_info[name], t_info[age], t_info[status]);

    Последний раз редактировалось descripter; 11.02.2018 в 14:32.
  2. #2
    Пользователь

    Аватар для Long-

    Статус: Оффлайн
    Регистрация:14.12.2014
    Адрес:delete
    Сообщений:2,340
    Репутация:549 [+/-] 
    Хм, как то не логично он работает.
    Я так понимаю , ты этим хотел сделать очищения всех членов перечисления энуменатора?

    Я для этого делал бы ~ так:

    PHP код:
    for(new TEST_INFO:eTEST_INFO; ++epInfo[playerid][e] = 0
  3. #3
    Зарегистрированый

    Аватар для descripter

    Статус: Оффлайн
    Регистрация:08.02.2018
    Сообщений:5
    Репутация:0 [+/-] 
    Хм, как то не логично он работает.
    Я так понимаю , ты этим хотел сделать очищения всех членов перечисления энуменатора?

    Я для этого делал бы ~ так:

    PHP код:
    for(new TEST_INFO:eTEST_INFO; ++epInfo[playerid][e] = 0
    Ммм, циклы. Твой способ тоже имеет место быть. Но можно не делать лишних операций. Я сомневаюсь, что ты пишешь

    PHP код:
    new some 5
    вот так
    PHP код:
    new some =0;

    while (++
    some != 5){} 
    Надеюсь, аналогию ты понял)
  4. #4
    Пользователь

    Аватар для Assembler

    Статус: Оффлайн
    Регистрация:12.02.2018
    Сообщений:45
    Репутация:8 [+/-] 
    Каждый раз инициализировать массив?
    Уж лучше бы научил людей пользоваться static const для таких случаев или ещё лучше, если сразу при создании перечисления, которое нужно отчищать, просто создавать массив.
    PHP код:
    enum e_SOME_ENUM
    {
        
    // ...
    }
    new 
    someArray[e_SOME_ENUM],
        
    null_someArray[e_SOME_ENUM]; 
    И всё. Не нужно тратить дополнительное время на инициализацию.


    Касаемо цикла: это будет медленнее, ибо когда ты присваиваешь значения одного массива другому, ты просто заставляешь сервер обращаться к каждой ячейке обоих массивов и перезаписывать значения первого (при том, это ещё и оптимизированнее будет происходить, ибо компилятор откинет лишние инструкции). А когда ты делаешь всё через цикл, ко всем этим действиям прибавляются ещё и инструкции для цикла + обращение к переменной цикла. Смысл тратить лишнее время в данном случае, если можно его не тратить?
  5. #5
    Пользователь

    Аватар для VVWVV

    Статус: Онлайн
    Регистрация:02.01.2016
    Сообщений:85
    Репутация:29 [+/-] 
    PHP код:
    enum e_SOME_ENUM
    {
        
    // ...
    }
    new 
    someArray[e_SOME_ENUM],
        
    null_someArray[e_SOME_ENUM]; 
    И всё. Не нужно тратить дополнительное время на инициализацию.
    Этот метод на порядок быстрее, ибо используется лишь одна инструкция (MOVS), которая сразу перемещает определённое кол-во байт.

Ваши права

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