Ham Sandwich: различия между версиями
Nikita (обсуждение | вклад) (→RegisterHam) |
Nikita (обсуждение | вклад) (→GetHamReturnStatus) |
||
(не показано 11 промежуточных версий этого же участника) | |||
Строка 29: | Строка 29: | ||
=== RegisterHamFromEntity === | === RegisterHamFromEntity === | ||
− | + | Отлавливает событие в игровом мире для определенного [[энтити-объекты|энтити-объекта]] или игрока. | |
native HamHook:RegisterHamFromEntity(Ham:function, EntityId, const Callback[], Post=0); | native HamHook:RegisterHamFromEntity(Ham:function, EntityId, const Callback[], Post=0); | ||
Строка 36: | Строка 36: | ||
|- | |- | ||
| '''function''' | | '''function''' | ||
− | | | + | | Событие для отлова |
|- | |- | ||
| '''EntityId''' | | '''EntityId''' | ||
− | | | + | | id объекта |
|- | |- | ||
| '''callback''' | | '''callback''' | ||
− | | | + | | Функция, которая будет вызвана |
|- | |- | ||
| '''post''' | | '''post''' | ||
− | | | + | | Функция будет вызвана До/Или после события |
|} | |} | ||
Строка 51: | Строка 51: | ||
'''Пример:''' | '''Пример:''' | ||
− | RegisterHam(Ham_TakeDamage, id, "player_hurt"); | + | RegisterHam(Ham_TakeDamage, id, "player_hurt", 0); |
=== DisableHamForward === | === DisableHamForward === | ||
Строка 108: | Строка 108: | ||
=== ExecuteHam === | === ExecuteHam === | ||
− | + | Выполняет виртуальную функцию на [[энтити-объекты|энтити-объекте]] или игроке. Смотрите список параметров. | |
native ExecuteHam(Ham:function, this, any:...); | native ExecuteHam(Ham:function, this, any:...); | ||
Строка 115: | Строка 115: | ||
|- | |- | ||
| '''function''' | | '''function''' | ||
− | | | + | | Функция из списка Ham_ |
|- | |- | ||
− | | ''' | + | | '''this''' |
− | | | + | | id объекта к кому применяется функция |
+ | |- | ||
+ | | any:... | ||
+ | | Дополнительные параметры если есть | ||
|} | |} | ||
+ | |||
+ | '''Пример:''' | ||
+ | |||
+ | Пример респавнит игрока. | ||
+ | <pre> | ||
+ | public plugin_init() { | ||
+ | register_clcmd("say /spawn","spawn"); | ||
+ | } | ||
+ | public spawn(id){ | ||
+ | ExecuteHam( Ham_CS_RoundRespawn, id ); | ||
+ | } | ||
+ | </pre> | ||
=== ExecuteHamB === | === ExecuteHamB === | ||
− | + | Функция аналогична [[Ham_Sandwich#ExecuteHam|ExecuteHam]] за исключением того, что результат выполнения можно отловить. | |
native ExecuteHamB(Ham:function, this, any:...); | native ExecuteHamB(Ham:function, this, any:...); | ||
Строка 129: | Строка 144: | ||
|- | |- | ||
| '''function''' | | '''function''' | ||
− | | | + | | Функция из списка Ham_* |
+ | |- | ||
+ | | '''this''' | ||
+ | | id объекта | ||
|- | |- | ||
− | | ''' | + | | '''ani:...''' |
− | | | + | | Другие параметры (если есть) |
|} | |} | ||
+ | '''Пример:''' | ||
+ | |||
+ | Пример респавнит игрока и выводит сообщение. | ||
+ | <pre> | ||
+ | public plugin_init() { | ||
+ | register_clcmd("say resp","new_life") | ||
+ | RegisterHam(Ham_CS_RoundRespawn,"player","player_respawn") | ||
+ | } | ||
+ | |||
+ | public new_life(id){ | ||
+ | ExecuteHamB(Ham_CS_RoundRespawn,id) | ||
+ | return PLUGIN_HANDLED | ||
+ | } | ||
+ | |||
+ | public player_respawn(id){ | ||
+ | client_print(0,print_chat,"Ham_CS_RoundRespawn is hooked") | ||
+ | } | ||
+ | </pre> | ||
=== GetHamReturnStatus === | === GetHamReturnStatus === | ||
Строка 145: | Строка 181: | ||
<pre> | <pre> | ||
public plugin_init() { | public plugin_init() { | ||
− | |||
RegisterHam(Ham_TakeDamage,"player","damager",0); | RegisterHam(Ham_TakeDamage,"player","damager",0); | ||
} | } | ||
Строка 153: | Строка 188: | ||
if(GetHamReturnStatus() != HAM_SUPERCEDE){ | if(GetHamReturnStatus() != HAM_SUPERCEDE){ | ||
client_print(0,print_chat,"Damage: %.1f health:%d",damage,get_user_health(victim)); | client_print(0,print_chat,"Damage: %.1f health:%d",damage,get_user_health(victim)); | ||
− | + | } | |
} | } | ||
</pre> | </pre> | ||
Строка 331: | Строка 366: | ||
=== SetHamParamFloat === | === SetHamParamFloat === | ||
− | + | Задает параметры отловленного события. Не имеет никакого эффекта, если отлов был после события (Post). | |
+ | Полезна, если требуется увеличить или уменьшить урон, получаемый игроком. | ||
+ | |||
native SetHamParamFloat(which, Float:value); | native SetHamParamFloat(which, Float:value); | ||
Строка 337: | Строка 374: | ||
|- | |- | ||
| '''which''' | | '''which''' | ||
− | | | + | | Параметр, который нужно изменить |
|- | |- | ||
| '''value''' | | '''value''' | ||
− | | | + | | Новое значение параметра |
|} | |} | ||
+ | |||
+ | '''Пример:''' | ||
+ | Уменьшаем урон, получаемый игроком в два раза. | ||
+ | |||
+ | '''4''' - параметр урона | ||
+ | |||
+ | <pre> | ||
+ | public plugin_init() { | ||
+ | RegisterHam(Ham_TakeDamage,"player","damager",0); | ||
+ | } | ||
+ | |||
+ | public damager(victim, inflicator, attacker, Float:damage){ | ||
+ | if(!is_user_connected(attacker)){ | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | if(victim == attacker || !victim){ | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | SetHamParamFloat(4, damage * 0.5); | ||
+ | } | ||
+ | </pre> | ||
=== SetHamParamVector === | === SetHamParamVector === | ||
− | + | Задает параметры отловленного события. Не имеет никакого эффекта, если отлов был после события (Post). Аналогична функции [[Ham_Sandwich#SetHamParamFloat|Ham_Sandwich]], за исключением того, что новые параметры задаются вектором. | |
native SetHamParamVector(which, const Float:value[3]); | native SetHamParamVector(which, const Float:value[3]); | ||
Строка 350: | Строка 410: | ||
|- | |- | ||
| '''which''' | | '''which''' | ||
− | | | + | | Параметр, который нужно изменить |
|- | |- | ||
| '''value''' | | '''value''' | ||
− | | | + | | Новое значение параметра |
|} | |} | ||
Строка 370: | Строка 430: | ||
=== SetHamParamString === | === SetHamParamString === | ||
− | + | Задает параметры отловленного события. Не имеет никакого эффекта, если отлов был после события (Post). Аналогична функции [[Ham_Sandwich#SetHamParamFloat|Ham_Sandwich]], за исключением того, что новые параметры задаются строкой. | |
native SetHamParamString(which, const output[]); | native SetHamParamString(which, const output[]); | ||
Строка 376: | Строка 436: | ||
|- | |- | ||
| '''which''' | | '''which''' | ||
− | | | + | | Параметр, который нужно изменить |
|- | |- | ||
− | | '''value''' | + | | '''value''' |
− | | | + | | Новое значение параметра |
|} | |} | ||
Строка 461: | Строка 521: | ||
Return the index of the corresponding pdata field, -1 for null, -2 for invalid. | Return the index of the corresponding pdata field, -1 for null, -2 for invalid. | ||
+ | |||
+ | == Ссылки == | ||
+ | * [http://amxxmodx.ru/hamsandwich/hamsandwichinc/ Примеры Ham Sandwich (рус.)] |
Текущая версия на 12:31, 15 июня 2013
Содержание
- 1 hamsandwich.inc
- 1.1 RegisterHam
- 1.2 RegisterHamFromEntity
- 1.3 DisableHamForward
- 1.4 EnableHamForward
- 1.5 ExecuteHam
- 1.6 ExecuteHamB
- 1.7 GetHamReturnStatus
- 1.8 GetHamReturnInteger
- 1.9 GetHamReturnFloat
- 1.10 GetHamReturnVector
- 1.11 GetHamReturnEntity
- 1.12 GetHamReturnString
- 1.13 GetOrigHamReturnInteger
- 1.14 GetOrigHamReturnFloat
- 1.15 GetOrigHamReturnVector
- 1.16 GetOrigHamReturnEntity
- 1.17 GetOrigHamReturnString
- 1.18 SetHamReturnInteger
- 1.19 SetHamReturnFloat
- 1.20 SetHamReturnVector
- 1.21 SetHamReturnEntity
- 1.22 SetHamReturnString
- 1.23 SetHamParamInteger
- 1.24 SetHamParamFloat
- 1.25 SetHamParamVector
- 1.26 SetHamParamEntity
- 1.27 SetHamParamString
- 1.28 SetHamParamTraceResult
- 1.29 IsHamValid
- 1.30 get_pdata_cbase
- 1.31 set_pdata_cbase
- 1.32 get_pdata_cbase_safe
- 2 Ссылки
hamsandwich.inc
RegisterHam
Отлавливает событие в игровом мире. Список событий очень большой, их описание можно посмотреть в константах Ham Sandwich. Функция возвращает идентификатор созданного форварда, который можно использовать в функциях EnableHamForward/DisableHamForward.
native HamHook:RegisterHam(Ham:function, const EntityClass[], const Callback[], Post=0);
function | Функция (событие). Например убийство. |
EntityClass | Класс объектов с которым происходит событие |
callback | Вызываемая функция |
post | Функция будет вызвана До/Или после события. |
Пример:
Будет вызвана функция player_hurt, перед тем как игрок получит повреждение.
RegisterHam(Ham_TakeDamage, "player", "player_hurt", 0);
RegisterHamFromEntity
Отлавливает событие в игровом мире для определенного энтити-объекта или игрока.
native HamHook:RegisterHamFromEntity(Ham:function, EntityId, const Callback[], Post=0);
function | Событие для отлова |
EntityId | id объекта |
callback | Функция, которая будет вызвана |
post | Функция будет вызвана До/Или после события |
Returns a handle to the forward. Use EnableHamForward/DisableHamForward to toggle the forward on or off.
Пример:
RegisterHam(Ham_TakeDamage, id, "player_hurt", 0);
DisableHamForward
Запускает работу Ham форварда. Противоположность EnableHamForward.
native DisableHamForward(HamHook:fwd);
fwd | ID форварда для остановки. |
EnableHamForward
Запускает работу Ham форварда. Противоположность DisableHamForward.
native EnableHamForward(HamHook:fwd);
fwd | Идентификатор форварда (возвращаемое значение RegisterHam) |
Пример:
new HamHook:g_fwdTakeDamage public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_fwdTakeDamage = RegisterHam(Ham_TakeDamage,"player","damager",0) register_clcmd("say /off","f_off") register_clcmd("say /on","f_on") } public f_on(){ EnableHamForward(g_fwdTakeDamage) client_print(0,print_chat,"Forward TakeDamege is enable") } public f_off(){ DisableHamForward(g_fwdTakeDamage) client_print(0,print_chat,"Forward TakeDamege is desable") } public damager(victim, inflicator, attacker, Float:damage){ if(!is_user_connected(attacker)) return; if(victim == attacker || !victim) return; client_print(0,print_chat,"Damage: %.1f health:%d",damage,get_user_health(victim)) }
ExecuteHam
Выполняет виртуальную функцию на энтити-объекте или игроке. Смотрите список параметров.
native ExecuteHam(Ham:function, this, any:...);
function | Функция из списка Ham_ |
this | id объекта к кому применяется функция |
any:... | Дополнительные параметры если есть |
Пример:
Пример респавнит игрока.
public plugin_init() { register_clcmd("say /spawn","spawn"); } public spawn(id){ ExecuteHam( Ham_CS_RoundRespawn, id ); }
ExecuteHamB
Функция аналогична ExecuteHam за исключением того, что результат выполнения можно отловить.
native ExecuteHamB(Ham:function, this, any:...);
function | Функция из списка Ham_* |
this | id объекта |
ani:... | Другие параметры (если есть) |
Пример:
Пример респавнит игрока и выводит сообщение.
public plugin_init() { register_clcmd("say resp","new_life") RegisterHam(Ham_CS_RoundRespawn,"player","player_respawn") } public new_life(id){ ExecuteHamB(Ham_CS_RoundRespawn,id) return PLUGIN_HANDLED } public player_respawn(id){ client_print(0,print_chat,"Ham_CS_RoundRespawn is hooked") }
GetHamReturnStatus
Проверяет статус определенного события. Полезно в случаях когда на сервере установлено два плагина, работающих с одним событием.
native GetHamReturnStatus();
Пример:
Пример отправляет в чат нанесенный урон.
public plugin_init() { RegisterHam(Ham_TakeDamage,"player","damager",0); } public damager(victim, inflicator, attacker, Float:damage){ if(GetHamReturnStatus() != HAM_SUPERCEDE){ client_print(0,print_chat,"Damage: %.1f health:%d",damage,get_user_health(victim)); } }
GetHamReturnInteger
Gets the return value of a hook for hooks that return integers or booleans.
native GetHamReturnInteger(&output);
output | The variable to store the value in. |
GetHamReturnFloat
Gets the return value of a hook for hooks that return float.
native GetHamReturnFloat(&Float:output);
output | The variable to store the value in. |
GetHamReturnVector
Gets the return value of a hook for hooks that return Vectors.
native GetHamReturnVector(Float:output[3]);
output | The variable to store the value in. |
GetHamReturnEntity
Gets the return value of a hook for hooks that return entities.
native GetHamReturnEntity(&output);
output | The variable to store the value in. Will be -1 on null. |
GetHamReturnString
Gets the return value of a hook for hooks that return strings.
native GetHamReturnString(output[], size);
output | The buffer to store the string in. |
size | The string size of the buffer. |
GetOrigHamReturnInteger
Gets the original return value of a hook for hooks that return integers or booleans.
native GetOrigHamReturnInteger(&output);
output | The variable to store the value in. |
GetOrigHamReturnFloat
Gets the original return value of a hook for hooks that return floats.
native GetOrigHamReturnFloat(&Float:output);
output | The variable to store the value in. |
GetOrigHamReturnVector
Gets the original return value of a hook for hooks that return Vectors.
native GetOrigHamReturnVector(Float:output[3]);
output | The variable to store the value in. |
GetOrigHamReturnEntity
Gets the original return value of a hook for hooks that return entities.
native GetOrigHamReturnEntity(&output);
output | The variable to store the value in. -1 on null. |
GetOrigHamReturnString
Gets the original return value of a hook for hooks that return strings.
native GetOrigHamReturnString(output[], size);
output | The buffer to store the string in. |
size | The size of the buffer. |
SetHamReturnInteger
Sets the return value of a hook that returns an integer or boolean. This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE.
native SetHamReturnInteger(value);
value | The value to set the return to. |
SetHamReturnFloat
Sets the return value of a hook that returns a float. This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE.
native SetHamReturnFloat(Float:value);
value | The value to set the return to. |
SetHamReturnVector
Sets the return value of a hook that returns a Vector. This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE.
native SetHamReturnVector(const Float:value[3]);
value | The value to set the return to. |
SetHamReturnEntity
Sets the return value of a hook that returns an entity. Set to -1 for null. This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE.
native SetHamReturnEntity(value);
value | The value to set the return to. |
SetHamReturnString
Sets the return value of a hook that returns a string.This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE.
native SetHamReturnString(const value[]);
value | The value to set the return to. |
SetHamParamInteger
Sets a parameter on the fly of the current hook. This has no effect in post hooks. Use this on parameters that are integers.
native SetHamParamInteger(which, value);
which | Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". |
value | The value to change it to. |
SetHamParamFloat
Задает параметры отловленного события. Не имеет никакого эффекта, если отлов был после события (Post). Полезна, если требуется увеличить или уменьшить урон, получаемый игроком.
native SetHamParamFloat(which, Float:value);
which | Параметр, который нужно изменить |
value | Новое значение параметра |
Пример: Уменьшаем урон, получаемый игроком в два раза.
4 - параметр урона
public plugin_init() { RegisterHam(Ham_TakeDamage,"player","damager",0); } public damager(victim, inflicator, attacker, Float:damage){ if(!is_user_connected(attacker)){ return; } if(victim == attacker || !victim){ return; } SetHamParamFloat(4, damage * 0.5); }
SetHamParamVector
Задает параметры отловленного события. Не имеет никакого эффекта, если отлов был после события (Post). Аналогична функции Ham_Sandwich, за исключением того, что новые параметры задаются вектором.
native SetHamParamVector(which, const Float:value[3]);
which | Параметр, который нужно изменить |
value | Новое значение параметра |
SetHamParamEntity
Sets a parameter on the fly of the current hook. This has no effect in post hooks. Use this on parameters that are entities.
native SetHamParamEntity(which, value);
which | Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". |
value | The value to change it to. |
SetHamParamString
Задает параметры отловленного события. Не имеет никакого эффекта, если отлов был после события (Post). Аналогична функции Ham_Sandwich, за исключением того, что новые параметры задаются строкой.
native SetHamParamString(which, const output[]);
which | Параметр, который нужно изменить |
value | Новое значение параметра |
SetHamParamTraceResult
Sets a parameter on the fly of the current hook. This has no effect in post hooks. Use this on parameters that are trace result handles.
native SetHamParamTraceResult(which, tr_handle);
which | Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". |
value | The value to change it to. |
IsHamValid
Returns whether or not the function for the specified Ham is valid.Things that would make it invalid would be bounds (an older module version may not have all of the functions), and the function not being found in the mod's hamdata.ini file.
native bool:IsHamValid(Ham:function);
function |
Return true if the function is valid, false otherwise.
get_pdata_cbase
This is used to compliment fakemeta's {get,set}_pdata_{int,float,string}.This requires the mod to have the pev and base fields set in hamdata.ini. Note this dereferences memory! Improper use of this will crash the server. This will return an index of the corresponding cbase field in private data. Returns -1 on a null entry.
native get_pdata_cbase(id, offset, linuxdiff=5);
id | The entity to examine the private data. |
offset | The windows offset of the data. |
linuxdiff | The linux difference of the data. |
Return the index of the corresponding pdata field. -1 for none set.
set_pdata_cbase
This is used to compliment fakemeta's {get,set}_pdata_{int,float,string}. This requires the mod to have the pev and base fields set in hamdata.ini. This will set the corresponding cbase field in private data with the index. Pass -1 to null the entry.
native set_pdata_cbase(id, offset, value, linuxdiff=5);
id | The entity to examine the private data. |
offset | The windows offset of the data. |
linuxdiff | The linux difference of the data. |
get_pdata_cbase_safe
This is similar to the get_pdata_cbase, however it does not dereference memory. This is many times slower than get_pdata_cbase, and this should only be used for testing and finding of offsets, not actual release quality plugins. This will return an index of the corresponding cbase field in private data. Returns -1 on a null entry. -2 on an invalid entry.
native get_pdata_cbase_safe(id, offset, linuxdiff=5);
id | The entity to examine the private data. |
offset | The windows offset of the data. |
linuxdiff | The linux difference of the data. |
Return the index of the corresponding pdata field, -1 for null, -2 for invalid.