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

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

    Вот так делается "как обычно"

    То бишь, переменной вообще не присваивается значение (тут я указал 0 для наглядности).




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

    И да, я понимаю, когда подобные (не те, что я предлагал, а о которых мы до этого говорили. Тончайшие тонкости :D) "тонкости" выносятся на публику - это, несомненно, плохо. Но если ты код, который не предназначенный для общественности, пишешь сугубо "толсто" - хмм... Часто такие "тонкости" как упрощают написание/читаемость кода, так и оптимизируют этот самый код. В общем, всё зависит конкретно от ситуации. И данная ситуация, имхо, не является слишком "тонкой"

    - - - Добавлено - - -

    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    Нет. Память никак не жалко. Просто не вижу смысла в объявлении глобального массива (почему не const? данные попртят), если обращается к нему только одна команда. Лучше бы локально объявил. Разницы будет не так много.
    И всеобщий фетишь на "const" тоже понять не могу :с Насколько надо быть упоротым, чтоб работать с массивом, предназначение которого ты забыл? А если не забыл, то как можно попортить данные в нём?
    Последний раз редактировалось DeimoS; 10.07.2016 в 23:15.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  2. #12
    Аватар для Danny_Marcelo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.11.2015
    Сообщений
    29
    Репутация:
    0 ±
    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    > 2k16
    > strcmp

    Danny_Marcelo, извините, но почему нельзя написать команду без особых привязок к реализациям других модов? Может, я только мод пишу, а тут некий массив params . Да и в строку писать - не модно.


    Switch() против обращения к ячейке массива . Не уверен в таком уж приросте к скорости. У меня выше 20 ячеек в массиве при обращении скорость на наносекунды различается. Это к реализации ziggi. Глобальный массив, используемый в одном моменте? Окстись.

    Вариант на диалоге был бы более интересный. Сгруппируй интерьеры. Можно вариант по нескольким критериям сортировки для большего удобства во время поиска сделать. 1:0 в пользу s0beit .
    Я наверное Вас немного не допонял.
    а тут некий массив params
    params - это параметр используемый плагином sscanf2 для разделения команды и её параметров.(Если я правильно это назвал).
    Да и в строку писать - не модно.
    Если вы говорите о моде, то все современные скриптеры используют плагин sscanf, будь то стандартный командный процессор или же любой другой.

    Сгруппируй интерьеры. Можно вариант по нескольким критериям сортировки для большего удобства во время поиска сделать
    На счет диалогов, подумаю, стоит ли.
    1:0 в пользу s0beit .
    Вы глубоко ошибаетесь. Что бы найти многие интерьеры тут, я не ограничивался одним собейтом. Ещё команда /setint (которая меняет id интерьера), т.к. стандартные интерьеры находятся под своим id. Так что благодаря собейту, не все интерьеры вы найдёте, да и летать на много дольше в поисках нужного, чем чекнуть 150 локаций за 1,5 минуты)

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

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Danny_Marcelo Посмотреть сообщение
    params - это параметр используемый плагином sscanf2 для разделения команды и её параметров.(Если я правильно это назвал).
    В zcmd, dc_cmd и т.д. этот массив - атрибут, так сказать, команды. В твоей команде есть где-то объявление этого массива?

    Цитата Сообщение от Danny_Marcelo Посмотреть сообщение
    Если вы говорите о моде, то все современные скриптеры используют плагин sscanf, будь то стандартный командный процессор или же любой другой.
    Речь шла про использование case в switch().

    Цитата Сообщение от Danny_Marcelo Посмотреть сообщение
    На счет диалогов, подумаю, стоит ли.
    Лучше ведь тыкать наугад. Нуок.

    Цитата Сообщение от Danny_Marcelo Посмотреть сообщение
    Вы глубоко ошибаетесь. Что бы найти многие интерьеры тут, я не ограничивался одним собейтом. Ещё команда /setint (которая меняет id интерьера), т.к. стандартные интерьеры находятся под своим id. Так что благодаря собейту, не все интерьеры вы найдёте, да и летать на много дольше в поисках нужного, чем чекнуть 150 локаций за 1,5 минуты)
    Ну тогда вопрос в другом, а нужна ли эта команда, если можно поискать нужный интерьер в интернете, для теста поставить игрока в этот интерьер и взять нужную позицию.

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

    Например.
    PHP код:
    new deimos[2][3] =
    {
        {
    012},
        {
    346}
    };

    main()
    {
        
    deimos[0][0] = (deimos[0][0] == 0);
        
    printf("%d"deimos[0][0]);


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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    А как некоторые люди забывают ставить ";" в конце строки? А как умудряются достать внутренности из инклуда и вписать их? А как умудряются писать код вне паблика?

    Например.
    PHP код:
    new deimos[2][3] =
    {
        {
    012},
        {
    346}
    };

    main()
    {
        
    deimos[0][0] = (deimos[0][0] == 0);
        
    printf("%d"deimos[0][0]);

    Да, те переменные, которые не должны меняться лучше объявлять как const. Но массив всё же лучше объявить в глобальной области видимости, ибо смешивание данных и логики - это дурной тон.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    А как некоторые люди забывают ставить ";" в конце строки?
    Ты сейчас сравниваешь немного не то. Люди забывают ставить точку с запятой когда сами пишут код. И компилятор им об этом напоминает. Точка с запятой ставится практически везде. А массив, который ты определил где-то там, используется, дай бог, 5 раз во всём моде. И никто через 2 года не станет куда-то его прописывать, не посмотрев его предназначения (а если станет, то такой человек вообще любую чушь может натворить и его к программированию допускать не стоит).

    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    А как умудряются достать внутренности из инклуда и вписать их? А как умудряются писать код вне паблика?
    А это уже больше к нубам, которые делают это по незнанию, нежели к человеку, который просто пишет код. Опять же, додумается использовать массив с какими-то статичными данными в местах, где значение этих данных как-то изменяется, только полный кретин. И если не в твоём коде с const он это сделает, так где-либо ещё. Вечно ты за ним со своим const бегать не сможешь, поэтому бессмысленно её пихать везде, где только можно. Я полностью солидарен с Ziggi в этом вопросе. Нужно быть более гибким и подстраиваться под ситуацию, а не вбить себе в голову одну инструкцию и следовать ей.


    Попытка подсунуть const везде, где ни попадя - это как попытка запретить пистолеты лишь потому, что один из них может попасть к обезьяне в лапы. Нужно не пистолеты запрещать, а обезьянам не давать брать в руки пистолет
    Последний раз редактировалось DeimoS; 11.07.2016 в 00:48.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    DeimoS, ок. Будем писать везде массивы для обращения к ним один раз в самом верху мода. На логику ведь это так повлияет (нет).
    Я не так близок к программированию, как вы, может и трактую не ту позицию, но разве за логику кода не отвечает название переменных, функций и т.д.? И если имя переменной совпало с другой переменной, то стоит цель существования этой переменной обозначить более конкретнее? Объявление переменной внешне от функции ну никак я не могу сопоставить с логикой .

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Попытка подсунуть const везде, где ни попадя - это как попытка запретить пистолеты лишь потому, что один из них может попасть к обезьяне в лапы. Нужно не пистолеты запрещать, а обезьянам не давать брать в руки пистолет
    Где не попадя? То есть неизменные данные, которые не должны быть изменены, ты будешь делать изменяемыми? Как такое можно вообще сравнить с пистолетом? Скорее, это незакрытая дверь. Да, она может быть закрыта, но ты ее не закрываешь и надеешься на состоятельность других, чтобы не открывали ее, ведь за дверью твоя квартира...
    Последний раз редактировалось Desulaid; 11.07.2016 в 00:59.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    И я не вижу причины не использовать массив, даже если он понадобится лишь в одной функции (памяти жалко, или что?).
    Не знаю, сарказм это был или нет, но всё же попробую разъяснить для тех, кто не в курсе: жалеть здесь нечего, поскольку будет только экономия памяти. В варианте со switch память будут занимать не только координаты, но и дублирующийся код вызовов SetPlayerPos и SetPlayerInterior. Если же взять вариант с массивом, до место в память будут занимать только координаты, пара вызовов SetPlayerPos/SetPlayerInterior и сравнительно компактный код обращения к массиву. Так что это даже не двойная (читаемость + скорость), а тройная выгода.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Часто ли ты видел, что в модах используется cellmin? А уж тем более при использовании params или инициализации переменной?
    Это был всего лишь пример, чтобы показать, что sscanf2 ничего не записал в переменную X при ошибке считывания. Именно поэтому вместо "-2147483648" было выведено "--", это известный баг format и printf.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Вот так делается "как обычно"
    В таком случае, ты не совсем правильно выразился в предыдущем посте.
    И да, sscanf тоже вернёт 0, если в параметрах передать строку.
    Под "возвращаемым значением" обычно имеют в виду именно то значение, которое функция возвращает сама (логично же), а не то, которое она записывает в аргументы, передаваемые по ссылке.


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


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


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

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

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

    Под "возвращаемым значением" обычно имеют в виду именно то значение, которое функция возвращает сама (логично же), а не то, которое она записывает в аргументы, передаваемые по ссылке.
    Прошу прощения. Это SA-MP головного мозга. Я выразился именно так ли потому, что привык, что в Pawn переменная дефолтно заполняется нулём, а в командах обычно, при объявлении, переменным не присваивают какого-либо значения, отличного от нуля, поэтому и не стал заострять внимание на истинной работе функции, а лишь пытался передать общий смысл.



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


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

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


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




    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    DeimoS, ок. Будем писать везде массивы для обращения к ним один раз в самом верху мода. На логику ведь это так повлияет (нет).
    Я говорил про то, что нужно все массивы объявлять глобально? Я говорил лишь о неразумном приписывании "const" везде, где только компилятор не выдаст ошибку. И в случае с кодом Ziggi константа совсем не обязательна, если ты, конечно, не обезьяна, которая беспорядочно нажимает на клавиши и ей пока везло, что получался какой-то рабочий код.

    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    Я не так близок к программированию, как вы
    Я тоже к программированию не близок



    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    Где не попадя? То есть неизменные данные, которые не должны быть изменены, ты будешь делать изменяемыми?
    Данные, которые не должны меняться, я просто не буду пытаться менять. У меня ещё ни разу не было ситуации, когда я вдруг решил массив, который объявлен как константа, взять и изменить (точнее, изменить значение в нём). Как вообще ты представляешь себе такую ситуацию, даже если представить, что код попался в руки нубу? Для чего ему править твой код и дописывать функцию, которая будет изменять значение твоего массива?
    Последний раз редактировалось DeimoS; 11.07.2016 в 01:29.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    DeimoS,

    Цитата Сообщение от ziggi Посмотреть сообщение
    Да, те переменные, которые не должны меняться лучше объявлять как const.
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Вечно ты за ним со своим const бегать не сможешь, поэтому бессмысленно её пихать везде, где только можно. Я полностью солидарен с Ziggi в этом вопросе. Нужно быть более гибким и подстраиваться под ситуацию, а не вбить себе в голову одну инструкцию и следовать ей.
    ¯\_(ツ)_/¯




    Цитата Сообщение от DeimoS Посмотреть сообщение
    Данные, которые не должны меняться, я просто не буду пытаться менять.
     Мем


    Что-то нет смысла продолжать весь этот срач спор, если ты не можешь принять тот факт, что неизменные данные должны быть неизменными.
    Последний раз редактировалось Desulaid; 11.07.2016 в 02:42.

  11. #20
    Аватар для Danny_Marcelo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.11.2015
    Сообщений
    29
    Репутация:
    0 ±
    В zcmd, dc_cmd и т.д. этот массив - атрибут, так сказать, команды. В твоей команде есть где-то объявление этого массива?
    Я не углублялся в подробности других командных движков. Работаю только с командным и dc_cmd, да и большая часть аудитории работает именно с такими командными процессорами. Особенно dc_cmd.

    Речь шла про использование case в switch().
    Не понял, что конкретно не так сделал?

    Лучше ведь тыкать наугад. Нуок.
    Если я сказал подумаю, значит я не посчитал на диалогах такой уж и гениальной. т.к. всё равно по названию, ты не поймешь, какой это интерьер, пока не телепортируешься туда. Так что по сути, тоже будешь тыкать наугад. Поумнее что нибудь придумаю, выложу.

    Ну тогда вопрос в другом, а нужна ли эта команда, если можно поискать нужный интерьер в интернете, для теста поставить игрока в этот интерьер и взять нужную позицию.
    Я по моему уже писал выше, что многих интерьеров, которые есть в этой команде, нет в интернете. Ну если не веришь, удачи в поисках)
    Я с помощью собейта и команды /setint искал. Выше уже писал, почему.

 

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

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

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

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

Ваши права

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