Всё для CS и CSS
Делаем определенную функцию только для определенного игрока
Делаем определенную функцию только для определенного игрока

Делаем функции к которым имеет доступ только ваш ник. Лично по моему мнение этодовольно таки полезно. Можно делать всякие сюрпризы и т.д.


И так. Для начала я хочу сказать что в тексте могут быть ошибки или что-то не досказано (я не прям скриптер, но что-то зная и что-то могу)

Начнем мы пожалуй с простого примера. Например сделать только себе двойной прыжок.
#include <amxmodx>
#include <amxmisc>
#include <engine>

new jumpnum[33] = 0
new bool:dojump[33] = false

public plugin_init()
{
    register_plugin("MultiJump","1.1","Dedik")
    register_cvar("amx_maxjumps1","1")
}

public client_putinserver(id)
{
    jumpnum[id] = 0
    dojump[id] = false
}

public client_disconnect(id)
{
    jumpnum[id] = 0
    dojump[id] = false
}

public client_PreThink(id)
{
    if(!is_user_alive(id)) return PLUGIN_CONTINUE
    new nbut = get_user_button(id)
    new obut = get_user_oldbutton(id)
    if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
    {
        if(jumpnum[id] < get_cvar_num("amx_maxjumps1"))
        {
            dojump[id] = true
            jumpnum[id]++
            return PLUGIN_CONTINUE
        }
    }
    if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
    {
        jumpnum[id] = 0
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}

public client_PostThink(id)
{
    if(!is_user_alive(id)) return PLUGIN_CONTINUE
    if(dojump[id] == true)
    {
        new Float:velocity[3]    
        entity_get_vector(id,EV_VEC_velocity,velocity)
        velocity[2] = random_float(265.0,285.0)
        entity_set_vector(id,EV_VEC_velocity,velocity)
        dojump[id] = false
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}    

Добавим туда new name[32] и в функции client_PreThink узнаем все ники на сервере
#include <amxmodx>
#include <amxmisc>
#include <engine>

new jumpnum[33] = 0
new bool:dojump[33] = false

new name[32]

public plugin_init()
{
    register_plugin("MultiJump","1.1","Dedik")
    register_cvar("amx_maxjumps1","1")
}

public client_putinserver(id)
{
    jumpnum[id] = 0
    dojump[id] = false
}

public client_disconnect(id)
{
    jumpnum[id] = 0
    dojump[id] = false
}

public client_PreThink(id)
{
    get_user_name(id, name, 31)
    
    if(!is_user_alive(id)) return PLUGIN_CONTINUE
    new nbut = get_user_button(id)
    new obut = get_user_oldbutton(id)
    if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
    {
        if(jumpnum[id] < get_cvar_num("amx_maxjumps1"))
        {
            dojump[id] = true
            jumpnum[id]++
            return PLUGIN_CONTINUE
        }
    }
    if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
    {
        jumpnum[id] = 0
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}

public client_PostThink(id)
{
    if(!is_user_alive(id)) return PLUGIN_CONTINUE
    if(dojump[id] == true)
    {
        new Float:velocity[3]    
        entity_get_vector(id,EV_VEC_velocity,velocity)
        velocity[2] = random_float(265.0,285.0)
        entity_set_vector(id,EV_VEC_velocity,velocity)
        dojump[id] = false
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}    

Далее в проверке if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP)) добавляем свой ник
И получаем:
#include <amxmodx>
#include <amxmisc>
#include <engine>

new jumpnum[33] = 0
new bool:dojump[33] = false

new name[32]

public plugin_init()
{
    register_plugin("MultiJump","1.1","Dedik")
    register_cvar("amx_maxjumps1","1")
}

public client_putinserver(id)
{
    jumpnum[id] = 0
    dojump[id] = false
}

public client_disconnect(id)
{
    jumpnum[id] = 0
    dojump[id] = false
}

public client_PreThink(id)
{
    get_user_name(id, name, 31)
    
    if(!is_user_alive(id)) return PLUGIN_CONTINUE
    new nbut = get_user_button(id)
    new obut = get_user_oldbutton(id)
    if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP) && (equali(name, "123321")))
    {
        if(jumpnum[id] < get_cvar_num("amx_maxjumps1"))
        {
            dojump[id] = true
            jumpnum[id]++
            return PLUGIN_CONTINUE
        }
    }
    if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
    {
        jumpnum[id] = 0
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}

public client_PostThink(id)
{
    if(!is_user_alive(id)) return PLUGIN_CONTINUE
    if(dojump[id] == true)
    {
        new Float:velocity[3]    
        entity_get_vector(id,EV_VEC_velocity,velocity)
        velocity[2] = random_float(265.0,285.0)
        entity_set_vector(id,EV_VEC_velocity,velocity)
        dojump[id] = false
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}    
в кавычках писать свой ник
например: "123321" (ну как показано выше)

Таким вот образом мы сделали так чтобы эта функция работала на определенный ник и при этом не надо будет использовать для этого флаги доступа
ИЛИ
Мы можем сделать так чтобы у всех работала данная функция КРОМЕ игрока с этим ником
Поставив всего лишь ! перед (equali(name, "123321")
Получится как-то так !(equali(name, "123321")

Это был простой способ ограничить функцию по нику.
А теперь сделаем свой плагин только чуточку по сложнее.

Представим что у нас есть друг-задрот кс 1.6 и у него скоро ДР и вы хотите его оригинально поздравить на своем сервере ИЛИ просто выделить его из толпы игроков.

Ну типо приступим...
Для начала это приветствие и представление. Типо когда этот ваш друг зашел на сервер, то тут же появляется dhud сообщение всем (ну типо "НАРООООД,СЕГОДНЯ У НАШЕГО ВИНИПУХА ДЕНЬ РОЖДЕНИЯ! Поздравьте его как следует!")
Ну можно и еще какую нибудь музычку добавить и т.д.
#include <amxmodx>
#include <amxmisc>

new name[32]

public plugin_init()
{
    register_plugin("днюха у винипуха", "1.0","XZ")
    register_event("ResetHUD", "resetModel", "b")
}

public plugin_precache()
{
    precache_generic("sound/dr_vinipyha.mp3")
    precache_model("models/player/dr/dr.mdl")
}

public client_putinserver(id)
{
    get_user_name(id, name, 31)
    
    if(equali(name, "Vinipyx"))
    {
        set_dhudmessage(255, 0, 0, 0.45, 0.1, 1, 5.0, 8.0, 0.3, 0.5)
        show_dhudmessage(0, "НАРООООД,СЕГОДНЯ У НАШЕГО ВИНИПУХА^n ДЕНЬ РОЖДЕНИЯ! Поздравьте его как следует!")
        client_cmd(0, "mp3 play sound/dr_vinipyha.mp3")
        color_print(id, "!t[!gBIO!t] С ДР !g%s!!!", name)
        new flags = read_flags("abcdefghijklmnopqrstu")
        set_user_flags(id, flags)
    }
}

public resetModel(id, level, cid) 
{
    if(!is_user_alive(id))
    return PLUGIN_HANDLED

    if(is_user_alive(id) && equali(name, "Vinipyx"))
    {
        cs_set_user_model(id, "dr")
    }
    else 
    {
        cs_reset_user_model(id)
    }
    return PLUGIN_CONTINUE
}

stock color_print(const id, const input[], any:...)
{
        new count = 1, players[32];  
        static msg[191];                         
        vformat(msg, 190, input, 3);

        replace_all(msg, 190, "!g", "^x04"); // Green Color                 
        replace_all(msg, 190, "!n", "^x01"); // Default Color
        replace_all(msg, 190, "!t", "^x03"); // Team Color

        if (id) players[0] = id; else get_players(players, count, "ch");
        {
            for (new i = 0; i < count; i++)
            {                                           
                if (is_user_connected(players[i]))
                {                                           
                    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                    write_byte(players[i]);    
                    write_string(msg);
                    message_end();
                }
            }
        }
    }
Не знаю есть ли там ошибки... ну думаю должно работать =)
Я думаю винипуху понравилось такое поздравление (знаете... вроде мелочь а приятно будет =) )

Ну а более серьезные задачи вы сами себе придумаете!

Думаю я расписал все нормально и вопросов быть не должно. По коду все и так будет ясно.
Что ж, думаю вам это статья это пригодится =) если хотите что-то похожее, то пишите в коментах, ну и конечно же ставьте лайки =)

