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

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

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

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

> Правила форума

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

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Плагин Хук/Hook

, помогите пожалуйста)
Статус пользователя anasbry
сообщение 17.8.2015, 11:54
Сообщение #1


Стаж: 11 лет

Сообщений: 70
Благодарностей: 29
Полезность: 182

Ребята, всем привет) Помогите пожалуйста совместить эти 2 плагина.
Нужно в первый плагин добавить, что есть во втором:

1. Эффект полёта (CT синяя полоса - T Красная полоса)
2. Эффект касания паутины (Шар)
3. Эффект свечения (подсветка игрока)

А дальше всё оставить как в первом плагине.

Код:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <hamsandwich>

new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]
new blockhook[33]

new Sbeam

public plugin_init()
{
register_plugin("Hook","1.1","=)")

RegisterHam(Ham_Spawn, "player", "Spawn_player", 1)

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

}

public plugin_precache()
{
precache_sound("hook_wkolota/hook.wav")
Sbeam = precache_model("sprites/hook/hook.spr")
}

public Spawn_player(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
blockhook[id] = 0
}
}

public plugin_cfg()
{
new const szDisableMapTypes[][] = {"35hp_", "ka_"}; // Типы карт, на которых плагин не будет работать
new szMapname[32];
get_mapname(szMapname, charsmax(szMapname));
for(new i; i < sizeof szDisableMapTypes; i++)
if(equali(szMapname, szDisableMapTypes[i], strlen(szDisableMapTypes[i]))) pause("ad");
}

public client_disconnect(id)
{
remove_hook(id)
}

public client_putinserver(id)
{
remove_hook(id)
}


public hook_on(id,level,cid)
{

if(get_user_flags(id) & ADMIN_LEVEL_H) // Флаг доступа для паутинки.
{
if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
{
return PLUGIN_HANDLED
}

if(blockhook[id]<10) //Ограничение
{
get_user_origin(id,hookorigin[id-1],3)

ishooked[id-1] = true
++blockhook[id]
emit_sound(id,CHAN_STATIC,"hook_wkolota/hook.wav",1.0,ATTN_NORM,0,PITCH_NORM)
set_task(0.1,"hook_task",id,"",0,"ab")
hook_task(id)
ChatColor(id,"^1[^4Паутинка^1] Вы использовали !g%d !yраз из !g10!", blockhook[id])
}else{
ChatColor(id,"^1[^4Паутинка^1] Вы истратили свой лимит в этом раунде.")
return PLUGIN_HANDLED
}
}else{
ChatColor(id,"^1[^4Паутинка^1] Доступно только для !gБосса, !yчтобы купить пиши в !teamСкайп: !g****")

return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}

public is_hooked(id)
{
return ishooked[id-1]
}

public hook_off(id)
{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
remove_hook(id)
}
else
{
return PLUGIN_HANDLED
}

return PLUGIN_HANDLED
}

public hook_task(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
{
remove_hook(id)
}

remove_beam(id)
draw_hook(id)

new origin[3], Float:velocity[3]
get_user_origin(id,origin)
new distance = get_distance(hookorigin[id-1],origin)
if(distance > 25)
{
velocity[0] = (hookorigin[id-1][0] - origin[0]) * (2.0 * 300 / distance)
velocity[1] = (hookorigin[id-1][1] - origin[1]) * (2.0 * 300 / distance)
velocity[2] = (hookorigin[id-1][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(hookorigin[id-1][0]) // origin
write_coord(hookorigin[id-1][1]) // origin
write_coord(hookorigin[id-1][2]) // origin
write_short(Sbeam) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(100) // life
write_byte(41) // ширина спрайта
write_byte(0) // noise
if(get_user_team(id) == 1)
{
write_byte(192) //R //СЕРЫЙ ЦВЕТ (R, G, B)
write_byte(192) //G
write_byte(192) //B
}
else
{
write_byte(192) //R //СЕРЫЙ ЦВЕТ (R, G, B)
write_byte(192) //G
write_byte(192) //B
}
write_byte(250) // brightness
write_byte(5) // speed
message_end()
}

public remove_hook(id)
{
if(task_exists(id))
{
remove_task(id)
}
remove_beam(id)
ishooked[id-1] = false
}

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

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

replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 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();
}
}
}
}


Код:
#include <amxmodx>
#include <cstrike>
#include <amxmisc>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <colorchat>

#define HOOK_LEVEL ADMIN_LEVEL_G // Уровен доступа

#define TRAIL_LIFE 10 // Жизнь полосы
#define TRAIL_WIDTH 10 // Ширина полосы
#define TRAIL_RED 255 // Цвет: Красный
#define TRAIL_GREEN 0 // Цвет: Зелёный
#define TRAIL_BLUE 0 // Цвет: Голубой
#define TRAIL_BRIGTHNESS 220 // Яркость

#define TRAIL_LIF 10 // Жизнь полосы
#define TRAIL_WIDT 10 // Ширина полосы
#define TRAIL_RE 0 // Цвет: Красный
#define TRAIL_GREE 0 // Цвет: Зелёный
#define TRAIL_BLU 255 // Цвет: Голубой
#define TRAIL_BRIGTHNES 220 // Яркость

#pragma tabsize 0

new bool:canusehook[32]
new bool:ishooked[32]
new hookorigin[32][3]

new Enable
new Glow, GlowRandom, GlowR, GlowG, GlowB
new Tsprite, STsprite, sprstandart
new Fade, FadeRandom, fadeR, fadeG, fadeB
new model_gibs, gTrail
new HookSpeed


public plugin_init() {
register_plugin("MG Hook","2.0","LLInH9rA, Remake Nickron")

register_clcmd("+hook","hook_on",HOOK_LEVEL)
register_clcmd("-hook","hook_off",HOOK_LEVEL)
register_clcmd("say /hook","Menu_hook",HOOK_LEVEL)
register_clcmd("amx_menuhook","Menu_hook",HOOK_LEVEL)
register_clcmd("hook_give","give_hook",HOOK_LEVEL,"<name|#userid|steamid|@ALL> <on/off>") // Дать/отнять хук

Enable = register_cvar( "hook_enable", "1" ) // Вкл./Выкл. Плагин (По умолчанию Вкл)
Glow = register_cvar( "hook_glow", "1" ) // Аура при полете Вкл./Выкл. (По умолчанию Вкл)
GlowRandom = register_cvar( "hook_glow_random", "1" ) // Рандомная подсветка
GlowR = register_cvar( "hook_glow_r", "255" ) // Цвет свечения(красный)
GlowG = register_cvar( "hook_glow_g", "255" ) // Цвет свечения(зеленый)
GlowB = register_cvar( "hook_glow_b", "255" ) // Цвет свечения(синий)
sprstandart = register_cvar( "hook_sprite_new", "1" ) // Новый или старый спрайт хука (По умолчанию новый)
Fade = register_cvar( "hook_screenfade", "0" ) // Затемнение экрана при полете Вкл./Выкл. (По умолчанию Вкл)
FadeRandom = register_cvar( "hook_screenfade_random", "1" ) // Использовать рандомный цвет (1 - да, 2 -нет)(По умолчанию 1)
fadeR = register_cvar( "hook_fade_r", "255" ) // Цвет затемнения экрана при полете(красный)
fadeG = register_cvar( "hook_fade_g", "255" ) // Цвет затемнения экрана при полете(зеленый)
fadeB = register_cvar( "hook_fade_b", "255" ) // Цвет затемнения экрана при полете(синий)
HookSpeed = register_cvar( "hook_speed", "450" ) // Скорость (По умолчанию: 350)
}

public plugin_precache() {
precache_sound("MG_hook/mg_hook.wav") // Загрузка звука
precache_sound("MG_hook/mg_item.wav") // Загрузка звука меню
precache_sound("MG_hook/mg_menu.wav") // Загрузка звука меню вещей

Tsprite = precache_model("sprites/MG_hook/hook_ALL.spr") // Загрузка спрайта паутины
STsprite = precache_model("sprites/laserbeam.spr") // Загрузка стандартного спрайта
gTrail = precache_model("sprites/MG_hook/speed.spr") // Загрузка спрайта полосы
model_gibs = precache_model("sprites/knife_v2/watergun.spr") // Загрузка модели земли

}

// ================================================================================
=================

public Menu_hook(id)
{
if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_KICK)
client_cmd(id, "spk MG_hook/mg_menu.wav")
{
new menu = menu_create("\rMG Hook: \yМеню смотрящего ^n\dRemake Nickron ^n\d˙·٠●• •●٠·˙","menu_hook")

menu_additem(menu,"Взять \r[Комплект Гранат] \yツ", "1", 0)
menu_additem(menu,"Взять \r[AWP] \yツ", "2", 0)
menu_additem(menu,"Взять \r[Прыжок] \yツ", "3", 0)
menu_additem(menu,"Подарить \r[Жизни] \yツ", "4", 0)


menu_setprop(menu , MPROP_NEXTNAME, "Далее")
menu_setprop(menu , MPROP_BACKNAME, "Назад")
menu_setprop(menu , MPROP_EXITNAME, "\rВыход")
menu_setprop(menu , MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu)
}
return PLUGIN_HANDLED
}

// ================================================================================
=================

public menu_hook(id, menu, key)
{
if(key == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new accss, clbck, data[6], name[64], itm
menu_item_getinfo(menu, key, accss, data, 5, name, 63, clbck)
itm = str_to_num(data)

switch(itm)
{
case 1:
{
{
client_cmd(id, "spk MG_hook/mg_item.wav")
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_smokegrenade")
give_item(id, "weapon_flashbang")
ColorChat(id,BLUE,"^3[MG Hook] ^4Вы взяли комплект гранат: ^3HE, Flash, Smoke")
}
}
case 2:
{
{
client_cmd(id, "spk MG_hook/mg_item.wav")
give_item(id, "weapon_awp")
ColorChat(id,BLUE,"^3[MG Hook] ^4Вы взяли: ^3AWP - 10")
}
}
case 3:
{
{
client_cmd(id, "spk MG_hook/mg_item.wav")
set_user_gravity(id,0.3)
ColorChat(id,BLUE,"^3[MG Hook] ^4Наш форум: ^3Magick-Mod.RU")
}
}
case 4:
{
{
HEALTHMenu(id)
}
}
}
return PLUGIN_HANDLED
}

// ================================================================================
=================

public HEALTHMenu(id)
{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
new menu = menu_create( "\rМеню Жизней", "menu_health" )
new players[32], pnum, tempid
new szName[32], szTempid[10]
cs_get_user_team(id)

get_players(players, pnum)

for(new i; i<pnum; i++)
{
cs_get_user_team(players[i])

tempid = players[i]

if(!is_user_alive(tempid))
{
}
else if(get_user_health(tempid) < 250)
{
get_user_name(tempid, szName, 31)
num_to_str(tempid, szTempid, 9)

menu_additem(menu, szName, szTempid, 0)
}
}

menu_display(id, menu, 0)
}
return PLUGIN_HANDLED
}

public menu_health(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new data[6], iName[64], playername[33], playername2[33]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)

new tempid = str_to_num(data)
cs_get_user_team(tempid)

get_user_name(id, playername, 32)
get_user_name(tempid, playername2, 32)

set_user_health(tempid, 250)
client_cmd(id,"health_menu")
ColorChat(0,BLUE, "^3[MG Hook] ^4Смотрящий ^3%s ^4дал жизни ^3%s", playername, playername2)

menu_destroy(menu)
return PLUGIN_HANDLED
}

public client_disconnect(id) {
remove_hook(id)
}

public client_putinserver(id) {
remove_hook(id)
}

// ================================================================================
=================

public give_hook(id,level,cid) {
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED

new name[32]
get_user_name(id,name,32)

new szarg1[32], szarg2[8], bool:mode
read_argv(1,szarg1,32)
read_argv(2,szarg2,32)
if(equal(szarg2,"on"))
mode = true

if(equal(szarg1,"@ALL")) {
for(new i=1;i<=get_maxplayers();i++) {
if(is_user_connected(i) && is_user_alive(i)) {
canusehook[i-1] = mode
if(mode) {
client_print(i,print_chat,"[MG Hook] Админ %s дал возможность возможность использовать hook",name)
client_print(i,print_chat,"[MG Hook] Забиндите '+hook' на кнопку")
}
else
client_print(i,print_chat,"[MG Hook] Админ %s отнял возможность возможность использовать hook",name)
}
}
}
else {
new pid = cmd_target(id,szarg1,2)
if(pid > 0) {
canusehook[pid-1] = mode
if(mode) {
client_print(pid,print_chat,"[MG Hook] Админ %s дал возможность возможность использовать hook",name)
client_print(pid,print_chat,"[MG Hook] Забиндите '+hook' на кнопку")
}
else
client_print(pid,print_chat,"[MG Hook] Админ %s отнял возможность возможность использовать hook",name)
}
}

return PLUGIN_HANDLED
}

// ================================================================================
=================

public hook_on(id,level,cid)
{
if( get_pcvar_num( Enable ) )
{
if(!canusehook[id-1] && !cmd_access(id,level,cid,1))
return PLUGIN_HANDLED

get_user_origin(id,hookorigin[id-1],3)

if(callfunc_begin("detect_cheat","prokreedz.amxx") == 1) {
callfunc_push_int(id)
callfunc_push_str("Hook")
callfunc_end()
}

ishooked[id-1] = true

emit_sound(id,CHAN_STATIC,"MG_hook/mg_hook.wav",1.0,ATTN_NORM,0,PITCH_NORM)
set_task(0.1,"hook_task",id,"",0,"ab")
hook_task(id)
func_break(id)
if( is_user_alive( id ) && get_pcvar_num( Glow ) )
{
if( is_user_alive( id ) && get_pcvar_num( GlowRandom ) )
{
set_user_rendering(id, kRenderFxGlowShell, random_num( 0,255 ), random_num( 0,255 ), random_num( 0,255 ), kRenderNormal, 16 )
}
else
{
set_user_rendering(id, kRenderFxGlowShell, ( get_pcvar_num( GlowR ) ), ( get_pcvar_num( GlowG ) ), ( get_pcvar_num( GlowB ) ), kRenderNormal, 16 )
}
}

}
else
{
ColorChat(id, RED,"[MG Hook] ^4Функция отключена!")
}

if( get_pcvar_num( Fade ) )
{
if( get_pcvar_num( FadeRandom ) )
{
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
write_short( 10<<12 )
write_short( 10<<16 )
write_short( 1<<1 )
write_byte random_num( 0,255 )
write_byte random_num( 0,255 )
write_byte random_num( 0,255 )
write_byte( 255 )
message_end()
}
else
{
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
write_short( 10<<12 )
write_short( 10<<16 )
write_short( 1<<1 )
write_byte ( get_pcvar_num( fadeR ) )
write_byte ( get_pcvar_num( fadeG ) )
write_byte ( get_pcvar_num( fadeB ) )
write_byte( 255 )
message_end()
}
}

return PLUGIN_HANDLED
}

// ================================================================================
=================

public is_hooked(id) {
return ishooked[id-1]
}

// ================================================================================
=================

