Как да си направим AdminPrefix!

Желаете модифициране на даден плъгин? Всичко това, както и още за езика Pawn само в този раздел!
User avatar
BonevB
Потребител
Потребител
Posts: 686
Joined: 05 Apr 2010, 13:15
CS Nick: BonevB
Favorite version: CS: 1.6
Location: Русе

Как да си направим AdminPrefix!

Post by BonevB »

Урока вече го има в Vbox7 и Youtube във видео формат. Може да го гледате на голям екран с HD качество.
Добър ден (за някой вечер или сутрин), в тази тема ще ви покажа как да си направите сами AdminPrefix. Нека започнем, отдолу съм прикачил AdminPrefix.sma файла, който е направен от kostov и Dark_StyLe и на който ще базирам целия урок.

Когато отворим плъгина ще видим следния код.

Code: Select all

#include <amxmodx> - модул (главния модул, на който се базират всички плъгини)
#include <amxmisc> - модул (проверява дали даден потребител е админ)

#define VERSION    "3.0" - Версията на плъгина.

// Admin Prefix One
#define FLAGADMINONE ADMIN_LEVEL_A - Това е нашия левел, който трябва да е админа, за да носи този ранг в случая флаг "m".
#define PREFIXADMINONE "Admin Prefix One" - Името на ранг-а.

// Admin Prefix Two
#define FLAGADMINTWO ADMIN_LEVEL_B -  Това е нашия левел, който трябва да е админа, за да носи този ранг в случая флаг "n".
#define PREFIXADMINTWO "Admin Prefix Two" - Името на ранг-а.

// VIP Prefix
#define FLAGADMINVIP ADMIN_LEVEL_C - Това е нашия левел, който трябва да е админа, за да носи този ранг в случая флаг "о".
#define PREFIXADMINVIP "VIP Prefix" - Името на ранг-а.

// SMS Prefix
#define FLAGADMINSMS ADMIN_LEVEL_D - Това е нашия левел, който трябва да е админа, за да носи този ранг в случая флаг "p".
#define PREFIXADMINSMS "SMS Prefix" - Името на ранг-а.
Нагласяте си го както искате и компилирате. Най-вероятно вие ще искате повече от 4-те оригинални ранг-а и аз ще ви го покажа как да го направите.
Tака ето го и кода :

Code: Select all

#include <amxmodx> - модул (главния модул, на който се базират всички плъгини)
#include <amxmisc> - модул (проверява дали даден потребител е админ)

#define VERSION    "3.0" - Версията на плъгина.

// Admin Prefix One
#define FLAGADMINONE ADMIN_LEVEL_A - Това е нашия левел, който трябва да е админа, за да носи този ранг в случая флаг "m".
#define PREFIXADMINONE "Admin Prefix One" - Името на ранг-а.

// Admin Prefix Two
#define FLAGADMINTWO ADMIN_LEVEL_B -  Това е нашия левел, който трябва да е админа, за да носи този ранг в случая флаг "n".
#define PREFIXADMINTWO "Admin Prefix Two" - Името на ранг-а.

// VIP Prefix
#define FLAGADMINVIP ADMIN_LEVEL_C - Това е нашия левел, който трябва да е админа, за да носи този ранг в случая флаг "о".
#define PREFIXADMINVIP "VIP Prefix" - Името на ранг-а.

// SMS Prefix
#define FLAGADMINSMS ADMIN_LEVEL_D - Това е нашия левел, който трябва да е админа, за да носи този ранг в случая флаг "p".
#define PREFIXADMINSMS "SMS Prefix" - Името на ранг-а.

//AdminPrefixThree
#define FLAGADMINTHREE ADMIN_LEVEL_E - Това е нашият нов 5-ти ранг и той е с флаг "q".
#define PREFIXADMINTHREE "Admin Prefix Three" - Името на новия ни ранг.

new AdminPrefixOne, AdminPrefixTwo, SmsPrefix, VipPrefix, AdminPrefixThree; - Това са cvar's и сме добавили нашия.
new SzMaxPlayers, SzSayText;

new SzGTeam[3][] = {
    "Spectator",
    "Terrorist",
    "Counter-Terrorist"
}

