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

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

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

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

Модификация simple redirection

Статус пользователя STILL47DEATH
сообщение 27.6.2011, 12:03
Сообщение #1


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Доброго времени. simple redirection, думаю, всем знаком. Но мне нужно его немного подкорректировать. Нужно добавить условие, что если юзер имеет флаг t, то редирект на него не действует.
Подскажите, что и где дописать.
Исходник:
*.sma
Код
/* AMX Mod X Script
*
*    Simple Redirection plugin for AMXX.
*    Orginal сode by Sonic (sonic@codet.de).
*    Modified and made for AMXX by BigBaller.
*    Translated and edited by STR@TEG, especially for c-s.net.ua
*    
*    Place following cvars in amxx.cfg or change their in this file:
*    
*    amx_rd_max_players <x>        // - Begin redirection, when more the x players connected (0 = redirect all players).
*    amx_rd_server_pw <password>    // - Password for the amx_rd_server_ip (if needed).
*    amx_rd_server_ip <ip>        // - Redirect to this server ip.
*    amx_rd_server_port <port>    // - Redirect server port.
*    
*    
*    To disable this plugin, set amx_rd_max_players to 33 or remove the line simple_redirect.amxx from plugins.ini.
*
*
*
* AMX Mod X Скрипт
*
*    Плагин простого перенаправления для AMXX.
*    Оригинальный код выполнил Sonic (sonic@codet.de).
*    Модифицировал и совместил с AMXX BigBaller.
*    Перевел и отредактировал STR@TEG, специально для c-s.net.ua
*    
*    Впишите следующие переменные в amxx.cfg или измените их в этом файле:
*    
*    amx_rd_max_players <x>        // - Начать перенаправление, когда количество игроков будет больше чем указано вместо x (0 = переадресовывать всех игроков).
*    amx_rd_server_pw <password>    // - Пароль для сервера указанного в переменной amx_rd_server_ip (Если нужно).
*    amx_rd_server_ip <ip>        // - Перенаправлять на этот IP адрес.
*    amx_rd_server_port <port>    // - Перенаправлять на этот порт.
*    
*    
*    Чтобы выключить плагин, установите значение переменной amx_rd_max_players "33" или удалите строку simple_redirect.amxx из файла plugins.ini.
*/

#include <amxmodx>
#include <amxmisc>

new pcvar_max_players, pcvar_server_pw, pcvar_server_ip, pcvar_server_port

public plugin_init()
{
    register_plugin("Simple Redirection", "1.1", "BigBaller | STR@TEG")
    pcvar_max_players = register_cvar("amx_rd_max_players", "0")
    pcvar_server_pw = register_cvar("amx_rd_server_pw", "")
    pcvar_server_ip = register_cvar("amx_rd_server_ip", "")
    pcvar_server_port = register_cvar("amx_rd_server_port", "")
}