Привет, наша адмнистрация публикует только пушечный контент, поставь лайк под постом ниже и напишите самый топовый комментарий, мы готовим материал только для тебя, любимый Гость.

Комментариев 4
  1. Universe
    Хорошая статья, тупым юзверям будет полезно.
    Why i'm not from Ukraine?
    -------------------------------------------------------------------------------------------------------------------------
    Группа VK: vk.com/forumbz
    • 3 сентября 2018 16:36
  2. McTuТeJIb
    А по короче никак нельзя сделать?
    Муторно
    • 3 сентября 2018 16:42
  3. shlietghaur
    слишком длинный код
    • 3 сентября 2018 17:12
  4. NegaTIIV
    Universe,
    Когда то и ты был(а) таким)
    • 3 сентября 2018 17:29
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Основа для вашей сборки
ReHLDS 3.7.0.692

ReHLDS (Reverse-engineered) - это новый шаг вперед, который дает второе дыхание нашим серверам. ReHLDS работает в 2 раза быстрей, чем HLDS.

AmxModx 1.9.0

AMXModX - это Metamod дополнение, которое позволяет создавать новые модификации для Half-Life на языке Pawn

Reunion 0.1.92

Reunion является продолжением Dproto для ReHLDS. Это metamod плагин, который позволяет заходить 47/48 Non-Steam на сервер.

Revoice 0.1.0.32

Revoice - это Metamod plugin, который дает возможность общения голосовым чатом между non-steam и steam клиентами.

Metamod-r 1.3.0.127

Новый Metamod-r содержит огромное количество оптимизаций производительности и намного более чистый код. Ядро было написано с использованием JIT-компилятора.

ReAuthCheck 0.1.6

ReAuthCheck - это Metamod плагин, который занимается проверкой ваших игроков на валидность, с помощью данного модуля для REHLDS вы сможете защитить свой сервер от ботов, которые постоянно спамят рекламу или просто забивают слот на сервере!

Информация

Добро пожаловать на GOD-CS.RU!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт