コード例 #1
0
bool CHalfLife2::ShowVGUIMenu(int client, const char *name, KeyValues *data, bool show)
{
	KeyValues *SubKey = NULL;
	int count = 0;
	cell_t players[] = {client};

#if SOURCE_ENGINE == SE_CSGO
	CCSUsrMsg_VGUIMenu *pMsg;
	if ((pMsg = (CCSUsrMsg_VGUIMenu *)g_UserMsgs.StartProtobufMessage(m_VGUIMenu, players, 1, USERMSG_RELIABLE)) == NULL)
	{
		return false;
	}
#else
	bf_write *pBitBuf = NULL;
	if ((pBitBuf = g_UserMsgs.StartBitBufMessage(m_VGUIMenu, players, 1, USERMSG_RELIABLE)) == NULL)
	{
		return false;
	}
#endif

	if (data)
	{
		SubKey = data->GetFirstSubKey();
		while (SubKey)
		{
			count++;
			SubKey = SubKey->GetNextKey();
		}
		SubKey = data->GetFirstSubKey();
	}

#if SOURCE_ENGINE == SE_CSGO
	pMsg->set_name(name);
	pMsg->set_show(show);

	while (SubKey)
	{
		CCSUsrMsg_VGUIMenu_Subkey *key = pMsg->add_subkeys();
		key->set_name(SubKey->GetName());
		key->set_str(SubKey->GetString());
		SubKey = SubKey->GetNextKey();
	}
#else
	pBitBuf->WriteString(name);
	pBitBuf->WriteByte((show) ? 1 : 0);
	pBitBuf->WriteByte(count);
	while (SubKey)
	{
		pBitBuf->WriteString(SubKey->GetName());
		pBitBuf->WriteString(SubKey->GetString());
		SubKey = SubKey->GetNextKey();
	}
#endif

	g_UserMsgs.EndMessage();

	return true;
}
コード例 #2
0
//---------------------------------------------------------------------------------
// Purpose: Show Panel to user
//---------------------------------------------------------------------------------
void	DrawPanel(MRecipientFilter *mrf, char *panel_title, char *network_string, char *message, int message_length)
{
	// Update network string first
	if (!g_pStringTableManiScreen) return;

	int index = g_pStringTableManiScreen->FindStringIndex(network_string);

	if (index == -1) return;
	
	g_pStringTableManiScreen->SetStringUserData(index, message_length + 1, message);

#if defined ( GAME_CSGO )
	CCSUsrMsg_VGUIMenu *msg = (CCSUsrMsg_VGUIMenu *)g_Cstrike15UsermessageHelpers.GetPrototype(CS_UM_VGUIMenu)->New(); // Show TextMsg type user message
	msg->set_name("info"); // menu name
	msg->set_show(1);

	CCSUsrMsg_VGUIMenu_Subkey *subkey = msg->add_subkeys();
	subkey->set_name("title");
	subkey->set_str(panel_title);

	subkey = msg->add_subkeys();
	subkey->set_name("type");
	subkey->set_str("1");

	subkey = msg->add_subkeys();
	subkey->set_name("Msg");
	subkey->set_str(network_string);

	engine->SendUserMessage(*mrf, CS_UM_VGUIMenu, *msg);
	delete msg;
#else
	msg_buffer = engine->UserMessageBegin(mrf, vgui_message_index);

   
	msg_buffer->WriteString("info"); // menu name
	msg_buffer->WriteByte(1);
	msg_buffer->WriteByte(3);

	msg_buffer->WriteString("title");
	msg_buffer->WriteString(panel_title);

	msg_buffer->WriteString("type");
	msg_buffer->WriteString("1");

	msg_buffer->WriteString("Msg");
	msg_buffer->WriteString(network_string);

	engine->MessageEnd();
#endif	
}
コード例 #3
0
//---------------------------------------------------------------------------------
// Purpose: Show Web Stats to user
//---------------------------------------------------------------------------------
void	DrawMOTD(MRecipientFilter *mrf)
{
	const ConVar *hostname = g_pCVar->FindVar( "hostname" );
	const char *title = (hostname) ? hostname->GetString() : "MESSAGE OF THE DAY";

#if defined ( GAME_CSGO )
	CCSUsrMsg_VGUIMenu *msg = (CCSUsrMsg_VGUIMenu *)g_Cstrike15UsermessageHelpers.GetPrototype(CS_UM_VGUIMenu)->New(); // Show TextMsg type user message
	msg->set_name("info"); // menu name
	msg->set_show(1);

	CCSUsrMsg_VGUIMenu_Subkey *subkey = msg->add_subkeys();
	subkey->set_name("title");
	subkey->set_str(title);

	subkey = msg->add_subkeys();
	subkey->set_name("type");
	subkey->set_str("1");

	subkey = msg->add_subkeys();
	subkey->set_name("Msg");
	subkey->set_str("motd");

	engine->SendUserMessage(*mrf, CS_UM_VGUIMenu, *msg);
	delete msg;
#else
	msg_buffer = engine->UserMessageBegin(mrf, vgui_message_index);

   
	msg_buffer->WriteString("info"); // menu name
	msg_buffer->WriteByte(1);
	msg_buffer->WriteByte(3);

	msg_buffer->WriteString("title");
	msg_buffer->WriteString(title);

	msg_buffer->WriteString("type");
	msg_buffer->WriteString("1");

	msg_buffer->WriteString("Msg");
	msg_buffer->WriteString("motd");

	engine->MessageEnd();
#endif	
}
コード例 #4
0
//---------------------------------------------------------------------------------
// Purpose: Show URL Panel to user
//---------------------------------------------------------------------------------
void	DrawURL(MRecipientFilter *mrf, char *title, const char *url)
{

	//first strip the ""
	//then see if it starts with http:  or https:
	//default to http:

	int len = strlen(url)+8; // leave room for the http beginning
	char stripped_url[512];
	char final_url[512];
	char lowercase_url[512];

	memset (stripped_url, 0, len);
	memset (lowercase_url, 0, len);
	memset (final_url, 0, len);

	int url_index = 0;
	int stripped_url_index = 0;
	do 
	{
		if ( url[url_index] != '\"' && url[url_index] != '\'' )
		{
			stripped_url[stripped_url_index] = url[url_index];
			lowercase_url[stripped_url_index++] = url_lower(url[url_index]);
		}
		url_index++;
	} while ( url[url_index] != 0 );

	if ( !strstr(lowercase_url, "http://") && !strstr(lowercase_url, "https://") )
	{
		Q_snprintf(final_url, len, "http://%s", stripped_url);
	}
	else 
	{
		Q_snprintf(final_url, len, "%s", stripped_url);
	}
	
#if defined ( GAME_CSGO )
	CCSUsrMsg_VGUIMenu *msg = (CCSUsrMsg_VGUIMenu *)g_Cstrike15UsermessageHelpers.GetPrototype(CS_UM_VGUIMenu)->New(); // Show TextMsg type user message
	msg->set_name("info"); // menu name
	msg->set_show(1);

	CCSUsrMsg_VGUIMenu_Subkey *subkey = msg->add_subkeys();
	subkey->set_name("title");
	subkey->set_str(title);

	subkey = msg->add_subkeys();
	subkey->set_name("type");
	subkey->set_str("2"); // URL

	subkey = msg->add_subkeys();
	subkey->set_name("Msg");
	subkey->set_str(final_url);

	engine->SendUserMessage(*mrf, CS_UM_VGUIMenu, *msg);
	delete msg;
#else
   msg_buffer = engine->UserMessageBegin(mrf, vgui_message_index);	

	msg_buffer->WriteString("info"); // menu name
	msg_buffer->WriteByte(1);
	msg_buffer->WriteByte(3);

	msg_buffer->WriteString("title");
	msg_buffer->WriteString(title);

	msg_buffer->WriteString("type");
	msg_buffer->WriteString("2");  // URL

	msg_buffer->WriteString("Msg");
	msg_buffer->WriteString(final_url);

	engine->MessageEnd();
#endif	
}