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

Быдло кодинг.

Тема в разделе 'Общение', создана пользователем fake, 16 май 2011.

  1. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    в цыкле i <10 т.е максимальное значение 9
  2. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    По вотекик Fake Держи.
    Команда паште. Некоторые баги:
    При прописи !votekick nik
    если игрок не в твоей - пашет норм.
    если в твоей - то пишет это:
    я думаю тошо я убрал тут else - так как после фикса команды там давало ошибку, вот и убрал
    Код:
    		}
    
    				SendChat( player, m_GHost->m_Language->GetLang("lang_0158", Payload ) ); // UnableToVoteKickFoundMoreThanOneMatch
    		}
    	}
    а потом пишет вот:
    По сути пашет, просто тупая фраза некчему, я ее закоментил, но а вдруг реально ктото 2=ой раз пишет, а ответа и нету. Хотя не столь важно но все же...
    НО ВОТ ЖЕ. Если юзаю реально в ситуации где 2 игрока попадают. То оно написало, мол дроп немогу, более 1 значения, при ЭТОМ НАЧАВ ГОЛОСОВАНИЕ ПРОТИВ ИГРОКА ЧУЖОЙ КОМАНДЫ. По сути вот главный баг.
    Как бы избвитсо???? А то всетики случайно и можно против чужого голосовать. И где поправить кол-во голосов, мне надо ровно 3. А то посило 5 когда я тестил, я так понял по кол-ву людей в тиме, но 5-й зя себя то сам голосовать небудет. Зделать 3 надо.
    Еще сходу вопрос. При автоварне+автобане, когда игрок ливает игрокам дает и бан и варн. Можно ли ограничетсо только баном при чистом ливе.
  3. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    код дай
  4. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Код:
    	//
    	// !VOTEKICK
    	//
    
    	else if( Command == "votekick" && m_GHost->m_VoteKickAllowed && !Payload.empty( ) )
    	{
    		if( !m_KickVotePlayer.empty( ) )
    			SendChat( player, m_GHost->m_Language->GetLang("lang_0153") ); // UnableToVoteKickAlreadyInProgress
    		else if( m_Players.size( ) == 2 )
    			SendChat( player, m_GHost->m_Language->GetLang("lang_0154") ); // UnableToVoteKickNotEnoughPlayers
    		else
    		{
    			CGamePlayer *LastMatch = NULL;
    			uint32_t Matches = GetPlayerFromNamePartial( Payload, &LastMatch );
    
    			if( Matches == 0 )
    				SendChat( player, m_GHost->m_Language->GetLang("lang_0155", Payload ) ); // UnableToVoteKickNoMatchesFound
    			else if( Matches == 1 )
    				if(m_Slots[GetSIDFromPID((LastMatch)->GetPID())].GetTeam()!=m_Slots[GetSIDFromPID((player)->GetPID())].GetTeam())
    {
    SendChat( player, "Невозможно выкинуть! Игрок не в твоей команде!");//<<REDAKTIROVAT TYT
                   return HideCommand;
    }
    			{
    				if( LastMatch->GetReserved( ) )
    					SendChat( player, m_GHost->m_Language->GetLang("lang_0156", LastMatch->GetName( ) ) ); // UnableToVoteKickPlayerIsReserved
    				else
    				{
    					m_KickVotePlayer = LastMatch->GetName( );
    					m_StartedKickVoteTime = GetTime( );
    
    					for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
    						(*i)->SetKickVote( false );
    
    					player->SetKickVote( true );
    					CONSOLE_Print( "[GAME: " + m_GameName + "] votekick against player [" + m_KickVotePlayer + "] started by player [" + User + "]" );
    
    					SendAllChat( m_GHost->m_Language->GetLang("lang_0157",
                                                   "$VICTIM$", LastMatch->GetName( ),
                                                   "$USER$", User,
                                                   "$VOTESNEEDED$", UTIL_ToString( (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)m_GHost->m_VoteKickPercentage / 100 ) - 1 ) ) ); // StartedVoteKick
    
    					SendAllChat( m_GHost->m_Language->GetLang("lang_0165", string( 1, m_GHost->m_CommandTrigger ) ) );  // TypeYesToVote
    				}
    			}
    
    			//	SendChat( player, m_GHost->m_Language->GetLang("lang_0158", Payload ) ); // UnableToVoteKickFoundMoreThanOneMatch
    		}
    	}
         
    	  //
    	  //!YES
    	  //
    
    
    if( Command == "yes" && !m_KickVotePlayer.empty( ) && player->GetName( ) != m_KickVotePlayer && !player->GetKickVote( ) )
       {
          CGamePlayer *Victim = GetPlayerFromName( m_KickVotePlayer, true );
          unsigned char CurentTeam=m_Slots[GetSIDFromPID(Victim->GetPID())].GetTeam();
          if(CurentTeam!= m_Slots[GetSIDFromPID(player->GetPID())].GetTeam())
          {
          SendChat( player, "Невозможно проголосовать! Игрок не в твоей команде!");//<<REDAKTIROVAT TYT
          return HideCommand;
          }
          player->SetKickVote( true );
          uint32_t VotesNeeded = 0;
          uint32_t Votes = 0;
    
          for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
          {
             if(m_Slots[GetSIDFromPID((*i)->GetPID())].GetTeam() == CurentTeam)
             {
                VotesNeeded++;
                if( (*i)->GetKickVote( ) )
                   Votes++;
             }
          }
          VotesNeeded=3;
    
          if( Votes >= VotesNeeded )
          {
    			if( Victim )
    			{
    				Victim->SetDeleteMe( true );
    				Victim->SetLeftReason( m_GHost->m_Language->GetLang("lang_0164") ); // WasKickedByVote
    
                if( !m_GameLoading && !m_GameLoaded )
                   Victim->SetLeftCode( PLAYERLEAVE_LOBBY );
                else
                   Victim->SetLeftCode( PLAYERLEAVE_LOST );
    
                if( !m_GameLoading && !m_GameLoaded )
                   OpenSlot( GetSIDFromPID( Victim->GetPID( ) ), false );
    
                CONSOLE_Print( "[GAME: " + m_GameName + "] votekick against player [" + m_KickVotePlayer + "] passed with " + UTIL_ToString( Votes ) + "/" + UTIL_ToString( GetNumHumanPlayers( ) ) + " votes" );
    				SendAllChat( m_GHost->m_Language->GetLang("lang_0159", m_KickVotePlayer ) ); // VoteKickPassed
             }
             else
    				SendAllChat( m_GHost->m_Language->GetLang("lang_0160", m_KickVotePlayer ) ); // ErrorVoteKickingPlayer
    
             m_KickVotePlayer.clear( );
             m_StartedKickVoteTime = 0;
          }
          else
     			SendAllChat( m_GHost->m_Language->GetLang( "lang_0161","$VICTIM$", m_KickVotePlayer,"$USER$", User,"$VOTES$", UTIL_ToString( VotesNeeded - Votes ) ) ); 
       }
  5. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    не знаю про что ты пишеш, не может писать
    когда человек в твоей команде..Без скрина не поверю..
    с открытым статом, чтобы было виддно все ники...
  6. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    http://ltg-stats.dyndns.org/game.php?gameid=10658
    Cмотри чат игры внизу. Пишу 1 раз пишет типа он не в моей тиме.
    2 раз пишу мне пишет в чат (там видно небудет) что типа найдно более 1 значения, я строку закоментил ту, пох.
    Но там же юужет видно что начнетсо голосование против игрока с другой тимы...
  7. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    кто там не в твоей команде оО?
  8. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Код:
    0мин 18сек	Trli: 	[All] RosT начал голосование чтобы КИКНУТЬ --->[cro]stoner_kr<--- нужно 5 голосов за 60 секунд!
    Я написал !votekick one
    на что получаю:
    найдено более 1 значения
    и про голосование кикнуть типа с другой тимы [cro]stoner_kr
    в моей был тож у кого было one в имени
  9. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11

    .....рак же
  10. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Пофиксил))
    втык, хз нетестил, будет возможность с именем, затестю.
    Как вырубить автоварн на игрока который именно ливает??? МОжно ли.
    Нужно чтоьы при ливе бан, а в любом другом случае - варн.
    Мб впаять в лив чтото типа:
    Код:
    command /w ltgbot !delwarn +lastleaver
    Ну ты понял, я просто нерасписывал.
    Или есть идея попроще и эфективнее?
    -----------
    и где на !ff - поправить причину выходa игрока из игры, нужно поменять бы само предложение. Чтобы оно отличалось от обычного конца игры
  11. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    FAkE есть вопросик.
    Вот тут:
    Код:
    if ((*i)->GetJoinedRealm() == (*j)->GetServer())
    Есть ли знак НЕровно??? Тоесть мне эту фразу нужно наоборот поставить, если джоин реалм не равен серверу.
    Т.к. джоин реалм определяет верно.
  12. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    О Боже... Фейспалм в кубе под корнем. :lol:
    Код:
    !=
  13. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    sssssss :lol: :lol: :lol: :lol: :lol:
    blya che ya nedogodalsya)))) krab maza faka :stenka: :stenka:
    long pls ответь про запрос в бд в теме доса
  14. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    FAKE а как сумировать некоторые данные??
    Ну мне к примеру выдает имена людей, можно ли както их сложить чтобы получилось число?
    У меня так:
    Код:
    тра ляля траляля + reserved;
    вот как оно reserved выдает:
    Код:
    vasya petya gesha mihail gena kuzya krabcheg
    а нужно зделать так:
    Код:
    7
    просто чтобы имена сложились но как число
    Крабский вопрос, но нужно прост))
    -----------
    как вышки считаютсо????
    01 - это как?
    0 - знач первая вышка (из 6-ти, учитывая что с 0 до 5)
    1 - 1 лвл (из 4)
    42:
    4 - четвертая вышка (из 6)
    2 - лвл 2
    А как они считаютсо, от куда начинать, ну тоесть 0 - это нижняя или верхняя или как?
    o_O
  15. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Код:
     m_People.size()
    Третья вышка, с бота.

    Втф, о чем вы вообще тут пишите?))
  16. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    )))) :lol: :lol: :lol:
    Лонг, а че третья то, разве число 2 - не 2 лвл??
    я понял так:
    от 0-5 это вышка, 1-на из 6-ти
    от 1-4 это лвл вышки
    Ладн, скажи с какой оно щитать начинает и в какую сторону.
  17. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    вот тема

    как она выглядит "функцию отсчета времени" . . .
  18. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Она же в апдейте геймбейза...

    Код:
    if( m_CountDownStarted && GetTicks( ) - m_LastCountDownTicks >= waittime )
  19. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    не получилось :palevo:


    в game_baSe.cpp
    вставил после:

    Код:
    // countdown every 500 ms
    
    	uint32_t waittime = 500;
    	if (m_NormalCountdown)
    		waittime = 1200;
    
    	if( m_CountDownStarted && GetTicks( ) - m_LastCountDownTicks >= waittime )
    	{
    ЕТО:
    Код:
    if(GetNumPlayers( ) >= 10 )
                {
    
    
                if( m_FakePlayerPID == 255 )
                   CreateFakePlayer( );
                   }
    ________________________________________________________________________________________

    Заменил ето:
    Код:
    void CBaseGame :: CreateFakePlayer( )
    {
    	if( m_FakePlayerPID != 255 )
    		return;
    
    	unsigned char SID = GetEmptySlot( false );
    
    	if( SID < m_Slots.size( ) )
    	{
    		uint32_t SlotReq = 11;
    		if (m_ShowRealSlotCount)
    			SlotReq = m_Slots.size()-1;
    
    		if( GetNumPlayers( ) >= SlotReq )
    		DeleteVirtualHost( );
    
    		m_FakePlayerPID = GetNewPID( );
    		BYTEARRAY IP;
    		IP.push_back( 0 );
    		IP.push_back( 0 );
    		IP.push_back( 0 );
    		IP.push_back( 0 );
    		SendAll( m_Protocol->SEND_W3GS_PLAYERINFO( m_FakePlayerPID, "FakePlayer", IP, IP ) );
    		m_Slots[SID] = CGameSlot( m_FakePlayerPID, 100, SLOTSTATUS_OCCUPIED, 0, m_Slots[SID].GetTeam( ), m_Slots[SID].GetColour( ), m_Slots[SID].GetRace( ) );
    		SendAllSlotInfo( );
    	}
    }
    на вот ето
    Код:
    void CBaseGame :: CreateFakePlayer( )
    {
       if( m_FakePlayerPID != 255 )
          return;
    
       unsigned char SID = GetEmptySlot( false );
    
       if( SID < m_Slots.size( ) ) //Точно не помню, да и не хотел делать проверку, что если в 12 слоте есть кто нибудь - кикнет или нет я не помню.
       {
          if(GetNumPlayers( )>9)//Проверка если в игре больше 9 человек (меняйте сами)
          {
          uint32_t SlotReq = 11;// Засунет на 12 слот
          if (m_ShowRealSlotCount)
             SlotReq = m_Slots.size()-1;// Тоже самое
    
    
          DeleteVirtualHost( );
    
          m_FakePlayerPID = GetNewPID( );
          BYTEARRAY IP;
          IP.push_back( 0 );
          IP.push_back( 0 );
          IP.push_back( 0 );
          IP.push_back( 0 );
          SendAll( m_Protocol->SEND_W3GS_PLAYERINFO( m_FakePlayerPID, "Informer", IP, IP ) );
          m_Slots[SID] = CGameSlot( m_FakePlayerPID, 100, SLOTSTATUS_OCCUPIED, 0, m_Slots[SID].GetTeam( ), m_Slots[SID].GetColour( ), m_Slots[SID].GetRace( ) );
          SendAllSlotInfo( );
          }
       }
    }
    ________________________________________________________________________________________

    создал конфиг карты с обсами (в конфиге закрыл 11 и 12 слоты):
    Код:
    ####################################
    # map file for DotA v6.69b LoD v8g #
    ####################################
    
    # the map path tells Warcraft III clients where to find the map on their system
    # it is NOT the path to the map on the GHost++ system, in fact GHost++ doesn't need the map at all
    
    map_path = Maps\Download\DotA v6.69b LoD v8g.w3x
    
    # map speed
    #  1 = slow
    #  2 = normal
    #  3 = fast
    
    map_speed = 3
    
    # map visibility
    #  1 = hide terrain
    #  2 = explored
    #  3 = always visible
    #  4 = default
    
    map_visibility = 4
    
    # map observers
    #  1 = none
    #  2 = on defeat
    #  3 = allowed
    #  4 = referees
    
    map_observers = 4
    
    # map flags
    #  - you can combine these flags by adding together all the options you want to use
    #  - for example to have teams together and fixed teams you would use "3"
    #  1 = teams together
    #  2 = fixed teams
    #  4 = unit share
    #  8 = random hero
    #  16 = random races
    
    map_flags = 3
    
    # map game type
    #  1 = custom
    
    map_gametype = 1
    
    # map dimensions
    
    
    # map players and teams
    
    
    #
    # slot structure
    #  [PID] [Download Status] [Slot Status] [Computer] [Team] [Colour] [Race] [Skill] [Handicap]
    #  - PID is always 0
    #  - Download Status is always 255
    #  - Slot Status is 0 for open, 1 for closed, 2 for occupied
    #  - Computer is 0 for no, 1 for yes
    #  - Team
    #  - Colour
    #  - Race is 1 for human, 2 for orc, 4 for night elf, 8 for undead, 32 for random (add 64 to any of these for fixed)
    #  - Skill is 0 for easy computer, 1 for normal computer or human, 2 for hard computer
    #  - Handicap is 50/60/70/80/90/100
    #
    
    map_slot1 = 0 255 0 0 0 1 4 1 100
    map_slot2 = 0 255 0 0 0 2 4 1 100
    map_slot3 = 0 255 0 0 0 3 4 1 100
    map_slot4 = 0 255 0 0 0 4 4 1 100
    map_slot5 = 0 255 0 0 0 5 4 1 100
    map_slot6 = 0 255 0 0 1 7 8 1 100
    map_slot7 = 0 255 0 0 1 8 8 1 100
    map_slot8 = 0 255 0 0 1 9 8 1 100
    map_slot9 = 0 255 0 0 1 10 8 1 100
    map_slot10 = 0 255 0 0 1 11 8 1 100
    
    map_slot11 = 0 255 1 0 12 0 0 1 100
    map_slot12 = 0 255 1 0 12 0 0 1 100
    
    
    # map type (for map specific stats)
    
    map_type = dota
    map_matchmakingcategory = dota_elo
    map_statsw3mmdcategory = 
    
    # map local path (for map downloads)
    #  GHost++ doesn't require map files but if it has access to them it can send them to players
    #  GHost++ will search bot_mappath + map_localpath for the map file (bot_mappath is set in the main config file)
    
    map_localpath = DotA v6.69b LoD v8g.w3x
    
    где я дно?
  20. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    А че не получилось то?