private const double REFRESH_RATE = 16.666; // 60 fps public bool initialize(ENetAddress address, string baseKey) { if (enet_initialize() < 0) return false; _server = enet_host_create(&address, new IntPtr(32), new IntPtr(32), 0, 0); if (_server == null) return false; var key = System.Convert.FromBase64String(baseKey); if (key.Length <= 0) return false; fixed (byte* s = key) { _blowfish = BlowFishCS.BlowFishCS.BlowFishCreate(s, new IntPtr(16)); } PacketHandlerManager.getInstace().InitHandlers(this); map = new SummonersRift(this); PacketNotifier.setMap(map); //TODO: better lua implementation var id = 1; foreach (var p in Config.players) { var player = new ClientInfo(p.Value.rank, ((p.Value.team.ToLower() == "blue") ? TeamId.TEAM_BLUE : TeamId.TEAM_PURPLE), p.Value.ribbon, p.Value.icon); player.setName(p.Value.name); player.setSkinNo(p.Value.skin); player.userId = id; // same as StartClient.bat id++; player.setSummoners(strToId(p.Value.summoner1), strToId(p.Value.summoner2)); Champion c = ChampionFactory.getChampionFromType(p.Value.champion, map, GetNewNetID(), (int)player.userId); var pos = c.getRespawnPosition(); c.setPosition(pos.Item1, pos.Item2); c.setTeam((p.Value.team.ToLower() == "blue") ? TeamId.TEAM_BLUE : TeamId.TEAM_PURPLE); c.levelUp(); player.setChampion(c); var pair = new Pair<uint, ClientInfo>(); pair.Item2 = player; players.Add(pair); } // Uncomment the following to get 2-players /*ClientInfo* player2 = new ClientInfo("GOLD", TEAM_PURPLE); player2->setName("tseT"); Champion* c2 = ChampionFactory::getChampionFromType("Ezreal", map, GetNewNetID()); c2->setPosition(100.f, 273.55f); c2->setTeam(1); map->addObject(c2); player2->setChampion(c2); player2->setSkinNo(4); player2->userId = 2; // same as StartClient.bat player2->setSummoners(SPL_Ignite, SPL_Flash); players.push_back(player2);*/ return _isAlive = true; }
public HeroSpawn(ClientInfo player, int playerId) : base(PacketCmdS2C.PKT_S2C_HeroSpawn) { buffer.Write((int)0); // ??? buffer.Write((int)player.getChampion().getNetId()); buffer.Write((int)playerId); // player Id buffer.Write((byte)40); // netNodeID ? buffer.Write((byte)0); // botSkillLevel Beginner=0 Intermediate=1 if (player.getTeam() == TeamId.TEAM_BLUE) { buffer.Write((byte)1); // teamNumber BotTeam=2,3 Blue=Order=1 Purple=Chaos=0 } else { buffer.Write((byte)0); // teamNumber BotTeam=2,3 Blue=Order=1 Purple=Chaos=0 } buffer.Write((byte)0); // isBot //buffer.Write((short)0; // botRank (deprecated as of 4.18) buffer.Write((byte)0); // spawnPosIndex buffer.Write((int)player.getSkinNo()); foreach (var b in Encoding.Default.GetBytes(player.getName())) buffer.Write((byte)b); buffer.fill(0, 128 - player.getName().Length); foreach (var b in Encoding.Default.GetBytes(player.getChampion().getType())) buffer.Write((byte)b); buffer.fill(0, 40 - player.getChampion().getType().Length); buffer.Write((float)0.0f); // deathDurationRemaining buffer.Write((float)0.0f); // timeSinceDeath buffer.Write((int)0); // UNK (4.18) buffer.Write((byte)0); // bitField }
public AttentionPingAns(ClientInfo player, AttentionPing ping) : base(PacketCmdS2C.PKT_S2C_AttentionPing) { buffer.Write((int)0); //unk1 buffer.Write((float)ping.x); buffer.Write((float)ping.y); buffer.Write((int)ping.targetNetId); buffer.Write((int)player.getChampion().getNetId()); buffer.Write((byte)ping.type); buffer.Write((byte)0xFB); // 4.18 /* switch (ping.type) { case 0: buffer.Write((short)0xb0; break; case 1: buffer.Write((short)0xb1; break; case 2: buffer.Write((short)0xb2; // Danger break; case 3: buffer.Write((short)0xb3; // Enemy Missing break; case 4: buffer.Write((short)0xb4; // On My Way break; case 5: buffer.Write((short)0xb5; // Retreat / Fall Back break; case 6: buffer.Write((short)0xb6; // Assistance Needed break; } */ }
public PlayerInfo(ClientInfo player) : base(PacketCmdS2C.PKT_S2C_PlayerInfo, player.getChampion().getNetId()) { #region wtf buffer.Write((byte)0x7D); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x7D); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x7D); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x7D); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x7D); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x7D); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x7D); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x7D); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x83); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xA9); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xC5); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xD7); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xD7); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0xD7); buffer.Write((byte)0x14); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((int)player.summonerSkills[0]); buffer.Write((int)player.summonerSkills[1]); buffer.Write((byte)0x41); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x01); buffer.Write((byte)0x42); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x04); buffer.Write((byte)0x52); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x03); buffer.Write((byte)0x61); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x01); buffer.Write((byte)0x62); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x01); buffer.Write((byte)0x64); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x03); buffer.Write((byte)0x71); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x01); buffer.Write((byte)0x72); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x03); buffer.Write((byte)0x82); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x03); buffer.Write((byte)0x92); buffer.Write((byte)0x74); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x01); buffer.Write((byte)0x41); buffer.Write((byte)0x75); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x01); buffer.Write((byte)0x42); buffer.Write((byte)0x75); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x02); buffer.Write((byte)0x43); buffer.Write((byte)0x75); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x02); buffer.Write((byte)0x52); buffer.Write((byte)0x75); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x03); buffer.Write((byte)0x62); buffer.Write((byte)0x75); buffer.Write((byte)0x03); buffer.Write((byte)0x00); buffer.Write((byte)0x01); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x00); buffer.Write((byte)0x1E); buffer.Write((byte)0x00); #endregion }
unsafe bool handleGameNumber(ClientInfo client, ENetPeer* peer, ENetPacket* packet) { var world = new WorldSendGameNumber(1, client.getName()); return PacketHandlerManager.getInstace().sendPacket(peer, world, Channel.CHL_S2C); }