PHP Code:
#include <amxmodx>
#include <chatmanager>
#include <nvault>
#define PLUGIN_VERSION "4.1"
#define SetBit(%1,%2) (%1 |= (1<<%2))
#define ClearBit(%1,%2) (%1 &= ~(1<<%2))
#define CheckBit(%1,%2) (%1 & (1<<%2))
new vault, value[MAX_PLAYERS + 1]
enum
{
CM_MENU_ITEM_PREFIX,
CM_MENU_ITEM_CHAT_COLOR,
CM_MENU_ITEM_CUSTOM_NAME
}
public plugin_init()
{
register_plugin("CM: Toggle Chat", PLUGIN_VERSION, "OciXCrom")
register_cvar("CRXCMToggleChat", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_dictionary("ChatManager.txt")
register_clcmd("say /cm", "Menu_Display")
register_clcmd("say_team /cm", "Menu_Display")
vault = nvault_open("chatmanager")
}
public plugin_end()
{
nvault_close(vault);
}
public Menu_Display(id)
{
new szText[128], szItem[128]
formatex(szText, charsmax(szText), "%L", id, "CM_MENU_TITLE")
new iMenu = menu_create(szText, "Menu_Handler")
cm_get_user_prefix(id, szText, charsmax(szText))
check_validity(szText, charsmax(szText))
formatex(szItem, charsmax(szItem), "%L %L%s", id, "CM_MENU_PREFIX", id, cm_get_user_prefix_status(id) ? "CM_MENU_ENABLED" : "CM_MENU_DISABLED", szText)
menu_additem(iMenu, szItem)
cm_get_user_chat_color(id, szText, charsmax(szText))
check_validity(szText, charsmax(szText))
formatex(szItem, charsmax(szItem), "%L %L%s", id, "CM_MENU_CHAT_COLOR", id, cm_get_user_chat_color_status(id) ? "CM_MENU_ENABLED" : "CM_MENU_DISABLED", szText)
menu_additem(iMenu, szItem)
cm_get_user_custom_name(id, szText, charsmax(szText))
check_validity(szText, charsmax(szText))
formatex(szItem, charsmax(szItem), "%L %L%s", id, "CM_MENU_CUSTOM_NAME", id, cm_get_user_custom_name_status(id) ? "CM_MENU_ENABLED" : "CM_MENU_DISABLED", szText)
menu_additem(iMenu, szItem)
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public Menu_Handler(id, iMenu, iItem)
{
switch(iItem)
{
case MENU_EXIT:
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
case CM_MENU_ITEM_PREFIX:
{
cm_set_user_prefix_status(id, !cm_get_user_prefix_status(id))
cm_get_user_prefix_status(id) ? SetBit(value[id], CM_MENU_ITEM_PREFIX) : ClearBit(value[id], CM_MENU_ITEM_PREFIX)
}
case CM_MENU_ITEM_CHAT_COLOR:
{
cm_set_user_chat_color_status(id, !cm_get_user_chat_color_status(id))
cm_get_user_chat_color_status(id) ? SetBit(value[id], CM_MENU_ITEM_CHAT_COLOR) : ClearBit(value[id], CM_MENU_ITEM_CHAT_COLOR)
}
case CM_MENU_ITEM_CUSTOM_NAME:
{
cm_set_user_custom_name_status(id, !cm_get_user_custom_name_status(id))
cm_get_user_custom_name_status(id) ? SetBit(value[id], CM_MENU_ITEM_CUSTOM_NAME) : ClearBit(value[id], CM_MENU_ITEM_CUSTOM_NAME)
}
}
menu_destroy(iMenu)
Menu_Display(id)
return PLUGIN_HANDLED
}
check_validity(szText[], const iLen)
{
if(szText[0])
format(szText, iLen, "\d: %s", szText)
}
public client_authorized(id, const authid[])
{
value[id] = nvault_get(vault, authid)
cm_set_user_prefix_status(id, bool:CheckBit(value[id], CM_MENU_ITEM_PREFIX))
cm_set_user_chat_color_status(id, bool:CheckBit(value[id], CM_MENU_ITEM_CHAT_COLOR))
cm_set_user_custom_name_status(id, bool:CheckBit(value[id], CM_MENU_ITEM_CUSTOM_NAME))
}
public client_disconnected(id)
{
new authid[32]
get_user_authid(id, authid, 31)
nvault_set(vault, authid, fmt("%d", value[id]))
}