ЗАКРЫТЬ
Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

^Место доступно для покупки - 4000 руб/мес^

Новости

17-апр
30-дек
29-дек
26-дек

> Информационная доска

Образец багрепорта:
  1. Операционная система ( Linux / Windows )
  2. Build Сервера ( квар version )
  3. Версия Metamod ( квар meta version )
  4. Версия ReGameDLL [если установлен] ( квар game version )
  5. Версия AmxModX [если установлен] ( квар amxx version )
  6. Логи ( qconsole.log, так же другие если есть )
  7. Комментарий
2 страниц V   1 2

[AMXX Module] Reapi

, AMXModX модуль, который умеет работать с API
Статус пользователя CBETJIAHA
сообщение 4.6.2016, 22:34
Сообщение #1


Стаж: 3 года 5 месяцев

Сообщений: 365
Благодарностей: 321
Полезность: 938

Команда разработки:
• Asmodai
• s1lent

Ссылки:
github

Описание:
• Это AMX Mod X модуль, который умеет работать с API ReHLDS, ReGameDLL_CS, Reunion и VTC.
Это предоставляет разработчикам AMXX-plugins больше возможностей для реализации своих целей.

Требования:
ReHLDS, ReGameDLL_CS, Reunion или VTC Внимание: (Можно использовать не все перечисленные, но тогда будет доступна меньшая часть функционала)
• MetaMod 1.20(p) или новее

Установка:
Cкрытый текст
• Копируем из архива reapi_X_X_X.zip файл reapi_amxx_i386.so или reapi_amxx.dll (в зависимости от используемой ОС) в папку <gamedir>/addons/amxmodx/modules
• Установка Reapi завершена


Возможности форвардов:
Cкрытый текст
1. Управление вызовом оригинальной функции и других хуков. Делается путем возврата из форварда одного из 4 значений:
HC_CONTINUE - продолжить вызывать хуки и оригинал
HC_OVERRIDE - продолжить вызывать оригинал, но возвращать свое значение
HC_SUPERCEDE - продолжить вызывать хуки, но прервать выполнение оригинала
• (Если функция не void, перед блокировкой её вызова необходимо установить свое возвращаемое значение)

HC_BREAK - прервать выполнение хуков и оригинала

2. Установка возвращаемого значения. Выполняется нативом SetHookChainReturn с двумя аргументами, в первом требуется указать тип возвращаемого значения, а во втором значение.
3. Получение возвращаемого значения. Делается нативом GetHookChainReturn, может быть вызвано только в post.
4. Замена аргументов в функции. Делается нативом SetHookChainArg, в первом аргументе указывается номер последовательности аргументов всегда начинается с 1, во втором тип аргумента и в третьем - значение.


Практические примеры:
1. SetHookChainReturn
Cкрытый текст
Для начала подключим include reapi.

Код:
#include <reapi> 


В plugin_init, зарегистрируем хук на DeadPlayerWeapons и повесим обработчик на CSGameRules_DeadPlayerWeapons

Код:
public plugin_init()
{
RegisterHookChain(RG_CSGameRules_DeadPlayerWeapons, "CSGameRules_DeadPlayerWeapons")
}


Далее создадим тело обработчик-функции

Код:
public CSGameRules_DeadPlayerWeapons(const index)
{

}


Следующим шагом для общего представления желательно заглянуть в исходник ReGameDLL_CS player.cpp#L1473,
понимая что функция должна возвращать некое значение в котором не ожидает GR_PLR_DROP_GUN_NO
и от этого будет зависеть далее выполняемый код, суть этой PackDeadPlayerItems функции заключается в том,
что выбрасывает оружия на землю после смерти игрока, попробуем это предотвратить,
для этого вернём значение GR_PLR_DROP_GUN_NO который не ожидает получить.

Код:
public CSGameRules_DeadPlayerWeapons(const index)
{
SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
}


Так как, в оригинальной функции, практически ничего нет, то нет надобности ее лишний раз вызывать, поэтому используем HC_SUPERCEDE

Код:
public CSGameRules_DeadPlayerWeapons(const index)
{
SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
return HC_SUPERCEDE;
}


Таким нехитрым способом, предотвратили любое появление оружия после смерти игрока, вполне себе сойдет для CSDM или GunGame модов.

Код:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
RegisterHookChain(RG_CSGameRules_DeadPlayerWeapons, "CSGameRules_DeadPlayerWeapons")
}

public CSGameRules_DeadPlayerWeapons(const index)
{
SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
return HC_SUPERCEDE;
}


2. GetHookChainReturn
Cкрытый текст
Поскольку CBasePlayer::TakeDamage возвращает значение 0/1, в виде
• 0 - не получил урон
• 1 - получил урон
Если на сервере будет включен mp_friendlyfire 0, стреляя по союзникам CBasePlayer::TakeDamage все равно будет вызываться, но возвращать уже будет 0.
В некоторых ситуациях, нужно точно знать получила ли жертва урон, на примере этого будет оповещение атакующему о том,
сколько урона нанёс (аля Damager).
GetHookChainReturn должен использоваться только в post, когда оригинальная функция уже была вызвана.

Код:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", 1);
}

public CBasePlayer_TakeDamage(const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)
{
if (GetHookChainReturn() == 1) {
client_print(0, print_chat, "Жертва получила урон: %f", flDamage);
} else {
client_print(0, print_chat, "Жертва не получила урон: %f", flDamage);
}

return HC_CONTINUE;
}


Полезная информация: CBasePlayer::TakeDamage в post, аргумент flDamage уже приходит с расчетом брони и уменьшенным уроном
по союзникам на 35% (иными словами в flDamage будет точный урон), чего не скажешь о такой возможности в Hamsandwich-е.


3. SetHookChainArg
Cкрытый текст
Используя хук ShowVGUIMenu, мы вполне cможем видоизменять/русифицировать меню выбора для всех, за исключением VGUI меню,
так как функция ShowVGUIMenu, вызывается как для VGUI так и для old меню.

Код:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
RegisterHookChain(RG_ShowVGUIMenu, "ShowVGUIMenu");
}

public ShowVGUIMenu(const index, VGUIMenu:menuType, const bitsSlots, szOldMenu[])
{
if (menuType == VGUI_Menu_Team) {
new szMenu[256];
formatex(szMenu, charsmax(szMenu), "\yЗа кого будем играть?^n^n\w1. Террористы^n2. Контр-Террористы^n^n5. Не знаю");

if (bitsSlots & MENU_KEY_6) {
add(szMenu, charsmax(szMenu), "^n6. Зритель");
}

SetHookChainArg(4, ATYPE_STRING, szMenu);
}

return HC_CONTINUE;
}



Примечания:
• ReAPI по большей части предназначен для Counter-Strike 1.6 / Condition Zero, но может использоваться и на других модах с меньшим доступным функционалом.
• С каждой новой версией желательно перекомпилировать свои плагины использующие ReAPI с обновленными инклюдами.

Источник:
www.dedicated-server.ru

Цитата
Актуальная версия: Прикрепленный файл  Reapi_publish_5.1.0.112_artifacts.zip ( 226.31 килобайт ) Кол-во скачиваний: 74


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 5 раз
   Цитировать сообщение
Статус пользователя CBETJIAHA
сообщение 5.6.2016, 10:31
Сообщение #2


Стаж: 3 года 5 месяцев

Сообщений: 365
Благодарностей: 321
Полезность: 938

LazyMoron, чтобы можно было в плагинах использовать функции из движка и игровой структуры! Читайте описание, там вроде все написано!


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя tyne
сообщение 5.6.2016, 10:40
Сообщение #3


Стаж: 4 года 7 месяцев

Сообщений: 485
Благодарностей: 123
Полезность: 91

Что только не придумают..но смысл?)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Unknown
сообщение 5.6.2016, 11:42
Сообщение #4
Стаж: 1 год 4 месяца

Сообщений: 291
Благодарностей: 69
Полезность: < 0

tyne, Если ты не скриптер то это тупой вопрос.


Аткажитесъ от плагенов бес исходника.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CBETJIAHA
сообщение 5.6.2016, 13:37
Сообщение #5


Стаж: 3 года 5 месяцев

Сообщений: 365
Благодарностей: 321
Полезность: 938

tyne, Это предоставляет разработчикам AMXX-plugins больше возможностей для реализации своих целей.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 5.6.2016, 19:05
Сообщение #6


Стаж: 3 года 4 месяца

Сообщений: 2054
Благодарностей: 1265
Полезность: 838

Цитата(tyne @ 5.6.2016, 11:40) *
Что только не придумают..но смысл?)

Смысл в оптимизации .


[CS 1.6 Public] 78.152.169.100:27014
[CS 1.6 DM FFA] 78.152.169.100:27015
[CS 1.6 DM AIM] 78.152.169.100:27017
[Half-Life DM FFA] 78.152.169.100:27016
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CBETJIAHA
сообщение 12.6.2016, 0:59
Сообщение #7


Стаж: 3 года 5 месяцев

Сообщений: 365
Благодарностей: 321
Полезность: 938

Обновление:
Текущая версия модуля 0.1.50 (Обновлена совместимость)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iFrank
сообщение 30.6.2016, 8:23
Сообщение #8


