Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

[Для Скриптиров] hook под BioHazard

, Отредактировать
Статус пользователя rasskazov
сообщение 5.10.2015, 19:12
Сообщение #1


Стаж: 13 лет
Город: Где-то в Крыму)

Сообщений: 499
Благодарностей: 158
Полезность: 436

Добрый вечер:)
Имеется плагины от сборки Никиты!
Плагин на паутинку , нужно сделать так чтобы не было возможности использовать паутинку до заражения. Если кто поможет буду очень благодарен)

Сам плагин:
Cкрытый текст
Код:
#include <amxmisc>
#include <engine>
#include <hamsandwich>
#include <biohazard>

#include <colorchat>

#pragma semicolon 1
#pragma ctrlchar '\'

#define ADMIN_HOOK ADMIN_LEVEL_F

#define MAX_CLIENTS 32

#define DURATION_TIME 5 //время в секундах, через которое автоматически отпуститься хук

#define TASK_ON_TIME 0.1

new g_PlayerAimOrigin[MAX_CLIENTS + 1][3];
new g_nPlayerUseCount[MAX_CLIENTS + 1];

enum UTILS_DATA
{
CVAR_HOOK_COUNT,
HOOK_SPRITE,
Float: TIMER
};

new g_UTILS[UTILS_DATA];

new const szChatPrefix[] = "Hook"; //префикс заключенный в квадртаные скобки

public plugin_init()
{
register_plugin("Cs_Hook","1.0", "Sulky");

RegisterHam(Ham_Spawn, "player", "fwPlayerSpawn_Post", .Post = true);

register_clcmd("+hook","hook_on");
register_clcmd("-hook","hook_off");

g_UTILS[CVAR_HOOK_COUNT] = register_cvar( "hook_count", "15");
}

public plugin_precache()
{
precache_sound("hook/hook.wav");
g_UTILS[HOOK_SPRITE] = precache_model("sprites/hook/hook.spr");
}

public fwPlayerSpawn_Post(id)
if(is_user_alive(id))
g_nPlayerUseCount[id] = 0;

public client_disconnect(id) remove_hook(id);
public client_putinserver(id) remove_hook(id);

public hook_on(id)
{
if(!is_user_alive(id))
{
client_print_color(id, print_team_default, "\4[%s]\1 Нельзя использовать паутинку, когда вы мертвы!", szChatPrefix);
return PLUGIN_HANDLED;
}

if(is_user_zombie(id))
{
client_print_color(id, print_team_default, "\4[%s]\1 Нельзя использовать паутинку, когда вы зомби!", szChatPrefix);
return PLUGIN_HANDLED;
}

if(get_user_flags(id) & ADMIN_HOOK)
{
if(g_nPlayerUseCount[id] < get_pcvar_num(g_UTILS[CVAR_HOOK_COUNT]))
{
get_user_origin(id,g_PlayerAimOrigin[id],3);

++g_nPlayerUseCount[id];

emit_sound(id,CHAN_STATIC,"hook/hook.wav",1.0,ATTN_NORM,0,PITCH_NORM);

set_task(TASK_ON_TIME, "hook_task", id, .flags = "b");

hook_task(id);
}
else
{
client_print_color(id, print_team_default, "\4[%s]\1 Нельзя использовать паутину больше\4 %i\1 раз!", szChatPrefix, get_pcvar_num(g_UTILS[CVAR_HOOK_COUNT]));
return PLUGIN_HANDLED;
}
}
else
client_print_color(id, print_team_default, "\4[%s]\1 У вас нет паутинки, вы не \4V.I.P\1!", szChatPrefix);

return PLUGIN_HANDLED;
}

public hook_off(id)
{
if(get_user_flags(id) & ADMIN_HOOK)
{
remove_hook(id);

g_UTILS[TIMER] = 0;
}
else
client_print_color(id, print_team_default, "\4[%s]\1 У вас нет паутинки, вы не \4V.I.P\1!", szChatPrefix);

return PLUGIN_HANDLED;
}


public hook_task(id)
{
if(!is_user_alive(id))
remove_hook(id);

if (g_UTILS[TIMER] < DURATION_TIME)
g_UTILS[TIMER] += TASK_ON_TIME;
else
{
g_UTILS[TIMER] = 0;

remove_hook(id);
return;
}

remove_beam(id);
draw_hook(id);

new origin[3], Float:velocity[3]; get_user_origin(id,origin);

new distance = get_distance(g_PlayerAimOrigin[id],origin);

if(distance > 25)
{
velocity[0] = (g_PlayerAimOrigin[id][0] - origin[0]) * (2.0 * 300 / distance);
velocity[1] = (g_PlayerAimOrigin[id][1] - origin[1]) * (2.0 * 300 / distance);
velocity[2] = (g_PlayerAimOrigin[id][2] - origin[2]) * (2.0 * 300 / distance);


entity_set_vector(id,EV_VEC_velocity,velocity);
}
else
{
entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0});
remove_hook(id);
}
}


public draw_hook(id)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(1); // TE_BEAMENTPOINT
write_short(id); // entid
write_coord(g_PlayerAimOrigin[id][0]); // origin
write_coord(g_PlayerAimOrigin[id][1]); // origin
write_coord(g_PlayerAimOrigin[id][2]); // origin
write_short(g_UTILS[HOOK_SPRITE]); // sprite index
write_byte(0); // start frame
write_byte(0); // framerate
write_byte(100); // life
write_byte(10); // width
write_byte(0); // noise

write_byte(random(255));
write_byte(random(255));
write_byte(random(255));

write_byte(250); // brightness
write_byte(1); // speed
message_end();
}


public remove_hook(id)
{
remove_task(id);
remove_beam(id);
}

public remove_beam(id)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(99);
write_short(id);
message_end();
}


Отредактировал: rasskazov, - 5.10.2015, 19:23
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: