Получить имя объекта и его характеристики

Тема в разделе "Программирование / Скриптинг", создана пользователем iamdss, 19 июл 2015.

  1. iamdss

    iamdss

    Сообщения:
    117
    Симпатии:
    0
    Здравствуйте. Как можно получить имя любого объекта на карте (например, на которого наведён прицел) и любое из его свойств? Инструменты вроде GetEdictClassname и GetEntProp* не дают желаемого результата, если в прицеле энтити worldspawn, то желаемого достичь не удаётся. Как можно иначе получить произвольные свойства выбранного объекта, например, его имя или модель/текстуру?

    Добавлено через 4 минуты
    Поясню задачу. Нужно различать, какой материал перед нами - металл, дерево, камень, металлическая бочка, деревянная бочка и т.п.
     
    Последнее редактирование: 19 июл 2015
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
    Модель так:

    PHP:
    GetEntPropString(entityProp_Data"m_ModelName"szModelPathsizeof(szModelPath));
    Про материал что-то читал, щас не найду, днем поищу
     
    iamdss нравится это.
  3. iamdss

    iamdss

    Сообщения:
    117
    Симпатии:
    0
    Спасибо, а есть ли у объектов поле вроде имени класса, только описывающее его более подробно? То есть, в группе объектов класса wordspawn наверняка есть субклассы, грубо говоря, это бочка, это унитаз и т.п. Ибо материалов много, но их можно сгруппировать по одному общему признаку - это дерево, это металл, это вода... В плагине я проверяю, что возвращает TR_GetPointContents - MASK_WATER, CONTENTS_WINDOW, вот что-то подобное хочу реализовать, но более широко.

    И как получить имя энтити под прицелом?

    Код:
    GetEntPropString(ent, Prop_Data, "m_iName", name, 128);
    Возвращает пустую строку для практически любого объекта... Насчёт m_iName что-то не так понял, наверное? Смотрел в результатах sm_dump_datamaps и sm_dump_netprops.
     
  4. Стас Учувадов

    Стас Учувадов

    Сообщения:
    15
    Симпатии:
    2
    Код:
    public OnPluginStart()
    {
    	RegConsoleCmd("sm_itpropis", lol)
    }
    
    public Action:lol(client,args)
    {
    	int target = GetClientAimTarget(client, false)
    	if(IsClientInGame(target))
    	{
    		PrintToChat(client, "[InkCore] Объект является игроком")
    	}
    	else
    	{
    		decl String:name[256];
    		GetEntPropString(target, Prop_Data, "m_iName", name, 128);
    		PrintToChat(client, "[InkCore] Название объекта: %s", name)
    	}
    }
    
    Вроде должна работать(Если постоянно пишет, что это игрок, убери проверку на наличие клиента в игре)
    Команда: sm_itpropis ; !itpropis

    --------------------------------------

    нет, не работает, я только что проверил. Щас попробую через Classname