Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4

Тема: tagof

  1. #1
    Аватар для oukibt
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2020
    Сообщений
    26
    Репутация:
    3 ±

    tagof

    Есть ли аналог оператора tagof в с++?
    (Речь идёт конкретно о получении тега переменной, созданной в павн (например, Float:), а не о получении типа переменной (char, int...))
    Последний раз редактировалось oukibt; 03.06.2021 в 08:16.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от oukibt Посмотреть сообщение
    (Речь идёт конкретно о получении тега переменной, созданной в павн (например, Float:), а не о получении типа переменной (char, int...))
    Я правильно понимаю, нужно получить тип значения Pawn, переданного как аргумент нативной функции в плагине?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    27.02.2020
    Сообщений
    26
    Репутация:
    3 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Я правильно понимаю, нужно получить тип значения Pawn, переданного как аргумент нативной функции в плагине?
    Именно

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Для одиночного аргумента с несколькими возможными тегами
    1. native Func({_,Float}:arg);

    можно добавить дополнительный аргумент, в который по умолчанию будет передаваться ID тега:
    1. native Func({_,Float}:arg, tagid=tagof(arg));

    Затем на стороне плагина следует передать значение такого доп. аргумента (tagid) в функцию amx_GetTag(), и та вернёт название тега.
    Почему нужно работать с названиями тегов, а не с числами? Потому что у каждого скомпилированного скрипта (*.amx) есть своя таблица тегов, в которой хранятся только те теги, которые используются в скрипте. Т.е. у каждого скрипта своё содержимое таблицы; нет универсальных ID тегов, которые подойдут для всех скриптов. Единственные исключения - тег "_" всегда имеет индекс 0, а "bool" - индекс 1. Остальные теги зависят от кода, в том числе от порядка подключения инклудов, в которых эти теги объявляются.

    Естественно, для функций с вариативными аргументами, например:
    1. native Func({_,bool,Float}:...);

    провернуть вышеописанный трюк с tagof не выйдет. В таких случаях уже ничего не сделать.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. Пользователь сказал cпасибо:
    oukibt (03.06.2021)
 

 

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

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

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

Ваши права

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