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

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

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

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

Настройка вывода серверов по очереди

werba
сообщение 6.3.2014, 2:18
Сообщение #1
Стаж: 12 лет

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

Был мастре сервере настроенный как или кто это делал не помню, может сам тыкая и проверяю не очень дружу с SQL запросами.
В чём суть у меня 3 типа серверов нужно выводить игроку вначале 2-ой потом 1-ый по дате добавления, а потом 3-ий по date_end
Всё перепробовал но не как, весь комп перерыл не могу найти тот мс настроенный.
Помогите знающие люди =)

Код
c.execute("(SELECT DISTINCT address FROM "+table+" WHERE game = 'cs16' AND type = 2 AND date_end >  unix_timestamp(now()) ORDER BY date_end DESC) UNION (SELECT DISTINCT address FROM "+table+" WHERE game = 'cs16' AND type = 2 ORDER BY date_create DESC) UNION (SELECT DISTINCT address FROM "+table+" WHERE game = 'cs16' AND type = 3 ORDER BY data_end DESC)")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ZeBot
сообщение 6.3.2014, 3:05
Сообщение #2
Стаж: 12 лет

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

Кто делал этот гребаный мастерсервер и что это за асдасд запросы в базу? ЗАЧЕМ так делать? punishment.gif

Цитата
3 типа серверов нужно выводить игроку вначале 2-ой потом 1-ый по дате добавления, а потом 3-ий по date_end

Какие 3 типа? Куда ты выводишь? Как ты выводишь? Конкретней проблему описывай.

Кидай структуру базы.

Отредактировал: ZeBot, - 6.3.2014, 3:20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
werba
сообщение 6.3.2014, 3:38
Сообщение #3
Стаж: 12 лет

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

Цитата(ZeBot @ 6.3.2014, 3:05) *
Кто делал этот гребаный мастерсервер и что это за асдасд запросы в базу? ЗАЧЕМ так делать? punishment.gif


Какие 3 типа? Куда ты выводишь? Как ты выводишь? Конкретней проблему описывай.

Кидай структуру базы.


я вроде понятным языком написал, и что хочу тоже понятно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя onotole
сообщение 6.3.2014, 7:34
Сообщение #4


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

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

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

Цитата(werba @ 6.3.2014, 4:38) *
я вроде понятным языком написал, и что хочу тоже понятно.

Если бы было понятно, вопросов не задавали бы
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TheNega
сообщение 6.3.2014, 12:39
Сообщение #5


Стаж: 13 лет

Сообщений: 724
Благодарностей: 1396
Полезность: 1101

Если у тебя МС от jesuspank попробуй не затрагивая самого файла мс через конфиг настроить сортировку. Выбираешь MODE: CMQ и в его настройках увидишь пример ручной интеграции с базой данных.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
werba
сообщение 6.3.2014, 12:41
Сообщение #6
Стаж: 12 лет

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

Это в мс код отвечает за вывод серверов, берёт их SQL запросом и выводит в клиенте игры, проблема в том что он выводит их в раскидную, а нужно что бы он их по очереди выводил вначале type = 2, потом type = 1, потом type = 3, прошу помочь поправить код.
Я думаю сейчас понятно.

Код
c.execute("(SELECT DISTINCT address FROM "+table+" WHERE game = 'cs16' AND type = 2 AND date_end >  unix_timestamp(now()) ORDER BY date_end DESC) UNION (SELECT DISTINCT address FROM "+table+" WHERE game = 'cs16' AND type = 2 ORDER BY date_create DESC) UNION (SELECT DISTINCT address FROM "+table+" WHERE game = 'cs16' AND type = 3 ORDER BY data_end DESC)")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TheNega
сообщение 6.3.2014, 12:52
Сообщение #7


Стаж: 13 лет

Сообщений: 724
Благодарностей: 1396
Полезность: 1101

werba, я же вам написал не нужно трогать код в самом МС. Сделайте посредством CMQ.

В ms.cfg выбери в начале:
MODE = CMQ

Далее дай коннект к БД:
Код
[CMQ]
HOST = localhost
NAME = name_db
USER = user_db
PASSWORD = pass_db