public hook_off(id) {

remove_hook(id)
if( is_user_alive( id ) && get_pcvar_num( Glow ) )
{
set_user_rendering(id, kRenderFxGlowShell, random_num( 0,0 ), random_num( 0,0 ), random_num( 0,0 ), kRenderNormal, 16 )
}

if( get_pcvar_num( Fade ) )
{
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0}, id)
write_short( 10<<12 )
write_short( 10<<16 )
write_short( 1<<1 )
write_byte ( 255 )
write_byte ( 255 )
write_byte ( 255 )
write_byte( 255 )
message_end()
}

return PLUGIN_HANDLED
}

// ================================================================================
=================

public hook_task(id) {
if(!is_user_connected(id) || !is_user_alive(id))
remove_hook(id)

remove_beam(id)
draw_hook(id)
func_trail(id)
func_trail_ct(id)

new origin[3], Float:velocity[3]
get_user_origin(id,origin)
new distance = get_distance(hookorigin[id-1],origin)

new Float:HSpeed = get_pcvar_float(HookSpeed)

if(distance > 25) {
velocity[0] = (hookorigin[id-1][0] - origin[0]) * (2.0 * HSpeed / distance)
velocity[1] = (hookorigin[id-1][1] - origin[1]) * (2.0 * HSpeed / distance)
velocity[2] = (hookorigin[id-1][2] - origin[2]) * (2.0 * HSpeed / 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(hookorigin[id-1][0]) // origin
write_coord(hookorigin[id-1][1]) // origin
write_coord(hookorigin[id-1][2]) // origin
if( get_pcvar_num( sprstandart ) ) // sprite index
{
if(get_user_team(id) == 1) {
write_short( Tsprite )
}
else
{
write_short( Tsprite )
}
}
else
{
write_short( STsprite )
}
write_byte( 0 ) // start frame
write_byte( 0 ) // framerate
write_byte( 100 ) // life
write_byte( 20 ) // width
write_byte( 0 ) // noise
if( get_pcvar_num( sprstandart ) )
{
if(get_user_team(id) == 1) { // Террористы
write_byte( 255 ) // красный
write_byte( 255 ) // зеленый
write_byte( 255 ) // синий
}
else
{ // Контры
write_byte( 255 ) // красный
write_byte( 255 ) // зеленый
write_byte( 255 ) // синий
}
}
else
{
if(get_user_team(id) == 1) { // Террористы
write_byte( 255 ) // красный
write_byte( 0 ) // зеленый
write_byte( 0 ) // синий
}
else
{ // Контры
write_byte( 0 ) // красный
write_byte( 0 ) // зеленый
write_byte( 255 ) // синий
}
}
write_byte( 150 ) // brightness
write_byte(0) // Скорость
message_end()
}

// ================================================================================
=================

public func_break(id)
{
new origin[3]

get_user_origin(id, origin, 3)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPRITE)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_short(model_gibs)
write_byte(13)
write_byte(255)
message_end()
}

// ================================================================================
=================

public func_trail(id)

if(cs_get_user_team(id) == CS_TEAM_T)

{
{
{

message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (TE_BEAMFOLLOW)
write_short (id)
write_short (gTrail)
write_byte (TRAIL_LIFE)
write_byte (TRAIL_WIDTH)
write_byte (TRAIL_RED)
write_byte (TRAIL_GREEN)
write_byte (TRAIL_BLUE)
write_byte (TRAIL_BRIGTHNESS)
message_end()
}
}
}

public func_trail_ct(id)

if(cs_get_user_team(id) == CS_TEAM_CT)

{
{
{

message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (TE_BEAMFOLLOW)
write_short (id)
write_short (gTrail)
write_byte (TRAIL_LIF)
write_byte (TRAIL_WIDT)
write_byte (TRAIL_RE)
write_byte (TRAIL_GREE)
write_byte (TRAIL_BLU)
write_byte (TRAIL_BRIGTHNES)
message_end()
}
}
}

// ================================================================================
=================

public remove_hook(id) {
if(task_exists(id))
remove_task(id)
remove_beam(id)
ishooked[id-1] = false
}

// ================================================================================
=================

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


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