Стаж: 1 год 10 месяцев
Город: Москва

Сообщений: 103
Благодарностей: 20
Полезность: 123

В modules.ini прописывать Reapi не надо?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DexteR
сообщение 14.12.2016, 10:41
Сообщение #9
Стаж: 1 год 10 месяцев
Город: Москва

Сообщений: 325
Благодарностей: 25
Полезность: 81

Также тут Обновите шапку темы уже есть версия
Прикрепленные файлы:
Прикрепленный файл  reapi_0.1.80.zip ( 216.56 килобайт ) Кол-во скачиваний: 19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 14.12.2016, 12:50
Сообщение #10


Иконка группы

Стаж: 4 года 2 месяца

Сообщений: 1540
Благодарностей: 727
Полезность: 953

Меценат Меценат

Цитата(DexteR @ 14.12.2016, 11:41) *
Также тут Обновите шапку темы уже есть версия


82 версия уже есть

Цитата(iFrank @ 30.6.2016, 9:23) *
В modules.ini прописывать Reapi не надо?

Нет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DexteR
сообщение 14.12.2016, 15:31
Сообщение #11
Стаж: 1 год 10 месяцев
Город: Москва

Сообщений: 325
Благодарностей: 25
Полезность: 81

adva, да уже 84 есть
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 14.12.2016, 15:43
Сообщение #12


Иконка группы

Стаж: 4 года 2 месяца

Сообщений: 1540
Благодарностей: 727
Полезность: 953

Меценат Меценат

Цитата(DexteR @ 14.12.2016, 16:31) *
adva, да уже 84 есть

Релизной 84 еще нет, это пока dev версия
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DexteR
сообщение 11.1.2017, 21:27
Сообщение #13
Стаж: 1 год 10 месяцев
Город: Москва

Сообщений: 325
Благодарностей: 25
Полезность: 81

Обновление:
Текущая версия модуля 0.1.85
Прикрепленные файлы:
Прикрепленный файл  reapi_0.1.85.zip ( 217.91 килобайт ) Кол-во скачиваний: 20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя niceserver
сообщение 11.1.2017, 21:42
Сообщение #14
Стаж: 1 год 2 месяца

Сообщений: 231
Благодарностей: 19
Полезность: 81

DexteR, а dev здесь не в моде?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя XyLiGaN
сообщение 8.2.2017, 13:40
Сообщение #15


Иконка группы

Стаж: 5 лет 1 месяц
Город: Югорск

Сообщений: 10777
Благодарностей: 6241
Полезность: 1756

Меценат Меценат

Цитата
Обновил 1-й пост, добавив последнюю актуальную версию модуля ReAPI


Установка/Настройка/Обновление - Серверов/Модов/Плагинов: перейти
Другие полезные ссылки по форуму: перейти
Российский Паблик Сервер 18+ © - Тема сервера
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя fl0werD
сообщение 13.3.2017, 22:16
Сообщение #16
Стаж: 5 месяцев 20 дней

Сообщений: 79
Благодарностей: 35
Полезность: 334

А CBreakable будет добавлен?


===================================MYSQL SAVE MONEY&LEVEL(Predator help)===============================
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Jack2345
сообщение 18.5.2017, 7:44
Сообщение #17


Стаж: 2 года 4 месяца
Город: Москва

Сообщений: 230
Благодарностей: 39
Полезность: 143

без реапи вполне нормально и годно работает


Success
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 18.5.2017, 8:41
Сообщение #18


Стаж: 3 года 4 месяца

Сообщений: 2054
Благодарностей: 1265
Полезность: 838

Цитата(Jack2345 @ 18.5.2017, 7:44) *
без реапи вполне нормально и годно работает

Без ReAPI смысла ставить reHLDS практически нет.


[CS 1.6 Public] 78.152.169.100:27014
[CS 1.6 DM FFA] 78.152.169.100:27015
[CS 1.6 DM AIM] 78.152.169.100:27017
[Half-Life DM FFA] 78.152.169.100:27016
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Jack2345
сообщение 18.5.2017, 9:09
Сообщение #19


Стаж: 2 года 4 месяца
Город: Москва

Сообщений: 230
Благодарностей: 39
Полезность: 143

ssx,
а какой толк от него? пинг меньше? нагрузги меньше?


Success
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deniska21233
сообщение 18.5.2017, 9:39
Сообщение #20
Стаж: 3 года 4 месяца

Сообщений: 253
Благодарностей: 19
Полезность: < 0

Цитата(Jack2345 @ 18.5.2017, 10:09) *
ssx,
а какой толк от него? пинг меньше? нагрузги меньше?

модули подрубать не надо если все плагины перевести под него
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: