gaming_transfer_system.inc

#if defined _gtsystem_included
	#endinput
#endif
#define _gtsystem_included

enum eBalanceAction
{
	GET_BALANCE,
	ADD_BALANCE
};

//коды ограничения доступа к меню и его пунктам
enum eMenuAction (+= -1)
{
	MENU_IGNORE,			//доступ к меню и пунктам по обычным условиям	
	MENU_ITEM_ACCESS_DENY,	//запретить доступ к меню и/или пунктам
	MENU_SHOW_NOW,			//отобразить меню, как есть на данный момент (до формирования дополнительных пунктов)
	MENU_DONT_SHOW			//не показывать меню
};


/** Создает кошелек для перевода (объект певревода- т.е. деньги, опыт, бонусы и т.п.)
*
*	@szIdentName[]		- идентификатор кошелька
*	@szLangFullName[]	- название кошелька- ключ словаря (Lang Key)
*	@szLangSign[]		- размерность и название валюты кошелька - ключ словаря (Lang Key) в формате "%d [$]" (например, "1 [рубль]")
*	@iOpenTime			- время доступа к кошельку(-1 доступ всегда, 0- не доступен, >0 время в минутах от начала карты или раундах)
*	@iMaxAmount			- максимальный размер кошелька (например, для игровых денег- mp_maxmoney, 0- не ограничен)
*	@iMaxTransferAmount	- максимальная сумма одного перевода
*
*	@return				- индекс кошелька (индекс массива Array), -1 при неудачном добавлении
*/
native GTSCreatePurse(szIdentName[], szLangFullName[], szLangSign[], iOpenTime = -1, iMaxAmount = 0, iMaxTransferAmount = 0);


/** Создает банк для хранения переводов (объект певревода- т.е. деньги, опыт, бонусы и т.п.)
*
*	@szIdentName[]		- идентификатор банка = идентификатор кошелька, для которого он создается
*	@iMaxAmount			- максимальный размер банка (0- не ограничен)
*
*	@return				- 0 при неудачном добавлении (например, при дублировании банка, при отсутствии кошелька), 1- при удачном добавлении
*/
native GTSCreateBank(szIdentName[], iMaxAmount = 0);


/** Передача результата выполения форвардов Pre
*	
*	@iClient		- индекс игрока
*	@iReturnCode	- код ограничения доступа к меню и его пунктам, структура eMenuAction
*
*	@return 		- 0/1 при неудачном/удачном выполнении
*/
native GTSForwardReturnSet(iClient, eMenuAction:iReturnCode);


/** Вызывается перед добавлением допонительных пунктов меню
*
*	@id				- индекс игрока
*	@iPurseIndex	- индекс кошелька, полученный при его создании GTSCreatePurse
*	@iMenu			- идентификатор меню
*	@iMenuCallback	- идентификатор функции меню Callback
*	
*	@return eMenuAction
*/
forward OnGTSMainMenuOpenPre(id, iPurseIndex, iMenu, iMenuCallback)


/** Вызывается при получении/изменении баланса КОШЕЛЬКА
*
*	@id				- индекс игрока
*	@iPurseIndex	- индекс кошелька, полученный при его создании GTSCreatePurse
*	@iActionSet		- тип операции получение/изменение (структура eBalanceAction)
*	@iValue			- значение для добавления к балансу
*	
*	@return eMenuAction
*/
forward OnGTSPurseBalanceRequestPre(id, iPurseIndex, eBalanceAction:iActionSet, iValue)


/** Вызывается при получении/изменении баланса БАНКА
*
*	@id				- индекс игрока
*	@szBankName		- идентификатор банка = идентификатор кошелька, для которого он создается
*	@iActionSet		- тип операции получение/изменение (структура eBalanceAction)
*	@iValue			- значение для добавления к балансу
*	
*	@return eMenuAction
*/
forward OnGTSBankBalanceRequestPre(id, szBankName[], eBalanceAction:iActionSet, iValue)

/** Вызывается при создании БАНКА
*
*	@szIdentName[]		- идентификатор банка = идентификатор кошелька, для которого он создается
*	@iMaxAmount			- максимальный размер банка (0- не ограничен)
*
*	@noreturn
*/
forward OnGTSBankCreated(szIdentName[], iMaxAmount);