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; }
|
|
| |