[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » SoureMod Расширения » SDKhooks (Новые события, хуки (hooks), функции)
SDKhooks
rootДата: Четверг, 31.01.2013, 21:16 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Последнюю версию SDKhooks всегда можно найти здесь.
Первоисточник здесь.

Если у вас уже стоит SDKhooks и вы хотите обновить его до последней версии, то сначала лучше полностью удалите старую версию с вашего сервера, т.к. могут возникнуть проблемы.

Информация для скриптеров:

Код
// СОБЫТИЯ    

public OnEntityCreated(index, const String:classname[])    
{    
        // Вызывается, когда создаётся какой-либо объект/предмет    
}    

public OnEntityDestroyed(index)    
{    
        // Вызывается, когда удаляется/уничтожается какой-либо объект/предмет    
}    

public Action:OnGetGameDescription(String:gameDesc[64])    
{    
        // Получено описание игры/сервера    
        // return Plugin_Changed; - мы что-то изменили    
        // return Plugin_Handled; - запретить    
        // return Plugin_Continue; - разрешить (продолжить нормальное выполнение)    
}    

public Action:OnLevelInit(const String:mapName[], String:mapEntities[2097152])    
{    
        // Вызывается, когда уровень инициализируется    
        // return Plugin_Changed; - мы что-то изменили    
        // return Plugin_Handled; - запретить    
        // return Plugin_Continue; - разрешить (продолжить нормальное выполнение)    
}


SDKHookType:

Код
SDKHook_EndTouch - конец прикосновения    
SDKHook_FireBulletsPost    
SDKHook_OnTakeDamage - получение повреждений    
SDKHook_OnTakeDamagePost    
SDKHook_PreThink    
SDKHook_PostThink    
SDKHook_SetTransmit    
SDKHook_Spawn - рождение объекта    
SDKHook_StartTouch - начало прикосновения    
SDKHook_Think    
SDKHook_Touch    
SDKHook_TraceAttack    
SDKHook_TraceAttackPost    
SDKHook_WeaponCanSwitchTo - смена оружия    
SDKHook_WeaponCanUse - использование оружия    
SDKHook_WeaponDrop - выброс оружия    
SDKHook_WeaponEquip    
SDKHook_WeaponSwitch    
SDKHook_ShouldCollide    
SDKHook_PreThinkPost    
SDKHook_PostThinkPost    
SDKHook_ThinkPost    
SDKHook_EndTouchPost    
SDKHook_GroundEntChangedPost    
SDKHook_SpawnPost    
SDKHook_StartTouchPost    
SDKHook_TouchPost    
SDKHook_VPhysicsUpdate    
SDKHook_VPhysicsUpdatePost    
SDKHook_WeaponCanSwitchToPost    
SDKHook_WeaponCanUsePost    
SDKHook_WeaponDropPost    
SDKHook_WeaponEquipPost    
SDKHook_WeaponSwitchPost    
SDKHook_Use    
SDKHook_UsePost    
SDKHook_Reload - перезарядка оружия    
SDKHook_ReloadPost    
SDKHook_GetMaxHealth  // ep2v and later


Функции:

Код
// Создать хук для объекта    
SDKHook(index, SDKHookType:type, SDKHookCB:callback);    
bool:SDKHookEx(index, SDKHookType:type, SDKHookCB:callback);    

// Снять хук с объекта.    
// Делайте, только если объект еще жив. Если объект был удален, то хук сам снимется.    
SDKUnhook(entity, SDKHookType:type, SDKHookCB:callback);    

// Нанесение повреждения объекту    
SDKHooks_TakeDamage(1, 2, 3, 4, 5, 6, 7, 8);    

1 - индекс объекта, который получит повреждение    
2 - индекс объекта, который наносит это повреждение (например, индекс ножа)    
3 - индекс атакующего (игрок или др. объект)    
4 - Float:damage - наносимое повреждение (сколько отнять hp)    
5 - тип повреждения (по умолчанию: DMG_GENERIC)    
6 - индекс оружия (orangebox) или -1 (по умолчанию), если не определено    
7 - const Float:damageForce[3] = NULL_VECTOR (параметр Velocity - как сильно отскочит от повреждения)    
8 - damagePosition[3] = NULL_VECTOR (координаты, где наносится повреждение)    

// Заставить выбросить оружие (в этом нет необходимости, т.к. есть CS_DropWeapon)    
SDKHooks_DropWeapon(....);


SDKHookCB (функции обратного вызова):

Код
// PreThink/Post   
// PostThink/Post   
public xz_func(client)   
             
// Spawn   
public Action:xz_func(index)   
             
// GroundEntChanged   
// SpawnPost   
// Think/Post   
// VPhysicsUpdate/Post   
public xz_func(index)   
             
// EndTouch   
// StartTouch   
// Touch   
public Action:xz_func(index, other_index)   
             
// EndTouchPost   
// StartTouchPost   
// TouchPost   
public xz_func(index, other_index)   
             
// SetTransmit   
public Action:xz_func(entity_index, client)   
             
// WeaponCanSwitchTo   
// WeaponCanUse   
// WeaponDrop   
// WeaponEquip   
// WeaponSwitch   
public Action:xz_func(client, weapon)   
             
// WeaponCanSwitchToPost   
// WeaponCanUsePost   
// WeaponDropPost   
// WeaponEquipPost   
// WeaponSwitchPost   
public xz_func(client, weapon)   
             
// GetMaxHealth (ep2v and later)   
public Action:xz_func(entity, &maxhealth)   

// OnTakeDamage   
public Action:xz_func(victim, &attacker, &inflictor, &Float:damage, &damagetype)   

public Action:xz_func(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon,   
          Float:damageForce[3], Float:damagePosition[3])   

public Action:xz_func(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon,   
          Float:damageForce[3], Float:damagePosition[3], damagecustom)   

// OnTakeDamagePost   
public xz_func(victim, attacker, inflictor, Float:damage, damagetype)   
public xz_func(victim, attacker, inflictor, Float:damage, damagetype,   
          weapon, const Float:damageForce[3], const Float:damagePosition[3])   

// FireBulletsPost   
public xz_func(client, shots, const String:weaponname[])   
             
// TraceAttack   
public Action:xz_func(victim, &attacker, &inflictor, &Float:damage, &damagetype, &ammotype, hitbox, hitgroup)   
             
// TraceAttackPost   
public xz_func(victim, attacker, inflictor, Float:damage, damagetype, ammotype, hitbox, hitgroup)   
             
// ShouldCollide   
public bool:xz_func(entity, collisiongroup, contentsmask, bool:originalResult)   

// Use   
public Action:xz_func(entity, activator, caller, UseType:type, Float:value)   
             
// UsePost   
public xz_func(entity, activator, caller, UseType:type, Float:value)   
             
// Reload   
public Action:xz_func(weapon)   
             
// Reload post   
public xz_func(weapon, bool:bSuccessful)
 
rootДата: Четверг, 31.01.2013, 23:53 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Примеры 

Запрещаем переключать оружие на usp: 

Код
#include <sourcemod>  
#include <sdkhooks>  

public OnClientPutInServer(client)  
{  
      SDKHook(client, SDKHook_WeaponSwitch, OnWeaponSwitch);  
}  

public Action:OnWeaponSwitch(client, weapon)  
{  
      decl String:sWeapon[32];  
      GetEdictClassname(weapon, sWeapon, 32);  
      if (StrEqual(sWeapon, "weapon_usp")) return Plugin_Handled;  
      return Plugin_Continue;  
}


Блокируем урон от падений: 

Код
#include <sourcemod>  
#include <sdkhooks>  

public OnClientPutInServer(client)  
{  
      SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);  
}  

public Action:OnTakeDamage(client, &attacker, &inflictor, &Float:damage, &damagetype)  
{  
      if (damagetype & DMG_FALL) return Plugin_Handled;  
      return Plugin_Continue;  
}
 
Форум » Форум » SoureMod Расширения » SDKhooks (Новые события, хуки (hooks), функции)
  • Страница 1 из 1
  • 1
Поиск: