4en3rgY Romania
RangAdminChat [v.0.6] 2z8bv910
Welcome To 4EN3RGY Romania
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!

4en3rgY Romania


Nu sunteti conectat. Conectați-vă sau înregistrați-vă

RangAdminChat [v.0.6]

Vezi subiectul anterior Vezi subiectul urmator In jos  Mesaj [Pagina 1 din 1]

1RangAdminChat [v.0.6] Empty RangAdminChat [v.0.6] Sam 09 Apr 2011, 22:38

Viorel

ViorelFondator

[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]

    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;
}
[/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 "

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"
};

Vezi subiectul anterior Vezi subiectul urmator Sus  Mesaj [Pagina 1 din 1]

Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum

 

Copyright @ 2010-2024 by 4en3rgY ~> All rights reserved.