public plugin_init()
{
    register_plugin("Admin Prefix And Chat Color", VERSION, "kostov,Dark_Style");
    
    // Cvars Plugins
    AdminPrefixOne = register_cvar("show_admin_prefix_one", "1");
    AdminPrefixTwo = register_cvar("show_admin_prefix_two", "1");
    SmsPrefix      = register_cvar("show_sms_admin_prefix", "1");
    VipPrefix      = register_cvar("show_vip_admin_prefix", "1");
    AdminPrefixThree = register_cvar("show_admin_prefix_three", "1") - Toва е нашия нов cvar
    
    register_cvar("admin_prefix_version",    VERSION, FCVAR_SERVER|FCVAR_SPONLY);
    set_cvar_string("admin_prefix_version",    VERSION);
    register_clcmd("say", "hook_say");
    register_clcmd("say_team", "hook_say_team");
    
    SzSayText = get_user_msgid ("SayText");
    SzMaxPlayers = get_maxplayers();
    
    register_message(SzSayText, "MsgDuplicate");
}

public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public hook_say(id)
{
    new SzMessages[192], SzName[32];
    new SzAlive = is_user_alive(id);
    new SzGetFlag = get_user_flags(id);
    
    read_args(SzMessages, 191);
    remove_quotes(SzMessages);
    get_user_name(id, SzName, 31);
    
    if(!is_valid_msg(SzMessages))
        return PLUGIN_CONTINUE;
    
    if(get_pcvar_num(AdminPrefixOne) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
   else if(get_pcvar_num(AdminPrefixThree) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages)); Toва добавяме ние като условие ако сме живи.
    else if(get_pcvar_num(AdminPrefixOne) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
   else if(get_pcvar_num(AdminPrefixThree) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages)); Toва добавяме ние като условие ако сме мъртви.

    for(new i = 1; i <= SzMaxPlayers; i++)
        {
            if(!is_user_connected(i))
                continue;
        
            if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
                {
                    message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
                    write_byte(id);
                    write_string(SzMessages);
                    message_end();
                }
        }

    return PLUGIN_CONTINUE;
}

public hook_say_team(id){
    new SzMessages[192], SzName[32];
    new SzAlive = is_user_alive(id);
    new SzGetFlag = get_user_flags(id);
    new SzGetTeam = get_user_team(id);

    read_args(SzMessages, 191);
    remove_quotes(SzMessages);
    get_user_name(id, SzName, 31);
    
    if(!is_valid_msg(SzMessages))
        return PLUGIN_CONTINUE;
    
    if(get_pcvar_num(AdminPrefixOne) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
   else if(get_pcvar_num(AdminPrefixThree) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages)); - Toва добавяме ние като условие ако сме живи.
    else if(get_pcvar_num(AdminPrefixOne) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixThree) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages)); - Toва добавяме ние като условие като сме мъртви.
    
    for(new i = 1; i <= SzMaxPlayers; i++)
        {
            if(!is_user_connected(i))
                continue;
            
            if(get_user_team(i) != SzGetTeam)
                continue;
            
            if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
                {
                    message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
                    write_byte(id);
                    write_string(SzMessages);
                    message_end();
                }
        }

    return PLUGIN_CONTINUE;
}


bool:is_valid_msg(const SzMessages[]){
    if( SzMessages[0] == '@'
    || !strlen(SzMessages)){ return false; }
    return true;
}  
Ще ви направя нещо като легенда какво добавяме, защото дори аз много много не разбрах какво съм написал. :D Като цяло трябва да гледате самия код, защото там съм писал, но все пак и тук начисто ще ви кажа какво съм написал т.е. легенда.

Отначало сме добавили тези редове т.е. нов ранг :

Code: Select all

//AdminPrefixThree
#define FLAGADMINTHREE ADMIN_LEVEL_E 
#define PREFIXADMINTHREE "Admin Prefix Three" 
След това добавяме нашия нов cvar т.е. ранга :

Code: Select all

new AdminPrefixOne, AdminPrefixTwo, SmsPrefix, VipPrefix, AdminPrefixThree; 
Като добавяме нов cvar задължително зад него трябва да има ";".

