Флаги не работают

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
37
Реакции
2
Предупреждения
100
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Ошибка
Не работают флаги, стоят флаги для меню ADMIN_LEVEL_E , ADMIN_BAN -- Флаг для работы хука ADMIN_LEVEL_E
но в итоге пользуются все обычные игроки , и так со всеми пунктами меню, только Хуком не могут пользоваться а так всем , помогите сделать флаги пожалуйста , я уже всё перепробывал, и на прямую флаги , и по 1 шт , не хочет ((
ОС
Linux
Билд
ReHLDS version: 3.4.0.633-dev
ReGamedll
ReGameDLL version: 5.3.0.284-dev
Список метамодулей
description      stat pend  file              vers      src   load  unlod
[ 1] Reunion RUN - reunion_mm_i386. v0.1.0.8 ini Start Never
[ 2] VoiceTranscoder RUN - VoiceTranscoder. v2017RC3 ini ANY ANY
[ 3] ReAuthCheck RUN - reauthcheck_mm_i v0.1.6 ini Start Never
[ 4] Rechecker RUN - rechecker_mm_i38 v2.5 ini Chlvl ANY
[ 5] ReSRDetector RUN - resrdetector_mm_ v0.1.0 ini Chlvl ANY
[ 6] AMX Mod X RUN - amxmodx_mm_i386. v1.8.2 ini Start ANY
[ 7] ReSemiclip RUN - resemiclip_mm_i3 v2.3.9 ini Chlvl ANY
[ 8] WHBlocker RUN - whblocker_mm_i38 v1.5.692 ini Chlvl ANY
[ 9] ReAPI RUN - reapi_amxx_i386. v5.2.0.1 pl6 ANY Never
[10] MySQL RUN - mysql_amxx_i386. v1.8.2 pl6 ANY ANY
[11] SQLite RUN - sqlite_amxx_i386 v1.8.2 pl6 ANY ANY
[12] Fun RUN - fun_amxx_i386.so v1.8.2 pl6 ANY ANY
[13] Engine RUN - engine_amxx_i386 v1.8.2 pl6 ANY ANY
[14] FakeMeta RUN - fakemeta_amxx_i3 v1.8.2 pl6 ANY ANY
[15] CStrike RUN - cstrike_amxx_i38 v1.8.2 pl6 ANY ANY
[16] CSX RUN - csx_amxx_i386.so v1.8.2 pl6 ANY ANY
[17] Ham Sandwich RUN - hamsandwich_amxx v1.8.2 pl6 ANY ANY
[18] ReAimDetector RUN - reaimdetector_am v0.2.1 pl6 ANY Never
[19] hackdetector RUN - hackdetector_amx v0.15.32 pl6 ANY ANY
19 plugins, 19 running
Список плагинов
Currently loaded plugins:
name version author file status
[ 1] fb_forwards 0.1.4 Kanagava & Realu fb_forwards.amx running
[ 2] FreshBans 1.3.7b kanagava fresh_bans.amxx running
[ 3] Admin Loader 2.9 neygomon admin_loader.am running
[ 4] Admin Commands 1.8.2 AMXX Dev Team admincmd.amxx running
[ 5] Slots Reservation 1.8.2 AMXX Dev Team adminslots.amxx running
[ 6] Menus Front-End 1.5 untest neugomon menufront_enda. running
[ 7] Commands Menu 1.8.2 AMXX Dev Team cmdmenu.amxx running
[ 8] Plugin Menu 1.8.2 AMXX Dev Team pluginmenu.amxx running
[ 9] Admin Chat 1.8.2 AMXX Dev Team adminchat.amxx running
[ 10] Anti Flood 1.8.2 AMXX Dev Team antiflood.amxx running
[ 11] Scrolling Message 1.8.2 AMXX Dev Team scrollmsg.amxx running
[ 12] Info. Messages 1.8.2 AMXX Dev Team imessage.amxx running
[ 13] Admin Votes 1.8.2 AMXX Dev Team adminvote.amxx running
[ 14] Pause Plugins 1.8.2 AMXX Dev Team pausecfg.amxx running
[ 15] Restrict Weapons 1.8.2 AMXX Dev Team restmenu.amxx running
[ 16] [182] Stats Configurat 17.10.30 SKAJIbnEJIb & AM statscfg_rbs.am running
[ 17] [182] StatsX RBS 17.10.31 SKAJIbnEJIb & AM statsx_rbs.amxx running
[ 18] ReAimDetector API 0.2.1 ReHLDS Team reaimdetector.a running
[ 19] Lite VoteBan 1.4 neygomon lite_voteban.am running
[ 20] [ReAPI] Lite TeamBalan 2.3 neugomon lite_balancer_2 running
[ 21] GagMenu 1.9.0 neygomon GagMenu.amxx running
[ 22] [182] Army Ranks Ultim 17.12.12 SKAJIbnEJIb army_ranks_ulti running
[ 23] Anti Reklama 1.1 MarcaD anti_reklama.am running
[ 24] [ReAPI] AdminFreeLook 1.0 ReHLDS Team adminfreelook.a running
[ 25] DemoRecoder 1.1 neygomon amx_demorec.amx running
[ 26] Advert Messages 1.22 neygomon adverts.amxx running
[ 27] [ReAPI] AWPoff 1.3 PAffAEJIkA :3 awp_off.amxx stopped
[ 28] [182] Chat RBS 17.12.18 SKAJIbnEJIb chat_rbs.amxx running
[ 29] Bomb HUD Timer 0.2 SAMURAI c4timer.amxx running
[ 30] [182] CsStats MySQL 17.12.12 SKAJIbnEJIb csstats_mysql.a running
[ 31] Christmas hat 0.3 AMXX.Shop christmas_hat_r running
[ 32] Custom Models 1.3.2 neugomon custom_models.a running
[ 33] unknown unknown unknown custom_m4a1.amx paused
[ 34] unknown unknown unknown custom_deagle.a paused
[ 35] unknown unknown unknown custom_awp.amxx paused
[ 36] unknown unknown unknown custom_ak47.amx paused
[ 37] Check Steam Players 1.0 Leo_[BH] steam_check.amx running
[ 38] unknown unknown unknown Steam_Bonus.amx running
[ 39] ScreenMaker 1.1 neygomon screen_maker.am running
[ 40] Stop the Bastards 1.6.6 F@nt0M stop_the_bastar running
[ 41] SpecList 1.4 pUzzlik spectlist.amxx running
[ 42] Silly C4 1.1 Cheap_Suit sillyc4.amxx running
[ 43] resetscore(ReAPI) 1.0 Phantom resetscore.amxx running
[ 44] CT Bomb Cracker 0.0.4 Vaqtincha re_ct_bomb_crac stopped
[ 45] Players Menu 1.7 neugomon players_menu.am running
[ 46] Ping Control 1.31 neygomon Ping_Control.am running
[ 47] Mode 2x2 2.5re s1lent mode.amxx running
[ 48] Money HUD Effect 1.15 Sh!nE / Safety1s money_hud_effec running
[ 49] Descriptive 'Fire in t 0.1 VEN GrenadeInfo.amx running
[ 50] unknown unknown unknown gamename_change running
[ 51] [182] Top Award RBS 17.10.30 SKAJIbnEJIb topaward_rbs.am running
[ 52] HUD Message 1.5 neygomon hud_message.amx running
[ 53] [ReAPI] No Team Flash 0.0.2 Vaqtincha no_team_flash.a running
[ 54] NameChangeTime 0.0.1 Vaqtincha block_change_ni running
[ 55] Weapon Icon 1.2 hoboman313/Zenix weapon_icon.amx running
[ 56] Win Messages 1.0 neygomon win_messages.am running
[ 57] Simple Respawn 0.6b Safety1st Deathmatch.amxx running
[ 58] Lite MapChooser 2.6 neygomon Mapmanager_CSDM running
[ 59] Maps Menu 1.4.1 neugomon Mapsmenu_CSDM.a running
[ 60] NoWEapon 2.6 Lev NoWeaponCSDM.am running
[ 61] Train Killer 1.0 Pastout! Anti_parovoz.am running
[ 62] MG Grab 1.0 Nickron Grab.amxx running
[ 63] Hook 1.1 AcE hook.amxx running
[ 64] [ReAPI] Parachute 1.1.1 ReHLDS Team Parachute.amxx running
[ 65] KnifeBot Detector 0.9.9 Mistrick knifebot_detect running
65 plugins, 59 running
Исходный код
#include <amxmodx>
#include <cstrike>
#include <amxmisc>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <colorchat>

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

#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","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", "0" ) // Использовать рандомный цвет (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", "350" ) // Скорость (По умолчанию: 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_E || get_user_flags(id) & ADMIN_BAN)
client_cmd(id, "spk MG_hook/mg_menu.wav")
{
new menu = menu_create("\y[\rМеню смотрящего\y] ^n\yПользоваться Только Техстурах","menu_hook")

menu_additem(menu,"Взять \r[\yКомплект Гранат\r]", "1", 0)
menu_additem(menu,"Взять \r[\yAWP = 10 Патронов\r]", "2", 0)
menu_additem(menu,"Взять \r[\yВысокий Прыжок\r]", "3", 0)
menu_additem(menu,"Выдать \r[\yЖизни Игрокам\r]", "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[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[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[Hook] ^4Вы взяли: ^3Высокий Прыжок")
}
}
case 4:
{
{
HEALTHMenu(id)
}
}
}
return PLUGIN_HANDLED
}

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

public HEALTHMenu(id)
{
if(get_user_flags(id) & ADMIN_RCON)
{
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[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,"[Hook] Админ %s дал возможность возможность использовать hook",name)
client_print(i,print_chat,"[Hook] Забиндите '+hook' на кнопку")
}
else
client_print(i,print_chat,"[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,"[Hook] Админ %s дал возможность возможность использовать hook",name)
client_print(pid,print_chat,"[Hook] Забиндите '+hook' на кнопку")
}
else
client_print(pid,print_chat,"[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()
}
Хук для Админов , флаги раставлены в исходнике
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
2,144
Реакции
1,223
Помог
44 раз(а)
О Боги... Откуда вы выдрали код?! Он выглядит, как будто его из задницы вытащили.

Ничего не смущает?
Код:
if(get_user_flags(id) & ADMIN_LEVEL_E || get_user_flags(id) & ADMIN_BAN)
  client_cmd(id, "spk MG_hook/mg_menu.wav")
  {
 
Сообщения
31
Реакции
-4
Помог
3 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
код с древних веков xD
 
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
cub194, дело не в веках, а в неправильном копипасте)
gyka4, client_cmd находится не в теле условия.
 
Сообщения
37
Реакции
2
Предупреждения
100
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Minni, Да есть такое ;DDD
29 Янв 2018
Minni, покажи как должно быть , в скриптенге не силён :D
 
Сообщения
2,144
Реакции
1,223
Помог
44 раз(а)
gyka4, вам уже Sonyx написал, что и как. Перенесите строку client_cmd(id, "spk MG_hook/mg_menu.wav") в тело функции.
Иными словами:
Код:
if(get_user_flags(id) & ADMIN_LEVEL_E || get_user_flags(id) & ADMIN_BAN) {
    client_cmd(id, "spk MG_hook/mg_menu.wav")
 
Сообщения
37
Реакции
2
Предупреждения
100
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Minni, Вот так ?
Код:
if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_KICK)
{
    new menu = menu_create("\rMG Hook: \yМеню смотрящего ^n\dRemake Nickron ^n\d˙·٠●• •●٠·˙","menu_hook")

    client_cmd(id, "spk MG_hook/mg_menu.wav")
 
Сообщения
2,144
Реакции
1,223
Помог
44 раз(а)
gyka4, над new menu = menu_create("\rMG Hook: \yМеню смотрящего ^n\dRemake Nickron ^n\d˙·٠●• •●٠·˙","menu_hook")
 
Сообщения
29
Реакции
62
Чисто рекомендации
C++:
    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,"[Hook] Админ %s дал возможность возможность использовать hook",name)
                    client_print(i,print_chat,"[Hook] Забиндите '+hook' на кнопку")
                }
                else
                    client_print(i,print_chat,"[Hook] Админ %s отнял возможность возможность использовать hook",name)
            }
        }
    }
-->
C++:
    if (equal(szarg1,"@ALL"))
    {
        new aPlayers[32];
        new iCount, iPlr;
    
        get_players(aPlayers, iCount, "ac");

        for (new i; i < iCount; i++)
        {
            iPlr = aPlayers[i];
        
            canusehook[iPlr-1] = mode; // ...
        
            if(mode)
            {
                client_print(iPlr,print_chat,"[Hook] Админ %s дал возможность возможность использовать hook",name)
                client_print(iPlr,print_chat,"[Hook] Забиндите '+hook' на кнопку")
            }
            else
                client_print(iPlr,print_chat,"[Hook] Админ %s отнял возможность возможность использовать hook",name)
        }
    }
Код:
if(!is_user_connected(id) || !is_user_alive(id))
-->
Код:
if(!is_user_alive(id))
Код:
if(get_user_flags(id) & ADMIN_LEVEL_E || get_user_flags(id) & ADMIN_KICK))
-->
Код:
if(get_user_flags(id) & ADMIN_LEVEL_E | ADMIN_KICK))
C++:
        if(!is_user_alive(tempid))
        {
        }
                else if(get_user_health(tempid) < 250)
                {
                // ...
Бегло.. Дальше смотреть не стал..
 
Последнее редактирование:
Сообщения
37
Реакции
2
Предупреждения
100
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
SerGrib, как вообще код , стоить такое юзать ???
 
Сообщения
29
Реакции
62
wopox1337, больше скажу, я разбирал все по полочкам, когда учил что из себя это представляет.

Внимательно посмотри выше, у него проверка (логически) именно ИЛИ ||.
Если бы это было И &&, тогда да, тут пришлось бы проверить что возвращает битовое "вхождение" if((get_user_flags(id) & (ADMIN_LEVEL_E | ADMIN_KICK)) == ADMIN_LEVEL_E | ADMIN_KICK).

get_user_flags() вернет сумму битов вхождения, и 0 - если биты не входят (хотя тут насколько понимаю это тоже бит).
Так, если у игрока будет наличие "флага" ADMIN_LEVEL_E, get_user_flags() и вернет ADMIN_LEVEL_E ((1 << 16) // int 65536), с ADMIN_KICK все так же. Если флагов - 2, вернется их "сумма". Тут я немного колибаюсь в терминах, поэтому поправьте мои ошибки если шо не так. Достойных манулов не нашел (где поднобно описывалась бы и терминология, и примеры с использованием в условиях), но их логическую часть кое-как понимаю.

Ты и сам прекрасно понимаешь, что в павне (как и в полноценных ЯП) условие вернет true, если его выражение > 0))

Ошибка моя только в том, что я скобку потерял.
if(get_user_flags(id) & ADMIN_LEVEL_E | ADMIN_KICK)) -->if(get_user_flags(id) & (ADMIN_LEVEL_E | ADMIN_KICK))

Ох.. если придирка к опечатке, тут лажанул.... выражение всегда логически вернет true...
Лайкосну как набью сообщения :thank_you:
 
Последнее редактирование:
Сообщения
2,713
Реакции
2,993
Помог
59 раз(а)
моя только в том, что я скобку потерял.
https://ideone.com/aiDM3A - скобочки решают. Иначе у тебя always true будет.

C++:
#include <iostream>
using namespace std;
 
int main() {
    // your code goes here
    int bitSummA = (1 << 16);
    int bitSummB = (1 << 15);
 
    int bitSummC = (/*1 << 16 |*/ 1 << 1 | 1 << 5);
 
    printf("<<< CASE_1 = %s! \n", (bool)((1 << 1 | 1 << 5) & bitSummB | bitSummA) ? "true" : "fasle");
    printf("<<< CASE_2 = %s! \n", (bool)((1 << 16) & bitSummB | bitSummA) ? "true" : "fasle");
 
    return 0;
}
STDOUT:
<<< CASE_1 = true!
<<< CASE_2 = true!
 
Последнее редактирование:
Сообщения
29
Реакции
62
wopox1337, да, я прекрасно понимаю что допустил ошибку. Правда осознал это в самом конце, когда уже доказал пытался доказать свою правоту и еще раз посмотрел на процитированное тобой сообщение. Удалять не хотел, поэтому просто отредактировал :pardon:
Ох.. если придирка к опечатке, тут лажанул.... выражение всегда логически вернет true...
скобочки решают. Иначе у тебя always true будет.
Часто бываю невнимательным. скобку закрыл, но почему-то не открыл.. а ведь чаще бывает наоборот :rofl:
еще и скопипастил вместе с "флагом" в "оригинальный" код...
Что заметил - спасибо :thank_you:

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

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу