Как сделать то же самое, или какой datamaps юзает valve?

EPacker2

3D-моделист
Сообщения
1,040
Реакции
759
Как сделать то же самое, или какой datamaps юзает valve?
sJJs4WBusAo.jpg

70n69VMJZF0.jpg

Я облазил все datamaps/netprops для player, и как-то не особо понял, чем наши добрые Valve, делают бессмертие.
Самое забавное, что на протяжении всего "иммунитета" (см. квар mp_respawn_immunitytime) и его обнуления m_takedamage == 2, что является получением урона.

РЕШЕНО!
За данную функцию отвечает "m_bGunGameImmunity"
(зависит от квара mp_respawn_immunitytime)
Но есть косяк: если ты выполняешь действие +attack, то цвет экрана больше не изменяется на тот, что в скриншотах... (только при возрождении/новом раунде)
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,060
может меняется коллижен и пули просто пролетают насквозь?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,060
можно гранатой попробовать
но ещё проще плагин сделать, который будет текущие характеристики отображать
PHP:
public Action ShowAxis(Handle timer, any client)
{
    int ent = GetClientAimTarget(client, false);

    if(ent > MaxClients && IsValidEntity(ent))
//    if(ent > 0 && IsValidEntity(ent))
    {
        float origin[3], angles[3], min[3], max[3];
        GetEntPropVector(ent, Prop_Send, "m_vecOrigin", origin);
        GetEntPropVector(ent, Prop_Data, "m_angRotation", angles);
        GetEntPropVector(ent, Prop_Data, "m_vecMins", min);
        GetEntPropVector(ent, Prop_Data, "m_vecMaxs", max);
        Effect_DrawBeamBoxRotatable(client, origin, min, max, angles, g_BeamSprite, 0, 0, fTime, 1.0, 1.0, 1, 0.0, {255, 165, 0, 255}, 0);
        if(iWorld[client] == 1) angles[0] = angles[1] = angles[2] = 0.0;
        Effect_DrawAxisOfRotation(client, origin, angles, max, g_BeamSprite, 0, 0, fTime, 1.0, 1.0, 1, 0.0, 0);

        char sBuffer[256], temp[64];
        GetEdictClassname(ent, sBuffer, sizeof(sBuffer));
        Format(sBuffer, sizeof(sBuffer), "%s (%i)", sBuffer, ent);
        if(HasEntProp(ent, Prop_Data, "m_iName"))
        {
            GetEntPropString(ent, Prop_Data, "m_iName", temp, sizeof(temp));
            if(strlen(temp) > 0) Format(sBuffer, sizeof(sBuffer), "%s%s'%s'", sBuffer, L4D2 ? " " : "\n", temp);
        }
        if(HasEntProp(ent, Prop_Data, "m_iHealth"))
        {
            int health = GetEntProp(ent, Prop_Data, "m_iHealth");
            if(health >= 0) Format(sBuffer, sizeof(sBuffer), "%s (%iHP)\n", sBuffer, health);
        }
      
        if(HasEntProp(ent, Prop_Send, "m_nSolidType"))
        {
            Format(sBuffer, sizeof(sBuffer), "%sType: %i", sBuffer, GetEntProp(ent, Prop_Send, "m_nSolidType"));
        }
        if(HasEntProp(ent, Prop_Send, "m_CollisionGroup"))
        {
            Format(sBuffer, sizeof(sBuffer), "%s Group: %i", sBuffer, GetEntProp(ent, Prop_Send, "m_CollisionGroup"));
        }
        if(HasEntProp(ent, Prop_Send, "m_usSolidFlags"))
        {
            Format(sBuffer, sizeof(sBuffer), "%s Flags: %i", sBuffer, GetEntProp(ent, Prop_Send, "m_usSolidFlags"));
        }
        if(HasEntProp(ent, Prop_Data, "m_ModelName"))
        {
            GetEntPropString(ent, Prop_Data, "m_ModelName", temp, sizeof(temp));
            Format(sBuffer, sizeof(sBuffer), "%s\n%s", sBuffer, temp);
        }

        if(L4D2) PrintHintText(client, sBuffer);        // Панель внизу по центру (в L4D2 всего 3 строки)
        else
        {
            Format(sBuffer, sizeof(sBuffer), "%s\nPos: %.2f %.2f %.2f", sBuffer, origin[0], origin[1], origin[2]);
            SubtractVectors(max, min, max);
            Format(sBuffer, sizeof(sBuffer), "%s\nSize: %.2f %.2f %.2f", sBuffer, max[0], max[1], max[2]);
            Format(sBuffer, sizeof(sBuffer), "%s\nAngR: %.2f %.2f %.2f", sBuffer, angles[0], angles[1], angles[2]);
            if(HasEntProp(ent, Prop_Data, "m_angRotationClosed"))
            {
                GetEntPropVector(ent, Prop_Data, "m_angRotationClosed", angles);
                Format(sBuffer, sizeof(sBuffer), "%s\nAngC: %.2f %.2f %.2f", sBuffer, angles[0], angles[1], angles[2]);
            }

            Handle hBuffer = StartMessageOne("KeyHintText", client);     // Панель справа
            BfWriteByte(hBuffer, 1);
            BfWriteString(hBuffer, sBuffer);
            EndMessage();
        }


    }
    return Plugin_Continue;
}
просто убрать лишнюю инфу и сделать чтобы писало о самом себе (а то попробуй успей выловить того, кто спавнится)
 
