/* Fun functions * * by Numb & SKAJIbnEJIb * * This file is provided as is (no warranties). */ #if defined _colorchat_included #endinput #endif #define _colorchat_included enum Color { NORMAL = 1, // Стандартный цвет GREEN, // Зеленый TEAM_COLOR, // Цвет команды (красный, синий, серый) GREY, // Серый RED, // Красный BLUE, // Синий } new TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" } ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) { if(!get_playersnum()) return; new message[191]; switch(type) { case NORMAL: // Стандартный цвет message[0] = 0x01; case GREEN: // Зеленый message[0] = 0x04; default: // Цвет команды (красный, синий, серый) message[0] = 0x03; } vformat(message[1], 190, msg, 4); while(replace(message, charsmax(message), "!g", "^04")) { } while(replace(message, charsmax(message), "!t", "^03")) { } while(replace(message, charsmax(message), "!n", "^01")) { } // Make sure message is not longer than 192 character. Will crash the server. message[190] = '^0'; new team, ColorChange, index, MSG_Type; if(id) { MSG_Type = MSG_ONE; index = id; } else { index = FindPlayer(); MSG_Type = MSG_ALL; } team = get_user_team(index); ColorChange = ColorSelection(index, MSG_Type, type); ShowColorMessage(index, MSG_Type, message); if(ColorChange) Team_Info(index, MSG_Type, TeamName[team]); } ShowColorMessage(id, type, message[]) { static bool:saytext_used; static get_user_msgid_saytext; if(!saytext_used) { get_user_msgid_saytext = get_user_msgid("SayText"); saytext_used = true; } message_begin(type, get_user_msgid_saytext, _, id); write_byte(id) write_string(message); message_end(); } Team_Info(id, type, team[]) { static bool:teaminfo_used; static get_user_msgid_teaminfo; if(!teaminfo_used) { get_user_msgid_teaminfo = get_user_msgid("TeamInfo"); teaminfo_used = true; } message_begin(type, get_user_msgid_teaminfo, _, id); write_byte(id); write_string(team); message_end(); return 1; } ColorSelection(index, type, Color:Type) { switch(Type) { case RED: return Team_Info(index, type, TeamName[1]); case BLUE: return Team_Info(index, type, TeamName[2]); case GREY: return Team_Info(index, type, TeamName[0]); } return 0; } FindPlayer() { new i = -1; while(i <= get_maxplayers()) { if(is_user_connected(++i)) return i; } return -1; }