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

кол-во занятых слотов в названии

Тема в разделе 'Кодинг/Собственные решения', создана пользователем ink08, 15 мар 2011.

Статус темы:
Закрыта.
  1. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Ну по поводу если заходит сразу несколько людей я вон написал, тоесть зделать типа таймер на рехост=)
    Ну мне идея просто нравитсо, у мну 6 ботов и такая функция самое оно вот и решил както допилить=)
  2. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
  3. zazulya Ньюфаг

    Сообщения:
    80
    Спасибы:
    0
    я сделал так как смог
    примерчик такой, отправили за хлебом, ты пошел, купил, принес, стали обедать, хлеб пересоленый оказался, тебе говорят: "ты такое Га""но принес"... кому будет приятно...
    может надо было просто сказать, что хлеб в том киоске лучше не брать

    на рожон не лезу, просто обиделсо чуток :newcry:
  4. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Тю. Кинул подскажу еще и обиды...
    Я тоже обиделся!
  5. zazulya Ньюфаг

    Сообщения:
    80
    Спасибы:
    0
    =)
    да я ведь не шарю в этом с++, со школы и универа только паскаль да делфи (мильон раз плевался, что не пошел на кафедру СИ, хоть и тяга к полиглотству есть =)))
    когда писал этот код, пришлось еще дополнительно отдельно сделать формочку чтоб проверять правильно ли индексую, с ней то я умаялся, пока допер что к чему
    Код:
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    //				 textBox1->Text = "ЛОЛ";
    				 String^ GameName = textBox1->Text;
    				 String^ GameNr;
    				 int SL_COUNT;
    				 int idx=textBox1->TextLength-5;
    				 if (GameName->Substring(idx-1,1) == "[")
    				 {
    					 GameNr = GameName->Substring(idx,1);
    					 //SL_COUNT = strtoint(GameNr);
    				 }
    				 else
    					 GameNr = GameName->Substring(idx-1,2);
    				 textBox2->Text =  GameNr;
    				// idx=textBox1->TextLength;
    				// textBox2->Text = textBox1->Text->Substring(0,idx-5);
    
    			 }
    	};
    хотя любой кодер будет угарать...

    вопрос по теме:
    например хостует уже с названием [5/10], вышел игрок хостуется с названием [4/10]. тут проблем не будет? ведь такое название уже было? хотя когда я пользовался, пабов 20 набирал и играли, вроде бы норм заходили...
  6. Anufrii Ньюфаг

    Сообщения:
    33
    Спасибы:
    0
    Сборка бота GHost:
    Ghost One 1.7.266
    А зачем изголятся с +1 -1, если есть такие штуки:

    Код:
    GetSlotsOpen( ); //кол-во открытых слотов
    GetNumHumanPlayers( ); //кол-во слотов занятых людьми
    
    т.е. по логике общее кол-во слотов = GetSlotsOpen( ); + GetNumHumanPlayers( );, а кол-во занятых = GetNumHumanPlayers( ); и команда уже будет подходить не только к картам, где 10 слотов. Т.к. общее кол-во слотов не будет постоянным числом, а переменным исходя из занятых и не занятых слотов + комп. игроки и закрытые слоты учитываться не будут и будет отображатся реальное текущее и максимальное кол-во игроков.

    Например авторехостом я не пользуюсь, вот переделал команду !pub где заменил #1 #2 и т.д. на +1 +2, т.е. сколько слотов свободно. Вот, может пригодится:

    В Game.h добавил
    Код:
    virtual uint32_t GetSlotsOpen( );
    
    В Game.cpp в команде !pub

    Код:
    изменил
    GameNr = UTIL_ToString(Nr);
    на
    GameNr = UTIL_ToString( GetSlotsOpen( ));
    
    Ну и заменил в команде !pub все знаки # на +
  7. zazulya Ньюфаг

    Сообщения:
    80
    Спасибы:
    0
    неплохо, попробую и так сделать...
    а как добавить и самое главное куда, в bnet.h getslotsopen, я структуру не знаю, и туда-сюда пытался затолкать и объявлял по-разному...
    это мне надо, чтобы в команду !pub добавить
    вместо
    Код:
    GameName = GameName +" by borogoz [0/10]";
    вот это
    Код:
    GameName = GameName +" by borogoz [0/"+UTIL_ToString( GetSlotsOpen( ))+"]";
    пробовал GetNumSlots, нормально скомпилировалось, но это не свосем то что надо, например игра будет 3-3, и сразу сделать чтоб название было [0/6] а не [0/10]
  8. zazulya Ньюфаг

    Сообщения:
    80
    Спасибы:
    0
    разобрался... только когда попробовал хостануть, название было [0/99] =)
    чета где-то упустил )...
  9. Anufrii Ньюфаг

    Сообщения:
    33
    Спасибы:
    0
    Сборка бота GHost:
    Ghost One 1.7.266
    в bnet.h добавь в конец в раздел // other functions например после строки virtual void ChannelJoin( string name );

    А UTIL_ToString( GetSlotsOpen( )) указывает количество только открытых слотов, что бы указать макс. кол-во слотов нужно к числу открытых слотов (UTIL_ToString( GetSlotsOpen( ))) прибавить кол-во слотов занятых людьми (UTIL_ToString( GetNumHumanPlayers( ))), т.е. в игре 3х3, куда зашло 2 человека UTIL_ToString( GetSlotsOpen( )) будет иметь значение 4, а UTIL_ToString( GetNumHumanPlayers( )) будет иметь значение 2 остается только их сложить и получишь общее кол-во слотов, а не 99 :alequate: =)

    что бы GetNumHumanPlayers( ) работал добавь в соответствующий .h файл строку : virtual uint32_t GetNumHumanPlayers( );
  10. zazulya Ньюфаг

    Сообщения:
    80
    Спасибы:
    0
    с этим то я разобрался...
    а вот про [0/99] имел ввиду другое. например хочу хостануть дотку 3-3, так, пишу !pub arso, у меня автоматом к имени прибавится строчка [0/10], потому как в команде !pub есть такое
    Код:
    GameName = GameName +"  [0/10]";
    но хотелось бы чтобы, было что-то подобное
    GameName = GameName +" [0/"+UTIL_ToString( GetSlotsOpen( ))+"]";
    вот получается надо из настроек мапы вытащить сколько открыто слотов или 6 или 10, а в лобби уже другое дело конечно, там уже вместо /10 будет просто
    Код:
    GetNumHumanPlayers()+GetSlotsOpen()
  11. Anufrii Ньюфаг

    Сообщения:
    33
    Спасибы:
    0
    Сборка бота GHost:
    Ghost One 1.7.266
    ну, а что тебе мешает поменять GameName = GameName +" [0/10]"; на GameName = GameName + " [0/" + UTIL_ToString( GetSlotsOpen( )) + "]"; ? Только учти, что все, что в кавычках " - это постоянное значение, которое нужно удалять при рехосте иначе оно будет дублироваться

    Тьфу, не так тебя понял =) ты имеешь ввиду !pub в бнете, а не в лобби, так по моему проще сделать 1 авторехост после создания игры и все =)
  12. Anufrii Ньюфаг

    Сообщения:
    33
    Спасибы:
    0
    Сборка бота GHost:
    Ghost One 1.7.266
    Вот нашел в bnet.cpp такую вещь map->GetMapNumPlayers() попробуй
  13. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    А теперь представьте если бот хостит сразу несколько игр?
    Представьте чё будет в остаче игр (которые уже старт) пока бот туда сюда будет прыгать.
    Реализовал данную ф-ию в game_base.cpp
    При авторехосте читает значения. И авторехост поставил 20 секунд (с момента захода последнего игрока).
    А вообще сам процесс хостинга и рехостинга довольно тяжелый. Я представляю что будет когда бывает глюк что люди только зашли и через доли секунды выкидывает. И так несколько раз подряд.
    Как по мне бот не выдержит...
  14. Awful Парнишка с небывалым умом

    Сообщения:
    135
    Спасибы:
    0
    Бот-то выдержит, но тогда рехост нужно делать ооочень часто.. Пг - гарантированный бан, остальные сервера - гарантированное постоянное нахождение игры в самых низах списка. Единственный приемлемый вариант - дописывать слоты в случае обычного рехоста.. Но тогда информация не будет достоверна во все промежутки времени. В общем, забудьте, если конечно среди вас нет желающего создать что-то наподобие айкапа.
  15. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Незнаю где там игра в низах. На алькаре она вверх прыгает при появлении.
    ДУмаю зделать рехост если некто незаходит на 20 сек, и зделать чтоб оно ставило [кол-во занятых/кол-во открытых]
    Думаю тут все выйдет, тоесть нема запары с тем что если когото пингом выкинет или на подобии этого, ад и рехосты быстрые, думаю проканает.
  16. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    скажи где знаки заменять, а то авось гдет забуду, писали что беда будет. Надо типа с разу все поменять.
  17. zazulya Ньюфаг

    Сообщения:
    80
    Спасибы:
    0
    да я говорю ерунда, ага... с пингом разобрался, щас другое вылезло, иногда когда наберется полный паб, бот выходит, за ним например игрок вышел, а рехоста иногда не бывает, ну и в итоге, дальше неправильно считает...
    а как сделать чтоб бот не выходит при полном пабе, кроме того что обсервов ставить?
    с рехостом по времени - тоже неплохо, но там будет например, такое, сидят несколько человек, ждут, например если рехост на 5 сек поставить, через пять сек ладно первый раз рехост 4/10, никто не заходит, еще через 5 сек опять же 4/10, но там ладно поставили условие, что если getnumhumanplayers == первая цифра из 4/10, т.е. 4, то рехоста не надо. но игра не поднимется вверх, а если например минуту сидеть, две...
  18. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    А вот для этого я одновременно сделал #1 #2 #3 ... #n при последующем рехосте...
  19. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    GetNumHumanPlayers( ); - нужно тоже как GetSlotsOpen( ); добавить? Тоже туда и так же?
  20. zazulya Ньюфаг

    Сообщения:
    80
    Спасибы:
    0
    вот вычитал на codelain.com, там предложили писать кол-во слотов не в названии а в CreatorName... типа и название не меняется и кол-во слотов видно, правда пост от 2009 года =)
    кто что скажет?
    щас в коде искал где присваивается значение к CreatorName, чета как то...
    нашел в game_base.cpp
    Код:
    m_CreatorName = nCreatorName;
    а где присваивается значение nCreatorName не нашел... вобщем
Статус темы:
Закрыта.