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

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

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

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

Редирект доделать

Статус пользователя qpi3ik
сообщение 21.10.2014, 18:27
Сообщение #1


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Доброе время суток Уважаемые скриптеры!
Есть плагин перехода между серверами. Вот источник http://s13cs.ru/showthread.php?t=350
Кто может добавить в меню к названию сервера, карта на сервере в даное время и количество игроков. Да и HUD с xredirect не плохо было бы добавить)

Меню сейчас


Сделать как сдесь

А если отключен то так

И такую HUD как в xredirect


Исходник есть в источнике ttp://s13cs.ru/showthread.php?t=350
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 21.10.2014, 18:34
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Это нереально: имеющийся в плагине функционал очень далеко от того, что вы хотите.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 21.10.2014, 18:37
Сообщение #3


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(Safety1st @ 21.10.2014, 19:34) *
Это нереально: имеющийся в плагине функционал очень далеко от того, что вы хотите.


А xredirect переделать тогда реально что бы стимовцев тоже перекидывало?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя panikajo
сообщение 21.10.2014, 18:44
Сообщение #4
Стаж: 12 лет

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

там вроде xredirect 2rc вышел разве он не поддерживает это?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 21.10.2014, 18:46
Сообщение #5


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(panikajo @ 21.10.2014, 19:44) *
там вроде xredirect 2rc вышел разве он не поддерживает это?


01-27-2011 , 23:54 xREDIRECT v2.0 RC2

Не думаю что они в 2011 предугадали код для нашего времени)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
kritik
сообщение 21.10.2014, 19:27
Сообщение #6
Стаж: 12 лет

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

Цитата(qpi3ik @ 21.10.2014, 20:46) *
01-27-2011 , 23:54 xREDIRECT v2.0 RC2

Не думаю что они в 2011 предугадали код для нашего времени)

Просто у автора пропало желание. Он сказал, что может когда-то...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя apTmusic
сообщение 21.10.2014, 20:40
Сообщение #7


Стаж: 14 лет

Сообщений: 419
Благодарностей: 126
Полезность: 232

client_cmd(id,"echo ^"^";^"Connect^"IP:PORT"); - Стим
client_cmd(id,"^"connect^"IP:PORT"); - Нон-стим
Или наоборот :)

Думаю данные команды не составит труда добавить.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 22.10.2014, 9:23
Сообщение #8


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(apTmusic @ 21.10.2014, 21:40) *
client_cmd(id,"echo ^"^";^"Connect^"IP:PORT"); - Стим
client_cmd(id,"^"connect^"IP:PORT"); - Нон-стим
Или наоборот :)

Думаю данные команды не составит труда добавить.


Я так понял нужно изменить эту строчку?

Код:
client_cmd(id, "connect %s", sFullAddress)


Как изменить?
Подскажите, я потестю на сервере.

Источник плагина: https://forums.alliedmods.net/showthread.php?t=148710

Отредактировал: qpi3ik, - 22.10.2014, 10:33
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 22.10.2014, 11:22
Сообщение #9


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Давайте поправим xREDIRECT v2.0 RC2 который посоветовал panikajo.

Просто добавим код для того что бы стимовцев тоже перекидывало.

Так как посоветовал apTmusic.

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 22.10.2014, 13:14
Сообщение #10
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Чтобы редирект работал для стим, пишите в лс, дам скомпилированную версию под ваш список серверов.

Код:
#include <amxmodx>
#include <amxmisc>
#include <sockets>

#define s 3 // Количество серверов

new const server_adress[][] = {
"94.142.138.144:27015",
"46.174.48.30:27215",
"193.26.217.47:28287"
}

new bool:disable[s]

new hostname[128], map[64], desc[64], dir[64], adress[32]
new players, maxplayers

public plugin_init() {
register_plugin("Go To Server", "1.0", "proff_q")

register_event("ResetHUD", "task", "be", "1=1")

register_clcmd("say /server", "servers_menu")
}

public task(id)
set_task(1.0, "show_hud")

public show_hud(id) {
if(!is_user_alive(id)) {
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), 0.5, 0.5, 0, 0.0, 15.0)
show_hudmessage(id, "Say /server to switch between servers")

set_task(15.0, "show_hud")
}
}

public servers_menu(id) {
new menu = menu_create("\yСписок серверов:", "menu_handler")
new message[256], thisip[32], thishostname[64]

get_user_name(0, thishostname, charsmax(thishostname))
get_user_ip(0, thisip, charsmax(thisip), 0)
arrayset(disable, 0, s)

for (new i; i < s; ++i) {
if(equali(server_adress[i], thisip)) {
formatex(message, charsmax(message), "\d%s \rТы здесь", thishostname)
menu_additem(menu, message, _, _)
disable[i] = true
continue
}

get_info(server_adress[i])

if(maxplayers <= 0) {
formatex(message, charsmax(message), "\dСервер выключен")
disable[i] = true
}
else {
formatex(message, charsmax(message), "%s\y[\w%s\y](\w%d\y/\w%d\y)", hostname, map, players, maxplayers)
}

menu_additem(menu, message, _, _)
}

menu_setprop(menu, MPROP_NUMBER_COLOR, "\y")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)

menu_display(id, menu, 0)
}

public menu_handler(id, menu, item) {
if(item == MENU_EXIT)
return PLUGIN_HANDLED

new message[256]

if(disable[item]) {
menu_display(id, menu, 0)
} else {
formatex(message, charsmax(message), "^"Connect^" %s", server_adress[item])
client_cmd(id, "%s", message)
}

return PLUGIN_HANDLED
}

