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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Объединить 2 однотипных плагина

yukish
сообщение 20.1.2014, 16:39
Сообщение #1
Стаж: 12 лет

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

Есть один плагин, который по say /help выводит содержимое help.txt
#include <amxmodx>
#include <amxmisc>

public help_motd(id,level,cid) {

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE

show_motd(id,"help.txt","Help MOTD")
return PLUGIN_CONTINUE
}

public plugin_init() {

register_plugin("say /help","1.5","win_help")
register_clcmd("say /help","help_motd",0,"Shows the help MOTD")
}

Есть второй плагин, который по say /rules выводит содержимое rules.txt
#include <amxmodx>
#include <amxmisc>

public rules_motd(id,level,cid) {

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE

show_motd(id,"rules.txt","rules MOTD")
return PLUGIN_CONTINUE
}

public plugin_init() {

register_plugin("say /rules","1.5","win_rules")
register_clcmd("say /rules","rules_motd",0,"Shows the rules MOTD")
}

Хочу:
1) объединить их в один плагин, посмотрите я правильно сделал???
Допустимо что id,level,cid одинаковые для обеих функций или нужно разные


#include <amxmodx>
#include <amxmisc>

public help_motd(id,level,cid) {

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE

show_motd(id,"help.txt","Help MOTD")
return PLUGIN_CONTINUE
}

public rules_motd(id,level,cid) {

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE

show_motd(id,"rules.txt","rules MOTD")
return PLUGIN_CONTINUE
}

public plugin_init() {

register_plugin("say /help","1.5","win_help")
register_clcmd("say /help","help_motd",0,"Shows the help MOTD")

register_plugin("say /rules","1.5","win_rules")
register_clcmd("say /rules","rules_motd",0,"Shows the rules MOTD")
}


2) сделать чтобы окно с правилами сервера, файл rules.txt админ мог принудительно открыть любому игроку,
по команде из АМХХ меню или по команде в чате.


Отредактировал: yukish, - 20.1.2014, 16:43
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя 3JIou CKuH
сообщение 20.1.2014, 17:12
Сообщение #2
Стаж: 15 лет

Сообщений: 491
Благодарностей: 279
Полезность: 818

yukish
Вы когда-нибудь слышали о тегах Pawn / Spoiler / ? Ну ведь не удобно же, честное слово, да и отступы в коде сбиваются!
Быть может вам стоит отредактировать свой пост, используя форматирование и теги?

Отредактировал: 3JIou CKuH, - 20.1.2014, 17:13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MindFreeeK
сообщение 20.1.2014, 21:26
Сообщение #3


Стаж: 13 лет

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

Цитата(yukish @ 20.1.2014, 18:39) *
Есть один плагин, который по say /help выводит содержимое help.txt
#include <amxmodx>
#include <amxmisc>

public help_motd(id,level,cid) {

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE

show_motd(id,"help.txt","Help MOTD")
return PLUGIN_CONTINUE
}

public plugin_init() {

register_plugin("say /help","1.5","win_help")
register_clcmd("say /help","help_motd",0,"Shows the help MOTD")
}

Есть второй плагин, который по say /rules выводит содержимое rules.txt
#include <amxmodx>
#include <amxmisc>

public rules_motd(id,level,cid) {

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE

show_motd(id,"rules.txt","rules MOTD")
return PLUGIN_CONTINUE
}

public plugin_init() {

register_plugin("say /rules","1.5","win_rules")
register_clcmd("say /rules","rules_motd",0,"Shows the rules MOTD")
}

Хочу:
1) объединить их в один плагин, посмотрите я правильно сделал???
Допустимо что id,level,cid одинаковые для обеих функций или нужно разные


#include <amxmodx>
#include <amxmisc>

public help_motd(id,level,cid) {

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE

show_motd(id,"help.txt","Help MOTD")
return PLUGIN_CONTINUE
}

public rules_motd(id,level,cid) {

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE

show_motd(id,"rules.txt","rules MOTD")
return PLUGIN_CONTINUE
}

public plugin_init() {

register_plugin("say /help","1.5","win_help")
register_clcmd("say /help","help_motd",0,"Shows the help MOTD")

register_plugin("say /rules","1.5","win_rules")
register_clcmd("say /rules","rules_motd",0,"Shows the rules MOTD")
}


2) сделать чтобы окно с правилами сервера, файл rules.txt админ мог принудительно открыть любому игроку,
по команде из АМХХ меню или по команде в чате.

Не понятно с кодамы. Спойлер пожалуйста
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 20.1.2014, 21:48
Сообщение #4


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

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

MindFreeeK,
Вот зачем цитировать первый пост?

Объединил правильно.


Гнилой фашистской нечисти
Загоним пулю в лоб,
Отродью человечества
Сколотим крепкий гроб!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
yukish
сообщение 21.1.2014, 1:25
Сообщение #5
Стаж: 12 лет

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

Спасибо за ответ.
А нормально что переменные id,level,cid одинаковые для обеих функций
или во вторую нужно другие типа id_1,level_1,cid_1??
И самое основное - как сделать чтобы файл rules.txt (то есть МОТД окно с правилами), админ мог вывести на экран открыть любому игроку, по команде из АМХХ меню или по команде в чате.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BaHeK
сообщение 21.1.2014, 8:02
Сообщение #6


Стаж: 17 лет

Сообщений: 571
Благодарностей: 505
Полезность: 651

Цитата(yukish @ 21.1.2014, 3:25) *
Спасибо за ответ.
А нормально что переменные id,level,cid одинаковые для обеих функций
или во вторую нужно другие типа id_1,level_1,cid_1??
И самое основное - как сделать чтобы файл rules.txt (то есть МОТД окно с правилами), админ мог вывести на экран открыть любому игроку, по команде из АМХХ меню или по команде в чате.

Нормально, переменные в разных функциях, а вообще удали эту проверку, в твоем случае она не нужна


Чуть-чуть нарушаю
http://img-host.su/aoN1.png
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 21.1.2014, 12:55
Сообщение #7
Стаж: 12 лет

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

if (!cmd_access(id,level,cid,1))
return PLUGIN_CONTINUE
Спасибо, я понял что это можно удалить, если не секрет, зачем оно вообще??
И как дописать чтобы админ мог вывести это окно с правилами любому игроку.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alter
сообщение 23.1.2014, 17:06
Сообщение #8
Стаж: 15 лет

Сообщений: 32
Благодарностей: 10
Полезность: 238

Цитата(yukish @ 21.1.2014, 14:55) *
зачем оно вообще??


Глянь тут.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
yukish
сообщение 24.1.2014, 12:36
Сообщение #9
Стаж: 12 лет

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

Цитата(Alter @ 23.1.2014, 18:06) *
Глянь тут.

Понял, в этом случае проверка не нужна.

Но!! я хотел доделать чтобы админ, по запросу, мог вывести ПРАВИЛА любому игроку на экран, и здесь она пригодится.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alter
сообщение 25.1.2014, 11:49
Сообщение #10
Стаж: 15 лет

Сообщений: 32
Благодарностей: 10
Полезность: 238

yukish,
По команде админа формируешь ему меню из игроков, затем выбранному игроку выполняешь в консоли команду на вывод правил.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
yukish
сообщение 25.1.2014, 12:05
Сообщение #11
Стаж: 12 лет

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

Спасибо,
если бы у меня были знания как у вас, наверняка, я бы сделал.
Максимально я могу подправить если будет очень-похожий пример.
Написать с нуля - не могу.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Alter
сообщение 25.1.2014, 12:31
Сообщение #12
Стаж: 15 лет

Сообщений: 32
Благодарностей: 10
Полезность: 238

yukish,
Код:
#include <amxmisc>

new maxplayers;

public plugin_init( )
{
//Регистрируем команду
register_clcmd( "menu", "amx_menu", ADMIN_BAN ); //ADMIN_BAN - флаг, при наличии которого игрок сможет открыть меню

//Получаем кол-во макс. игроков
maxplayers = get_maxplayers();
}


public amx_menu(id,level,cid)
{
//Проверка на доступ
if (!cmd_access(id,level,cid,1))
return PLUGIN_HANDLED;

//Создаем меню
new menu = menu_create("Выбери игрока:", "choose_menu");

new i, name[32], tempid[10];

//Цикл по всем игрокам
for(i = 1; i <= maxplayers; i++)
{
//Проверяем, находится ли игрок на сервере, убираем из меню пункт с нашим именем
if(is_user_connected(i) && i != id)
{
get_user_name(i, name, 31);
num_to_str(i, tempid, 9);
menu_additem(menu, name, tempid, 0);
}
}

//Задаем свойства меню
menu_setprop(menu, MPROP_NEXTNAME, "Далее")
menu_setprop(menu, MPROP_BACKNAME, "Назад")
menu_setprop(menu, MPROP_EXITNAME, "Выход")

//Выводим меню
return menu_display(id, menu, 0);
}

public choose_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
return PLUGIN_HANDLED;
}

new data[6], iName[64];
new access, callback, pl_id;

//Получаем информацию о выбранном пункте
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback);

//В данном случае ID игрока - это номер пункта меню (data)
pl_id = str_to_num(data);

//Выводим выбранному игроку мотд окно
show_motd(pl_id, "rules.txt", "rules MOTD");

return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
yukish
сообщение 25.1.2014, 18:42
Сообщение #13
Стаж: 12 лет

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

Ух ты, вот это да!!!
Ну мегареспект Вам, дружище!!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
yukish
сообщение 26.1.2014, 22:29
Сообщение #14
Стаж: 12 лет

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

Всё работает. СПАСИБО!!
А не правильнее ли
register_clcmd( "menu", "amx_menu", ADMIN_BAN );
заменить на
register_concmd( "menu", "amx_menu", ADMIN_BAN );
в исходниках "register_clcmd" используется для регистрации команды для чата:
register_clcmd( "say /menu", "amx_menu", ADMIN_BAN );
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 28.1.2014, 21:23
Сообщение #15
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Цитата(yukish @ 26.1.2014, 22:29) *
Всё работает. СПАСИБО!!
А не правильнее ли
register_clcmd( "menu", "amx_menu", ADMIN_BAN );
заменить на
register_concmd( "menu", "amx_menu", ADMIN_BAN );
в исходниках "register_clcmd" используется для регистрации команды для чата:
register_clcmd( "say /menu", "amx_menu", ADMIN_BAN );

Нет, вам же не нужно будет вызывать это меню с консоли сервера.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 28.1.2014, 21:53
Сообщение #16


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

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

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