Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] Warcraft → Статистика из ghost в pvpgn

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 25

1

Topic: Статистика из ghost в pvpgn

Как сделать так чтобы сервер читал из бд не через uid а через username
и чтобы записывалось так же
либо айди вообще не нужен пока есть username ))

2 (edited by Karaulov 10.01.2017 19:55)

Re: Статистика из ghost в pvpgn

Т.е без учета регистра username должно читать вместо uid ?

Почему бы и нет но я глянул там много кода заменить придется что бы работало через Username вместо "BNET\\acct\\userid"

Если студия есть удалить попробовать account->uid и потом по ходу ошибок заменять на username)

3

Re: Статистика из ghost в pvpgn

уу какой же ты быстрый не спишь тут ?)

а через storage_sql.cpp возможно?
то есть
не SELECT строка FROM таблица Where uid
а SELECT строка FROM таблица Where username

4

Re: Статистика из ghost в pvpgn

В сервере Pvpgn или в боте Ghost или где я че-то не понял)

5

Re: Статистика из ghost в pvpgn

в сервере pvpgn

Добавлено: 10.01.2017 20:04

а клиент не связан с айди? )
если связан то ничего не получится

6

Re: Статистика из ghost в pvpgn

ну я не все посмотрел возможно сложнее чем я думал)

7

Re: Статистика из ghost в pvpgn

Вопрос в следующем: Зачем такой грязный хак? В целом, не сложно даже опцию сделать, но зачем?

8

Re: Статистика из ghost в pvpgn

Из кода можно искать по uid, так и по username (но этот поиск происходит в памяти сервера, а не в БД):
extern t_account * accountlist_find_account(char const * username);
extern t_account * accountlist_find_account_by_uid(unsigned int uid);

Одно из основных предназначений uid в связывании всех таблиц БД, поэтому избавиться от него не получится.

Do not ask for support in PM.

9

Re: Статистика из ghost в pvpgn

Вопрос в том, что автор под всем этим имел ввиду. если поиск по базе через username - элементарно, если какая-то обвязка - тоже. Я, например, жду ответа на первый вопрос

10 (edited by SkyFall 11.01.2017 20:46)

Re: Статистика из ghost в pvpgn

я хочу чтобы сервер читал из бд ghost статистику через username
иначе айди не совпадают

Добавлено: 11.01.2017 20:45

В файле storage_sql.cpp :
snprintf(query, sizeof(query), "SELECT %s FROM %s%s WHERE " SQL_UID_FIELD " = %u", col, tab_prefix, tab, uid);
если это изменю на
user = xstrdup(username);
    strlower(user);
snprintf(query, sizeof(query), "SELECT %s FROM %s%s WHERE username = %s", col, tab_prefix, tab, user);

и сделаю всё что связано с uid изменю на username получится ли? )

11 (edited by Serc 11.01.2017 23:22)

Re: Статистика из ghost в pvpgn

Что мешает боту записывать статистику игрокам в bnet таблицу? Создав соответствующие колонки?
Запрос для бота примерно такой

UPDATE bnet SET games='количество игр', wins='побед', losses='поражений', winspcnt='побед%', kills='убийств', deaths='смертей', assists='помощи', pts='очки', rank='место_в_топе', leavecount='ливы', leavepcnt='ливы%' WHERE username='игрок'

Корректировать можно под себя ясное дело

12

Re: Статистика из ghost в pvpgn

1. Serc а можно ли как нибудь сделать . чтобы изначально  статистика не в scores/ а в BNET записывались все игроки сыгравшие, чтобы в BNET создавались новые игроки.
-

13

Re: Статистика из ghost в pvpgn

Serc wrote:

Что мешает боту записывать статистику игрокам в bnet таблицу? Создав соответствующие колонки?
Запрос для бота примерно такой
UPDATE bnet SET games='количество игр', wins='побед', losses='поражений', winspcnt='побед%', kills='убийств', deaths='смертей', assists='помощи', pts='очки', rank='место_в_топе', leavecount='ливы', leavepcnt='ливы%' WHERE username='игрок'
Корректировать можно под себя ясное дело

спасибо ценная инфо )

Добавлено: 12.01.2017 18:30

осталось тестит

14

Re: Статистика из ghost в pvpgn