public client_connect(id)
{
    new rd_max_players = get_pcvar_num(pcvar_max_players)
    new rd_server_port = get_pcvar_num(pcvar_server_port)
    new rd_server_ip[16], rd_server_pw[32]
    get_pcvar_string(pcvar_server_ip, rd_server_ip, charsmax(rd_server_ip))
    get_pcvar_string(pcvar_server_pw, rd_server_pw, charsmax(rd_server_pw))
    
    if (get_playersnum() >= rd_max_players)
    {
        if (!equal(rd_server_pw, ""))
        {
            client_cmd(id, "echo ^"[AMXX] Simple Redirection - set password to ^"%s^"^"", rd_server_pw)
            client_cmd(id, "password ^"%s^"", rd_server_pw)
        }
        
        client_cmd(id, "echo ^"[AMXX] Simple Redirection -  redirecting to %s:%d^"", rd_server_ip, rd_server_port)
        client_cmd(id, "Connect %s:%d", rd_server_ip, rd_server_port)
    }
    return PLUGIN_CONTINUE
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя imba
сообщение 27.6.2011, 14:51
Сообщение #2
Стаж: 16 лет

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

Код
public client_connect(id)
{

замени на
Код
public client_authorized(id){
    if (get_user_flags(id) & ADMIN_LEVEL_H)
        return PLUGIN_HANDLED


!
Запрет на ответ в темах до: 10.11.29392, 21:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 27.6.2011, 15:20
Сообщение #3


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(imba @ 27.6.2011, 15:51) *
Код
public client_connect(id)
{

замени на
Код
public client_authorized(id){
    if (get_user_flags(id) & ADMIN_LEVEL_H)
        return PLUGIN_HANDLED

уверен что именно так? я вчера вроде так делал, редирект вообще не хотел толком работать!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя imba
сообщение 27.6.2011, 16:01
Сообщение #4
Стаж: 16 лет

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

Уверен.


!
Запрет на ответ в темах до: 10.11.29392, 21:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Drotik
сообщение 27.6.2011, 17:27
Сообщение #5
Стаж: 18 лет

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

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

Цитата(STILL47DEATH @ 27.6.2011, 16:20) *
уверен что именно так? я вчера вроде так делал, редирект вообще не хотел толком работать!

у меня вот так
только сам редирект пропускает бывает sad.gif

Код
#include <amxmodx>

new const PLUGIN[] = "Simple Redirect"
new const VERSION[] = "1.1"
new const AUTHOR[] = "BigBaller vs. jsn"

new g_MaxPlayers, p_MaxPlayers
new g_AdminImm, p_AdminImm
new g_ServerIP, p_ServerIP[16]
new g_ServerPort, p_ServerPort
new g_ServerPw, p_ServerPw[32]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    g_MaxPlayers = register_cvar("amxx_rd_maxplayers", "30")
    g_AdminImm = register_cvar("amx_rd_adminimm", "1")
    g_ServerIP = register_cvar("amxx_rd_server", "ип")
    g_ServerPort = register_cvar("amxx_rd_serverport", "порт")
    g_ServerPw = register_cvar("amxx_rd_serverpw", "")
}

public plugin_cfg()
{
    p_MaxPlayers = get_pcvar_num(g_MaxPlayers)
    p_AdminImm = get_pcvar_num(g_AdminImm)
    get_pcvar_string(g_ServerIP, p_ServerIP, 15)
    p_ServerPort = get_pcvar_num(g_ServerPort)
    get_pcvar_string(g_ServerPw, p_ServerPw, 31)
}

public client_authorized(id)
{
    if (p_AdminImm && get_user_flags(id) & ADMIN_LEVEL_B)
        return
    
    if (get_playersnum() < p_MaxPlayers)
        return
    
    if (p_ServerPw[0] == '^0')
        client_cmd(id, "echo ^"[AMXX] Simple Redirection - Set Password to %s^"; password %s", p_ServerPw, p_ServerPw)

    client_cmd(id, "echo ^"[AMXX] Simple Redirection -  Redirecting to %s:%d^"; Connect %s:%d", p_ServerIP, p_ServerPort, p_ServerIP, p_ServerPort)
}


Отредактировал: Drotik, - 27.6.2011, 17:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 27.6.2011, 19:40
Сообщение #6


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(imba @ 27.6.2011, 17:01) *
Уверен.

проблема в том, что данный вариант у меня не работает по одной простой причине: редирект происходит раньше, чем клиент авторизовывается и получает какие-либо права на сервере

Цитата(Drotik @ 27.6.2011, 18:27) *
у меня вот так
только сам редирект пропускает бывает sad.gif

Код
#include <amxmodx>

new const PLUGIN[] = "Simple Redirect"
new const VERSION[] = "1.1"
new const AUTHOR[] = "BigBaller vs. jsn"

new g_MaxPlayers, p_MaxPlayers
new g_AdminImm, p_AdminImm
new g_ServerIP, p_ServerIP[16]
new g_ServerPort, p_ServerPort
new g_ServerPw, p_ServerPw[32]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    g_MaxPlayers = register_cvar("amxx_rd_maxplayers", "30")
    g_AdminImm = register_cvar("amx_rd_adminimm", "1")
    g_ServerIP = register_cvar("amxx_rd_server", "ип")
    g_ServerPort = register_cvar("amxx_rd_serverport", "порт")
    g_ServerPw = register_cvar("amxx_rd_serverpw", "")
}

public plugin_cfg()
{
    p_MaxPlayers = get_pcvar_num(g_MaxPlayers)
    p_AdminImm = get_pcvar_num(g_AdminImm)
    get_pcvar_string(g_ServerIP, p_ServerIP, 15)
    p_ServerPort = get_pcvar_num(g_ServerPort)
    get_pcvar_string(g_ServerPw, p_ServerPw, 31)
}

public client_authorized(id)
{
    if (p_AdminImm && get_user_flags(id) & ADMIN_LEVEL_B)
        return
    
    if (get_playersnum() < p_MaxPlayers)
        return
    
    if (p_ServerPw[0] == '^0')
        client_cmd(id, "echo ^"[AMXX] Simple Redirection - Set Password to %s^"; password %s", p_ServerPw, p_ServerPw)

    client_cmd(id, "echo ^"[AMXX] Simple Redirection -  Redirecting to %s:%d^"; Connect %s:%d", p_ServerIP, p_ServerPort, p_ServerIP, p_ServerPort)
}

попробую

Drotik, что-то твой вариант у меня вообще полный капец вызвал на сервере, никто коннект не мог совершить. твой исходник реагирует на квары или только в исходник надо всё вписывать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 27.6.2011, 19:48
Сообщение #7


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

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

Цитата(STILL47DEATH @ 27.6.2011, 20:40) *
проблема в том, что данный вариант у меня не работает по одной простой причине: редирект происходит раньше, чем клиент авторизовывается и получает какие-либо права на сервере

попробуй в public client_connect(id) поставить set_task с задержкой на несколько секунд, что бы человек получил права, а уже сам редирект внутри обработчика set_task
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 27.6.2011, 20:14
Сообщение #8


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(scurra @ 27.6.2011, 20:48) *
попробуй в public client_connect(id) поставить set_task с задержкой на несколько секунд, что бы человек получил права, а уже сам редирект внутри обработчика set_task

спасибо за подсказку, но сам я это сделать не могу, ибо не знаю pawn

Может это поможет. Мне в итоге нужно, чтобы был редирект, но при этом был резер слот для определённого флага доступа с киком лишнего игрока (по максимальному пингу) при коннекте такого игрока. если кто-то сможет написать более совершенный исходник за $, то я готов заказать!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя imba
сообщение 27.6.2011, 21:47
Сообщение #9
Стаж: 16 лет

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

STILL47DEATH,
Тебе нужен UFPS Slots Reservation.
Где его найти,думаю сам знаешь )
+
ОПИСАНИЕ:

* Расширенная организация редиректа игроков.
* Подсети и сервера для редиректа игроков задаются в отдельном файле: configs/adminslots.ini
* Управление резервными слотами на сервере.
* Резервирование слотов для приватных групп пользователей.
* Возможность самостоятельного создания приватных групп.
* Полная замена стандартного плагина adminslots.



ПЕРЕМЕННЫЕ:

* amx_reservation (default: 0) - количество резервных слотов.
* amx_hideslots (default: 0) - метод скрытия резервных слотов.
1 - не скрывать резервные слоты, отобразить количество слотов равным sv_visiblemaxplayers.
0 - не скрывать резервные слоты, отобразить количество слотов равным maxplayers
1 - скрывать резервные слоты (стандартный режим скрытия adminslots)
2 - полностью скрыть резервные слоты:
* Важно:
* - При amx_hideslots 2 все резервные слоты будут скрыты, что позволит игрокам использовать функцию автоконнект из Server Browser при входе на сервер.
* - При amx_hideslots 2 админам для входа на резервные слоты необходимо использовать команду консоли: connect serverort
* amx_remove_mode (default: 0) - режим выбора игрока для удаления с сервера, при входе админа на последний резервный слот.
0 - удаляются только боты
1 - удаляются боты или игроки с наиболее высоким пингом
2 - удаляются боты или игроки с наименьшим временем игры на сервере
3 - удаляются боты или игроки с наибольшим временем игры на сервере
* amx_remove_hltv (default: 0) - удалять с сервера HLTV, при входе админа на последний резервный слот.
0 - не удалять HLTV
1 - удалять HLTV, как обычного игрока
* amx_remove_redirect (default: 0) - метод удаления игрока с сервера.
0 - Кикнуть игрока
1 - Перенаправлять игрока на указанный в adminslots.ini сервер
* amx_remove_showmotd (default: 0) - при удалении игрока показывать ему MOTD с сообщением о причине удаления.
0 - Не показывать MOTD
1 - Показывать MOTD
* amx_remove_endround (default: 0) - удалять игрока только по окончании раунда.
0 – удалять игрока сразу
1 - ожидать окончания раунда


ИСПОЛЬЗОВАНИЕ ПРИВАТНЫХ ГРУПП:
Код плагина организован таким образом, чтобы вы имели возможность самостоятельного создания/добавления приватных групп под свои нужды.
Для примера заранее создано 4 приватных группы, одной из которых, можно воспользоваться изменяя значение #define PRIVATE_MODE в исходнике.

0 - Функция отключена
1 - Игроки с локальных сетей
2 - Игроки с клиентом MYAC
3 - Игроки с клиентом STEAM
4 - Игроки со специальным флагом (по-умолчанию "r": ADMIN_LEVEL_F)


!
Запрет на ответ в темах до: 10.11.29392, 21:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 28.6.2011, 8:42
Сообщение #10


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(imba @ 27.6.2011, 21:47) *
STILL47DEATH,
Тебе нужен UFPS Slots Reservation.
Где его найти,думаю сам знаешь )
+
ОПИСАНИЕ:

* Расширенная организация редиректа игроков.
* Подсети и сервера для редиректа игроков задаются в отдельном файле: configs/adminslots.ini
* Управление резервными слотами на сервере.
* Резервирование слотов для приватных групп пользователей.
* Возможность самостоятельного создания приватных групп.
* Полная замена стандартного плагина adminslots.



ПЕРЕМЕННЫЕ:

* amx_reservation (default: 0) - количество резервных слотов.
* amx_hideslots (default: 0) - метод скрытия резервных слотов.
1 - не скрывать резервные слоты, отобразить количество слотов равным sv_visiblemaxplayers.
0 - не скрывать резервные слоты, отобразить количество слотов равным maxplayers
1 - скрывать резервные слоты (стандартный режим скрытия adminslots)
2 - полностью скрыть резервные слоты:
* Важно:
* - При amx_hideslots 2 все резервные слоты будут скрыты, что позволит игрокам использовать функцию автоконнект из Server Browser при входе на сервер.
* - При amx_hideslots 2 админам для входа на резервные слоты необходимо использовать команду консоли: connect serverort
* amx_remove_mode (default: 0) - режим выбора игрока для удаления с сервера, при входе админа на последний резервный слот.
0 - удаляются только боты
1 - удаляются боты или игроки с наиболее высоким пингом
2 - удаляются боты или игроки с наименьшим временем игры на сервере
3 - удаляются боты или игроки с наибольшим временем игры на сервере
* amx_remove_hltv (default: 0) - удалять с сервера HLTV, при входе админа на последний резервный слот.
0 - не удалять HLTV
1 - удалять HLTV, как обычного игрока
* amx_remove_redirect (default: 0) - метод удаления игрока с сервера.
0 - Кикнуть игрока
1 - Перенаправлять игрока на указанный в adminslots.ini сервер
* amx_remove_showmotd (default: 0) - при удалении игрока показывать ему MOTD с сообщением о причине удаления.
0 - Не показывать MOTD
1 - Показывать MOTD
* amx_remove_endround (default: 0) - удалять игрока только по окончании раунда.
0 – удалять игрока сразу
1 - ожидать окончания раунда


ИСПОЛЬЗОВАНИЕ ПРИВАТНЫХ ГРУПП:
Код плагина организован таким образом, чтобы вы имели возможность самостоятельного создания/добавления приватных групп под свои нужды.
Для примера заранее создано 4 приватных группы, одной из которых, можно воспользоваться изменяя значение #define PRIVATE_MODE в исходнике.

0 - Функция отключена
1 - Игроки с локальных сетей
2 - Игроки с клиентом MYAC
3 - Игроки с клиентом STEAM
4 - Игроки со специальным флагом (по-умолчанию "r": ADMIN_LEVEL_F)

Знаю, скачал уже
слышай не подскажешь, а вот в описании написано, что при коннекте адм возможно перенаправление, а если без админа, ну т.е. игрок просто коннектится на резервный слот, то перенаправление будет или просто будет информировать, что мол на резервный слот без спец прав зайти нельзя?

Отредактировал: STILL47DEATH, - 28.6.2011, 11:40
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя imba
сообщение 28.6.2011, 13:32
Сообщение #11
Стаж: 16 лет

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

Будет редиректить на сервер указанный в adminslots.ini


!
Запрет на ответ в темах до: 10.11.29392, 21:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 28.6.2011, 13:39
Сообщение #12


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

пошёл ставить на свои серверы! держи + в мордашку за консультацию и хелп
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 28.6.2011, 19:18
Сообщение #13


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Так, значит прикол такой: резерв работает нормально. но если игрок коннектится на резерв, то как бы не был настроен плагин, будет просто не пускать, никакого перенаправления, в принципе о такой функции и речи не шло (судя из описания).... блин ещё варианты имеются как устроить перенаправление? для зеревра я использую UFPS Slots Reservation
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя imba
сообщение 28.6.2011, 19:35
Сообщение #14
Стаж: 16 лет

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

amx_hideslots 0
amx_reservation 2
amx_remove_mode 1
amx_remove_showmotd 1
amx_remove_redirect 1
amx_remove_endround 0

С такими настройками при 30\32 будет перекидывать на сервер прописанный в adminslots.ini
По крайней мере у меня именно так.


!
Запрет на ответ в темах до: 10.11.29392, 21:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 28.6.2011, 21:13
Сообщение #15


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(imba @ 28.6.2011, 19:35) *
amx_hideslots 0
amx_reservation 2
amx_remove_mode 1
amx_remove_showmotd 1
amx_remove_redirect 1
amx_remove_endround 0

С такими настройками при 30\32 будет перекидывать на сервер прописанный в adminslots.ini
По крайней мере у меня именно так.

у меня также, только слотов я не 2 резервировал, а 1!
покажи начинку файла adminslots.ini, может я там криво записал. Ибо когда я пытаюсь без прав зайти на резервный слот, меня не перекидывает на другой сервер (редирект), а просто не пускает!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя imba
сообщение 28.6.2011, 21:48
Сообщение #16
Стаж: 16 лет

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

Только одна запись
Цитата
0.0.0.0/0 "server:port"

Попробуй 2 резерв слота сделать.


!
Запрет на ответ в темах до: 10.11.29392, 21:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 28.6.2011, 21:53
Сообщение #17


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

Цитата(imba @ 28.6.2011, 22:48) *
Только одна запись

Попробуй 2 резерв слота сделать.

погоди, ты в третьем пункте добавлял сервер для редиректа? там же вторая строка Интернет имеется, я туда вписал.
попробую, утром отпишусь, дабы по 100 раз не менять карту на сервере, а то ребятки злятся уже хД
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STILL47DEATH
сообщение 29.6.2011, 11:34
Сообщение #18


Стаж: 18 лет

Сообщений: 662
Благодарностей: 83
Полезность: 150

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