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

Желаете модифициране на даден плъгин? Всичко това, както и още за езика Pawn само в този раздел!
User avatar
Ganew
Потребител
Потребител
Posts: 435
Joined: 30 Nov 2011, 18:09
Skype: r3mix.babyy

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

Post by Ganew »

naHuk wrote:При останалите вместо ADMIN_LEVEL_A,B,C.. пишеш функцията на дадения флаг например : ADMIN_LEVEL_BAN , ADMIN_LEVEL_KICK ...
Здравей, няма как да стане така както ти казваш ADMIN_LEVEL_BAN или ADMIN_LEVEL_KICK и т.н. Трябва да стане така ADMIN_KICK, ADMIN_BAN и т.н. ;)
User avatar
mimodev
Потребител
Потребител
Posts: 20
Joined: 12 Feb 2013, 10:51
Skype: tyrnene_cyti
CS Nick: Mimo
Favorite version: CS: 1.6
Location: Bulgaria
Contact:

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

Post by mimodev »

Добре а защо показва съобщенията по два пъти? Едно с префикса и едно без него??? :mnmn?:
User avatar
Ganew
Потребител
Потребител
Posts: 435
Joined: 30 Nov 2011, 18:09
Skype: r3mix.babyy

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

Post by Ganew »

mvm wrote:Добре а защо показва съобщенията по два пъти? Едно с префикса и едно без него??? :mnmn?:
Защото имаш admin_chat_color или adminlisten за това се получават бъгове! Премахни тези плъгини: admin chat color и admin listen и остави само префикса! :)
User avatar
mimodev
Потребител
Потребител
Posts: 20
Joined: 12 Feb 2013, 10:51
Skype: tyrnene_cyti
CS Nick: Mimo
Favorite version: CS: 1.6
Location: Bulgaria
Contact:

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

Post by mimodev »

Не нямам такива плъгини, но разбрах заради кой плъгин е! Казва се knife_management.amxx е те той има някаква опция за ghost chat и зарад нея се е получавало така. Благодаря ти PaHaPca :)
User avatar
Ganew
Потребител
Потребител
Posts: 435
Joined: 30 Nov 2011, 18:09
Skype: r3mix.babyy

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

Post by Ganew »

Еми да ако е Knife Mod и използвате Admin Prefix просто добавете този cvar: km_ghostchat 0 :)
User avatar
The Perishing Flame
Потребител
Потребител
Posts: 71
Joined: 26 Apr 2013, 16:10
CS Nick: The Perishing Flame
Favorite version: CS: 1.6

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

Post by The Perishing Flame »

[HEAD ADMIN] - o
[GLOBAL ADMIN] - m
[POMOSHNIK GLOBAL] - n
[HELP ADMIN] - t
[SMS ADMIN] - p
[BEST ADMIN] - s
[RANK 1 ADMIN] - q
[ADMIN] - j
[SMS ADMIN] - r
User avatar
fragmovie
Потребител
Потребител
Posts: 58
Joined: 27 Oct 2012, 14:06
Skype: ЛС !
Favorite version: CS: 1.6

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

Post by fragmovie »

И за какво са ти толкова много префикси ;)
User avatar
sda
Потребител
Потребител
Posts: 7
Joined: 01 Jul 2013, 07:16
Skype: => На Лс
CS Nick: DroggA ;]

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

Post by sda »

BonevB wrote:
Урока вече го има в 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 и ЗАБРАНЯВАМ копирането му в различни сайтове и форуми!

исега този сма фаил как да го преварна във плугин изтеглих твоя сма фаил дето пише 'Prefix' ??? :wink:
User avatar
Flickercho
Потребител
Потребител
Posts: 288
Joined: 25 Dec 2013, 18:51
Skype: -none-
CS Nick: zEx |Flick3rR ;]]*
Favorite version: CS: 1.6
Location: Стара Загора, На покрива на 7-ми блок, кв. Железник

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

Post by Flickercho »

Жив и здрав да си!!!! Евала ти за труда! Дано повече хора като теб да има, много ми помогна, плъгина работи на 100% и всичко е описано точно и вярно! БРАВО!
Locked

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