codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include "SteamAPI.h" #include <iomanip> #include <ctime> #include <sstream> void Error(std::string msg) { std::cout << "Error: " << msg << std::endl; getchar(); exit(EXIT_FAILURE); } void Error(std::string msg, int errorCode) { std::cout << "Error: " << msg << " Error code: " << errorCode << std::endl; getchar(); exit(EXIT_FAILURE); } int main() { SetDllDirectory("C:\\Program Files\\Steam\\"); eInitError errorCode; if (!Steamworks_Init(eInitSteamClient, errorCode)) { std::string errMsg = "Unable to init steamworks : "; errMsg += EnumString<eInitError>::From(errorCode); errMsg += "\n"; Error(errMsg); } int error; ISteamClient008 *steamClient = (ISteamClient008 *)CreateInterface(STEAMCLIENT_INTERFACE_VERSION_008, &error); if (!steamClient) Error("Unable to get steam client.", error); HSteamPipe hSteamPipe = steamClient->CreateSteamPipe(); HSteamUser hSteamUser = steamClient->ConnectToGlobalUser(hSteamPipe); ISteamFriends001 *steamFriends = (ISteamFriends001 *)steamClient->GetISteamFriends( hSteamUser, hSteamPipe, STEAMFRIENDS_INTERFACE_VERSION_001 ); ISteamUser012 *steamUser = (ISteamUser012 *)steamClient->GetISteamUser(hSteamUser, hSteamPipe, STEAMUSER_INTERFACE_VERSION_012); CSteamID *cID = &( steamUser->GetSteamID() ); uint64 ownID = (uint64)(*cID).ConvertToUint64(); HSteamCall hSteamCall; CallbackMsg_t CallbackMsg; EPersonaState state = (EPersonaState)8; steamFriends->SetPersonaState(state); while (!GetAsyncKeyState(VK_ESCAPE)) // loop until we escape { if (Steam_BGetCallback(hSteamPipe, &CallbackMsg, &hSteamCall)) { if (CallbackMsg.m_iCallback == FriendChatMsg_t::k_iCallback) { FriendChatMsg_t *chatMsg = (FriendChatMsg_t *)CallbackMsg.m_pubParam; EFriendMsgType msgType; // allocate data for message char *pvData = new char[256]; memset(pvData, 0, 256); // i have no clue if steam dellocates this or if we should const char *friendName = steamFriends->GetFriendPersonaName(chatMsg->m_ulOtherID); steamFriends->GetChatMessage(chatMsg->m_ulSteamID, chatMsg->m_iChatID, pvData, 256, &msgType); if (msgType & k_EFriendMsgTypeTyping) { std::cout << "* " << friendName << " is typing a message..." << std::endl; } else { std::cout << "* Message from " << friendName << ": " << pvData << std::endl; if (chatMsg->m_ulOtherID != ownID) { EFriendMsgType msgType = (EFriendMsgType)k_EFriendMsgTypeChat; steamFriends->SendMsgToFriend(chatMsg->m_ulOtherID, msgType, "I'm eating, brb"); } } // clean up delete [] pvData; } Steam_FreeLastCallback( hSteamPipe ); } Sleep(1); } Steamworks_Shutdown(); return 0; }
Private
[
?
]
Run code
Submit