На самом деле, статистику из ghost бота можно отображать в статистике игрока на pvpgn-pro без единой строчки кода.
Для этого необходимо:
1. Добавить дополнительные колонки в таблицу `record`. Например: W3XP_dota_rating, W3XP_dota_wins, W3XP_dota_loss.
2. Настроить icons.conf для отображения иконок, и для вывода статистики по команде /stats, используя эти добавленные колонки.
3. Добавить триггеры на update и insert в бд ghost на те таблицы, в которых есть нужные нам данные. За неимением бота не могу сказать какие там таблицы и на какие поля добавлять триггеры. По всей видимости, это dotagames и dotaplayers.
Триггеры должны делать update в добавленные ранее в pvpgn колонки из 1 пункта. Таким образом, автоматически будет осуществляться односторонняя синхронизация статистики из бд ghost в бд pvpgn.

Do not ask for support in PM.
+1 Serc

15

Re: Статистика из ghost в pvpgn

когда у меня был вдс новый pvpgn-pro не запускалось какие то ошибку выдавал поэтому использую до сих пор старый pvpgn его все вдс или машины могут держать без ошибок

16

Re: Статистика из ghost в pvpgn

SkyFall wrote:

когда у меня был вдс новый pvpgn-pro не запускалось какие то ошибку выдавал поэтому использую до сих пор старый pvpgn его все вдс или машины могут держать без ошибок

В последних коммитах допускается такое поведение, и об этом нужно репортить
https://github.com/pvpgn/pvpgn-server/w … rash-dump)

Для рабочего сервера лучше использовать стабильный релиз, в котором таких багов не должно быть
https://github.com/pvpgn/pvpgn-server/releases

Добавлено: 12.01.2017 18:17

В любом случае, речь идет про перенос статистики из бота в pvpgn.
Serc предлагает чтобы бот обновлял её в бд pvpgn.
Мой вариант состоит в том, чтобы это делалось само в базе данных с помощью триггеров.
https://habrahabr.ru/post/37693/

Do not ask for support in PM.

17 (edited by Serc 12.01.2017 21:01)

Re: Статистика из ghost в pvpgn

Это был самый простой способ. В кодинге сервера я не разбираюсь - предлагаю идеи по системе "GHost+PvPGN".
Но несомнено харпи дал очень ценную информацию.

З.Ы. Куда пропали кнопки "Цититировать" и "+/-" ??

18

Re: Статистика из ghost в pvpgn

а что мешает чтобы сервер читал бд через username ?

19

Re: Статистика из ghost в pvpgn

HarpyWar wrote:

На самом деле, статистику из ghost бота можно отображать в статистике игрока на pvpgn-pro без единой строчки кода.
Для этого необходимо:
1. Добавить дополнительные колонки в таблицу `record`. Например: W3XP_dota_rating, W3XP_dota_wins, W3XP_dota_loss.
2. Настроить icons.conf для отображения иконок, и для вывода статистики по команде /stats, используя эти добавленные колонки.
3. Добавить триггеры на update и insert в бд ghost на те таблицы, в которых есть нужные нам данные. За неимением бота не могу сказать какие там таблицы и на какие поля добавлять триггеры. По всей видимости, это dotagames и dotaplayers.
Триггеры должны делать update в добавленные ранее в pvpgn колонки из 1 пункта. Таким образом, автоматически будет осуществляться односторонняя синхронизация статистики из бд ghost в бд pvpgn.

Ну привет мистер Гэрпивар. С прошедшим новым годом и с Старым новым годом.
Давайте по теме...
А вы вкурсе что у бота UID другой и у сервера?
И каким же образом он будет записывать в таблицу record если там нету значения username?
И третье это колонки.
А вы вкурсе что Serc подсказал правильно, т.к он ищет по Username и дописывает игроку в доп.поле.

+1 Serc

20

Re: Статистика из ghost в pvpgn

Язык SQL достаточно мощный, чтобы внутри триггера сначала сделать выборку по username, и затем обновить record по uid по нужным колонкам.
Serc подсказал всё правильно. Я лишь предложил дополнительный вариант, который мне кажется более элегантным - с ним уменьшается связность бота и pvpgn. Как известно, чем меньше связность отдельных модулей, тем проще затем поддерживать весь проект в целом.

Do not ask for support in PM.

21

Re: Статистика из ghost в pvpgn

Так, все, я въехал. Это продолжение этой темы?
Так может я чего не понимаю, но у нас в данном случае возможные ключевые поля.
1. UID - Не катит, так как две разных базы.
2. Никнейм - плохо, потому что может дублироваться
3. E-Mail - Я так понимаю, нет в ghost (не щупал, лично мне пока не нужно)
Так, а если у нас ладдер - не проще народ регистрировать через веб-морду? В этом случае у нас может быть вообще промежуточная база, связывающая обе системы. Кто мешает ghost учитывать e-mail?
Ну или вообще левый внутренний ID проекту создать - вообще ничего не надо перепахивать. Тут главное не страдать избыточностью головного мозга.

22

Re: Статистика из ghost в pvpgn

DragonZX wrote:

Так, все, я въехал. Это продолжение этой темы?
Так может я чего не понимаю, но у нас в данном случае возможные ключевые поля.
1. UID - Не катит, так как две разных базы.
2. Никнейм - плохо, потому что может дублироваться
3. E-Mail - Я так понимаю, нет в ghost (не щупал, лично мне пока не нужно)
Так, а если у нас ладдер - не проще народ регистрировать через веб-морду? В этом случае у нас может быть вообще промежуточная база, связывающая обе системы. Кто мешает ghost учитывать e-mail?
Ну или вообще левый внутренний ID проекту создать - вообще ничего не надо перепахивать. Тут главное не страдать избыточностью головного мозга.

Как и говорилось до этого, база у сервера и у бота должна быть одна. Запороть базу это никак не может - таблицы у проектов разные.
1. Сделать выборку по UID запросом не проблема. Затем занос в вектор и вывод в таблицу records (HarpyWar®).
2. Как никнейм может дублироваться в таблице сервера? Судя по запросу который я показал, происходит не новая запись, а обновление столбцов.
3. Столбец с почтой может быть пустым... Бот записывает очки акцентируясь на никнейм. Поэтому этот вариант отпадает сразу.

П.С. В прошлой теме уже был показан вывод в команду stats на сервере. В этой я показал сам запрос бота для обновления столбцов с нужными нам данными для команды stats.

23

Re: Статистика из ghost в pvpgn

HarpyWar wrote:

Serc подсказал всё правильно. Я лишь предложил дополнительный вариант, который мне кажется более элегантным - с ним уменьшается связность бота и pvpgn. Как известно, чем меньше связность отдельных модулей, тем проще затем поддерживать весь проект в целом.

Ну попробую поработать да этой фичой, но кажись у пвпгн не прямой запрос а через КЭШ...

24

Re: Статистика из ghost в pvpgn

Верно, кеш может мешать отображению этой статистики на сервере в реальном времени. Чтобы этого не было, нужен другой подход.

Может быть кто-то уже займется реализацией общения бота с pvpgn через команды чата, и выложит в общий доступ? https://github.com/Grief-Code/OHSystem/issues/279
Вроде бы там и не так сложно по большей части, вся информация есть. Для сервера на Lua скриптах уже все сделано, остался только бот.
Сразу бы отпали вопросы по этой части, а то каждый делает для себя по всякому, часто полурабочие решения.

Do not ask for support in PM.

25

Re: Статистика из ghost в pvpgn

HarpyWar wrote:

Верно, кеш может мешать отображению этой статистики на сервере в реальном времени. Чтобы этого не было, нужен другой подход.

Может быть кто-то уже займется реализацией общения бота с pvpgn через команды чата, и выложит в общий доступ? https://github.com/Grief-Code/OHSystem/issues/279
Вроде бы там и не так сложно по большей части, вся информация есть. Для сервера на Lua скриптах уже все сделано, остался только бот.
Сразу бы отпали вопросы по этой части, а то каждый делает для себя по всякому, часто полурабочие решения.

Про "OHSYSTEM" можно просто забыть...
Взять чистого бота и добавить какие функции вам интересуется и запустить...
А со сервера требуется чтобы Игрок передавал игроку в "ЛС" скрытно, ну как сделано в /clan msg...
На счет "полурабочих" решений, бывает часто вылеты с базой и краши, не знаю чем это связано, но уже успешенно сделал статистику. Ну если поюзать поиск то найдете решение.

Posts: 25

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 0 guests, 0 registered users

forums.pvpgn.pro → [RU] Warcraft → Статистика из ghost в pvpgn