получение данных с Multi_Manager

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
855
Реакции
532
Помог
13 раз(а)
Приветствую
делаю поиск цепочек вызова объектов
hl 2022-03-26 16-37-00-979.gif

Код:
{
"origin" "-2112 -209 160"
"info2" "60"
"info1" "1"
"door_4" "70"
"door3" "60"
"targetname" "hola2"
"classname" "multi_manager"
}
мне нужно получить данные об объектах, вызываемых multi_manager
делаю следующее
Код:
        else if (FClassnameIs(iEnt, "func_button"))
        {
            new szTarget[32]; get_entvar(iEnt, var_target, szTarget, charsmax(szTarget));
            client_print(id, print_chat, "Button Delay: %.2f | %s", get_pdata_float(iEnt, m_flDelay, 4), szTarget);
      
            new iTarget = UTIL_FindEntityByString("targetname", szTarget);
            new szClassTarget[32];

            if (!is_nullent(iTarget))
            {
                get_entvar(iTarget, var_classname, szClassName, charsmax(szClassName));
                client_print(id, print_chat, "Target: %s", szClassName);

                if (!strcmp(szClassName, "multi_manager"))
                {
                    new m_iTotal = get_ent_data(iTarget, "CMultiSource", "m_iTotal");
                    new m_iTotal2 = get_ent_data_entity(iTarget, "CMultiSource", "m_rgEntities", 0);

                   // https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/buttons.cpp#L227
                    for (new h; h < m_iTotal; h++)
                    {
                        get_ent_data_string(iTarget, "CMultiSource", "m_iTargetName", szClassTarget, 31, h);
                      
                        client_print(id, print_chat, "L%d: %s", h,szClassTarget);
                    }

                    client_print(id, print_chat, "total: %d | is_valid ? %d", m_iTotal, !is_nullent(m_iTotal2));
                }
            }
        }
m_iTotal = 0
ошибок при вызове не происходит - значит мембер нашел верно

не понимаю в чем ошибка
 
Последнее редактирование:
Сообщения
57
Реакции
155
Помог
1 раз(а)
BalbuR, а если CMultiSource заменить на CMultiManager и мембер m_iTotal на m_cTargets ?
 
Сообщения
855
Реакции
532
Помог
13 раз(а)
BalbuR, а если CMultiSource заменить на CMultiManager и мембер m_iTotal на m_cTargets ?
спасибо, дело сдвинулось с точки

далее
1648290594095.png

не понял как подбирать имя объекта. Время я подобрал, а вот имя интерпретировано как AllocString
как мне его конвертировать обратно?
конечно я могу в буфер все кинуть в начале карты, но все же
 
Сообщения
855
Реакции
532
Помог
13 раз(а)
всем спасибо за помощь :good2:
1648319466197.png
C++:
        if (FClassnameIs(iEnt, "func_button"))
        {
            new szTarget[32]; get_entvar(iEnt, var_target, szTarget, charsmax(szTarget));
            client_print(id, print_chat, "Button Delay: %.2f | %s", get_pdata_float(iEnt, m_flDelay, 4), szTarget);
      
            new iTarget = UTIL_FindEntityByString("targetname", szTarget);
            new szClassTarget[32];
            new iNextTarget;
            new Float:flNextDelay;
            new iAllocString;

            if (!is_nullent(iTarget))
            {
                get_entvar(iTarget, var_classname, szClassName, charsmax(szClassName));
                client_print(id, print_chat, "Target: %s", szClassName);

                // Если при сравнении строк - результат идиентичный (ретерн ноль) (читай ноут)
                if (!strcmp(szClassName, "multi_manager"))
                {
                    new m_cTargets = get_ent_data(iTarget, "CMultiManager", "m_cTargets");
                    for (new h = 0; h < m_cTargets; h++)
                    {
                        iNextTarget = get_ent_data(iTarget, "CMultiManager", "m_iTargetName", h);
                        flNextDelay = get_ent_data_float(iTarget, "CMultiManager", "m_flTargetDelay", h);
                        engfunc(EngFunc_SzFromIndex, iNextTarget, szClassTarget, 31);
                        client_print(id, print_chat, "L%d: %s = %.2f sec", h, szClassTarget, flNextDelay);
              
                    }

                    client_print(id, print_chat, "m_cTargets: %d", m_cTargets);
                }
            }
        }
 
Статус
В этой теме нельзя размещать новые ответы.

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

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу