#include <amxmodx>
#include <gamecms5>
#pragma semicolon 1
#pragma tabsize 0
#define is_user_valid(%0) (%0 && %0 <= MaxClients)
enum _:DATA_GAMECMS
{
bool:IS_REG,
LOGIN[33],
NAME[33],
GROUP[65],
RAIT,
THANKS,
REG_DATA[11]
}
new GameCMS_Account[MAX_PLAYERS + 1][DATA_GAMECMS];
public plugin_init()
{
register_plugin("[GameCMS] Account", "1.0", "Tako");
register_menucmd(register_menuid("Show_SiteInfoMenu"), 1023, "Handle_SiteInfoMenu");
register_clcmd("say /account", "ClCmd_ShowAccount");
register_clcmd("say_team /account", "ClCmd_ShowAccount");
}
public plugin_cfg()
{
if(is_plugin_loaded("GameCMS_API") == INVALID_PLUGIN_ID)
{
log_amx("ERROR: 'GameCMS API' не был установлен! Плагин остановлен.");
set_fail_state("GameCMS API' не был установлен");
return;
}
get_cvar_string("cms_url", SiteUrl, charsmax(SiteUrl));
}
public plugin_natives()
{
register_native("gamecms_account_open_menu", "ClCmd_ShowAccount");
register_native("gamecms_account_is_reg", "gamecms_account_is_reg");
register_native("gamecms_account_get_login", "gamecms_account_get_login");
register_native("gamecms_account_get_group", "gamecms_account_get_group");
register_native("gamecms_account_get_name", "gamecms_account_get_name");
register_native("gamecms_account_get_thanks", "gamecms_account_get_thanks");
register_native("gamecms_account_get_raiting", "gamecms_account_get_raiting");
register_native("gamecms_account_get_money", "gamecms_account_get_money");
register_native("gamecms_account_get_regdata", "gamecms_account_get_regdata");
register_native("gamecms_account_siteurl", "gamecms_account_siteurl");
}
public client_disconnected(id) for(new i; i < DATA_GAMECMS; i++) GameCMS_Account[id][i] = 0;
public OnAPISendChatPrefix(id, prefix[], type) copy(GameCMS_Account[id][GROUP], charsmax(GameCMS_Account[][GROUP]), prefix);
public OnAPIMemberConnected(id, memberId, memberName[])
{
new Data[4];
GameCMS_Account[id][IS_REG] = true;
if(!cmsapi_get_forum_data(id, Data, GameCMS_Account[id][NAME], charsmax(GameCMS_Account[][NAME]))) return 0;
GameCMS_Account[id][THANKS] = Data[0];
GameCMS_Account[id][RAIT] = Data[2];
cmsapi_get_user_data(id, eMemberData:MemberLogin, GameCMS_Account[id][LOGIN], charsmax(GameCMS_Account[][LOGIN]));
cmsapi_get_user_regdate(id, GameCMS_Account[id][REG_DATA], charsmax(GameCMS_Account[][REG_DATA]));
return 1;
}
public ClCmd_ShowAccount(id) return Show_SiteInfoMenu(id);
Show_SiteInfoMenu(id)
{
new szString[512];
strtoupper(SiteUrl);
if(GameCMS_Account[id][IS_REG])
{
new Float:iMoney = cmsapi_get_user_money(id);
format(szString, charsmax(szString), "\wЛогин: \y%s^n\wГруппа: \y%s^n\wБаланс: \y%.2f руб^n\wРейтинг: \y%d^n\wБлагодарностей: \y%d^n\wЗарегистрирован: \y с %s", GameCMS_Account[id][LOGIN], GameCMS_Account[id][GROUP], iMoney, GameCMS_Account[id][RAIT], GameCMS_Account[id][THANKS], GameCMS_Account[id][REG_DATA]);
}
else format(szString, charsmax(szString), "\wВы ещё не зарегистрированы на сайте: \y%s^n^n\wЧтобы появилась информация:^n\d- \wЗарегистрируйтесь на сайте \y%s^n\d- \wВ настройках укажите свой SteamID", SiteUrl, SiteUrl);
new szMenu[512], iKeys = (1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\wАккаунт на сайте \y[%s]^n^n", SiteUrl);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%s^n", szString);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \wВыход");
return show_menu(id, iKeys, szMenu, -1, "Show_SiteInfoMenu");
}
public Handle_SiteInfoMenu(id, iKey)
{
switch(iKey) { case 9: return PLUGIN_HANDLED; }
return Show_SiteInfoMenu(id);
}
//! Нативы
/**
* Проверяет, зарегистрирован ли аккаунт игрока на сайте.
* @param id Индекс игрока
* @return true если зарегистрирован, иначе false
*/
public gamecms_account_is_reg(id)
{
if(!is_user_valid(id)) return false;
return GameCMS_Account[id][IS_REG] ? true : false;
}
/**
* Возвращает логин игрока на сайте.
* @param id Индекс игрока
* @return Строка с логином или пустая строка если не зарегистрирован
*/
public gamecms_account_get_login(id)
{
if(!is_user_valid(id)) return 0;
if(!GameCMS_Account[id][IS_REG]) return 0;
return GameCMS_Account[id][LOGIN];
}
/**
* Возвращает группу игрока на сайте.
* @param id Индекс игрока
* @return Строка с группой или пустая строка если не зарегистрирован
*/
public gamecms_account_get_group(id)
{
if(!is_user_valid(id)) return 0;
if(!GameCMS_Account[id][IS_REG]) return 0;
return GameCMS_Account[id][GROUP];
}
/**
* Возвращает имя игрока на сайте.
* @param id Индекс игрока
* @return Строка с именем или пустая строка если не зарегистрирован
*/
public gamecms_account_get_name(id)
{
if(!is_user_valid(id)) return 0;
if(!GameCMS_Account[id][IS_REG]) return 0;
return GameCMS_Account[id][NAME];
}
/**
* Возвращает количество благодарностей игрока.
* @param id Индекс игрока
* @return Количество благодарностей или 0 если не зарегистрирован
*/
public gamecms_account_get_thanks(id)
{
if(!is_user_valid(id)) return 0;
if(!GameCMS_Account[id][IS_REG]) return 0;
return GameCMS_Account[id][THANKS];
}
/**
* Возвращает рейтинг игрока на сайте.
* @param id Индекс игрока
* @return Рейтинг или 0 если не зарегистрирован
*/
public gamecms_account_get_raiting(id)
{
if(!is_user_valid(id)) return 0;
if(!GameCMS_Account[id][IS_REG]) return 0;
return GameCMS_Account[id][RAIT];
}
/**
* Возвращает баланс денег игрока на сайте.
* @param id Индекс игрока
* @return Баланс в float или 0.0 если не зарегистрирован
*/
public Float:gamecms_account_get_money(id)
{
if(!is_user_valid(id)) return 0.0;
if(!GameCMS_Account[id][IS_REG]) return 0.0;
new Float:iMoney = cmsapi_get_user_money(id);
return iMoney;
}
/**
* Возвращает дату регистрации игрока на сайте.
* @param id Индекс игрока
* @return Строка с датой или пустая строка если не зарегистрирован
*/
public gamecms_account_get_regdata(id)
{
if(!is_user_valid(id)) return 0;
if(!GameCMS_Account[id][IS_REG]) return 0;
return GameCMS_Account[id][REG_DATA];
}
/**
* Возвращает URL сайта.
* @return Строка с URL сайта
*/
public gamecms_account_siteurl() return SiteUrl;