[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
Un fel de AMX WHO, gen public, vedeti pozele pentru a intelege
Pluginul a fost facut de aNNakin acum mult timp, eu nu am stiut ca era facut.
Pluginurile difera destul de mult, deci nu puteti zice ca l-am copiat de acolo, am luat apoi chestia cu citirea flagurilor in plugin_init.
Ramane la decizia voastra (moderator)(useri)(aNNakin) daca acest topic va ajunge la cos sau nu.
[sursa=CFG RangChat by aNNakin SMA]/* CFG RangChat made by aNNakin
CFG Community
Visit [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
*/
#include < amxmodx >
#include < amxmisc >
#define PLUGIN "CFG RangChat"
#define VERSION "1.0"
#define AUTHOR "aNNakin"
#define GROUPS 4
enum Color
{
NORMAL = 1,
GREEN,
TEAM_COLOR,
GREY,
RED,
BLUE,
}
new TeamName[ ][ ] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
// - - - - - - - - - - -
#define GROUPS 4
new const g_Flags[ GROUPS ][ ] =
{
"abcdefghijklmnopqrstu",
"abcdefghijkmnopqrstu",
"bcdefijmnpqrstu",
"b"
};
new const g_Groups[ GROUPS ][ ] =
{
"Owner",
"God",
"Helper",
"Slot"
};
// - - - - - - - - - - -
new g_FlagsValue[ GROUPS ];
new bool:g_IsConnected[ 33 ];
new SayText, TeamInfo, g_maxplayers;
public plugin_init ( )
{
register_plugin ( PLUGIN, VERSION, AUTHOR );
register_clcmd ( "say", "hook_say" );
for ( new i; i < GROUPS; i++ )
g_FlagsValue[ i ] = read_flags ( g_Flags[ i ] );
SayText = get_user_msgid ( "SayText" );
TeamInfo = get_user_msgid ( "TeamInfo" );
g_maxplayers = get_maxplayers ( );
}
public client_putinserver ( e_Index ) g_IsConnected[ e_Index ] = true;
public client_disconnect ( e_Index ) g_IsConnected[ e_Index ] = false;
public hook_say ( e_Index )
{
static s_Said[ 192 ];
read_args ( s_Said, charsmax ( s_Said ) );
if ( equal ( s_Said, "" ) )
return PLUGIN_CONTINUE;
remove_quotes ( s_Said );
static s_Name[ 32 ], i;
get_user_name ( e_Index, s_Name, 31 );
for ( i = 0; i < GROUPS; i++ )
if ( get_user_flags ( e_Index ) == g_FlagsValue[ i ] )
{
ColorChat ( 0, TEAM_COLOR, "^x03%s^x01 (^x04%s^x01): %s", s_Name, g_Groups[ i ], s_Said );
break;
}
return ( i < GROUPS ) ? PLUGIN_HANDLED : PLUGIN_CONTINUE;
}
public ColorChat ( id, Color:type, const msg[], { Float, Sql, Result, _ }:... )
{
static message[ 256 ];
switch ( type )
{
case NORMAL:
message[ 0 ] = 0x01;
case GREEN:
message[ 0 ] = 0x04;
default:
message[ 0 ] = 0x03;
}
vformat ( message[ 1 ], 251, msg, 4 );
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[] )
{
message_begin ( type, SayText, _, id );
write_byte ( id )
write_string ( message );
message_end ( );
}
Team_Info ( id, type, team[] )
{
message_begin ( type, 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;
}
public FindPlayer ( )
{
for ( new i = 1; i <= g_maxplayers; i++ )
if ( g_IsConnected[ i ] )
return i;
return -1;
}[/sursa]
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
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:
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
amx_rang_chat 1
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
amx_rang_chat 2
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
amx_rang_chat 3
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
[size=200]PLUGINUL TREBUIE MEREU SA FIE ULTIMUL IN LISTA
Daca aveti GHOSTCHAT sau ALLCHAT trebuie scos[/size]
[sursa=SURSA]
[size=150]TUTORIAL[/size]
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 "
Un fel de AMX WHO, gen public, vedeti pozele pentru a intelege
Pluginul a fost facut de aNNakin acum mult timp, eu nu am stiut ca era facut.
Pluginurile difera destul de mult, deci nu puteti zice ca l-am copiat de acolo, am luat apoi chestia cu citirea flagurilor in plugin_init.
Ramane la decizia voastra (moderator)(useri)(aNNakin) daca acest topic va ajunge la cos sau nu.
[sursa=CFG RangChat by aNNakin SMA]/* CFG RangChat made by aNNakin
CFG Community
Visit [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
*/
#include < amxmodx >
#include < amxmisc >
#define PLUGIN "CFG RangChat"
#define VERSION "1.0"
#define AUTHOR "aNNakin"
#define GROUPS 4
enum Color
{
NORMAL = 1,
GREEN,
TEAM_COLOR,
GREY,
RED,
BLUE,
}
new TeamName[ ][ ] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
// - - - - - - - - - - -
#define GROUPS 4
new const g_Flags[ GROUPS ][ ] =
{
"abcdefghijklmnopqrstu",
"abcdefghijkmnopqrstu",
"bcdefijmnpqrstu",
"b"
};
new const g_Groups[ GROUPS ][ ] =
{
"Owner",
"God",
"Helper",
"Slot"
};
// - - - - - - - - - - -
new g_FlagsValue[ GROUPS ];
new bool:g_IsConnected[ 33 ];
new SayText, TeamInfo, g_maxplayers;
public plugin_init ( )
{
register_plugin ( PLUGIN, VERSION, AUTHOR );
register_clcmd ( "say", "hook_say" );
for ( new i; i < GROUPS; i++ )
g_FlagsValue[ i ] = read_flags ( g_Flags[ i ] );
SayText = get_user_msgid ( "SayText" );
TeamInfo = get_user_msgid ( "TeamInfo" );
g_maxplayers = get_maxplayers ( );
}
public client_putinserver ( e_Index ) g_IsConnected[ e_Index ] = true;
public client_disconnect ( e_Index ) g_IsConnected[ e_Index ] = false;
public hook_say ( e_Index )
{
static s_Said[ 192 ];
read_args ( s_Said, charsmax ( s_Said ) );
if ( equal ( s_Said, "" ) )
return PLUGIN_CONTINUE;
remove_quotes ( s_Said );
static s_Name[ 32 ], i;
get_user_name ( e_Index, s_Name, 31 );
for ( i = 0; i < GROUPS; i++ )
if ( get_user_flags ( e_Index ) == g_FlagsValue[ i ] )
{
ColorChat ( 0, TEAM_COLOR, "^x03%s^x01 (^x04%s^x01): %s", s_Name, g_Groups[ i ], s_Said );
break;
}
return ( i < GROUPS ) ? PLUGIN_HANDLED : PLUGIN_CONTINUE;
}
public ColorChat ( id, Color:type, const msg[], { Float, Sql, Result, _ }:... )
{
static message[ 256 ];
switch ( type )
{
case NORMAL:
message[ 0 ] = 0x01;
case GREEN:
message[ 0 ] = 0x04;
default:
message[ 0 ] = 0x03;
}
vformat ( message[ 1 ], 251, msg, 4 );
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[] )
{
message_begin ( type, SayText, _, id );
write_byte ( id )
write_string ( message );
message_end ( );
}
Team_Info ( id, type, team[] )
{
message_begin ( type, 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;
}
public FindPlayer ( )
{
for ( new i = 1; i <= g_maxplayers; i++ )
if ( g_IsConnected[ i ] )
return i;
return -1;
}[/sursa]
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
- pluginul contine ghostchat, asa ca nu mai trebuie plugine gen ghostchat sau allchat
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
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:
- Cod:
rang_admin_chat.amxx
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
amx_rang_chat 1
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
amx_rang_chat 2
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
amx_rang_chat 3
[Trebuie sa fiti înscris şi conectat pentru a vedea această imagine]
[size=200]PLUGINUL TREBUIE MEREU SA FIE ULTIMUL IN LISTA
Daca aveti GHOSTCHAT sau ALLCHAT trebuie scos[/size]
[sursa=SURSA]
- Cod:
#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;
}
[size=150]TUTORIAL[/size]
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 "
- Cod:
#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"
};