След това трябва да регистрираме нашия нов cvar, намираме следните редове :

Code: Select all

// Cvars Plugins
    AdminPrefixOne = register_cvar("show_admin_prefix_one", "1");
    AdminPrefixTwo = register_cvar("show_admin_prefix_two", "1");
    SmsPrefix      = register_cvar("show_sms_admin_prefix", "1");
    VipPrefix      = register_cvar("show_vip_admin_prefix", "1");
... и към тях добавяме нашия нов cvar :

Code: Select all

// Cvars Plugins
    AdminPrefixOne = register_cvar("show_admin_prefix_one", "1");
    AdminPrefixTwo = register_cvar("show_admin_prefix_two", "1");
    SmsPrefix      = register_cvar("show_sms_admin_prefix", "1");
    VipPrefix      = register_cvar("show_vip_admin_prefix", "1");
    AdminPrefixThree = register_cvar("show_admin_prefix_three", "1") 
Ако случайно искаме да изключим някой ранг 1-та я правим на 0-ла и така дефакто спираме ранга.

Сега следва да добавим условието при което да се добавят нашия ранг, намираме следните редове :

Code: Select all

  if(get_pcvar_num(AdminPrefixOne) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
else if(get_pcvar_num(AdminPrefixOne) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
... и добавяме нашия ново условие като под VipPrefix-а усливето добавяме тези редове :

Code: Select all

else if(get_pcvar_num(AdminPrefixThree) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages)); 

и най-отдолу отново под VipPrefix-a добавяме това :

else if(get_pcvar_num(AdminPrefixThree) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
Трябва да изглежда така :

Code: Select all

if(get_pcvar_num(AdminPrefixOne) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixThree) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages)); 
    else if(get_pcvar_num(AdminPrefixOne) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixThree) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
След това намираме отново същите редове, но те са за друго условие, но това условие е ако използваме на say_team или като натиснем "u" пак повтаряме същата операция.

Нашият код трябва да изглежда така :

Code: Select all

#include <amxmodx> 
#include <amxmisc> 

#define VERSION    "3.0" 

// Admin Prefix One
#define FLAGADMINONE ADMIN_LEVEL_A 
#define PREFIXADMINONE "Admin Prefix One"

// Admin Prefix Two
#define FLAGADMINTWO ADMIN_LEVEL_B 
#define PREFIXADMINTWO "Admin Prefix Two" 

// VIP Prefix
#define FLAGADMINVIP ADMIN_LEVEL_C 
#define PREFIXADMINVIP "VIP Prefix"

// SMS Prefix
#define FLAGADMINSMS ADMIN_LEVEL_D 
#define PREFIXADMINSMS "SMS Prefix" 

//AdminPrefixThree
#define FLAGADMINTHREE ADMIN_LEVEL_E 
#define PREFIXADMINTHREE "Admin Prefix Three" 

new AdminPrefixOne, AdminPrefixTwo, SmsPrefix, VipPrefix, AdminPrefixThree; 
new SzMaxPlayers, SzSayText;

new SzGTeam[3][] = {
    "Spectator",
    "Terrorist",
    "Counter-Terrorist"
}

public plugin_init()
{
    register_plugin("Admin Prefix And Chat Color", VERSION, "kostov,Dark_Style");
    
    // Cvars Plugins
    AdminPrefixOne = register_cvar("show_admin_prefix_one", "1");
    AdminPrefixTwo = register_cvar("show_admin_prefix_two", "1");
    SmsPrefix      = register_cvar("show_sms_admin_prefix", "1");
    VipPrefix      = register_cvar("show_vip_admin_prefix", "1");
    AdminPrefixThree = register_cvar("show_admin_prefix_three", "1") 
    
    register_cvar("admin_prefix_version",    VERSION, FCVAR_SERVER|FCVAR_SPONLY);
    set_cvar_string("admin_prefix_version",    VERSION);
    register_clcmd("say", "hook_say");
    register_clcmd("say_team", "hook_say_team");
    
    SzSayText = get_user_msgid ("SayText");
    SzMaxPlayers = get_maxplayers();
    
    register_message(SzSayText, "MsgDuplicate");
}

public MsgDuplicate(id){ return PLUGIN_HANDLED; }

public hook_say(id)
{
    new SzMessages[192], SzName[32];
    new SzAlive = is_user_alive(id);
    new SzGetFlag = get_user_flags(id);
    
    read_args(SzMessages, 191);
    remove_quotes(SzMessages);
    get_user_name(id, SzName, 31);
    
    if(!is_valid_msg(SzMessages))
        return PLUGIN_CONTINUE;
    
    if(get_pcvar_num(AdminPrefixOne) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixThree) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages)); 
    else if(get_pcvar_num(AdminPrefixOne) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixThree) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));

    for(new i = 1; i <= SzMaxPlayers; i++)
        {
            if(!is_user_connected(i))
                continue;
        
            if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
                {
                    message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
                    write_byte(id);
                    write_string(SzMessages);
                    message_end();
                }
        }

    return PLUGIN_CONTINUE;
}

public hook_say_team(id){
    new SzMessages[192], SzName[32];
    new SzAlive = is_user_alive(id);
    new SzGetFlag = get_user_flags(id);
    new SzGetTeam = get_user_team(id);

    read_args(SzMessages, 191);
    remove_quotes(SzMessages);
    get_user_name(id, SzName, 31);
    
    if(!is_valid_msg(SzMessages))
        return PLUGIN_CONTINUE;
    
    if(get_pcvar_num(AdminPrefixOne) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && SzGetFlag & FLAGADMINTWO)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTWO, SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && SzGetFlag & FLAGADMINSMS)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINSMS, SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && SzGetFlag & FLAGADMINVIP)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINVIP, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixThree) && SzGetFlag & FLAGADMINTHREE)(SzAlive ? format(SzMessages, 191, "^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINTHREE, SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixOne) && !(SzGetFlag & FLAGADMINONE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixTwo) && !(SzGetFlag & FLAGADMINTWO))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(SmsPrefix) && !(SzGetFlag & FLAGADMINSMS))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(VipPrefix) && !(SzGetFlag & FLAGADMINVIP))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    else if(get_pcvar_num(AdminPrefixThree) && !(SzGetFlag & FLAGADMINTHREE))(SzAlive ? format(SzMessages, 191, "^3%s : ^1%s", SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^3%s : ^1%s", SzName, SzMessages));
    
    for(new i = 1; i <= SzMaxPlayers; i++)
        {
            if(!is_user_connected(i))
                continue;
            
            if(get_user_team(i) != SzGetTeam)
                continue;
            
            if(SzAlive && is_user_alive(i) || !SzAlive && !is_user_alive(i))
                {
                    message_begin(MSG_ONE, get_user_msgid("SayText"), {0, 0, 0}, i);
                    write_byte(id);
                    write_string(SzMessages);
                    message_end();
                }
        }

    return PLUGIN_CONTINUE;
}


bool:is_valid_msg(const SzMessages[]){
    if( SzMessages[0] == '@'
    || !strlen(SzMessages)){ return false; }
    return true;
}  
Ако искаме да добавим нов ранг повтаряме същата операция, отгоре добавяме ранг-а, след това cvar-а, регистрираме го, слагаме условията при "say" и при "say_team" и сме готови, компилираме плъгина и се радваме на рангове. :)

Надявам се да съм ви бил полезен, ако все пак не сте разбрали как да си го направите може да пишете тук.

A-a-a забравих да обясня, кои флагове може да използвате т.е. може всички да изпозлвате, но се предпочитат тези :

Code: Select all

m - custom level A 
n - custom level B
o - custom level C
p - custom level D
q - custom level E
r - custom level F
s - custom level G
t - custom level H
Виждате левелите, които са на флаговете. Ако искате обаче да сложите флаг примерно за бан трябва да направите отгоре ранга да изглежда така :

Code: Select all

// Admin Prefix One
#define FLAGADMINONE ADMIN_BAN
#define PREFIXADMINONE "Admin Prefix One"
Както виждате нямаме ADMIN_LEVEL_... a имаме директно функцията, която е флага т.е. бан.

