/* Ultimate Weapons Functions
*
* by SKAJIbnEJIb
*
* This file is provided as is (no warranties).
*/

#if defined _ultimate_weapons_included
  #endinput
#endif
#define _ultimate_weapons_included

/*
	id - айди игрока
	uid(ultimate id) - номер ultimate оружия из списка ultimate_weapons.ini (от 0 до 50)
	weapon - CSW оружия
	ent - entity оружия
	buy_name - имя оружия из ultimate_weapons.ini (например ultimate_ak47)
*/

#define ULTIMATE_MAX 64 // Максимальное кол-во ultimate_ оружий

//////////////////////////////////////////////////////////////////////////
// Константы ошибок ULTIMATE_ERROR_* (возвращаются нативами при ошибке) //
//////////////////////////////////////////////////////////////////////////
#define ULTIMATE_ERROR_NOTFOUND		-1 // Нет такого оружия в списке ultimate_weapons.ini
#define ULTIMATE_ERROR_CREATED		-2 // Оружия еще не созданы! Поставьте ultimate_weapons.amxx в самый верх plugins.ini
#define ULTIMATE_ERROR_DISABLE		-3 // Не включен плагин ultimate_weapons.amxx
#define ULTIMATE_ERROR_INCORRECT	-4 // Не корректные данные
#define ULTIMATE_ERROR_TYPE			-5 // Не корректный type
#define ULTIMATE_ERROR_OTHER		-6 // Другая ошибка

///////////////////////////////
// Константы ULTIMATE_DATA_* //
///////////////////////////////
#define ULTIMATE_DATA_WEAPON	0	// [int] CSW_ оружия(на котором основано)
#define ULTIMATE_DATA_AMMO		1	// [int] патроны в обойме
#define ULTIMATE_DATA_BPAMMO	2	// [int] патроны в запасе
#define ULTIMATE_DATA_DAMAGE	3	// [int] урон
#define ULTIMATE_DATA_ROUNDS	4	// [int] ограничение раундов
#define ULTIMATE_DATA_MONEY		5	// [int] стоимость
#define ULTIMATE_DATA_MENU		6	// [int] возвратит 1 если доступно в /ultimate меню
#define ULTIMATE_DATA_FLAGS		7	// [int] флаги для доступа к оружию
#define ULTIMATE_DATA_TRACE		8	// [int] возвратит 1 если включены трассирующие пули
#define ULTIMATE_DATA_BUYNAME	9	// [string] название оружия (buy_name)
#define ULTIMATE_DATA_V_MODEL	10	// [string] путь до v_ модели оружия
#define ULTIMATE_DATA_P_MODEL	11	// [string] путь до p_ модели оружия
#define ULTIMATE_DATA_W_MODEL	12	// [string] путь до w_ модели оружия
#define ULTIMATE_DATA_TEXT		13	// [string] текст в меню


#if defined ULTIMATE_RECURSION
	#undef _ultimate_weapons_included
	#endinput
#endif


	

// Вернет uid оружия по его имени или ошибку
// Пример:
//	new uid=weapons_get_weapon_uid("ultimate_ak47");
native weapons_get_weapon_uid(buy_name[]);

// Вернет данные оружия, по его uid
// Смотрите константы ULTIMATE_DATA_* для type
// Числовые данные возвратятся в return, а строки в аргументе string[]
// Если в return вернуло отрицательное число, значит это ошибка ULTIMATE_ERROR_*
// Пример:
//	new weapon=weapons_get_weapons_data(uid, ULTIMATE_DATA_WEAPON);
//	new buy_name[32]; weapons_get_weapons_data(uid, ULTIMATE_DATA_BUYNAME, buy_name,31);
native weapons_get_weapons_data(uid, type, string[]="", len=0);


// Выдать оружие (старый натив, используйте weapons_give_user_ultimate)
#if (AMXX_VERSION_NUM >= 183)
	#pragma deprecated Use weapons_give_user_ultimate() function.
#endif
native weapons_give_user_weapon(id, weapon);

// Выдать оружие созданное в ultimate_weapons.ini
// Достаточно указать один из параметров, либо uid, либо buy_name. Если указать оба, то плагин примет только uid
// replace:
//	0 - оружие добавится к существующему
//	1 - выкинуть существующие
//	2 - уничтожить существующее
//	3 - не выдавать тогда оружие
// ammo и bpammo:
//	кол-во патрон в обойме и запасе соответственно. Можно не указывать, тогда выдаст то кол-во, которое указано в ultimate_weapons.ini
// Пример:
//	weapons_give_user_ultimate(id, _, "ultimate_ak47");
//	weapons_give_user_ultimate(id, 100);
native weapons_give_user_ultimate(id, uid=-1, buy_name[]="", replace=0, ammo=-1, bpammo=-1);

 
// Запишет в массив ultimate оружия игрока (старый натив, используйте weapons_give_user_ultimate)
#if (AMXX_VERSION_NUM >= 183)
	#pragma deprecated Use weapons_give_user_ultimate() function.
#endif
native weapons_get_user_weapons(id, weapons[33], &num);

// Запишет в массив ultimate оружия игрока, которые он имеет при себе
// Ячейка массива равняется CSW_ оригинального оружия
// Само значение ячейки это uid оружия
// -1 в ячейке говорит, что такого оружия у игрока нет
native weapons_get_user_ultimate(id, ultimates[32]);


// Открыть меню игроку
native weapons_open_menu(id);

// Проверить, разрешено ли игроку открыть меню.
//	true - разрешено
native weapons_check_menu(id);

// Запишет в массив ammo оружий из настроек плагина (старый натив, используйте weapons_get_weapons_data)
#if (AMXX_VERSION_NUM >= 183)
	#pragma deprecated Use weapons_get_weapons_data() function.
#endif
native weapons_get_weapons_ammo(ammo[33]);

// Запишет в массив bpammo оружий из настроек плагина (старый натив, используйте weapons_get_weapons_data)
#if (AMXX_VERSION_NUM >= 183)
	#pragma deprecated Use weapons_get_weapons_data() function.
#endif
native weapons_get_weapons_bpammo(bpammo[33]);


// Вызовется когда игрок купит оружие(или получит через другой плагин)
forward weapons_buy(id, uid, ent);
// Вызовется когда игрок подберет оружие
forward weapons_pickup(id, uid, ent);
// Вызовется когда у игрока выпадет оружие (дропнет или умрет)
forward weapons_drop(id, uid, ent);
