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

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

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

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

Как прописать флаг доступа?

, ACCESS =
Статус пользователя Julian
сообщение 27.1.2016, 4:32
Сообщение #1
Стаж: 10 лет

Сообщений: 34
Благодарностей: 8
Полезность: < 0

Нужно сделать плагин для вип,в файле ini есть строка ACCESS = в конце,что нужно указать на против нее? прописал ADMIN_LEVEL_H,все заблокировалось,как правильно прописать? И еще в самом плагине нужно прописать так как в меню есть что то для vip,а что то для админов
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя offtop2012
сообщение 27.1.2016, 8:44
Сообщение #2


Стаж: 13 лет

Сообщений: 878
Благодарностей: 126
Полезность: 356

скинь плагин, все файлы
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Julian
сообщение 27.1.2016, 20:38
Сообщение #3
Стаж: 10 лет

Сообщений: 34
Благодарностей: 8
Полезность: < 0

CODE
#include <amxmodx>
#include <hamsandwich>

new const KNIFE_VERSION[] = "2.2"
new const KNIFE_FILE[] = "addons/amxmodx/configs/knifes.ini"

#define KNIFE_NAME 0
#define KNIFE_P_MODEL 1
#define KNIFE_V_MODEL 2
#define KNIFE_ACCESS 12

new const g_TypeList[][] = { "NAME", "P_MODEL", "V_MODEL", "DEPLOY", "HIT1", "HIT2", "HIT3", "HIT4",\
"HITWALL", "SLASH1", "SLASH2", "STAB", "ACCESS" }

new const g_Default_Knife[][] = { "Default", "models/p_knife.mdl", "models/v_knife.mdl", "weapons/knife_deploy1.wav",\
"weapons/knife_hit1.wav", "weapons/knife_hit2.wav", "weapons/knife_hit3.wav", "weapons/knife_hit4.wav",\
"weapons/knife_hitwall1.wav", "weapons/knife_slash1.wav", "weapons/knife_slash2.wav",\
"weapons/knife_stab.wav", "" }

new Array:gx_InfoData[13]
new Array:gx_InfoCommands
new g_PlrModelNum[33]

new bool:g_bIsAlive[33]

#define m_pPlayer 41
#define IsValidPlr(%1) ( 1 <= %1 <= g_iMaxPlayers )

new g_cvar_menu_drop, g_cvar_enable, g_cvar_menuname[64], g_cvar_no4you[32], g_cvar_current[32]
new g_iMaxPlayers

public plugin_precache()
{
register_plugin("Knife Selector", KNIFE_VERSION, "ReymonARG")
register_cvar("knife_selector", KNIFE_VERSION, FCVAR_SPONLY | FCVAR_SERVER)
g_iMaxPlayers = get_maxplayers()

static i
for( i = 0; i < 13; i++)
{
gx_InfoData[i] = ArrayCreate(128, 1)
}
gx_InfoCommands = ArrayCreate(32, 1)

load_knifes_list()

register_clcmd("say", "Hook_Say")
register_clcmd("say_team", "Hook_Say")

RegisterHam(Ham_Item_Deploy, "weapon_knife", "weapon_change", 1)
RegisterHam(Ham_CS_Item_CanDrop, "weapon_knife", "weapon_drop", 1)
RegisterHam(Ham_Spawn, "player", "fw_Spawn_post", 1)
RegisterHam(Ham_Killed, "player", "fw_Killed_post", 1)
register_forward(FM_EmitSound, "fw_EmitSound")
register_forward(FM_ClientPutInServer, "fw_ClientPutInServer")
register_forward(FM_ClientDisconnect, "fw_Killed_post")
}

/*===============================================================================
===================
[Stock`s & Some Func`s :D]
================================================================================
==================*/
stock load_knifes_list()
{
static StrData[150], StrLeft[32], StrRight[128], i, InfoNum, len, len2
static f, bool:IsInSettings; IsInSettings = true

if( !(f = fopen(KNIFE_FILE, "rt") ) )
return set_fail_state("Plugin canґt Found Knife File")

for( i = 0; i < 13; i++)
ArrayPushString(gx_InfoData[i], g_Default_Knife[i])

while( !feof(f) )
{
fgets(f, StrData, 149)
if( StrData[0] == '/' && StrData[1] == '/' || StrData[0] == ';' || StrData[0] == ' ' || StrData[0] == '^n') continue
replace(StrData, 149, "^n", "")

if( StrData[0] != '[' && IsInSettings )
{
strtok(StrData, StrLeft, 31, StrRight, 127, '=')
trim(StrLeft); trim(StrRight)

if( equali(StrLeft, "ENABLE") )
{
g_cvar_enable = str_to_num(StrRight)
}
else if( equali(StrLeft, "MENU_IN_DROP") )
{
g_cvar_menu_drop = str_to_num(StrRight)
}
else if( equali(StrLeft, "MENU_NAME") )
{
copy(g_cvar_menuname, 63, StrRight)
remove_quotes(g_cvar_no4you)
replace_menu_colors(g_cvar_menuname, 63)
}
else if( equali(StrLeft, "NO_FOR_YOU") )
{
copy(g_cvar_no4you, 31, StrRight)
remove_quotes(g_cvar_no4you)
replace_menu_colors(g_cvar_no4you, 31)
}
else if( equali(StrLeft, "CURRENT") )
{
copy(g_cvar_current, 31, StrRight)
remove_quotes(g_cvar_current)
replace_menu_colors(g_cvar_current, 31)
}
else if( equali(StrLeft, "COMMANDS") )
{
while( StrRight[0] != 0 && strtok(StrRight, StrLeft, 31, StrRight, 127, ',') )
{
trim(StrLeft); trim(StrRight); remove_quotes(StrLeft)
ArrayPushString(gx_InfoCommands, StrLeft)
}
}

continue
}
else if( StrData[0] == '[' && StrData[1] == '/' && IsInSettings )
{
IsInSettings = false
}
else if( !IsInSettings )
{
if( StrData[0] == '[' )
{
len = ArraySize(gx_InfoData[KNIFE_NAME])
for( i = 1; i < 13; i++)
{
len2 = ArraySize(gx_InfoData[i] )
while( len > len2 )
{
ArrayPushCell(gx_InfoData[i], 0)
len2++
}
while( len < len2 )
{
ArrayDeleteItem(gx_InfoData[i], --len2)
}
}

replace(StrData, 149, "]", "")
ArrayPushString(gx_InfoData[0], StrData[1])

continue
}
else
{
strtok(StrData, StrLeft, 31, StrRight, 127, '=')
trim(StrLeft); trim(StrRight); remove_quotes(StrRight)

InfoNum = search_array_num(StrLeft)
if( InfoNum != -1 )
{
ArrayPushString(gx_InfoData[InfoNum], StrRight)
}

continue
}
}
}

len = ArraySize(gx_InfoData[KNIFE_NAME])
for( i = 1; i < 13; i++)
{
len2 = ArraySize(gx_InfoData[i] )
while( len > len2 )
{
ArrayPushCell(gx_InfoData[i], 0)
len2++
}
while( len < len2 )
{
ArrayDeleteItem(gx_InfoData[i], --len2)
}
}

precache_knifes()
return len
}

stock search_array_num( const StrData[] )
{
static i
for( i = 1; i < sizeof(g_TypeList); i++)
{
if( equali(g_TypeList[i], StrData) )
return i
}

return -1
}

stock precache_knifes()
{
static i, j, R, StrData[128], len; len = ArraySize(gx_InfoData[KNIFE_NAME])

for( i = 0; i < len; i++)
{
for( j = 1; j < 12; j++)
{
ArrayGetString(gx_InfoData[j], i, StrData, 127)
if( StrData[0] )
{
R = knifes_file_exists(j, StrData)
if( R != -1 )
{
engfunc(R, StrData)
}
else
{
ArraySetCell(gx_InfoData[j], i, 0)
}
}
}

ArrayGetString(gx_InfoData[KNIFE_ACCESS], i, StrData, 127)
ArraySetCell(gx_InfoData[KNIFE_ACCESS], i, read_flags(StrData))
}

return 1
}

stock knifes_file_exists(const num, const DIR[])
{
static R, Buffer[135]
if( num != KNIFE_V_MODEL && num != KNIFE_P_MODEL )
{
formatex(Buffer, 134, "sound/")
R = EngFunc_PrecacheSound
}
else
{
Buffer[0] = '^0' // Reset Because is a static
R = EngFunc_PrecacheModel
}
add(Buffer, 134, DIR)

if( file_exists(Buffer) )
return R

return -1
}

stock knifes_set_models(id)
{
static StrData[128]

ArrayGetString(gx_InfoData[KNIFE_P_MODEL], g_PlrModelNum[id], StrData, 127)
set_pev(id, pev_weaponmodel2, StrData[0] ? StrData : g_Default_Knife[KNIFE_P_MODEL])

ArrayGetString(gx_InfoData[KNIFE_V_MODEL], g_PlrModelNum[id], StrData, 127)
set_pev(id, pev_viewmodel2, StrData[0] ? StrData : g_Default_Knife[KNIFE_V_MODEL])

return 1
}

stock replace_menu_colors(string[], len)
{
replace_all(string, len, "!r", "\r")
replace_all(string, len, "!y", "\y")
replace_all(string, len, "!w", "\w")
replace_all(string, len, "!d", "\d")

return 1
}

/*===============================================================================
===================
[ForWard`s CallBack`s :D]
================================================================================
==================*/
public weapon_change( iEnt )
{
if( !pev_valid(iEnt) )
return HAM_IGNORED

static id; id = get_pdata_cbase(iEnt, m_pPlayer, 4)
knifes_set_models(id)

return HAM_IGNORED
}

public weapon_drop( iEnt )
{
if( !pev_valid(iEnt) || !g_cvar_menu_drop || !g_cvar_enable )
return HAM_IGNORED

static id; id = get_pdata_cbase(iEnt, m_pPlayer, 4)

main_menu(id)

return HAM_IGNORED
}

public fw_Spawn_post( id )
{
g_bIsAlive[id] = true
}

public fw_Killed_post( id )
{
g_bIsAlive[id] = false
}

public fw_ClientPutInServer( id )
{
g_PlrModelNum[id] = 0
}

public fw_EmitSound(iEnt, iChannel, const Sound[] )
{
if( !IsValidPlr(iEnt) || !g_bIsAlive[iEnt] || ( iChannel != 1 && iChannel != 3 ) )
return FMRES_IGNORED

static i, StrData[128]
for( i = 3; i < 13; i++ )
{
if( equali(g_Default_Knife[i], Sound) )
{
ArrayGetString(gx_InfoData[i], g_PlrModelNum[iEnt], StrData, 127)
if( StrData[0] )
{
engfunc(EngFunc_EmitSound, iEnt, CHAN_WEAPON, StrData, 1.0, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
else
{
return FMRES_IGNORED
}
}
}

return FMRES_IGNORED
}

public Hook_Say( id )
{
static i, StrData[32], StrSay[32], len
read_args(StrSay, 31); len = ArraySize(gx_InfoCommands)
remove_quotes(StrSay)

for( i = 0; i < len; i++)
{
ArrayGetString(gx_InfoCommands, i, StrData, 31)

if( equali(StrData, StrSay) )
{
main_menu(id)
return PLUGIN_HANDLED
}
}

return PLUGIN_CONTINUE
}

/*===============================================================================
===================
[Menu Settings Part :D]
================================================================================
==================*/
stock main_menu(id, page=0)
{
if( !g_cvar_enable )
return PLUGIN_HANDLED

static menu; menu = menu_create(g_cvar_menuname, "main_menu_func")

static i, StrData[64], len, PlrFlags, Flags
len = ArraySize(gx_InfoData[KNIFE_NAME]); PlrFlags = get_user_frags(id)
for( i = 0; i < len; i++)
{
ArrayGetString(gx_InfoData[KNIFE_NAME], i, StrData, 63)
Flags = ArrayGetCell(gx_InfoData[KNIFE_ACCESS], i)
if( !(PlrFlags & Flags) && Flags )
{
format(StrData, 63, "\d%s \R%s", StrData, g_cvar_no4you)
}
else if( i == g_PlrModelNum[id] )
{
format(StrData, 63, "\d%s \R%s", StrData, g_cvar_current)
}

menu_additem(menu, StrData)
}

menu_display(id, menu, page)

return PLUGIN_HANDLED
}

/*===============================================================================
===================
[Menu Exec Settings Part :D]
================================================================================
==================*/
public main_menu_func(id, menu, item)
{
if( item == MENU_EXIT )
{
return PLUGIN_HANDLED
}

static Flags
Flags = ArrayGetCell(gx_InfoData[KNIFE_ACCESS], item)

if( (get_user_frags(id) & Flags || !Flags) && item != g_PlrModelNum[id] )
{
g_PlrModelNum[id] = item
}
else
{
main_menu(id, item/7)
}

if( get_user_weapon(id) == CSW_KNIFE )
{
knifes_set_models(id)
}

return PLUGIN_HANDLED
}


Файл ini прикрепить не могу,форум не дает вот ткст из него:
[SETTINGS]
ENABLE = 1
MENU_NAME = Knife
MENU_IN_DROP = 1
NO_FOR_YOU = "!r(Only Admins)"
CURRENT = "!y(Current)"
COMMANDS = /knife
[/]

[Hunting]
P_MODEL = models/knife_rus/black/p_black.mdl
V_MODEL = models/VipKnife/v_knife1.mdl
DEPLOY = weapons/knife_deploy1.wav
HIT1 = knife_hit1.wav
HIT2 = knife_hit2.wav
HIT3 = knife_hit3.wav
HIT4 = knife_hit5.wav
HITWALL = knife_hitwall1.wav
SLASH1 = knife_slash1.wav
SLASH2 = knife_slash2.wav
STAB = knife_stab.wav
ACCESS = ? Вписываю здесь флаг "H" и модель блокируется для всех,мне нужно сам плагин на флаг поставить "H" так как плагин для вип у меня,но и ACCESS = должна работать,что бы можно было раскидывать модельки по флагам...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Danjkeee^
сообщение 27.1.2016, 21:32
Сообщение #4
Стаж: 14 лет
Город: Волгоград

Сообщений: 628
Благодарностей: 215
Полезность: 508

Судя по коду напротив вводи необходимый флаг, например
ACCESS = ADMIN_LEVEL_H
Код
ADMIN_ALL          //Everyone
ADMIN_IMMUNITY     //Flag "a", immunity
ADMIN_RESERVATION  //Flag "b", reservation
ADMIN_KICK         //Flag "c", kick
ADMIN_BAN          //Flag "d", ban
ADMIN_SLAY         //Flag "e", slay
ADMIN_MAP          //Flag "f", map change
ADMIN_CVAR         //Flag "g", cvar change
ADMIN_CFG          //Flag "h", config execution
ADMIN_CHAT         //Flag "i", chat
ADMIN_VOTE         //Flag "j", vote
ADMIN_PASSWORD     //Flag "k", sv_password
ADMIN_RCON         //Flag "l", rcon access
ADMIN_LEVEL_A      //Flag "m", custom
ADMIN_LEVEL_B      //Flag "n", custom
ADMIN_LEVEL_C      //Flag "o", custom
ADMIN_LEVEL_D      //Flag "p", custom
ADMIN_LEVEL_E      //Flag "q", custom
ADMIN_LEVEL_F      //Flag "r", custom
ADMIN_LEVEL_G      //Flag "s", custom
ADMIN_LEVEL_H      //Flag "t", custom
ADMIN_MENU         //Flag "u", menus
ADMIN_ADMIN        //Flag "y", default admin
ADMIN_USER         //Flag "z", default user


Отредактировал: Danjkeee^, - 27.1.2016, 21:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 27.1.2016, 21:53
Сообщение #5
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

ACCESS = t
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Julian
сообщение 27.1.2016, 22:11
Сообщение #6
Стаж: 10 лет

Сообщений: 34
Благодарностей: 8
Полезность: < 0

Пробовал оба варианта,ни фига nea.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя simba
сообщение 28.1.2016, 0:41
Сообщение #7
Стаж: 11 лет

Сообщений: 132
Благодарностей: 45
Полезность: 236

Посмотри на конфиг автора и сделай по аналогии
ссылка

а лучше другой плагин используй, там в комментах пишут, что плагин г..

Отредактировал: simba, - 28.1.2016, 0:41
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Julian
сообщение 28.1.2016, 1:51
Сообщение #8
Стаж: 10 лет

Сообщений: 34
Благодарностей: 8
Полезность: < 0

Я читал
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: