stimorol (28.03.2016)
Только не стоит забывать, что игрок при входе может ввести только ник длинною в 20 символов (MAX_PLAYER_NAME является числом "24", где 20 символов под ник для игрока и ещё 4 символа для того, чтоб изменить ник со стороны сервера, добавив какой-то префикс (например, "AFK") даже если у игрока ник равен 20 символам). Следовательно, выделять "MAX_PLAYER_NAME+1" имеет смысл только тогда, когда в твоём моде присутствует код смены ника с добавлением какого-либо префикса (то бишь, ник игрока может быть больше 20 символов только благодаря SetPlayerName => если SetPlayerName вообще не используется, либо ты сразу делаешь проверку на то, что новый ник не больше 20 символов, то и выделять 25 ячеек бессмысленно). Во всех остальных случаях достаточно выделить "MAX_PLAYER_NAME-3" или же "MAX_PLAYER_NAME-4+1" (-4 ячейки, которые выделены для ника с сервера и + 1 ячейка для нуль-символа). А лучше сделать какой-то свой макрос, где уже указывать число, которому равно число символов для нужды сервера (те самые 4 символа), ибо вполне возможно, что в будущем это число может измениться разработчиками и тогда придётся перелопачивать весь мод вручную.
P.S. Заранее прошу прощения, если где-то повторяюсь. Немного плыву и трудно сформулировать мысль :с
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
stimorol (28.03.2016)
И ещё один вопрос. В каких случаях используется static const, а в каких просто static?
Добавил пример #4, в котором показано форматирование с 2 и более строковыми аргументами.
Наиболее точной здесь будет формулировка "для обозначения окончания строки".
Это недокументированное свойство и для того значения даже нет константы. Мало того, нет даже гарантии, что оно изменится вместе с MAX_PLAYER_NAME в будущей версии SA:MP.
По сути то, что ты предлагаешь - точно такое же зло, как использовать 24 вместо MAX_PLAYER_NAME: всё будет работать, но только до поры, до времени.
Проверьте 4-й пример, там этот вопрос разжёван.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Так я и предлагаю её создать самостоятельно, дабы, в случае изменений со стороны мультиплеера, внести всего 1 изменение.
Как и нет гарантий того, что оно не изменится.
Почему же? Как я уже сказал и выше, и в том сообщении - под такое значение можно объявить константу и, при любых изменениях со стороны клиента, вносить изменения в эту константу
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Можно, но тем не менее, придётся добавлять большое количество констант с проверками, дабы узнать об изменении и обновлении версии. Также есть доля вероятности, что последние 4 ячейки все-таки будут заняты какими-то значениями, и вы получите выход за пределы массива (только в некоторых случаях). А также вы можете просто забыть про данную константу (например, не ввести новое значение).
Последний раз редактировалось VVWVV; 29.03.2016 в 16:13.
Не думаю, что Куй вдруг изменит макрос MAX_PLAYER_NAME и не сообщит об этом. Да и "большое кол-во проверок" будет выглядеть так, если я правильно тебя понял:
Если все действия над ником совершать с учётом того, что ник равен не больше 20 символов, то никак не может получится выход за пределы массива. Если уж это случится - виной всему кривые руки скриптера, а не предложенный мною вариант (ну или тогда давайте всю вину за все случаи самоубийства, связанные с оружием, переложим на производителей этого оружия, а не на тех идиотов, кто совершил самоубийство)PHP код:
#if MAX_PLAYER_NAME != 24
#error Macro MAX_PLAYER_NAME is not equal to 24
#endif
Опять же, это чисто человеческий фактор и точно так же можно сказать про эту тему с подсчётом: вы можете просто неправильно составить формулу для подсчёта числа символов и выделите больше/меньше нужного.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 4 (пользователей: 0 , гостей: 4)