Делаем определенную функцию только для определенного игрока
Делаем функции к которым имеет доступ только ваш ник. Лично по моему мнение этодовольно таки полезно. Можно делать всякие сюрпризы и т.д.
И так. Для начала я хочу сказать что в тексте могут быть ошибки или что-то не досказано (я не прям скриптер, но что-то зная и что-то могу)
Начнем мы пожалуй с простого примера. Например сделать только себе двойной прыжок.
#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();
}
}
}
}
Не знаю есть ли там ошибки... ну думаю должно работать =)Я думаю винипуху понравилось такое поздравление (знаете... вроде мелочь а приятно будет =) )
Ну а более серьезные задачи вы сами себе придумаете!
Думаю я расписал все нормально и вопросов быть не должно. По коду все и так будет ясно.
Что ж, думаю вам это статья это пригодится =) если хотите что-то похожее, то пишите в коментах, ну и конечно же ставьте лайки =)
Минимальная длина комментария - 50 знаков. комментарии модерируются
Смотрите также:

Как переписать оружие с (ZP на Public)
В данной статье я расскажу вам как переписать оружие с ZP на паблик , для этого нам нужно удалить всё что связанно с " zombieplague " Для примера я возьму плагин: AK47 Dragon на коде Crock

Как сделать что бы меню открывалось на B
Как сделать что бы меню открывалось на буквы B?