1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

!pub и "инвиз" игры

Тема в разделе 'Кодинг/Собственные решения', создана пользователем k1b0rg, 13 дек 2010.

  1. k1b0rg Ньюфаг

    Сообщения:
    34
    Спасибы:
    0
    Всем Привет!
    Наткнулся на такой баг/проблему, не знаю как правильней это назвать.
    Предположим, что одновременно играется 5 игр с названиями: dota1,dota2,dota3,dota4,dota45
    Если написать !pub dota1, игра создастся, но её не будет видно в списке игр(Пользовательская игра), хотя в /games она видна. Приходится писать в личку боту !unhost и заного создавать(
    Думаю, что можно решить так:
    в !pub проверять, если есть запущенные игры с таким же названием(!getgames), то - добавлять в конец имени #цифра(как это сделанно, когда пишут просто !pub), если же нет, то создавать как обычно
    В силу незнания C++, не могу реализовать такое (
    Помогите, пожалуйста)
  2. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    Если время будет - наваяю, там не сложно.
  3. k1b0rg Ньюфаг

    Сообщения:
    34
    Спасибы:
    0
    Хорошо, зарание благодарю!
  4. k1b0rg Ньюфаг

    Сообщения:
    34
    Спасибы:
    0
    сумел написать пока это:
    bnet.cpp, !pub
    после
    Код:
    						stringstream SS;
    						SS << GameNr;
    						SS >> Nr;
    						Nr ++;
    						if (Nr>20)
    							Nr = 1;
    						GameNr = UTIL_ToString(Nr);
    						GameName = GameName + GameNr;
    					}
    
    вставляем:
    Код:
                        for (uint32_t i=0; i<m_GHost->m_Games.size( ); i++ )
    					{
    						if(GameName == m_GHost->m_Games[i]->GetGameName( ))
    						{
    							QueueChatCommand("Игра с таким названием уже существует!", User, Whisper);
    						    return;
    						}
    
    					}
    
    Но, хотелось реализовать все полностью(т.е пост№1)
    + столкнулся с такой проблемкой, m_Games имеет список игр, созданых только ботом, а это уже минус, т.к нам лучше проверять по всем играм, как это можно реализовать? через бота отправлять /games и далее парсить названия?
  5. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    этот баг пвпгна.. Парсить не выйдет так кака про клозы пвпгн вообще нечего не говорит+ игры которые уже начались, о них пвпгн говорит ток при включеном параметре...
  6. k1b0rg Ньюфаг

    Сообщения:
    34
    Спасибы:
    0
    Понятно, спасибо.
    Покопался в конфиге, не понял, за что отвечает bot_rehostifnametaken ?
    глядя на код, реализована она не до конца вроде..
    ещё вопрос, возможно ли модифицировать функцию рехоста по такому принципу:
    если в игру никто не заходил n-секунд, то рехостится.
    если же зашли, то рехост отключается
  7. k1b0rg Ньюфаг

    Сообщения:
    34
    Спасибы:
    0
    сам решил, вот так:
    game_base.cpp
    находим
    Код:
    	if (GetTime()>m_LastPlayerJoiningTime+m_GHost->m_AutoRehostDelay && !m_GameLoading && !m_GameLoaded && !m_AllSlotsOccupied)
    
    
    Заменяем на:
    Код:
    	if (GetTime()>m_LastPlayerJoiningTime+m_GHost->m_AutoRehostDelay && !m_GameLoading && !m_GameLoaded && m_GHost->m_CurrentGame->GetSlotsOccupied( ) < 1)
    
    Вариант верный? Не вызовет проблем?