и немного ниже вставь в настройку CMQCS после = :
Код
(SELECT address FROM servers WHERE type = '2' ORDER BY date_end LIMIT 1000) UNION (SELECT address FROM servers WHERE type = '1' ORDER BY date_create DESC LIMIT 1000) UNION ALL (SELECT address FROM servers WHERE type = '3' ORDER BY data_end DESC LIMIT 1000)


Не знаю почему , но если в запросе убрать "LIMIT" сортировка сильно кривая становится , с лимитом более менее ровно , это относится конкретно поиску МС в самой КС , если смотреть через hlmaster то всё ровно!

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


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

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

селект тяжеловат конечно с калькуляцией но в целом как вариант order by (-2)^type + type DESC


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
werba
сообщение 6.3.2014, 13:08
Сообщение #9
Стаж: 12 лет

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

Цитата(mazdan @ 6.3.2014, 12:54) *
селект тяжеловат конечно с калькуляцией но в целом как вариант order by (-2)^type + type DESC


вот это ближе уже к тому что я хотел но вот в чём беда первый типе правильно выводиться а вот воторой должен быть type = 1, а потом type = 3
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 6.3.2014, 13:13
Сообщение #10


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

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

werba, я так понимаю, беда с математикой
(-2)^type + type
1: -2^1 + 1 = -1
2: -2^2 + 2 = 6
3: -2^3 + 3 = -5
Расставить в порядке убывания помочь или сами всё таки справитесь?

UPD: единственное я бы скобочки добавил там.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
werba
сообщение 6.3.2014, 13:19
Сообщение #11
Стаж: 12 лет

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

Я же писал c SQL я не дружу.
Вот подумал возможно вначале такой вывод по переменным если у сервера top = '1' его первым показывать, потом boost = или > '1' он после ну и логично остальные дальше и что бы top = '1' сортировался по дате енд, буст по дате создания, вип по дате енд
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 6.3.2014, 13:23
Сообщение #12


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

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

werba, попробуйте так SELECT * FROM servers ORDER BY ((-2)^type + type), data_end DESC
И проверьте что выведет


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
werba
сообщение 6.3.2014, 13:29
Сообщение #13
Стаж: 12 лет

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

Цитата(mazdan @ 6.3.2014, 13:23) *
werba, попробуйте так SELECT * FROM servers ORDER BY ((-2)^type + type), data_end DESC
И проверьте что выведет


вверху вывел сервер тот у которого больше дней осталось, но типы в разброс.

Возможно сделать 3 SQL запроса и что бы они шли по очереди 1 запрос выводил бы выше сервера и т.д ?

P.S уже думаю через листинг серверов сделать

Отредактировал: werba, - 6.3.2014, 13:38
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TheNega
сообщение 6.3.2014, 13:40
Сообщение #14


Стаж: 13 лет

Сообщений: 724
Благодарностей: 1396
Полезность: 1101

werba, только 2 типа серверов будут более менее ровно выводится , если выводить 3 типа , тогда первый тип будет ровно , а второй и третий будут в перемешку , проверено © Для ровной сортировки нужна пауза хотя бы пол секунды между запросами 2 и 3 типа , если бы кто-то подсказал как реализовать паузу в запросе было бы замечательно =)

Отредактировал: TheNega, - 6.3.2014, 13:45
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 6.3.2014, 13:41
Сообщение #15


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

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

werba, SELECT * FROM servers ORDER BY (((-2)^type + type)*100000 + data_end) DESC
а так?


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
werba
сообщение 6.3.2014, 14:03
Сообщение #16
Стаж: 12 лет

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

Цитата(mazdan @ 6.3.2014, 13:41) *
werba, SELECT * FROM servers ORDER BY (((-2)^type + type)*100000 + data_end) DESC
а так?


Что то ближе но понял что так не правильно будет выводить, наткнулся на php листинг серверов и узнал что есть

Код
[URL]
# write url to text file or use NOURL.
URLFILECS = http://tests-monitor.ru/service/forcsbot.txt
URLFILEHL1 = NOURL
URLFILEHL2 = NOURL
URLFILECSS = NOURL
URLFILEQ3 = NOURL


Вот у меня есть listing где считаются топ вип и буст, всё как я хочу что бы отображалось в мс, вот как теперь сделать так что бы с этих списков брался столбец ip и создавался текстовый файл, если сервера нет то удалялся, такое возможно если да готов заплатить за его реализацию под мой сайт.

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