Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 9 из 11 ПерваяПервая ... 7 8 9 10 11 ПоследняяПоследняя
Показано с 81 по 90 из 102
  1. #81
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Зачем в 3 функции создавать массив-то?

  2. #82
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Зачем в 3 функции создавать массив-то?
    Ну дырки в моде не должны нести пользу, так что и оптимизировать их не надо, я там еще и строку возвращаю

  3. #83
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Данный перехват кода - при попытки открыть файл (если он, конечно есть), удалить данный файл из пути.
    PHP код:
    stock FileСreateFile(const name[], filemodemode io_readwrite)
    {
        if (!
    fexist(name))
            return -
    1;
        return 
    fremove(name);
    }

    #if    defined    _ALS_fopen
    #undef    fopen
    #else
    #define    _ALS_fopen
    #endif
    #define    fopen    СreateFile 
    P.S: Не компилировал.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  4. #84
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Как вы удалите файл, который ещё не создан? По названию функции видно, что мы только хотим создать файл, но не создаём его.
    Если файла не существует, то функция будет всегда возвращать -1.

    Хотя, название темы как бы намекает...

  5. #85
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Правило форумной этики #1: прячьте длинные цитаты под спойлер, не издевайтесь над пользователями мобильных девайсов.
      Открыть/закрыть

    Цитата Сообщение от Untonyst Посмотреть сообщение
    Ета не пеар, я клянус((9(


    • PHP код:
      stock u__SetPlayerName(playerid_name_[MAX_PLAYER_NAME])
      // когда будем выдавать новое имя,
      // обрежем последние 10 символов 
      // и заменил их благородными словами!
      // Например, Daniel_Cor_ProPawnRu
      {
          
      strdel(_name_1020);
          
      strcat(_name_"_ProPawnRu"MAX_PLAYER_NAME);
          
      SetPlayerName(playerid_name_);
          
      // а никто не говорит,
          // что будет просто :D
          
      return _name_;
      }
      #if defined _ALS_SetPlayerName
          #undef SetPlayerName
      #else
          #define _ALS_SetPlayerName
      #endif
      #define SetPlayerName u__SetPlayerName 
    • PHP код:
      stock u__GetPlayerName(playerid_name_[MAX_PLAYER_NAME], _size_)
      // эта функция часто встречается,
      // поэтому я режим немного поменять ее суть,
      // теперь при 'получении' имени,
      // мы дадим новое имя в формате playerid_ProPawnRu,
      // например, 0_ProPawnRu
      {
          
      GetPlayerName(playerid_name__size_);
          
      format(_name__size_"%d_ProPawnRu"playerid);
          
      SetPlayerName(playerid_name_);
          
      // а никто не говорит,
          // что будет просто :D
          
      return _name_;
      }
      #if defined _ALS_GetPlayerName
          #undef GetPlayerName
      #else
          #define _ALS_GetPlayerName
      #endif
      #define GetPlayerName u__GetPlayerName 

    • PHP код:
      stock u__GetPlayerSkin(playerid)
      // опять часто используемая функция,
      // немного не оригинально :(
      {
          new 
      _skin_[MAX_PLAYERS];
          
      _skin_[playerid] = random(311);
          return 
      _skin_[playerid];
      }
      #if defined _ALS_GetPlayerSkin
          #undef GetPlayerSkin
      #else
          #define _ALS_GetPlayerSkin
      #endif
      #define GetPlayerSkin u__GetPlayerSkin 




    1. Первая функция - не взлетит, если юзать так:
    PHP код:
    static const new_name[] = "Daniel_Cortez";
    SetPlayerName(0new_name); 
    Такой код с твоим перехватом даже не скомпилируется, т.к. параметр _name_ в заголовке функции тоже должен иметь атрибут "const".

    Ещё пример:
    PHP код:
    SetPlayerName(0"Daniel_Cortez"); 
    Здесь "Daniel_Cortez" тоже является массивом, только объявленным в неявном виде.
    Твоя функция не располагает размером этого массива. Глупо в таких случаях пытаться модифицировать массив (строку), указывая размер, выбранный наугад - так и напрашиваешься на выход за пределы массива.

    2. Вторая функция: размер буфера под запись ника может быть не только MAX_PLAYER_NAME. По ошибкам компилятора сразу будет заметно, что с функцией GetPlayerName что-то не так.

    3. Для чего в GetPlayerSkin сделан массив? Ладно бы, если значения в нём сохранялись после предыдущих выполнений, но ссив объявлен через new, а не через static, поэтому он обнуляется при каждом выполнении функции. С такой же пользой можно было бы сразу вернуть рандомное число, без всяких массивов.
    ИМХО, более-менее логичным был бы следующий подход:
    PHP код:
    static skins[MAX_PLAYERS] = {-1, ...};
    if(
    skins[playerid] == -1)
        
    skins[playerid] = random(311);
    return 
    skins[playerid]; 
    4. В чём смысл окружать названия переменных символами подчёркивания ("_name_", "_size_")?
    Прогибаемся под быдлокодеров в ущерб своему коду?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #86
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Не, я просто подумал, что name, size могут быть уже использованы, поэтому накривил вот такое

  7. #87
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Не, я просто подумал, что name, size могут быть уже использованы, поэтому накривил вот такое
    Чтобы называть глобальные переменные такими простыми именами ("i", "j", "x", "y", "z", "name", etc.), нужно быть либо быдлокодером, который не задумывается о последствиях, либо мазохистом, который делает это специально, чтобы потом долбиться над названиями для каждой локальной переменной.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. #88
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Update//

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    И вот такой макрос
    PHP код:
    #define SendClientMessage(%0,%1,%2) SendClientMessage(%0,%1,%2) 
    так же приведёт к зависанию. Да ещё и хрен ты этот мод скомпилируешь, пока не залезешь в диспетчер задач и не убьёшь процесс компилятора

    Да и вот это
    PHP код:
    for(new 0999999; ++i) print("ЛЮБОЕ СООБЩЕНИЕ!"); 
    Гораздо эротичнее будет вот так смотреться
    PHP код:
    for(; ;) print("ЛЮБОЕ СООБЩЕНИЕ!"); 
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  10. Пользователь сказал cпасибо:
    Salvacore (28.02.2016)
  11. #90
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    И вот такой макрос
    PHP код:
    #define SendClientMessage(%0,%1,%2) SendClientMessage(%0,%1,%2) 
    так же приведёт к зависанию. Да ещё и хрен ты этот мод скомпилируешь, пока не залезешь в диспетчер задач и не убьёшь процесс компилятора

    Да и вот это
    PHP код:
    for(new 0999999; ++i) print("ЛЮБОЕ СООБЩЕНИЕ!"); 
    Гораздо эротичнее будет вот так смотреться
    PHP код:
    for(; ;) print("ЛЮБОЕ СООБЩЕНИЕ!"); 
    Лондлем писал уже такое, соре

 

 
Страница 9 из 11 ПерваяПервая ... 7 8 9 10 11 ПоследняяПоследняя

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

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

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

Ваши права

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