Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 8 ПерваяПервая 1 2 3 4 5 ... ПоследняяПоследняя
Показано с 21 по 30 из 75
  1. #21
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Хотя да, всему виной могут послужить "кривые" руки скриптера.
    Для большего удобства лучше сделать так:
    PHP код:
    #define SUB_MAX_PLAYER_NAME (4)
    #define C_MAX_PLAYER_NAME (MAX_PLAYER_NAME - SUB_MAX_PLAYER_NAME)
    #assert ((C_MAX_PLAYER_NAME + SUM_MAX_PLAYER_NAME) == MAX_PLAYER_NAME) 
    Если уж наверняка уверен, что не будешь использовать нигде добавление префикса к нику игрока, можно просто
    PHP код:
    #if MAX_PLAYER_NAME != 24
        #error Macro MAX_PLAYER_NAME is not equal to 24
    #endif  
    #undef MAX_PLAYER_NAME
    #define MAX_PLAYER_NAME 21//Под нуль-символ ещё же 
    И всё.

    P.S. А при смене ника вы и так должны 100% ограничивать игрока длиной в 20 символов, ибо если он введёт хотя бы 21 символ и вы запишете это в аккаунт, он уже не сможет зайти за свой аккаунт, ибо сам клиент не пустит его на сервер :3
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  2. Пользователь сказал cпасибо:
    VVWVV (29.03.2016)
  3. #22
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Почему же? Как я уже сказал и выше, и в том сообщении - под такое значение можно объявить константу и, при любых изменениях со стороны клиента, вносить изменения в эту константу
    Потому, что это лишняя задача, которую ты предлагаешь добровольно взвалить на свои плечи, причём задача долгосрочная, если учесть скорость выхода обновлений SA:MP.
    И, как уже ответил выше VVWVV, не факт, что вспомните о такой мелочи после обновления.
    Можно ещё сделать напоминание, добавив рядом с константой директивы для вывода сообщения об ошибке (#if, #error) при использовании новых версий SA:MP. Но как определить сам факт обновления? В стандартных инклудах нет ни одной константы, которая отвечала бы за номер версии.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Не думаю, что Куй вдруг изменит макрос MAX_PLAYER_NAME и не сообщит об этом. Да и "большое кол-во проверок" будет выглядеть так, если я правильно тебя понял:
    PHP код:
    #if MAX_PLAYER_NAME != 24
        #error Macro MAX_PLAYER_NAME is not equal to 24
    #endif 
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Хотя да, всему виной могут послужить "кривые" руки скриптера.
    Для большего удобства лучше сделать так:
    PHP код:
    #define SUB_MAX_PLAYER_NAME (4)
    #define C_MAX_PLAYER_NAME (MAX_PLAYER_NAME - SUB_MAX_PLAYER_NAME)
    #assert ((C_MAX_PLAYER_NAME + SUM_MAX_PLAYER_NAME) == MAX_PLAYER_NAME) 
    Уже ближе к истине, но опять же, те два значения могут не зависеть друг от друга. Может возникнуть такая ситуация, что лимит ника в клиенте увеличится (например, станет 24 вместо 20), а значение MAX_PLAYER_NAME останется прежним.
    Не вы создаёте клиент и не вам придумывать те константы.

    Нет, я понимаю, что в случае с SA:MP просто глупо надеяться на какие-то крупные изменения и моя критика выглядит как раздувание слона из мухи, но в любом другом случае такое выдумывание констант было бы плохой практикой, поэтому я крайне не рекомендую такой подход. Не привыкайте быдлокодить из-за SA:MP.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  4. Пользователь сказал cпасибо:
    VVWVV (30.03.2016)
  5. #23
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Потому, что это лишняя задача, которую ты предлагаешь добровольно взвалить на свои плечи, причём задача долгосрочная, если учесть скорость выхода обновлений SA:MP.
    Ну тогда давай и MAX_PLAYERS оставлять на 1000 даже если у нас всего 50 слотов на сервере. Ведь вдруг Куй вдруг решит сделать максимум 49 слотов и не предупредит нас... -_-


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    И, как уже ответил выше VVWVV, не факт, что вспомните о такой мелочи после обновления.
    Ну это уже исключительно твои проблемы и проблемы твоей профпригодности. Сервер в SA-MP - не плагин или программа, которую ты выпустил раз, пару раз пофиксил и забыл о ней. Если ты действительно держишь сервер, ты постоянно над ним работаешь и вряд ли ты о таком забудешь, если вдруг выйдет новая версия.

    Да и кто вообще обновляет свой сервер, при этом не ознакамливаясь со всеми нововведениями? Не думаю, что такие есть, как минимум, в связи с тем, что эти обновления выходят раз в год и ты тупо из любопытства поинтересуешься.
    А кто хоть раз обновлял свой сервер до новой версии (особенно в день релиза), те знают, что в такие моменты за сервером следует следить особенно сильно, ибо Куй. И даже если вдруг обнаружится, что этот самый Куй не сообщил о изменении ограничений ника, то:
    Во-первых, ты всё быстро сможешь изменить, просто подправив значения и скомпилировав мод.
    Во-вторых, ничего страшного не случится (Максимум, у кого-то, кто вдруг решит ввести себе длинный ник, этот самый ник будет отображаться/сохранится неверно и прочее).

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Уже ближе к истине, но опять же, те два значения могут не зависеть друг от друга. Может возникнуть такая ситуация, что лимит ника в клиенте увеличится (например, станет 24 вместо 20), а значение MAX_PLAYER_NAME останется прежним.
    Не вы создаёте клиент и не вам придумывать те константы.
    Ну тогда и стандартная константа станет точно такой же непригодной, как и исправленная. И "последствия" от использования её будут точно такие же.
    Да и если вдруг Куй сделает что-то подобное, проблем всё равно не избежать, ибо у пользователей MySQL столбец с длиной ника в любом случае будет равен 24 символам и все новые аккаунты длиннее 24 символов просто не запишет (даже без использования изменённой константы)

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Нет, я понимаю, что в случае с SA:MP просто глупо надеяться на какие-то крупные изменения и моя критика выглядит как раздувание слона из мухи, но в любом другом случае такое выдумывание констант было бы плохой практикой, поэтому я крайне не рекомендую такой подход. Не привыкайте быдлокодить из-за SA:MP.
    99% (данные с потолка, ога) тех, кто держит сервера и сидит на форумах, подобных этому, дальше SA-MP не уйдут никогда. А те, кто уйдёт, изначально должны понимать, что подобная практика не всегда хороша и накладывает на тебя кучу ответственности. Как бы ты не пытался продвинуть тут "правильный" стиль кодинга, те люди, что не включают голову при написании кода, всё равно обожгуться: не на этих константах, так на чём-то ещё. И пока они не обожгутся, они не поймут всех тонкостей
    Последний раз редактировалось DeimoS; 30.03.2016 в 18:42.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну тогда давай и MAX_PLAYER_NAME оставлять на 1000 даже если у нас всего 50 слотов на сервере. Ведь вдруг Куй вдруг решит сделать максимум 49 слотов и не предупредит нас... -_-
    Ты, наверное, хотел сказать про MAX_PLAYERS? Сомневаюсь, что куй пойдёт на такую глупость, хотя увеличить лимит он рано или поздно может.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну это уже исключительно твои проблемы и проблемы твоей профпригодности. Сервер в SA-MP - не плагин или программа, которую ты выпустил раз, пару раз пофиксил и забыл о ней. Если ты действительно держишь сервер, ты постоянно над ним работаешь и вряд ли ты о таком забудешь, если вдруг выйдет новая версия.
    Тем не менее, хорошим тоном обычно считается минимизация всех подобных мелочей и грязных хаков, которые программисту следует запоминать. Зачем усложнять себе жизнь лишними деталями о проекте?
    Мало того, если ты уйдёшь с поста разработчика в каком-нибудь проекте и на твоё место придёт новый человек, он потеряет уйму времени на изучение всех тех хаков, которые ты оставил ему "в наследство".


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да и кто вообще обновляет свой сервер, при этом не ознакамливаясь со всеми нововведениями? Не думаю, что такие есть, как минимум, в связи с тем, что эти обновления выходят раз в год и ты тупо из любопытства поинтересуешься.
    Не факт, что об этом будет сказано в описании к обновлению. Во-первых, это будет сравнительно небольшое изменение. Во-вторых, как следствие первого, о таком изменении легко забыть.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    И даже если вдруг обнаружится, что этот самый Куй не сообщил о изменении ограничений ника, то:
    Во-первых, ты всё быстро сможешь изменить, просто подправив значения и скомпилировав мод.
    Во-вторых, ничего страшного не случится (Максимум, у кого-то, кто вдруг решит ввести себе длинный ник, этот самый ник будет отображаться/сохранится неверно и прочее).
    Представим такую ситуацию: на сервере есть игрок с ником Alexander_Nikolaenko (20 символов) и в его собственности на сервере есть дом, машина, небольшая яхта и счёт в банке.
    Проверка владельца осуществляется следующим образом:
    PHP код:
    new name[20 1];
    GetPlayerName(playeridnamesizeof(name));
    if (
    strcmp(nameHouseInfo[houseid][hOwnerName], false20))
        return 
    SendClientMessage(playerid, -1"You shall not pass!");
    // ok 
    И если зарегистрироваться под ником Alexander_Nikolaenko123, то последние 3 символа проверены не будут и сервер подумает, что это и есть владелец собствнности.
    Так можно украсть не только серверную собственность, но и кое-что посерьёзнее - админку, например, а там последствия ограничиваются лишь фантазией злоумышленника.
    Но попробуй сначала узнай, как именно взломщик обошёл все проверки! Ты же не будешь знать об изменении незадокументированной константы заранее.
    Да, по нику Alexander_Nikolaenko123 можно догадаться, но не сразу найдёшь уязвимый отрывок кода, да и не факт, что вообще поймёшь, в чём дело.
    И это только один пример вектора атаки.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну тогда и стандартная константа станет точно такой же непригодной, как и исправленная. И "последствия" от использования её будут точно такие же.
    Просто перекомпилируй сервер с новой версией стандартных инклудов, в которых значение MAX_PLAYER_NAME увеличится, и если ты везде пользуешься именно этой константой, а не втыкаешь "24" на скорую руку, то всё будет нормально.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да и если вдруг Куй сделает что-то подобное, проблем всё равно не избежать, ибо у пользователей MySQL столбец с длиной ника в любом случае будет равен 24 символам и все новые аккаунты длиннее 24 символов просто не запишет (даже без использования изменённой константы)
    Это уже проблема не самого кода на Pawn, а СУБД, в которой используется совершенно другой ЯП. Как вариант, можно установить длину ника в 24 символа и увеличивать её в момент изменения MAX_PLAYER_NAME - уж об изменении стандартной константы должны будут объявить при выходе обновления.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    99% (данные с потолка, ога) тех, кто держит сервера и сидит на форумах, подобных этому, дальше SA-MP не уйдут никогда. А те, кто уйдёт, изначально должны понимать, что подобная практика не всегда хороша и накладывает на тебя кучу ответственности. Как бы ты не пытался продвинуть тут "правильный" стиль кодинга, те люди, что не включают голову при написании кода, всё равно обожгуться: не на этих константах, так на чём-то ещё.
    Во-первых, мои посты и не предназначены для владельцев серверов-однодневок.
    Во-вторых, твои "99%" не означают, что следует учить плохим практикам и оставшийся 1%. По твоей логике можно вообще отменить все требования к стандартам кодинга и закрыть pro-pawn к чертям собачьим, а пользователей отправить набирать знания на govno-info.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    И пока они не обожгутся, они не поймут всех тонкостей
    Что самое интересное, многие могут даже не понять, обо что обожглись. А если начнёшь объяснять, будут упорно это что-то защищать или пытаться избегать разговора. Впрочем, не то чтобы ты _должен_ им что-то объяснять...
    Естественно, для такие людей этот форум не предназначен.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ты, наверное, хотел сказать про MAX_PLAYERS? Сомневаюсь, что куй пойдёт на такую глупость, хотя увеличить лимит он рано или поздно может.
    Да, именно о MAX_PLAYERS, прошу прощения.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Тем не менее, хорошим тоном обычно считается минимизация всех подобных мелочей и грязных хаков, которые программисту следует запоминать. Зачем усложнять себе жизнь лишними деталями о проекте?
    Мало того, если ты уйдёшь с поста разработчика в каком-нибудь проекте и на твоё место придёт новый человек, он потеряет уйму времени на изучение всех тех хаков, которые ты оставил ему "в наследство".
    Ну тогда говорю же, давай вообще откажемся от любых изменений стандартных макросов, в том числе и MAX_PLAYERS. Ведь вдруг в проект придёт кто-то ещё...
    Ну или укажи мне на ту самую грань, когда изменение стандартных макросов ещё приемлемо и когда уже не приемлемо.

    Да и обычно в случаях, когда есть шанс передачи проекта другому человеку, принято оставлять комментарии к своему коду, не? В которых и указывать все подобные хаки.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не факт, что об этом будет сказано в описании к обновлению. Во-первых, это будет сравнительно небольшое изменение. Во-вторых, как следствие первого, о таком изменении легко забыть.
    Сравнительно небольшое изменение, которое фактически логику всего мода изменяет...



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Представим такую ситуацию: на сервере есть игрок с ником Alexander_Nikolaenko (20 символов) и в его собственности на сервере есть дом, машина, небольшая яхта и счёт в банке.
    Проверка владельца осуществляется следующим образом:
    PHP код:
    new name[20 1];
    GetPlayerName(playeridnamesizeof(name));
    if (
    strcmp(nameHouseInfo[houseid][hOwnerName], false20))
        return 
    SendClientMessage(playerid, -1"You shall not pass!");
    // ok 
    И если зарегистрироваться под ником Alexander_Nikolaenko123, то последние 3 символа проверены не будут и сервер подумает, что это и есть владелец собствнности.
    Так можно украсть не только серверную собственность, но и кое-что посерьёзнее - админку, например, а там последствия ограничиваются лишь фантазией злоумышленника.
    Но попробуй сначала узнай, как именно взломщик обошёл все проверки! Ты же не будешь знать об изменении незадокументированной константы заранее.
    Да, по нику Alexander_Nikolaenko123 можно догадаться, но не сразу найдёшь уязвимый отрывок кода, да и не факт, что вообще поймёшь, в чём дело.
    И это только один пример вектора атаки.
    Если такое случится, то игрока ещё на стадии авторизации опознает как Alexander_Nikolaenko и предложит ему именно авторизироваться, а не зарегистрироваться.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Просто перекомпилируй сервер с новой версией стандартных инклудов, в которых значение MAX_PLAYER_NAME увеличится, и если ты везде пользуешься именно этой константой, а не втыкаешь "24" на скорую руку, то всё будет нормально.
    Так мы же говорим о ситуации, когда Куй забыл изменить макрос MAX_PLAYER_NAME и оставил его равным 24, хотя в самом клиенте изменения внёс, не? Если брать обратную ситуацию, то, опять же, я дал условие, которое сразу сообщит о изменении значения макроса


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Это уже проблема не самого кода на Pawn, а СУБД, в которой используется совершенно другой ЯП. Как вариант, можно установить длину ника в 24 символа и увеличивать её в момент изменения MAX_PLAYERS
    Я знаю чья это проблема, но проблема от этого не перестаёт быть реальной.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    уж об изменении стандартной константы должны будут объявить при выходе обновления.
     Ты сам себе противоречишь -_-
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Может возникнуть такая ситуация, что лимит ника в клиенте увеличится (например, станет 24 вместо 20), а значение MAX_PLAYER_NAME останется прежним.


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Во-первых, мои посты и не предназначены для владельцев серверов-однодневок.
    Ну ты можешь упорно пытаться закрывать глаза на реальность, но от этого она не изменится - сервера в SA-MP для многих являются как хобби и не более. Так же, как и в других играх, кои сервера тогда тоже можно назвать "однодневками" (в тот же DayZ или CS зайди и процентов 60 всех серверов будут являться обычными сборками, установленными на сервер и владельцы этих серверов не смогут сами даже какой-то новый плагин подключить без мануала).

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Во-вторых, твои "99%" не означают, что следует учить плохим практикам и оставшийся 1%. По твоей логике можно вообще отменить все требования к стандартам кодинга и закрыть pro-pawn к чертям собачьим, а пользователей отправить набирать знания на govno-info.
    По моей логике не нужно иметь двойных стандартов и продвигать только те хаки, которые именно тебе кажутся удобными, а все остальные гнобить :3



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Что самое интересное, многие могут даже не понять, обо что обожглись.
    Потому что их изначально учат тому, что не нужно думать, нужно просто делать как говорят! И в садике так учат, и в школе так учат, и на форуме так же учат: "вот так делать правильно и не смей пробовать иначе, ибо плохо будет! Как именно плохо? Не важно, делай как говорят!"

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    А если начнёшь объяснять, будут упорно это что-то защищать или пытаться избегать разговора. Впрочем, не то чтобы ты _должен_ им что-то объяснять...
    Вот ты мне писал, мол зачем я сижу на p-i. Но не поверишь, если людям с того форума попытаться начать НОРМАЛЬНО объяснять, раскладывая всё по полочкам, большая часть из них (где-то четыре к двум) начинает понимать о чём идёт речь и начинают интересоваться Pawn в правильном направлении. Есть даже те, кого я звал на этот форум и кто тут даже остался
     если немного отойти от темы
    Печаль в том, что многие на этом форуме настолько возомнили себя особенными, что начинают гнобить (именно гнобить, а не подсказывать и помогать) тем, кто приходит с того же p-i и начинает по привычке заливать сюда всякий шлак. Люди уже настолько заигрались во вражду форумов (которая, кстати, идёт только в одностороннем порядке: от p-p к p-i), что не замечают когда перегибают палку (если кто-то более-менее знаменитый на p-i заходит сюда и делает хоть одну маленькую ошибку в своём коде, либо просто не соблюдает общепринятый тут стиль написания кода, его открыто начинают слать на p-i и говорить, что тут такие не нужны... В общем, страшненько это

    В общем, далеко не все такие упёртые, как ты сейчас пытаешься сказать. Просто есть те, кто заперт в том мире, что создал p-i со своим говнокодом, ибо когда люди гуглят о чём-либо для SA-MP, чаще всего им попадается именно этот крупный портал и они просто не знают, что на p-p информация качественнее. И твоя позиция "говнокодеры этому порталу не нужны" никак не исправит ситуацию, ибо для того, чтоб говнокодер понял о том, что он говнокодер, ты должен ему это объяснить на понятных для него примерах. Тогда он и не будет на всеми тут ненавистном p-i сидеть. Хотя право твоё


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Естественно, для такие людей этот форум не предназначен.
    Именно поэтому этот форум и находится в стагнации :с
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    Profyan (31.03.2016)
  9. #26
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну тогда говорю же, давай вообще откажемся от любых изменений стандартных макросов, в том числе и MAX_PLAYERS. Ведь вдруг в проект придёт кто-то ещё...
    Ну или укажи мне на ту самую грань, когда изменение стандартных макросов ещё приемлемо и когда уже не приемлемо.
    Я вообще ничего не говорил про изменение макросов. И, раз уж на то пошло, значение MAX_PLAYER_NAME, как и MAX_PLAYERS можно уменьшить, в функции GetPlayerName всё равно указывается размер буфера. Тем не менее, следует задуматься о возможных последствиях и осознавать риск вмешательства в стандартные константы.
    Если при изменении MAX_PLAYERS будет только вероятность выхода за пределы массива, если в server.cfg указано больше слотов, то при уменьшении MAX_PLAYER_NAME можно получить и что-нибудь похуже.
    Мало того, MAX_PLAYERS обычно переобъявляют, чтобы сэкономить память, но какой может быть смысл вмешиваться в MAX_PLAYER_NAME, если там можно сэкономить от силы несколько ячеек?


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да и обычно в случаях, когда есть шанс передачи проекта другому человеку, принято оставлять комментарии к своему коду, не? В которых и указывать все подобные хаки.
    Тем не менее, на ознакомление с этими хаками всё равно уйдёт время, с комментариями или без.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Сравнительно небольшое изменение, которое фактически логику всего мода изменяет...
    Ты мыслишь, как скриптер, а следовало бы мыслить как разработчик SA:MP. Тот самый разработчик, которому плевать на скриптеров и на всю аудиторию в целом (за исключением денег, естественно).
    Если бы он думал о логике, он бы давно уже сделал соответствие макс. длины ника в клиенте значению MAX_PLAYER_NAME. Но воз и ныне там...
    И да, раньше уже были случаи с недокументированными изменениями. Вот пример одного из них в 0.3.7:
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    • Со скинов 165 и 166 удалены солнцезащитные очки.

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Если такое случится, то игрока ещё на стадии авторизации опознает как Alexander_Nikolaenko и предложит ему именно авторизироваться, а не зарегистрироваться.
    А может быть такая ошибка закралась только в код проверки домов/машин/админки? Они же не зависят друг от друга.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Так мы же говорим о ситуации, когда Куй забыл изменить макрос MAX_PLAYER_NAME и оставил его равным 24, хотя в самом клиенте изменения внёс, не? Если брать обратную ситуацию, то, опять же, я дал условие, которое сразу сообщит о изменении значения макроса
    С помощью SetPlayerName можно установить ник не до 20, а до 24 символов, т.е. до MAX_PLAYER_NAME.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Я знаю чья это проблема, но проблема от этого не перестаёт быть реальной.
    Тем не менее, возможное решение я привёл.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ты сам себе противоречишь -_-
    Может, посвятишь меня, в чём именно?


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну ты можешь упорно пытаться закрывать глаза на реальность, но от этого она не изменится - сервера в SA-MP для многих являются как хобби и не более.
    Я это прекрасно понимаю. Более того, я и не рассчитываю что-то заметно изменить.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    По моей логике не нужно иметь двойных стандартов и продвигать только те хаки, которые именно тебе кажутся удобными, а все остальные гнобить :3
    Хаки, которые "кажутся мне удобными"? Например?


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Потому что их изначально учат тому, что не нужно думать, нужно просто делать как говорят! И в садике так учат, и в школе так учат, и на форуме так же учат: "вот так делать правильно и не смей пробовать иначе, ибо плохо будет! Как именно плохо? Не важно, делай как говорят!"
    И что ты хочешь этим сказать?


    Цитата Сообщение от DeimoS Посмотреть сообщение
    И твоя позиция "говнокодеры этому порталу не нужны"
    Речь была о тех, кто не способен обучаться.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Именно поэтому этот форум и находится в стагнации
    Уж лучше так, чем ещё один г-и. И да, ещё раз ответ выше.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Я вообще ничего не говорил про изменение макросов.
    А разве не об этом изначально была речь?...

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    И, раз уж на то пошло, значение MAX_PLAYER_NAME, как и MAX_PLAYERS можно уменьшить, в функции GetPlayerName всё равно указывается размер буфера. Тем не менее, следует задуматься о возможных последствиях и осознавать риск вмешательства в стандартные константы.
    Я уже раза 3 сказал о том, что подобные махинации с кодом влекут за собой соответствующие последствия...


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если при изменении MAX_PLAYERS будет только вероятность выхода за пределы массива, если в server.cfg указано больше слотов, то при уменьшении MAX_PLAYER_NAME можно получить и что-нибудь похуже.
    Например?

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Мало того, MAX_PLAYERS обычно переобъявляют, чтобы сэкономить память, но какой может быть смысл вмешиваться в MAX_PLAYER_NAME, если там можно сэкономить от силы несколько ячеек?
    Несколько ячеек в случае с GetPlayerName в OnPlayerConnect + несколько ячеек в случае с массивом для хранения приветствия при входе + ещё несколько ячеек при запросе в бд... Данный макрос используется часто и "несколько ячеек" могут превратиться в пару сотен. Да и, опять же, хочется вспомнить политику двойных стандартов, когда в одном случае изобретать велосипеды - нормально, а в другом - греху подобно. КОгда это экономия лишней пары ячеек стала чем-то плохим?

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Тем не менее, на ознакомление с этими хаками всё равно уйдёт время, с комментариями или без.
    Как и на ознакомление с остальным кодом, не? Пока не звучит убедительно, если честно



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ты мыслишь, как скриптер, а следовало бы мыслить как разработчик SA:MP. Тот самый разработчик, которому плевать на скриптеров и на всю аудиторию в целом (за исключением денег, естественно).
    Если бы он думал о логике, он бы давно уже сделал соответствие макс. длины ника в клиенте значению MAX_PLAYER_NAME. Но воз и ныне там...
    Так а как тогда быть с возможностью добавлять префиксы к никам? Вот зашёл я на твой сервер и ник у меня равен 20 символам, а у тебя на сервере система банд, которая позволяет добавлять префикс из трёх символов к нику. С текущей "нелогичной" версией MAX_PLAYER_NAME такое вполне возможно и проблем с этим не будет (например, при подсчёте кол-ва ячеек для форматирования чата, дабы отображать и префикс, и сам ник). А как быть в случае с твоей версией, где MAX_PLAYER_NAME будет ровна 20?
    Разве вообще Куй виноват в том, что сообщество не хочет вникать в клиент? Ведь эта фишка с 20-ю символами задокументирована и те, кто хоть немного разбираются в функционале мультиплеера, прежде чем писать свои скрипты, те знают про эту особенность.
    Куй виноват только в том, что он нуль-символ не учёл в этом макросе. Хотя и тут его можно понять, ибо такой макрос пригодился бы только для создания массивов, в основном.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    И да, раньше уже были случаи с недокументированными изменениями. Вот пример одного из них в 0.3.7:
    Ну ты сравнил смену текстурок и подобного рода изменение...




    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    А может быть такая ошибка закралась только в код проверки домов/машин/админки? Они же не зависят друг от друга.
    Эмм, у тебя макрос MAX_PLAYER_NAME уже изменён на 21 символ. Следовательно, при входе, когда ты будешь записывать ник игрока в массив, ты так же запишешь всего 20 символов, а всё остальное отбросишь. И в таблицу с аккаунтами отправишь ровно 20 символов => если обрубок твоего ника будет совпадать с ником другого игрока, то MySQL найдёт этот аккаунт и предложит тебе авторизироваться. Ты никак не проникнешь на сервер с ником в 24 символа, при этом пройдя регистрацию, заточенную под 20 символов.



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    С помощью SetPlayerName можно установить ник не до 20, а до 24 символов, т.е. до MAX_PLAYER_NAME.
    Как я уже писал ранее, ты должен ограничивать игрока именно 20-ю символами, ибо если он введёт больше 20 символов и аккаунт сохранится с таким ником, в следующий раз он просто не сможет под этим ником зайти, ибо клиент заброкует ник с такой длинной. Следовательно, если ты это не учёл - всё сводится к твоей криворукости (надеюсь ты понимаешь, что, на протяжении всей беседы, я говорю не именно о тебе, а о гипотетическом скриптере, который допускает такие ошибки)



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Тем не менее, возможное решение я привёл.
    Решение проблемы, которая вообще изначально не поднималась ;) И ежу понятно, что в случае изменения макроса со стороны разработчиков мультиплеера, нужно менять значение в БД. Только вот с текущей длиной ты ошибся, ибо в БД так же, как и в клиент, не стоит писать ник длиннее 20 символов, если у тебя система аккаунтов не имеет ветвистый вид (один основной ник и от него уже имеется возможность зарегистрировать несколько других аккаунтов со своими никами по типу сингла из GTA 5). И причину я описал выше



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Может, посвятишь меня, в чём именно?
    Хмм, прости, вот тут немного неправильно тебя изначально понял (перепрочёл и понял, что в первом случае ты говоришь о том, что могут забыть изменить константу, а во втором - что обязательно предупредят об изменении. Сначала понял так, что ты говоришь, мол "разработчики могут забыть изменить константу, но константу они изменить не забудут", если уж совсем утрировать).


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Хаки, которые "кажутся мне удобными"? Например?
    Я не говорил конкретно про тебя, а имел ввиду сообщество в целом. Думаю, нет нужды приводить примеры? Но если всё же нужно - могу пошарить в архивах сего форума и процитировать



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    И что ты хочешь этим сказать?
    То, что говорил и ранее: нужно давать людям всю информацию по поводу того или иного вопроса, а не ограничиваться только тем, что ты считаешь правильным. Сказать: "тыкать в людей ножом - это плохо", может каждый, а ты попробуй объяснить почему это плохо и тогда ты уменьшишь риски свершения подобного действия (тыканья ножом) к минимуму



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Речь была о тех, кто не способен обучаться.
    А как ты их отсеиваешь, если не секрет?



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Уж лучше так, чем ещё один г-и
    А можно было создать второй Хабр, только более узконаправленный. Но тут ситуация повторяется как с серверами в SA-MP: в далёком 2008-ом году был придуман GF (а может что-то и ещё раньше было), в котором основой Role Play режима была система уровней и прочего, и эту идею по сей день доят до последнего. А потом удивляются почему все сервера похожи друг на друга, когда любой "уникальный" мод начинается с копирования GF
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А разве не об этом изначально была речь?...
    Если ты не заметил, речь изначально шла не об изменении стандартных макросов, а о выдумывании своих в то время, как ты сам никакого отношения к SA:MP не имеешь и о предстоящих изменениях узнаешь в самый последний (и, возможно, далеко не в самый подходящий) момент.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Например?
    Начиная с просто неприятных (если ты предлагаешь уменьшить значение именно в MAX_PLAYER_NAME, то будет немного сложнее уместить ник с префиксом) и заканчивая уязвимостями, пример которых я уже привёл.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Несколько ячеек в случае с GetPlayerName в OnPlayerConnect + несколько ячеек в случае с массивом для хранения приветствия при входе + ещё несколько ячеек при запросе в бд... Данный макрос используется часто и "несколько ячеек" могут превратиться в пару сотен.
    В любом случае, это ничто по сравнению с экономией при уменьшении MAX_PLAYERS: если величина данных об аккаунте занимает 100-200 ячеек, то при уменьшении MAX_PLAYERS с 1000 до 50 этих ячеек можно сэкономить ~100 000-200 000 - и это ещё не считая других массивов, у которых тоже размер MAX_PLAYERS, с ними экономия достигает мегабайтов памяти.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да и, опять же, хочется вспомнить политику двойных стандартов, когда в одном случае изобретать велосипеды - нормально, а в другом - греху подобно. КОгда это экономия лишней пары ячеек стала чем-то плохим?
    Тогда, когда она начинает усложнять дальнейшую разработку мода без сильной на то необходимости, вносит новые ограничения в процесс игры (то же урезание длины ника, например) или угрожает появлением новых уязвимостей. Да, желание сэкономить немного памяти - это хорошо, но нужно знать меру.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Как и на ознакомление с остальным кодом, не? Пока не звучит убедительно, если честно
    Если проект грамотно структурирован, то не обязательно ознакамливаться с каждым файлом и с каждой строчкой кода, достаточно из названий модулей узнать, какой из них за что отвечает, а с принципом их работы ознакамливаться лишь потом, при необходимости.
    Твой же подход с новыми константами может повлиять не на какой-то отдельный модуль, а на всю кодовую базу проекта в целом.
    Новому же разработчику, помимо тех правил, которые на него накладывают используемые в проекте библиотеки (в данном случае инклуды SA:MP), придётся держать в голове и твоё исключение из правил (возможно, даже не понимая, зачем оно было придумано).


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Так а как тогда быть с возможностью добавлять префиксы к никам? Вот зашёл я на твой сервер и ник у меня равен 20 символам, а у тебя на сервере система банд, которая позволяет добавлять префикс из трёх символов к нику. С текущей "нелогичной" версией MAX_PLAYER_NAME такое вполне возможно и проблем с этим не будет (например, при подсчёте кол-ва ячеек для форматирования чата, дабы отображать и префикс, и сам ник). А как быть в случае с твоей версией, где MAX_PLAYER_NAME будет ровна 20?
    В таком случае следовало бы по уму сделать две константы: MAX_PLAYER_NAME и MAX_PLAYER_NAME_PREFIX (можно ещё MAX_PLAYER_TOTAL_NAME), а по возможности отделить сам префикс от ника, сделав отдельные функции для получения и установки префикса.
    И да, где-нибудь вообще сказано, что та багофича с несоответствием MAX_PLAYER_NAME в клиенте и инклудах предназначена именно для префиксов, а не просто глупый промах разработчика (как это обычно и бывает)?


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Разве вообще Куй виноват в том, что сообщество не хочет вникать в клиент?
    А разве сообщство виновато в том, что у куя всё делается через энное место?
    Ок, виновато, но лишь в том, что позволило стать SA:MP популярным, ведь хомячкам нет дела до его уродливого внутреннего строения.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну ты сравнил смену текстурок и подобного рода изменение...
    Опять же, мыслишь как скриптер, для куя же это изменение может показаться незначительным - он же не держит никаких серверов.
    И да, я не сравнил, а лишь привёл пример того, что раньше подобные случае с недокументированными изменениями уже были. Ещё одним можно считать "скрытое" обновление 0.3.7 R2-1-1, которое было 1 августа, через месяц после выхода R2-1, правда, о больше нём вообще ничего точно не известно.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, у тебя макрос MAX_PLAYER_NAME уже изменён на 21 символ.
    Разговор был не про MAX_PLAYER_NAME (значение этой константы осталось неизменным, 24), а про выдуманную тобой константу "C_MAX_PLAYER_NAME" (20). Хорошо, дальше в этой теме я буду употреблять именно её название.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Решение проблемы, которая вообще изначально не поднималась ;)
    Ну почему же не поднималась, ты сам про неё упомянул.
    И некоторые проблемы лучше решать не по мере поступления, а продумывать и учитывать с самого начала, иначе потом может понадобиться вносить радикальные (и отнюдь не самые изящные в техническом плане) изменения, чтобы скрыть (замечу, не исправить, а именно скрыть) недостатки в изначальной архитектуре проекта.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Я не говорил конкретно про тебя, а имел ввиду сообщество в целом. Думаю, нет нужды приводить примеры? Но если всё же нужно - могу пошарить в архивах сего форума и процитировать
    В таком случае, я не пойму, кому был адресован ответ, ведь изначально он звучал, как обвинение в мою сторону.
    Напомню, речь шла о двойных стандартах:
    По моей логике не нужно иметь двойных стандартов и продвигать только те хаки, которые именно тебе кажутся удобными, а все остальные гнобить :3

    Цитата Сообщение от DeimoS Посмотреть сообщение
    То, что говорил и ранее: нужно давать людям всю информацию по поводу того или иного вопроса, а не ограничиваться только тем, что ты считаешь правильным. Сказать: "тыкать в людей ножом - это плохо", может каждый, а ты попробуй объяснить почему это плохо и тогда ты уменьшишь риски свершения подобного действия (тыканья ножом) к минимуму
    В любом случае, подход с воспитанием в детсаде или школе мало чем связан со способностями в плане написания кода. Само по себе программирование - это работа в некой виртуальной реальности, при которой всё приходится изучать практически с чистого листа.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    А как ты их отсеиваешь, если не секрет?
    Мне незачем кого-либо отсеивать, я не обучаю никого индивидуально.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    А можно было создать второй Хабр, только более узконаправленный.
    В том-то и дело, что проект получится чересчур узконаправленный. Из самой сферы разработки в SA:MP или MTA мало что можно взять, чтобы каждый день (или, хотя бы, два) заполнять фид интересными статьями. С модерированием статей/комментариев и отсеиванием говнокода тоже могут возникнуть проблемы.
    Как результат, проект просто не сможет набрать нужную аудиторию. А если сделать слишком мягкие правила, то он превратится в ещё один г-и, только видоизменённый.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если ты не заметил, речь изначально шла не об изменении стандартных макросов, а о выдумывании своих в то время, как ты сам никакого отношения к SA:MP не имеешь и о предстоящих изменениях узнаешь в самый последний (и, возможно, далеко не в самый подходящий) момент.
    Я говорю про то начало, где я уже предложил менять сам MAX_PLAYER_NAME :D
    После моего сообщения о изменении MAX_PLAYER_NAME мы говорили лишь о изменении макроса и я что-то не вижу упоминаний о создании дополнительных...



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Начиная с просто неприятных (если ты предлагаешь уменьшить значение именно в MAX_PLAYER_NAME, то будет немного сложнее уместить ник с префиксом) и заканчивая уязвимостями, пример которых я уже привёл.
    Так а причём тут префикс, если я предлагаю изменить макрос только тогда, когда к нику 100% не будет добавлен никакой префикс?
    Ну а про уязвимости ниже



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В любом случае, это ничто по сравнению с экономией при уменьшении MAX_PLAYERS: если величина данных об аккаунте
    Почему же? Не обязательно же MAX_PLAYER_NAME изменится на большое число ячеек. Я могу, например, создать 5 стандартных ботов, которые занимают слоты с последнего. По твоей логике, их в массивах учитывать уже не обязательно и пусть эти 5 ячеек висят без дела



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Тогда, когда она начинает усложнять дальнейшую разработку мода без сильной на то необходимости, вносит новые ограничения в процесс игры (то же урезание длины ника, например) или угрожает появлением новых уязвимостей. Да, желание сэкономить немного памяти - это хорошо, но нужно знать меру.
    Ты так и не привёл никаких аргументов в пользу того, что подобное изменение макроса как-то усложняет код или угрожает появлением уязвимостей.
    Как уже было сказано ранее, если код передаётся из рук в руки, там должны быть комментарии. На код с комментариями ты потратишь не больше времени, нежели ты бы потратил на разбор кода без подобного макроса (или прочесть комментарий "MAX_PLAYER_NAME подогнана под лимиты мультиплеера" - это сверхсложная задача?).
    С уязвимостями мы тоже, вроде как, всё уяснили.


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если проект грамотно структурирован, то не обязательно ознакамливаться с каждой строчкой кода, достаточно из названий модулей узнать, какой из них за что отвечает, а с принципом их работы ознакамливаться лишь потом, при необходимости.
    Ты, по-моему, путаешь SA-MP и создание *удалено //DC*, коим ты занимаешься...
    Да и речь шла не о понимании предназначения каких-то отдельных систем, а о понимании предназначения всего одного макроса. Ты сейчас пытаешься сравнить бумажный самолётик и Боинг :(

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Твой же подход с новыми константами может повлиять на на какой-то отдельный модуль, а на всю кодовую базу проекта в целом.
    Новому же разработчику, помимо тех правил, которые на него накладывают используемые в проекте библиотеки (в данном случае инклуды SA:MP), придётся держать в голове и твоё исключение из правил (возможно, даже не понимая, зачем оно было придумано).
    Ну тогда говорю же, давай вообще откажемся от каких-либо макросов и написания свои функций, а будем весь код писать прямо в коллбэках. Зачем заставлять бедного нового разработчика (которого, с вероятностью в 99.9% и не будет) держать в памяти имена этих самых макросов и функций, а так же их предназначение?
    Хотя ладно, ты имеешь ввиду, как я понимаю, не совсем то, о чём я говорю. Просто не будем ходить далеко и вспомним твоё "MAX_PLAYER_NAME+1", которое ты считаешь исключительно верным (даже при подключении к серверу, хотя в тот момент ник никак не сможет быть равным 24-ем символам). Можно провести опрос и посмотреть сколько людей поймёт для чего ты прибавляешь к макросу единицу, а потом сделаем тот же опрос с моим кодом. И сравнить результаты. Да и если новый разработчик не знает про этот прикол с нуль-символом, у него так же могут возникнуть проблемы, когда вдруг последний символ начнёт исчезать в новых системах. Тогда что, подстраиваться под такие случаи и отказаться от "+1"?



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В таком случае следовало бы по уму сделать две константы: MAX_PLAYER_NAME и MAX_PLAYER_NAME_PREFIX (можно ещё MAX_PLAYER_TOTAL_NAME), а по возможности отделить сам префикс от ника, сделав отдельные функции для получения и установки префикса.
    А разве не об этом изначально говорил? Хотя простите, я же напрямую не сказал "делайте макрос MAX_PLAYER_NAME_PREFIX равным 25 символам и MAX_PLAYER_NAME равным 21 символу", а попытался объяснить суть, дабы каждый смог осознать проблему и предпринять какие-то меры.

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    И да, где-нибудь вообще сказано, что та багофича с несоответствием MAX_PLAYER_NAME в клиенте и инклудах предназначена именно для префиксов, а не глупый промах разработчика (как чаще всего и бывает)?
    Например тут?


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    А разве сообщство виновато в том, что у куя всё делается через энное место?
    Ну а как ты предлагаешь сделать иначе?
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ок, виновато, но лишь в том, что позволило стать SA:MP популярным, ведь хомячкам нет дела до его уродливого внутреннего строения.
    Это уже проблема не конкретно сообщества SA-MP, а всего человечества в целом. Общество потребления и всё такое. Но это уже другой разговор


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Опять же, мыслишь как скриптер, для куя же это изменение может показаться незначительным - он же не держит никаких серверов.
    И да, я не сравнил, а лишь привёл пример того, что раньше подобные случае с недокументированными изменениями уже были. Ещё одним можно считать обновление 0.3.7 R2-1-1, которое было 1 августа, через месяц после выхода R2-1 (правда, о нём пока вообще ничего точно не известно).
    Ну тогда он может и про 0.4 забыл сообщит, а оно уже готово? И все предыдущие версии выпускались так долго просто потому что он забывал их опубликовать? Это не аргументация, а уход в "если бы, да кабы". С таким же успехом он вообще может закрыть SA-MP и все труды будут насмарку. Что, отказаться теперь от разработки скриптов?


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Разговор был не про MAX_PLAYER_NAME (значение этой константы осталось неизменным, 24), а про выдуманную тобой константу "C_MAX_PLAYER_NAME" (20). Хорошо, дальше в этой теме я буду употреблять именно её название.
    C_MAX_PLAYER_NAME была выдумана не мной, если ты не заметил. Я лишь объяснил, что в MAX_PLAYER_NAME учитывается и место под префикс, которое во многих случаях просто не нужно, а так же показал пример того, как можно контролировать изменение MAX_PLAYER_NAME со стороны разработчиков мультиплеера. Каких-то конкретных констант я не давал.


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ну почему же не поднималась, ты сам про неё упомянул.
    И некоторые проблемы лучше решать не по мере поступления, а продумывать и учитывать с самого начала, иначе потом может понадобиться вносить радикальные (и отнюдь не самые изящные в техническом плане) изменения, чтобы исправить недостатки в изначальной архитектуре проекта.
    Я её поднял лишь как доказательство того, что проблем в любом случае не избежать, если Куй вдруг изменит размер ника. И я не искал решение этой проблемы, а прямо там намекнул на то, что размер столбца придётся править вручную



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В таком случае, я не пойму, кому был адресован ответ, ведь изначально он звучал, как обвинение в мою сторону.
    Напомню, речь шла о двойных стандартах:
    Я ещё в предыдущем сообщении говорил, что под словом "ты" я имел ввиду далеко не тебя. Изначально я надеялся, что ты (теперь уже действительно ты) поймёшь, что обвинения из разряда "если ты криворукий, естественно работать не будет" не относятся к тебе, но нет :с


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В любом случае, подход с воспитанием в детсаде или школе мало чем связан со способностями в плане написания кода. Само по себе программирование - это работа в некой виртуальной реальности, при которой всё приходится изучать практически с чистого листа.
    Как и при строительстве или сборке лайнера. Везде имеются основы, которые закладываются в детском саду и школе. В том числе и умение скептически воспринимать информацию



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Мне незачем кого-либо отсеивать, я не обучаю никого индивидуально.
    При этом ты их отсеиваешь, говоря, что им не место на этом форуме. Только как ты определяешь их - непонятно



    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В том-то и дело, что проект получится чересчур узконаправленный. Из самой сферы разработки в SA:MP или MTA мало что можно взять, чтобы каждый день (или, хотя бы, два) заполнять фид интересными статьями. С модерированием статей/комментариев и отсеиванием говнокода тоже могут возникнуть проблемы.
    Как результат, проект просто не сможет набрать нужную аудиторию. А если сделать слишком мягкие правила, то он превратится в ещё один г-и, только видоизменённый.
    Он получился не то чтоб узконаправленный. Просто контент в нём, в основном, создан для более-менее разобравшихся в основах. Да и атмосфера тут не особа дружелюбна к новичкам, ибо на любые их попытки хоть что-то создать, их сразу посылают на г-и
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  13. Пользователь сказал cпасибо:
    Profyan (31.03.2016)
  14. #30
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Я говорю про то начало, где я уже предложил менять сам MAX_PLAYER_NAME :D
    После моего сообщения о изменении MAX_PLAYER_NAME мы говорили лишь о изменении макроса и я что-то не вижу упоминаний о создании дополнительных...
    Изначально это замечание адресовалось не столько тебе, сколько VVWVV. Ты же начал возражать, хоть это и было недоразумением.
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Для большего удобства лучше сделать так:
    Код:
    #define SUB_MAX_PLAYER_NAME (4)
    #define C_MAX_PLAYER_NAME (MAX_PLAYER_NAME - SUB_MAX_PLAYER_NAME)
    #assert ((C_MAX_PLAYER_NAME + SUM_MAX_PLAYER_NAME) == MAX_PLAYER_NAME)[/PHP]

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Так а причём тут префикс, если я предлагаю изменить макрос только тогда, когда к нику 100% не будет добавлен никакой префикс?
    Если ты действительно объясняешь другим возможные негативные последствия, то вряд ли на сервере произойдёт что-то неожиданное.
    Главное, чтобы те, кому ты предлагаешь менять стандартные константы, полностью осознавали, на что идут, а не слепо гнались за оптимизацией.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Почему же? Не обязательно же MAX_PLAYER_NAME изменится на большое число ячеек. Я могу, например, создать 5 стандартных ботов, которые занимают слоты с последнего. По твоей логике, их в массивах учитывать уже не обязательно и пусть эти 5 ячеек висят без дела
    Если уменьшить значение в MAX_PLAYERS до 50 и в server.cfg тоже выставить 50 слотов, то боты окажутся в слотах с 49 по 45.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ты так и не привёл никаких аргументов в пользу того, что подобное изменение макроса как-то усложняет код или угрожает появлением уязвимостей.
    Если для тебя накапливание новых исключений из правил не аргумент, то я даже не знаю, есть ли смысл тебе что-либо здесь доказывать.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ты, по-моему, путаешь SA-MP и создание *удалено //DC*, коим ты занимаешься...
    Я же просил не распространяться об этом -_-


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да и речь шла не о понимании предназначения каких-то отдельных систем, а о понимании предназначения всего одного макроса. Ты сейчас пытаешься сравнить бумажный самолётик и Боинг :(
    ... макроса, который, как ты сам говорил, может изменить логику всего мода.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну тогда говорю же, давай вообще откажемся от каких-либо макросов и написания свои функций, а будем весь код писать прямо в коллбэках. Зачем заставлять бедного нового разработчика (которого, с вероятностью в 99.9% и не будет) держать в памяти имена этих самых макросов и функций, а так же их предназначение?
    Вижу, ты в упор не понимаешь разницы между написанием своего кода и созданием кода, дополняющего чужой нестабильный код.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Можно провести опрос и посмотреть сколько людей поймёт для чего ты прибавляешь к макросу единицу, а потом сделаем тот же опрос с моим кодом. И сравнить результаты.
    Ну узнаем мы, сколько людей не в курсе про нуль-символ, и что с того?


    Цитата Сообщение от DeimoS Посмотреть сообщение
    А разве не об этом изначально говорил? Хотя простите, я же напрямую не сказал "делайте макрос MAX_PLAYER_NAME_PREFIX равным 25 символам и MAX_PLAYER_NAME равным 21 символу", а попытался объяснить суть, дабы каждый смог осознать проблему и предпринять какие-то меры.
    Добавлением констант для SA:MP должен заниматься сам разработчик мультиплеера, а не рядовые скриптеры.
    Можно было бы попросить куя добавить те константы или что-то уже сделать с той багофичей, но пока он продолжает прятаться в своём бункере, это нереально.
    А раз так, то остаётся лишь пользоваться тем, что есть: MAX_PLAYER_NAME.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Просто не будем ходить далеко и вспомним твоё "MAX_PLAYER_NAME+1", которое ты считаешь исключительно верным (даже при подключении к серверу, хотя в тот момент ник никак не сможет быть равным 24-ем символам).
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да и если новый разработчик не знает про этот прикол с нуль-символом, у него так же могут возникнуть проблемы, когда вдруг последний символ начнёт исчезать в новых системах. Тогда что, подстраиваться под такие случаи и отказаться от "+1"?
    Как я уже сказал, пользоваться тем, что есть: MAX_PLAYER_NAME под длину ника и +1 под нуль-символ.
    Те 4 неиспользованные ячейки в OnPlayerConnect мало что изменят в работе сервера, но зато удастся добиться унификации с объявлениями буферов под ник в остальном коде и избавиться от ещё одного "исключения из правил" в OPC.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Например тут?
    Я в курсе, но там эта багофича задокументирована в стиле "это баг, но им можно воспользоваться так-то, так-то".
    Т.е. там нигде не написано, была ли эта багофича создана конкретно под префиксы, равно как и не сказано о том, была ли она вообще сделана намеренно.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну а как ты предлагаешь сделать иначе?
    Тщательно продумывать архитектуру мультиплеера и всех нововведений перед их реализацией, а не "тяп-ляп - и в релиз". Очевидно же.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Это не аргументация, а уход в "если бы, да кабы".
    ...
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Нет, я понимаю, что в случае с SA:MP просто глупо надеяться на какие-то крупные изменения и моя критика выглядит как раздувание слона из мухи.
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не привыкайте быдлокодить из-за SA:MP.

    Цитата Сообщение от DeimoS Посмотреть сообщение
    С таким же успехом он вообще может закрыть SA-MP и все труды будут насмарку. Что, отказаться теперь от разработки скриптов?
    Из крайности в крайность...


    Цитата Сообщение от DeimoS Посмотреть сообщение
    C_MAX_PLAYER_NAME была выдумана не мной, если ты не заметил.
    Да, об этом уже сказано выше.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    При этом ты их отсеиваешь, говоря, что им не место на этом форуме.
    Не отсеиваю, а констатирую факт существования таких людей. Если бы я их отсеивал, то говорил бы о конкретных людях.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Да и атмосфера тут не особа дружелюбна к новичкам, ибо на любые их попытки хоть что-то создать, их сразу посылают на г-и
    Будь бы тут что-то типа хабра, они б просто превратились в собирателей минусов. Невелика разница.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  15. Пользователь сказал cпасибо:
    VVWVV (01.04.2016)
 

 
Страница 3 из 8 ПерваяПервая 1 2 3 4 5 ... ПоследняяПоследняя

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

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

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

Ваши права

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