stock get_info(const ip[]) {
static buffer[2048], host[64], port, error, tmp2[32]
new cache[32]
new n, j, a = 5, i = 6

strtok(ip, host, 63, tmp2, 31, ':')
port = str_to_num(tmp2)

new g_socket = socket_open(host, port, SOCKET_UDP, error)

format(cache, 25, "%c%c%c%c%c%s%c", 255, 255, 255, 255, 84, "Source Engine Query", 0)

socket_send2(g_socket, cache, 25)
socket_recv(g_socket, buffer, 2047)
socket_close(g_socket)

while(a) {
if(buffer[a+n++] == '^0')
j++

if(j == a) {
players = buffer[j+n]
maxplayers = buffer[++j+n]
a = 0
}
}

i += copyc(adress, charsmax(adress), buffer[i], 0)+1 // Какой-то непонятный локальный айпи
i += copyc(hostname, charsmax(hostname), buffer[i], 0)+1 // hostname
i += copyc(map, charsmax(map), buffer[i], 0)+1 // map
i += copyc(dir, charsmax(dir), buffer[i], 0)+1 // dir
i += copyc(desc, charsmax(desc), buffer[i], 0)+1 // gamename

return true
}


Отредактировал: proff_q, - 22.10.2014, 13:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя KaJIbIBaH
сообщение 22.10.2014, 13:48
Сообщение #11


Стаж: 19 лет

Сообщений: 151
Благодарностей: 142
Полезность: 929

Кто бы мог подумать, что всё так просто...
Интересно, удалят ли модеры сей чудо-способ? (=

Выкладываю исправленный xRedirect.
Если удалят - значит, пишите в ЛС.

З.Ы. команда для Стима работает так же и для нон-Стима.
Прикрепленный файл  xredirect.sma ( 110,15 килобайт ) Кол-во скачиваний: 30
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 22.10.2014, 13:50
Сообщение #12


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

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

2500 2000 строк бредо когда

Отредактировал: ex3m777, - 22.10.2014, 13:52


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 22.10.2014, 13:56
Сообщение #13


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

ex3m777, половина это комменты.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 25.10.2014, 2:58
Сообщение #14


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(proff_q @ 22.10.2014, 14:14) *
Чтобы редирект работал для стим, пишите в лс, дам скомпилированную версию под ваш список серверов.

Код:
#include <amxmodx>
#include <amxmisc>
#include <sockets>

#define s 3 // Количество серверов

new const server_adress[][] = {
"94.142.138.144:27015",
"46.174.48.30:27215",
"193.26.217.47:28287"
}

new bool:disable[s]

new hostname[128], map[64], desc[64], dir[64], adress[32]
new players, maxplayers

public plugin_init() {
register_plugin("Go To Server", "1.0", "proff_q")

register_event("ResetHUD", "task", "be", "1=1")

register_clcmd("say /server", "servers_menu")
}

public task(id)
set_task(1.0, "show_hud")

public show_hud(id) {
if(!is_user_alive(id)) {
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), 0.5, 0.5, 0, 0.0, 15.0)
show_hudmessage(id, "Say /server to switch between servers")

set_task(15.0, "show_hud")
}
}

public servers_menu(id) {
new menu = menu_create("\yСписок серверов:", "menu_handler")
new message[256], thisip[32], thishostname[64]

get_user_name(0, thishostname, charsmax(thishostname))
get_user_ip(0, thisip, charsmax(thisip), 0)
arrayset(disable, 0, s)

for (new i; i < s; ++i) {
if(equali(server_adress[i], thisip)) {
formatex(message, charsmax(message), "\d%s \rТы здесь", thishostname)
menu_additem(menu, message, _, _)
disable[i] = true
continue
}

get_info(server_adress[i])

if(maxplayers <= 0) {
formatex(message, charsmax(message), "\dСервер выключен")
disable[i] = true
}
else {
formatex(message, charsmax(message), "%s\y[\w%s\y](\w%d\y/\w%d\y)", hostname, map, players, maxplayers)
}

menu_additem(menu, message, _, _)
}

menu_setprop(menu, MPROP_NUMBER_COLOR, "\y")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)

menu_display(id, menu, 0)
}

public menu_handler(id, menu, item) {
if(item == MENU_EXIT)
return PLUGIN_HANDLED

new message[256]

if(disable[item]) {
menu_display(id, menu, 0)
} else {
formatex(message, charsmax(message), "^"Connect^" %s", server_adress[item])
client_cmd(id, "%s", message)
}

return PLUGIN_HANDLED
}

stock get_info(const ip[]) {
static buffer[2048], host[64], port, error, tmp2[32]
new cache[32]
new n, j, a = 5, i = 6

strtok(ip, host, 63, tmp2, 31, ':')
port = str_to_num(tmp2)

new g_socket = socket_open(host, port, SOCKET_UDP, error)

format(cache, 25, "%c%c%c%c%c%s%c", 255, 255, 255, 255, 84, "Source Engine Query", 0)

socket_send2(g_socket, cache, 25)
socket_recv(g_socket, buffer, 2047)
socket_close(g_socket)

while(a) {
if(buffer[a+n++] == '^0')
j++

if(j == a) {
players = buffer[j+n]
maxplayers = buffer[++j+n]
a = 0
}
}

i += copyc(adress, charsmax(adress), buffer[i], 0)+1 // Какой-то непонятный локальный айпи
i += copyc(hostname, charsmax(hostname), buffer[i], 0)+1 // hostname
i += copyc(map, charsmax(map), buffer[i], 0)+1 // map
i += copyc(dir, charsmax(dir), buffer[i], 0)+1 // dir
i += copyc(desc, charsmax(desc), buffer[i], 0)+1 // gamename

return true
}


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