Русское сообщество по скриптингу

префиксы в lite_translite  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

префиксы в lite_translite

Сообщение 6u6uka » 29 окт 2017, 13:36

как в плагине lite_translite сделать так чтобы выдавало сразу два префикса? нужно чтобы выдавало [Девушка] [VIP] но при этом чтобы и [VIP] можно было назначить мужчине, при этом девушка это уже другой флаг, я пробую но ничего не получается, скидываю уже со своими изменениями, помогите кто нибудь, с этим бредом
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
6u6uka
 
Сообщения: 12
Зарегистрирован: 29 окт 2017, 13:30
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Php

Re: префиксы в lite_translite

Сообщение артист666 » 29 окт 2017, 15:08

А не проще сделать отдельные префиксы [VIP Девушка] и [Девушка]?
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: префиксы в lite_translite

Сообщение 6u6uka » 29 окт 2017, 17:13

артист666 писал(а):А не проще сделать отдельные префиксы [VIP Девушка] и [Девушка]?

ну я до этого уже додумалса тоже, но не поучается скомпилировать вип плагин с двумя флагами доступа
#define VIP_TAG (1<<2) // vip в таблицу
#define vip_flag ADMIN_LEVEL_H // флаг доступа
#define vip_flag ADMIN_LEVEL_G // флаг доступа

дописываю второй флаг и не компилирует, ругается на второй флаг
Аватара пользователя
6u6uka
 
Сообщения: 12
Зарегистрирован: 29 окт 2017, 13:30
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Php

Re: префиксы в lite_translite

Сообщение артист666 » 29 окт 2017, 21:43

Так и не будет работать.

vip_flag - может быть объявлен только 1 раз.

Записать 2 флага так:
Код: Выделить всё
#define vip_flag ADMIN_LEVEL_H | ADMIN_LEVEL_G  


И проверка должна выглядеть так:
Код: Выделить всё
if((get_user_flags(id) & vip_flag) == vip_flag)
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: префиксы в lite_translite

Сообщение 6u6uka » 30 окт 2017, 05:29

артист666 писал(а):Так и не будет работать.

vip_flag - может быть объявлен только 1 раз.

Записать 2 флага так:
Код: Выделить всё
#define vip_flag ADMIN_LEVEL_H | ADMIN_LEVEL_G     


И проверка должна выглядеть так:
Код: Выделить всё
if((get_user_flags(id) & vip_flag) == vip_flag


ну сейчас компилирует, но все равно не выдает права доступа, может я где накосячил(
#include <amxmodx>
#include <fakemeta>

// #define ADBLOCK 1 // Блокировка рекламы в чате [ По умолчанию выключен ]
#define TAGS 1 // Теги в чате Гл. Админ | Админ | VIP [ По умолчанию включен ]
// #define AES 0 // Поддержка системы армейских званий - AES [ По дефолту выключен ]
// #define DEF_RUS 1 // Русский язык по умолчанию [ По умолчанию английский ]
// #define LOG_MESSAGE 0 // Пишет сообщения в логи hlds (<gamedir>/logs) [ Включать только если статистика или плагин пишет чат ]
#define ADMIN ADMIN_BAN // Флаг доступа для тега "Админ" в чате || Просмотр всего чата
#if defined TAGS
#define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате
#define VIP ADMIN_LEVEL_H // Флаг доступа для тега "VIP" в чате
#define GIRL ADMIN_LEVEL_G // Флаг доступа для тега "Девушка"
#define GREEN_MSG 1 // Зеленый цвет чата админов и випов [ По умолчанию выключен ]
new iSetPlayerTag, iMessageTag[33][64]
#endif

#if defined AES
#include <aes_main>
#endif
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define clr_bit(%1,%2) %1 &= ~(1 << (%2 & 31))

new szMessage[191]
new iPlayerRus[33], iPlayerRusInfo[33]
new iIgnorePlayer

#if defined ADBLOCK
new blockedMsgsCounter, approvedMsgsCounter
new blocked_msgs[128][192], approved_msgs[128][192]
#endif

new const eng[][]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","{","}",":",'"',"<",">","~","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","[","]",";","'",",",".","`","?","/","@","$","^^","&"};
new const rus[][]={"Ф","И","С","В","У","А","П","Р","Ш","О","Л","Д","Ь","Т","Щ","З","Й","К","Ы","Е","Г","М","Ц","Ч","Н","Я","Х","Ъ","ж","Э","Б","Ю","Ё","ф","и","с","в","у","а","п","р","ш","о","л","д","ь","т","щ","з","й","к","ы","е","г","м","ц","ч","н","я","х","ъ","ж","э","б","ю","ё",",",".","'",";", ":","?"};

public plugin_init()
{
register_plugin("Lite Translit", "2.3", "neygomon")
register_cvar("lt_version", "2.3", FCVAR_SERVER | FCVAR_SPONLY)

new const szRegisterClmd[][] =
{
"say /rus", "LangRus",
"say /eng", "LangEng",
"say", "Say",
"say_team", "SayTeam"
}
for(new a; a < sizeof szRegisterClmd; a += 2)
register_clcmd(szRegisterClmd[a],szRegisterClmd[a + 1]);
}

#if defined ADBLOCK
public plugin_cfg()
{
new file_path[64], configsdir[64]
get_localinfo("amxx_configsdir", configsdir, charsmax(configsdir))
formatex(file_path, 63,"%s/lt_blockmessages.ini", configsdir)
new file = fopen(file_path, "rt")
if(file)
{
new buffer[192], i, j
while(!feof(file))
{
fgets(file, buffer, 191)
trim(buffer)

if(buffer[0] == ';') continue

if(buffer[0] != '!')
{
blocked_msgs[i++] = buffer
blockedMsgsCounter++
}
else
{
buffer[0] = '^x20'
trim(buffer)
approved_msgs[j++] = buffer
approvedMsgsCounter++
}
}
fclose(file)
}
else log_to_file("error_lt.log", "[Ошибка] Файл ^"%s^" не найден!", file_path)
}
#endif

public client_putinserver(id)
{
if(is_user_hltv(id) || is_user_bot(id))
{
set_bit(iIgnorePlayer, id)
return
}
#if defined TAGS
if(get_bit(iSetPlayerTag, id)) return
switch(CheckFlags(id))
{
case 0: iMessageTag[id] = ""
case 1: iMessageTag[id] = "^4[Гл. Админ] "
case 2: iMessageTag[id] = "^4[Админ] "
case 3: iMessageTag[id] = "^4[VIP] "
case 4: iMessageTag[id] = "^4[Девушка] [VIP] "
}
set_bit(iSetPlayerTag, id)
#endif
#if defined DEF_RUS
iPlayerRus[id] = true
#endif
}

public client_disconnect(id)
{
clr_bit(iIgnorePlayer, id)
#if defined TAGS
clr_bit(iSetPlayerTag, id)
#endif
}

public LangRus(id)
{
if(!iPlayerRus[id])
{
iPlayerRus[id] = true
PrintMsg(id, 0, "^1[^4УдМуРт^1] ^4Русский чат ^3активирован!")
}
else PrintMsg(id, 0, "^1[^4УдМуРт^1] ^4Русский чат ^3уже ^4активирован!")
}

public LangEng(id)
{
if(iPlayerRus[id])
{
iPlayerRus[id] = false
PrintMsg(id, 0, "^1[^4LT^1] ^4Английский чат ^3активирован!")
}
else PrintMsg(id, 0, "^1[^4LT^1] ^4Английский чат ^3уже ^4активирован!")
}

public Say(id)
return SayHandler(id, false)

public SayTeam(id)
return SayHandler(id, true)

public SayHandler(id, bool:is_say_team)
{
if(get_bit(iIgnorePlayer, id)) return 0

read_args(szMessage, charsmax(szMessage))
remove_quotes(szMessage)
#if defined ADBLOCK
if(!szMessage[0] || szMessage[0] == '/' || Flood_Control(id, szMessage)) return PLUGIN_HANDLED_MAIN // блочим пустое сообщение, слеш и спам в чате
#else
if(!szMessage[0] || szMessage[0] == '/') return PLUGIN_HANDLED_MAIN // блочим пустое сообщение и слеш в чате
#endif
while(replace_all2(szMessage, charsmax(szMessage), "%", "")) {} // фиксим багу с %S%S%S%S%S и им подобными
if(!iPlayerRusInfo[id])
{
if(!iPlayerRus[id])
{
iPlayerRusInfo[id] = true
PrintMsg(id, 0, "^1[^4УдМуРт^1] ^4У ^3Вас ^4есть возможность писать ^3по-русски. ^4Наберите ^3/rus ^4или ^3/eng ^4для переключения.")
}
}
if(iPlayerRus[id])
{
for(new i; i < sizeof eng; i++)
while(replace_all2(szMessage, charsmax(szMessage), eng[i], rus[i])) {}
}
new szFormatedMsg[191], szLen, szName[32], iAlive = is_user_alive(id), iTeam = get_pdata_int(id, 114)

get_user_name(id, szName, charsmax(szName))
if(is_say_team)
{
switch(iTeam)
{
case 1: szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "%s(Террорист) ", iAlive ? "^1" : "^1*Мертвый* ")
case 2: szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "%s(Мент) ", iAlive ? "^1" : "^1*Мертвый* ")
case 3: szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^1(Наблюдатель) ")
}
}
else
{
if(iTeam == 3) szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^1(Наблюдатель) ")
else szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%s", iAlive ? "^1" : "^1*Мертвый* ")
}
#if defined AES
static AESLvl[33][64], aStats[AES_ST_END]
aes_get_player_stats(id, aStats)
aes_get_level_name(aStats[AES_ST_LEVEL], AESLvl[id], 63, LANG_SERVER)

szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "^4[%s] ", AESLvl[id])
#endif
#if defined TAGS
#if defined GREEN_MSG
if(equal(iMessageTag[id], ""))
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%s^3%s^1 : ", iMessageTag[id], szName)
else
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%s^3%s^1 :^4 ", iMessageTag[id], szName)
#else
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%s^3%s^1 : ", iMessageTag[id], szName)
#endif
#else
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "^3%s^1 : ", szName)
#endif
szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%s", szMessage)

static players[32], pcount; get_players(players, pcount, iAlive ? "ac" : "bc")
if(is_say_team)
{
for(new i; i < pcount; i++)
if(get_user_flags(players[i]) & ADMIN || (iTeam == get_user_team(players[i])))
PrintMsg(players[i], id, szFormatedMsg)
}
else
{
for(new i; i < pcount; i++)
PrintMsg(players[i], id, szFormatedMsg)
}
#if defined LOG_MESSAGE
new authid[32], userteam[16]
get_user_authid(id, authid, 31)
get_user_team(id, userteam, 15)
log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", szName, get_user_userid(id), authid, userteam, is_say_team ? "say_team" : "say" , szMessage)
#endif
return PLUGIN_HANDLED
}

stock PrintMsg(const iReceiver, const iSender, const szMessage[], any:...)
{
new szMsg[191]
vformat(szMsg, charsmax(szMsg), szMessage, 4)
message_begin(MSG_ONE_UNRELIABLE, 76, _, iReceiver)
write_byte(iSender ? iSender : iReceiver)
write_string(szMsg)
message_end()
}
#if defined ADBLOCK
bool:Flood_Control(id, iMsg[])
{
for(new i; i < approvedMsgsCounter; i++)
if(containi(iMsg, approved_msgs[i]) != -1) return false

static last_msg[33], said_len
said_len = strlen(iMsg)
if(said_len > 13 && last_msg[id] == said_len) return true
last_msg[id] = said_len

for(new i; i < blockedMsgsCounter; i++)
if(containi(iMsg, blocked_msgs[i]) != -1) return true
return false
}
#endif
#if defined TAGS
CheckFlags(id)
{
static iFlags
iFlags = get_user_flags(id)
if(iFlags & GL_ADMIN) return 1
else if(iFlags & ADMIN) return 2
else if(iFlags & VIP) return 3
return 0
}
#endif
// serfreeman1337 fixed. thx =)
stock replace_all2(string[], len, const what[], const with[])
{
new pos
if((pos = contain(string, what)) == -1) return 0
new total, with_len = strlen(with), diff = strlen(what) - with_len, total_len = strlen(string), temp_pos
while(total_len + with_len < len && replace(string[pos], len - pos, what, with) != 0)
{
total++
pos += with_len
total_len -= diff
if (pos >= total_len) break
temp_pos = contain(string[pos], what)
if (temp_pos == -1) break
pos += temp_pos
}
return total
}

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <dhudmessage>

#define PLUGIN "IDEAL VIP by Ba/lePa"
#define VERSION "2.9"
#define AUTHOR "Ba/lePa"

#define VIP_TAG (1<<2) // vip в таблицу
#define vip_flag ADMIN_LEVEL_H | ADMIN_LEVEL_G // флаги доступа

//#define music // Если звук при входе админа не нужен, то поставьте // перед #define


#define MAX_TEXT_LENGTH 200
#define MAX_NAME_LENGTH 40
new bool:gl_not_map

new g_Round, g_Weapon[33], g_vip
new PlayerBomb[33] = false
new cvar_connect, cvar_red, cvar_green, cvar_blue, cvar_x, cvar_y;
new cvar_prefix
new cvar_round, cvar_open, cvar_show, cvar_chat, cvar_pistols, cvar_funk, cvar_tab
new cvar_health, cvar_health_head, cvar_health_max
new cvar_money, cvar_money_head
new cvar_music
new cvar_damage, cvar_hudsek

new vip_opened[33]
new maxplayers = 0
new SayText
new pistols[6] = {CSW_USP, CSW_GLOCK18, CSW_ELITE, CSW_FIVESEVEN, CSW_P228, CSW_DEAGLE}
new bool: g_chosen[33] = false;

new string[32]

new hud;
public plugin_precache()
{
if(check_map())
{
gl_not_map = true
return;
}

#if defined(music)
precache_sound("IDEAL_VIP/ideal_sound.wav")
#endif
}

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

if(gl_not_map)
return;

register_dictionary("ideal_vip.txt")

maxplayers = get_maxplayers();

register_message( get_user_msgid( "ScoreAttrib" ), "msgScoreAttrib" )

register_event("HLTV", "round_start", "a", "1=0", "2=0")
register_event("TextMsg", "round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");

RegisterHam(Ham_Killed, "player", "player_killed", 1)
RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
RegisterHam(Ham_TakeDamage, "player", "ham_damage")

register_clcmd("say /vipmenu", "main_menu")
register_clcmd("say_team /vipmenu", "main_menu")

register_clcmd("say /vip_menu", "main_menu")
register_clcmd("say_team /vip_menu", "main_menu")

register_clcmd("vipmenu", "main_menu")

register_clcmd("say /vips", "vip_online")
register_clcmd("say_team /vips", "vip_online")

register_clcmd("say /adminka", "admin_motd")
register_clcmd("say_team /adminka", "admin_motd")

register_clcmd("say /vipka", "vip_motd")
register_clcmd("say_team /vipka", "vip_motd")


cvar_round = register_cvar("amx_vipround", "2")
cvar_open = register_cvar("amx_vipzaround", "0")
cvar_show = register_cvar("amx_vipshow","1")
cvar_chat = register_cvar("amx_chatshow", "1")
cvar_pistols = register_cvar("amx_vipautopistols", "0")
cvar_funk = register_cvar("amx_vipautoset", "1")
cvar_health = register_cvar("amx_viphealth", "30")
cvar_health_head = register_cvar("amx_viphealth_head", "60")
cvar_health_max = register_cvar("amx_viphealth_max", "100")
cvar_money = register_cvar("amx_vipmoney", "500")
cvar_money_head = register_cvar("amx_vipmoney_head", "1000")
cvar_tab = register_cvar("amx_viptab", "1")
cvar_connect = register_cvar("amx_showconnect", "2")
cvar_red = register_cvar("amx_vipRED", "100")
cvar_green = register_cvar("amx_vipGREEN", "100")
cvar_blue = register_cvar("amx_vipBLUE", "100")
cvar_x = register_cvar("amx_vipXcoord", "-1.0")
cvar_y = register_cvar("amx_vipYcoord", "0.6")
cvar_prefix = register_cvar("amx_vip_prefix", "!y[!gУдМуРт!y]");
#if defined(music)
cvar_music = register_cvar("amx_vipMusic", "1");
#endif
cvar_damage = register_cvar("amx_vipdamager", "1");
cvar_hudsek = register_cvar("amx_viphudsek", "5.0");

get_pcvar_string(cvar_prefix, string, charsmax(string))

SayText = get_user_msgid("SayText")
hud = CreateHudSyncObj();
}

public plugin_cfg()
{
new configsdir[128]

get_localinfo("amxx_configsdir", configsdir, charsmax(configsdir))

return server_cmd("exec %s/ideal_vip.cfg", configsdir);
}

public admin_motd(id, level, cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_CONTINUE;

show_motd(id, "adminka.txt", "Как купить админку")

return PLUGIN_CONTINUE;
}

public vip_motd(id, level, cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_CONTINUE;

show_motd(id, "vipka.txt", "Как купить випку")

return PLUGIN_CONTINUE;
}

public client_putinserver(id)
{
client_cmd(id, "bind ^"F5^" ^"vipmenu^"")
g_Weapon[id] = 0;

if(is_user_cool(id))
set_task(0.5, "vip_connect", id + 132)
}

public vip_connect(TASKID)
{
new id = TASKID - 132;

#if defined(music)
if(get_pcvar_num(cvar_music))
client_cmd(0, "spk IDEAL_VIP/ideal_sound.wav");
#endif

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

switch(get_pcvar_num(cvar_connect))
{
case 1:
{
chat_color(0, "%L", id, "VIP_CONNECT", string, name)
}
case 2:
{
set_hudmessage(get_pcvar_num(cvar_red), get_pcvar_num(cvar_green), get_pcvar_num(cvar_blue), get_pcvar_float(cvar_x), get_pcvar_float(cvar_y), 0, 0.0, 5.0, 0.0, 0.0, -1)
show_hudmessage(0, "%L", id, "VIP_CONNECT1", name)
}
case 3:
{
set_dhudmessage(get_pcvar_num(cvar_red), get_pcvar_num(cvar_green), get_pcvar_num(cvar_blue), get_pcvar_float(cvar_x), get_pcvar_float(cvar_y), 0, 0.0, 5.0, 0.0, 0.0, false)
show_dhudmessage(0, "%L", id, "VIP_CONNECT1", name)
}
case 4:
{
chat_color(0, "%L", id, "VIP_CONNECT", string, name)

set_hudmessage(get_pcvar_num(cvar_red), get_pcvar_num(cvar_green), get_pcvar_num(cvar_blue), get_pcvar_float(cvar_x), get_pcvar_float(cvar_y), 0, 0.0, 5.0, 0.0, 0.0, -1)
show_hudmessage(0, "%L", id, "VIP_CONNECT1", name)
}
case 5:
{
chat_color(0, "%L", id, "VIP_CONNECT", string, name)

set_dhudmessage(get_pcvar_num(cvar_red), get_pcvar_num(cvar_green), get_pcvar_num(cvar_blue), get_pcvar_float(cvar_x), get_pcvar_float(cvar_y), 0, 0.0, 5.0, 0.0, 0.0, false)
show_dhudmessage(0, "%L", id, "VIP_CONNECT1", name)
}
}
}

public client_disconnect(id)
{
g_Weapon[id] = 0;
g_chosen[id] = false;
}

public round_start()
g_Round++

public round_restart()
g_Round = 0

public player_spawn(Player)
{
PlayerBomb[Player] = false
vip_opened[Player] = 0;
if(is_user_cool(Player))
{
if(g_Round == 0)
first_menu(Player)

if(is_user_alive(Player))
{
if(get_pcvar_num(cvar_funk) == 1)
task_funk(Player);
if(get_pcvar_num(cvar_show) == 1 && g_Round >= get_pcvar_num(cvar_round))
main_menu(Player);
}
}
}

public task_funk(id)
{
give_item(id, "weapon_knife")
give_item(id, "item_thighpack")
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")
give_item(id, "item_assaultsuit")
if(PlayerBomb[id])
{
fm_give_item(id, "weapon_c4");
cs_set_user_plant(id);
PlayerBomb[id] = false;
}

if(get_pcvar_num(cvar_pistols))
{
for(new i = 0; i < 6; i++)
fm_strip_user_gun(id, pistols[i])

switch(g_Weapon[id])
{
case 0:
{
first_menu(id);
}
case 1:
{
give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
case 2:
{
give_item(id, "weapon_usp");
cs_set_user_bpammo(id, CSW_USP, 100)
}
case 3:
{
give_item(id, "weapon_glock18");
cs_set_user_bpammo(id, CSW_GLOCK18, 120)
}
}
}
}

public main_menu(id)
{
if(is_user_cool(id))
{
if(is_user_alive(id))
{
if(vip_opened[id] < get_pcvar_num(cvar_open) || get_pcvar_num(cvar_open) == 0)
{
if(g_Round >= get_pcvar_num(cvar_round))
{
new s_Title[64], s_Name[32], s_Pistol[32], szMenuMulti[64]

get_user_name(id, s_Name, charsmax(s_Name))

switch(g_Weapon[id])
{
case 0: s_Pistol = "NONE";
case 1: s_Pistol = "Deagle";
case 2: s_Pistol = "Usp";
case 3: s_Pistol = "Glock";
}

formatex(s_Title, charsmax(s_Title), "%L", id, "VIP_MENU", s_Name)
new i_Menu = menu_create(s_Title, "main_handler", 1);

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU1", s_Pistol)
menu_additem(i_Menu, szMenuMulti, "1", 0)

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU2", s_Pistol)
menu_additem(i_Menu, szMenuMulti, "2", 0)

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU3", s_Pistol)
menu_additem(i_Menu, szMenuMulti, "3", 0)

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU4", s_Pistol)
menu_additem(i_Menu, szMenuMulti, "4", 0)

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU5", s_Pistol)
menu_additem(i_Menu, szMenuMulti, "5", 0)

menu_addblank(i_Menu, 0);

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU6")
menu_additem(i_Menu, szMenuMulti, "6", 0)

menu_addblank(i_Menu, 1);

menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
menu_display(id, i_Menu, 0)
}
else
{
if(get_pcvar_num(cvar_round) == 2)
{
chat_color(id, "%L", id, "VIP_WARNING5", string, get_pcvar_num(cvar_round))
return PLUGIN_HANDLED;
}
else
{
chat_color(id, "%L", id, "VIP_WARNING1", string, get_pcvar_num(cvar_round))
return PLUGIN_HANDLED;
}
}
}
else
chat_color(id, "%L", id, "VIP_WARNING2", string)
}
else
chat_color(id, "%L", id, "VIP_WARNING3", string)
}
else
chat_color(id, "%L", id, "VIP_WARNING4", string)

return PLUGIN_HANDLED;
}

public main_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)

return PLUGIN_HANDLED;
}

new s_Data[6], s_Name[60], i_Access, i_Callback

menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

new i_Key = str_to_num(s_Data)
new name[32]
get_user_name(id, name, charsmax(name))


switch(i_Key)
{
case 1:
{
vip_opened[id]++
if(user_has_weapon(id, CSW_C4))
PlayerBomb[id] = true

strip_user_weapons(id)
task_funk(id)
switch(g_Weapon[id])
{
case 0:
{
first_menu(id);
}
case 1:
{
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
case 2:
{
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100)
}
case 3:
{
give_item(id, "weapon_glock18")
cs_set_user_bpammo(id, CSW_GLOCK18, 120)
}
}

give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)

if(get_pcvar_num(cvar_chat) == 1)
chat_color(0, "%L", id, "VIP_M4A1", string, name)
}
case 2:
{
vip_opened[id]++
if(user_has_weapon(id, CSW_C4))
PlayerBomb[id] = true
strip_user_weapons(id)
task_funk(id)

switch(g_Weapon[id])
{
case 0:
{
first_menu(id);
}
case 1:
{
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
case 2:
{
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100)
}
case 3:
{
give_item(id, "weapon_glock18")
cs_set_user_bpammo(id, CSW_GLOCK18, 120)
}
}

give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)

if(get_pcvar_num(cvar_chat) == 1)
chat_color(0, "%L", id, "VIP_AK47", string, name)

}
case 3:
{
vip_opened[id]++
if(user_has_weapon(id, CSW_C4))
PlayerBomb[id] = true
strip_user_weapons(id)
task_funk(id)

switch(g_Weapon[id])
{
case 0:
{
first_menu(id);
}
case 1:
{
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
case 2:
{
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100)
}
case 3:
{
give_item(id, "weapon_glock18")
cs_set_user_bpammo(id, CSW_GLOCK18, 120)
}
}

give_item(id, "weapon_awp")
cs_set_user_bpammo(id, CSW_AWP, 30)

if(get_pcvar_num(cvar_chat) == 1)
chat_color(0, "%L", id, "VIP_AWP", string, name)


}
case 4:
{
vip_opened[id]++
if(user_has_weapon(id, CSW_C4))
PlayerBomb[id] = true
strip_user_weapons(id)
task_funk(id)

switch(g_Weapon[id])
{
case 0:
{
first_menu(id);
}
case 1:
{
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
case 2:
{
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100)
}
case 3:
{
give_item(id, "weapon_glock18")
cs_set_user_bpammo(id, CSW_GLOCK18, 120)
}
}

give_item(id, "weapon_famas")
cs_set_user_bpammo(id, CSW_FAMAS, 90)

if(get_pcvar_num(cvar_chat) == 1)
chat_color(0, "%L", id, "VIP_FAMAS", string, name)
}
case 5:
{
vip_opened[id]++
if(user_has_weapon(id, CSW_C4))
PlayerBomb[id] = true
strip_user_weapons(id)
task_funk(id)

switch(g_Weapon[id])
{
case 0:
{
first_menu(id);
}
case 1:
{
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
case 2:
{
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100)
}
case 3:
{
give_item(id, "weapon_glock18")
cs_set_user_bpammo(id, CSW_GLOCK18, 120)
}
}

give_item(id, "weapon_scout")
cs_set_user_bpammo(id, CSW_SCOUT, 90)

if(get_pcvar_num(cvar_chat) == 1)
chat_color(0, "%L", id, "VIP_SCOUT", string, name)
}
case 6:
{
first_menu(id);
}
}

menu_destroy(menu);
return PLUGIN_HANDLED;
}

public first_menu(id)
{
if(!is_user_connected(id))
return;

new i_Menu = menu_create("\rЧто вы предпочитаете?", "first_menu_handler")

menu_additem(i_Menu, "\yDeagle", "1", 0)
menu_additem(i_Menu, "\yGlock", "2", 0)
menu_additem(i_Menu, "\rUsp", "3", 0)


menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
menu_display(id, i_Menu, 0)
}

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

new s_Data[6], s_Name[60], i_Access, i_Callback

menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

new i_Key = str_to_num(s_Data)

for(new i = 0; i < 6; i++)
fm_strip_user_gun(id, pistols[i])

switch(i_Key)
{
case 1:
{
g_chosen[id] = true;
g_Weapon[id] = 1;
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)
}
case 2:
{
g_chosen[id] = true;
g_Weapon[id] = 3;
give_item(id, "weapon_glock18")
cs_set_user_bpammo(id, CSW_GLOCK18, 120)
}
case 3:
{
g_chosen[id] = true;
g_Weapon[id] = 2;
give_item(id, "weapon_usp")
cs_set_user_bpammo(id, CSW_USP, 100)
}
}

menu_destroy(menu);
return PLUGIN_CONTINUE;
}

public msgScoreAttrib(const MsgId, const MsgType, const MsgDest)
{
if(get_pcvar_num(cvar_tab))
{
if(is_user_cool(get_msg_arg_int(1)) && !get_msg_arg_int(2))
set_msg_arg_int(2, ARG_BYTE, VIP_TAG)
}
}

public vip_online(id)
{
g_vip = 0;

new Len, message[512], name[32]
new Player

for(Player = 1; Player <= maxplayers; Player++)
{
if(is_user_cool(Player))
{
g_vip++
get_user_name(Player, name, charsmax(name))
if(g_vip == 1)
Len += format(message[Len], 511 - Len, "%s", name)
else
Len += format(message[Len], 511 - Len, " , %s", name)
}
}
if(g_vip < 1)
chat_color(id, "%L", id, "VIP_ONLINE", string)
else
chat_color(id, "%s: !t%s", string, message)
}

public player_killed(victim, killer, corpse)
{
static const m_LastHitGroup = 75

if(is_user_cool(victim))
if(!g_chosen[victim])
set_task(1.0, "first_menu", victim)

if(is_user_cool(killer))
{
if(is_user_alive(killer))
{
if( get_pdata_int( victim, m_LastHitGroup ) == HIT_HEAD)
{
set_user_health(killer, get_user_health(killer) + get_pcvar_num(cvar_health_head))
if(get_user_health(killer) > get_pcvar_num(cvar_health_max))
set_user_health(killer, get_pcvar_num(cvar_health_max))
cs_set_user_money(killer, cs_get_user_money(killer) + get_pcvar_num(cvar_money_head))
}
else
{
set_user_health(killer, get_user_health(killer) + get_pcvar_num(cvar_health))
if(get_user_health(killer) > get_pcvar_num(cvar_health_max))
set_user_health(killer, get_pcvar_num(cvar_health_max))
cs_set_user_money(killer, cs_get_user_money(killer) + get_pcvar_num(cvar_money))
}
}
}
}

public ham_damage(victim, weapon, killer, Float:fDamage, damagebits)
{
if(get_pcvar_num(cvar_damage) == 0)
return;

if(victim == killer)
return;

if(!is_user_cool(killer) && !is_user_cool(victim))
return;

if(get_user_team(killer) == get_user_team(victim))
return;

new iDamage;
iDamage = floatround(fDamage, floatround_floor)

if(iDamage <= 0)
return;

if(is_user_cool(victim))
{
set_hudmessage(255, 0, 0, 0.6, 0.5, 0, 0.0, get_pcvar_float(cvar_hudsek), 0.0, 0.0, 1)
ShowSyncHudMsg(victim, hud, "%d", iDamage);
}
if(is_user_cool(killer))
{
set_hudmessage(0, 100, 255, 0.4, 0.5, 0, 0.0, get_pcvar_float(cvar_hudsek), 0.0, 0.0, 2)
ShowSyncHudMsg(killer, hud, "%d", iDamage);
}
}

stock chat_color(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, "!t", "^3"); // 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, SayText, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}

stock bool: is_user_cool(const id)
{
if(!is_user_connected(id))
return false;

if((get_user_flags(id) & vip_flag) == vip_flag)
return true;

return false;
}

check_map()
{
new got_line, line_num, len
new cfgdir[MAX_TEXT_LENGTH]
new cfgpath[MAX_TEXT_LENGTH]
new mapname[MAX_NAME_LENGTH]
new txt[MAX_TEXT_LENGTH]

get_localinfo("amxx_configsdir", cfgdir, charsmax(cfgdir))
get_mapname(mapname, MAX_NAME_LENGTH-1)

format(cfgpath, MAX_TEXT_LENGTH, "%s/ideal_block_maps.ini", cfgdir)

if (file_exists(cfgpath))
{
got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len)
while (got_line>0)
{
if (equali(txt, mapname)) return 1
line_num++
got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len)
}
}
return 0
}
Аватара пользователя
6u6uka
 
Сообщения: 12
Зарегистрирован: 29 окт 2017, 13:30
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Php

Re: префиксы в lite_translite

Сообщение iplague » 30 окт 2017, 11:24

Математика, комбинаторика.
!n
при использовании пяти флагов можно получить !5=1*2*3*4*5=120 комбинаций, но нам столько не нужно, поэтому вот 16-уровневая система.
Код: Выделить всё
#define ADMIN_BAN LVL2
#define ADMIN_KICK LVL3
#define ADMIN_CFG LV1
#define ADMIN_LEVEL_H LVL4
#define ADMIN_LEVEL_G GIRL

new access_level[33];

public smthng()
{
// обычный игрок
if(~get_user_flags(id)  & LV1 && 
    
~get_user_flags(id)  & LV2 && 
    
~get_user_flags(id)  & LV3 && 
    
~get_user_flags(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL)
             access_level(id)=16;
// обычный игрок девушка
if(~get_user_flags(id)  & LV1 && 
    
~get_user_flags(id)  & LV2 && 
    
~get_user_flags(id)  & LV3 && 
    
~get_user_flags(id)  & LV4 && 
    get_user_flags
(id)  & GIRL)
             access_level(id)=15;
// VIP
if(~get_user_flags(id)  & LV1 && 
    
~get_user_flags(id)  & LV2 && 
    
~get_user_flags(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL)
             access_level(id)=14;
// VIP + GIRL
if(~get_user_flags(id)  & LV1 && 
    
~get_user_flags(id)  & LV2 && 
    
~get_user_flags(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    get_user_flags
(id)  & GIRL)
             access_level(id)=13;
// ADMIN_KICK
if(~get_user_flags(id)  & LV1 && 
    
~get_user_flags(id)  & LV2 && 
    get_user_flags
(id)  & LV3 && 
    
~get_user_flags(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL)
             access_level(id)=12;
// ADMIN_KICK + GIRL
if(~get_user_flags(id)  & LV1 && 
    
~get_user_flags(id)  & LV2 && 
    get_user_flags
(id)  & LV3 && 
    
~get_user_flags(id)  & LV4 && 
    get_user_flags
(id)  & GIRL)
             access_level(id)=11;
// ADMIN_KICK + VIP
if(~get_user_flags(id)  & LV1 && 
    
~get_user_flags(id)  & LV2 && 
    get_user_flags
(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL)
             access_level(id)=10;
// ADMIN_KICK + GIRL + VIP
if(~get_user_flags(id)  & LV1 && 
    
~get_user_flags(id)  & LV2 && 
    get_user_flags
(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    get_user_flags
(id)  & GIRL)
             access_level(id)=9;
// ADMIN_BAN
if(~get_user_flags(id)  & LV1 && 
    get_user_flags
(id)  & LV2 && 
    
~get_user_flags(id)  & LV3 && 
    
~get_user_flags(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL)
             access_level(id)=8;
// ADMIN_BAN + GIRL
if(~get_user_flags(id)  & LV1 && 
    get_user_flags
(id)  & LV2 && 
    
~get_user_flags(id)  & LV3 && 
    
~get_user_flags(id)  & LV4 && 
    get_user_flags
(id)  & GIRL)
             access_level(id)=7;
// ADMIN_BAN + VIP
if(~get_user_flags(id)  & LV1 && 
    get_user_flags
(id)  & LV2 && 
    
~get_user_flags(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL)
             access_level(id)=6;
// ADMIN_BAN + GIRL + VIP
if(~get_user_flags(id)  & LV1 && 
    get_user_flags
(id)  & LV2 && 
    
~get_user_flags(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    get_user_flags
(id)  & GIRL)
             access_level(id)=5;
// ADMIN_BAN + VIP + KICK
if(~get_user_flags(id)  & LV1 && 
    get_user_flags
(id)  & LV2 && 
    get_user_flags
(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL)
             access_level(id)=4;
// ADMIN_BAN + GIRL + VIP + KICK
if(~get_user_flags(id)  & LV1 && 
    get_user_flags
(id)  & LV2 && 
    get_user_flags
(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    get_user_flags
(id)  & GIRL)
             access_level(id)=3;
// ADMIN_CFG
if(get_user_flags(id)  & LV1 && 
    get_user_flags
(id)  & LV2 && 
    get_user_flags
(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL)
             access_level(id)=2;
// ADMIN_CFG + GIRL
if(get_user_flags(id)  & LV1 && 
    get_user_flags
(id)  & LV2 && 
    get_user_flags
(id)  & LV3 && 
    get_user_flags
(id)  & LV4 && 
    
~get_user_flags(id)  & GIRL) 
           access_level
(id)=1;
}




Код: Выделить всё
if(access_level[id] == 2) //code
if(access_level[id] == 6) //code
if(access_level[id] == 6 && get_user_flags(id) & ADMIN_IMMUNITY) //code for additional access level   
vk.com/amxxdevelopment
Аватара пользователя
iplague
 
Сообщения: 46
Зарегистрирован: 23 май 2016, 13:50
Благодарил (а): 2 раз.
Поблагодарили: 13 раз.
Опыт программирования: Около года
Языки программирования: pawn

Re: префиксы в lite_translite

Сообщение 6u6uka » 30 окт 2017, 15:22

ну хоть кто-то поможет? а то я совсем запутался(
Аватара пользователя
6u6uka
 
Сообщения: 12
Зарегистрирован: 29 окт 2017, 13:30
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Php

Re: префиксы в lite_translite

Сообщение oReo » 31 окт 2017, 07:14

Помойму ChatManager by Mistrick намного легче чем ваш lite_translite...

Добавлено спустя 26 секунд:
Тем более насколько мне известно в лайте вроде есть ошибка и падают сервера...
деструктор решает все проблемы: нет переменной - нет проблемы (с) Subb98
Аватара пользователя
oReo
 
Сообщения: 165
Зарегистрирован: 24 май 2017, 05:59
Благодарил (а): 10 раз.
Поблагодарили: 5 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn

Re: префиксы в lite_translite  [Решено]

Сообщение артист666 » 31 окт 2017, 08:14

Код: Выделить всё
switch(CheckFlags(id))
{
case 0: iMessageTag[id] = ""
case 1: iMessageTag[id] = "^4[Гл. Админ] "    
case 2
: iMessageTag[id] = "^4[Админ] "
case 3: iMessageTag[id] = "^4[VIP] "
case 4: iMessageTag[id] = "^4[Девушка] [VIP] "
}


Код: Выделить всё
CheckFlags(id)
{
static iFlags
iFlags 
= get_user_flags(id)
if(
iFlags & GL_ADMIN) return 1
else if
(iFlags & ADMIN) return 2
else if
(iFlags & VIP) return 3
return 0
}


У тебя не проверяется на 4.


Код: Выделить всё
#define VIP_GIRL    ADMIN_LEVEL_H|ADMIN_LEVEL_G // Флаг доступа для тега "VIP Девушка"  


Код: Выделить всё
CheckFlags(id)
{
static iFlags
iFlags 
= get_user_flags(id)
if(
iFlags & GL_ADMIN) return 1
else if
(iFlags & ADMIN) return 2
else if
((iFlags & VIP_GIRL) == VIP_GIRL) return 4 // Именно такой порядок, сначала нужно проверять несколько флагов.
else if(iFlags & VIP) return 3
return 0
}
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14