Русское сообщество по скриптингу

Как добавить префикс для новой привилегии

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Как добавить префикс для новой привилегии

Сообщение STrax TV » 21 май 2024, 12:44

Приветствую, я слабоват в скриптинге, только начал, хочу учиться, но глаза до сих пор разбегаются когда смотрю в код, по этому обращаюсь за помощью с такой легкой проблемой, у меня стоит плагин zm_vip_prefix в нем прописан всего лишь один префикс [VIP], на флаг ADMIN_LEVEL_H, все правильно работает. Мне нужно добавить ещё один префикс [ADMIN], никак не могу разобраться в коде, подскажите пожалуйста как мне сделать.
Кусочек с кода:
Код: Выделить всё
    if (admin)
        {
            switch (get_pcvar_num (g_NameColor))
                {
                    case 1:
                        format (strName, 191, "%s^x03[VIP] ^x04%s", alive, name)

                    case 2:
                        format (strName, 191, "%s^x03[VIP] ^x04%s", alive, name)
                        
                    case 3
:
                        {
                            color = "SPECTATOR"
                            format (strName, 191, "%s^x03[VIP] ^x04%s", alive, name)
                        }
                        
                    case 4
:
                        {
                            color = "CT"
                            format (strName, 191, "%s^x03[VIP] ^x04%s", alive, name)
                        }

                    case 5:
                        {
                            color = "TERRORIST"
                            format (strName, 191, "%s^x03[VIP] ^x04%s", alive, name)
                        }
                    
                    case 6
:
                        {
                            get_user_team (id, color, 9)
                                
                            format 
(strName, 191, "%s^x03[VIP] ^x04%s", alive, name)
                        }
                
Аватара пользователя
STrax TV
 
Сообщения: 7
Зарегистрирован: 21 май 2024, 12:06
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: pawn новичок

Re: Как добавить префикс для новой привилегии

Сообщение nemec21 » 21 май 2024, 15:11

Нужно прилаживать весь код, а не кусочек
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 836
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 51 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Как добавить префикс для новой привилегии

Сообщение STrax TV » 21 май 2024, 15:48

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>

#define PLUGIN         "VIP_teg"
#define VERSION     "1.1"
#define AUTHOR         "BuPyC"

#define ACCESS_LEVEL    ADMIN_LEVEL_H
#define ADMIN_LISTEN    ADMIN_RCON

new message[192]
new 
sayText
new teamInfo
new maxPlayers

new g_MessageColor
new g_NameColor
new g_AdminListen

new strName[191]
new 
strText[191]
new 
alive[11]

public 
plugin_init()
{
    
register_plugin (PLUGIN VERSION AUTHOR)
    
    
g_MessageColor register_cvar ("amx_color""3")

    
g_NameColor register_cvar ("amx_namecolor""2")
    
    
g_AdminListen register_cvar ("amx_listen""1")
    
    
    
sayText get_user_msgid ("SayText")
    
teamInfo get_user_msgid ("TeamInfo")
    
maxPlayers get_maxplayers()
    
    
    
register_message (sayText"arubaid_duplicated")
    
    
register_clcmd ("amx_color""set_color"ACCESS_LEVEL"<color>")
    
register_clcmd ("amx_namecolor""set_name_color"ACCESS_LEVEL"<color>")
    
register_clcmd ("amx_listen""set_listen"ACCESS_LEVEL"<1 | 0>")
    
    
register_clcmd ("say""hook_say")
    
register_clcmd ("say_team""hook_teamsay")
}


public 
arubaid_duplicated (msgIdmsgDestreceiver)
{
    return 
PLUGIN_HANDLED
}


public 
hook_say(id)
{
    
read_args (message191)
    
remove_quotes (message)
    
    if (
message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message"")) // Ignores Admin Hud Messages, Admin Slash commands, 

        
return PLUGIN_CONTINUE

        
    
new name[32]
    
get_user_name (idname31)
    
    new 
bool:admin false
    
    
if (get_user_flags(id) & ACCESS_LEVEL)
        
admin true
        
    
    
new isAlive
    
    
if (is_user_alive (id))
        {
            
isAlive 1
            alive 
"^x01"
        
}
    else
        {
            
isAlive 0
            alive 
"^x01"
        
}
    
    static 
color[10]
    

    
    if (
admin)
        {
            switch (
get_pcvar_num (g_NameColor))
                {
                    case 
1:
                        
format (strName191"%s^x03[VIP] ^x04%s"alivename)

                    case 
2:
                        
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        
                    case 
3:
                        {
                            
color "SPECTATOR"
                            
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        }
                        
                    case 
4:
                        {
                            
color "CT"
                            
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        }

                    case 
5:
                        {
                            
color "TERRORIST"
                            
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        }
                    
                    case 
6:
                        {
                            
get_user_team (idcolor9)
                                
                            
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        }
                }
            
            switch (
get_pcvar_num (g_MessageColor))
                {
                    case 
1:    // Yellow
                        
format (strText191"%s"message)
                        
                    case 
2:    // Green
                        
format (strText191"^x04%s"message)
                        
                    case 
3:    // White
                        
{
                            
copy (color9"SPECTATOR")
                            
format (strText191"^x03%s"message)
                        }

                    case 
4:    // Blue
                        
{
                            
copy (color9"CT")
                            
format (strText191"^x03%s"message)
                        }
                        
                    case 
5:    // Red
                        
{
                            
copy (color9"TERRORIST")
                            
format (strText191"^x03%s"message)
                        }
                }
        }
    
    else
        {
            
get_user_team (idcolor9)
            
            
format (strName191"%s^x03%s"alivename)
            
            
format (strText191"%s"message)
        }

    
format (message191"%s^x01: %s"strNamestrText)
            
    
sendMessage (colorisAlive)
    
    return 
PLUGIN_CONTINUE
}


public 
hook_teamsay(id)
{
    new 
playerTeam get_user_team(id)
    new 
playerTeamName[19]
    
    switch (
playerTeam)
        {
            case 
1:
                
copy (playerTeamName11"Terrorists")
                
            case 
2:
                
copy (playerTeamName18"Counter-Terrorists")
                
            default:
                
copy (playerTeamName9"Spectator")
        }
        
    
read_args (message191)
    
remove_quotes (message)
    
    if (
message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message"")) // Ignores Admin Hud Messages, Admin Slash commands, 

        
return PLUGIN_CONTINUE

        
    
new name[32]
    
get_user_name (idname31)
    
    new 
bool:admin false
    
    
if (get_user_flags(id) & ACCESS_LEVEL)
        
admin true
        
    
    
new isAlive
    
    
if (is_user_alive (id))
        {
            
isAlive 1
            alive 
"^x01"
        
}
    else
        {
            
isAlive 0
            alive 
"^x01"
        
}
    
    static 
color[10]
    

    
    if (
admin)
        {
            switch (
get_pcvar_num (g_NameColor))
                {
                    case 
1:
                        
format (strName191"%s^x03[VIP] ^x04%s"alivename)

                    case 
2:
                        
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        
                    case 
3:
                        {
                            
color "SPECTATOR"
                            
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        }
                        
                    case 
4:
                        {
                            
color "CT"
                            
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        }

                    case 
5:
                        {
                            
color "TERRORIST"
                            
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        }
                    
                    case 
6:
                        {
                            
get_user_team (idcolor9)
                                
                            
format (strName191"%s^x03[VIP] ^x04%s"alivename)
                        }
                }
            
            switch (
get_pcvar_num (g_MessageColor))
                {
                    case 
1:    // Yellow
                        
format (strText191"%s"message)
                        
                    case 
2:    // Green
                        
format (strText191"^x04%s"message)
                        
                    case 
3:    // White
                        
{
                            
copy (color9"SPECTATOR")
                            
format (strText191"^x03%s"message)
                        }

                    case 
4:    // Blue
                        
{
                            
copy (color9"CT")
                            
format (strText191"^x03%s"message)
                        }
                        
                    case 
5:    // Red
                        
{
                            
copy (color9"TERRORIST")
                            
format (strText191"^x03%s"message)
                        }
                }
        }
    
    else
        {
            
get_user_team (idcolor9)
            
            
format (strName191"%s^x03%s"alivename)
            
            
format (strText191"%s"message)
        }
    
    
format (message191"%s^x01: %s"strNamestrText)
    
    
sendTeamMessage (colorisAliveplayerTeam)
    
    return 
PLUGIN_CONTINUE    
}


public 
set_color (idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED
        
    
new arg[1], newColor
    read_argv 
(1arg1)
    
    
newColor str_to_num (arg)
    
    if (
newColor >= && newColor <= 5)
        {
            
set_cvar_num ("amx_color"newColor)
            
set_pcvar_num (g_MessageColornewColor)
    
            if (
get_pcvar_num (g_NameColor) != &&
                   ((
newColor == &&  get_pcvar_num (g_NameColor) != 3)
                 || (
newColor == &&  get_pcvar_num (g_NameColor) != 4)
                 || (
newColor == &&  get_pcvar_num (g_NameColor) != 5)))
                {
                    
set_cvar_num ("amx_namecolor"2)
                    
set_pcvar_num (g_NameColor2)
                }
        }
        
    return 
PLUGIN_HANDLED
}


public 
set_name_color (idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED
        
    
new arg[1], newColor
    read_argv 
(1arg1)
    
    
newColor str_to_num (arg)
    
    if (
newColor >= && newColor <= 6)
        {
            
set_cvar_num ("amx_namecolor"newColor)
            
set_pcvar_num (g_NameColornewColor)
            
            if ((
get_pcvar_num (g_MessageColor) != 1
                
&& ((newColor == &&  get_pcvar_num (g_MessageColor) != 3)
                 || (
newColor == &&  get_pcvar_num (g_MessageColor) != 4)
                 || (
newColor == &&  get_pcvar_num (g_MessageColor) != 5)))
                 || 
get_pcvar_num (g_NameColor) == 6)
                {
                    
set_cvar_num ("amx_color"2)
                    
set_pcvar_num (g_MessageColor2)
                }
        }
    
    return 
PLUGIN_HANDLED
}


public 
set_listen (idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED
        
    
new arg[1], newListen
    read_argv
(1arg1)
    
    
newListen str_to_num (arg)
    
    
set_cvar_num ("amx_listen"newListen)
    
set_pcvar_num (g_AdminListennewListen)
    
    return 
PLUGIN_HANDLED
}


public 
sendMessage (color[], alive)
{
    new 
teamName[10]
    
    for (new 
player 1player maxPlayersplayer++)
        {
            if (!
is_user_connected(player))
                continue

            if (
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
                {
                    
get_user_team (playerteamName9)
                    
                    
changeTeamInfo (playercolor)
                    
                    
writeMessage (playermessage)
                    
                    
changeTeamInfo (playerteamName)
                }
        }
}


public 
sendTeamMessage (color[], aliveplayerTeam)
{
    new 
Аватара пользователя
STrax TV
 
Сообщения: 7
Зарегистрирован: 21 май 2024, 12:06
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: pawn новичок

Re: Как добавить префикс для новой привилегии

Сообщение nemec21 » 21 май 2024, 17:42

Ну как вариант, закешировать битсумму к примеру строки "t"(вип) и к примеру "a"(иммунитет), потом при отправки сообщение, вместо болевой переменной admin, создань обычную и приствоить ей значение -1, при сверке игрока на битсумму флагом, присвоить 0 или 1, если будут совпадения. Ну а потом уже работать с этим значении при получения префикса админ или вип. Думаю подробно расписал, возможности с телефона нет править код, если не помогут, при возможности исправлю
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 836
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 51 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Как добавить префикс для новой привилегии

Сообщение STrax TV » 21 май 2024, 18:16

Спасибо большое
Аватара пользователя
STrax TV
 
Сообщения: 7
Зарегистрирован: 21 май 2024, 12:06
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: pawn новичок

Re: Как добавить префикс для новой привилегии

Сообщение nemec21 » 21 май 2024, 18:42

Ну и опять же, битсумму с одной буквой, скорее не лучшая реализация, можно воспользоваться и define, то что есть уже в коде у тебя
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 836
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 51 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Как добавить префикс для новой привилегии

Сообщение nemec21 » 22 май 2024, 02:27

И вообще, скинь код, который был до твоих исправлений
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 836
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 51 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Как добавить префикс для новой привилегии

Сообщение STrax TV » 23 май 2024, 16:50

Я уже все сделал, идеально работает префикс система, у меня новая проблема с ножами, не могли бы помочь?

Добавлено спустя 55 секунд:
Вы должны зарегистрироваться, чтобы видеть ссылки. - вот тему создал с ножами
Аватара пользователя
STrax TV
 
Сообщения: 7
Зарегистрирован: 21 май 2024, 12:06
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: pawn новичок

Re: Как добавить префикс для новой привилегии

Сообщение nemec21 » 23 май 2024, 17:45

Так покажи что сделал, создал же тему, скинь решение

Добавлено спустя 42 секунды:
И обсуждение идет в том топике
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 836
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 51 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 12