ArKaNeMaN
Пользователь
- Регистрация
- 24 Дек 2017
- Сообщения
- 25
- Симпатии
- 9
Автор: ArKaNeMaN
Версия: 0.5.0-beta
Репозиторий: ArKaNeMaN/amxx-CustomWeaponsAPI
Мультиязычность: RU, EN
Требования:
Описание:
Плагин позволяет создавать оружие с уникальными характеристиками на основе стандартного.
Также предоставляет API для наделения созданного оружия особыми свойствами через доп. плагины. (Примеры таких плагинов есть на GitHub в том же репозитории).
Настройка оружия:
Команды:
CWAPI_Buy <WeaponName>
Покупка кастомного оружия
Пример: CWAPI_Buy NoveskeDiplomat
CWAPI_Give <WeaponName>
Выдача себе кастомного оружия
Пример: CWAPI_Give NoveskeDiplomat
Работает, только если плагин скомпилирован с дефайном DEBUG
API:
Версия: 0.5.0-beta
Репозиторий: ArKaNeMaN/amxx-CustomWeaponsAPI
Мультиязычность: RU, EN
Требования:
- AmxModX 1.9.0 или новее
- ReAPI 5.8.0.163 или новее
- Fix Custom iMaxClip
- Необязательно. Исправляет баг с анимацией перезарядки при полном магазине.
Описание:
Плагин позволяет создавать оружие с уникальными характеристиками на основе стандартного.
Также предоставляет API для наделения созданного оружия особыми свойствами через доп. плагины. (Примеры таких плагинов есть на GitHub в том же репозитории).
Настройка оружия:
Для каждого оружия создаётся отдельный файл с его настройками в папке
Название файла:
*Если вторичная атака есть изначально, то отключить её нельзя.
**Нужно выбрать один из способов указания списка способностей.
amxmodx/configs/plugins/CustomWeaponsAPI/Weapons/
.Название файла:
<WeaponName>.json
JSON:
{
"DefaultName": [String] Название дефолтного оружие, на котором будет основано кастомное,
"Models": {
"v": [String] v_ модель оружия (Опционально),
"p": [String] p_ модель оружия (Опционально),
"w": [String] w_ модель оружия (Опционально)
},
"Sounds": {
"Shot": [String] Звук выстрела,
"ShotSilent": [String] Звук выстрела с глушителем (Только для M4A1 и USP-S),
"OnlyPrecache": [
[String] Звуковой файл используемый самой моделькой оружия,
"..."
]
},
"MaxWalkSpeed": [Int] Скорость бега с оружием в руках,
"ClipSize": [Int] Максимальное кол-во патронов в обойме,
"MaxAmmo": [Int] Общее кол-во патронов,
"DamageMult": [Float] Множитель урона,
"Damage": [Float] Базовый урон,
"Accuracy": [Float] Точность (До конца не уверен работает ли),
"Weight": [Int] Вес оружия,
"Price": [Int] Цена оружия (Если не указать то купить нельзя будет),
"DeployTime": [Float] Длительность доставания оружия,
"ReloadTime": [Float] Длительность перезарядки (Для дробовика время докидывания одного патрона),
"PrimaryAttackRate": [Float] Интервал между первичными атаками,
"HasSecondaryAttack": [Bool] Есть ли у оружия вторичная атака*,
"SecondaryAttackRate": [Float] Интервал между вторичными атаками (Например, снятие\надевание глушителя),
"Abilities": [ [Array] Список используемых оружием способностей (Без параметров)**
[String] Название способности,
"..."
],
"Abilities": { [Object] Список используемых оружием способностей (С параметрами)**
"AbilityName": {
"ParamName": [Any] Значение параметра,
"...": ...
},
"...": {...}
}
}
**Нужно выбрать один из способов указания списка способностей.
Файл:
amxmodx/configs/plugins/CustomWeaponAPI/Weapons/AugA3War.json
JSON:
{
"DefaultName": "aug",
"ClipSize": 40,
"MaxAmmo": 240,
"Models": {
"v": "models/CustomWeapons/AugA3War/v_aug.mdl",
"p": "models/CustomWeapons/AugA3War/p_aug.mdl",
"w": "models/CustomWeapons/AugA3War/w_aug.mdl"
},
"Sounds": {
"Shot": "CustomWeapons/AugA3War/aug-1.wav",
"OnlyPrecache": [
"weapons/AUG/Mercury/bolt.wav",
"weapons/AUG/Mercury/boltback.wav",
"weapons/AUG/Mercury/boltrelease.wav",
"weapons/AUG/Mercury/bullet.wav",
"weapons/AUG/Mercury/draw.wav",
"weapons/AUG/Mercury/magin.wav",
"weapons/AUG/Mercury/magout.wav",
"weapons/AUG/Mercury/magtap.wav"
]
},
"MaxWalkSpeed": 800,
"DamageMult": 1.15,
"Weight": 120,
"Price": 7500,
"DeployTime": 1.6,
"PrimaryAttackRate": 0.12,
"SecondaryAttackRate": 0.5
}
Команды:
CWAPI_Buy <WeaponName>
Покупка кастомного оружия
Пример: CWAPI_Buy NoveskeDiplomat
CWAPI_Give <WeaponName>
Выдача себе кастомного оружия
Пример: CWAPI_Give NoveskeDiplomat
Работает, только если плагин скомпилирован с дефайном DEBUG
API:
C++:
enum CWAPI_WeaponModels{
CWAPI_WM_V[PLATFORM_MAX_PATH],
CWAPI_WM_P[PLATFORM_MAX_PATH],
CWAPI_WM_W[PLATFORM_MAX_PATH],
};
enum CWAPI_WeaponSounds{
CWAPI_WS_Shot[PLATFORM_MAX_PATH],
CWAPI_WS_ShotSilent[PLATFORM_MAX_PATH], // Only M4A1 & USP-S
};
enum CWAPI_WeaponEvents{
/**
* Описание: Вызывается при основной атаке
*
* Параметры: (const ItemId)
*/
CWAPI_WE_PrimaryAttack = 1,
/**
* Описание: Вызывается при вторичной атаке
*
* Параметры: (const ItemId)
*/
CWAPI_WE_SecondaryAttack,
/**
* Описание: Вызывается при перезарядке
*
* Параметры: (const ItemId)
*/
CWAPI_WE_Reload,
/**
* Описание: Вызывается при доставании оружия
*
* Параметры: (const ItemId)
*/
CWAPI_WE_Deploy,
/**
* Описание: Вызывается при убирании оружия
*
* Параметры: (const ItemId)
*/
CWAPI_WE_Holster,
/**
* Описание: Вызывается при нанесении урона при помощи оружия
*
* Параметры: (const ItemId, const Victim, const Float:Damage, const DamageBits)
*/
CWAPI_WE_Damage,
/**
* Описание: Вызывается при появлении оружия в мире (Выбрасывании)
*
* Параметры: (const ItemId, const WeaponBox)
*/
CWAPI_WE_Droped,
/**
* Описание: Вызывается при добавлении оружия в инвентарь
*
* Параметры: (const ItemId)
*/
CWAPI_WE_AddItem,
/**
* Описание: Вызывается при выдаче оружия
*
* Параметры: (const WeaponId, const UserId)
*/
CWAPI_WE_Take,
/**
* Описание: Вызывается при убийстве при помощи оружия. ПОКА НЕ РАБОТАЕТ
*
* Параметры: (const ItemId)
*/
CWAPI_WE_Kill,
};
enum _:CWAPI_WeaponData{
CWAPI_WD_Name[32],
CWAPI_WD_DefaultName[32],
CWAPI_WD_Models[CWAPI_WeaponModels],
CWAPI_WD_Sounds[CWAPI_WeaponSounds],
CWAPI_WD_ClipSize,
CWAPI_WD_MaxAmmo,
Float:CWAPI_WD_MaxWalkSpeed,
CWAPI_WD_Weight,
Array:CWAPI_WD_CustomHandlers[CWAPI_WeaponEvents],
Float:CWAPI_WD_DamageMult,
CWAPI_WD_Price,
Float:CWAPI_WD_Accuracy,
Float:CWAPI_WD_DeployTime,
Float:CWAPI_WD_ReloadTime,
Float:CWAPI_WD_PrimaryAttackRate,
Float:CWAPI_WD_SecondaryAttackRate,
bool:CWAPI_WD_HasSecondaryAttack,
Float:CWAPI_WD_Damage,
};
enum {
// Продолжить вызов обработчиков и обработать событие
CWAPI_RET_CONTINUE = 0,
// Прекратить вызов обработчиков и отменить событие
CWAPI_RET_HANDLED,
};
enum _:CWAPI_WeaponAbilityData{
CWAPI_WAD_WeaponName[32],
//Trie:CWAPI_WAD_AdditionalData,
}
/**
* Регистрирует хук события оружия
*
* @param WeaponName Название оружия указанное в конфиге
* @param Event Событие
* @param HandlerFuncName Название функции-обработчика
*
* @return Идентификатор хука. -1 в случае ошибки
*/
native CWAPI_RegisterHook(const WeaponName[], const CWAPI_WeaponEvents:Event, const HandlerFuncName[]);
/**
* Выдаёт кастомное оружие игроку
*
* @param WeaponName Название оружия указанное в конфиге
* @param UserId Идентификатор игрока, которому надо выдать оружие
*
* @return Идентификатор выданного предмета. -1 в случае ошибки
*/
native CWAPI_GiveWeapon(const WeaponName[], const UserId);
/**
* Возвращает Array массив со списком кастомных пушек.
* Надо разрушить массив (ArrayDestroy) после использования
*
* @return Дескриптор Array массива
*/
native Array:CWAPI_GetWeaponsList();
/**
* Получает индекс кастомного оружия
*
* @param WeaponName Название кастомного оружия
*
* @return Индекс кастомного оружия. -1, если такого оружия не существует.
*/
native CWAPI_GetWeaponId(const WeaponName[32]);
/**
* Получает информацию о кастомном оружии
*
* @param WeaponId Индекс кастомного оружия
* @param Data Буфер для записи информации об оружии
*
* @return true в случае удачи, иначе false
*/
native bool:CWAPI_GetWeaponData(const WeaponId, Data[CWAPI_WeaponData]);
/**
* Добавляет кастомное оружие
*
* @note Если указываются модели, то они должны быть в прекеше.
*
* @param WeaponData Данные о добавляемом оружии
*
* @return Индекс добавленного оружия. -1 в случае ошибки.
*/
native CWAPI_AddCustomWeapon(const WeaponData[CWAPI_WeaponData]);
/**
* Поиск кастомного оружия
*
* @note Если указываются модели, то они должны быть в прекеше.
*
* @param StartWeaponId Индекс оружия, с которого начинать поиск
* @param Field Параметр по которому искать оружие (Из CWAPI_WeaponData)
* @param Value Нужное значение параметра
*
* @return Индекс найденного оружия. -1, если оружие не найдено.
*/
native CWAPI_FindWeapon(const StartWeaponId, const Field, any:...);
/**
* Возвращает Array массив со списком пушек использующих указанную способность.
*
* @param AbilityName Название способности
*
* @return Дескриптор Array массива
*/
native Array:CWAPI_GetAbilityWeaponsList(const AbilityName[]);
/**
* Вызывается после загрузки всех пушек из конфига
*
* @noreturn
*/
forward CWAPI_LoadWeaponsPost();
Вложения
-
16,9 KB Просмотры: 75