Ще ви покажа как да си смените цвета, с който да Ви се показва AdminPrefix-а. Oт сега казвам, със системата за colorchat, която е използвана има само 3 алтернативи за цвят. Нека започнем -

Първо ще ви обясна, кои са цветовете и къде се слагат те.

^1 - обикновения цвят на чат съобщенията.
^3 - отборния цвят син/червен.
^4 - зелен цвят.

Това са цветовете, които можем да използваме в плъгина. Цветовете, които са зададени в самия плъгин от автора са следните :

Зелен за Prefix-а, отборен цвят за името на играча и зелен за съобщението. Когато сте мъртви "*DEAD*" e в обикновен чат цвят, зелен за Prefix-а, отборен цвят за името и зелен за съобщението.

Нека сменим нашият цвят :

Code: Select all

if(get_pcvar_num(AdminPrefixOne) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^3[%s] ^4%s : ^1%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
Аз ще сменя Prefix-а да е с отборния цвят, а името със зелено и съобщението с обикновен цвят, а когато сте мъртъв ще го оставя по default. Това е г/д това което трябва да знаете, но ПРЕПОРЪЧИТЕЛНО е цветовете при /say т.е. първите такива съобщения да са еднакви с тези от /say_team.
Урокът е писан от мен (Flare) специално за CS-BG.INFo и ЗАБРАНЯВАМ копирането му в различни сайтове и форуми!
Attachments
prefix.rar
(1.41 KiB) Downloaded 1935 times
Last edited by BonevB on 26 Jul 2011, 14:33, edited 1 time in total.
User avatar
Sadd Facee
Потребител
Потребител
Posts: 71
Joined: 08 Aug 2010, 08:49
CS Nick: Sex4fum
Favorite version: CS: 1.6

Re: Как да си направим AdminPrefix!

Post by Sadd Facee »

При положение че има тема за поръчки за префикски... Но все пак урока е полезен :)
User avatar
BonevB
Потребител
Потребител
Posts: 686
Joined: 05 Apr 2010, 13:15
CS Nick: BonevB
Favorite version: CS: 1.6
Location: Русе

Re: Как да си направим AdminPrefix!

Post by BonevB »

И? Аз какво да направя, че ти или други хора не искат да обогатят знанията си малко в скриптирането. Аз лично предпочитам сам да направя нещо, вместо да чакам някой друг да ми го направи. Дори да не мога да го направя знам, че съм опитал, а някой хора дори и това не правят. :)
User avatar
Sadd Facee
Потребител
Потребител
Posts: 71
Joined: 08 Aug 2010, 08:49
CS Nick: Sex4fum
Favorite version: CS: 1.6

Re: Как да си направим AdminPrefix!

Post by Sadd Facee »

Прав си :o
User avatar
BonevB
Потребител
Потребител
Posts: 686
Joined: 05 Apr 2010, 13:15
CS Nick: BonevB
Favorite version: CS: 1.6
Location: Русе

Re: Как да си направим AdminPrefix!

Post by BonevB »

Ще ви покажа как да си смените цвета, с който да Ви се показва AdminPrefix-а. Oт сега казвам, със системата за colorchat, която е използвана има само 3 алтернативи за цвят. Нека започнем -

Първо ще ви обясна, кои са цветовете и къде се слагат те.

^1 - обикновения цвят на чат съобщенията.
^3 - отборния цвят син/червен.
^4 - зелен цвят.

Това са цветовете, които можем да използваме в плъгина. Цветовете, които са зададени в самия плъгин от автора са следните :

Зелен за Prefix-а, отборен цвят за името на играча и зелен за съобщението. Когато сте мъртви "*DEAD*" e в обикновен чат цвят, зелен за Prefix-а, отборен цвят за името и зелен за съобщението.

Нека сменим нашият цвят :

Code: Select all

