[EXTENSION] SDK Hooks 2.2.0 (Ранее Hacks Extension)

Тема в разделе "Расширения", создана пользователем Andrey, 31 янв 2009.

  1. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    SDK Hooks

    Описание:
    Это расширение позволяет использовать некоторые полезные функции. Необходимо при использовании некоторых модов и плагинов. Ранее расширение называлось Hacks Extension.

    Установка:
    1. Извлечь hacks.ext.dll и hacks.ext.so в папку addons/sourcemod/extensions.
    2. Извлечь hacks.inc в папку addons/sourcemod/scripting/include.
    3. Извлечь hacks.ext.cfg в папку addons/sourcemod/configs.

    Обновление с версии
    1.x.x до 2.0.0
    :
    Обеспечена обратаная совместимость, все существующие модули, которые используют SDKHooks должны продолжить нормальную работу (за исключением тех, которые используют хук ShouldCollide)
    Перед обновлением, остановите игровой сервер и удалите следующие файлы, отметим что если один из этих файлов останется от старой версии, то SDKHooks 2.x.x не будет загружаться.

    • gamedata/sdkhooks.games.txt
    • extensions/sdkhooks.ext.dll
    • extensions/sdkhooks.ext.so

    Natives:
    Код:
    [COLOR=Red]/**
     * Hooks a virtual function.
     *
     * @param entity            Index of the entity.
     * @param type                Type of the function, see Hacks_HookType.
     * @param handler            Your function that will be called on hooking.
     * @param post                True for post operation, false for pre operation.
     * @return                HookID, that's needed to unhook.
     */[/COLOR]
    native Hacks_Hook(entity, Hacks_HookType:type, Hacks_HookFunc:func, bool:post=false);
    
    [COLOR=Red]/**
     * Unhooks a virtual function.
     *
     * @param hookid            The returned hookid from Hacks_Hook.
     * @noreturn
     */[/COLOR]
    native Hacks_Unhook(hookid);
    
    [COLOR=Red]/**
     * Scans for a function in the memory.
     *
     * @param name                Name of the function (e.g. "CBaseAnimating::Ignite").
     * @param signature            Signature to scan for (Windows). 2A = wildcard
     *                     (e.g. "56 8B 74 24 0C 83 FE FF 57 8B 7C 24 0C 74 25 8B")
     * @param symbol            Symbol to scan for (Linux).
     * @return                CallID, that's needed to call the function.
     */[/COLOR]
    native Hacks_Find(const String:name[], const String:signature[], const String:symbol[]);
    
    [COLOR=Red]/**
     * Calls a previously scanned function.
     *
     * @param entity            Index of the entity.
     * @param callid            The returned callid from Hacks_Find.
     * @param calltype            Type to call, see Hacks_CallType.
     * @param returntype            Return type, see Hacks_ReturnType.
     * @param[x] argtype            Datatype of argument, see Hacks_Param.
     * @param[y] arg            Argument for function.
     * @return                If there was a failure in the function, it will return -1,
     *                     otherwise see Hacks_ReturnType.
     */[/COLOR]
    native Hacks_Call(entity, callid, Hacks_CallType:calltype, Hacks_ReturnType:returntype, any:...);
    
    [COLOR=Red]/**
     * Calls a virtual function by its offset.
     *
     * @param entity            Index of the entity.
     * @param windows            Windows offset.
     * @param linux                Linux offset.
     * @param calltype            Type to call, see Hacks_CallType.
     * @param returntype            Return type, see  Hacks_ReturnType.
     * @param[x] argtype            Datatype of argument, see Hacks_Param.
     * @param[y] arg            Argument for function.
     * @return                If there was a failure in the function, it will return -1,
     *                     otherwise see Hacks_ReturnType.
     */[/COLOR]
    native Hacks_Call_Offset(entity, windows, linux, Hacks_CallType:calltype, Hacks_ReturnType:returntype, any:...);
    
    [COLOR=Red]/**
     * Calls a previously scanned function, but without an entity.
     *
     * @param callid            The returned callid from Hacks_Find.
     * @param returntype            Return type, see Hacks_ReturnType.
     * @param[x] argtype            Datatype of argument, see Hacks_Param.
     * @param[y] arg            Argument for function.
     * @return                If there was a failure in the function, it will return -1,
     *                     otherwise see Hacks_ReturnType.
     */[/COLOR]
    native Hacks_Call_NoEntity(callid, Hacks_ReturnType:returntype, any:...);
    
    [COLOR=Red]/**
     * Adds a file to be force downloaded (cleared every map change).
     *
     * @param ...                Each argument = One file that will be added.
     * @noreturn
     */[/COLOR]
    native Hacks_AddDownload(const String:...);
    
    [COLOR=Red]/**
     * Creates a patch that you can use with Hacks_Patch/Hacks_Unpatch
     *
     * @param callid            The returned callid from Hacks_Find.
     * @param windows_bytes            New Bytes (eg "C2 08 00")
     * @param windows_offset        Offset (addr to patch = func_addr + offset)
     * @param linux_bytes
     * @param linux_offset
     * @return                PatchID, that's needed to patch/unpatch.
     */[/COLOR]
    native Hacks_CreatePatch(callid, const String:windows_bytes[], windows_offset, const String:linux_bytes[], linux_offset);
    
    [COLOR=Red]/**
     * Writes new bytes to a given address
     *
     * @param patchid            The returned patchid from Hacks_CreatePatch.
     * @noreturn
     */[/COLOR]
    native Hacks_Patch(patchid);
    
    [COLOR=Red]/**
     * Writes the original bytes to a given address
     *
     * @param patchid            The returned patchid from Hacks_CreatePatch.
     * @noreturn
     */[/COLOR]
    native Hacks_Unpatch(patchid);
    Захватываемые функции:
    Код:
    [COLOR=Red]// Args: 0, 0, 0, 0, 0[/COLOR]
    Spawn()
    [COLOR=Red]// Args: inflictor, attacker, damage, hitbox, hitgroup[/COLOR]
    TraceAttack(CTakeDamageInfo const&, Vector const&, CGameTrace*)
    [COLOR=Red]// Args: inflictor, attacker, damage, damagetype, ammotype[/COLOR]
    OnTakeDamage(CTakeDamageInfo const&)
    [COLOR=Red]// Args: inflictor, attacker, damage, damagetype, ammotype[/COLOR]
    Event_Killed(CTakeDamageInfo const&)
    [COLOR=Red]// Args: other, 0, 0, 0, 0[/COLOR]
    StartTouch(CBaseEntity*)
    [COLOR=Red]// Args: other, 0, 0, 0, 0[/COLOR]
    Touch(CBaseEntity*)
    [COLOR=Red]// Args: other, 0, 0, 0, 0[/COLOR]
    EndTouch(CBaseEntity*)
    [COLOR=Red]// Args: 0, 0, 0, 0, 0[/COLOR]
    UpdateOnRemove()
    [COLOR=Red]// Args: weapon, 0, 0, 0, 0[/COLOR]
    Weapon_CanUse(CBaseCombatWeapon*)
    [COLOR=Red]// Args: weapon, 0, 0, 0, 0[/COLOR]
    Weapon_Drop(CBaseCombatWeapon*, Vector const*, Vector const*)
    [COLOR=Red]// Args: weapon, 0, 0, 0, 0[/COLOR]
    Weapon_CanSwitchTo(CBaseCombatWeapon*)
    [COLOR=Red]// Args: 0, 0, 0, 0, 0[/COLOR]
    CommitSuicide()
    [COLOR=Red]// Args: impulse, 0, 0, 0, 0[/COLOR]
    ImpulseCommands()
    [COLOR=Red]// Args: buttons, weapon, forwardmove, sidemove, upmove[/COLOR]
    PlayerRunCommand(CUserCmd *ucmd, IMoveHelper *moveHelper)

    Пример плагина:

    Код:
    [COLOR=Green]#include <sourcemod>
    #include <hacks>[/COLOR]
    
    [COLOR=Red]new[/COLOR] g_iCreateEntityByName;
    [COLOR=Red]new[/COLOR] g_iHooks[MAXPLAYERS + [COLOR=Blue]1[/COLOR]] = { [COLOR=Blue]-1[/COLOR], ... };
    
    
    [COLOR=Red]public[/COLOR] Plugin:myinfo =
    {
        name = "[COLOR=Purple]Hacks Test[/COLOR]",
        author = "[COLOR=Purple]Knagg0[/COLOR]",
        description = "",
        version = "[COLOR=Purple]1.0.0.0[/COLOR]",
        url = "[COLOR=Purple]http://www.mfzb.de[/COLOR]"
    };
    
    
    [COLOR=Red]public[/COLOR] OnPluginStart()
    {
        [COLOR=Red]// As a wildcard, you can use 2A in the signature[/COLOR]
        g_iCreateEntityByName = Hacks_Find("[COLOR=Purple]CreateEntityByName[/COLOR]", "[COLOR=Purple]56 8B 74 24 0C 83 FE FF 57 8B 7C 24 0C 74 25 8B[/COLOR]", "[COLOR=Purple]_Z18CreateEntityByNamePKci[/COLOR]");
        
        RegConsoleCmd("[COLOR=Purple]give_awp[/COLOR]", GiveAWP, "", FCVAR_GAMEDLL);
    }
    
    
    [COLOR=Red]public[/COLOR] OnClientPutInServer(client)
    {
        g_iHooks[client] = Hacks_Hook(client, HACKS_HTYPE_WEAPON_CANUSE, Weapon_CanUse, [COLOR=Blue]false[/COLOR]);
    }
    
    
    [COLOR=Red]public[/COLOR] OnClientDisconnect(client)
    {
        Hacks_Unhook(g_iHooks[client]);
    }
    
    
    [COLOR=Red]public[/COLOR] Action:GiveAWP(client, args)
    {
        [COLOR=Red]new[/COLOR] iEntity = GiveNamedItem(client, "[COLOR=Purple]weapon_awp[/COLOR]", [COLOR=Blue]0[/COLOR]);
        PrintToChat(client, "[COLOR=Purple]Entity index: %d[/COLOR]", iEntity);
        
        [COLOR=Red]return[/COLOR] Plugin_Continue;
    }
    
    
    [COLOR=Red]public[/COLOR] Weapon_CanUse(client, weapon, dummy1, dummy2, dummy3, dummy4)
    {
        [COLOR=Red]new[/COLOR] String:sBuffer[50];
        
        if(weapon != 0 && GetEdictClassname(weapon, sBuffer, sizeof(sBuffer)))
        {
            [COLOR=Red]// Can't pickup deagle[/COLOR]
            if(StrEqual("[COLOR=Purple]weapon_deagle[/COLOR]", sBuffer))
                [COLOR=Red]return[/COLOR] [COLOR=Blue]0[/COLOR];
        }
        
        [COLOR=Red]return[/COLOR] Hacks_Continue;
    }
    
    
    [COLOR=Red]public[/COLOR] SomeFunction(client, args)
    {
        [COLOR=Red]new[/COLOR] iEntity = CreateEntityByName("[COLOR=Purple]prop_physics[/COLOR]", [COLOR=Blue]-1[/COLOR]);
        
        if(iEntity != -1)
        {
    [COLOR=Red]        // Set origin, angles, model, collision...
            // Spawn...[/COLOR]
        }
    }
    
    
    [COLOR=Red]public[/COLOR] GiveNamedItem(client, String:name[], subtype)
    {
        [COLOR=Red]return[/COLOR] Hacks_Call_Offset(client, [COLOR=Blue]329[/COLOR], [COLOR=Blue]330[/COLOR], HACKS_RTYPE_ENTITY, HACKS_PARAM_STRING, name, HACKS_PARAM_INT, subtype);
    }
    
    
    [COLOR=Red]public[/COLOR] CreateEntityByName(String:name[], forceindex)
    {
        [COLOR=Red]return[/COLOR] Hacks_Call_NoEntity(g_iCreateEntityByName, HACKS_RTYPE_ENTITY, HACKS_PARAM_STRING, name, HACKS_PARAM_INT, forceindex);
    }
    

    Оригинал
    Информация о бета версиях здесь:
    https://forums.alliedmods.net/showthread.php?p=1490175#post1490175
     

    Вложения:

    Последнее редактирование: 13 июл 2012
    sdn, StreeTT, Сергей Арзубов и ещё 1-му нравится это.
  2. nubbchik

    nubbchik

    Сообщения:
    5
    Симпатии:
    0
    Ответ: [EXTENSION] Hacks Extension v1.3.0.0

    а че делать дальше после того че написано здесь???????????????????
     
  3. nubbchik

    nubbchik

    Сообщения:
    5
    Симпатии:
    0
    Ответ: [EXTENSION] Hacks Extension v1.3.0.0

    че делать после того как сделал это:Установка:
    1. Извлечь hacks.ext.dll и hacks.ext.so в папку addons/sourcemod/extensions.
    2. Извлечь hacks.inc в папку addons/sourcemod/scripting/include.
    3. Извлечь hacks.ext.cfg в папку addons/sourcemod/configs.
     
  4. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Ответ: [EXTENSION] Hacks Extension v1.3.0.0

    Ничего, это все этапы установки.
     
  5. spawk

    spawk

    Сообщения:
    1
    Симпатии:
    0
    Ответ: [EXTENSION] Hacks Extension v1.3.0.0

    а где все это прописывать?
     
  6. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.507
    Ответ: [EXTENSION] Hacks Extension v1.3.0.0

    Что именно?
     
  7. BFVoland

    BFVoland

    Сообщения:
    1
    Симпатии:
    0
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    Все эти кода куда писать ?
     
  8. modular

    modular

    Сообщения:
    8
    Симпатии:
    8
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    ахахаха :) сори за флуд
     
  9. aresh

    aresh

    Сообщения:
    17
    Симпатии:
    0
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    у меня sm 1.3.4 и mm 1.8.3 В установке тут вроде не чего не напутаешь...но не робит Hacks
    Пишет-Unable to load extension "sdkhooks.ext"
    Я что то не так делаю?)
     
  10. apkon

    apkon

    Сообщения:
    258
    Симпатии:
    97
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    Не так) Ты устанавливаешь Hacks а не SDKHooks =)

    Вот что тебе нужно - http://code.google.com/p/tsunami-productions/downloads/list
     
    pashan911 и aresh нравится это.
  11. noBap

    noBap

    Сообщения:
    196
    Симпатии:
    107
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    Код:
    L 11/03/2010 - 21:53:50: [SM] Unable to load extension "hacks.ext": Metamod attach failed
    как исправить?

    Metamod:Source 1.8.4, SourceMod 1.3.6 Released

    плагины стоят только стандартные которые идут вместе с sourcemod-ом
     
    _ArTe$_ нравится это.
  12. _ArTe$_

    _ArTe$_

    Сообщения:
    2
    Симпатии:
    0
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    Та же проблема=(
     
  13. sas123

    sas123

    Сообщения:
    311
    Симпатии:
    224
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    Очень старая версия расширения, плагины которые его использовали должны были перейти на SDKHooks. Ну а если очень хочется использовать именно Hacks Extension, то нужно его портировать используя последний sdk.
     
  14. _ArTe$_

    _ArTe$_

    Сообщения:
    2
    Симпатии:
    0
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    Как это сделать?
     
  15. sas123

    sas123

    Сообщения:
    311
    Симпатии:
    224
  16. Бендер Родригес

    Бендер Родригес Shit_Happens

    Сообщения:
    920
    Симпатии:
    337
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    Андрей
    ммм... то ли я поиском плохо воспользовался, то ли пропустил что то, но не нашел отдельную тему посвященную SDK Hooks 2.0 или эту обновить, хз:wacko:
    -----------------------------------------------------------------------------------------

    SDK Hooks 2.0 - от 17 июня 2011.
    http://users.alliedmods.net/~psychonic/builds/sdkhooks/2.0/ - Все сборки.

    Прямые ссылки:
    sdkhooks-2.0.0-hg120-windows.zip
    sdkhooks-2.0.0-hg120-mac.zip
    sdkhooks-2.0.0-hg120-linux.tar.gz
    Прикрепить файлы не получилось.
     
  17. kv.acid

    kv.acid Супер-модератор

    Сообщения:
    2.033
    Симпатии:
    767
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    papay, Hacks Extension и SDK Hooks это разные вить расширения :)
     
  18. Бендер Родригес

    Бендер Родригес Shit_Happens

    Сообщения:
    920
    Симпатии:
    337
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    kv.acid
    Так вроде sdkhooks вроде с него и начинался когда то давно, уж точно и не помню,
    но суть то вопроса в другом, отдельной темы не нашол и решил, подстраховаться не создавать тему и написать тут. Если данная тема уже есть, то пост в утиль :)
     
  19. kv.acid

    kv.acid Супер-модератор

    Сообщения:
    2.033
    Симпатии:
    767
  20. Бендер Родригес

    Бендер Родригес Shit_Happens

    Сообщения:
    920
    Симпатии:
    337
    Re: [EXTENSION] Hacks Extension v1.3.0.0

    kv.acid
    ну я же не зря написал вроде :) Потому что точно и не помню, может и с этого.
    Тогда уж следует сделать отдельную темку по sdkhooks