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



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

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

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

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

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

Начнем мы пожалуй с простого примера. Например сделать только себе двойной прыжок.

#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();
                }
            }
        }
    }

Не знаю есть ли там ошибки… ну думаю должно работать =)
Я думаю винипуху понравилось такое поздравление (знаете… вроде мелочь а приятно будет =) )

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

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



Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
CHEATS-CS.RU - Топовый контент по CS 1.6