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

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

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

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

Новое форматирование строки

, formatex [РЕШЕНО]
Статус пользователя kolobok1
сообщение 31.7.2015, 21:57
Сообщение #1


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

Доброй ночи.Ребят подскажите как сделать по новому форматированию строки,8 пункт.Пытаюсь в муте сделать 8 пункт,время затычки.То есть:
Скрытый текст

1. Ник
2. Ник
3. Ник
8. Время

Чтобы при перелистывание не сбивался.
Строка форматирования:
Скрытый текст

Код:

formatex(szText, charsmax(szText), "^n\wВремя: \y%d минут^n", g_times[g_user_time[id]])



P.S Извините плохо объясняю)

Отредактировал: kolobok1, - 31.7.2015, 21:58
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
voed
сообщение 31.7.2015, 22:00
Сообщение #2
Стаж: 11 лет

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

Ну, и что именно у вас не получается?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 31.7.2015, 22:04
Сообщение #3


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

Цитата(voed @ 31.7.2015, 22:55) *
Ну, и что именно у вас не получается?
Создать восьмой пункт.Чтобы он не сбивался.То есть в меню обычно 7 пунктов,потом перелистывание.А мне надо чтобы было 8 пунктов,а восьмой пункт ,не сбивался при перелистывании.

Отредактировал: kolobok1, - 31.7.2015, 22:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 31.7.2015, 22:08
Сообщение #4
Стаж: 11 лет

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

Цитата(kolobok1 @ 31.7.2015, 23:00) *
Создать восьмой пункт.

Тогда покажите больше кода, функция форматирования строки не создает пункты меню psych.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 31.7.2015, 22:10
Сообщение #5


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

Пожалуйста:
Скрытый текст

Код:

public Muder(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL))
return 1;

new szText[555]

formatex(szText, charsmax(szText), " \wАдминская затычка:")
new menu = menu_create(szText, "Muder_handler")

new szPlayers[32], szName[32], szPlayer[10]
new szNum, Player

get_players(szPlayers, szNum)

for (new i; i < szNum; i++)
{
Player = szPlayers[i]

if(is_user_bot(i))
continue;

get_user_name(Player, szName, charsmax(szName))
num_to_str(Player, szPlayer, charsmax(szPlayer))

formatex(szText, charsmax(szText), "%s %s", szName, Mudak[Player] ? "\r<-\yMuted" : " ")
menu_additem(menu, szText, szPlayer, 0)
}
//formatex(szText, charsmax(szText), "^n\wВремя: \y%d минут^n", g_times[g_user_time[id]])

menu_setprop( menu, MPROP_EXIT, MEXIT_ALL )
menu_setprop( menu, MPROP_NEXTNAME, "\r-->")
menu_setprop( menu, MPROP_BACKNAME, "\r<--")
menu_setprop( menu, MPROP_EXITNAME, "\d[ \rX \d]")

menu_display( id, menu, 0 )
return 1;
}



Отредактировал: kolobok1, - 31.7.2015, 22:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 31.7.2015, 22:20
Сообщение #6
Стаж: 11 лет

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

Пункт добавляется функцией menu_additem, а formatex всего лишь форматирует текст
В любом случае, это работать не будет, вы просто добавите еще один пункт меню после списка игроков. Добавлять "постоянный" пункт для каждой страницы нужно в цикле

Отредактировал: voed, - 31.7.2015, 22:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 31.7.2015, 22:24
Сообщение #7


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

voed, Понятно,можно примерный код?Если не трудно:)

Отредактировал: kolobok1, - 31.7.2015, 22:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 31.7.2015, 22:41
Сообщение #8
Стаж: 11 лет

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

Точно не помню, но по идее должно быть так
Код:
for (new i; i < szNum; i++)
{
Player = szPlayers[i]

if(is_user_bot(i))
continue;

get_user_name(Player, szName, charsmax(szName))
num_to_str(Player, szPlayer, charsmax(szPlayer))

if((i+1 % 8) == 0)// если число делится на 8 без остатка
{
formatex(szText, charsmax(szText), "^n\wВремя: \y%d минут^n", g_times[g_user_time[id]])
}
else
{
formatex(szText, charsmax(szText), "%s %s", szName, Mudak[Player] ? "\r<-\yMuted" : " ")
}

menu_additem(menu, szText, szPlayer, 0)
}

upd неправильно, естественно, я ведь пропущу нескольких игроков. Но направление я указал, дальше уже логика

Отредактировал: voed, - 31.7.2015, 22:46
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 31.7.2015, 23:01
Сообщение #9


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

voed, Спасибо,завтра потестю,пока что вешать тег "РЕШЕНО" не буду.Вдруг вопросы возникнут)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 1.8.2015, 1:42
Сообщение #10
Стаж: 11 лет

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

Код:
for (new i; i < szNum; i++)
{
   Player = szPlayers[i]
  
   if(is_user_bot(i))
      continue;
  
   get_user_name(Player, szName, charsmax(szName))
   num_to_str(Player, szPlayer, charsmax(szPlayer))
    
    formatex(szText, charsmax(szText), "%s %s", szName, Mudak[Player] ? "\r<-\yMuted" : " ")
 
   menu_additem(menu, szText, szPlayer, 0)
   if((i+1 % 8) == 0)// если число делится на 8 без остатка
   {

    formatex(szText, charsmax(szText), "^n\wВремя: \y%d минут^n",  g_times[g_user_time[id]])
menu_additem(menu, szText, szPlayer, 0)
   }
}

Так вроде должно работать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 1.8.2015, 8:54
Сообщение #11


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

voed, Так и сделал,просто подумал,что сначала ставиться мут,а потом должен быть пункт)Но увы еще не потестил:(

Отредактировал: kolobok1, - 1.8.2015, 8:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 1.8.2015, 11:03
Сообщение #12


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

voed, Не работает)))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 1.8.2015, 17:38
Сообщение #13


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

kolobok1, не работает, потому что по стандарту в меню всего 7 пунктов, а пункты 8 - назад, 9 - дальше, 0 - выход.
Так что надо делить на 7, а не на 8. А в данном случае нужно делить на 6, так как добавляется сразу 2 пункта, Имя игрока и Время

Замени в последнем коде который предложил voed
Код:
if((i+1 % 8) == 0)
--->
Код:
if(!((i+1) % 6))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 2.8.2015, 19:27
Сообщение #14


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

Fintok, Хех,да я уже сделал через старое форматирование строки)Ну думаю будет работать,как нибудь проверю)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 2.8.2015, 19:43
Сообщение #15


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

Fintok, Не работает.Это новое форматирование строки,тут не все можно сделать.И я так понял нельзя сделать 8 пункт)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 2.8.2015, 20:03
Сообщение #16
Стаж: 11 лет

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

Да можно все. Вы бы конкретнее объяснили, что именно "не работает"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 3.8.2015, 8:14
Сообщение #17


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

voed, Ну так можно же логику включить?8 пукнт,я за этим здесь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 3.8.2015, 8:46
Сообщение #18
Стаж: 11 лет

Сообщений: 566
Благодарностей: 307
Полезность: 600

kolobok1,
тока с первым пунктом получилось)
Код:

#include <amxmodx>

public plugin_init() register_clcmd("say /gag","gag_menu")

public gag_menu(id)
{
new i_Menu = menu_create("\wАдминская затычка:", "gag_menu_handler")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10]
get_players(s_Players, i_Num)
for (new i; i < i_Num; i++)
{
i_Player = s_Players[i]
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
if((i % 7) == 0)
menu_additem(i_Menu, "\rТут твое время")
else
menu_additem(i_Menu, s_Name, s_Player, 0)

}
static take_MenuExit[512]
formatex(take_MenuExit, charsmax(take_MenuExit), "\wВыход")

menu_setprop(i_Menu,MPROP_EXITNAME,take_MenuExit)
menu_display(id,i_Menu,0)
}

public gag_menu_handler(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)

// Получаем ID игрока, который был выбран в меню
new i_Player = str_to_num(s_Data)

//тут делаем что нужно с i_Player

menu_destroy(menu)
return PLUGIN_HANDLED
}

Прикрепленные файлы:
Прикрепленное изображение Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя kolobok1
сообщение 3.8.2015, 10:15
Сообщение #19


Стаж: 11 лет

Сообщений: 464
Благодарностей: 23
Полезность: 71

ThisIsSparta,
За старание спасибо.С первым пунктом у меня тоже получалось,но это не удобно и не красиво:)Но я уже откинул это дело,сделал через старое форматирование строки:)Вешаю тег "РЕШЕНО".Кому надо выше решение как сделать только 1 пункт)

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