Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 2 ПерваяПервая 1 2
Показано с 11 по 17 из 17
  1. #11
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Просто я изначально имел в виду то, что в инклудах (своего рода тоже скрипты, но почему-то забыл уточнить это) везде, где юзается фича поддержки фильтрскриптов (будь то внешние функции/своё собственное поведение инклуда в них/что-либо ещё), везде обычно и юзается проверка на дефайн. И именно поэтому в интересах разрабов/пользователей фильтрскриптов будет её иметь, чтобы все эти остальные инклуды не включали код мода в их скрипты, даже если два из трёх этих инклудов имели бы возможность проверять всё при выполнении сервера.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Просто я изначально имел в виду то, что в инклудах (своего рода тоже скрипты, но почему-то забыл уточнить это) везде, где юзается фича поддержки фильтрскриптов (будь то внешние функции/своё собственное поведение инклуда в них/что-либо ещё), везде обычно и юзается проверка на дефайн. И именно поэтому в интересах разрабов/пользователей фильтрскриптов будет её иметь, чтобы все эти остальные инклуды не включали код мода в их скрипты, даже если два из трёх этих инклудов имели бы возможность проверять всё при выполнении сервера.
    Ну, во-первых, использовать такой метод написания инклуда только ради того, чтоб в FS попало меньше кода - это, мягко говоря, не очень рационально. Ибо шанс словить проблемы с быстродействием кода гораздо более выше, нежели шанс словить проблемы нехватки памяти. И, в данном случае, любое экономие памяти теряет свой смысл, ибо затраты на срабатывание CallRemoteFunction будут слабо соизмеримы с этой самой экономией.
    Использовать такой метод стоит только в случае крайней нужды и чёткого понимания своих действий (ну когда, собственно, для правильной работы инклуда требуется синхронизировать данные FS и мода. Всякие античиты и т.п.), о чём бы я крупными буквами написал бы в самом начале статьи, на твоём месте, дабы мамкины оптимизаторы не начали творить дичь.

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

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

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Daniel_Cortez (20.11.2019)
  4. #13
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну, во-первых, использовать такой метод написания инклуда только ради того, чтоб в FS попало меньше кода - это, мягко говоря, не очень рационально. Ибо шанс словить проблемы с быстродействием кода гораздо более выше, нежели шанс словить проблемы нехватки памяти. И, в данном случае, любое экономие памяти теряет свой смысл, ибо затраты на срабатывание CallRemoteFunction будут слабо соизмеримы с этой самой экономией.
    Экономие памяти я и не рассматриваю как цель в данном случае, т.к. здесь это вообще ни на что по факту не повлияет. Лишний код, который бы включался в фс с рантайм проверками, меня заботил больше всего именно в плане алгоритма, который бы почти впустую проверял одно и то же каждый тик сервера. Но разумеется, в сравнении с медленностью вызова CallRemoteFunction это в любом случае гораздо менее существенно.

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

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Во-вторых, про "везде юзается" и "в интересах" - это слабый аргумент. Просто потому что в интересах разрабов есть много всего, чего они не делают (например, банальное написание кода в одном стиле, дабы повысить совместимость своего кода с чужим и упростить чтение как своего кода другими людьми, так и чужого кода себе). Так же много где юзается то, что юзаться не должно или юзается неправильно (яркий пример - уровень работы с MySQL в большинстве модов и скриптов, который, мягко говоря, оставляет желать лучшего).
    Отталкиваться нужно, в первую очередь, от здравого смысла, а не от слепой статистики без анализа. И тут, как мне кажется, гораздо логичнее написать более универсальный код, потратив на тысячную долю тика больше, нежели пытаться экономить то, что экономить особо не нужно, делая код более зависимым от кода пользователя. Но я это уже и раньше писал, поэтому повторюсь ещё раз: тут уж каждому своё.
    Писать код в одном стиле это, по большому счету, в интересах комьюнити, а не в их собственных; уровень интеграции с бд, раз в их модах она кое-как работает, видимо также их вполне устраивает. Здесь же речь о работоспособности всей системы в принципе, ибо если эти люди не добавят тот дефайн в своих фсах и подключат инклуд, который его учитывает, они практически в любом случае столкнутся с проблемами и некорректной работой, а уже при попытке её исправить так или иначе дойдут до этого решения. Так что в данном случае это действительно в их интересах, в отличие от примеров выше.
    Ну а повторяться насчет последнего я и сам не вижу смысла, т.к. все выводы уже написаны здесь.
    Последний раз редактировалось Nexius_Tailer; 20.11.2019 в 14:39.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  5. #14
    Аватар для MassonNN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.03.2018
    Адрес
    Москва
    Сообщений
    129
    Репутация:
    6 ±
    Код HTML:
    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    { 
    
       // код
    
    
     #if defined autoschool_OnPlayerClickTextDraw 
            return autoschool_OnPlayerClickTextDraw(playerid, Text:clickedid); 
        #else 
            return 1; 
        #endif 
    } 
    
    #if defined _ALS_OnPlayerClickTextDraw 
        #undef OnPlayerClickTextDraw 
    #else 
        #define _ALS_OnPlayerClickTextDraw 
    #endif 
    #define OnPlayerClickTextDraw autoschool_OnPlayerClickTextDraw 
    #if defined autoschool_OnPlayerClickTextDraw 
        forward autoschool_OnPlayerClickTextDraw(playerid, Text:clickedid); 
    #endif

    Код HTML:
    error 021: symbol already defined: "OnPlayerClickTextDraw"

  6. #15
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от MassonNN Посмотреть сообщение
    Код HTML:
    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    { 
    
       // код
    
    
     #if defined autoschool_OnPlayerClickTextDraw 
            return autoschool_OnPlayerClickTextDraw(playerid, Text:clickedid); 
        #else 
            return 1; 
        #endif 
    } 
    
    #if defined _ALS_OnPlayerClickTextDraw 
        #undef OnPlayerClickTextDraw 
    #else 
        #define _ALS_OnPlayerClickTextDraw 
    #endif 
    #define OnPlayerClickTextDraw autoschool_OnPlayerClickTextDraw 
    #if defined autoschool_OnPlayerClickTextDraw 
        forward autoschool_OnPlayerClickTextDraw(playerid, Text:clickedid); 
    #endif

    Код HTML:
    error 021: symbol already defined: "OnPlayerClickTextDraw"
    Видимо у тебя уже до этого хука где-то выше объявлен этот же паблик.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  7. #16
    Аватар для MassonNN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.03.2018
    Адрес
    Москва
    Сообщений
    129
    Репутация:
    6 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Видимо у тебя уже до этого хука где-то выше объявлен этот же паблик.
    Да, походу из-за того. А нельзя интересно как-то после объявления хук сделать?) Просто, наверное, это было бы удобнее... Особенно, если у тебя структурированный проект

  8. #17
    Аватар для DeimoS
    Модератор?

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

    Ну а если всё же хочешь стрелять в собственную ногу - y_hook в помощь.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

 
Страница 2 из 2 ПерваяПервая 1 2

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

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

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

Ваши права

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