public override void HandlePacket(BinaryReader reader, int whoAmI) { ModMessageType msgType = (ModMessageType)reader.ReadByte(); switch (msgType) { case ModMessageType.SyncPlayer: byte playernumber = reader.ReadByte(); SpellbladePlayer player = Main.player[playernumber].GetModPlayer <SpellbladePlayer>(); int current = reader.ReadInt32(); int max = reader.ReadInt32(); int max2 = reader.ReadInt32(); player.arcanePowerCurrent = current; player.arcanePowerMax = max; player.arcanePowerMax2 = max2; player.altWeaponFunc = reader.ReadBoolean(); player.arcaneCurse = reader.ReadBoolean(); player.swordProtect = reader.ReadBoolean(); // SyncPlayer will be called automatically, so there is no need to forward this data to other clients. break; case ModMessageType.AltFuncUpdate: playernumber = reader.ReadByte(); player = Main.player[playernumber].GetModPlayer <SpellbladePlayer>(); player.altWeaponFunc = reader.ReadBoolean(); if (Main.netMode == NetmodeID.Server) { var packet = GetPacket(); packet.Write((byte)ModMessageType.AltFuncUpdate); packet.Write(playernumber); packet.Write(player.altWeaponFunc); packet.Send(-1, playernumber); } break; case ModMessageType.ForceAltUse: playernumber = reader.ReadByte(); player = Main.player[playernumber].GetModPlayer <SpellbladePlayer>(); player.ForceAltUse(); if (Main.netMode == NetmodeID.Server) { var packet = GetPacket(); packet.Write((byte)ModMessageType.ForceAltUse); packet.Write(playernumber); packet.Send(-1, playernumber); } break; default: Logger.WarnFormat("ExampleMod: Unknown Message type: {0}", msgType); break; } }
public override void HandlePacket(BinaryReader reader, int whoAmI) { ModMessageType msgType = (ModMessageType)reader.ReadByte(); switch (msgType) { //divide sync player for each subclass if poor performance case ModMessageType.SyncPlayer: // SyncPlayer will be called automatically, so there is no need to forward this data to other clients. byte playernumber = reader.ReadByte(); AssassinPlayer ap = Main.player[playernumber].GetModPlayer <AssassinPlayer>(); HunterPlayer hp = Main.player[playernumber].GetModPlayer <HunterPlayer>(); SpellbladePlayer sp = Main.player[playernumber].GetModPlayer <SpellbladePlayer>(); sp.arcaneCurse = reader.ReadBoolean(); TechnomancerPlayer tp = Main.player[playernumber].GetModPlayer <TechnomancerPlayer>(); tp.spawnStacks = reader.ReadInt32(); break; case ModMessageType.TechnomancerForceSync: playernumber = reader.ReadByte(); tp = Main.player[playernumber].GetModPlayer <TechnomancerPlayer>(); tp.spawnStacks = reader.ReadByte(); if (Main.netMode == NetmodeID.Server) { var packet = GetPacket(); packet.Write((byte)ModMessageType.TechnomancerForceSync); packet.Write(playernumber); packet.Write(tp.spawnStacks); packet.Send(-1, playernumber); } break; default: Logger.WarnFormat("Spellblade Revised: Unknown Message type: {0}", msgType); break; } }
// Need to sort out HandlePacket for NPCTargeting spell targets public override void HandlePacket(BinaryReader reader, int whoAmI) { ModMessageType msgType = (ModMessageType)reader.ReadByte(); switch (msgType) { case ModMessageType.DmgSpellCast: NPCTargeting DmgSpell = new NPCTargeting() as NPCTargeting; DmgSpell.HandlePacket(reader); break; case ModMessageType.HealSpellCast: PlayerTargeting HealSpell = new PlayerTargeting() as PlayerTargeting; HealSpell.HandlePacket(reader); break; default: ErrorLogger.Log("Archaea Mod: Unknown Message Type" + msgType); break; } }
public override void HandlePacket(BinaryReader reader, int whoAmI) { ModMessageType msgType = (ModMessageType)reader.ReadByte(); switch (msgType) { case ModMessageType.StartRaidEvent: RaidWorld.RaidEvent = true; RaidWorld.RaidKillCount = 0f; RaidWorld.RaidWaves = 1; if (Main.netMode == NetmodeID.Server) { NetMessage.SendData(MessageID.WorldData); // Immediately inform clients of new world state. } if (Main.netMode == NetmodeID.SinglePlayer) { RaidWorld.RaidEvent = true; RaidWorld.RaidKillCount = 0f; RaidWorld.RaidWaves += 1; } break; case ModMessageType.SummonBoss: Vector2 sumonerLocation = reader.ReadVector2(); int type = reader.ReadInt32(); int num7 = NPC.NewNPC((int)sumonerLocation.X, (int)sumonerLocation.Y - 1000, type); if (Main.netMode == NetmodeID.Server) { NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasAwoken", new object[] { Main.npc[num7].GetTypeNetName() }), new Color(175, 75, 255), -1); } break; } }
public override void HandlePacket(BinaryReader reader, int whoAmI) { ModMessageType msgType = (ModMessageType)reader.ReadByte(); switch (msgType) { case ModMessageType.ArrowMessage: int identity = reader.ReadInt32(); byte owner = reader.ReadByte(); int realIdentity = Projectile.GetByUUID(owner, identity); if (realIdentity != -1) { Main.projectile[realIdentity].GetGlobalProjectile <arrowHoming>().B4HomingArrow = true; } if (Main.netMode == 2) { ModPacket packet = GetPacket(); packet.Write((byte)ModMessageType.ArrowMessage); packet.Write(identity); packet.Write(owner); packet.Send(); } break; case ModMessageType.FinnedRandomSwimMessage: int identity2 = reader.ReadInt32(); byte owner2 = reader.ReadByte(); float randomSwim = reader.Read(); int realIdentity2 = Projectile.GetByUUID(owner2, identity2); if (realIdentity2 != -1) { Main.projectile[realIdentity2].ai[1] = randomSwim; } if (Main.netMode == 2) { ModPacket packet = GetPacket(); packet.Write((byte)ModMessageType.FinnedRandomSwimMessage); packet.Write(identity2); packet.Write(owner2); packet.Write(randomSwim); packet.Send(); } break; case ModMessageType.ScaleMessage: int identity3 = reader.ReadInt32(); byte owner3 = reader.ReadByte(); int realIdentity3 = Projectile.GetByUUID(owner3, identity3); if (realIdentity3 != -1) { Main.projectile[realIdentity3].scale = 3; } if (Main.netMode == 2) { ModPacket packet = GetPacket(); packet.Write((byte)ModMessageType.ScaleMessage); packet.Write(identity3); packet.Write(owner3); packet.Send(); } break; case ModMessageType.UpdateClassBools: int identity4 = reader.ReadInt32(); byte owner4 = reader.ReadByte(); int realIdentity4 = Projectile.GetByUUID(owner4, identity4); if (realIdentity4 != -1) { BitsByte flags = reader.ReadByte(); Main.projectile[realIdentity4].melee = flags[0]; Main.projectile[realIdentity4].ranged = flags[1]; Main.projectile[realIdentity4].magic = flags[2]; Main.projectile[realIdentity4].minion = flags[3]; Main.projectile[realIdentity4].thrown = flags[4]; Main.projectile[realIdentity4].GetGlobalProjectile <MorphProjectile>().morph = flags[5]; } if (Main.netMode == 2) { UpdateProjectileClass(Main.projectile[realIdentity4]); } break; case ModMessageType.UpdateLocalCursor: byte playerIndex = reader.ReadByte(); Vector2 Cursor = reader.ReadVector2(); LocalCursor[playerIndex] = Cursor; if (Main.netMode == 2) { ModPacket packet = GetPacket(); packet.Write((byte)ModMessageType.UpdateLocalCursor); // Message type, you would need to create an enum for this packet.Write(playerIndex); packet.WriteVector2(Cursor); packet.Send(); } break; case ModMessageType.UpdatePlayerVelocity: byte playerIndex2 = reader.ReadByte(); Vector2 vel = reader.ReadVector2(); Main.player[playerIndex2].velocity = vel; if (Main.netMode == 2) { UpdatePlayerVelocity(playerIndex2, vel); NetMessage.SendData(MessageID.PlayerControls, -1, -1, null, playerIndex2); } break; case ModMessageType.UpdatePlayerPosition: byte playerIndex3 = reader.ReadByte(); Vector2 pos = reader.ReadVector2(); Main.player[playerIndex3].position = pos; if (Main.netMode == 2) { UpdatePlayerPosition(playerIndex3, pos); NetMessage.SendData(MessageID.PlayerControls, -1, -1, null, playerIndex3); } break; case ModMessageType.ProjectileAIUpdate: int identity6 = reader.ReadInt32(); byte owner6 = reader.ReadByte(); int realIdentity6 = Projectile.GetByUUID(owner6, identity6); float ai0 = reader.ReadSingle(); float ai1 = reader.ReadSingle(); if (realIdentity6 != -1) { Main.projectile[realIdentity6].ai[0] = ai0; Main.projectile[realIdentity6].ai[1] = ai1; if (Main.netMode == 2) { ProjectileAIUpdate(Main.projectile[realIdentity6]); } } break; case ModMessageType.DivineCall: QwertyWorld.FortressBossQuotes(); Vector2 summonAt = reader.ReadVector2(); int npcID = NPC.NewNPC((int)summonAt.X, (int)summonAt.Y, NPCType("FortressBoss")); break; case ModMessageType.StartDinoEvent: QwertyWorld.DinoEvent = true; QwertyWorld.DinoKillCount = 0; if (Main.netMode == NetmodeID.Server) { NetMessage.SendData(MessageID.WorldData); // Immediately inform clients of new world state. } break; } }
public override void HandlePacket(BinaryReader reader, int whoAmI) { ModMessageType msgType = (ModMessageType)reader.ReadByte(); switch (msgType) { // This message sent by the server to initialize the Volcano Tremor on clients case ModMessageType.SyncPlayer: { byte playernumber = reader.ReadByte(); LPlayer examplePlayer = Main.player[playernumber].GetModPlayer <LPlayer>(); if (examplePlayer.boughtbuffsavail == null) { examplePlayer.boughtbuffsavail = new bool[LansToggleableBuffs.instance.getBuffLength()]; examplePlayer.buffsavail = new bool[LansToggleableBuffs.instance.getBuffLength()]; } for (int i = 0; i < this.getBuffLength(); i++) { examplePlayer.boughtbuffsavail[i] = reader.ReadBoolean(); examplePlayer.buffsavail[i] = reader.ReadBoolean(); } break; } case ModMessageType.Change: { byte playernumber = reader.ReadByte(); LPlayer examplePlayer = Main.player[playernumber].GetModPlayer <LPlayer>(); if (examplePlayer.boughtbuffsavail == null) { examplePlayer.boughtbuffsavail = new bool[LansToggleableBuffs.instance.getBuffLength()]; examplePlayer.buffsavail = new bool[LansToggleableBuffs.instance.getBuffLength()]; } for (int i = 0; i < this.getBuffLength(); i++) { examplePlayer.boughtbuffsavail[i] = reader.ReadBoolean(); examplePlayer.buffsavail[i] = reader.ReadBoolean(); } if (Main.netMode == NetmodeID.Server) { var packet = GetPacket(); packet.Write((byte)ModMessageType.Change); packet.Write((byte)playernumber); for (int i = 0; i < this.getBuffLength(); i++) { packet.Write(examplePlayer.boughtbuffsavail[i]); packet.Write(examplePlayer.buffsavail[i]); } packet.Send(-1, playernumber); } break; } } }