Compare commits
29 Commits
2024_10_07
...
dev
Author | SHA1 | Date | |
---|---|---|---|
|
56e8e6adfe | ||
|
63552d7584 | ||
|
2560c6eb8e | ||
|
8556336169 | ||
|
6be3ba1963 | ||
|
20f50d8cb0 | ||
|
47c6f8ef3d | ||
|
3a4d7c4bc1 | ||
|
dee5201e61 | ||
|
f8bf0ab381 | ||
|
2ef54d0fb8 | ||
|
e3527834d7 | ||
|
415fd1ca3e | ||
|
68e35c17ee | ||
|
493cf75376 | ||
|
2b0eefd929 | ||
|
5e6fcc146c | ||
|
169d29e53d | ||
|
2f81f755b7 | ||
|
ff5ef4f721 | ||
|
766b685b62 | ||
|
0745935be0 | ||
|
174d2df50a | ||
|
21c33b3a98 | ||
|
4823a2be70 | ||
|
3ccce93a74 | ||
|
9c18c68ce9 | ||
|
4250da00c6 | ||
|
2d69eb2164 |
@ -361,6 +361,7 @@ public:
|
|||||||
CSteamID get_lobby();
|
CSteamID get_lobby();
|
||||||
|
|
||||||
bool is_offline();
|
bool is_offline();
|
||||||
|
void set_offline(bool offline);
|
||||||
|
|
||||||
uint16 get_port();
|
uint16 get_port();
|
||||||
void set_port(uint16 port);
|
void set_port(uint16 port);
|
||||||
|
47
dll/dll/steam_app_disable_update.h
Normal file
47
dll/dll/steam_app_disable_update.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/* Copyright (C) 2019 Mr Goldberg
|
||||||
|
This file is part of the Goldberg Emulator
|
||||||
|
|
||||||
|
The Goldberg Emulator is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 3 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The Goldberg Emulator is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the Goldberg Emulator; if not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef __INCLUDED_STEAM_APP_DISABLE_UPDATE_H__
|
||||||
|
#define __INCLUDED_STEAM_APP_DISABLE_UPDATE_H__
|
||||||
|
|
||||||
|
#include "base.h"
|
||||||
|
|
||||||
|
class Steam_App_Disable_Update:
|
||||||
|
public ISteamAppDisableUpdate
|
||||||
|
{
|
||||||
|
class Settings *settings{};
|
||||||
|
class Networking *network{};
|
||||||
|
class SteamCallResults *callback_results{};
|
||||||
|
class SteamCallBacks *callbacks{};
|
||||||
|
class RunEveryRunCB *run_every_runcb{};
|
||||||
|
|
||||||
|
static void steam_network_callback(void *object, Common_Message *msg);
|
||||||
|
static void steam_run_every_runcb(void *object);
|
||||||
|
|
||||||
|
void steam_run_callback();
|
||||||
|
void network_callback(Common_Message *msg);
|
||||||
|
|
||||||
|
public:
|
||||||
|
Steam_App_Disable_Update(class Settings *settings, class Networking *network, class SteamCallResults *callback_results, class SteamCallBacks *callbacks, class RunEveryRunCB *run_every_runcb);
|
||||||
|
~Steam_App_Disable_Update();
|
||||||
|
|
||||||
|
// probably means how many seconds to keep the updates disabled
|
||||||
|
void SetAppUpdateDisabledSecondsRemaining(int32 nSeconds);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __INCLUDED_STEAM_APP_DISABLE_UPDATE_H__
|
@ -56,6 +56,7 @@
|
|||||||
#include "steam_gameserverstats.h"
|
#include "steam_gameserverstats.h"
|
||||||
#include "steam_gamestats.h"
|
#include "steam_gamestats.h"
|
||||||
#include "steam_timeline.h"
|
#include "steam_timeline.h"
|
||||||
|
#include "steam_app_disable_update.h"
|
||||||
#include "steam_masterserver_updater.h"
|
#include "steam_masterserver_updater.h"
|
||||||
|
|
||||||
#include "overlay/steam_overlay.h"
|
#include "overlay/steam_overlay.h"
|
||||||
@ -140,6 +141,7 @@ public:
|
|||||||
Steam_TV *steam_tv{};
|
Steam_TV *steam_tv{};
|
||||||
Steam_GameStats *steam_gamestats{};
|
Steam_GameStats *steam_gamestats{};
|
||||||
Steam_Timeline *steam_timeline{};
|
Steam_Timeline *steam_timeline{};
|
||||||
|
Steam_App_Disable_Update *steam_app_disable_update{};
|
||||||
|
|
||||||
Steam_GameServer *steam_gameserver{};
|
Steam_GameServer *steam_gameserver{};
|
||||||
Steam_Utils *steam_gameserver_utils{};
|
Steam_Utils *steam_gameserver_utils{};
|
||||||
@ -243,6 +245,9 @@ public:
|
|||||||
// steam timeline
|
// steam timeline
|
||||||
ISteamTimeline *GetISteamTimeline( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion );
|
ISteamTimeline *GetISteamTimeline( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion );
|
||||||
|
|
||||||
|
// steam appp disable update
|
||||||
|
ISteamAppDisableUpdate *GetISteamAppDisableUpdate( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion );
|
||||||
|
|
||||||
|
|
||||||
// Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead.
|
// Deprecated. Applications should use SteamAPI_RunCallbacks() or SteamGameServer_RunCallbacks() instead.
|
||||||
STEAM_PRIVATE_API( void RunFrame() );
|
STEAM_PRIVATE_API( void RunFrame() );
|
||||||
|
@ -22,6 +22,11 @@
|
|||||||
#include "auth.h"
|
#include "auth.h"
|
||||||
|
|
||||||
class Steam_User :
|
class Steam_User :
|
||||||
|
public ISteamUser004,
|
||||||
|
public ISteamUser005,
|
||||||
|
public ISteamUser006,
|
||||||
|
public ISteamUser007,
|
||||||
|
public ISteamUser008,
|
||||||
public ISteamUser009,
|
public ISteamUser009,
|
||||||
public ISteamUser010,
|
public ISteamUser010,
|
||||||
public ISteamUser011,
|
public ISteamUser011,
|
||||||
@ -48,6 +53,8 @@ public ISteamUser
|
|||||||
std::chrono::high_resolution_clock::time_point last_get_voice{};
|
std::chrono::high_resolution_clock::time_point last_get_voice{};
|
||||||
std::string encrypted_app_ticket{};
|
std::string encrypted_app_ticket{};
|
||||||
Auth_Manager *auth_manager{};
|
Auth_Manager *auth_manager{};
|
||||||
|
std::map<std::string, std::string> registry{};
|
||||||
|
std::string registry_nullptr{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Steam_User(Settings *settings, Local_Storage *local_storage, class Networking *network, class SteamCallResults *callback_results, class SteamCallBacks *callbacks);
|
Steam_User(Settings *settings, Local_Storage *local_storage, class Networking *network, class SteamCallResults *callback_results, class SteamCallBacks *callbacks);
|
||||||
@ -57,15 +64,41 @@ public:
|
|||||||
// this is only used internally by the API, and by a few select interfaces that support multi-user
|
// this is only used internally by the API, and by a few select interfaces that support multi-user
|
||||||
HSteamUser GetHSteamUser();
|
HSteamUser GetHSteamUser();
|
||||||
|
|
||||||
|
void LogOn( CSteamID steamID );
|
||||||
|
void LogOff();
|
||||||
|
|
||||||
// returns true if the Steam client current has a live connection to the Steam servers.
|
// returns true if the Steam client current has a live connection to the Steam servers.
|
||||||
// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy.
|
// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy.
|
||||||
// The Steam client will automatically be trying to recreate the connection as often as possible.
|
// The Steam client will automatically be trying to recreate the connection as often as possible.
|
||||||
bool BLoggedOn();
|
bool BLoggedOn();
|
||||||
|
|
||||||
|
ELogonState GetLogonState();
|
||||||
|
bool BConnected();
|
||||||
|
|
||||||
// returns the CSteamID of the account currently logged into the Steam client
|
// returns the CSteamID of the account currently logged into the Steam client
|
||||||
// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API
|
// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API
|
||||||
CSteamID GetSteamID();
|
CSteamID GetSteamID();
|
||||||
|
|
||||||
|
bool IsVACBanned( int nGameID );
|
||||||
|
bool RequireShowVACBannedMessage( int nGameID );
|
||||||
|
void AcknowledgeVACBanning( int nGameID );
|
||||||
|
|
||||||
|
// These are dead.
|
||||||
|
int NClientGameIDAdd( int nGameID );
|
||||||
|
void RemoveClientGame( int nClientGameID );
|
||||||
|
void SetClientGameServer( int nClientGameID, uint32 unIPServer, uint16 usPortServer );
|
||||||
|
|
||||||
|
void SetSteam2Ticket( uint8 *pubTicket, int cubTicket );
|
||||||
|
void AddServerNetAddress( uint32 unIP, uint16 unPort );
|
||||||
|
bool SetEmail( const char *pchEmail );
|
||||||
|
|
||||||
|
// logon cookie - this is obsolete and never used
|
||||||
|
int GetSteamGameConnectToken( void *pBlob, int cbMaxBlob );
|
||||||
|
bool SetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, const char *pchValue );
|
||||||
|
bool GetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, char *pchValue, int cbValue );
|
||||||
|
bool SetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int iValue );
|
||||||
|
bool GetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int *piValue );
|
||||||
|
|
||||||
// Multiplayer Authentication functions
|
// Multiplayer Authentication functions
|
||||||
|
|
||||||
// InitiateGameConnection() starts the state machine for authenticating the game client with the game server
|
// InitiateGameConnection() starts the state machine for authenticating the game client with the game server
|
||||||
@ -86,15 +119,40 @@ public:
|
|||||||
|
|
||||||
int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure );
|
int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure );
|
||||||
|
|
||||||
|
int InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure, void *pvSteam2GetEncryptionKey, int cbSteam2GetEncryptionKey );
|
||||||
|
|
||||||
|
int InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, int nGameAppID, uint32 unIPServer, uint16 usPortServer, bool bSecure );
|
||||||
|
|
||||||
// notify of disconnect
|
// notify of disconnect
|
||||||
// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call
|
// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call
|
||||||
void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer );
|
void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer );
|
||||||
|
|
||||||
// Legacy functions
|
// Legacy functions
|
||||||
|
|
||||||
|
void SetSelfAsPrimaryChatDestination();
|
||||||
|
bool IsPrimaryChatDestination();
|
||||||
|
void RequestLegacyCDKey( uint32 nAppID );
|
||||||
|
bool SendGuestPassByEmail( const char *pchEmailAccount, GID_t gidGuestPassID, bool bResending );
|
||||||
|
bool SendGuestPassByAccountID( uint32 uAccountID, GID_t gidGuestPassID, bool bResending );
|
||||||
|
bool AckGuestPass(const char *pchGuestPassCode);
|
||||||
|
bool RedeemGuestPass(const char *pchGuestPassCode);
|
||||||
|
uint32 GetGuestPassToGiveCount();
|
||||||
|
uint32 GetGuestPassToRedeemCount();
|
||||||
|
RTime32 GetGuestPassLastUpdateTime();
|
||||||
|
bool GetGuestPassToGiveInfo( uint32 nPassIndex, GID_t *pgidGuestPassID, PackageId_t *pnPackageID, RTime32 *pRTime32Created, RTime32 *pRTime32Expiration, RTime32 *pRTime32Sent, RTime32 *pRTime32Redeemed, char *pchRecipientAddress, int cRecipientAddressSize );
|
||||||
|
bool GetGuestPassToRedeemInfo( uint32 nPassIndex, GID_t *pgidGuestPassID, PackageId_t *pnPackageID, RTime32 *pRTime32Created, RTime32 *pRTime32Expiration, RTime32 *pRTime32Sent, RTime32 *pRTime32Redeemed);
|
||||||
|
bool GetGuestPassToRedeemSenderAddress( uint32 nPassIndex, char* pchSenderAddress, int cSenderAddressSize );
|
||||||
|
bool GetGuestPassToRedeemSenderName( uint32 nPassIndex, char* pchSenderName, int cSenderNameSize );
|
||||||
|
void AcknowledgeMessageByGID( const char *pchMessageGID );
|
||||||
|
bool SetLanguage( const char *pchLanguage );
|
||||||
|
|
||||||
// used by only a few games to track usage events
|
// used by only a few games to track usage events
|
||||||
void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo);
|
void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo);
|
||||||
|
|
||||||
|
void SetAccountName( const char *pchAccountName );
|
||||||
|
void SetPassword( const char *pchPassword );
|
||||||
|
void SetAccountCreationTime( RTime32 rt );
|
||||||
|
|
||||||
void RefreshSteam2Login();
|
void RefreshSteam2Login();
|
||||||
|
|
||||||
// get the local storage folder for current Steam account to write application data, e.g. save games, configs etc.
|
// get the local storage folder for current Steam account to write application data, e.g. save games, configs etc.
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
|
|
||||||
class Steam_Utils :
|
class Steam_Utils :
|
||||||
|
public ISteamUtils001,
|
||||||
public ISteamUtils002,
|
public ISteamUtils002,
|
||||||
public ISteamUtils003,
|
public ISteamUtils003,
|
||||||
public ISteamUtils004,
|
public ISteamUtils004,
|
||||||
|
@ -110,7 +110,7 @@ static void get_broadcast_info(uint16 port)
|
|||||||
number_broadcasts++;
|
number_broadcasts++;
|
||||||
|
|
||||||
if (number_broadcasts >= MAX_BROADCASTS) {
|
if (number_broadcasts >= MAX_BROADCASTS) {
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -542,6 +542,8 @@ std::set<IP_PORT> Networking::resolve_ip(std::string dns)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result)
|
||||||
|
freeaddrinfo(result);
|
||||||
return ips;
|
return ips;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,6 +161,11 @@ bool Settings::is_offline()
|
|||||||
return offline;
|
return offline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Settings::set_offline(bool offline)
|
||||||
|
{
|
||||||
|
this->offline = offline;
|
||||||
|
}
|
||||||
|
|
||||||
uint16 Settings::get_port()
|
uint16 Settings::get_port()
|
||||||
{
|
{
|
||||||
return port;
|
return port;
|
||||||
|
@ -1207,6 +1207,10 @@ static bool parse_branches_file(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// app::general::is_beta_branch
|
||||||
|
settings_client->is_beta_branch = ini.GetBoolValue("app::general", "is_beta_branch", settings_client->is_beta_branch);
|
||||||
|
settings_server->is_beta_branch = ini.GetBoolValue("app::general", "is_beta_branch", settings_server->is_beta_branch);
|
||||||
|
|
||||||
// app::general::branch_name
|
// app::general::branch_name
|
||||||
std::string selected_branch = common_helpers::string_strip(ini.GetValue("app::general", "branch_name", ""));
|
std::string selected_branch = common_helpers::string_strip(ini.GetValue("app::general", "branch_name", ""));
|
||||||
if (selected_branch.empty()) {
|
if (selected_branch.empty()) {
|
||||||
@ -1376,9 +1380,6 @@ static void parse_simple_features(class Settings *settings_client, class Setting
|
|||||||
settings_client->disable_account_avatar = !ini.GetBoolValue("main::general", "enable_account_avatar", !settings_client->disable_account_avatar);
|
settings_client->disable_account_avatar = !ini.GetBoolValue("main::general", "enable_account_avatar", !settings_client->disable_account_avatar);
|
||||||
settings_server->disable_account_avatar = !ini.GetBoolValue("main::general", "enable_account_avatar", !settings_server->disable_account_avatar);
|
settings_server->disable_account_avatar = !ini.GetBoolValue("main::general", "enable_account_avatar", !settings_server->disable_account_avatar);
|
||||||
|
|
||||||
settings_client->is_beta_branch = ini.GetBoolValue("main::general", "is_beta_branch", settings_client->is_beta_branch);
|
|
||||||
settings_server->is_beta_branch = ini.GetBoolValue("main::general", "is_beta_branch", settings_server->is_beta_branch);
|
|
||||||
|
|
||||||
settings_client->steam_deck = ini.GetBoolValue("main::general", "steam_deck", settings_client->steam_deck);
|
settings_client->steam_deck = ini.GetBoolValue("main::general", "steam_deck", settings_client->steam_deck);
|
||||||
settings_server->steam_deck = ini.GetBoolValue("main::general", "steam_deck", settings_server->steam_deck);
|
settings_server->steam_deck = ini.GetBoolValue("main::general", "steam_deck", settings_server->steam_deck);
|
||||||
|
|
||||||
|
88
dll/steam_app_disable_update.cpp
Normal file
88
dll/steam_app_disable_update.cpp
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
/* Copyright (C) 2019 Mr Goldberg
|
||||||
|
This file is part of the Goldberg Emulator
|
||||||
|
|
||||||
|
The Goldberg Emulator is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 3 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The Goldberg Emulator is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the Goldberg Emulator; if not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#include "dll/steam_app_disable_update.h"
|
||||||
|
|
||||||
|
|
||||||
|
void Steam_App_Disable_Update::steam_run_every_runcb(void *object)
|
||||||
|
{
|
||||||
|
// PRINT_DEBUG_ENTRY();
|
||||||
|
|
||||||
|
auto inst = (Steam_App_Disable_Update *)object;
|
||||||
|
inst->steam_run_callback();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_App_Disable_Update::steam_network_callback(void *object, Common_Message *msg)
|
||||||
|
{
|
||||||
|
// PRINT_DEBUG_ENTRY();
|
||||||
|
|
||||||
|
auto inst = (Steam_App_Disable_Update *)object;
|
||||||
|
inst->network_callback(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Steam_App_Disable_Update::Steam_App_Disable_Update(class Settings *settings, class Networking *network, class SteamCallResults *callback_results, class SteamCallBacks *callbacks, class RunEveryRunCB *run_every_runcb)
|
||||||
|
{
|
||||||
|
this->settings = settings;
|
||||||
|
this->network = network;
|
||||||
|
this->callback_results = callback_results;
|
||||||
|
this->callbacks = callbacks;
|
||||||
|
this->run_every_runcb = run_every_runcb;
|
||||||
|
|
||||||
|
// this->network->setCallback(CALLBACK_ID_USER_STATUS, settings->get_local_steam_id(), &Steam_App_Disable_Update::steam_network_callback, this);
|
||||||
|
// this->run_every_runcb->add(&Steam_App_Disable_Update::steam_run_every_runcb, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
Steam_App_Disable_Update::~Steam_App_Disable_Update()
|
||||||
|
{
|
||||||
|
// this->network->rmCallback(CALLBACK_ID_USER_STATUS, settings->get_local_steam_id(), &Steam_App_Disable_Update::steam_network_callback, this);
|
||||||
|
// this->run_every_runcb->remove(&Steam_App_Disable_Update::steam_run_every_runcb, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Steam_App_Disable_Update::SetAppUpdateDisabledSecondsRemaining(int32 nSeconds)
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
std::lock_guard lock(global_mutex);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Steam_App_Disable_Update::steam_run_callback()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Steam_App_Disable_Update::network_callback(Common_Message *msg)
|
||||||
|
{
|
||||||
|
if (msg->has_low_level()) {
|
||||||
|
if (msg->low_level().type() == Low_Level::CONNECT) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg->low_level().type() == Low_Level::DISCONNECT) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg->has_networking_sockets()) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -124,6 +124,7 @@ Steam_Client::Steam_Client()
|
|||||||
steam_tv = new Steam_TV(settings_client, network, callback_results_client, callbacks_client, run_every_runcb);
|
steam_tv = new Steam_TV(settings_client, network, callback_results_client, callbacks_client, run_every_runcb);
|
||||||
steam_gamestats = new Steam_GameStats(settings_client, network, callback_results_client, callbacks_client, run_every_runcb);
|
steam_gamestats = new Steam_GameStats(settings_client, network, callback_results_client, callbacks_client, run_every_runcb);
|
||||||
steam_timeline = new Steam_Timeline(settings_client, network, callback_results_client, callbacks_client, run_every_runcb);
|
steam_timeline = new Steam_Timeline(settings_client, network, callback_results_client, callbacks_client, run_every_runcb);
|
||||||
|
steam_app_disable_update = new Steam_App_Disable_Update(settings_client, network, callback_results_client, callbacks_client, run_every_runcb);
|
||||||
|
|
||||||
// server
|
// server
|
||||||
PRINT_DEBUG("init gameserver");
|
PRINT_DEBUG("init gameserver");
|
||||||
@ -205,6 +206,7 @@ Steam_Client::~Steam_Client()
|
|||||||
DEL_INST(steam_tv);
|
DEL_INST(steam_tv);
|
||||||
DEL_INST(steam_gamestats);
|
DEL_INST(steam_gamestats);
|
||||||
DEL_INST(steam_timeline);
|
DEL_INST(steam_timeline);
|
||||||
|
DEL_INST(steam_app_disable_update);
|
||||||
|
|
||||||
DEL_INST(steam_utils);
|
DEL_INST(steam_utils);
|
||||||
DEL_INST(steam_friends);
|
DEL_INST(steam_friends);
|
||||||
|
@ -18,6 +18,19 @@
|
|||||||
#include "dll/steam_client.h"
|
#include "dll/steam_client.h"
|
||||||
|
|
||||||
|
|
||||||
|
// retrieves the ISteamAppDisableUpdate interface associated with the handle
|
||||||
|
ISteamAppDisableUpdate *Steam_Client::GetISteamAppDisableUpdate( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG("%s", pchVersion);
|
||||||
|
if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return nullptr;
|
||||||
|
|
||||||
|
if (strcmp(pchVersion, STEAMAPPDISABLEUPDATE_INTERFACE_VERSION) == 0) {
|
||||||
|
return reinterpret_cast<ISteamAppDisableUpdate *>(static_cast<ISteamAppDisableUpdate *>(steam_app_disable_update));
|
||||||
|
}
|
||||||
|
|
||||||
|
report_missing_impl_and_exit(pchVersion, EMU_FUNC_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
// retrieves the ISteamTimeline interface associated with the handle
|
// retrieves the ISteamTimeline interface associated with the handle
|
||||||
ISteamTimeline *Steam_Client::GetISteamTimeline( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion )
|
ISteamTimeline *Steam_Client::GetISteamTimeline( HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char *pchVersion )
|
||||||
{
|
{
|
||||||
@ -58,7 +71,17 @@ ISteamUser *Steam_Client::GetISteamUser( HSteamUser hSteamUser, HSteamPipe hStea
|
|||||||
PRINT_DEBUG("%s", pchVersion);
|
PRINT_DEBUG("%s", pchVersion);
|
||||||
if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL;
|
if (!steam_pipes.count(hSteamPipe) || !hSteamUser) return NULL;
|
||||||
|
|
||||||
if (strcmp(pchVersion, "SteamUser009") == 0) {
|
if (strcmp(pchVersion, "SteamUser004") == 0) {
|
||||||
|
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser004 *>(steam_user)); // sdk 0.99u
|
||||||
|
} else if (strcmp(pchVersion, "SteamUser005") == 0) {
|
||||||
|
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser005 *>(steam_user)); // sdk 0.99v
|
||||||
|
} else if (strcmp(pchVersion, "SteamUser006") == 0) {
|
||||||
|
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser006 *>(steam_user)); // sdk 0.99w
|
||||||
|
} else if (strcmp(pchVersion, "SteamUser007") == 0) {
|
||||||
|
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser007 *>(steam_user)); // sdk 0.99x
|
||||||
|
} else if (strcmp(pchVersion, "SteamUser008") == 0) {
|
||||||
|
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser008 *>(steam_user)); // sdk 0.99y
|
||||||
|
} else if (strcmp(pchVersion, "SteamUser009") == 0) {
|
||||||
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser009 *>(steam_user));
|
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser009 *>(steam_user));
|
||||||
} else if (strcmp(pchVersion, "SteamUser010") == 0) {
|
} else if (strcmp(pchVersion, "SteamUser010") == 0) {
|
||||||
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser010 *>(steam_user));
|
return reinterpret_cast<ISteamUser *>(static_cast<ISteamUser010 *>(steam_user));
|
||||||
@ -186,7 +209,10 @@ ISteamUtils *Steam_Client::GetISteamUtils( HSteamPipe hSteamPipe, const char *pc
|
|||||||
steam_utils_temp = steam_utils;
|
steam_utils_temp = steam_utils;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(pchVersion, "SteamUtils002") == 0) {
|
|
||||||
|
if (strcmp(pchVersion, "SteamUtils001") == 0) {
|
||||||
|
return reinterpret_cast<ISteamUtils *>(static_cast<ISteamUtils001 *>(steam_utils_temp));
|
||||||
|
} else if (strcmp(pchVersion, "SteamUtils002") == 0) {
|
||||||
return reinterpret_cast<ISteamUtils *>(static_cast<ISteamUtils002 *>(steam_utils_temp));
|
return reinterpret_cast<ISteamUtils *>(static_cast<ISteamUtils002 *>(steam_utils_temp));
|
||||||
} else if (strcmp(pchVersion, "SteamUtils003") == 0) {
|
} else if (strcmp(pchVersion, "SteamUtils003") == 0) {
|
||||||
return reinterpret_cast<ISteamUtils *>(static_cast<ISteamUtils003 *>(steam_utils_temp)); // ISteamUtils003 Not found in public Archive, must be between 1.02-1.03
|
return reinterpret_cast<ISteamUtils *>(static_cast<ISteamUtils003 *>(steam_utils_temp)); // ISteamUtils003 Not found in public Archive, must be between 1.02-1.03
|
||||||
@ -422,6 +448,8 @@ void *Steam_Client::GetISteamGenericInterface( HSteamUser hSteamUser, HSteamPipe
|
|||||||
return GetAppTicket(hSteamUser, hSteamPipe, pchVersion);
|
return GetAppTicket(hSteamUser, hSteamPipe, pchVersion);
|
||||||
} else if (strstr(pchVersion, "STEAMTIMELINE_INTERFACE") == pchVersion) {
|
} else if (strstr(pchVersion, "STEAMTIMELINE_INTERFACE") == pchVersion) {
|
||||||
return GetISteamTimeline(hSteamUser, hSteamPipe, pchVersion);
|
return GetISteamTimeline(hSteamUser, hSteamPipe, pchVersion);
|
||||||
|
} else if (strstr(pchVersion, "SteamAppDisableUpdate") == pchVersion) {
|
||||||
|
return GetISteamAppDisableUpdate(hSteamUser, hSteamPipe, pchVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
PRINT_DEBUG("No interface: %s", pchVersion);
|
PRINT_DEBUG("No interface: %s", pchVersion);
|
||||||
@ -725,6 +753,8 @@ ISteamUGC *Steam_Client::GetISteamUGC( HSteamUser hSteamUser, HSteamPipe hSteamP
|
|||||||
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC017 *>(steam_ugc_temp));
|
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC017 *>(steam_ugc_temp));
|
||||||
} else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION018") == 0) {
|
} else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION018") == 0) {
|
||||||
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC018 *>(steam_ugc_temp));
|
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC018 *>(steam_ugc_temp));
|
||||||
|
} else if (strcmp(pchVersion, "STEAMUGC_INTERFACE_VERSION019") == 0) {
|
||||||
|
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC *>(steam_ugc_temp));
|
||||||
} else if (strcmp(pchVersion, STEAMUGC_INTERFACE_VERSION) == 0) {
|
} else if (strcmp(pchVersion, STEAMUGC_INTERFACE_VERSION) == 0) {
|
||||||
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC *>(steam_ugc_temp));
|
return reinterpret_cast<ISteamUGC *>(static_cast<ISteamUGC *>(steam_ugc_temp));
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,18 @@ HSteamUser Steam_User::GetHSteamUser()
|
|||||||
return CLIENT_HSTEAMUSER;
|
return CLIENT_HSTEAMUSER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Steam_User::LogOn( CSteamID steamID )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
settings->set_offline(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_User::LogOff()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
settings->set_offline(true);
|
||||||
|
}
|
||||||
|
|
||||||
// returns true if the Steam client current has a live connection to the Steam servers.
|
// returns true if the Steam client current has a live connection to the Steam servers.
|
||||||
// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy.
|
// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy.
|
||||||
// The Steam client will automatically be trying to recreate the connection as often as possible.
|
// The Steam client will automatically be trying to recreate the connection as often as possible.
|
||||||
@ -53,6 +65,21 @@ bool Steam_User::BLoggedOn()
|
|||||||
return !settings->is_offline();
|
return !settings->is_offline();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ELogonState Steam_User::GetLogonState()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
if(settings->is_offline())
|
||||||
|
return (ELogonState)0;
|
||||||
|
else
|
||||||
|
return (ELogonState)4; // tested on real steam, undocumented return value
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::BConnected()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
return !settings->is_offline();
|
||||||
|
}
|
||||||
|
|
||||||
// returns the CSteamID of the account currently logged into the Steam client
|
// returns the CSteamID of the account currently logged into the Steam client
|
||||||
// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API
|
// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API
|
||||||
CSteamID Steam_User::GetSteamID()
|
CSteamID Steam_User::GetSteamID()
|
||||||
@ -63,6 +90,160 @@ CSteamID Steam_User::GetSteamID()
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Steam_User::IsVACBanned( int nGameID )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::RequireShowVACBannedMessage( int nGameID )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_User::AcknowledgeVACBanning( int nGameID )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
}
|
||||||
|
|
||||||
|
// according to comments in sdk, "these are dead."
|
||||||
|
int Steam_User::NClientGameIDAdd( int nGameID )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// according to comments in sdk, "these are dead."
|
||||||
|
void Steam_User::RemoveClientGame( int nClientGameID )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
}
|
||||||
|
// according to comments in sdk, "these are dead."
|
||||||
|
void Steam_User::SetClientGameServer( int nClientGameID, uint32 unIPServer, uint16 usPortServer )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_User::SetSteam2Ticket( uint8 *pubTicket, int cubTicket )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_User::AddServerNetAddress( uint32 unIP, uint16 unPort )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::SetEmail( const char *pchEmail )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// according to comments in sdk, "logon cookie - this is obsolete and never used"
|
||||||
|
int Steam_User::GetSteamGameConnectToken( void *pBlob, int cbMaxBlob )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::SetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, const char *pchValue )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
if (!pchValue)
|
||||||
|
return false; // real steam crashes, so return value is assumed
|
||||||
|
|
||||||
|
if (!pchKey) // tested on real steam
|
||||||
|
{
|
||||||
|
registry.clear();
|
||||||
|
registry_nullptr = std::string(pchValue);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
registry[std::string(pchKey)] = std::string(pchValue);
|
||||||
|
// TODO: save it to disk, because real steam can get the string when app restarts
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::GetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, char *pchValue, int cbValue )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
// TODO: read data on disk, because real steam can get the string when app restarts
|
||||||
|
if (pchValue && cbValue > 0)
|
||||||
|
memset(pchValue, 0, cbValue);
|
||||||
|
|
||||||
|
std::string value{};
|
||||||
|
if(!pchKey)
|
||||||
|
{
|
||||||
|
value = registry_nullptr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto it = registry.find(std::string(pchKey));
|
||||||
|
if (it == registry.end())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
value = it->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pchValue && cbValue > 0)
|
||||||
|
value.copy(pchValue, cbValue - 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::SetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int iValue )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
if (!pchKey) // tested on real steam
|
||||||
|
{
|
||||||
|
registry.clear();
|
||||||
|
registry_nullptr = std::to_string(iValue);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
registry[std::string(pchKey)] = std::to_string(iValue);
|
||||||
|
// TODO: save it to disk, because real steam can get the string when app restarts
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::GetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int *piValue )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
// TODO: read data on disk, because real steam can get the string when app restarts
|
||||||
|
if (piValue)
|
||||||
|
*piValue = 0;
|
||||||
|
|
||||||
|
std::string value{};
|
||||||
|
if(!pchKey)
|
||||||
|
{
|
||||||
|
value = registry_nullptr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto it = registry.find(std::string(pchKey));
|
||||||
|
if (it == registry.end())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
value = it->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (piValue)
|
||||||
|
*piValue = std::stoi(value);
|
||||||
|
}
|
||||||
|
catch(...)
|
||||||
|
{
|
||||||
|
PRINT_DEBUG("not a number"); // TODO: real steam returns a value other than 0 under this condition
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Multiplayer Authentication functions
|
// Multiplayer Authentication functions
|
||||||
|
|
||||||
// InitiateGameConnection() starts the state machine for authenticating the game client with the game server
|
// InitiateGameConnection() starts the state machine for authenticating the game client with the game server
|
||||||
@ -101,6 +282,18 @@ int Steam_User::InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSte
|
|||||||
return InitiateGameConnection(pAuthBlob, cbMaxAuthBlob, steamIDGameServer, unIPServer, usPortServer, bSecure);
|
return InitiateGameConnection(pAuthBlob, cbMaxAuthBlob, steamIDGameServer, unIPServer, usPortServer, bSecure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Steam_User::InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure, void *pvSteam2GetEncryptionKey, int cbSteam2GetEncryptionKey )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG("sdk 0.99x, 0.99y");
|
||||||
|
return InitiateGameConnection(pBlob, cbMaxBlob, steamID, unIPServer, usPortServer, bSecure);
|
||||||
|
}
|
||||||
|
|
||||||
|
int Steam_User::InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, int nGameAppID, uint32 unIPServer, uint16 usPortServer, bool bSecure )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG("sdk 0.99u");
|
||||||
|
return InitiateGameConnection(pBlob, cbMaxBlob, steamID, unIPServer, usPortServer, bSecure);
|
||||||
|
}
|
||||||
|
|
||||||
// notify of disconnect
|
// notify of disconnect
|
||||||
// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call
|
// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call
|
||||||
void Steam_User::TerminateGameConnection( uint32 unIPServer, uint16 usPortServer )
|
void Steam_User::TerminateGameConnection( uint32 unIPServer, uint16 usPortServer )
|
||||||
@ -110,12 +303,147 @@ void Steam_User::TerminateGameConnection( uint32 unIPServer, uint16 usPortServer
|
|||||||
|
|
||||||
// Legacy functions
|
// Legacy functions
|
||||||
|
|
||||||
|
void Steam_User::SetSelfAsPrimaryChatDestination()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::IsPrimaryChatDestination()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_ENTRY();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_User::RequestLegacyCDKey( uint32 iAppID )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::SendGuestPassByEmail( const char *pchEmailAccount, GID_t gidGuestPassID, bool bResending )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::SendGuestPassByAccountID( uint32 uAccountID, GID_t gidGuestPassID, bool bResending )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::AckGuestPass(const char *pchGuestPassCode)
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::RedeemGuestPass(const char *pchGuestPassCode)
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 Steam_User::GetGuestPassToGiveCount()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 Steam_User::GetGuestPassToRedeemCount()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
RTime32 Steam_User::GetGuestPassLastUpdateTime()
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::GetGuestPassToGiveInfo( uint32 nPassIndex, GID_t *pgidGuestPassID, PackageId_t *pnPackageID, RTime32 *pRTime32Created, RTime32 *pRTime32Expiration, RTime32 *pRTime32Sent, RTime32 *pRTime32Redeemed, char *pchRecipientAddress, int cRecipientAddressSize )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
// TODO: pgidGuestPassID
|
||||||
|
if (pnPackageID)
|
||||||
|
*pnPackageID = 0;
|
||||||
|
if (pRTime32Created)
|
||||||
|
*pRTime32Created = 0;
|
||||||
|
if (pRTime32Expiration)
|
||||||
|
*pRTime32Expiration = 0;
|
||||||
|
if (pRTime32Sent)
|
||||||
|
*pRTime32Sent = 0;
|
||||||
|
if (pRTime32Redeemed)
|
||||||
|
*pRTime32Redeemed = 0;
|
||||||
|
if (pchRecipientAddress && cRecipientAddressSize > 0)
|
||||||
|
memset(pchRecipientAddress, 0, cRecipientAddressSize);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::GetGuestPassToRedeemInfo( uint32 nPassIndex, GID_t *pgidGuestPassID, PackageId_t *pnPackageID, RTime32 *pRTime32Created, RTime32 *pRTime32Expiration, RTime32 *pRTime32Sent, RTime32 *pRTime32Redeemed)
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
// TODO: pgidGuestPassID
|
||||||
|
if (pnPackageID)
|
||||||
|
*pnPackageID = 0;
|
||||||
|
if (pRTime32Created)
|
||||||
|
*pRTime32Created = 0;
|
||||||
|
if (pRTime32Expiration)
|
||||||
|
*pRTime32Expiration = 0;
|
||||||
|
if (pRTime32Sent)
|
||||||
|
*pRTime32Sent = 0;
|
||||||
|
if (pRTime32Redeemed)
|
||||||
|
*pRTime32Redeemed = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::GetGuestPassToRedeemSenderAddress( uint32 nPassIndex, char* pchSenderAddress, int cSenderAddressSize )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::GetGuestPassToRedeemSenderName( uint32 nPassIndex, char* pchSenderName, int cSenderNameSize )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
if (pchSenderName && cSenderNameSize > 0)
|
||||||
|
memset(pchSenderName, 0, cSenderNameSize);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_User::AcknowledgeMessageByGID( const char *pchMessageGID )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Steam_User::SetLanguage( const char *pchLanguage )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
// TODO: don't know what this api actually does other than returning true
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// used by only a few games to track usage events
|
// used by only a few games to track usage events
|
||||||
void Steam_User::TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo)
|
void Steam_User::TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo)
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Steam_User::SetAccountName( const char *pchAccountName )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_User::SetPassword( const char *pchPassword )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Steam_User::SetAccountCreationTime( RTime32 rt )
|
||||||
|
{
|
||||||
|
PRINT_DEBUG_TODO();
|
||||||
|
}
|
||||||
|
|
||||||
void Steam_User::RefreshSteam2Login()
|
void Steam_User::RefreshSteam2Login()
|
||||||
{
|
{
|
||||||
PRINT_DEBUG_TODO();
|
PRINT_DEBUG_TODO();
|
||||||
|
19
sdk/steam/isteamappdisableupdate.h
Normal file
19
sdk/steam/isteamappdisableupdate.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
#ifndef ISTEAMAPPDISABLEUPDATE_H
|
||||||
|
#define ISTEAMAPPDISABLEUPDATE_H
|
||||||
|
|
||||||
|
// this interface is not found in public SDK archives, it is based on reversing the returned vftable from steamclient64.dll
|
||||||
|
// requested by appid 730
|
||||||
|
|
||||||
|
class ISteamAppDisableUpdate
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// probably means how many seconds to keep the updates disabled
|
||||||
|
virtual void SetAppUpdateDisabledSecondsRemaining(int32 nSeconds) = 0;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#define STEAMAPPDISABLEUPDATE_INTERFACE_VERSION "SteamAppDisableUpdate001"
|
||||||
|
|
||||||
|
#endif // ISTEAMAPPDISABLEUPDATE_H
|
53
sdk/steam/isteamuser004.h
Normal file
53
sdk/steam/isteamuser004.h
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
|
||||||
|
#ifndef ISTEAMUSER004_H
|
||||||
|
#define ISTEAMUSER004_H
|
||||||
|
#ifdef STEAM_WIN32
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum EConfigSubTree {
|
||||||
|
EConfigSubTree_stub
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ELogonState {
|
||||||
|
ELogonState_stub
|
||||||
|
};
|
||||||
|
|
||||||
|
class ISteamUser004
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual HSteamUser GetHSteamUser() = 0;
|
||||||
|
virtual void LogOn( CSteamID steamID ) = 0;
|
||||||
|
virtual void LogOff() = 0;
|
||||||
|
virtual bool BLoggedOn() = 0;
|
||||||
|
virtual ELogonState GetLogonState() = 0;
|
||||||
|
virtual bool BConnected() = 0;
|
||||||
|
virtual CSteamID GetSteamID() = 0;
|
||||||
|
virtual bool IsVACBanned( int nGameID ) = 0;
|
||||||
|
virtual bool RequireShowVACBannedMessage( int nGameID ) = 0;
|
||||||
|
virtual void AcknowledgeVACBanning( int nGameID ) = 0;
|
||||||
|
|
||||||
|
// These are dead.
|
||||||
|
virtual int NClientGameIDAdd( int nGameID ) = 0;
|
||||||
|
virtual void RemoveClientGame( int nClientGameID ) = 0;
|
||||||
|
virtual void SetClientGameServer( int nClientGameID, uint32 unIPServer, uint16 usPortServer ) = 0;
|
||||||
|
|
||||||
|
virtual void SetSteam2Ticket( uint8 *pubTicket, int cubTicket ) = 0;
|
||||||
|
virtual void AddServerNetAddress( uint32 unIP, uint16 unPort ) = 0;
|
||||||
|
virtual bool SetEmail( const char *pchEmail ) = 0;
|
||||||
|
|
||||||
|
// logon cookie - this is obsolete and never used
|
||||||
|
virtual int GetSteamGameConnectToken( void *pBlob, int cbMaxBlob ) = 0;
|
||||||
|
virtual bool SetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, const char *pchValue ) = 0;
|
||||||
|
virtual bool GetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, char *pchValue, int cbValue ) = 0;
|
||||||
|
virtual bool SetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int iValue ) = 0;
|
||||||
|
virtual bool GetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int *piValue ) = 0;
|
||||||
|
virtual int InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, int nGameAppID, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0;
|
||||||
|
virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0;
|
||||||
|
virtual void SetSelfAsPrimaryChatDestination() = 0;
|
||||||
|
virtual bool IsPrimaryChatDestination() = 0;
|
||||||
|
virtual void RequestLegacyCDKey( uint32 iAppID ) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // ISTEAMUSER004_H
|
57
sdk/steam/isteamuser005.h
Normal file
57
sdk/steam/isteamuser005.h
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
#ifndef ISTEAMUSER005_H
|
||||||
|
#define ISTEAMUSER005_H
|
||||||
|
#ifdef STEAM_WIN32
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Functions for accessing and manipulating a steam account
|
||||||
|
// associated with one client instance
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
class ISteamUser005
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual HSteamUser GetHSteamUser() = 0;
|
||||||
|
virtual void LogOn( CSteamID steamID ) = 0;
|
||||||
|
virtual void LogOff() = 0;
|
||||||
|
virtual bool BLoggedOn() = 0;
|
||||||
|
virtual ELogonState GetLogonState() = 0;
|
||||||
|
virtual bool BConnected() = 0;
|
||||||
|
virtual CSteamID GetSteamID() = 0;
|
||||||
|
virtual bool IsVACBanned( int nGameID ) = 0;
|
||||||
|
virtual bool RequireShowVACBannedMessage( int nAppID ) = 0;
|
||||||
|
virtual void AcknowledgeVACBanning( int nAppID ) = 0;
|
||||||
|
virtual void SetSteam2Ticket( uint8 *pubTicket, int cubTicket ) = 0;
|
||||||
|
virtual void AddServerNetAddress( uint32 unIP, uint16 unPort ) = 0;
|
||||||
|
virtual bool SetEmail( const char *pchEmail ) = 0;
|
||||||
|
virtual bool SetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, const char *pchValue ) = 0;
|
||||||
|
virtual bool GetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, char *pchValue, int cbValue ) = 0;
|
||||||
|
virtual bool SetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int iValue ) = 0;
|
||||||
|
virtual bool GetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int *piValue ) = 0;
|
||||||
|
virtual int InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0;
|
||||||
|
virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0;
|
||||||
|
virtual void SetSelfAsPrimaryChatDestination() = 0;
|
||||||
|
virtual bool IsPrimaryChatDestination() = 0;
|
||||||
|
virtual void RequestLegacyCDKey( uint32 nAppID ) = 0;
|
||||||
|
virtual bool SendGuestPassByEmail( const char *pchEmailAccount, GID_t gidGuestPassID, bool bResending ) = 0;
|
||||||
|
virtual bool SendGuestPassByAccountID( uint32 uAccountID, GID_t gidGuestPassID, bool bResending ) = 0;
|
||||||
|
virtual bool AckGuestPass(const char *pchGuestPassCode) = 0;
|
||||||
|
virtual bool RedeemGuestPass(const char *pchGuestPassCode) = 0;
|
||||||
|
virtual uint32 GetGuestPassToGiveCount() = 0;
|
||||||
|
virtual uint32 GetGuestPassToRedeemCount() = 0;
|
||||||
|
virtual RTime32 GetGuestPassLastUpdateTime() = 0;
|
||||||
|
virtual bool GetGuestPassToGiveInfo( uint32 nPassIndex, GID_t *pgidGuestPassID, PackageId_t *pnPackageID, RTime32 *pRTime32Created, RTime32 *pRTime32Expiration, RTime32 *pRTime32Sent, RTime32 *pRTime32Redeemed, char *pchRecipientAddress, int cRecipientAddressSize ) = 0;
|
||||||
|
virtual bool GetGuestPassToRedeemInfo( uint32 nPassIndex, GID_t *pgidGuestPassID, PackageId_t *pnPackageID, RTime32 *pRTime32Created, RTime32 *pRTime32Expiration, RTime32 *pRTime32Sent, RTime32 *pRTime32Redeemed) = 0;
|
||||||
|
virtual bool GetGuestPassToRedeemSenderAddress( uint32 nPassIndex, char* pchSenderAddress, int cSenderAddressSize ) = 0;
|
||||||
|
virtual bool GetGuestPassToRedeemSenderName( uint32 nPassIndex, char* pchSenderName, int cSenderNameSize ) = 0;
|
||||||
|
virtual void AcknowledgeMessageByGID( const char *pchMessageGID ) = 0;
|
||||||
|
virtual bool SetLanguage( const char *pchLanguage ) = 0;
|
||||||
|
virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0;
|
||||||
|
virtual void SetAccountName( const char *pchAccountName ) = 0;
|
||||||
|
virtual void SetPassword( const char *pchPassword ) = 0;
|
||||||
|
virtual void SetAccountCreationTime( RTime32 rt ) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // ISTEAMUSER005_H
|
64
sdk/steam/isteamuser006.h
Normal file
64
sdk/steam/isteamuser006.h
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
#ifndef ISTEAMUSER006_H
|
||||||
|
#define ISTEAMUSER006_H
|
||||||
|
#ifdef STEAM_WIN32
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Functions for accessing and manipulating a steam account
|
||||||
|
// associated with one client instance
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
class ISteamUser006
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// returns the HSteamUser this interface represents
|
||||||
|
// this is only used internally by the API, and by a few select interfaces that support multi-user
|
||||||
|
virtual HSteamUser GetHSteamUser() = 0;
|
||||||
|
|
||||||
|
virtual void LogOn( CSteamID steamID ) = 0;
|
||||||
|
virtual void LogOff() = 0;
|
||||||
|
|
||||||
|
// returns true if the Steam client current has a live connection to the Steam servers.
|
||||||
|
// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy.
|
||||||
|
// The Steam client will automatically be trying to recreate the connection as often as possible.
|
||||||
|
virtual bool BLoggedOn() = 0;
|
||||||
|
|
||||||
|
// returns the CSteamID of the account currently logged into the Steam client
|
||||||
|
// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API
|
||||||
|
virtual CSteamID GetSteamID() = 0;
|
||||||
|
|
||||||
|
virtual bool SetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, const char *pchValue ) = 0;
|
||||||
|
virtual bool GetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, char *pchValue, int cbValue ) = 0;
|
||||||
|
virtual bool SetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int iValue ) = 0;
|
||||||
|
virtual bool GetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int *piValue ) = 0;
|
||||||
|
|
||||||
|
// Multiplayer Authentication functions
|
||||||
|
|
||||||
|
// InitiateGameConnection() starts the state machine for authenticating the game client with the game server
|
||||||
|
// It is the client portion of a three-way handshake between the client, the game server, and the steam servers
|
||||||
|
//
|
||||||
|
// Parameters:
|
||||||
|
// void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token.
|
||||||
|
// int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes.
|
||||||
|
// CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client
|
||||||
|
// CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> )
|
||||||
|
// uint32 unIPServer, uint16 usPortServer - the IP address of the game server
|
||||||
|
// bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running)
|
||||||
|
//
|
||||||
|
// return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed
|
||||||
|
// The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process.
|
||||||
|
virtual int InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure ) = 0;
|
||||||
|
|
||||||
|
// notify of disconnect
|
||||||
|
// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call
|
||||||
|
virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0;
|
||||||
|
|
||||||
|
// Legacy functions
|
||||||
|
|
||||||
|
// used by only a few games to track usage events
|
||||||
|
virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // ISTEAMUSER006_H
|
68
sdk/steam/isteamuser007.h
Normal file
68
sdk/steam/isteamuser007.h
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
#ifndef ISTEAMUSER007_H
|
||||||
|
#define ISTEAMUSER007_H
|
||||||
|
#ifdef STEAM_WIN32
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Functions for accessing and manipulating a steam account
|
||||||
|
// associated with one client instance
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
class ISteamUser007
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// returns the HSteamUser this interface represents
|
||||||
|
// this is only used internally by the API, and by a few select interfaces that support multi-user
|
||||||
|
virtual HSteamUser GetHSteamUser() = 0;
|
||||||
|
|
||||||
|
virtual void LogOn( CSteamID steamID ) = 0;
|
||||||
|
virtual void LogOff() = 0;
|
||||||
|
|
||||||
|
// returns true if the Steam client current has a live connection to the Steam servers.
|
||||||
|
// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy.
|
||||||
|
// The Steam client will automatically be trying to recreate the connection as often as possible.
|
||||||
|
virtual bool BLoggedOn() = 0;
|
||||||
|
|
||||||
|
// returns the CSteamID of the account currently logged into the Steam client
|
||||||
|
// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API
|
||||||
|
virtual CSteamID GetSteamID() = 0;
|
||||||
|
|
||||||
|
virtual bool SetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, const char *pchValue ) = 0;
|
||||||
|
virtual bool GetRegistryString( EConfigSubTree eRegistrySubTree, const char *pchKey, char *pchValue, int cbValue ) = 0;
|
||||||
|
virtual bool SetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int iValue ) = 0;
|
||||||
|
virtual bool GetRegistryInt( EConfigSubTree eRegistrySubTree, const char *pchKey, int *piValue ) = 0;
|
||||||
|
|
||||||
|
// Multiplayer Authentication functions
|
||||||
|
|
||||||
|
// InitiateGameConnection() starts the state machine for authenticating the game client with the game server
|
||||||
|
// It is the client portion of a three-way handshake between the client, the game server, and the steam servers
|
||||||
|
//
|
||||||
|
// Parameters:
|
||||||
|
// void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token.
|
||||||
|
// int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes.
|
||||||
|
// CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client
|
||||||
|
// CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> )
|
||||||
|
// uint32 unIPServer, uint16 usPortServer - the IP address of the game server
|
||||||
|
// bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running)
|
||||||
|
//
|
||||||
|
// return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed
|
||||||
|
// The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process.
|
||||||
|
virtual int InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure, void *pvSteam2GetEncryptionKey, int cbSteam2GetEncryptionKey ) = 0;
|
||||||
|
|
||||||
|
// notify of disconnect
|
||||||
|
// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call
|
||||||
|
virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0;
|
||||||
|
|
||||||
|
// Legacy functions
|
||||||
|
|
||||||
|
// used by only a few games to track usage events
|
||||||
|
virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0;
|
||||||
|
|
||||||
|
// legacy authentication support - need to be called if the game server rejects the user with a 'bad ticket' error
|
||||||
|
// this is only needed under very specific circumstances
|
||||||
|
virtual void RefreshSteam2Login() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // ISTEAMUSER007_H
|
60
sdk/steam/isteamuser008.h
Normal file
60
sdk/steam/isteamuser008.h
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
|
||||||
|
#ifndef ISTEAMUSER008_H
|
||||||
|
#define ISTEAMUSER008_H
|
||||||
|
#ifdef STEAM_WIN32
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Functions for accessing and manipulating a steam account
|
||||||
|
// associated with one client instance
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
class ISteamUser008
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// returns the HSteamUser this interface represents
|
||||||
|
// this is only used internally by the API, and by a few select interfaces that support multi-user
|
||||||
|
virtual HSteamUser GetHSteamUser() = 0;
|
||||||
|
|
||||||
|
// returns true if the Steam client current has a live connection to the Steam servers.
|
||||||
|
// If false, it means there is no active connection due to either a networking issue on the local machine, or the Steam server is down/busy.
|
||||||
|
// The Steam client will automatically be trying to recreate the connection as often as possible.
|
||||||
|
virtual bool BLoggedOn() = 0;
|
||||||
|
|
||||||
|
// returns the CSteamID of the account currently logged into the Steam client
|
||||||
|
// a CSteamID is a unique identifier for an account, and used to differentiate users in all parts of the Steamworks API
|
||||||
|
virtual CSteamID GetSteamID() = 0;
|
||||||
|
|
||||||
|
// Multiplayer Authentication functions
|
||||||
|
|
||||||
|
// InitiateGameConnection() starts the state machine for authenticating the game client with the game server
|
||||||
|
// It is the client portion of a three-way handshake between the client, the game server, and the steam servers
|
||||||
|
//
|
||||||
|
// Parameters:
|
||||||
|
// void *pAuthBlob - a pointer to empty memory that will be filled in with the authentication token.
|
||||||
|
// int cbMaxAuthBlob - the number of bytes of allocated memory in pBlob. Should be at least 2048 bytes.
|
||||||
|
// CSteamID steamIDGameServer - the steamID of the game server, received from the game server by the client
|
||||||
|
// CGameID gameID - the ID of the current game. For games without mods, this is just CGameID( <appID> )
|
||||||
|
// uint32 unIPServer, uint16 usPortServer - the IP address of the game server
|
||||||
|
// bool bSecure - whether or not the client thinks that the game server is reporting itself as secure (i.e. VAC is running)
|
||||||
|
//
|
||||||
|
// return value - returns the number of bytes written to pBlob. If the return is 0, then the buffer passed in was too small, and the call has failed
|
||||||
|
// The contents of pBlob should then be sent to the game server, for it to use to complete the authentication process.
|
||||||
|
virtual int InitiateGameConnection( void *pBlob, int cbMaxBlob, CSteamID steamID, CGameID gameID, uint32 unIPServer, uint16 usPortServer, bool bSecure, void *pvSteam2GetEncryptionKey, int cbSteam2GetEncryptionKey ) = 0;
|
||||||
|
|
||||||
|
// notify of disconnect
|
||||||
|
// needs to occur when the game client leaves the specified game server, needs to match with the InitiateGameConnection() call
|
||||||
|
virtual void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer ) = 0;
|
||||||
|
|
||||||
|
// Legacy functions
|
||||||
|
|
||||||
|
// used by only a few games to track usage events
|
||||||
|
virtual void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" ) = 0;
|
||||||
|
|
||||||
|
// legacy authentication support - need to be called if the game server rejects the user with a 'bad ticket' error
|
||||||
|
// this is only needed under very specific circumstances
|
||||||
|
virtual void RefreshSteam2Login() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // ISTEAMUSER008_H
|
34
sdk/steam/isteamutils001.h
Normal file
34
sdk/steam/isteamutils001.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
#ifndef ISTEAMUTILS001_H
|
||||||
|
#define ISTEAMUTILS001_H
|
||||||
|
#ifdef STEAM_WIN32
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class ISteamUtils001
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// return the number of seconds since the user
|
||||||
|
virtual uint32 GetSecondsSinceAppActive() = 0;
|
||||||
|
virtual uint32 GetSecondsSinceComputerActive() = 0;
|
||||||
|
|
||||||
|
// the universe this client is connecting to
|
||||||
|
virtual EUniverse GetConnectedUniverse() = 0;
|
||||||
|
|
||||||
|
// Steam server time - in PST, number of seconds since January 1, 1970 (i.e unix time)
|
||||||
|
virtual uint32 GetServerRealTime() = 0;
|
||||||
|
|
||||||
|
// returns the 2 digit ISO 3166-1-alpha-2 format country code this client is running in (as looked up via an IP-to-location database)
|
||||||
|
// e.g "US" or "UK".
|
||||||
|
virtual const char *GetIPCountry() = 0;
|
||||||
|
|
||||||
|
// returns true if the image exists, and valid sizes were filled out
|
||||||
|
virtual bool GetImageSize( int iImage, uint32 *pnWidth, uint32 *pnHeight ) = 0;
|
||||||
|
|
||||||
|
// returns true if the image exists, and the buffer was successfully filled out
|
||||||
|
// results are returned in RGBA format
|
||||||
|
// the destination buffer size should be 4 * height * width * sizeof(char)
|
||||||
|
virtual bool GetImageRGBA( int iImage, uint8 *pubDest, int nDestBufferSize ) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ISTEAMUTILS001_H
|
@ -21,6 +21,7 @@
|
|||||||
#include "steam_api_common.h"
|
#include "steam_api_common.h"
|
||||||
|
|
||||||
// All of the interfaces
|
// All of the interfaces
|
||||||
|
#include "isteamappdisableupdate.h"
|
||||||
#include "isteamclient.h"
|
#include "isteamclient.h"
|
||||||
#include "isteamclient007.h"
|
#include "isteamclient007.h"
|
||||||
#include "isteamclient008.h"
|
#include "isteamclient008.h"
|
||||||
@ -37,6 +38,11 @@
|
|||||||
#include "isteamclient019.h"
|
#include "isteamclient019.h"
|
||||||
#include "isteamclient020.h"
|
#include "isteamclient020.h"
|
||||||
#include "isteamuser.h"
|
#include "isteamuser.h"
|
||||||
|
#include "isteamuser004.h"
|
||||||
|
#include "isteamuser005.h"
|
||||||
|
#include "isteamuser006.h"
|
||||||
|
#include "isteamuser007.h"
|
||||||
|
#include "isteamuser008.h"
|
||||||
#include "isteamuser009.h"
|
#include "isteamuser009.h"
|
||||||
#include "isteamuser010.h"
|
#include "isteamuser010.h"
|
||||||
#include "isteamuser011.h"
|
#include "isteamuser011.h"
|
||||||
@ -67,6 +73,7 @@
|
|||||||
#include "isteamfriends015.h"
|
#include "isteamfriends015.h"
|
||||||
#include "isteamfriends016.h"
|
#include "isteamfriends016.h"
|
||||||
#include "isteamutils.h"
|
#include "isteamutils.h"
|
||||||
|
#include "isteamutils001.h"
|
||||||
#include "isteamutils002.h"
|
#include "isteamutils002.h"
|
||||||
#include "isteamutils003.h"
|
#include "isteamutils003.h"
|
||||||
#include "isteamutils004.h"
|
#include "isteamutils004.h"
|
||||||
|
Binary file not shown.
@ -106,95 +106,106 @@ FileWrite($hFile,$sNew)
|
|||||||
FileClose($hFile)
|
FileClose($hFile)
|
||||||
|
|
||||||
$interfaces_ini = @ScriptDir & '\steam_settings\steam_interfaces.ini'
|
$interfaces_ini = @ScriptDir & '\steam_settings\steam_interfaces.ini'
|
||||||
$codex_ini = @ScriptDir & '\steam_misc\extra_cdx\steam_emu.ini'
|
|
||||||
|
|
||||||
If FileExists($codex_ini) Then
|
$codex_ini = @ScriptDir & '\steam_misc\extra_crk\CODEX\steam_emu.ini'
|
||||||
|
_AddInterfaces($codex_ini)
|
||||||
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPLIST_', 'SteamAppList=STEAMAPPLIST_', 1, 1)
|
$rune_ini = @ScriptDir & '\steam_misc\extra_crk\RUNE\steam_emu.ini'
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPS_', 'SteamApps=STEAMAPPS_', 1, 1)
|
_AddInterfaces($rune_ini)
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPTICKET_', 'SteamAppTicket=STEAMAPPTICKET_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamClient', 'SteamClient=SteamClient', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamController', 'SteamController=SteamController', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamFriends', 'SteamFriends=SteamFriends', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamGameCoordinator', 'SteamGameCoordinator=SteamGameCoordinator', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamGameServerStats', 'Steam_Game_Server_Stats=Steam_Game_Server_Stats', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamGameServer', 'SteamGameServer=SteamGameServer', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Game_Server_Stats', 'SteamGameServerStats', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamGameStats', 'SteamGameStats=SteamGameStats', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMHTMLSURFACE_', 'SteamHTMLSurface=STEAMHTMLSURFACE_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMHTTP_', 'SteamHTTP=STEAMHTTP_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamInput', 'SteamInput=SteamInput', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMINVENTORY_', 'SteamInventory=STEAMINVENTORY_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamMasterServerUpdater', 'SteamMasterServerUpdater=SteamMasterServerUpdater', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamMatchGameSearch', 'SteamMatchGameSearch=SteamMatchGameSearch', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamMatchMakingServers', 'Steam_Match_Making_Servers=Steam_Match_Making_Servers', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamMatchMaking', 'SteamMatchMaking=SteamMatchMaking', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Match_Making_Servers', 'SteamMatchMakingServers', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMMUSIC_', 'SteamMusic=STEAMMUSIC_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMMUSICREMOTE_', 'SteamMusicRemote=STEAMMUSICREMOTE_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingMessages', 'Steam_Networking_Messages=Steam_Networking_Messages', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingSocketsSerialized', 'Steam_Networking_Sockets_Serialized=Steam_Networking_Sockets_Serialized', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingSockets', 'Steam_Networking_Sockets=Steam_Networking_Sockets', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingUtils', 'Steam_Networking_Utils=Steam_Networking_Utils', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworking', 'SteamNetworking=SteamNetworking', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Messages', 'SteamNetworkingMessages', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Sockets_Serialized', 'SteamNetworkingSocketsSerialized', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Sockets', 'SteamNetworkingSockets', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Utils', 'SteamNetworkingUtils', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMPARENTALSETTINGS_', 'SteamParentalSettings=STEAMPARENTALSETTINGS_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamParties', 'SteamParties=SteamParties', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMREMOTEPLAY_', 'SteamRemotePlay=STEAMREMOTEPLAY_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMREMOTESTORAGE_', 'SteamRemoteStorage=STEAMREMOTESTORAGE_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMSCREENSHOTS_', 'SteamScreenshots=STEAMSCREENSHOTS_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMTIMELINE_', 'SteamTimeline=STEAMTIMELINE_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMTV_', 'SteamTV=STEAMTV_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMUGC_', 'SteamUGC=STEAMUGC_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMUNIFIEDMESSAGES_', 'SteamUnifiedMessages=STEAMUNIFIEDMESSAGES_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMUSERSTATS_', 'Steam_User_Stats=STEAMUSERSTATS_', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamUser', 'SteamUser=SteamUser', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'Steam_User_Stats', 'SteamUserStats', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'SteamUtils', 'SteamUtils=SteamUtils', 1, 1)
|
|
||||||
_ReplaceStringInFile($interfaces_ini, 'STEAMVIDEO_', 'SteamVideo=STEAMVIDEO_', 1, 1)
|
|
||||||
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamAppList', IniRead($interfaces_ini, 'steam_interfaces', 'SteamAppList', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamApps', IniRead($interfaces_ini, 'steam_interfaces', 'SteamApps', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamAppTicket', IniRead($interfaces_ini, 'steam_interfaces', 'SteamAppTicket', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamClient', IniRead($interfaces_ini, 'steam_interfaces', 'SteamClient', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamController', IniRead($interfaces_ini, 'steam_interfaces', 'SteamController', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamFriends', IniRead($interfaces_ini, 'steam_interfaces', 'SteamFriends', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamGameCoordinator', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameCoordinator', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamGameServerStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameServerStats', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamGameServer', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameServer', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamGameStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameStats', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamHTMLSurface', IniRead($interfaces_ini, 'steam_interfaces', 'SteamHTMLSurface', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamHTTP', IniRead($interfaces_ini, 'steam_interfaces', 'SteamHTTP', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamInput', IniRead($interfaces_ini, 'steam_interfaces', 'SteamInput', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamInventory', IniRead($interfaces_ini, 'steam_interfaces', 'SteamInventory', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamMasterServerUpdater', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMasterServerUpdater', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamMatchGameSearch', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchGameSearch', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamMatchMakingServers', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchMakingServers', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamMatchMaking', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchMaking', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamMusic', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMusic', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamMusicRemote', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMusicRemote', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworkingMessages', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingMessages', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworkingSocketsSerialized', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingSocketsSerialized', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworkingSockets', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingSockets', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworkingUtils', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingUtils', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworking', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworking', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamParentalSettings', IniRead($interfaces_ini, 'steam_interfaces', 'SteamParentalSettings', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamParties', IniRead($interfaces_ini, 'steam_interfaces', 'SteamParties', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamRemotePlay', IniRead($interfaces_ini, 'steam_interfaces', 'SteamRemotePlay', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamRemoteStorage', IniRead($interfaces_ini, 'steam_interfaces', 'SteamRemoteStorage', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamScreenshots', IniRead($interfaces_ini, 'steam_interfaces', 'SteamScreenshots', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamTimeline', IniRead($interfaces_ini, 'steam_interfaces', 'SteamTimeline', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamTV', IniRead($interfaces_ini, 'steam_interfaces', 'SteamTV', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamUGC', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUGC', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamUnifiedMessages', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUnifiedMessages', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamUserStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUserStats', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamUser', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUser', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamUtils', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUtils', ''))
|
|
||||||
IniWrite($codex_ini, 'Interfaces', 'SteamVideo', IniRead($interfaces_ini, 'steam_interfaces', 'SteamVideo', ''))
|
|
||||||
|
|
||||||
EndIf
|
|
||||||
|
|
||||||
FileDelete($interfaces_ini)
|
FileDelete($interfaces_ini)
|
||||||
|
|
||||||
|
Func _AddInterfaces($crack_ini)
|
||||||
|
|
||||||
|
If FileExists($crack_ini) Then
|
||||||
|
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamAppDisableUpdate', 'SteamAppDisableUpdate=SteamAppDisableUpdate', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPLIST_', 'SteamAppList=STEAMAPPLIST_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPS_', 'SteamApps=STEAMAPPS_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPTICKET_', 'SteamAppTicket=STEAMAPPTICKET_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamClient', 'SteamClient=SteamClient', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamController', 'SteamController=SteamController', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamFriends', 'SteamFriends=SteamFriends', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamGameCoordinator', 'SteamGameCoordinator=SteamGameCoordinator', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamGameServerStats', 'Steam_Game_Server_Stats=Steam_Game_Server_Stats', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamGameServer', 'SteamGameServer=SteamGameServer', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'Steam_Game_Server_Stats', 'SteamGameServerStats', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamGameStats', 'SteamGameStats=SteamGameStats', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMHTMLSURFACE_', 'SteamHTMLSurface=STEAMHTMLSURFACE_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMHTTP_', 'SteamHTTP=STEAMHTTP_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamInput', 'SteamInput=SteamInput', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMINVENTORY_', 'SteamInventory=STEAMINVENTORY_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamMasterServerUpdater', 'SteamMasterServerUpdater=SteamMasterServerUpdater', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamMatchGameSearch', 'SteamMatchGameSearch=SteamMatchGameSearch', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamMatchMakingServers', 'Steam_Match_Making_Servers=Steam_Match_Making_Servers', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamMatchMaking', 'SteamMatchMaking=SteamMatchMaking', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'Steam_Match_Making_Servers', 'SteamMatchMakingServers', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMMUSIC_', 'SteamMusic=STEAMMUSIC_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMMUSICREMOTE_', 'SteamMusicRemote=STEAMMUSICREMOTE_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingMessages', 'Steam_Networking_Messages=Steam_Networking_Messages', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingSocketsSerialized', 'Steam_Networking_Sockets_Serialized=Steam_Networking_Sockets_Serialized', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingSockets', 'Steam_Networking_Sockets=Steam_Networking_Sockets', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingUtils', 'Steam_Networking_Utils=Steam_Networking_Utils', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamNetworking', 'SteamNetworking=SteamNetworking', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Messages', 'SteamNetworkingMessages', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Sockets_Serialized', 'SteamNetworkingSocketsSerialized', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Sockets', 'SteamNetworkingSockets', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Utils', 'SteamNetworkingUtils', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMPARENTALSETTINGS_', 'SteamParentalSettings=STEAMPARENTALSETTINGS_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamParties', 'SteamParties=SteamParties', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMREMOTEPLAY_', 'SteamRemotePlay=STEAMREMOTEPLAY_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMREMOTESTORAGE_', 'SteamRemoteStorage=STEAMREMOTESTORAGE_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMSCREENSHOTS_', 'SteamScreenshots=STEAMSCREENSHOTS_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMTIMELINE_', 'SteamTimeline=STEAMTIMELINE_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMTV_', 'SteamTV=STEAMTV_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMUGC_', 'SteamUGC=STEAMUGC_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMUNIFIEDMESSAGES_', 'SteamUnifiedMessages=STEAMUNIFIEDMESSAGES_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMUSERSTATS_', 'Steam_User_Stats=STEAMUSERSTATS_', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamUser', 'SteamUser=SteamUser', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'Steam_User_Stats', 'SteamUserStats', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'SteamUtils', 'SteamUtils=SteamUtils', 1, 1)
|
||||||
|
_ReplaceStringInFile($interfaces_ini, 'STEAMVIDEO_', 'SteamVideo=STEAMVIDEO_', 1, 1)
|
||||||
|
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamAppDisableUpdate', IniRead($interfaces_ini, 'steam_interfaces', 'SteamAppDisableUpdate', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamAppList', IniRead($interfaces_ini, 'steam_interfaces', 'SteamAppList', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamApps', IniRead($interfaces_ini, 'steam_interfaces', 'SteamApps', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamAppTicket', IniRead($interfaces_ini, 'steam_interfaces', 'SteamAppTicket', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamClient', IniRead($interfaces_ini, 'steam_interfaces', 'SteamClient', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamController', IniRead($interfaces_ini, 'steam_interfaces', 'SteamController', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamFriends', IniRead($interfaces_ini, 'steam_interfaces', 'SteamFriends', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamGameCoordinator', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameCoordinator', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamGameServerStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameServerStats', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamGameServer', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameServer', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamGameStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameStats', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamHTMLSurface', IniRead($interfaces_ini, 'steam_interfaces', 'SteamHTMLSurface', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamHTTP', IniRead($interfaces_ini, 'steam_interfaces', 'SteamHTTP', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamInput', IniRead($interfaces_ini, 'steam_interfaces', 'SteamInput', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamInventory', IniRead($interfaces_ini, 'steam_interfaces', 'SteamInventory', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamMasterServerUpdater', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMasterServerUpdater', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamMatchGameSearch', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchGameSearch', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamMatchMakingServers', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchMakingServers', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamMatchMaking', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchMaking', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamMusic', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMusic', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamMusicRemote', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMusicRemote', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamNetworkingMessages', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingMessages', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamNetworkingSocketsSerialized', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingSocketsSerialized', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamNetworkingSockets', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingSockets', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamNetworkingUtils', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingUtils', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamNetworking', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworking', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamParentalSettings', IniRead($interfaces_ini, 'steam_interfaces', 'SteamParentalSettings', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamParties', IniRead($interfaces_ini, 'steam_interfaces', 'SteamParties', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamRemotePlay', IniRead($interfaces_ini, 'steam_interfaces', 'SteamRemotePlay', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamRemoteStorage', IniRead($interfaces_ini, 'steam_interfaces', 'SteamRemoteStorage', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamScreenshots', IniRead($interfaces_ini, 'steam_interfaces', 'SteamScreenshots', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamTimeline', IniRead($interfaces_ini, 'steam_interfaces', 'SteamTimeline', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamTV', IniRead($interfaces_ini, 'steam_interfaces', 'SteamTV', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamUGC', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUGC', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamUnifiedMessages', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUnifiedMessages', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamUserStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUserStats', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamUser', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUser', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamUtils', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUtils', ''))
|
||||||
|
IniWrite($crack_ini, 'Interfaces', 'SteamVideo', IniRead($interfaces_ini, 'steam_interfaces', 'SteamVideo', ''))
|
||||||
|
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
EndFunc
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@echo off
|
@echo off
|
||||||
pip install -U steam[client]
|
pip install -U git+https://github.com/Sak32009/steam_py_fork.git@fix-cm-servers
|
||||||
pip install pyinstaller
|
pip install pyinstaller
|
||||||
pip install requests
|
pip install requests
|
||||||
pip install certifi
|
pip install certifi
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
@echo off
|
@echo off
|
||||||
set /p arg="Generate Emu Config for Steam AppId: "
|
set /p arg="Generate Emu Config for Steam AppId: "
|
||||||
python -W ignore::DeprecationWarning generate_emu_config.py -img -scr -vids_low -vids_max -scx -cdx -acw -clr -anon %arg%
|
python -W ignore::DeprecationWarning generate_emu_config.py -img -scr -vids_low -vids_max -scx -cdx -rne -acw -clr -anon %arg%
|
@ -1,3 +1,3 @@
|
|||||||
@echo off
|
@echo off
|
||||||
set /p arg="Generate Emu Config for Steam AppId: "
|
set /p arg="Generate Emu Config for Steam AppId: "
|
||||||
python -W ignore::DeprecationWarning generate_emu_config.py -img -scr -vids_low -vids_max -scx -cdx -acw -clr %arg%
|
python -W ignore::DeprecationWarning generate_emu_config.py -img -scr -vids_low -vids_max -scx -cdx -rne -acw -clr %arg%
|
@ -1,3 +1,3 @@
|
|||||||
@echo off
|
@echo off
|
||||||
set /p arg="Generate Emu Config for Steam AppId: "
|
set /p arg="Generate Emu Config for Steam AppId: "
|
||||||
python -W ignore::DeprecationWarning generate_emu_config.py -cdx -acw -clr %arg%
|
python -W ignore::DeprecationWarning generate_emu_config.py -cdx -rne -acw -clr %arg%
|
@ -12,7 +12,7 @@ def __ClosestDictKey(targetKey : str, srcDict : dict[str, object] | set[str]) ->
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def __generate_ach_watcher_schema(lang: str, app_id: int, achs: list[dict]) -> list[dict]:
|
def __generate_ach_watcher_schema(lang: str, app_id: int, achs: list[dict]) -> list[dict]:
|
||||||
print(f"[ ] __ writing {lang} {app_id}.db to '.\\schema\\{lang}' folder")
|
print(f"[ ] __ writing {lang} {app_id}.db to <SCH_DIR>\\{lang} folder")
|
||||||
out_achs_list = []
|
out_achs_list = []
|
||||||
for idx in range(len(achs)):
|
for idx in range(len(achs)):
|
||||||
ach = copy.deepcopy(achs[idx])
|
ach = copy.deepcopy(achs[idx])
|
||||||
@ -114,7 +114,7 @@ def generate_all_ach_watcher_schemas(
|
|||||||
#print("[X] Couldn't generate Achievement Watcher schemas, no achievements found") # move notification to main script
|
#print("[X] Couldn't generate Achievement Watcher schemas, no achievements found") # move notification to main script
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
print(f"[ ] Generating Achievement Watcher schemas...")
|
print(f"[ ] Generating & packing Achievement Watcher schemas...")
|
||||||
#if app_exe:
|
#if app_exe:
|
||||||
# print(f"[ ] __ Detected app exe: '{app_exe}'") # move notification to main script
|
# print(f"[ ] __ Detected app exe: '{app_exe}'") # move notification to main script
|
||||||
#else:
|
#else:
|
||||||
@ -163,7 +163,7 @@ def generate_all_ach_watcher_schemas(
|
|||||||
print(f"[ ] __ Assuming english is the only supported language")
|
print(f"[ ] __ Assuming english is the only supported language")
|
||||||
langs = ["english"]
|
langs = ["english"]
|
||||||
|
|
||||||
print(f"[ ] __ schema = OUTPUT\\{appid}\\steam_misc\\achievement_watcher\\steam_cache\\schema")
|
print(f"[ ] __ <SCH_DIR> = <OUT_DIR>\\steam_misc\\extra_acw\\steam_cache\\schema")
|
||||||
|
|
||||||
for lang in langs:
|
for lang in langs:
|
||||||
out_schema_folder = os.path.join(ach_watcher_out_dir, lang)
|
out_schema_folder = os.path.join(ach_watcher_out_dir, lang)
|
||||||
|
@ -340,14 +340,14 @@ def download_app_details(
|
|||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
||||||
if not app_details:
|
if not app_details:
|
||||||
print(f"[?] No app details found - skip creating 'app_details.json'")
|
print(f"[?] No app details found - skip creating <OUT_DIR>\\steam_misc\\app_info\\app_details.json")
|
||||||
#if last_exception: # skip showing last_exception
|
#if last_exception: # skip showing last_exception
|
||||||
# print(f"[X] __ last error: {last_exception}")
|
# print(f"[X] __ last error: {last_exception}")
|
||||||
return
|
return
|
||||||
|
|
||||||
with open(details_out_file, "wt", encoding='utf-8') as f:
|
with open(details_out_file, "wt", encoding='utf-8') as f:
|
||||||
json.dump(app_details, f, ensure_ascii=False, indent=2)
|
json.dump(app_details, f, ensure_ascii=False, indent=2)
|
||||||
print(f"[ ] Found app details --- writing to 'app_details.json'") # move it here to avoid showing both 'downloading' and 'cannot download'
|
print(f"[ ] Found app details --- writing to <OUT_DIR>\\steam_misc\\app_info\\app_details.json") # move it here to avoid showing both 'downloading' and 'cannot download'
|
||||||
|
|
||||||
if download_screenshots:
|
if download_screenshots:
|
||||||
__download_screenshots(base_out_dir, appid, app_details)
|
__download_screenshots(base_out_dir, appid, app_details)
|
||||||
|
@ -3,7 +3,7 @@ from steam_id_converter.SteamID import (
|
|||||||
SteamID
|
SteamID
|
||||||
)
|
)
|
||||||
|
|
||||||
__codex_ini = '''
|
__codex_ini = r'''###
|
||||||
### ÜÛÛÛÛÛ Ü
|
### ÜÛÛÛÛÛ Ü
|
||||||
### °ÛÛÛÛ ßÛÛ Û² ßßßÛÛÛÛÛÛÛÜ ßßßßßÛÛ²ÛÛÜ Ü²ÛÛÛß
|
### °ÛÛÛÛ ßÛÛ Û² ßßßÛÛÛÛÛÛÛÜ ßßßßßÛÛ²ÛÛÜ Ü²ÛÛÛß
|
||||||
### ±ÛÛÛß ±ÛÛß ßßÛÛÛÛ° ßÛÛÛ ±ÛÛÛß
|
### ±ÛÛÛß ±ÛÛß ßßÛÛÛÛ° ßÛÛÛ ±ÛÛÛß
|
||||||
@ -17,7 +17,7 @@ __codex_ini = '''
|
|||||||
### ßßßÛÛ²ÜÜÜÜÜÛ²ÛÛÛ²ßß
|
### ßßßÛÛ²ÜÜÜÜÜÛ²ÛÛÛ²ßß
|
||||||
###
|
###
|
||||||
###
|
###
|
||||||
### Game data is stored at %SystemDrive%\\Users\\Public\\Documents\\Steam\\CODEX\\{cdx_id}
|
### Game data is stored at %SystemDrive%\Users\Public\Documents\Steam\CODEX\{cdx_id}
|
||||||
###
|
###
|
||||||
|
|
||||||
[Settings]
|
[Settings]
|
||||||
@ -61,6 +61,7 @@ SelfProtect=0
|
|||||||
###
|
###
|
||||||
### Steam Client API interface versions
|
### Steam Client API interface versions
|
||||||
###
|
###
|
||||||
|
SteamAppDisableUpdate=
|
||||||
SteamAppList=
|
SteamAppList=
|
||||||
SteamApps=
|
SteamApps=
|
||||||
SteamAppTicket=
|
SteamAppTicket=
|
||||||
@ -136,11 +137,11 @@ def generate_cdx_ini(
|
|||||||
dlc: list[tuple[int, str]],
|
dlc: list[tuple[int, str]],
|
||||||
achs: list[dict]) -> None:
|
achs: list[dict]) -> None:
|
||||||
|
|
||||||
if not os.path.exists(os.path.join(base_out_dir, "steam_misc\\extra_cdx")):
|
if not os.path.exists(os.path.join(base_out_dir, "steam_misc\\extra_crk\\CODEX")):
|
||||||
os.makedirs(os.path.join(base_out_dir, "steam_misc\\extra_cdx"))
|
os.makedirs(os.path.join(base_out_dir, "steam_misc\\extra_crk\\CODEX"))
|
||||||
|
|
||||||
codex_ini_path = os.path.join(base_out_dir, "steam_misc\\extra_cdx\\steam_emu.ini")
|
codex_ini_path = os.path.join(base_out_dir, "steam_misc\\extra_crk\\CODEX\\steam_emu.ini")
|
||||||
print(f"[ ] Generating RUNE / CODEX / PLAZA config --- writing 'steam_emu.ini'")
|
print(f"[ ] Generating CODEX config --- writing <OUT_DIR>\\steam_misc\\extra_crk\\CODEX\\steam_emu.ini")
|
||||||
print(f"[ ] __ if to be used, make sure it has the correct interface versions")
|
print(f"[ ] __ if to be used, make sure it has the correct interface versions")
|
||||||
|
|
||||||
dlc_list = [f"{d[0]}={d[1]}" for d in dlc]
|
dlc_list = [f"{d[0]}={d[1]}" for d in dlc]
|
||||||
|
23
tools/generate_emu_config/external_components/pcgw_page.py
Normal file
23
tools/generate_emu_config/external_components/pcgw_page.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import os
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
# download PCGamingWiki page source code only
|
||||||
|
# to be parsed for additional game info, e.g. config and saved games files locations, extended developer and publisher info, etc
|
||||||
|
# not yet implemented in main script
|
||||||
|
def download_pcgw(base_out_dir : str, appid : int):
|
||||||
|
|
||||||
|
pcgw_link = f"https://www.pcgamingwiki.com/api/appid.php?appid={appid}"
|
||||||
|
|
||||||
|
if not os.path.exists(os.path.join(base_out_dir, 'steam_misc\\app_info')):
|
||||||
|
os.makedirs(os.path.join(base_out_dir, 'steam_misc\\app_info'))
|
||||||
|
|
||||||
|
with urllib.request.urlopen(pcgw_link) as f:
|
||||||
|
html = f.read().decode('utf-8')
|
||||||
|
|
||||||
|
file = os.path.join(base_out_dir, f"steam_misc\\app_info\\pcgw.tmp")
|
||||||
|
with open(file, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(html)
|
||||||
|
|
||||||
|
if os.path.isfile(os.path.join(base_out_dir, 'steam_misc\\app_info\\pcgw.tmp')):
|
||||||
|
with open(os.path.join(base_out_dir, 'steam_misc\\app_info\\pcgw.tmp'), 'r', encoding='utf-8') as app_pcgw:
|
||||||
|
app_pcgw_line = app_pcgw.readlines()
|
172
tools/generate_emu_config/external_components/rne_gen.py
Normal file
172
tools/generate_emu_config/external_components/rne_gen.py
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
import os
|
||||||
|
from steam_id_converter.SteamID import (
|
||||||
|
SteamID
|
||||||
|
)
|
||||||
|
|
||||||
|
__rune_ini = r'''###
|
||||||
|
### \ /
|
||||||
|
### _ _ _ _ \\__//
|
||||||
|
### ____ ._/______:_//\//_/____ _ //___ ./_ __//_____:_\\//
|
||||||
|
### :\ //_/ _ . /_/ / /_/__:_//_/ /\ /\__/_ _ . /\\\
|
||||||
|
### \\/// ____/___./ / / / / / / \X_/ //___/ /_\_
|
||||||
|
### . \/// _______ _/_ /_/ _/_/ \\/ // /_\_\ /.
|
||||||
|
### z_/ _/\ _/ // / // / \ /// __// :\//
|
||||||
|
### | / _ / /\// /__// __//_ _ /\ /X/ /__/ |/\/2
|
||||||
|
### --+-_=\__/ / / / \_____:__/ //\____// /\ /\/__:_______=_-+--\4
|
||||||
|
### |-\__\- / /________\____.__\/- -\--/_\/_______\--.\________\|___\
|
||||||
|
### = dS!\/- -\_______\ =-RUNE- -== \/ ==-\______\-= ======== --\__\
|
||||||
|
###
|
||||||
|
###
|
||||||
|
### Game data is stored at %SystemDrive%\Users\Public\Documents\Steam\RUNE\{rne_id}
|
||||||
|
###
|
||||||
|
|
||||||
|
[Settings]
|
||||||
|
###
|
||||||
|
### Game identifier (http://store.steampowered.com/app/{rne_id})
|
||||||
|
###
|
||||||
|
AppId={rne_id}
|
||||||
|
###
|
||||||
|
### Steam Account ID, set it to 0 to get a random Account ID
|
||||||
|
###
|
||||||
|
AccountId={rne_accountid}
|
||||||
|
###
|
||||||
|
### Name of the current player
|
||||||
|
###
|
||||||
|
UserName={rne_username}
|
||||||
|
###
|
||||||
|
### Language that will be used in the game
|
||||||
|
###
|
||||||
|
Language={rne_language}
|
||||||
|
###
|
||||||
|
### Enable lobby mode
|
||||||
|
###
|
||||||
|
LobbyEnabled=1
|
||||||
|
###
|
||||||
|
### Lobby port to listen on
|
||||||
|
###
|
||||||
|
#LobbyPort=31183
|
||||||
|
###
|
||||||
|
### Enable/Disable Steam overlay
|
||||||
|
###
|
||||||
|
Overlays=1
|
||||||
|
###
|
||||||
|
### Set Steam connection to offline mode
|
||||||
|
###
|
||||||
|
Offline=0
|
||||||
|
###
|
||||||
|
BlockConnection=0
|
||||||
|
###
|
||||||
|
|
||||||
|
[Interfaces]
|
||||||
|
###
|
||||||
|
### Steam Client API interface versions
|
||||||
|
###
|
||||||
|
SteamAppDisableUpdate=
|
||||||
|
SteamAppList=
|
||||||
|
SteamApps=
|
||||||
|
SteamAppTicket=
|
||||||
|
SteamClient=
|
||||||
|
SteamController=
|
||||||
|
SteamFriends=
|
||||||
|
SteamGameCoordinator=
|
||||||
|
SteamGameServerStats=
|
||||||
|
SteamGameServer=
|
||||||
|
SteamGameStats=
|
||||||
|
SteamHTMLSurface=
|
||||||
|
SteamHTTP=
|
||||||
|
SteamInput=
|
||||||
|
SteamInventory=
|
||||||
|
SteamMasterServerUpdater=
|
||||||
|
SteamMatchGameSearch=
|
||||||
|
SteamMatchMakingServers=
|
||||||
|
SteamMatchMaking=
|
||||||
|
SteamMusic=
|
||||||
|
SteamMusicRemote=
|
||||||
|
SteamNetworkingMessages=
|
||||||
|
SteamNetworkingSocketsSerialized=
|
||||||
|
SteamNetworkingSockets=
|
||||||
|
SteamNetworkingUtils=
|
||||||
|
SteamNetworking=
|
||||||
|
SteamParentalSettings=
|
||||||
|
SteamParties=
|
||||||
|
SteamRemotePlay=
|
||||||
|
SteamRemoteStorage=
|
||||||
|
SteamScreenshots=
|
||||||
|
SteamTimeline=
|
||||||
|
SteamTV=
|
||||||
|
SteamUGC=
|
||||||
|
SteamUnifiedMessages=
|
||||||
|
SteamUserStats=
|
||||||
|
SteamUser=
|
||||||
|
SteamUtils=
|
||||||
|
SteamVideo=
|
||||||
|
###
|
||||||
|
|
||||||
|
[DLC]
|
||||||
|
###
|
||||||
|
### Automatically unlock all DLCs
|
||||||
|
###
|
||||||
|
DLCUnlockall=0
|
||||||
|
###
|
||||||
|
### Identifiers for DLCs
|
||||||
|
###
|
||||||
|
#ID=Name
|
||||||
|
{rne_dlc_list}
|
||||||
|
###
|
||||||
|
|
||||||
|
[Crack]
|
||||||
|
7f508eddb6d6c0b1=3681a9beddbae875
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
def generate_rne_ini(
|
||||||
|
base_out_dir : str,
|
||||||
|
appid: int,
|
||||||
|
accountid: int,
|
||||||
|
username: str,
|
||||||
|
language: str,
|
||||||
|
dlc: list[tuple[int, str]],
|
||||||
|
achs: list[dict]) -> None:
|
||||||
|
|
||||||
|
if not os.path.exists(os.path.join(base_out_dir, "steam_misc\\extra_crk\\RUNE")):
|
||||||
|
os.makedirs(os.path.join(base_out_dir, "steam_misc\\extra_crk\\RUNE"))
|
||||||
|
|
||||||
|
rune_ini_path = os.path.join(base_out_dir, "steam_misc\\extra_crk\\RUNE\\steam_emu.ini")
|
||||||
|
print(f"[ ] Generating RUNE config --- writing <OUT_DIR>\\steam_misc\\extra_crk\\RUNE\\steam_emu.ini")
|
||||||
|
print(f"[ ] __ if to be used, make sure it has the correct interface versions")
|
||||||
|
|
||||||
|
dlc_list = [f"{d[0]}={d[1]}" for d in dlc]
|
||||||
|
achs_list = []
|
||||||
|
for ach in achs:
|
||||||
|
icon = ach.get("icon", None)
|
||||||
|
if icon:
|
||||||
|
icon = f"steam_settings\\img\\{icon}"
|
||||||
|
else:
|
||||||
|
icon = 'steam_settings\\img\\steam_default_icon_unlocked.jpg'
|
||||||
|
|
||||||
|
icon_gray = ach.get("icon_gray", None)
|
||||||
|
if icon_gray:
|
||||||
|
icon_gray = f"steam_settings\\img\\{icon_gray}"
|
||||||
|
else:
|
||||||
|
icon_gray = 'steam_settings\\img\\steam_default_icon_locked.jpg'
|
||||||
|
|
||||||
|
icongray = ach.get("icongray", None)
|
||||||
|
if icongray:
|
||||||
|
icon_gray = f"steam_settings\\img\\{icongray}"
|
||||||
|
|
||||||
|
achs_list.append(f'{ach["name"]} Achieved={icon}') # unlocked
|
||||||
|
achs_list.append(f'{ach["name"]} Unachieved={icon_gray}') # locked
|
||||||
|
|
||||||
|
steam_id = SteamID(accountid)
|
||||||
|
|
||||||
|
formatted_ini = __rune_ini.format(
|
||||||
|
rne_id = appid,
|
||||||
|
rne_username = username,
|
||||||
|
rne_accountid = steam_id.get_steam32_id(),
|
||||||
|
rne_language = language,
|
||||||
|
rne_dlc_list = "\n".join(dlc_list),
|
||||||
|
rne_ach_list = "\n".join(achs_list)
|
||||||
|
)
|
||||||
|
|
||||||
|
with open(rune_ini_path, "wt", encoding='utf-8') as f:
|
||||||
|
f.writelines(formatted_ini)
|
@ -7,13 +7,13 @@ ALLOWED_CHARS = set([
|
|||||||
'=', '+', '[', '{',
|
'=', '+', '[', '{',
|
||||||
']', '}', ';', '\'',
|
']', '}', ';', '\'',
|
||||||
',', '.', ' ', '\t',
|
',', '.', ' ', '\t',
|
||||||
'®', '™',
|
#'®', '™',
|
||||||
])
|
])
|
||||||
|
|
||||||
def create_safe_name(app_name : str):
|
def create_safe_name(app_name : str):
|
||||||
safe_name = ''.join(c for c in f'{app_name}' if c.isalnum() or c in ALLOWED_CHARS)\
|
safe_name = ''.join(c for c in f'{app_name}' if c.isalnum() or c in ALLOWED_CHARS)\
|
||||||
.rstrip()\
|
.rstrip()\
|
||||||
.rstrip('.')\
|
.rstrip('.')\
|
||||||
.replace('\t', ' ')
|
.replace(r'\t', ' ')
|
||||||
safe_name = re.sub('\s\s+', ' ', safe_name)
|
safe_name = re.sub(r'\s\s+', ' ', safe_name)
|
||||||
return safe_name
|
return safe_name
|
||||||
|
@ -95,10 +95,13 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
_game_found=True
|
_game_found=True
|
||||||
|
|
||||||
|
print(f"[ ] Searching SCX content...")
|
||||||
|
|
||||||
for line in app_scx_line:
|
for line in app_scx_line:
|
||||||
if 'Game not found' in line:
|
if 'Game not found' in line:
|
||||||
shutil.rmtree(os.path.join(base_out_dir, 'steam_misc\\app_scx'))
|
shutil.rmtree(os.path.join(base_out_dir, 'steam_misc\\app_scx'))
|
||||||
_game_found=False
|
_game_found=False
|
||||||
|
print(f"[?] __ no SCX content found --- nothing downloaded to <OUT_DIR>\\steam_misc\\app_scx folder")
|
||||||
break
|
break
|
||||||
|
|
||||||
if ('class="tracking-wider font-league-gothic"' in line) and ('<a href="' in line):
|
if ('class="tracking-wider font-league-gothic"' in line) and ('<a href="' in line):
|
||||||
@ -242,7 +245,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _trading_cards != line_series_name_safe:
|
if _trading_cards != line_series_name_safe:
|
||||||
if _trading_cards_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _trading_cards_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading trading cards...")
|
print(f"[ ] __ found '{line_series_name_safe}' trading cards...")
|
||||||
_trading_cards = line_series_name_safe
|
_trading_cards = line_series_name_safe
|
||||||
|
|
||||||
if 'data-gallery-type="cards"' in line:
|
if 'data-gallery-type="cards"' in line:
|
||||||
@ -296,7 +299,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
#if _foil_trading_cards != line_series_name_safe:
|
#if _foil_trading_cards != line_series_name_safe:
|
||||||
#if _foil_trading_cards_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
#if _foil_trading_cards_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
#print(f"[ ] __ {line_series_name_safe} --- downloading foil trading cards...")
|
#print(f"[ ] __ found '{line_series_name_safe}' foil trading cards...")
|
||||||
#_foil_trading_cards = line_series_name_safe
|
#_foil_trading_cards = line_series_name_safe
|
||||||
|
|
||||||
if 'data-gallery-type="foil-cards"' in line:
|
if 'data-gallery-type="foil-cards"' in line:
|
||||||
@ -340,7 +343,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _backgrounds != line_series_name_safe:
|
if _backgrounds != line_series_name_safe:
|
||||||
if _backgrounds_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _backgrounds_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading backgrounds...")
|
print(f"[ ] __ found '{line_series_name_safe}' backgrounds...")
|
||||||
_backgrounds = line_series_name_safe
|
_backgrounds = line_series_name_safe
|
||||||
|
|
||||||
if 'data-gallery-type="backgrounds"' in line:
|
if 'data-gallery-type="backgrounds"' in line:
|
||||||
@ -386,7 +389,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _badges != line_series_name_safe:
|
if _badges != line_series_name_safe:
|
||||||
if _badges_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _badges_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading badges...")
|
print(f"[ ] __ found '{line_series_name_safe}' badges...")
|
||||||
_badges = line_series_name_safe
|
_badges = line_series_name_safe
|
||||||
|
|
||||||
if 'class="sm:h-[80px]"' in line:
|
if 'class="sm:h-[80px]"' in line:
|
||||||
@ -418,7 +421,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
#if _foil_badges != line_series_name_safe:
|
#if _foil_badges != line_series_name_safe:
|
||||||
#if _foil_badges_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
#if _foil_badges_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
#print(f"[ ] __ {line_series_name_safe} --- downloading foil badges...")
|
#print(f"[ ] __ found '{line_series_name_safe}' foil badges...")
|
||||||
#_foil_badges = line_series_name_safe
|
#_foil_badges = line_series_name_safe
|
||||||
|
|
||||||
if 'class="sm:h-[80px]"' in line:
|
if 'class="sm:h-[80px]"' in line:
|
||||||
@ -450,7 +453,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _emoticons != line_series_name_safe:
|
if _emoticons != line_series_name_safe:
|
||||||
if _emoticons_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _emoticons_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading emoticons...")
|
print(f"[ ] __ found '{line_series_name_safe}' emoticons...")
|
||||||
_emoticons = line_series_name_safe
|
_emoticons = line_series_name_safe
|
||||||
|
|
||||||
if 'class="sm:h-[54px]"' in line:
|
if 'class="sm:h-[54px]"' in line:
|
||||||
@ -504,7 +507,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _animated_stickers != line_series_name_safe:
|
if _animated_stickers != line_series_name_safe:
|
||||||
if _animated_stickers_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _animated_stickers_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading animated stickers...")
|
print(f"[ ] __ found '{line_series_name_safe}' animated stickers...")
|
||||||
_animated_stickers = line_series_name_safe
|
_animated_stickers = line_series_name_safe
|
||||||
|
|
||||||
if 'Animated" class=' in line:
|
if 'Animated" class=' in line:
|
||||||
@ -559,7 +562,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _animated_backgrounds != line_series_name_safe:
|
if _animated_backgrounds != line_series_name_safe:
|
||||||
if _animated_backgrounds_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _animated_backgrounds_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading animated backgrounds...")
|
print(f"[ ] __ found '{line_series_name_safe}' animated backgrounds...")
|
||||||
_animated_backgrounds = line_series_name_safe
|
_animated_backgrounds = line_series_name_safe
|
||||||
|
|
||||||
if 'class="sm:h-[99px] md:h-[87px] lg:h-[75px] xl:h-[83px] 2xl:h-[88px]"' in line:
|
if 'class="sm:h-[99px] md:h-[87px] lg:h-[75px] xl:h-[83px] 2xl:h-[88px]"' in line:
|
||||||
@ -628,7 +631,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _animated_mini_backgrounds != line_series_name_safe:
|
if _animated_mini_backgrounds != line_series_name_safe:
|
||||||
if _animated_mini_backgrounds_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _animated_mini_backgrounds_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading animated mini backgrounds...")
|
print(f"[ ] __ found '{line_series_name_safe}' animated mini backgrounds...")
|
||||||
_animated_mini_backgrounds = line_series_name_safe
|
_animated_mini_backgrounds = line_series_name_safe
|
||||||
|
|
||||||
if 'class="sm:h-[148px] md:h-[130px] lg:h-[112px] xl:h-[123px] 2xl:h-[132px]"' in line:
|
if 'class="sm:h-[148px] md:h-[130px] lg:h-[112px] xl:h-[123px] 2xl:h-[132px]"' in line:
|
||||||
@ -697,7 +700,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _avatar_frames != line_series_name_safe:
|
if _avatar_frames != line_series_name_safe:
|
||||||
if _avatar_frames_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _avatar_frames_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading avatar frames...")
|
print(f"[ ] __ found '{line_series_name_safe}' avatar frames...")
|
||||||
_avatar_frames = line_series_name_safe
|
_avatar_frames = line_series_name_safe
|
||||||
|
|
||||||
if '>Animation<' in line:
|
if '>Animation<' in line:
|
||||||
@ -753,7 +756,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _animated_avatars != line_series_name_safe:
|
if _animated_avatars != line_series_name_safe:
|
||||||
if _animated_avatars_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _animated_avatars_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading animated avatars...")
|
print(f"[ ] __ found '{line_series_name_safe}' animated avatars...")
|
||||||
_animated_avatars = line_series_name_safe
|
_animated_avatars = line_series_name_safe
|
||||||
|
|
||||||
if '>Animation<' in line:
|
if '>Animation<' in line:
|
||||||
@ -809,7 +812,7 @@ def download_scx(base_out_dir : str, appid : int):
|
|||||||
|
|
||||||
if _profiles != line_series_name_safe:
|
if _profiles != line_series_name_safe:
|
||||||
if _profiles_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
if _profiles_series == line_series_count: # this fixes duplicating message for last found 'section' in html source, after finding a new 'series'
|
||||||
print(f"[ ] __ {line_series_name_safe} --- downloading profiles...")
|
print(f"[ ] __ found '{line_series_name_safe}' profiles...")
|
||||||
_profiles = line_series_name_safe
|
_profiles = line_series_name_safe
|
||||||
|
|
||||||
if 'class="sm:h-[166px] md:h-[146px] lg:h-[126px] xl:h-[138px] 2xl:h-[148px]"' in line:
|
if 'class="sm:h-[166px] md:h-[146px] lg:h-[126px] xl:h-[138px] 2xl:h-[148px]"' in line:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,3 @@
|
|||||||
@echo off
|
@echo off
|
||||||
set /p arg="Generate Emu Config for Steam AppId: "
|
set /p arg="Generate Emu Config for Steam AppId: "
|
||||||
generate_emu_config.exe -cdx -acw -clr -anon %arg%
|
generate_emu_config.exe -cdx -rne -acw -clr -anon %arg%
|
@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
set /p arg="Generate Emu Config for Steam AppId: "
|
||||||
|
generate_emu_config.exe -img -scr -vids_low -vids_max -scx -cdx -rne -acw -clr %arg%
|
@ -1,3 +1,3 @@
|
|||||||
@echo off
|
@echo off
|
||||||
set /p arg="Generate Emu Config for Steam AppId: "
|
set /p arg="Generate Emu Config for Steam AppId: "
|
||||||
generate_emu_config.exe -cdx -acw -clr %arg%
|
generate_emu_config.exe -cdx -rne -acw -clr %arg%
|
@ -0,0 +1,167 @@
|
|||||||
|
[General]
|
||||||
|
|
||||||
|
# 0 - Show Advanced Run window
|
||||||
|
# 1 - Skip Advanced Run window
|
||||||
|
AutoRun=1
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1 - Run .EXE File
|
||||||
|
# 2 - ShellExecute - Open the specified file, folder or URL with the default program
|
||||||
|
# 3 - Command Prompt - Execute command or batch file of Windows Command Prompt (.BAT, .CMD)
|
||||||
|
# 4 - PowerShell Command - Execute the specified PowerShell command
|
||||||
|
# 5 - PowerShell Script File - Run the specified PowerShell script (.PS1)
|
||||||
|
RunMode=3
|
||||||
|
|
||||||
|
# open, edit, explore, print - only for RunMode 2
|
||||||
|
ShellExecuteAction=open
|
||||||
|
|
||||||
|
# Program to Run - only for RunMode 1. For RunMode 2, 3, 4, 5 use CommandLine
|
||||||
|
EXEFilename=
|
||||||
|
|
||||||
|
# Command-line arguments, file to ShellExecute, Command Prompt / PowerShell file to run or Command Prompt / PowerShell command string to execute
|
||||||
|
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||||
|
CommandLine=.\bat\generate_emu_config.exe_test.bat & pause
|
||||||
|
|
||||||
|
# Start Directory - make sure any paths in CommandLine are relative to the start directory
|
||||||
|
StartDirectory=.\
|
||||||
|
|
||||||
|
# AdvancedRun process will wait in the background until the process executed by AdvancedRun is terminated, 0 - disabled, 1 -enabled
|
||||||
|
WaitProcess=1
|
||||||
|
|
||||||
|
# Process Priority Class:
|
||||||
|
# 64 - low, 32 - normal, 128 - high, 256 - realtime, 16384 - below normal, 32768 - above normal
|
||||||
|
PriorityClass=32
|
||||||
|
|
||||||
|
# Command Window Mode - only for RunMode 3, 4, 5
|
||||||
|
# 1 - Leave window opened after executing commands (same as 'CMD /K'), 2 - Close window after executing commands (same as 'CMD /C') - only for RunMode 3, 4, 5
|
||||||
|
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||||
|
CommandWindowMode=2
|
||||||
|
|
||||||
|
# Main window state
|
||||||
|
# 0 - hidden, 1 - normal, 2 - minimized, 3 - maximized
|
||||||
|
WindowState=1
|
||||||
|
|
||||||
|
# Main window position
|
||||||
|
UseWindowPosition=0
|
||||||
|
WindowPosition=20,20
|
||||||
|
|
||||||
|
# Main window size
|
||||||
|
UseWindowSize=0
|
||||||
|
WindowSize=640,400
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# 1 - Current User - Allow UAC Elevation
|
||||||
|
# 2 - Current User - Without UAC Elevation
|
||||||
|
# 3 - Administrator (Force UAC Elevation)
|
||||||
|
# 4 - SYSTEM User
|
||||||
|
# 5 - User of the selected process
|
||||||
|
# 6 - Child of the selected process (Using code injection)
|
||||||
|
# 7 - Specified username and password
|
||||||
|
# 8 - TrustedInstaller
|
||||||
|
# 9 - Another logged-in user
|
||||||
|
# 10 - Network Service
|
||||||
|
# 11 - Local Service
|
||||||
|
RunAs=1
|
||||||
|
|
||||||
|
# Selected process name - only for RunAs 5, 6
|
||||||
|
RunAsProcessName=
|
||||||
|
|
||||||
|
# Specified username - only for RunAs 7, 9 (password can't be set in this .CFG file, so it's better to run with /RunAsUserName "username" /RunAsPassword "password" parameters instead)
|
||||||
|
RunAsUserName=
|
||||||
|
|
||||||
|
# Specified domain - only for RunAs 7
|
||||||
|
RunAsDomain=
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# Run on remote computer with temporary Windows service, 0 - disabled, 1 - enabled
|
||||||
|
RunFromService=0
|
||||||
|
|
||||||
|
# Remote computer name - only for RunFromService 1
|
||||||
|
ComputerName=
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# Use search path to find the program location if the full path is not specified, 0 - disabled, 1 - enabled
|
||||||
|
UseSearchPath=0
|
||||||
|
|
||||||
|
# Parse the environment variables inside the command-line string before passing it to the program
|
||||||
|
ParseVarCommandLine=0
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# Use process affinity mask, 0 - disabled, 1 - enabled
|
||||||
|
UseAffinityMask=0
|
||||||
|
|
||||||
|
# Set process affinity mask (space-delimited list) - e.g. '0 1 2 3' process runs only on first 4 cores
|
||||||
|
AffinityMask=0 1
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
# 0 - Compatibility mode disabled
|
||||||
|
# 1 - Windows 95
|
||||||
|
# 2 - Windows 98
|
||||||
|
# 3 - Windows NT 4.0 SP5
|
||||||
|
# 4 - Windows 2000
|
||||||
|
# 5 - Windows XP SP2
|
||||||
|
# 6 - Windows XP SP3
|
||||||
|
# 7 - Server 2003 SP1
|
||||||
|
# 8 - Server 2008 SP1
|
||||||
|
# 9 - Vista
|
||||||
|
# 10 - Vista SP1
|
||||||
|
# 11 - Vista SP2
|
||||||
|
# 12 - Windows 7
|
||||||
|
# 13 - Windows 8
|
||||||
|
OSCompatMode=0
|
||||||
|
|
||||||
|
# Use 1 to disable visual themes
|
||||||
|
CompatDisableVisualThemes=0
|
||||||
|
|
||||||
|
# Use 1 to disable desktop composition
|
||||||
|
CompatDisableDesktopComp=0
|
||||||
|
|
||||||
|
# Use 1 to run in 640 x 480 resolution
|
||||||
|
Compat640480=0
|
||||||
|
|
||||||
|
# Use 1 to disable full screen optimizations
|
||||||
|
CompatDisableFullScreenOpt=0
|
||||||
|
|
||||||
|
# 0 - Reduced colors disabled
|
||||||
|
# 1 - 8-bit, 256 colors
|
||||||
|
# 2 - 16-bit, 65536 colors
|
||||||
|
CompatColors=0
|
||||||
|
|
||||||
|
# 0 - High DPI scaling override disabled
|
||||||
|
# 1 - Application
|
||||||
|
# 2 - System
|
||||||
|
# 3 - System Enhanced
|
||||||
|
CompatHighDPI=0
|
||||||
|
|
||||||
|
# 1 - Use current system environment variables without any change
|
||||||
|
# 2 - Merge the following environment variables with the system variables
|
||||||
|
# 3 - Use only the following environment variables (ignore the system variables)
|
||||||
|
EnvironmentVariablesMode=1
|
||||||
|
|
||||||
|
# Advanced Run window position - only for AutoRun 0
|
||||||
|
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF D5 03 00 00 4B 04 00 00 A2 08 00 00 FC 07 00 00
|
||||||
|
|
||||||
|
[EnvironmentVariables]
|
||||||
|
|
||||||
|
# Advanced Run window position - only for AutoRun 0
|
||||||
|
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 78 03 00 00 FC 02 00 00 45 08 00 00 AD 06 00 00
|
||||||
|
|
||||||
|
# Number of environment variables to merge - only for EnvironmentVariablesMode 2, 3
|
||||||
|
Lines=0
|
||||||
|
|
||||||
|
# Merge the following environment variables, one by one on each line
|
||||||
|
Line1=
|
||||||
|
Line2=
|
||||||
|
Line3=
|
||||||
|
Line4=
|
||||||
|
Line5=
|
||||||
|
Line6=
|
||||||
|
Line7=
|
||||||
|
Line8=
|
||||||
|
Line9=
|
Binary file not shown.
@ -24,12 +24,20 @@ pyinstaller "controller_config_generator/parse_controller_vdf.py" --distpath "$o
|
|||||||
echo building parse_achievements_schema...
|
echo building parse_achievements_schema...
|
||||||
pyinstaller "stats_schema_achievement_gen/achievements_gen.py" --distpath "$out_dir" -y --clean --onedir --name "parse_achievements_schema" --noupx --console -i "NONE" --workpath "$build_temp_dir" --specpath "$build_temp_dir" || exit 1
|
pyinstaller "stats_schema_achievement_gen/achievements_gen.py" --distpath "$out_dir" -y --clean --onedir --name "parse_achievements_schema" --noupx --console -i "NONE" --workpath "$build_temp_dir" --specpath "$build_temp_dir" || exit 1
|
||||||
|
|
||||||
|
#cp -a "post_build" "$out_dir/generate_emu_config/post_build" # skip this, as it's only for Windows; will have to use a different 'post_build' folder for Linux
|
||||||
|
cp -a "_DEFAULT" "$out_dir/generate_emu_config/_DEFAULT"
|
||||||
|
|
||||||
cp -f "steam_default_icon_locked.jpg" "$out_dir/generate_emu_config"
|
cp -f "steam_default_icon_locked.jpg" "$out_dir/generate_emu_config"
|
||||||
cp -f "steam_default_icon_unlocked.jpg" "$out_dir/generate_emu_config"
|
cp -f "steam_default_icon_unlocked.jpg" "$out_dir/generate_emu_config"
|
||||||
cp -f "README.md" "$out_dir/generate_emu_config"
|
cp -f "README.md" "$out_dir/generate_emu_config"
|
||||||
echo "Check the README" > "$out_dir/generate_emu_config/my_login.EXAMPLE.txt"
|
if [ -e top_owners_ids.txt ]
|
||||||
echo "Check the README" > "$out_dir/generate_emu_config/top_owners_ids.EXAMPLE.txt"
|
then
|
||||||
echo "You can use a website like: https://steamladder.com/games/" >> "$out_dir/generate_emu_config/top_owners_ids.EXAMPLE.txt"
|
cp -f "top_owners_ids.txt" "$out_dir/generate_emu_config"
|
||||||
|
else
|
||||||
|
echo "Check the README" > "$out_dir/generate_emu_config/my_login.EXAMPLE.txt"
|
||||||
|
echo "Check the README" > "$out_dir/generate_emu_config/top_owners_ids.EXAMPLE.txt"
|
||||||
|
echo "You can use a website like: https://steamladder.com/games/" >> "$out_dir/generate_emu_config/top_owners_ids.EXAMPLE.txt"
|
||||||
|
fi
|
||||||
|
|
||||||
echo;
|
echo;
|
||||||
echo =============
|
echo =============
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
steam[client]
|
steam[client] @ git+https://github.com/Sak32009/steam_py_fork.git@fix-cm-servers
|
||||||
pyinstaller
|
pyinstaller
|
||||||
requests
|
requests
|
||||||
certifi
|
certifi
|
||||||
|
@ -122,9 +122,9 @@ def generate_stats_achievements(
|
|||||||
if output_stats:
|
if output_stats:
|
||||||
with open(os.path.join(config_directory, "stats.txt"), 'wt', encoding='utf-8') as f:
|
with open(os.path.join(config_directory, "stats.txt"), 'wt', encoding='utf-8') as f:
|
||||||
f.writelines(output_stats)
|
f.writelines(output_stats)
|
||||||
print(f"[ ] Found {len(output_stats)} stats --- writing to 'stats.txt'")
|
print(f"[ ] Found {len(output_stats)} stats --- writing to <OUT_DIR>\\steam_settings\\stats.txt'")
|
||||||
else:
|
else:
|
||||||
print(f"[?] No stats found - skip creating 'stats.txt'")
|
print(f"[?] No stats found - skip creating <OUT_DIR>\\steam_settings\\stats.txt")
|
||||||
|
|
||||||
return (achievements_out, stats_out,
|
return (achievements_out, stats_out,
|
||||||
copy_default_unlocked_img, copy_default_locked_img)
|
copy_default_unlocked_img, copy_default_locked_img)
|
||||||
|
@ -1,250 +1,250 @@
|
|||||||
76561198028121353
|
76561198028121353
|
||||||
76561197979911851
|
76561197979911851
|
||||||
|
76561198017975643
|
||||||
76561197993544755
|
76561197993544755
|
||||||
76561198355953202
|
76561198355953202
|
||||||
76561198001237877
|
76561198001237877
|
||||||
76561198237402290
|
76561198237402290
|
||||||
76561198355625888
|
|
||||||
76561198152618007
|
76561198152618007
|
||||||
|
76561198355625888
|
||||||
76561198213148949
|
76561198213148949
|
||||||
76561197969050296
|
76561197969050296
|
||||||
76561198217186687
|
76561198217186687
|
||||||
76561198037867621
|
76561198037867621
|
||||||
76561198017975643
|
|
||||||
76561198094227663
|
76561198094227663
|
||||||
76561198019712127
|
76561198019712127
|
||||||
76561197963550511
|
76561197963550511
|
||||||
76561198134044398
|
76561198134044398
|
||||||
76561198001678750
|
76561198001678750
|
||||||
76561197973009892
|
76561197973009892
|
||||||
76561197976597747
|
|
||||||
76561198044596404
|
76561198044596404
|
||||||
|
76561197976597747
|
||||||
76561197969810632
|
76561197969810632
|
||||||
|
76561198095049646
|
||||||
76561198085065107
|
76561198085065107
|
||||||
76561198864213876
|
76561198864213876
|
||||||
76561198095049646
|
|
||||||
76561197962473290
|
76561197962473290
|
||||||
76561198388522904
|
76561198388522904
|
||||||
76561198063574735
|
|
||||||
76561198033715344
|
76561198033715344
|
||||||
76561198313790296
|
|
||||||
76561197995070100
|
76561197995070100
|
||||||
|
76561198313790296
|
||||||
|
76561198063574735
|
||||||
76561197996432822
|
76561197996432822
|
||||||
76561197976968076
|
76561197976968076
|
||||||
76561198281128349
|
76561198281128349
|
||||||
76561198027233260
|
|
||||||
76561198154462478
|
76561198154462478
|
||||||
|
76561198027233260
|
||||||
76561198842864763
|
76561198842864763
|
||||||
76561198235911884
|
76561198010615256
|
||||||
|
76561198035900006
|
||||||
76561198122859224
|
76561198122859224
|
||||||
|
76561198235911884
|
||||||
76561198027214426
|
76561198027214426
|
||||||
76561197970825215
|
76561197970825215
|
||||||
76561198035900006
|
|
||||||
76561197968410781
|
76561197968410781
|
||||||
76561198407953371
|
|
||||||
76561198001221571
|
|
||||||
76561198104323854
|
76561198104323854
|
||||||
76561197979667190
|
76561198001221571
|
||||||
76561198256917957
|
76561198256917957
|
||||||
76561198008181611
|
76561198008181611
|
||||||
|
76561198407953371
|
||||||
76561198062901118
|
76561198062901118
|
||||||
76561198121398682
|
76561197979667190
|
||||||
76561198077213101
|
|
||||||
76561197974742349
|
76561197974742349
|
||||||
76561198096081579
|
76561198077213101
|
||||||
|
76561198121398682
|
||||||
76561198019009765
|
76561198019009765
|
||||||
76561199130977924
|
|
||||||
76561198139084236
|
|
||||||
76561197990233857
|
|
||||||
76561198118726910
|
|
||||||
76561197971011821
|
|
||||||
76561198124872187
|
|
||||||
76561198063728345
|
|
||||||
76561198119667710
|
76561198119667710
|
||||||
76561198808371265
|
76561197990233857
|
||||||
76561197992133229
|
76561199130977924
|
||||||
76561198077248235
|
76561198096081579
|
||||||
76561198005337430
|
76561198139084236
|
||||||
|
76561197971011821
|
||||||
|
76561198063728345
|
||||||
76561198082995144
|
76561198082995144
|
||||||
76561198045455280
|
76561197963534359
|
||||||
76561198048373585
|
76561198118726910
|
||||||
76561198109083829
|
76561198097945516
|
||||||
|
76561198124872187
|
||||||
|
76561198077248235
|
||||||
76561198326510209
|
76561198326510209
|
||||||
76561198152760885
|
76561198109083829
|
||||||
|
76561198808371265
|
||||||
|
76561198048373585
|
||||||
|
76561198005337430
|
||||||
|
76561198045455280
|
||||||
76561197981111953
|
76561197981111953
|
||||||
|
76561197992133229
|
||||||
|
76561198152760885
|
||||||
76561198037809069
|
76561198037809069
|
||||||
|
76561198382166453
|
||||||
76561198093753361
|
76561198093753361
|
||||||
76561199168919006
|
|
||||||
76561198396723427
|
76561198396723427
|
||||||
76561198040421250
|
76561199168919006
|
||||||
76561198017902347
|
|
||||||
76561198006391846
|
76561198006391846
|
||||||
76561198121336040
|
76561198040421250
|
||||||
76561198044387084
|
|
||||||
76561197994616562
|
76561197994616562
|
||||||
76561199353305847
|
76561198017902347
|
||||||
|
76561198044387084
|
||||||
76561198172367910
|
76561198172367910
|
||||||
|
76561199353305847
|
||||||
|
76561198121336040
|
||||||
|
76561197972951657
|
||||||
76561198251835488
|
76561198251835488
|
||||||
76561198021180815
|
|
||||||
76561198102767019
|
76561198102767019
|
||||||
|
76561198021180815
|
||||||
76561197976796589
|
76561197976796589
|
||||||
76561197992548975
|
76561197992548975
|
||||||
76561198890581618
|
76561198367471798
|
||||||
76561197972951657
|
|
||||||
76561198128158703
|
|
||||||
76561197965978376
|
76561197965978376
|
||||||
76561198047438206
|
|
||||||
76561197993312863
|
76561197993312863
|
||||||
|
76561198128158703
|
||||||
76561198015685843
|
76561198015685843
|
||||||
|
76561198047438206
|
||||||
76561197971026489
|
76561197971026489
|
||||||
76561198252374474
|
76561198252374474
|
||||||
76561197995008105
|
|
||||||
76561199173688191
|
|
||||||
76561197984235967
|
|
||||||
76561198031837797
|
|
||||||
76561198417144062
|
|
||||||
76561198008797636
|
|
||||||
76561198020125851
|
|
||||||
76561198039492467
|
|
||||||
76561198061393233
|
76561198061393233
|
||||||
76561198028011423
|
76561199173688191
|
||||||
|
76561198008797636
|
||||||
|
76561197995008105
|
||||||
|
76561197984235967
|
||||||
|
76561198417144062
|
||||||
|
76561197978640923
|
||||||
|
76561198219343843
|
||||||
|
76561197982718230
|
||||||
|
76561198031837797
|
||||||
|
76561198039492467
|
||||||
|
76561198020125851
|
||||||
76561198192399786
|
76561198192399786
|
||||||
76561198996604130
|
76561198028011423
|
||||||
76561198367471798
|
76561198318111105
|
||||||
76561197969148931
|
|
||||||
76561198029503957
|
|
||||||
76561198155124847
|
76561198155124847
|
||||||
76561198168877244
|
76561198168877244
|
||||||
|
76561198105279930
|
||||||
|
76561197988664525
|
||||||
|
76561198996604130
|
||||||
|
76561197969148931
|
||||||
76561198035552258
|
76561198035552258
|
||||||
76561198015992850
|
76561198015992850
|
||||||
|
76561198050474710
|
||||||
|
76561198029503957
|
||||||
76561198026221141
|
76561198026221141
|
||||||
76561198025653291
|
76561198025653291
|
||||||
76561197982718230
|
|
||||||
76561198219343843
|
|
||||||
76561198034213886
|
76561198034213886
|
||||||
76561197972378106
|
|
||||||
76561198318111105
|
|
||||||
76561198004332929
|
|
||||||
76561198018254158
|
|
||||||
76561197970246998
|
|
||||||
76561197997477460
|
|
||||||
76561198158932704
|
|
||||||
76561198269242105
|
|
||||||
76561198045540632
|
|
||||||
76561198294806446
|
|
||||||
76561197986240493
|
|
||||||
76561198105279930
|
|
||||||
76561198043532513
|
|
||||||
76561197973230221
|
|
||||||
76561198003041763
|
|
||||||
76561198020746864
|
|
||||||
76561198054210948
|
|
||||||
76561198096632451
|
76561198096632451
|
||||||
76561197962630138
|
76561197972378106
|
||||||
76561198029532782
|
76561197997477460
|
||||||
76561198086250077
|
76561198054210948
|
||||||
76561198120120943
|
|
||||||
76561198111433283
|
76561198111433283
|
||||||
76561198046642155
|
76561198004332929
|
||||||
76561198048151962
|
76561198045540632
|
||||||
76561198072936438
|
76561198043532513
|
||||||
76561198124865933
|
76561199080934614
|
||||||
|
76561197970246998
|
||||||
|
76561197986240493
|
||||||
|
76561198029532782
|
||||||
|
76561198018254158
|
||||||
|
76561197973230221
|
||||||
|
76561198020746864
|
||||||
|
76561198158932704
|
||||||
|
76561198086250077
|
||||||
|
76561198269242105
|
||||||
|
76561198294806446
|
||||||
|
76561198031164839
|
||||||
76561198019555404
|
76561198019555404
|
||||||
76561198075477583
|
76561198048151962
|
||||||
76561198042781427
|
76561198003041763
|
||||||
76561198443388781
|
76561198025391492
|
||||||
|
76561197962630138
|
||||||
|
76561198072936438
|
||||||
|
76561198120120943
|
||||||
76561197984010356
|
76561197984010356
|
||||||
76561198042965266
|
76561198042965266
|
||||||
76561198031164839
|
76561198046642155
|
||||||
76561198025391492
|
|
||||||
76561198122276418
|
|
||||||
76561197981228012
|
|
||||||
76561198019841907
|
|
||||||
76561198106206019
|
|
||||||
76561197981027062
|
|
||||||
76561197992105918
|
|
||||||
76561198104561325
|
|
||||||
76561198015856631
|
76561198015856631
|
||||||
76561197991699268
|
76561198124865933
|
||||||
76561198315929726
|
76561198042781427
|
||||||
|
76561198443388781
|
||||||
|
76561198426000196
|
||||||
76561198051725954
|
76561198051725954
|
||||||
76561198050474710
|
76561197992105918
|
||||||
|
76561198172925593
|
||||||
|
76561198071709714
|
||||||
|
76561197981228012
|
||||||
|
76561197981027062
|
||||||
|
76561198122276418
|
||||||
|
76561198019841907
|
||||||
76561197985091630
|
76561197985091630
|
||||||
|
76561199492215670
|
||||||
|
76561198106206019
|
||||||
|
76561198090111762
|
||||||
|
76561198104561325
|
||||||
|
76561197991699268
|
||||||
|
76561198072361453
|
||||||
|
76561198027066612
|
||||||
|
76561198032614383
|
||||||
76561198844130640
|
76561198844130640
|
||||||
|
76561198106145311
|
||||||
|
76561198079227501
|
||||||
|
76561198093579202
|
||||||
|
76561198315929726
|
||||||
|
76561198171791210
|
||||||
76561198264362271
|
76561198264362271
|
||||||
76561198846208086
|
76561198846208086
|
||||||
76561198032614383
|
|
||||||
76561198079227501
|
|
||||||
76561198026306582
|
|
||||||
76561198009596142
|
|
||||||
76561198056971296
|
|
||||||
76561197991613008
|
76561197991613008
|
||||||
|
76561198026306582
|
||||||
|
76561197973701057
|
||||||
76561198028428529
|
76561198028428529
|
||||||
76561198427572372
|
76561198427572372
|
||||||
76561198071709714
|
76561197983517848
|
||||||
|
76561198085238363
|
||||||
|
76561198070220549
|
||||||
76561198101049562
|
76561198101049562
|
||||||
76561197969365800
|
76561197969365800
|
||||||
76561198093579202
|
|
||||||
76561198171791210
|
|
||||||
76561198413266831
|
76561198413266831
|
||||||
76561198165450871
|
76561198015514779
|
||||||
76561198085238363
|
|
||||||
76561198106145311
|
|
||||||
76561197973701057
|
|
||||||
76561198811114019
|
76561198811114019
|
||||||
|
76561198165450871
|
||||||
|
76561197994575642
|
||||||
76561198034906703
|
76561198034906703
|
||||||
76561198119915053
|
76561198119915053
|
||||||
76561198079896896
|
76561198079896896
|
||||||
76561197988052802
|
|
||||||
76561198172925593
|
|
||||||
76561197970545939
|
|
||||||
76561198004532679
|
|
||||||
76561198008549198
|
76561198008549198
|
||||||
76561198831075066
|
76561197988052802
|
||||||
|
76561198004532679
|
||||||
76561198002535276
|
76561198002535276
|
||||||
|
76561197970545939
|
||||||
76561197977920776
|
76561197977920776
|
||||||
76561198015514779
|
|
||||||
76561198072361453
|
|
||||||
76561198070220549
|
|
||||||
76561197970307937
|
|
||||||
76561197982273259
|
|
||||||
76561197978640923
|
|
||||||
76561198090111762
|
|
||||||
76561198007200913
|
76561198007200913
|
||||||
|
76561197984605215
|
||||||
|
76561198831075066
|
||||||
76561197970970678
|
76561197970970678
|
||||||
|
76561197982273259
|
||||||
|
76561197970307937
|
||||||
|
76561198413088851
|
||||||
76561197970360549
|
76561197970360549
|
||||||
76561198051740093
|
76561198051740093
|
||||||
|
76561197966617426
|
||||||
|
76561198356842617
|
||||||
|
76561198025111129
|
||||||
76561197996825541
|
76561197996825541
|
||||||
76561197967716198
|
76561197967716198
|
||||||
76561198027066612
|
76561197975329196
|
||||||
76561197962850521
|
|
||||||
76561197998058239
|
76561197998058239
|
||||||
76561197966617426
|
76561198027668357
|
||||||
|
76561197962850521
|
||||||
|
76561198258304011
|
||||||
76561198098314980
|
76561198098314980
|
||||||
76561197984605215
|
76561198127957838
|
||||||
|
76561198060520130
|
||||||
76561198035612474
|
76561198035612474
|
||||||
76561198025111129
|
|
||||||
76561198318547224
|
76561198318547224
|
||||||
76561198034503074
|
76561198020810038
|
||||||
76561198426000196
|
|
||||||
76561198356842617
|
|
||||||
76561198150467988
|
|
||||||
76561198080773680
|
76561198080773680
|
||||||
76561198083977059
|
|
||||||
76561198286209051
|
|
||||||
76561198033967307
|
76561198033967307
|
||||||
76561197988445370
|
76561198034503074
|
||||||
76561198217979953
|
76561198150467988
|
||||||
76561198026278913
|
|
||||||
76561198321551799
|
|
||||||
76561199080934614
|
|
||||||
76561197963735863
|
|
||||||
76561197970127197
|
|
||||||
76561197994153029
|
76561197994153029
|
||||||
76561197992357639
|
76561198026278913
|
||||||
76561198070585472
|
76561198217979953
|
||||||
76561198026921217
|
76561197988445370
|
||||||
76561197983517848
|
76561198083977059
|
||||||
76561198027904347
|
|
||||||
76561198002536379
|
|
||||||
76561198027917594
|
|
||||||
|
@ -7,8 +7,9 @@
|
|||||||
// these are defined in dll.cpp at the top like this:
|
// these are defined in dll.cpp at the top like this:
|
||||||
// static char old_xxx[128] = ...
|
// static char old_xxx[128] = ...
|
||||||
const static std::vector<std::string> interface_patterns = {
|
const static std::vector<std::string> interface_patterns = {
|
||||||
R"(STEAMAPPS_INTERFACE_VERSION\d+)",
|
R"(SteamAppDisableUpdate\d+)",
|
||||||
R"(STEAMAPPLIST_INTERFACE_VERSION\d+)",
|
R"(STEAMAPPLIST_INTERFACE_VERSION\d+)",
|
||||||
|
R"(STEAMAPPS_INTERFACE_VERSION\d+)",
|
||||||
R"(STEAMAPPTICKET_INTERFACE_VERSION\d+)",
|
R"(STEAMAPPTICKET_INTERFACE_VERSION\d+)",
|
||||||
R"(SteamClient\d+)",
|
R"(SteamClient\d+)",
|
||||||
R"(STEAMCONTROLLER_INTERFACE_VERSION)",
|
R"(STEAMCONTROLLER_INTERFACE_VERSION)",
|
||||||
|
@ -152,7 +152,7 @@ def convert_to_ini(global_settings: str):
|
|||||||
elif file == 'immediate_gameserver_stats.txt':
|
elif file == 'immediate_gameserver_stats.txt':
|
||||||
configs_main["main::general"]["immediate_gameserver_stats"] = 1 #updated ini through ConfigObj
|
configs_main["main::general"]["immediate_gameserver_stats"] = 1 #updated ini through ConfigObj
|
||||||
elif file == 'is_beta_branch.txt':
|
elif file == 'is_beta_branch.txt':
|
||||||
configs_main["main::general"]["is_beta_branch"] = 1 #updated ini through ConfigObj
|
configs_app["app::general"]["is_beta_branch"] = 1 #updated ini through ConfigObj
|
||||||
elif file == 'matchmaking_server_details_via_source_query.txt':
|
elif file == 'matchmaking_server_details_via_source_query.txt':
|
||||||
configs_main["main::general"]["matchmaking_server_details_via_source_query"] = 1 #updated ini through ConfigObj
|
configs_main["main::general"]["matchmaking_server_details_via_source_query"] = 1 #updated ini through ConfigObj
|
||||||
elif file == 'matchmaking_server_list_actual_type.txt':
|
elif file == 'matchmaking_server_list_actual_type.txt':
|
||||||
|
@ -18,6 +18,9 @@ source "./$venv/bin/activate"
|
|||||||
echo building migrate_gse...
|
echo building migrate_gse...
|
||||||
pyinstaller "main.py" --distpath "$out_dir" -y --clean --onedir --name "migrate_gse" --noupx --console -i "NONE" --workpath "$build_temp_dir" --specpath "$build_temp_dir" || exit 1
|
pyinstaller "main.py" --distpath "$out_dir" -y --clean --onedir --name "migrate_gse" --noupx --console -i "NONE" --workpath "$build_temp_dir" --specpath "$build_temp_dir" || exit 1
|
||||||
|
|
||||||
|
#cp -a "post_build" "$out_dir/generate_emu_config/post_build" # skip this, as it's only for Windows; will have to use a different 'post_build' folder for Linux
|
||||||
|
cp -a "_DEFAULT" "$out_dir/generate_emu_config/_DEFAULT"
|
||||||
|
|
||||||
cp -f "README.md" "$out_dir/migrate_gse"
|
cp -f "README.md" "$out_dir/migrate_gse"
|
||||||
|
|
||||||
echo;
|
echo;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user