[ANY] Получение KeyValue у сущности (entity)

Тема в разделе "Расширения", создана пользователем inklesspen, 26 авг 2016.

  1. inklesspen

    inklesspen После "Р" в слове "Лопата"

    Сообщения:
    831
    Симпатии:
    195
    Получаем функцией GetKeyValue(int entity, const String:name[], String:buf[], int size)
    PHP:
    #include <sdktools>

    new Handle:fGetKeyValue INVALID_HANDLE

    public OnPluginStart()
    {
        
    StartPrepSDKCall(SDKCall_Entity)
        new 
    Handle:conf LoadGameConfigFile("func_getkeyvalue.txt")
        
    PrepSDKCall_SetFromConf(confSDKConf_Virtual"CBaseEntity_GetKeyValue"// Можно вместо SDKConf_Virtual поставить SDKConf_Signature,
        
    CloseHandle(conf)
        
    PrepSDKCall_AddParameter(SDKType_StringSDKPass_Pointer)
        
    PrepSDKCall_AddParameter(SDKType_StringSDKPass_Pointer)
        
    PrepSDKCall_AddParameter(SDKType_PlainOldDataSDKPass_Plain)
        
    fGetKeyValue EndPrepSDKCall()
    }

    GetKeyValue(int entity, const String:name[], String:buf[], int size)
    {
        
    SDKCall(fGetKeyValueentitynamebufsize)
    }
    ОБЯЗАТЕЛЬНО func_getkeyvalue.txt ПОЛОЖИТЬ В gamedata ПАПКУ

    Пример для плагина
    PHP:
    new Handle:fGetKeyValue INVALID_HANDLE

    public OnPluginStart()
    {
        
    StartPrepSDKCall(SDKCall_Entity)
        new 
    Handle:conf LoadGameConfigFile("func_getkeyvalue.txt")
        
    PrepSDKCall_SetFromConf(confSDKConf_Virtual"CBaseEntity_GetKeyValue"// Можно вместо SDKConf_Virtual поставить SDKConf_Signature,
        
    CloseHandle(conf)
        
    PrepSDKCall_AddParameter(SDKType_StringSDKPass_Pointer)
        
    PrepSDKCall_AddParameter(SDKType_StringSDKPass_Pointer)
        
    PrepSDKCall_AddParameter(SDKType_PlainOldDataSDKPass_Plain)
        
    fGetKeyValue EndPrepSDKCall()
    }

    public 
    OnEntityCreated(int entity, const String:classname[])
    {
        if(
    StrEqual(classname"func_breakable"))
            
    SDKHook(entitySDKHook_OnTakeDamagePostOnTakeDamage_FuncBreakable)
    }

    public 
    OnTakeDamage_FuncBreakable(int victimint clientint inflictorfloat damageint damagetype)
    {
        if(
    client<65&&client>0&&IsClientInGame(client))
            
    PrintHintText(client"Health: %i"GetKeyValueInt(victim"health"))
    }

    int GetKeyValueInt(int entity, const String:name[])
    {
        
    decl String:value[64]
        
    GetKeyValue(entitynamevalue64)
        return 
    StringToInt(value)
    }

    GetKeyValue(int entity, const String:name[], String:buf[], int size)
    {
        
    SDKCall(fGetKeyValueentitynamebufsize)
    }
    Для вас оставил готовый плагин, достаточно пихнуть в начало
    native ICNative_GetKeyValue(int entity, const String:name[], String:buffer[], int size)
    PHP:
    param1 Клиент
    param2 Название ключа
    param3 Буффер для значения
    param4 Макс
    .размер буффера

    P.S. Если используете сигнатуру и у вас винда, то работать будет только на CS:GO
     

    Вложения:

    Последнее редактирование: 28 авг 2016
    Drumanid и Danyas нравится это.
  2. gibs

    gibs Фитиль народного волненья

    Сообщения:
    536
    Симпатии:
    133
    Сорсмод апи дают доступ к data и send таблицам. Я ещё не находил kv значение, которое бы не хранилось в соответствующем пропе. Этим никто пользоваться не будет.
     
  3. inklesspen

    inklesspen После "Р" в слове "Лопата"

    Сообщения:
    831
    Симпатии:
    195
    Не ну мало-ли, я вот не нашел жизни у FuncBreakable, вот и решил замутить + немного удобнее, например с цветом, вместо того, чтобы находить оффсет и прибавлять, просто получаем строку и делим на... Ладно, это сложнее(
    А вот FuncBreakable я действительно не нашел
     
  4. gibs

    gibs Фитиль народного волненья

    Сообщения:
    536
    Симпатии:
    133
    @inklesspen, prop data table "m_iHealth"
    То-есть GetEntProp(iEnt, Prop_Data, "m_iHealth");
     
    White Wolf нравится это.
  5. inklesspen

    inklesspen После "Р" в слове "Лопата"

    Сообщения:
    831
    Симпатии:
    195
    ААА.... А че она не винда в дампе то?
     
  6. gibs

    gibs Фитиль народного волненья

    Сообщения:
    536
    Симпатии:
    133
    @inklesspen, ну а где я её нашёл по-твоему?
     
  7. inklesspen

    inklesspen После "Р" в слове "Лопата"

    Сообщения:
    831
    Симпатии:
    195
    хз, я ее в дампе не видел