private void HandleSendGameLogin(ProjectG client, ClientPacket packet, byte Key) { client.GetKey = Key; client.KeyLogin = client.GetKey; client.Response.Write(new byte[] { 0x02, 0x00 }); client.Response.WritePStr(client.GetLogin); client.Response.Write(client.GetUID); client.Response.Write(0); client.Response.Write(new byte[] { 0x96, 0x66, }); client.Response.WritePStr(client.GetAuth1); if (client.Login.PangyaVersion == EnumPangyaVersion.US) { client.Response.WritePStr("824.00");// is server version US client.Response.Write(new byte[] { 0xD2, 0xC9, 0x4A, 0x25, 0x00, 0x00, 0x00, 0x00, }); client.Response.WritePStr(client.GetAuth2); } if (client.Login.PangyaVersion == EnumPangyaVersion.TH) { packet.Skip(9); var ipAdress = packet.ReadPStr(); Console.WriteLine($"[PLAYER_ADRESS]: {ipAdress}"); client.Response.WritePStr("829.01");// is server version TH client.Response.Write(new byte[] { 0xC7, 0xD2, 0x4A, 0x25, 0x00, 0x00, 0x00, 0x00, }); client.Response.WritePStr(client.GetAuth2); client.Response.Write(new byte[] { 0x32, 0x33, 0x5D, 0x0D, 0x05, }); } client.SendResponse(); }
public override PClient OnConnectBot(TcpClient tcp) { ProjectG player = null; if (ServerType == FakeProjectG.Defines.ServerTypeEnum.Login) { player = new ProjectG(tcp) { Conn = this }; Clients.Add(player); } else if (ServerType == FakeProjectG.Defines.ServerTypeEnum.Game) { player = (ProjectG)Clients.First(); Clients.RemoveAt(0); player.Tcp = tcp; player.Conn = this; player.ServerType = FakeProjectG.Defines.ServerTypeEnum.Game; Clients.Add(player); } else if (ServerType == FakeProjectG.Defines.ServerTypeEnum.Message) { player = (ProjectG)Clients.First(); Clients.RemoveAt(0); player.Tcp = tcp; player.Conn = this; player.ServerType = FakeProjectG.Defines.ServerTypeEnum.Message; Clients.Add(player); } WriteConsole.WriteLine($"[BOT_{player.ServerType}_CONNECTED]: Sucess", ConsoleColor.Green); return(player); }
public void Handle(ProjectG client, MessengerResponseEnum packetID, ClientPacket packet) { WriteConsole.WriteLine($"[BOT_LOGIN_PACKET]: {packetID}", ConsoleColor.Cyan); switch (packetID) { case MessengerResponseEnum.PLAYER_CONNECTION: { var key = packet.Message[8]; Console.WriteLine("Key =>" + key); client.GetKey = key; client.Response.Write(new byte[] { 0x12, 0x00 }); client.Response.Write(client.GetUID); client.Response.Write(client.GetLogin); } break; default: { WriteConsole.WriteLine($"[BOT_MESSENGER_PACKETLOG]: {packet.GetLog()}", ConsoleColor.Cyan); packet.Save(); } break; } }
public void HandleSendClientEnterPapelShop(ProjectG player) { if (player.Pangs > 0) { player.Response.Write(new byte[] { 0x98, 0x00 }); } player.SendResponse(); }
public void SetPlayer(ProjectG projectG) { player = projectG; if (player != null) { SetText(); } }
private void HandleReadMacro(ProjectG client, ClientPacket packet) { var Macro = new string[8]; for (int i = 0; i < 8; i++) { Macro[i] = packet.ReadPStr(64); } client.Info.SetMacro(Macro); }
public void HandleSendClientSelectChannelID(ProjectG player) { var rnd = new Random(); player.Response.Write(new byte[] { 0x04, 0x00 }); player.Response.Write(player.Info.Lobby.ID); player.Response.Write((byte)rnd.Next(1, 255)); player.Response.Write((ushort)0x0700); player.Response.Write((byte)rnd.Next(1, 255)); player.Response.Write(new byte[] { 0x69, 0x69, 0x01 }); player.SendResponse(); }
public void HandleSendClientCreateRoom(ProjectG player, int VersusTime = 0, int TorneyTime = 0, byte MaxProjectG = 0, byte GameType = 0, byte TotalHoles = 0, byte Map = 0, byte Mode = 0, int natural = 0, string RomName = "Test", string RomPass = "") { player.Response.Write(new byte[] { 0x08, 0x00 }); player.Response.Write((byte)0);//unk player.Response.Write(VersusTime); player.Response.Write(TorneyTime); player.Response.Write(MaxProjectG); player.Response.Write(GameType); player.Response.Write(TotalHoles); player.Response.Write(Map); player.Response.Write(Mode); player.Response.Write(natural); player.Response.WritePStr(RomName); player.Response.WritePStr(RomPass); player.Response.Write(0);//artefato player.SendResponse(); }
public void HandleReadResultEnterLobby(ProjectG player, byte Code) { if (Code == 1) { Console.WriteLine("Sucess Enter In Lobby !"); } if (Code == 2) { Console.WriteLine("Await New LobbyID !"); if (Program.Channels.Count > 0) { foreach (var data in Program.Channels.Where(c => c.ID != player.Info.Lobby.ID && c.MaxPlayer > c.CurrUser)) { player.Info.Lobby.ID = data.ID; } } HandleSendClientSelectChannelID(player); } }
private void HandleSendLogin(ProjectG client, byte Key) { client.GetKey = Key; client.KeyLogin = client.GetKey; client.Response.Write(new byte[] { 0x01, 0x00 }); client.Response.WritePStr(client.GetLogin); client.Response.WritePStr(client.GetPass); if (client.Login.PangyaVersion == EnumPangyaVersion.US) { client.Response.WriteZero(17); } else if (client.Login.PangyaVersion == EnumPangyaVersion.TH) { //facebook conection Login client.Response.Write(new byte[] { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF }); } client.Send(client.Response); }
private void HandleReadAuthKey(ProjectG client, ClientPacket packet, byte Type) { if (Type == 1) { client.GetAuth1 = packet.ReadPStr(); } else { packet.Skip(4); client.GetAuth2 = packet.ReadPStr(); client.Conn.ServerType = ServerTypeEnum.Game; client.Conn.Start(client.Game.IP, client.Game.Port); if (client.Messenger.ID != 0) { client.Conn.ServerType = ServerTypeEnum.Message; client.Conn.Start(client.Messenger.IP, client.Messenger.Port); } } }
private void HandleReadGameLogin(ProjectG client, ClientPacket packet, PLAYER_GAME_LOGIN_RESULT Type) { WriteConsole.WriteLine($"[BOOT_LOGIN_PROCESS]: {Type}"); if (Type == PLAYER_GAME_LOGIN_RESULT.UNKNOW) { Console.WriteLine("PLAYER_MAIN_DATA_UN"); } if (Type == PLAYER_GAME_LOGIN_RESULT.LOAD_SERVER_TIME) { var time = packet.ReadByte(); Console.WriteLine($"PACKET_TIME: {time}"); } if (Type == PLAYER_GAME_LOGIN_RESULT.SUCESS && packet.Message[3] == 0x06) { packet.Skip(110); client.ConnectionID = packet.ReadUInt32(); Console.WriteLine($"PLAYER_LOGIN_COMPLETE !"); } }
public void HadleReadGameChannelData(ProjectG player, ClientPacket packet) { var total = packet.ReadByte(); for (int i = 0; i < total; i++) { var channel = new PlayerLobby(); channel = (PlayerLobby)packet.Read(channel); Program.Channels.Add(channel); } if (Program.Channels.Count > 0) { foreach (var data in Program.Channels.Where(c => c.MaxPlayer > c.CurrUser)) { player.Info.Lobby.ID = data.ID; } } else { } }
public void Handle(ProjectG client, GamePacketEnumResponse packetID, ClientPacket packet) { WriteConsole.WriteLine($"[BOT_GAME_PACKET]: {packetID}", ConsoleColor.Cyan); switch (packetID) { case GamePacketEnumResponse.PLAYER_CONNECTION: { CountPacket++; HandleSendGameLogin(client, packet, packet.Message[8]); } break; case GamePacketEnumResponse.PLAYER_GAME_RESUME: break; case GamePacketEnumResponse.PLAYER_GAME_SUCESS: break; case GamePacketEnumResponse.PLAYER_TRANSTION_ITEMS: break; case GamePacketEnumResponse.GAME_CHANNEL_DATA: { CountPacket++; HadleReadGameChannelData(client, packet); } break; case GamePacketEnumResponse.GAME_CHANNEL_INVALID: break; case GamePacketEnumResponse.PLAYER_ENTER_CHANNEL_RESULT: { CountPacket++; HandleReadResultEnterLobby(client, packet.ReadByte()); } break; case GamePacketEnumResponse.PACKET_UNK_F6: break; case GamePacketEnumResponse.PACKET_UNK_F1: break; case GamePacketEnumResponse.PACKET_UNK_F5: break; case GamePacketEnumResponse.PACKET_UNK_131: break; case GamePacketEnumResponse.PACKET_UNK_136: break; case GamePacketEnumResponse.PACKET_UNK_181: break; case GamePacketEnumResponse.PACKET_UNK_B4: break; case GamePacketEnumResponse.PLAYER_ACHIEVEMENT_COUNTER: break; case GamePacketEnumResponse.PLAYER_ACHIEVEMENT: break; case GamePacketEnumResponse.PLAYER_CARD_DATA: break; case GamePacketEnumResponse.PLAYER_CARD_EQUIPED: break; case GamePacketEnumResponse.PLAYER_MAIN_DATA: { CountPacket++; HandleReadGameLogin(client, packet, (PLAYER_GAME_LOGIN_RESULT)packet.Message[2]); } break; case GamePacketEnumResponse.GAME_PLAY_INFO: break; case GamePacketEnumResponse.PLAYER_FURNITURE_DATA: break; case GamePacketEnumResponse.PLAYER_ACTION_GAME: break; case GamePacketEnumResponse.PLAYER_ACTION_SHOT: break; case GamePacketEnumResponse.PLAYER_ACTION_ROTATE: break; case GamePacketEnumResponse.PLAYER_ACTION_CHANGE_CLUB: break; case GamePacketEnumResponse.PLAYER_TROPHIES_DATA: break; case GamePacketEnumResponse.PLAYER_TROPHIES_DATA_GP: break; case GamePacketEnumResponse.PLAYER_NEXT: break; case GamePacketEnumResponse.PLAYER_CHARACTERS_DATA: break; case GamePacketEnumResponse.PLAYER_CADDIES_DATA: break; case GamePacketEnumResponse.PLAYER_CADDIES_EXPIRATION_DATA: break; case GamePacketEnumResponse.PLAYER_EQUIP_DATA: break; case GamePacketEnumResponse.PLAYER_ITEMS_DATA: break; case GamePacketEnumResponse.PLAYER_1ST_SHOT_READY: break; case GamePacketEnumResponse.PLAYER_COOKIES: { HandleReadPlayerCookies(client, packet); } break; case GamePacketEnumResponse.PLAYER_LOADING_INFO: break; case GamePacketEnumResponse.PLAYER_MASCOTS_DATA: break; case GamePacketEnumResponse.PLAYER_CALL_MESSAGESERVER_DATA: { HandleSendClientSelectChannelID(client); } break; case GamePacketEnumResponse.PLAYER_TUTORIAL_DATA: break; case GamePacketEnumResponse.PLAYER_DAILYLOGIN_CHECK_DATA: { if (client.InLobby == false) { Console.WriteLine("Do you want to enter the Games list: YES or NOT "); var result = Console.ReadLine(); Console.WriteLine(); if (result == "yes" && result == "YES") { client.InLobby = true; HandleSendEnterLobbyList(client); } } } break; case GamePacketEnumResponse.PLAYER_DAILYLOGIN_ITEM_DATA: break; case GamePacketEnumResponse.PLAYER_STATISTIC_DATA: { CountPacket++; HandleReadStatisticData(client, packet); } break; case GamePacketEnumResponse.PLAYER_REQUEST_INFO: break; case GamePacketEnumResponse.PLAYER_CHARACTER_INFO: break; case GamePacketEnumResponse.PLAYER_TOOLBAR_INFO: break; case GamePacketEnumResponse.PLAYER_GUILD_INFO: break; case GamePacketEnumResponse.PLAYER_RECORD_INFO: break; case GamePacketEnumResponse.PLAYER_TROPHY_INFO_NORMAL: break; case GamePacketEnumResponse.PLAYER_TROPHY_INFO_SPECIAL: break; case GamePacketEnumResponse.PLAYER_MAILBOX_POPUP_DATA: break; case GamePacketEnumResponse.PLAYER_OPEN_MAILBOX_DATA: break; case GamePacketEnumResponse.PLAYER_CHAT_RECV_DATA: break; case GamePacketEnumResponse.PLAYER_KEEPLIVE: break; case GamePacketEnumResponse.PLAYER_LOBBY_DATA: break; case GamePacketEnumResponse.PLAYER_GAME_HEADERDATA: break; case GamePacketEnumResponse.CREATE_PLAYER_IN_GAME: break; case GamePacketEnumResponse.PLAYER_ACQUIRE_DATA: break; case GamePacketEnumResponse.NOTICE_GAME: break; case GamePacketEnumResponse.PLAYER_START_GAME: break; case GamePacketEnumResponse.GAME_ACTION: break; case GamePacketEnumResponse.PLAYER_BUY_ITEM_SHOP: break; case GamePacketEnumResponse.PLAYER_REQUEST_INFO_RESULT_TYPE: break; case GamePacketEnumResponse.NOTHING: break; default: { WriteConsole.WriteLine($"[BOOT_GAME_PACKETLOG]: {packet.GetLog()}"); packet.Save(); } break; } client.ServerType = ServerTypeEnum.Game; }
void SelectServer(ProjectG player) { player.Response.Write(new byte[] { 0x03, 0x00 }); player.Response.Write(player.Game.ID); player.SendResponse(); }
public void Handle(ProjectG client, LoginPacketEnumResponse packetID, ClientPacket packet) { WriteConsole.WriteLine($"[BOT_LOGIN_PACKET]: {packetID}", ConsoleColor.Cyan); switch (packetID) { case LoginPacketEnumResponse.PLAYER_CONNECTION: { CountPacket++; HandleSendLogin(client, packet.Message[6]); } break; case LoginPacketEnumResponse.PLAYER_LOGIN_DATA: { CountPacket++; HandleLoginProcess(client, packet); } break; case LoginPacketEnumResponse.PLAYER_SELECT_SERVER_DATA: { CountPacket++; HandleReadAuthKey(client, packet, 2); } break; case LoginPacketEnumResponse.PLAYER_GAME_MACRO_DATA: { CountPacket++; HandleReadMacro(client, packet); } break; case LoginPacketEnumResponse.PLAYER_AUTH_LOGIN_KEY_DATA: { CountPacket++; HandleReadAuthKey(client, packet, 1); } break; case LoginPacketEnumResponse.MESSAGEBOX_NICKNAME: break; case LoginPacketEnumResponse.GAME_SERVERS_LIST_DATA: { CountPacket++; HandleReadDataServers(client, packet, 2); } break; case LoginPacketEnumResponse.MESSENGE_SERVER_LIST_DATA: { CountPacket++; HandleReadDataServers(client, packet, 9); //if (PacketGameRead) //{ //} } break; default: { Console.WriteLine(packet.GetLog()); packet.Save(); } break; } client.ServerType = ServerTypeEnum.Login; if (CountPacket >= 5 && PacketGameRead && client.Login.PangyaVersion == EnumPangyaVersion.US) { SelectServer(client); CountPacket = 0; PacketGameRead = false; // client.Disconnect(); Program.ProjectGClient.ServerType = ServerTypeEnum.Game; Program.ProjectGClient.Start(client.Game.IP, client.Game.Port); } else if (CountPacket >= 6 && PacketGameRead && client.Login.PangyaVersion == EnumPangyaVersion.TH) { SelectServer(client); CountPacket = 0; PacketGameRead = false; } }
private void HandleLoginProcess(ProjectG client, ClientPacket packet) { if (client.Login.PangyaVersion == EnumPangyaVersion.US) { LoginPacketCodeEnum Code = (LoginPacketCodeEnum)packet.ReadByte(); WriteConsole.WriteLine($"[BOOT_LOGIN_PROCESS]: {Code}"); switch (Code) { case LoginPacketCodeEnum.Sucess: { client.GetLogin = packet.ReadPStr(); client.GetUID = packet.ReadUInt32(); client.GetCapability = (byte)packet.ReadInt32(); client.GetLevel = (byte)packet.ReadUInt32(); packet.Skip(6); client.GetNickname = packet.ReadPStr(); Console.WriteLine(); Console.WriteLine("**************************************************************************"); Console.WriteLine(" LOGIN: "******" UID: " + client.GetUID); Console.WriteLine(" TYPE: " + client.GetCapability); Console.WriteLine(" LEVEL: " + client.GetLevel); Console.WriteLine(" NICK: " + client.GetNickname); Console.WriteLine("**************************************************************************"); Console.WriteLine(); } break; case LoginPacketCodeEnum.InvalidoIdPw: { } break; case LoginPacketCodeEnum.InvalidoId: { } break; case LoginPacketCodeEnum.UsuarioEmUso: { WriteConsole.WriteLine("[BOOT_LOGIN_PROCESS]: Await User"); client.SendResponse(new byte[] { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }); WriteConsole.WriteLine("[BOOT_LOGIN_PROCESS]: Logging in do User"); } break; case LoginPacketCodeEnum.Banido: break; case LoginPacketCodeEnum.UsernameOuSenhaInvalido: break; case LoginPacketCodeEnum.ContaSuspensa: break; case LoginPacketCodeEnum.Player13AnosOuMenos: break; case LoginPacketCodeEnum.SSNIncorreto: break; case LoginPacketCodeEnum.UsuarioIncorreto: break; case LoginPacketCodeEnum.OnlyUserAllowed: break; case LoginPacketCodeEnum.ServerInMaintenance: break; case LoginPacketCodeEnum.NaoDisponivelNaSuaArea: break; case LoginPacketCodeEnum.CreateNickName_US: break; case LoginPacketCodeEnum.CreateNickName: break; default: { } break; } } else if (client.Login.PangyaVersion == EnumPangyaVersion.TH) { THLoginPacketCodeEnum Code = THLoginPacketCodeEnum.LOGIN_SUCESS; if (packet.Message.Count() <= 7) { Code = (THLoginPacketCodeEnum)packet.ReadUInt32(); } else if (packet.Message.Count() > 7) { Code = (THLoginPacketCodeEnum)packet.ReadByte(); } WriteConsole.WriteLine($"[BOOT_LOGIN_PROCESS]: Type {Code}"); switch (Code) { case THLoginPacketCodeEnum.LOGIN_SUCESS: { client.GetLogin = packet.ReadPStr(); client.GetUID = packet.ReadUInt32(); client.GetCapability = (byte)packet.ReadInt32(); client.GetLevel = (byte)packet.ReadUInt32(); packet.Skip(6); client.GetNickname = packet.ReadPStr(); Console.WriteLine(); Console.WriteLine("**************************************************************************"); Console.WriteLine(" LOGIN: "******" UID: " + client.GetUID); Console.WriteLine(" TYPE: " + client.GetCapability); Console.WriteLine(" LEVEL: " + client.GetLevel); Console.WriteLine(" NICK: " + client.GetNickname); Console.WriteLine("**************************************************************************"); Console.WriteLine(); } break; case THLoginPacketCodeEnum.INVALID_USER: { //client.Disconnect(); } break; case THLoginPacketCodeEnum.INVALID_PASS: { throw new Exception("SORRY, USER PASS INVALID "); } case THLoginPacketCodeEnum.Banido: { // client.Disconnect(); } break; case THLoginPacketCodeEnum.USER_IN_USE: { client.Response.Write(new byte[] { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }); client.SendResponse(); } break; case THLoginPacketCodeEnum.ServerInMaintenance: break; default: { //client.Disconnect(); WriteConsole.WriteLine($"[BOOT_LOGIN_PACKETLOG]: {packet.GetLog()}"); packet.Save(); } break; } } }
public void HandleSendEnterLobbyList(ProjectG player) { player.SendBytes(new byte[] { 0x81, 0x00 }); }
private void HandleReadDataServers(ProjectG client, ClientPacket packet, byte Type) { var ServerCount = packet.ReadByte(); switch (Type) { case 2: { //try to improve ^^ packet.Save(); for (var i = 0; i < ServerCount; i++) { try { var game = (ServerInfo)packet.Read(new ServerInfo()); var name = game.Name; var id = game.ID; var ip = IPAddress.Parse(game.IP); var port = game.Port; var s = new GameSettings(ip, port, name, id); Program.ServersGame.Add(s); if (client.Game.Name == null || client.Game.Name == "") { client.Game = s; PacketGameRead = true; break; } PacketGameRead = true; } catch { } } } break; //is messenger server case 9: { for (var i = 0; i < ServerCount; i++) { try { var msg = (ServerInfo)packet.Read(new ServerInfo()); var name = msg.Name; var id = msg.ID; var ip = IPAddress.Parse(msg.IP); var port = msg.Port; var s = new MessengerSettings(ip, port, name, id); Program.ServersMessenger.Add(s); client.Messenger = s; } catch { } } } break; } }
public void HandleSendLeaveLobbyList(ProjectG player) { player.Response.Write(new byte[] { 0x82, 0x00 }); player.SendResponse(); }
//public void HandleReadChatData(ProjectG player, ClientPacket packet) //{ // var type = packet.ReadByte(); // var NickName = packet.ReadPStr(); // var MessageReceived = packet.ReadPStr(); // //ChatCommand.ChatData(NickName, MessageReceived); //} public void HandleReadPlayerCookies(ProjectG player, ClientPacket packet) { player.Cookies = packet.ReadInt64(); }
public void HandleReadStatisticData(ProjectG player, ClientPacket packet) { packet.Skip(164); player.Pangs = packet.ReadUInt64(); }
public void HandleSendClientDisconnect(ProjectG player) { player.Response.Write(new byte[] { 0x6E, 0x01 }); player.SendResponse(); }
public void HandleSendClientLobbyInfo(ProjectG player) { player.Send(new byte[] { 0x43, 0x00 }); }