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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Цитата Сообщение от R1KO Посмотреть сообщение
    Я все понимаю, но мой вопрос был касательно макроса а не велосипедов с функциями.
    Дак ты делаешь велосипеды с макросами, какая разница?

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

    Статус
    Оффлайн
    Регистрация
    06.03.2017
    Сообщений
    82
    Репутация:
    0 ±
    Цитата Сообщение от Kovshevoy Посмотреть сообщение
    Держи готовую функу и не парь себе мозг.
    1. stock SendClientMessageEx(playerid, color, const text[], {Float, _}:...)
    2. {
    3. static
    4. args,
    5. str[144];
    6.  
    7.  
    8. /*
    9.   * Custom function that uses #emit to format variables into a string.
    10.   * This code is very fragile; touching any code here will cause crashing!
    11.   */
    12. if ((args = numargs()) == 3)
    13. {
    14. SendClientMessage(playerid, color, text);
    15. }
    16. else
    17. {
    18. while (--args >= 3)
    19. {
    20. #emit LCTRL 5
    21. #emit LOAD.alt args
    22. #emit SHL.C.alt 2
    23. #emit ADD.C 12
    24. #emit ADD
    25. #emit LOAD.I
    26. #emit PUSH.pri
    27. }
    28. #emit PUSH.S text
    29. #emit PUSH.C 144
    30. #emit PUSH.C str
    31. #emit PUSH.S 8
    32. #emit SYSREQ.C format
    33. #emit LCTRL 5
    34. #emit SCTRL 4
    35.  
    36.  
    37. SendClientMessage(playerid, color, str);
    38.  
    39.  
    40. #emit RETN
    41. }
    42. return 1;
    43. }
    Мейби кто-нибудь подскажет, ибо туторов по этой штуке я не нашёл и ассемблер само собой не понимаю тем более... Если я хочу добавить функции ещё один параметр перед спредом, помимо цифры в цикле и условия, что-то ещё нужно поменять?

    У меня получается интересный баг из-за этой функции, если я пытаюсь её изменить — OnPlayerText, возвращаемый 0, — начинает возвращать значение 1 (имею в виду срабатывает, хотя не должен).

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

    Цитата Сообщение от Outsider Посмотреть сообщение
    Мейби кто-нибудь подскажет, ибо туторов по этой штуке я не нашёл и ассемблер само собой не понимаю тем более... Если я хочу добавить функции ещё один параметр перед спредом, помимо цифры в цикле и условия, что-то ещё нужно поменять?

    У меня получается интересный баг из-за этой функции, если я пытаюсь её изменить — OnPlayerText, возвращаемый 0, — начинает возвращать значение 1 (имею в виду срабатывает, хотя не должен).
    Не актуально. Кажется, разобрался.

  3. #13
    Аватар для shierru
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.09.2022
    Сообщений
    6
    Репутация:
    0 ±
    Если честно не понимаю смысл данных макросов...

    Это пожалуй явный пример бесполезных макросов и глупых.
    На ровне с теми которые добавляют инородный синтаксис в код.

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

    Вариант функции SendClientMessageEx очень сомнителен тем, что там используется оператор #emit, что усложняет дальнейшую поддержку кода, да ещё там делается то же самое, что можно сделать ручками. Это излишество, которое может привести к неправильной работе сервера в дальнейшем.
    Последний раз редактировалось shierru; 17.09.2022 в 21:54.

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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Цитата Сообщение от shierru Посмотреть сообщение
    Если честно не понимаю смысл данных макросов...

    Это пожалуй явный пример бесполезных макросов и глупых.
    На ровне с теми которые добавляют инородный синтаксис в код.

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

    Вариант функции SendClientMessageEx очень сомнителен тем, что там используется оператор #emit, что усложняет дальнейшую поддержку кода, да ещё там делается то же самое, что можно сделать ручками. Это излишество, которое может привести к неправильной работе сервера в дальнейшем.
    Ну вообще про сложность поддержки кода можно отнести абсолютно всё, с чем ты плохо знаком или плохо написано.
    Данная функция не требует каких-то сторонних вмешательств, ибо они не зачем.

    Что на счёт использование подобных трюков, это можно отнести, наверное, как синтаксическому сахару что-ли.

 

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

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

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

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

Ваши права

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