|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Создание menu.
|
|
He_npeT | Дата: Среда, 19.09.2007, 03:34:51 | Сообщение # 1 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Можыте пожалйсто написать и выложить код на создание menu слейдующего примера. say /menu Menu name 1. event1 2. event2 3. event3 * 4. event4 * 0. close. То-есть при нажатие 2 ничего не будет (и menu не закроется).
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Среда, 19.09.2007, 03:40:45 |
|
| |
AlMod | Дата: Среда, 19.09.2007, 06:46:39 | Сообщение # 2 |
Сонный кодер
Группа: Админы
Сообщений: 600
Статус: Не в сети
| ЧТобы писать разными цветами добавляй перед текстом \y (жёлтый) \r (красный) \d (гашеный [серый]) \w (белый) а чтобы ничего не происходило при нажатии на "2" просто не создавай kеу с флагом (1<<1)
|
|
| |
He_npeT | Дата: Среда, 19.09.2007, 08:27:23 | Сообщение # 3 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Ясно, осталось токо саму основу (что писать в plugin_init и event'e которое вызывает menu).
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
|
|
| |
slogic | Дата: Среда, 19.09.2007, 14:54:46 | Сообщение # 4 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| старая система: http://forums.alliedmods.net/showthread.php?t=14637 новая система: http://forums.alliedmods.net/showthread.php?t=46364
|
|
| |
He_npeT | Дата: Среда, 19.09.2007, 21:28:44 | Сообщение # 5 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Ясно. Последний вопрос, что зделать (написать) в switch(key)...case 9: чтобы закрыть menu? === Разобрался, но есть 1 беда. Как пропустить key (тоесть чтобы после 1 шло 3 к примеру. menu_addblank(menuid, 0) не помогает...)? Если что - пользуюсь новым вибом создания menu.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Пятница, 21.09.2007, 12:24:04 |
|
| |
X-factor | Дата: Суббота, 04.10.2008, 18:58:31 | Сообщение # 6 |
Лейтенант
Группа: Пользователи
Сообщений: 58
Статус: Не в сети
| Всем привет!!! У меня есть вопрос по созданию меню!!! Мне нада зделать так, как и в стандартном бан меню, но токо, что бы выполнялась команда не amx_ban or amx_banip, а моя команда (amx_anythink)!!! И чтобы в списке справа от ника ещё IP игрока писался!!! Вот я на примере из плага plmenu.amxx зделал так Code #include <amxmodx> #include <amxmisc> #include <cstrike>
new g_menuPosition[33] new g_menuPlayers[33][32] new g_menuPlayersNum[33] new g_menuOption[33] new g_menuSettings[33]
new g_coloredMenus
public plugin_init() { // Регистрируем плагин register_plugin("BanShotMenu","0.1","X-factor"); register_clcmd("amx_bsmenu", "BanShotMenu", ADMIN_BAN, "- displays banshot menu") register_menucmd(register_menuid("BanShot Menu"), 1023, "actionBanShotMenu") g_coloredMenus = colored_menus() register_dictionary("common.txt") register_dictionary("admincmd.txt") register_dictionary("plmenu.txt") }
public actionBanShotMenu(id, key) { switch (key) { case 7: { /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */ ++g_menuOption[id] g_menuOption[id] %= 7
switch (g_menuOption[id]) { case 0: g_menuSettings[id] = 0 case 1: g_menuSettings[id] = 5 case 2: g_menuSettings[id] = 10 case 3: g_menuSettings[id] = 15 case 4: g_menuSettings[id] = 30 case 5: g_menuSettings[id] = 45 case 6: g_menuSettings[id] = 60 }
displayBanShotMenu(id, g_menuPosition[id]) } case 8: displayBanShotMenu(id, ++g_menuPosition[id]) case 9: displayBanShotMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] new name[32], name2[32], authid[32], authid2[32] get_user_name(player, name2, 31) get_user_authid(id, authid, 31) get_user_authid(player, authid2, 31) get_user_name(id, name, 31) new userid2 = get_user_userid(player)
log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])
switch (get_cvar_num("amx_show_activity")) { case 2: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_BAN_2", name, name2) case 1: client_print(0, print_chat, "%L", LANG_PLAYER, "ADMIN_BAN_1", name2) }
/* ---------- check for Steam ID added by MistaGee -------------------- IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE */ if (equal("4294967295", authid2) || equal("HLTV", authid2) || equal("STEAM_ID_LAN", authid2) || equal("STEAM_ID_PENDING", authid2) || equal("STEAM_154:88:666", authid2) || equal("STEAM_666:88:666", authid2) || equal("VALVE_ID_PENDING", authid2) || equali("VALVE_ID_LAN", authid2)) { /* END OF MODIFICATIONS BY MISTAGEE */
new ipa[32] get_user_ip(player, ipa, 31, 1) server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa) } else { server_cmd("amx_banshot %d #%d kick;writeid", g_menuSettings[id], userid2) }
server_exec()
displayBanShotMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED }
displayBanShotMenu(id, pos) { if (pos < 0) return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512] new b = 0 new i new name[32] new start = pos * 7
if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BANSHOT_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) new end = start + 7 new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31)
if (is_user_bot(i) || access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) if (is_user_admin(i)) len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) else len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (g_menuSettings[id]) len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id]) else len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")
if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "BanShot Menu") }
public BanShotMenu(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED
g_menuOption[id] = 1 g_menuSettings[id] = 5 displayBanShotMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED } Я подумал, что эти строчки отвичают за выполнение команды при нажатии на цифру игрока: Code server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa) } else { server_cmd("amx_banshot %d #%d kick;writeid", g_menuSettings[id], userid2) } И я уже вписал вместо addbanid свою нужную команду amx_banshot, но мне кажется, что я неправильно зделал! Больше я в коде негде невижу подходящего места! Ещё, как я уже говорил нада после ника ип что ба был! Наверно нада воспользоватся командой get_user_ip, ноя незнаю, как ее дальше описывать!!! Помогите пожайлуста!!! И подскажите пожайлуста, где можна взять книгу по языку PAWN на русском языке!!!
|
|
| |
PomanoB | Дата: Суббота, 04.10.2008, 20:00:35 | Сообщение # 7 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Команду ты поставил правильно Что бы ип показывало надо получить его: Code new ipa[32] get_user_ip(player, ipa, 31, 1) И потом в строчках вида Code format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) Поставить Code format(menuBody[len], 511-len, "\d%d. %s - IP: %s^n\w", b, name,ipa) Насколько я знаю книги по Pawn на русском языке не существует Есть раздел переведённых статей из Wiki - http://wiki.amxmodx.org/Category:Russian
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 04.10.2008, 20:00:58 |
|
| |
X-factor | Дата: Суббота, 04.10.2008, 20:39:09 | Сообщение # 8 |
Лейтенант
Группа: Пользователи
Сообщений: 58
Статус: Не в сети
| PomanoB О, я точно так же делал, но я видимо нетуда вписывал строки: Code new ipa[32] get_user_ip(player, ipa, 31, 1) И при компиляции выбивало ошибки, что якобы неизвестный индентификатор player, потом я посмотрел выше в коде как плеер описуется зделал также: Code new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] new ipa[32] get_user_ip(player, ipa, 31, 1) Теперь стало нехватать ";" и неизвесный идентификатор key!!! Можеш точно написать, где именно вставлять код: Code new ipa[32] get_user_ip(player, ipa, 31, 1)
|
|
| |
PomanoB | Дата: Суббота, 04.10.2008, 21:02:12 | Сообщение # 9 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| внутри цикла Code for (new a = start; a < end; ++a) и использовать надо индекс игрока не player (это я как пример привёл) а Code new ip2[32] get_user_ip(g_menuPlayers[id][a], ip2, 31, 1) Кинь сюда полностью текст плагина только вложением Так читать неудобно
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 04.10.2008, 21:23:24 |
|
| |
X-factor | Дата: Суббота, 04.10.2008, 21:30:47 | Сообщение # 10 |
Лейтенант
Группа: Пользователи
Сообщений: 58
Статус: Не в сети
| PomanoB Блин, выбивает ошибку argument type mismach (argument 2) Я зделал так: Code for (new a = start; a < end; ++a) { new ip2 i = g_menuPlayers[id][a] get_user_name(i, name, 31) get_user_ip(i, ip2, 31, 1)
if (is_user_bot(i) || access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name, ip2) else len += format(menuBody[len], 511-len, "#. %s^n", name, ip2) } else { keys |= (1<<b) if (is_user_admin(i)) len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name, ip2) else len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name, ip2) } } В чём же проблема?
|
|
| |
PomanoB | Дата: Суббота, 04.10.2008, 21:41:56 | Сообщение # 11 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| ты объявляешь ip не как массив надо прикрепи полный код, сделаю
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 04.10.2008, 21:44:28 |
|
| |
X-factor | Дата: Суббота, 04.10.2008, 21:56:09 | Сообщение # 12 |
Лейтенант
Группа: Пользователи
Сообщений: 58
Статус: Не в сети
| Смотри мое первое сообщение! Там, где начинается со строк "Всем привет!!!" там мой полный код!!! Добавлено (2008-10-04, 9:48 Pm) --------------------------------------------- Да, точно пропустил [32]!!! Все получилось Спасибище тебе огромное!!!!! Добавлено (2008-10-04, 9:56 Pm) --------------------------------------------- Странно, но IP не полазывает!!! Как и раньше, только ник!!!
|
|
| |
PomanoB | Дата: Суббота, 04.10.2008, 22:01:43 | Сообщение # 13 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Попробуй мой вариант И там исправь ещё server_cmd Там два случая есть Или скажи мне параметры команды я исправлю У меня мой вариант ип показывает
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 04.10.2008, 22:07:44 |
|
| |
X-factor | Дата: Суббота, 04.10.2008, 22:26:26 | Сообщение # 14 |
Лейтенант
Группа: Пользователи
Сообщений: 58
Статус: Не в сети
| PomanoB А я ж незнал, что нада еще в эти иероглифи чтото добавлять!!! Code "\d%d. %s - IP:%s^n\w" Я так понимая они означают символы букв и цифр?
|
|
| |
PomanoB | Дата: Суббота, 04.10.2008, 22:30:35 | Сообщение # 15 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| %d, %f, %s, %c – специальные элементы, используемые для форматирования целого числа, дробного числа, строки и символа соответственно. "Иероглифы" есть в моём первом посте И читай http://wiki.amxmodx.org/Ru_Fundamental_Basics_of_AMX_Mod_X_Scripting
http://romanov4400.mybrute.com
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |