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

Авто вызов команды при входе

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

  1. PanSom Ньюфаг

    Сообщения:
    7
    Спасибы:
    0
    Как сделать так чтоб при входе в игру входивший игрок автоматом вызывал команду. Ну хотяб тот же пинг для примера.
  2. PanSom Ньюфаг

    Сообщения:
    7
    Спасибы:
    0
    Ок повторно спрошу. Вот к примеру я вызываю SendAllChat("!ping " +Player->GetName());

    Как по другому отправить сообщение так чтоб бот его обработал нормально?
  3. Synth (LM) Пантограф!

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

    Посмотри как работает команда !L в лобби.
  4. PanSom Ньюфаг

    Сообщения:
    7
    Спасибы:
    0
    Я уже знаю что эт :lol: . Прост я последний раз программил лет 5 назад на паскале. Подумал авось проканает :bIbIbIblya:

    Спасибо за наводку.
  5. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    Или вариант такой, рассмотрим на примере пинга.
    В файл game_base.h ищеш
    Код:
    	virtual void SendEndMessage( );
    после него добавляеш
    Код:
    	virtual void Ping();
    В файл game_base.cpp ищеш
    Код:
    void CBaseGame :: EventPlayerDeleted( CGamePlayer *player )
    и передним пишеш
    Код:
    				uint32_t Kicked = 0;
    				uint32_t KickPing = 0;
    				string Pings;
    				string CN = string();
    
    				if (!Payload.empty())
    				{
    					CGamePlayer *LastMatch = NULL;
    					uint32_t Matches = GetPlayerFromNamePartial( Payload , &LastMatch );
    
    					if( Matches == 0 )
    						CONSOLE_Print("No matches");
    
    					else if( Matches == 1 )
    					{
    						Pings = LastMatch->GetName( );
    						Pings +=": ";
    						if( LastMatch->GetNumPings( ) > 0 )
    						{
    							Pings += UTIL_ToString( LastMatch->GetPing( m_GHost->m_LCPings ) );
    							Pings +=" ms";
    						} else
    							Pings += "N/A";
    
    						Pings += " (";
    						CN = LastMatch->GetCountry();
    						Pings += CN;
    						Pings += ")";
    						SendAllChat(Pings);
    						return HideCommand;
    					}
    					else
    						CONSOLE_Print("Found more than one match");
    				}
    
    				if( !m_GameLoading && !m_GameLoaded && !Payload.empty( ) )
    					KickPing = UTIL_ToUInt32( Payload );
    
    				// copy the m_Players vector so we can sort by descending ping so it's easier to find players with high pings
    
    				vector<CGamePlayer *> SortedPlayers = m_Players;
    				sort( SortedPlayers.begin( ), SortedPlayers.end( ), CGamePlayerSortDescByPing( ) );
    
    				for( vector<CGamePlayer *> :: iterator i = SortedPlayers.begin( ); i != SortedPlayers.end( ); i++ )
    				{
    					Pings += (*i)->GetNameTerminated( );
    					Pings += ": ";
    
    					if( (*i)->GetNumPings( ) > 0 )
    					{
    						Pings += UTIL_ToString( (*i)->GetPing( m_GHost->m_LCPings ) );
    
    						if( !m_GameLoading && !m_GameLoaded && !(*i)->GetReserved( ) && KickPing > 0 && (*i)->GetPing( m_GHost->m_LCPings ) > KickPing )
    						{
    							(*i)->SetDeleteMe( true );
    							(*i)->SetLeftReason( "was kicked for excessive ping " + UTIL_ToString( (*i)->GetPing( m_GHost->m_LCPings ) ) + " > " + UTIL_ToString( KickPing ) );
    							(*i)->SetLeftCode( PLAYERLEAVE_LOBBY );
    							OpenSlot( GetSIDFromPID( (*i)->GetPID( ) ), false );
    							Kicked++;
    						}
    
    						Pings += "ms";
    					}
    					else
    						Pings += "N/A";
    
    					if( i != SortedPlayers.end( ) - 1 )
    						Pings += ", ";
    				}
    
    				SendAllChat( Pings );
    
    				m_GHost->UDPChatSend("|lobbyupdate");
    
    				if( Kicked > 0 )
    					SendAllChat( m_GHost->m_Language->KickingPlayersWithPingsGreaterThan( UTIL_ToString( Kicked ), UTIL_ToString( KickPing ) ) );
    				return HideCommand;
    			}
    
    Далее в файле game_base.cpp ищеш
    Код:
    	// send a welcome message
    	SendWelcomeMessage( Player );
    и после первого найденного вписываешь
    Код:
    	Ping();
    Компилиш и должно работать.