Последнее редактирование:

EPacker2

3D-моделист
Сообщения
1,040
Реакции
759
Оффтоп
Нужно проверить. Кто-нибудь рядом встанет,пока в него стреляют. И смотреть по трассерам.
Да, пули насквозь летят, но я через datamaps/netprops проверял коллизию и хитбоксы, они не меняются...
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,060
@EPacker2, Оффтоп
Каким образом ты это делал?
 

EPacker2

3D-моделист
Сообщения
1,040
Реакции
759
Каким образом ты это делал?
Каким умею :D
PHP:
public OnPluginStart()
{
    RegConsoleCmd("sm_test", Command_GetImmunity);
}

public Action:Command_GetImmunity(client, args)
{
    if ( client > 0 && IsClientInGame(client) && IsPlayerAlive(client) )
        PrintHintText(client, "Hitbox: %d | Collision: %d\nSolidType: %d | SolidFlags: %d\n",
            GetEntProp(client, Prop_Send, "m_nHitboxSet"),
            GetEntProp(client, Prop_Send, "m_CollisionGroup"),
            GetEntProp(client, Prop_Send, "m_nSolidType"),
            GetEntProp(client, Prop_Send, "m_usSolidFlags"));
}
Всё выдает одно и тоже... Hitbox: 0 | Collision: 5 | SolidType: 2 | SolidFlags: 16
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,060
можешь скопировать весь блок игрока из datamaps в txt и прикрепить сюда?
 

EPacker2

3D-моделист
Сообщения
1,040
Реакции
759
А что сложного ввести команды на запущенном сервере и получить список?
C-подобный:
sm_dump_netprops netprops.txt
sm_dump_datamaps datamaps.txt //от этой команды сервер упадёт
Там уже сам поиском (Ctrl+F или Ctrl+H, в зависимости от блокнота) вводишь Player и он отобразит блок. Например в CS:GO к Player может относиться как CCSPlayer, так и CBasePlayer. В NMRiH игрок является CBaseEntity, и в других играх свои ключи и оффсеты, поэтому не вижу смысла выкладывать файлики (например в csgo они могут меняться с обновлениями)
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,060
@Tallanvor, почему сразу лень?
я забил на сервер CSGO сразу как ввели токены и с тех пор его не обновлял
 

EPacker2

3D-моделист
Сообщения
1,040
Реакции
759

Вложения

  • netprops.txt
    3.6 МБ · Просмотры: 9
  • datamaps.txt
    6.1 МБ · Просмотры: 10
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,060
@EPacker2, спасибо, теперь у меня есть datamaps и netprops и из CSGO

проверь эти параметры:
m_afPhysicsFlags
m_lifeState
m_takedamage
m_iszDamageFilterName (строка)

может ещё флаги могут влиять (ну мало ли):
m_spawnflags
m_fFlags

@Tallanvor, а админка в локалке норм пашет?
Да и всё равно проверять с ботами некоторые плагины всё равно нет смысла
 

EPacker2

3D-моделист
Сообщения
1,040
Реакции
759
проверь эти параметры:
m_afPhysicsFlags
m_lifeState
m_takedamage
m_iszDamageFilterName (строка)

может ещё флаги могут влиять (ну мало ли):
m_spawnflags
m_fFlags
m_afPhysicsFlags: 0 | m_lifeState: 0 | m_takedamage: 2 | m_spawnflags: 0 | m_fFlags: 257
Со строкой m_iszDamageFilterName не разобрался.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,060
@EPacker2, тебе нужно сравнить значения когда у игрока включен иммунитет и когда он уже выключен
Поэтому удобнее это сделать через панель, как сделано у меня в процитированном куске кода.
--- Добавлено позже ---
Со строкой m_iszDamageFilterName не разобрался.
GetEntPropString(entity, Prop_Data, "m_iszDamageFilterName", sBuffer, sizeof(sBuffer));
 

EPacker2

3D-моделист
Сообщения
1,040
Реакции
759
Свежие netprops/datamaps после сегодняшнего обновления (08.12.2016)
P.S. version 1.35.6.0/13560 409/6605
 

Вложения

  • netprops.txt
    3.6 МБ · Просмотры: 4
  • datamaps.txt
    6.1 МБ · Просмотры: 3

Grey83

не пишу плагины с весны 2022
Сообщения
8,558
Реакции
5,060
@EPacker2, нет никакой разницы между version 1.35.5.9/13559 406/6585 и version 1.35.6.0/13560 409/6605
Ну кроме даты в первой строке дампов
 
Сверху Снизу