-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGameRoom_Open.cpp
More file actions
73 lines (58 loc) · 4.14 KB
/
GameRoom_Open.cpp
File metadata and controls
73 lines (58 loc) · 4.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "GameRoom_Open.hpp"
#include "Client.hpp"
#include <sstream>
/*
<iq to='masterserver@warface/pvp_pro_007_r1' id='uid00000035' type='get' from='1@warface/GameClient'
xmlns='jabber:client'>
<query
xmlns='urn:cryonline:k01' part_number='0' part_count='1' response_type='0'>
<gameroom_open room_name='room_name' team_id='0' status='0' class_id='2' group_id='' room_type='2' private='0' mission='309c5c0c-0ec2-438a-a18b-26efb45caf7e' friendly_fire='0' enemy_outlines='0' auto_team_balance='0' join_in_the_process='1' max_players='16' round_limit='0' preround_time='-1' inventory_slot='8796059467775' locked_spectator_camera='0' high_latency_autokick='1' overtime_mode='0' preset_weapon='0'>
<class_rifleman enabled='1' class_id='0'/>
<class_heavy enabled='1' class_id='1'/>
<class_engineer enabled='1' class_id='4'/>
<class_medic enabled='1' class_id='3'/>
<class_sniper enabled='1' class_id='2'/>
</gameroom_open>
</query>
</iq>
*/
std::string NodeToString2(pugi::xml_node node)
{
if (!node || !node.parent())
return "";
std::ostringstream ss;
node.print(ss, "", pugi::format_raw);
return ss.str();
}
namespace GameRoomOpen {
void Init(Client* client, IqClass* iq) {
//std::string test = "<data query_name='gameroom_open' compressedData='eNptVsuKIzcU/ZXa1arjerkewW4amkkIgTDMDNkKWXVta1xVqkgq9zirkEX22c5XDIRACEm+wf1HuVeS2253wzBd933uU15seA9aqZ6pEYbbBZGM6MgxZbuM07TKkqQpyjIrm7Ju6rLKYy+2hxFQIY6EVsaMHT8w/M+ule7NMk6CFuxhsM5VHBngRg2OGPfAWhDZPI6s2sGwjPMyz+q8SOp5fLsQSkNkgfeGmQdpxRbas8sBYS7j4+fjf8d/jv8evzz+evwSHf86/vH4C7L+JuJ3/Pjz8bd5UqRl0xRxNGq55xacE4IK2njsfGDGcm0dRRHZind8EBQQOb0cmAbeutyeWY18MnAGJTplAkifskeJUthLIxVmmGFiwcvpA3GptezA1eSM1uGQHgGis5MvqFoZ0HvQjjA72XVYtvSrJEFykGIXCvMieYEJ/RDg4LcxzneGDodODhAaXddVnpdNfvfA9ZoLmH2LJvedxGTiaKPVNIY2jhoMYIXQqMJsP42gZaCTKisazJkPO4IWRys+DKCxpu0G5UXWFE1ZZc38SdJzvXtVYKyW45WNho0MA7TpFDYqjqRhym5RP8h416kHasQ3vDMQz24Xs6uam3fgytiizBVaqE6R+ExEofaOCBCSKp1X8eyFWnahVjXlfJ6WmQv7zPeMJvp2YcDQLERhH86tdauHw7DB2nqOm0pmJbUtrYuirIoiSRFD3syLOi39lKR+epkh/86OuNkL7uUUIjgxGYtDO3KNKxatqX9td2BrGdRhgP7A1GRpPvzM88kqdrkgTvGjwgXBf9gCgi8cetob/um8MdQ5NQ0t62Qvrd9BDZ7lE7xJT5OJ+WPjhfVY52gqB9onpQ/MdAqta6xyMseTVFUVijsldtAyM4LAcirNBB017qJs5WbL8CbhdB4YJbDDLXH4FK4RhWa9auGEyIBlD8BHCv2sZjnVrJe+d+Ev28FhGa+LdVulSXuT1qv8pihEeVNDld20VdMmaZYlddXicvrK+dJMkuGNFMDOXNpfeGDBs6fdvt6ZQT3xmZn0Hs9Yx5Kcjqm1ctgs4xN35nTRtaUZwi7h+Ec+Pby2/jNcpbu3+zfMjZxjtmBEkEtB8ek601cckQj30LfDo3lCcYJFOg6S7Dltec/H7/rN+6D2Hm1Q1sr1Woqps1i0LddYFP9+kMsT5jwIqC9qzVp+oLv0dU5Tjc3T8hzU1cghttxgS6n9ajTuHOEQM04HvSpxTJKCzqO7X6i2vYgWR+uJTmh6faTV6iMOk9wDrgYXlnb7Gdutb3LKAJ8WPGIHt/Nny9vFvVYPwzvAa9qaiLpB95GwrLQafkaK8jKycwe9Ioyqa50OuXpDQ38/aU2ze/KC5ZzQMPMqgfthi9ls0RZjflCWd29B0yNMOxriXgbNEwfiFDife9oHz0tHofMP2ISX1kXaZHVSnM2J0dTFyR7JPEU51eIVeLPQvdsFTi6Nn9hye32bzE8Tb024nNfCvZIimMHAV114pq+0NA4DPiLCvjS3QLfRwqXnFJv7PV6GH1EaXnOFgLF9foiKCn8ENS6pCwcYhlR7biw+5P7P5SP+AhO9T+a1N+xKc/b0Oyx8n3+i/Q8BxU7c' originalSize='2482'/>";
//
//auto test_iq = iq->PrepareData(client, test);
//printf("%s\n", test_iq.c_str());
//client->sendPacket(client->clientSocket, std::vector<char>(test_iq.begin(), test_iq.end()));
//
//
//return;
if (client->Player->Room != NULL) {
client->Player->Room = NULL;
}
pugi::xml_document doc_Iq;
doc_Iq.load_string(client->Iq->data.c_str());
pugi::xml_node iqIn = doc_Iq.first_child();
std::string room_type = iqIn.attribute("room_type").value();
std::string room_name = iqIn.attribute("room_name").value();
std::string private_room = iqIn.attribute("private").value();
std::string auto_team_balance = iqIn.attribute("auto_team_balance").value();
std::string mission_key = iqIn.attribute("mission").value();
client->Player->OpenRoom(room_name);
client->Player->SetSettingsRoom(iqIn);
//GameRoom* room = new GameRoom();
pugi::xml_node gameroom_open = client->Player->SerializeRoom(client, iq->LocalName.c_str());
if (!gameroom_open) return;
std::string result = client->Iq->PrepareData(client, NodeToString2(gameroom_open));
printf("%s\n", result.c_str());
client->sendPacket(client->clientSocket, std::vector<char>(result.begin(), result.end()));
//client->Player->SyncRoom(client, iq);
}
}