Введение
ReAPI - это AMX Mod X модуль, который умеет работать с API ReHLDS, ReGameDLL_CS, ReUnion, VTC и ReChecker.. Это предоставляет разработчикам AMXX-плагинов больше возможностей для реализации своих целей. Целью данных статей является разбор всех функций библиотек для удобной работы без поиска в ИТКС "Интернет".
1. Основная Библиотека
2. Библиотека для работы с ReHLDS (В разработке)
2.2. reapi_engine.inc
3. Библиотека для работы с ReGameDLL (В разработке)4. Библиотека для работы с ReUnion (В разработке)
5. Библиотека для работы с ReChecker (В разработке)
6. Библиотека для работы с VTC (В разработке)
1. reapi.inc
reapi.inc - основная библиотека, которую подключают во время создания плагинов.
1. RegisterHookChain
Код:
native HookChain:RegisterHookChain({EngineFunc, GamedllFunc, GamedllFunc_CBaseAnimating, GamedllFunc_CBasePlayer, GamedllFunc_CSGameRules, GamedllFunc_CGrenade, GamedllFunc_CWeaponBox, ReCheckerFunc, GamedllFunc_CBasePlayerWeapon, GamedllFunc_CGib, GamedllFunc_CBaseEntity}:function_id, const callback[], post = 0);
function_id - Название функции в библиотеке.callback - Название нашей функции.post - Вызов до (далее «Pre») или после (далее «Post») события. Принимает два значения True (1) и False (0). Данный параметр играет большую роль т.к. здесь мы можем повлиять на логику игры, делая свои изменения в аргументах функции, либо те или иные действия для нашего плагина.При регистрации нам возвращается дескриптор (handle), благодаря которому возможно отключить/включить вызов функции. Это пригодится как и для однократного вызова, так и для при определённых условиях.
Код:
new HookChain: g_hResetMaxSpeed = INVALID_HOOKCHAIN;
public plugin_init()
{
hResetMaxSpeed = RegisterHookChain(RG_CBasePlayer_ResetMaxSpeed, "@CBasePlayer_ResetMaxSpeed_Post", .post = true);
}
@CBasePlayer_ResetMaxSpeed_Post(const iPlayer)
{
// code...
}
2. DisableHookChain / EnableHookChain / GetCurrentHookChainHandle
Код:
native bool:DisableHookChain(HookChain:hook);
native bool:EnableHookChain(HookChain:hook);
hook - Дескриптор зарегистрированной функции.
Код:
new bool: g_bState;
public isEnableSpeed(iPlayers)
{
if (iPlayer >= g_iMinOnline & !bState)
{
EnableHookChain(hResetMaxSpeed);
g_bState = true;
}
else if (iPlayer < g_iMinOnline & bState)
{
DisableHookChain(hResetMaxSpeed);
g_bState = false;
}
}
Код:
native HookChain:GetCurrentHookChainHandle();
Код:
@CBasePlayer_ResetMaxSpeed_Post()
{
hResetMaxSpeed = GetCurrentHookChainHandle();
}
3. SetHookChainReturn / GetHookChainReturn / SetHookChainArg / IsReapiHookOriginalWasCalled
Код:
native SetHookChainReturn(AType:type, any:...);
native any:GetHookChainReturn(AType:type, any:...);
native SetHookChainArg(number, AType:type, any:...);
AType:type - Тип аргумента. Существуют следующие типы:
Код:
enum AType
{
ATYPE_INTEGER = 0, // Целочисленный
ATYPE_FLOAT, // С плавающей точкой
ATYPE_STRING, // Строковый
ATYPE_CLASSPTR, // Указатель на класс CBaseEntity
ATYPE_EDICT, // Указатель на edict_t*
ATYPE_EVARS, // Указатель на entvars_t*
ATYPE_BOOL, // Булевый
ATYPE_VECTOR // Вектор
};
Код:
@CBasePlayer_ThrowGrenade_Post(const iPlayer, const iGrenade)
{
// Получение Entity индекса гранаты
new iEnt = GetHookChainReturn(ATYPE_INTEGER);
// code...
}
@CBasePlayer_DropPlayerItem_Pre(const iPlayer)
{
// блокировка выброса (drop) оружия
SetHookChainReturn(ATYPE_INTEGER, false);
return HC_SUPERCEDE;
}
@CBasePlayer_TakeDamage_Pre(const iVictim, iInflictor, iAttacker, Float: flDamage)
{
// увеличение урона на 20%
SetHookChainArg(4, ATYPE_FLOAT, flDamage * 1.2);
}
Существует всего 3 типа:
Код:
enum
{
HC_CONTINUE = 0, // Плагин ничего не сделал с аргументами
HC_SUPERCEDE, // Плагин внёс изменения, используйте их, и вызывайте функцию для остальных плагинов
HC_BREAK // Плагин внёс изменения, используйте их, но не вызывайте функцию для остальных плагинов
};
Но как узнать, что к нам пришла оригинальная функция, без изменений?
Код:
native bool:IsReapiHookOriginalWasCalled({EngineFunc, GamedllFunc, GamedllFunc_CBaseAnimating, GamedllFunc_CBasePlayer, GamedllFunc_CSGameRules, GamedllFunc_CGrenade, GamedllFunc_CWeaponBox, ReCheckerFunc, GamedllFunc_CBasePlayerWeapon, GamedllFunc_CGib}:function_id);
function_id - Название функции в библиотеке.Данный натив возвращает True, если к нам пришла оригинальная функция, иначе False.
Код:
@CBasePlayerWeapon_DefaultDeploy_Pre(const iEnt)
{
if (IsReapiHookOriginalWasCalled(RG_CBasePlayerWeapon_DefaultDeploy)) isOriginal = true;
// code..
}
4. Additional checks
Код:
native bool:is_rehlds();
native bool:is_regamedll();
native bool:has_reunion();
native bool:has_vtc();
native bool:has_rechecker();
5. Остальные native...
Код:
native bool:FClassnameIs(const entityIndex, const className[]);
entityIndex - индекс entity.className - название класса.
Код:
native WeaponIdType:GetGrenadeType(const entityIndex);
entityIndex - индекс entity.Возвращает одно из следующих типов из WeaponIdType:
Код:
enum WeaponIdType
{
WEAPON_NONE = 0,
WEAPON_HEGRENADE = 4,
WEAPON_C4 = 6,
WEAPON_SMOKEGRENADE = 9,
WEAPON_FLASHBANG = 25
}
Код:
native engset_view(const index, const viewEntity);
native get_viewent(const index);
index - индекс игрока.viewEntity - индекс entity.
Код:
native bool:is_entity(const entityIndex);
entityIndex - индекс entity, который проверяем.reapi_engine_const.inc
reapi_engine_const.inc - библиотека констант игрового движка ReHLDS.
EngineFunc
1. RH_SV_StartSound
Код:
RH_SV_StartSound(const recipients, const entity, const channel, const sample[], const volume, Float:attenuation, const fFlags, const pitch)
recipients - Индекс получателя (Кто слышит).entity - Индекс отправителя (Что/кто издаёт звук).channel - Канал (См. CHAN_*).sample - Путь к звуку.volume - Громкость в % от 0 до 255attenuation - Затухание от 0.0 до 4.0 (См. ATTN_*).fFlags - Флаги (См. SND_*)pitch - Частота от 0 до 255 (См. PITCH_*).Не имеет возвращаемого значения.
Типы аргументов: int (-), edict_t * (-), int (-), string (-), int (-), float (+), int (-), int (-).
2. RH_SV_DropClient
Код:
RH_SV_DropClient(const client, bool:crash, const fmt[])
client - Индекс игрока.crash - True, если произошёл краш у клиента.fmt - Строка с причиной отключения (1024).Не имеет возвращаемого значения.
Типы аргументов: int (-), bool (+), string (-).
3. RH_SV_ActivateServer
Код:
RH_SV_ActivateServer(const runPhysics)
runPhysics - Имеет только 2 значения: 0 или 1. 0 используется только в одиночной игре.Не имеет возвращаемого значения.
Типы аргументов: int (-).
4. RH_Cvar_DirectSet
Код:
RH_Cvar_DirectSet(pcvar, const value[])
pcvar - Указатель на квар.value - Устанавливаемое значение.Не имеет возвращаемого значения.
Типы аргументов: int (+), string (-).
5. RH_SV_WriteFullClientUpdate
Код:
RH_SV_WriteFullClientUpdate(const client, buffer, const receiver)
client - Индекс клиента, у кого обновляется userinfo.buffer - Указатель на буфер с информацией клиентаreceiver - Получатель.Не имеет возвращаемого значения.
Типы аргументов: int (-), int (+), int (-).
6. RH_GetEntityInit
Код:
RH_GetEntityInit(const classname[])
classname - Класс entity.Возвращаемое значение: int (?).
Типы аргументов: string (-).
7. RH_ClientConnected
Код:
RH_ClientConnected(const client)
client - Индекс игрока.Не имеет возвращаемого значения.
Типы аргументов: int (-).
8. RH_SV_ConnectClient
Код:
RH_SV_ConnectClient()
Не имеет возвращаемого значения.
9. RH_SV_EmitPings
Код:
RH_SV_EmitPings(const this)
this - Индекс игрокаНе имеет возвращаемого значения.
Типы аргументов: int (-).
10. RH_ED_Alloc
Код:
RH_ED_Alloc()
Возвращаемое значение: int.
11. RH_ED_Free
Код:
RH_ED_Free(const entity)
entity - Индекс сущности.Не имеет возвращаемого значения.
Типы аргументов: int (-).
12. RH_Con_Printf
Код:
RH_Con_Printf(const string[])
string - СообщениеНе имеет возвращаемого значения.
Типы аргументов: string (-).
13. RH_SV_CheckUserInfo
Код:
RH_SV_CheckUserInfo(adr, userinfo[], bool:reconnect, reconnectSlot, name[])
adr - Указатель на сетевой адрес игрока. Не используйте.userinfo - Пользовательская информация.reconnect - True, если игрок перезашёл.reconnectSlot - Индекс, на котором находился игрок, когда перезаходил.name - Ник игрока. Имеет значение только в Post.Возвращаемое значение: int.
Типы аргументов: int (-), string (+), bool (+), int (+), name (+).
14. RH_PF_precache_generic_I
Код:
RH_PF_precache_generic_I(const string[])
string - Путь до ресурса.Возвращаемое значение: int.
Типы аргументов: string (-).
15. RH_PF_precache_model_I
Код:
RH_PF_precache_model_I(const string[])
string - Путь до модели.Возвращаемое значение: int.
Типы аргументов: string (-).
16. RH_PF_precache_sound_I
Код:
RH_PF_precache_sound_I(const string[])
string - Путь до звука.Возвращаемое значение: int.
Типы аргументов: string (-).
17. RH_EV_Precache
Код:
RH_EV_Precache(const string[])
string - Путь до события.Возвращаемое значение: int.
Типы аргументов: string (-).
18. RH_SV_AddResource
Код:
RH_SV_AddResource(ResourceType_t:type, const filename[], size, flags, index)
type - Тип ресурса (См. ResourceType_t).filename - Путь до ресурса.size - Размер ресурса.flags - Флаг действия (См. RES_*). - Сделать ссылку в ReHLDS RES_WASMISSINGindex - Позиция в списке типа ресурса.Не имеет возвращаемого значения.
Типы аргументов: int (+), string (-), int (+), int (+), int (+).
19. RH_SV_ClientPrintf
Код:
RH_SV_ClientPrintf(const string[])
string - Сообщение.Не имеет возвращаемого значения.
Типы аргументов: string (-).
20. RH_SV_AllowPhysent
Код:
RH_SV_AllowPhysent(const entity, const client)
entity - Индекс entity.client - Индекс игрока.Возвращаемое значение: bool.
Типы аргументов: int (-), int (-).
21. RH_ExecuteServerStringCmd
Код:
RH_ExecuteServerStringCmd(const cmd[], source, id)
cmd - Команда.source - Тип команды (См. cmd_source_t в ReHLDS).id - Отправитель.Не имеет возвращаемого значения.
Типы аргументов: string (-), int (+), int (+).
22. RH_SV_SendResources
Код:
RH_SV_SendResources(const client)
client - Индекс игрока.Не имеет возвращаемого значения.
Типы аргументов: int (-).
EntVars
Код:
native any:get_entvar(const index, const EntVars:var, any:...);
native set_entvar(const index, const EntVars:var, any:...);
1. var_classname
Указывает, к какому типу объекта относится сущность.
Тип параметра: string.
2. var_globalname
Предназначен для связывание объектов при смене карты. Сущность на новой карте копирует большую часть свойств со старой. При отсутствии, сущность не создаётся.
Тип параметра: string.
3. var_origin
Текущие координаты (местоположение) объекта в пространстве.
Тип параметра: float vector
4. var_oldorigin
Прошлые координаты (местоположение) объекта в пространстве.
Тип параметра: float vector
5. var_velocity
Векторная скорость объекта.
Тип параметра: float vector
6. var_basevelocity
Базовая (дефолтная) векторная скорость объекта.
Тип параметра: float vector
7. var_clbasevelocity
Базовая скорость, которая была передана в серверную физику, чтобы клиент мог правильно прогнозировать движение конвейеров. Сервер обнуляет ее, поэтому нам нужно сохранить ее и здесь.
Тип параметра: float vector
8. var_movedir
Указывает направление движение объекта (Например, дверь).
Тип параметра: float vector
9. var_angles
Указывает углы обзора (поворота) объекта.
Тип параметра: float vector
10. var_avelocity
Угловая скорость объекта (градусы в секунду).
Тип параметра: float vector
11. var_punchangle
Изменение угла обзора с автоматическим затуханием (обнулением). Используется при изменение угла обзора при выстреле.
Тип параметра: float vector
12. var_v_angle
Угол обзор от лица (глаз) игрока.
Тип параметра: float vector
13. var_endpos
Параметр перемещения. Точного описания на данный момент нет. Найдено использование в UTIL_TraceLine. Конечные координаты трассировки.
Тип параметра: float vector
14. var_startpos
Параметр перемещения. Точного описания на данный момент нет. Найдено использование в UTIL_TraceLine. Начальные координаты трассировки.
Тип параметра: float vector
15. var_impacttime
Параметр перемещения. Точного описания на данный момент нет. Найдено использование в UTIL_TraceLine. Конечное время трассировки.
Тип параметра: float
16. var_starttime
Параметр перемещения. Точного описания на данный момент нет. Найдено использование в UTIL_TraceLine. Начальное время трассировки.
Тип параметра: float
17. var_idealpitch
Изменение angles.x. на заданное значение.
Тип параметра: float
18. var_pitch_speed
Скорость изменения angles.x
Тип параметра: float
19. var_ideal_yaw
Изменение angles.y на заданное значение.
Тип параметра: float
20. var_yaw_speed
Скорость изменения angles.y
Тип параметра: float
21. var_modelindex
Индекс модели объекта, возвращаемый при кешировании.
Тип параметра: int
22. var_model
Модель объекта.
Тип параметра: string
23. var_viewmodel
Модель оружия от 1-го лица (v_ models).
Тип параметра: string
24. var_weaponmodel
Модель оружия от 3-го лица (p_ models).
Тип параметра: string
25. var_absmin
Минимальные глобальные (относительно мира) координаты BB (ограничивающего прямоугольника). origin + mins - 1.
Тип параметра: float vector
26. var_absmax
Максимальные глобальные (относительно мира) координаты BB (ограничивающего прямоугольника). origin + maxs + 1.
Тип параметра: float vector
27. var_mins
Минимальные локальные (относительно origin объекта) координаты BB (ограничивающего прямоугольника).
Тип параметра: float vector
28. var_maxs
Максимальные локальные (относительно origin объекта) координаты BB (ограничивающего прямоугольника).
Тип параметра: float vector
29. var_size
Общий размер BB (ограничивающего прямоугольника). maxs - mins.
Тип параметра: float vector
30. var_ltime
Указывает на локальное время для сущности.
Тип параметра: float
31. var_nextthink
Указывает на время вызова следующего Think объекта.
Тип параметра: float
32. var_movetype
Указывает на тип перемещения объекта (См. MOVETYPE_*).
Тип параметра: int
33. var_solid
Указывает на тип твердости объекта (См. SOLID_*).
Тип параметра: int
34. var_skin
Указывает на скин модели.
Тип параметра: int
35. var_body
Указывает на субмодель модели.
Тип параметра: int
36. var_effects
Указывает битовую сумму предустановленных эффектов рисования для объекта (См. EF_*).
Тип параметра: int
37. var_gravity
Указывает % от "нормальной" gravity. От 0.0 до 1.0
Тип параметра: float
38. var_friction
Указывает силу трения при MOVETYPE_BOUNCE.
Тип параметра: float
39. var_light_level
Указывает количество света, падающего на объект (используется для рендеринга модели)
Тип параметра: int
40. var_sequence
Указывают на номер анимированной сцены.
Тип параметра: int
41. var_gaitsequence
Последовательность анимации движений игрока для верхней части тела.
Тип параметра: int
42. var_frame
Кадр текущей последовательности текущей модели.
Тип параметра: float
43. var_animtime
Глобальное время начала анимации последовательности.
Тип параметра: float
44. var_framerate
Частота кадров анимации.
Тип параметра: float
45. var_controller
Настройка контроллера костей.
Тип параметра: byte [4]
46. var_blending
Степень смешивания между под-последовательностями.
Тип параметра: byte [2]
47. var_scale
Масштаб рендеринга спрайтов.
Тип параметра: float
48. var_rendermode
Тип рендеринга модели (См. kRender*).
Тип параметра: int
49. var_renderamt
Сила рендеринга эффекта.
Тип параметра: float
50. var_rendercolor
Цвет рендеринга.
Тип параметра: float vector
51. var_renderfx
Эффект рендеринга (См. kRenderFx).
Тип параметра: int
52. var_health
Здоровье сущности.
Тип параметра: float
53. var_frags
Кол-во убийств в TAB.
Тип параметра: float
54. var_weapons
Битовая сумма всего имеющегося у игрока на данный момент оружия.
Тип параметра: int
55. var_takedamage
Получает ли урон сущность (См. DAMAGE_*).
Тип параметра: float
56. var_deadflag
Флаги при смерти (СМ. DEAD_*).
Тип параметра: int
57. var_view_ofs
Позиция глаз.
Тип параметра: float vector
58. var_button
Битовая сумма, указывающая, какие кнопки в данный момент использует игрок.
Тип параметра: int
59. var_impulse
Однократно активирует импульсные команды во время Think.
Тип параметра: int
60. var_chain
Указатель на следующий объект в связному списку (PVS/PAS).
Тип параметра: int (edict_s *)
61. var_dmg_inflictor
Объект, который нанес урон этому другому объекту.
Тип параметра: int (edict_s *)
62. var_enemy
Указывает на противника сущности. Используется для создания AI.
Тип параметра: int (edict_s *)
63. var_aiment
Указывает на объект при MOVETYPE_FOLLOW.
Тип параметра: int (edict_s *)
64. var_owner
Указывает на владельца сущности.
Тип параметра: int (edict_s *)
65. var_groundentity
Указывает на объект, на котором мы стоим.
Тип параметра: int (edict_s *)
66. var_spawnflags
Флаги возрождения (См. SF_*).
Тип параметра: int
67. var_flags
Битовая сумма флагов объекта (См. FL_*).
Тип параметра: int
68. var_colormap
Число, которое содержит как topcolor, так и bottomcolor, в основном комбинацию highbyte (bottomcolor) и lowbyte (bottomcolor). colormap = (bottomcolor & 0xFF) << 8 | (topcolor & 0xFF).
Тип параметра: int
69. var_team
Указывает на команду.
Тип параметра: int
70. var_max_health
Максимальное количество единиц здоровья.
Тип параметра: float
71. var_teleport_time
Глобальное время телепортации игрока обратно в воду, когда он пытается вылезти из неё, но не может).
Тип параметра: float
72. var_armortype
Указывает на тип брони (См. ArmorType).
Тип параметра: float
73. var_armorvalue
Указывает на количество единиц брони.
Тип параметра: int
74. var_waterlevel
Указывает на степень нахождения в воде.
Тип параметра: int
75. var_watertype
Указывает на тип жидкости.
Тип параметра: int
76. var_target
Название объекта,, которое им управляет.
Тип параметра: string
77. var_targetname
Название объекта, которое другой объект ищет для его обработки.
Тип параметра: string
78. var_netname
Имя сущности (Игрока/NPC).
Тип параметра: string
79. var_message
Создано для триггер сообщений, но здесь можно хранить ваш текст...
Тип параметра: string
80. var_dmg_take
Сумма урона, нанесённая объекту.
Тип параметра: float
81. var_dmg_save
Позволяет сохранять урон, нанесённый объекту.
Тип параметра: float
82. var_dmg
Тип урона, нанесённый объекту (См. DMG_*).
Тип параметра: float
83. var_dmgtime
Время взрыва гранаты.
Тип параметра: float
84. var_noise
Переменные шума по-разному влияют на разные объекты.
Тип параметра: string
85. var_noise1
Звук открытия двери.
Тип параметра: string
86. var_noise2
Звук остановки двери.
Тип параметра: string
87. var_noise3
Звук блокировки game_player_equip и player_weaponstrip.
Тип параметра: string
88. var_speed
Указывает на скорость объекта (не игрока).
Тип параметра: float
89. var_air_finished
Указывает на глобальное время, когда игрок начнёт задыхаться под водой (через 12.0 секунд)
Тип параметра: float
90. var_pain_finished
Указывает на глобальное время, когда игрока получает урон.
Тип параметра: float
91. var_radsuit_finished
Указывает на глобальное время, когда игрока получает урон от радиации.
Тип параметра: float
92. var_pContainingEntity
???????????????????????????????????????????????????????????
Тип параметра: int (edict_s *)
93. var_playerclass
Класс игрока в DOD/TFC.
Тип параметра: int
94. var_maxspeed
Максимальная скорость сущности.
Тип параметра: float
95. var_fov
Указывается на поле зрения.
Тип параметра: float
96. var_weaponanim
Сцена для v_ модели.
Тип параметра: int
97. var_pushmsec
??????????????????????????????????????????????????????????
Тип параметра: int
98. var_bInDuck
Указывает, находится игрок в процессе приседании (при полном приседании возвращает 0).
Тип параметра: int
99. var_flTimeStepSound
Указывает через сколько можно повторно услышать звук шага.
Тип параметра: float
100. var_flSwimTime
Указывает через сколько можно повторно услышать звук плавания.
Тип параметра: float
101. var_flDuckTime
??????????????????????????????????????????????????????????
Тип параметра: float
102. var_iStepLeft
Указывает на попеременный звук шагов левой и правой ноги.
Тип параметра: int
103. var_flFallVelocity
Указывает на скорость падения (velocity[2] *= -1.0).
Тип параметра: float
104. var_gamestate
Показывает иконку щита?
Тип параметра: int
105. var_oldbuttons
Битовая сумма, указывающая, какие кнопки игрок использовал последний раз.
Тип параметра: int
106. var_groupinfo
??????????????????????????????????????????????????????????
Тип параметра: int
107. var_iuser1
CS: Указывает на режим наблюдения у наблюдателя (Spec).
Тип параметра: int
108. var_iuser2
CS: Индекс игрока, за которым наблюдают.
Тип параметра: int
109. var_iuser3
CS: При смерти - Индекс игрока, на которого направлена камера (т.е. на убийцу).
Тип параметра: int
110. var_iuser4
Рикошет: Указывает к какой команде принадлежит диск.
Тип параметра: int
111. var_fuser1
HL: Используется для пылесоса.
Тип параметра: float
112. var_fuser2
CS: Указывает на значение параметра замедления игрока после прыжка.
Тип параметра: float
113. var_fuser3
Тип параметра: float
114. var_fuser4
Тип параметра: float
115. var_vuser1
Тип параметра: float vector
116. var_vuser2
Тип параметра: float vector
117. var_vuser3
Тип параметра: float vector
118. var_vuser4
Тип параметра: float vector
119. var_euser1
Тип параметра: int (edict_s *)
120. var_euser2
Тип параметра: int (edict_s *)
121. var_euser3
Тип параметра: int (edict_s *)
122. var_euser4
Тип параметра: int (edict_s *)
Последнее редактирование: