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

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

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

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

menufront

, добавить в меню файл *ini
Статус пользователя Tanok
сообщение 23.2.2014, 12:05
Сообщение #1
Стаж: 12 лет

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

помогите сделать так >
как сделать что был отсчет на время админ прав и доступ к меню
Код:
#include <amxmodx>

#define PLUGIN "Amxmodmenu"
#define VERSION "1.0"
#define AUTHOR ""

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

register_clcmd("amxmodmenu", "AmxMenu")
}

public AmxMenu(id)
{
if(get_user_flags(id) & ADMIN_MENU)
{
new amxmenu = menu_create("\rАдминка ©", "AmxMenu_Func")

menu_additem(amxmenu, "\wКик", "1", 0)
menu_additem(amxmenu, "\wЗабанить", "2", 0)
menu_additem(amxmenu, "\wУдарить\r/\wубить", "3", 0)
menu_additem(amxmenu, "\wДать кляп", "4", 0)
menu_additem(amxmenu, "\wХалявная оружка", "5", 0)
menu_additem(amxmenu, "\wКоманда игрока", "6", 0)
menu_additem(amxmenu, "\wСмена Карты", "7", 0)
menu_additem(amxmenu, "\wГолосование за смену карты", "8", 0)
menu_addblank(amxmenu, 1)
menu_additem(amxmenu, "Выход ", "0", 0)

menu_setprop(amxmenu, MPROP_PERPAGE, 0)
menu_display(id, amxmenu, 0)
return PLUGIN_HANDLED
}
}

public AmxMenu_Func(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], 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)
switch(i_Key)
{
case 1: client_cmd(id, "amx_kickmenu")
case 2: client_cmd(id, "amx_banmenu")
case 3: client_cmd(id, "amx_slapmenu")
case 4: client_cmd(id, "amx_gagmenu")
case 5: client_cmd(id, "amx_weaponmenu")
case 6: client_cmd(id, "amx_teammenu")
case 7: client_cmd(id, "amx_mapmenu")
case 8: client_cmd(id, "amx_votemapmenu")
}
return PLUGIN_HANDLED
}

Прикрепленные файлы:
Прикрепленное изображение Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 23.2.2014, 12:56
Сообщение #2


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

на почитай
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя filip
сообщение 23.2.2014, 13:58
Сообщение #3


Стаж: 13 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

Отличная фишка, в принципе все понятно, но как это запилить именно в шапку меню?
Код:
public go_menu(id)
{
new menu = menu_create("\ Меню сервера","func_menu");
menu_additem( menu,"\rПункт", "1", 0)
menu_additem( menu,"Пункт", "2", 0)
menu_additem( menu,"Пункт", "3", 0)
menu_additem( menu,"Пункт", "4", 0)
menu_additem( menu,"Пункт", "5", 0)
menu_additem( menu,"Пункт", "6", 0)
menu_additem( menu,"Пункт", "7", 0)
menu_display(id,menu)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tanok
сообщение 23.2.2014, 14:03
Сообщение #4
Стаж: 12 лет

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

Так что бы был сверху отсчет , сколько дней осталось
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BornToBeFree
сообщение 23.2.2014, 14:08
Сообщение #5


Стаж: 12 лет

Сообщений: 741
Благодарностей: 287
Полезность: 602

Меценат Меценат

А идея и правда хорошая, на платной основе кто сделает?


Скидка 5% при заказе сервера
Чтобы получить 5% скидку при заказе сервера на хостинге Serva4ok.ru
Необходимо ввести это кодовое слово gKUt-FENO-ZonE-aIaa
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя FomkamaG
сообщение 23.2.2014, 14:14
Сообщение #6


Стаж: 12 лет

Сообщений: 124
Благодарностей: 134
Полезность: 593

Цитата(ExTPuMaJI @ 23.2.2014, 11:08) *
А идея и правда хорошая, на платной основе кто сделает?

vovan4ik199729
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tanok
сообщение 23.2.2014, 14:20
Сообщение #7
Стаж: 12 лет

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

Моя неудачная попытка......
Код:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Amxmodmenu"
#define VERSION "1.0"
#define AUTHOR ""

new g_LoadTestFile[81]


new szPlayerPeriod[33][2]
new szPlayerPeriodStr[33][1][32]

public plugin_cfg()
{
new g_LoadDir[81] //Здесь будет путь до папки configs
get_configsdir(g_LoadDir, charsmax( g_LoadDir )) //Получаем

formatex(g_LoadTestFile, charsmax( g_LoadTestFile ), "%s/testfile.ini", g_LoadDir) //Записываем путь

if(!file_exists( g_LoadTestFile )) //Если файл не существует
{
set_fail_state("No file testfile.ini") //Отключаем плагин с ошибкой, что файла нет
}
}

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

register_clcmd("amxmodmenu", "AmxMenu")
}

public AmxMenu(id)
{
if(get_user_flags(id) & ADMIN_MENU)
{
new amxmenu = menu_create("\rАдминка ©", "AmxMenu_Func")

menu_additem(amxmenu, "\wКик", "1", 0)
menu_additem(amxmenu, "\wЗабанить", "2", 0)
menu_additem(amxmenu, "\wУдарить\r/\wубить", "3", 0)
menu_additem(amxmenu, "\wДать кляп", "4", 0)
menu_additem(amxmenu, "\wХалявная оружка", "5", 0)
menu_additem(amxmenu, "\wКоманда игрока", "6", 0)
menu_additem(amxmenu, "\wСмена Карты", "7", 0)
menu_additem(amxmenu, "\wГолосование за смену карты", "8", 0)
menu_addblank(amxmenu, 1)
menu_additem(amxmenu, "Выход ", "0", 0)

menu_setprop(amxmenu, MPROP_PERPAGE, 0)
menu_display(id, amxmenu, 0)
return PLUGIN_HANDLED
}
}

public AmxMenu_Func(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], 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)
switch(i_Key)
{
case 1: client_cmd(id, "amx_kickmenu")
case 2: client_cmd(id, "amx_banmenu")
case 3: client_cmd(id, "amx_slapmenu")
case 4: client_cmd(id, "amx_gagmenu")
case 5: client_cmd(id, "amx_weaponmenu")
case 6: client_cmd(id, "amx_teammenu")
case 7: client_cmd(id, "amx_mapmenu")
case 8: client_cmd(id, "amx_votemapmenu")
}
return PLUGIN_HANDLED
}

public client_authorized(id)
{
if(!is_user_bot(id) || !is_user_hltv(id)) //Если игрок не бот и не демка
{
//Сбрасываем всё, а то мало ли =)
szPlayerPeriod[id][0] = 0
szPlayerPeriod[id][1] = 0
szPlayerPeriodStr[id][0] = ""

set_task(1.0, "CheckPeriod", id) //Начинаем проверку
}
}

public client_infochanged(id)
{
if(!is_user_connected(id)) //Если игрок не подключен
return PLUGIN_CONTINUE //То нефиг тут делать

new szNewName[32], szOldName[32] //Будем записывать старый и новый ник

get_user_name(id, szOldName, charsmax( szOldName )) //Получаем старый ник
get_user_info(id, "name", szNewName, charsmax( szNewName )) //Получаем новый ник

if(!equal(szNewName, szOldName)) //Если они не равны
{
//Сбрасываем всё, а то мало ли =)
szPlayerPeriod[id][0] = 0
szPlayerPeriod[id][1] = 0
szPlayerPeriodStr[id][0] = ""

set_task(1.0, "CheckPeriod", id) //Начинаем проверку
}
return PLUGIN_CONTINUE
}


public CheckPeriod(id)
{
new szName[64], szIP[32], szSteam[32] //Запишем ник, стим, ип игрока
new szParse[128] //Строка, которую будем парсить
new szParseData[64], szParsePeriod[32] //Отпарсенные данные
new szLine, szNum //Прочая хрень

get_user_name(id, szName, charsmax( szName )) //Получаем ник
get_user_ip(id, szIP, charsmax( szIP ), 1) //Получаем ип
get_user_authid(id, szSteam, charsmax( szSteam )) //Получаем стим

for(szLine = 0; read_file(g_LoadTestFile, szLine, szParse, charsmax( szParse ), szNum); szLine++) //Читаем файл
{
if(szNum > 0 && szParse[0] != ';') //Если строка не закоментированна и в ней есть символы
{
//Парсим строку
parse(szParse,
szParseData,
charsmax( szParseData ),
szParsePeriod,
charsmax( szParsePeriod )
)

if(equal(szName, szParseData)) //Если ник совпал
{
if(equal(szParsePeriod, "0")) //Если в сроке стоит 0( это навсегда )
{
szPlayerPeriod[id][0] = 0 //Собственно записывать нечего
szPlayerPeriod[id][1] = 0 //Собственно записывать нечего
szPlayerPeriodStr[id][0] = szParsePeriod //Собственно записывать нечего
}else
if(RealDate() < DatePeriod( szParsePeriod )) //Если же там что-то другое и реальная дата меньше даты из файла
{
szPlayerPeriod[id][0] = (DatePeriod( szParsePeriod ) - RealDate()) / 86400 //Так запишем дни
szPlayerPeriod[id][1] = DatePeriod( szParsePeriod ) - RealDate() //А так секунды до 23:59:59
szPlayerPeriodStr[id][0] = szParsePeriod

replace_all(szPlayerPeriodStr[id][0], 31, " ", "/") //т.к мы в стоках произведем замену - вернем назад и запишем дату в читабельном формате
}else{ //Если же срок в файле меньше текущеё даты
new szBlock[512] //Просто массивчик

formatex(szBlock, charsmax( szBlock ), ";%s", szParse) //Комментируем строку
write_file(g_LoadTestFile, szBlock, szLine) //Записываем на тоже место
}
break //Заканчиваем, игрок был найден
}else
if(equal(szSteam, szParseData)) //Если стим совпал
{
if(equal(szParsePeriod, "0")) //Если в сроке стоит 0( это навсегда )
{
szPlayerPeriod[id][0] = 0 //Собственно записывать нечего
szPlayerPeriod[id][1] = 0 //Собственно записывать нечего
szPlayerPeriodStr[id][0] = szParsePeriod //Собственно записывать нечего
}else
if(RealDate() < DatePeriod( szParsePeriod )) //Если же там что-то другое и реальная дата меньше даты из файла
{
szPlayerPeriod[id][0] = (DatePeriod( szParsePeriod ) - RealDate()) / 86400 //Так запишем дни
szPlayerPeriod[id][1] = DatePeriod( szParsePeriod ) - RealDate() //А так секунды до 23:59:59
szPlayerPeriodStr[id][0] = szParsePeriod

replace_all(szPlayerPeriodStr[id][0], 31, " ", "/") //т.к мы в стоках произведем замену - вернем назад и запишем дату в читабельном формате
}else{ //Если же срок в файле меньше текущеё даты
new szBlock[512] //Просто массивчик

formatex(szBlock, charsmax( szBlock ), ";%s", szParse) //Комментируем строку
write_file(g_LoadTestFile, szBlock, szLine) //Записываем на тоже место
}
break //Заканчиваем, игрок был найден
}else
if(equal(szIP, szParseData)) //Если ип совпал
{
if(equal(szParsePeriod, "0")) //Если в сроке стоит 0( это навсегда )
{
szPlayerPeriod[id][0] = 0 //Собственно записывать нечего
szPlayerPeriod[id][1] = 0 //Собственно записывать нечего
szPlayerPeriodStr[id][0] = szParsePeriod //Собственно записывать нечего
}else
if(RealDate() < DatePeriod( szParsePeriod )) //Если же там что-то другое и реальная дата меньше даты из файла
{
szPlayerPeriod[id][0] = (DatePeriod( szParsePeriod ) - RealDate()) / 86400 //Так запишем дни
szPlayerPeriod[id][1] = DatePeriod( szParsePeriod ) - RealDate() //А так секунды до 23:59:59
szPlayerPeriodStr[id][0] = szParsePeriod

replace_all(szPlayerPeriodStr[id][0], 31, " ", "/") //т.к мы в стоках произведем замену - вернем назад и запишем дату в читабельном формате
}else{ //Если же срок в файле меньше текущеё даты
new szBlock[512] //Просто массивчик

formatex(szBlock, charsmax( szBlock ), ";%s", szParse) //Комментируем строку
write_file(g_LoadTestFile, szBlock, szLine) //Записываем на тоже место
}
break //Заканчиваем, игрок был найден
}
}
}
}
stock RealDate()
{
new szTime[32]
new szParseDay[32], szParseMouth[32], szParseYear[32], szParseHour[32], szParseMin[32], szParseSec[32]
new szDay, szMouth, szYear, szHour, szMin, szSec

get_time("%d %m %Y %H %M %S", szTime, charsmax( szTime ))

parse(szTime ,
szParseDay,
charsmax( szParseDay ),
szParseMouth,
charsmax( szParseMouth ),
szParseYear,
charsmax( szParseYear ),
szParseHour,
charsmax( szParseHour ),
szParseMin,
charsmax( szParseMin ),
szParseSec,
charsmax( szParseSec )
)

szDay = str_to_num( szParseDay )
szMouth = str_to_num( szParseMouth )
szYear = str_to_num( szParseYear )
szHour = str_to_num( szParseHour ) * 3600
szMin = str_to_num( szParseMin ) * 60
szSec = str_to_num( szParseSec )

return DateSecond(szDay, szMouth, szYear) + (szHour + szMin + szSec)
}

stock DatePeriod(szSysTime[32])
{
new szParseDay[32], szParseMouth[32], szParseYear[32]
new szDay, szMouth, szYear

replace_all(szSysTime, charsmax( szSysTime ), "/", " ")

parse(szSysTime,
szParseDay,
charsmax( szParseDay ),
szParseMouth,
charsmax( szParseMouth ),
szParseYear,
charsmax( szParseYear )
)

szDay = str_to_num( szParseDay )
szMouth = str_to_num( szParseMouth )
szYear = str_to_num( szParseYear )

return DateSecond(szDay, szMouth, szYear) + 86399
}

stock DateSecond(szDay, szMouth, szYear)
{
return YearSeconds( szYear ) + MonthSeconds(szYear, szMouth ) + DaysSeconds( szDay )
}

stock YearSeconds(szYear)
{
new szVar[5]

szVar[1] = szYear / 4
szVar[2] = szYear - szVar[1]
szVar[3] = szVar[1] - 492
szVar[4] = szVar[2] - 1478

szVar[3] *= 31622400
szVar[4] *= 31536000

return szVar[3] + szVar[4]
}

stock MonthSeconds(szYear, szMonth)
{
new szResult

szMonth -= 1

switch( szMonth )
{
case 1, 3, 5, 7, 8, 10 :
{
szResult = 2678400
}

case 2 :
{
if (szYear % 4 == 0)
{
szResult = 2505600
}else{
szResult = 2419200
}
}

case 4, 6, 9, 11 :
{
szResult = 2592000
}
}

if(szMonth > 1)
{
szResult += MonthSeconds(szYear, szMonth)
}
return szResult;
}

stock DaysSeconds(szDay)
{
szDay -= 1
return szDay * 86400
}

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")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")

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();
}
}
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя filip
сообщение 23.2.2014, 14:30
Сообщение #8


Стаж: 13 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

Код:
public go_menu(id)
{
szPlayerPeriod[id][0] = (DatePeriod( szPlayerPeriodStr[id][0] ) - RealDate()) / 86400
szPlayerPeriod[id][1] = DatePeriod( szPlayerPeriodStr[id][0] ) - RealDate()
new menu = menu_create("\ Меню сервера !tпривелегии !gнавсегда","func_menu");

if(equal(szPlayerPeriodStr[id][0], "0"))
{
menu = menu_create("\ Меню сервера !tпривелегии !gнавсегда","func_menu");
}else
if(szPlayerPeriod[id][0] > 0)
{
menu = menu_create("\ Меню сервера привелегии доступны до !g%s !t( !g%d !yд !t)","func_menu", szPlayerPeriodStr[id][0], szPlayerPeriod[id][0]);
}else
if(szPlayerPeriod[id][1] < 86400 && szPlayerPeriod[id][1] > 0)
{
new szTime[64]
new szHour, szMin

szHour = szPlayerPeriod[id][1] / 3600
szMin = (szPlayerPeriod[id][1] - ( szHour * 3600 )) / 60

if(szMin <= 9)
{
formatex(szTime, charsmax( szTime ), "%d:0%d", szHour, szMin)
}else{
formatex(szTime, charsmax( szTime ), "%d:%d", szHour, szMin)
}
menu = menu_create("\ Меню сервера привелегии !tкончаются !gсегодня!y, через !g%s","func_menu", szTime);
}else{
menu = menu_create("\ Меню сервера привелегий нет","func_menu");
}
menu_additem( menu,"\rПункт 1", "1", 0)
menu_additem( menu,"Пункт 2", "2", 0)
menu_additem( menu,"Пункт 3", "3", 0)
menu_additem( menu,"Пункт 4", "4", 0)
menu_additem( menu,"Пункт 5", "5", 0)
menu_additem( menu,"Пункт 6", "6", 0)
menu_additem( menu,"Пункт 7", "7", 0)
menu_display(id,menu)
}



Ошибка argument type mismatch (argument 3) в строках

Код:
menu = menu_create("\ Меню сервера привелегии доступны до !g%s !t( !g%d !yд !t)","func_menu", szPlayerPeriodStr[id][0], szPlayerPeriod[id][0]);
и
Код:
menu = menu_create("\ Меню сервера привелегии !tкончаются !gсегодня!y, через !g%s","func_menu", szTime);

как Быть? и как строки переносить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя filip
сообщение 5.3.2014, 10:57
Сообщение #9


Стаж: 13 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

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