mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2025-08-17 00:35:55 +00:00
Auto name request + parser
This commit is contained in:
parent
b227db5def
commit
f286a95d8e
@ -9,6 +9,6 @@ project(BeamMP-Launcher)
|
|||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
|
||||||
add_executable(BeamMP-Launcher main.cpp proxy.cpp Security.cpp http.cpp Discord.cpp UpdateCheck.cpp CoreNetwork.cpp Resources.cpp ProxyParser.cpp)
|
add_executable(BeamMP-Launcher main.cpp proxy.cpp Security.cpp http.cpp Discord.cpp UpdateCheck.cpp CoreNetwork.cpp Resources.cpp)
|
||||||
|
|
||||||
target_link_libraries(BeamMP-Launcher discord-rpc libcurl_a)
|
target_link_libraries(BeamMP-Launcher discord-rpc libcurl_a)
|
12
Discord.cpp
12
Discord.cpp
@ -16,7 +16,7 @@ static const char* APPLICATION_ID = "345229890980937739";
|
|||||||
static int FrustrationLevel = 0;
|
static int FrustrationLevel = 0;
|
||||||
static int64_t StartTime;
|
static int64_t StartTime;
|
||||||
static int SendPresence = 1;
|
static int SendPresence = 1;
|
||||||
static std::vector<std::string> DiscordInfo;
|
static std::vector<std::string> LocalInfo;
|
||||||
|
|
||||||
static void updateDiscordPresence()
|
static void updateDiscordPresence()
|
||||||
{
|
{
|
||||||
@ -51,9 +51,9 @@ static void handleDiscordReady(const DiscordUser* connectedUser)
|
|||||||
connectedUser->username,
|
connectedUser->username,
|
||||||
connectedUser->discriminator,
|
connectedUser->discriminator,
|
||||||
connectedUser->userId);*/
|
connectedUser->userId);*/
|
||||||
DiscordInfo.emplace_back(connectedUser->username);
|
LocalInfo.emplace_back(connectedUser->username);
|
||||||
DiscordInfo.emplace_back(connectedUser->discriminator);
|
LocalInfo.emplace_back(connectedUser->discriminator);
|
||||||
DiscordInfo.emplace_back(connectedUser->userId);
|
LocalInfo.emplace_back(connectedUser->userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleDiscordDisconnected(int errcode, const char* message)
|
static void handleDiscordDisconnected(int errcode, const char* message)
|
||||||
@ -129,7 +129,7 @@ static std::vector<std::string> Loop()
|
|||||||
|
|
||||||
StartTime = time(0);
|
StartTime = time(0);
|
||||||
|
|
||||||
while (DiscordInfo.size() < 3) {
|
while (LocalInfo.size() < 3) {
|
||||||
//updateDiscordPresence();
|
//updateDiscordPresence();
|
||||||
|
|
||||||
#ifdef DISCORD_DISABLE_IO_THREAD
|
#ifdef DISCORD_DISABLE_IO_THREAD
|
||||||
@ -138,7 +138,7 @@ static std::vector<std::string> Loop()
|
|||||||
Discord_RunCallbacks();
|
Discord_RunCallbacks();
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||||
}
|
}
|
||||||
return DiscordInfo;
|
return LocalInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> Discord_Main()
|
std::vector<std::string> Discord_Main()
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
///
|
|
||||||
/// Created by Anonymous275 on 4/16/2020
|
|
||||||
///
|
|
||||||
|
|
11
main.cpp
11
main.cpp
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
std::string HTTP_REQUEST(const std::string&url,int port);
|
std::string HTTP_REQUEST(const std::string&url,int port);
|
||||||
std::vector<std::string> Discord_Main();
|
std::vector<std::string> Discord_Main();
|
||||||
|
std::vector<std::string> GlobalInfo;
|
||||||
std::vector<std::string> Check();
|
std::vector<std::string> Check();
|
||||||
std::string getHardwareID();
|
std::string getHardwareID();
|
||||||
void CheckForUpdates(const std::string& CV);
|
void CheckForUpdates(const std::string& CV);
|
||||||
@ -79,7 +80,7 @@ std::string CheckVer(const std::string &path){
|
|||||||
void SyncResources(const std::string&IP,int Port);
|
void SyncResources(const std::string&IP,int Port);
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
std::string ver = "0.38", Path = CheckDir(argv[0],ver),HTTP_Result;
|
std::string ver = "0.40", Path = CheckDir(argv[0],ver),HTTP_Result;
|
||||||
CheckForUpdates(ver); //Update Check
|
CheckForUpdates(ver); //Update Check
|
||||||
|
|
||||||
//Security
|
//Security
|
||||||
@ -88,10 +89,10 @@ int main(int argc, char* argv[])
|
|||||||
std::cout << "You own BeamNG on this machine!" << std::endl;
|
std::cout << "You own BeamNG on this machine!" << std::endl;
|
||||||
std::cout << "Game Ver : " << CheckVer(GamePath) << std::endl;
|
std::cout << "Game Ver : " << CheckVer(GamePath) << std::endl;
|
||||||
|
|
||||||
|
GlobalInfo = Discord_Main();
|
||||||
std::cout << "Name : " << Discord_Main().at(0) << std::endl;
|
std::cout << "Name : " << GlobalInfo.at(0) << std::endl;
|
||||||
std::cout << "Discriminator : " << Discord_Main().at(1) << std::endl;
|
std::cout << "Discriminator : " << GlobalInfo.at(1) << std::endl;
|
||||||
std::cout << "Unique ID : " << Discord_Main().at(2) << std::endl;
|
std::cout << "Unique ID : " << GlobalInfo.at(2) << std::endl;
|
||||||
|
|
||||||
std::cout << "HWID : " << getHardwareID() << std::endl;
|
std::cout << "HWID : " << getHardwareID() << std::endl;
|
||||||
|
|
||||||
|
22
proxy.cpp
22
proxy.cpp
@ -19,12 +19,12 @@ typedef struct {
|
|||||||
ENetHost *host;
|
ENetHost *host;
|
||||||
ENetPeer *peer;
|
ENetPeer *peer;
|
||||||
} Client;
|
} Client;
|
||||||
|
std::chrono::time_point<std::chrono::steady_clock> PingStart,PingEnd;
|
||||||
|
extern std::vector<std::string> GlobalInfo;
|
||||||
std::queue<std::string> RUDPData;
|
std::queue<std::string> RUDPData;
|
||||||
std::queue<std::string> RUDPToSend;
|
std::queue<std::string> RUDPToSend;
|
||||||
bool Terminate = false;
|
bool Terminate = false;
|
||||||
int ping = 0;
|
int ping = 0;
|
||||||
std::chrono::time_point<std::chrono::steady_clock> PingStart;
|
|
||||||
void CoreNetworkThread();
|
void CoreNetworkThread();
|
||||||
|
|
||||||
void AutoPing(ENetPeer*peer){
|
void AutoPing(ENetPeer*peer){
|
||||||
@ -34,12 +34,22 @@ void AutoPing(ENetPeer*peer){
|
|||||||
Sleep(1000);
|
Sleep(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void NameRespond(ENetPeer*peer){
|
||||||
|
std::string Packet = "NR" + GlobalInfo.at(0);
|
||||||
|
enet_peer_send(peer, 0, enet_packet_create(Packet.c_str(), Packet.length()+1, ENET_PACKET_FLAG_RELIABLE));
|
||||||
|
}
|
||||||
|
|
||||||
void RUDPParser(const std::string& Data){
|
void RUDPParser(const std::string& Data,ENetPeer*peer){
|
||||||
if(Data == "p"){
|
char Code = Data.at(0),SubCode = 0;
|
||||||
auto PingEnd = std::chrono::high_resolution_clock::now();
|
if(Data.length() > 1)SubCode = Data.at(1);
|
||||||
|
switch (Code) {
|
||||||
|
case 'p':
|
||||||
|
PingEnd = std::chrono::high_resolution_clock::now();
|
||||||
ping = std::chrono::duration_cast<std::chrono::milliseconds>(PingEnd-PingStart).count();
|
ping = std::chrono::duration_cast<std::chrono::milliseconds>(PingEnd-PingStart).count();
|
||||||
return;
|
return;
|
||||||
|
case 'N':
|
||||||
|
if(SubCode == 'R')NameRespond(peer);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
std::cout << "Received: " << Data << std::endl;
|
std::cout << "Received: " << Data << std::endl;
|
||||||
RUDPData.push(Data);
|
RUDPData.push(Data);
|
||||||
@ -56,7 +66,7 @@ void HandleEvent(ENetEvent event,Client client){
|
|||||||
event.peer->data = (void *)"Connected Server";
|
event.peer->data = (void *)"Connected Server";
|
||||||
break;
|
break;
|
||||||
case ENET_EVENT_TYPE_RECEIVE:
|
case ENET_EVENT_TYPE_RECEIVE:
|
||||||
RUDPParser((char*)event.packet->data);
|
RUDPParser((char*)event.packet->data,event.peer);
|
||||||
enet_packet_destroy(event.packet);
|
enet_packet_destroy(event.packet);
|
||||||
break;
|
break;
|
||||||
case ENET_EVENT_TYPE_DISCONNECT:
|
case ENET_EVENT_TYPE_DISCONNECT:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user