if(get_pcvar_num(AdminPrefixOne) && SzGetFlag & FLAGADMINONE)(SzAlive ? format(SzMessages, 191, "^3[%s] ^4%s : ^1%s", PREFIXADMINONE, SzName, SzMessages) : format(SzMessages, 191, "^1*DEAD* ^4[%s] ^3%s : ^4%s", PREFIXADMINONE, SzName, SzMessages));
Аз ще сменя Prefix-а да е с отборния цвят, а името със зелено и съобщението с обикновен цвят, а когато сте мъртъв ще го оставя по default. Това е г/д това което трябва да знаете, но ПРЕПОРЪЧИТЕЛНО е цветовете при /say т.е. първите такива съобщения да са еднакви с тези от /say_team.
User avatar
extreemer
Потребител
Потребител
Posts: 139
Joined: 22 Oct 2010, 12:35
Favorite version: other

Re: Как да си направим AdminPrefix!

Post by extreemer »

Добър урок, Браво! Оценка 10! :o
Last edited by EnerGy on 28 Jul 2011, 14:38, edited 1 time in total.
Reason: Нарушена 7-ма точка от правилата!
User avatar
Gladiat0rBG
V.I.P
V.I.P
Posts: 24
Joined: 01 Aug 2011, 17:51
Favorite version: CS: 1.6

Re: Как да си направим AdminPrefix!

Post by Gladiat0rBG »

Урокът за мен бе полезен и ми помогна но имам един единствен въпрос когато направя сичко по мой начин примерно да не Head Admin а ми да променя нещата и не се променят моля ако някой му се занимава да ми помогне нека пише тук в темата.
Мерси за съдействието ;)
User avatar
BonevB
Потребител
Потребител
Posts: 686
Joined: 05 Apr 2010, 13:15
CS Nick: BonevB
Favorite version: CS: 1.6
Location: Русе

Re: Как да си направим AdminPrefix!

Post by BonevB »

Можеш ли да обясниш по-добре, защото не разбрах много.
User avatar
Fd_G0d
Потребител
Потребител
Posts: 4
Joined: 29 Jul 2010, 12:47

Re: Как да си направим AdminPrefix!

Post by Fd_G0d »

Нещо не стана незнам от какво е сигорно защото нямам amxx файл???
User avatar
DeviLeR
Потребител
Потребител
Posts: 292
Joined: 06 Jun 2009, 15:36
Favorite version: CS: 1.6
Steam Community ID: TheRealDeviLeR

Re: Как да си направим AdminPrefix!

Post by DeviLeR »

Ако имаш .sma, не ти трябва .amxx.
User avatar
Fd_G0d
Потребител
Потребител
Posts: 4
Joined: 29 Jul 2010, 12:47

Re: Как да си направим AdminPrefix!

Post by Fd_G0d »

Ами може ли да ми го направиш моляте
User avatar
DeviLeR
Потребител
Потребител
Posts: 292
Joined: 06 Jun 2009, 15:36
Favorite version: CS: 1.6
Steam Community ID: TheRealDeviLeR

Re: Как да си направим AdminPrefix!

Post by DeviLeR »

Има си тема, пусни си заявка там.
User avatar
FuTboLisTa
Потребител
Потребител
Posts: 9
Joined: 13 Aug 2011, 22:31
Skype: c.ronaldo_17_kz

Re: Как да си направим AdminPrefix!

Post by FuTboLisTa »

Добре де 3а други цветове 1,3,4 а за бял цвят как е числото
User avatar
BonevB
Потребител
Потребител
Posts: 686
Joined: 05 Apr 2010, 13:15
CS Nick: BonevB
Favorite version: CS: 1.6
Location: Русе

Re: Как да си направим AdminPrefix!

Post by BonevB »

Това не е бял цвят а сив и е 1. Бял цвят не мисля, че има в cs-а.
User avatar
FuTboLisTa
Потребител
Потребител
Posts: 9
Joined: 13 Aug 2011, 22:31
Skype: c.ronaldo_17_kz

Re: Как да си направим AdminPrefix!

Post by FuTboLisTa »

Пак не стана искам да е така но при мен само [Administrator] да е сиво и ника да е по подразбиране, а чата зелен
f63965b8750e3352.JPG
f63965b8750e3352.JPG (2.47 KiB) Viewed 18181 times
Locked

Return to “Scripting (Скриптиране)”