[AMXX] RangAdminChat [v.0.6]
Un fel de AMX WHO, gen public, vedeti pozele pentru a intelege
- pluginul contine ghostchat, asa ca nu mai trebuie plugine gen ghostchat sau allchat
Instalare:
1. Fisierul rang_admin_chat.sma il puneti in addons/amxmodx/scripting
2. Fisierul rang_admin_chat.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la sfarsitul fisierului:
Codice:
rang_admin_chat.amxx
amx_rang_chat 1
amx_rang_chat 2
amx_rang_chat 3
PLUGINUL TREBUIE MEREU SA FIE ULTIMUL IN LISTA
Daca aveti GHOSTCHAT sau ALLCHAT trebuie scos
Codice PHP:
#include <amxmodx> #include <amxmisc>
#pragma semicolon 1
enum Color { NORMAL = 1, // clients scr_concolor cvar color GREEN, // Green Color TEAM_COLOR, // Red, grey, blue GREY, // grey RED, // Red BLUE, // Blue };
new TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" };
// - - - - - - - - - - -
#define MAX_GROUPS 7
new g_Rang[MAX_GROUPS][] = { "OwneR", "GooD", "Semi-GooD", "ModeratoR", "AdminiStratoR", "AjutoaRe", "SloT" };
new g_RangFlag[MAX_GROUPS][] = { "abcdefghijklmnopqrstu", "abcdefijklmnopqrst", "bcdefijkmnopqrst", "bcdefijkmno", "bcdefijk", "bcijef", "b" };
// - - - - - - - - - - -
new g_RangFlag_Value[MAX_GROUPS];
new cvar_type;
public plugin_init() { register_plugin("RangAdminChat", "0.6", "Ex3cuTioN"); register_clcmd("say","hook_say"); register_clcmd("say_team","hook_say2"); for(new i=0; i<MAX_GROUPS; i++) { g_RangFlag_Value[i] = read_flags(g_Rang[i]); } cvar_type = register_cvar("amx_rang_chat","1"); }
public hook_say(id) { if(is_user_bot(id)) { return PLUGIN_CONTINUE; } new nick[32]; get_user_name(id,nick,31); static chat[192]; read_args(chat, sizeof(chat) - 1); remove_quotes(chat); if(equali(chat,"")) { return PLUGIN_CONTINUE; } if(is_user_admin(id)) { for(new i=0; i<MAX_GROUPS; i++) { if(get_user_flags(id) == read_flags(g_RangFlag[i])) { switch(get_pcvar_num(cvar_type)) { case 1: { ColorChat(0,TEAM_COLOR,"*^x04%s^x03*%s^x01 : %s",g_Rang[i],nick,chat); } case 2: { ColorChat(0,TEAM_COLOR,"%s^x01(^x04%s^x01) : %s",nick,g_Rang[i],chat); } case 3: { ColorChat(0,GREEN,"[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat); } } return PLUGIN_HANDLED; } } } else { if(is_user_alive(id)) { ColorChat(0,TEAM_COLOR,"%s^x01 : %s",nick,chat); } else { ColorChat(0,TEAM_COLOR,"*Dead*%s^x01 : %s",nick,chat); } return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public hook_say2(id) { if(is_user_bot(id)) { return PLUGIN_CONTINUE; } new nick[32]; get_user_name(id,nick,31); static chat[192]; read_args(chat, sizeof(chat) - 1); remove_quotes(chat); if(equali(chat,"")) { return PLUGIN_CONTINUE; } if(is_user_admin(id)) { for(new i=0; i<MAX_GROUPS; i++) { if(get_user_flags(id) == read_flags(g_RangFlag[i])) { new players[32],num; get_players(players,num,"c"); for(new x=0; x<num; x++) { if(get_user_team(id) == get_user_team(players[x])) { switch(get_user_team(id)) { case 1: { ColorChat(players[x],TEAM_COLOR,"(Terrorist)^x04[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat); } case 2: { ColorChat(players[x],TEAM_COLOR,"(Counter-Terrorist)^x04[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat); } case 3: { ColorChat(players[x],TEAM_COLOR,"(Spectator)^x04[%s]^x03 %s^x01 : %s",g_Rang[i],nick,chat); } } } return PLUGIN_HANDLED; } } } } else { new players[32],num; get_players(players,num,"c"); for(new x=0; x<num; x++) { if(get_user_team(id) == get_user_team(players[x])) { switch(get_user_team(id)) { case 1: { ColorChat(players[x],TEAM_COLOR,"(Terrorist) %s^x01 : %s",nick,chat); } case 2: { ColorChat(players[x],TEAM_COLOR,"(Counter-Terrorist) %s^x01 : %s",nick,chat); } case 3: { ColorChat(players[x],TEAM_COLOR,"(Spectator) %s^x01 : %s",nick,chat); } } } return PLUGIN_HANDLED; } } return PLUGIN_CONTINUE; }
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) { new message[256];
switch(type) { case NORMAL: // clients scr_concolor cvar color { message[0] = 0x01; } case GREEN: // Green { message[0] = 0x04; } default: // White, Red, Blue { message[0] = 0x03; } }
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server. message[192] = '^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; }
TUTORIAL
Intrati in fisierul cu extensia .SMA si aveti 2 categorii (1 ranguri) (1 flaguri)
Acolo aveti un model cu 9 ranguri si 9 flaguri.
Daca veti avea sa zicem 10 ranguri si 10 flaguri modificati MAX_GROUPS cu 10.
Fiti atenti:ultimul rang/flag nu trebuie sa aibe , dupa "
Codice:
#define MAX_GROUPS 9
new g_Rang[MAX_GROUPS][] = {
"Detinator",
"Co-Owner",
"Amiral",
"Maresal",
"General",
"Colonel",
"Maior",
"Sergent",
"Soldat"
};
new g_RangFlag[MAX_GROUPS][] = {
"abcdefghijklmnopqrstu",
"abcdefghijklmnopqrst",
"bcdefghijklmnopqrt",
"bcdefgijklmnopqrs",
"bcdefgijlmnopqrt",
"bcdefgijmnopqr",
"bcdefgijmnop",
"bcefijmn",
"b"
};
YAY! I'VE GOT RAINBOW COLOR SIGNATURE CRAP
|