public static void GetComplexUnionData() { if (Main.netMode == 1) { ModPacket p = ServerSideCharacter2.Instance.GetPacket(); p.Write((int)SSCMessageType.UnionInfoComplex); p.Send(); } }
public override bool PreKill(double damage, int hitDirection, bool pvp, ref bool playSound, ref bool genGore, ref PlayerDeathReason damageSource) { if (heroLives > 0) { heroLives--; if (Main.netMode == NetmodeID.MultiplayerClient) { ModPacket packet = mod.GetPacket(); packet.Write((byte)ExampleModMessageType.HeroLives); packet.Write(player.whoAmI); packet.Write(heroLives); packet.Send(); } if (heroLives > 0) { player.statLife = player.statLifeMax2; player.HealEffect(player.statLifeMax2); player.immune = true; player.immuneTime = player.longInvince ? 180 : 120; for (int k = 0; k < player.hurtCooldowns.Length; k++) { player.hurtCooldowns[k] = player.longInvince ? 180 : 120; } SoundEngine.PlaySound(SoundID.Item29, player.position); reviveTime = 60; return(false); } } if (healHurt > 0 && damage == 10.0 && hitDirection == 0 && damageSource.SourceOtherIndex == 8) { damageSource = PlayerDeathReason.ByCustomReason(" was dissolved by holy powers"); } return(true); }
public override void OnEnterWorld(Player player) { BossLogUI.PageNum = -3; durationLastFight = hitsTakenLastFight = healthLossLastFight = -1; RecordTimers = new List <int>(); BrinkChecker = new List <int>(); MaxHealth = new List <int>(); DeathTracker = new List <bool>(); DodgeTimer = new List <int>(); AttackCounter = new List <int>(); foreach (BossInfo boss in BossChecklist.bossTracker.SortedBosses) { RecordTimers.Add(0); BrinkChecker.Add(0); MaxHealth.Add(0); DeathTracker.Add(false); DodgeTimer.Add(0); AttackCounter.Add(0); } int bossCount = BossChecklist.bossTracker.SortedBosses.Count; if (Main.netMode == NetmodeID.MultiplayerClient) { // Essentially to get "BossAssist.ServerCollectedRecords[player.whoAmI] = AllBossRecords;" ModPacket packet = mod.GetPacket(); packet.Write((byte)PacketMessageType.SendRecordsToServer); for (int i = 0; i < bossCount; i++) { BossStats stat = AllBossRecords[i].stat; packet.Write(stat.kills); packet.Write(stat.deaths); packet.Write(stat.durationBest); packet.Write(stat.durationPrev); packet.Write(stat.hitsTakenBest); packet.Write(stat.hitsTakenPrev); packet.Write(stat.dodgeTimeBest); packet.Write(stat.healthLossBest); packet.Write(stat.healthLossPrev); } packet.Send(); // To server } }
public override void SyncPlayer(int toWho, int fromWho, bool newPlayer) { ModPacket packet = mod.GetPacket(); packet.Write((byte)AlchemistNPC.AlchemistNPCMessageType.LifeAndManaSync); packet.Write((byte)player.whoAmI); packet.Write(LifeElixir); packet.Write(Fuaran); packet.Write(KeepBuffs); packet.Write(WellFed); packet.Write(BillIsDowned); packet.Write(BBP); packet.Write(SnatcherCounter); packet.Send(toWho, fromWho); }
public static void Send(byte type, int toWho = -1, int fromWho = -1, int i = 0, float f = 0f, float f2 = 0f, int i2 = 0, bool b = false, float f3 = 0f, float f4 = 0f, float f5 = 0f) { ModPacket packet = mod.GetPacket(); packet.Write(type); packet.Write(i); packet.Write(f); packet.Write(f2); packet.Write(i2); packet.Write(b); packet.Write(f3); packet.Write(f4); packet.Write(f5); packet.Send(toWho, fromWho); }
public override void SyncPlayer(int toWho, int fromWho, bool newPlayer) { base.SyncPlayer(toWho, fromWho, newPlayer); ModPacket packet = Mod.GetPacket(); packet.Write((byte)PacketType.PlayerSync); AddSyncToPacket(packet); packet.Send(); }
///// <summary> ///// Player tells server that they are performing an ability ///// </summary> ///// <param name="mod"></param> ///// <param name="abilityID"></param> //public static void ClientAbility(Mod mod, int abilityID, int level = 1, double rand = 0) //{ // if (Main.netMode != 1) return; // ModPacket packet = mod.GetPacket(); // packet.Write((byte)ExpModMessageType.ClientAbility); // packet.Write(Main.LocalPlayer.whoAmI); // packet.Write(abilityID); // packet.Write(level); // packet.Write(rand); // packet.Send(); //} /* ~~~~~~~~~~~~~~~~~~~~~ Packet Senders - Server ~~~~~~~~~~~~~~~~~~~~~ */ /// <summary> /// Server giving a player debuff immunities /// </summary> /// <param name="player_index"></param> /// <param name="immunity_indecies"></param> /// <param name="duration_seconds"></param> public static void ServerDebuffImmunity(int player_index_source, int player_index_target, List <int> immunity_indecies, double duration_seconds) { if ((Main.netMode != 2) || (immunity_indecies.Count == 0)) { return; } ModPacket packet = ExperienceAndClasses.mod.GetPacket(); packet.Write((byte)ExpModMessageType.ServerDebuffImmunity); packet.Write(player_index_source); //sender (int) packet.Write(duration_seconds); //duration (double) packet.Write(immunity_indecies.Count); //number of immunities (int) foreach (int i in immunity_indecies) { packet.Write(i); //immunity indicies (int) } packet.Send(player_index_target); }
public static void SyncQE() { if (Main.netMode == NetmodeID.MultiplayerClient) { ModPacket packet = PortableStorage.Instance.GetPacket(); packet.Write((byte)MessageType.SyncQE); TagIO.Write(PortableStorage.Instance.GetModWorld <PSWorld>().Save(), packet); packet.Send(); } }
public static void ReceiveCraftRequest(BinaryReader reader, int sender) { int ent = reader.ReadInt32(); int count = reader.ReadInt32(); if (Main.netMode != 2) { //Still need to read the data for exceptions to not be thrown for (int i = 0; i < count; i++) { ItemIO.Receive(reader, true); } ItemIO.Receive(reader, true); return; } if (!TileEntity.ByID.ContainsKey(ent) || !(TileEntity.ByID[ent] is TEStorageHeart)) { return; } TEStorageHeart heart = (TEStorageHeart)TileEntity.ByID[ent]; List <Item> toWithdraw = new List <Item>(); for (int k = 0; k < count; k++) { toWithdraw.Add(ItemIO.Receive(reader, true)); } Item result = ItemIO.Receive(reader, true); List <Item> items = CraftingGUI.DoCraft(heart, toWithdraw, result); if (items.Count > 0) { ModPacket packet = MagicStorage.Instance.GetPacket(); packet.Write((byte)MessageType.CraftResult); packet.Write(items.Count); foreach (Item item in items) { ItemIO.Send(item, packet, true); } packet.Send(sender); } SendRefreshNetworkItems(ent); }
public static void SendStationSlotClick(int ent, Item item, int slot) { if (Main.netMode == 1) { ModPacket packet = PrepareStationOperation(ent, 2); ItemIO.Send(item, packet, true); packet.Write((byte)slot); packet.Send(); } }
public static void Write(int whoAmI, int level, bool force = false) { if (Main.netMode == NetmodeID.MultiplayerClient) { ModPacket packet = Ethereal.Instance.GetPacket(); packet.Write((byte)Message.SyncLevel); packet.Write(whoAmI); packet.Write(level); packet.Send(); } else if (force) { ModPacket packet = Ethereal.Instance.GetPacket(); packet.Write((byte)Message.SyncLevel); packet.Write(whoAmI); packet.Write(level); packet.Send(); } }
public void NetSync(int whoAmI) { if (Main.netMode == NetmodeID.SinglePlayer) { return; } ModPacket packet = mod.GetPacket(); packet.Write((byte)22); // New maso sync packet id packet.Write(whoAmI); foreach (EModeNPCBehaviour behaviour in EModeNpcBehaviours) { behaviour.NetSend(packet); } packet.Send(); }
public void SyncData() { if (Main.netMode == 1) { ModPacket packet = NetRouter.GetPacketTo(mod.GetTileEntity <TransferFilterTileEntity>(), mod); packet.Write(ID); packet.WriteItem(item); packet.Send(); } }
/// <summary> /// Send a packet out with specified info. /// </summary> /// <param name="info">Information.</param> public void SendPacket(params object[] info) { ModPacket packet = ModContent.GetInstance <Erilipah>().GetPacket(); packet.Write(ID); WritePacket(packet, info); packet.Send(); }
void ReceiveAddDodgeChanceBuffPlayer(BinaryReader reader, int fromWho) { byte playerID = reader.ReadByte(); float chance = reader.ReadSingle(); int duraionTicks = reader.ReadInt32(); Player player = Main.player[playerID]; player.GetModPlayer <BuffPlayer>().AddDodgeChanceBuff(player, chance, duraionTicks, false); if (Main.netMode == NetmodeID.Server) { ModPacket packet = GetPacket((byte)PacketType.AddDodgeChanceBuffPlayer); packet.Write(playerID); packet.Write(chance); packet.Write(duraionTicks); packet.Send(-1, fromWho); } }
void ReceiveAddChilledBuffPlayer(BinaryReader reader, int fromWho) { int playerID = reader.ReadByte(); float multiplier = reader.ReadSingle(); int time = reader.ReadInt32(); Player player = Main.player[playerID]; player.GetModPlayer <BuffPlayer>().AddChilledBuff(player, multiplier, time, false); if (Main.netMode == NetmodeID.Server) { ModPacket packet = GetPacket((byte)PacketType.AddChilledBuffPlayer); packet.Write((byte)playerID); packet.Write(multiplier); packet.Write(time); packet.Send(-1, fromWho); } }
void ReceiveAddGreavesMoveSpeedBuffPlayer(BinaryReader reader, int fromWho) { byte playerID = reader.ReadByte(); float speedBoost = reader.ReadSingle(); int dutaionTicks = reader.ReadInt32(); Player player = Main.player[playerID]; player.GetModPlayer <BuffPlayer>().AddGreavesMoveSpeedBuff(player, speedBoost, dutaionTicks, false); if (Main.netMode == NetmodeID.Server) { ModPacket packet = GetPacket((byte)PacketType.AddGreavesMoveSpeedBuffPlayer); packet.Write(playerID); packet.Write(speedBoost); packet.Write(dutaionTicks); packet.Send(-1, fromWho); } }
public override void NPCLoot() { if (SGAWorld.downedCaliburnGuardians < 3) { SGAWorld.downedCaliburnGuardians += 1; if (Main.netMode != 2) { SGAWorld.downedCaliburnGuardiansPoints += 1; } } if (Main.netMode != 2) { ModPacket packet = SGAmod.Instance.GetPacket(); packet.Write((int)996); packet.Write(SGAWorld.downedCaliburnGuardiansPoints); packet.Send(); } Achivements.SGAAchivements.UnlockAchivement("Caliburn", Main.LocalPlayer); }
public static void SendRefreshNetworkItems(int ent) { if (Main.netMode == NetmodeID.Server) { ModPacket packet = MagicStorageTwo.Instance.GetPacket(); packet.Write((byte)MessageType.RefreshNetworkItems); //packet.Write(ent); packet.Send(); } }
private void SendClientMessage(ExtractorMessage clientMsg, short mud = 0) { if (Main.netMode != NetmodeID.MultiplayerClient) { return; } bool AddMud = clientMsg == ExtractorMessage.SyncMud; ModPacket packet = GadgetBox.Instance.GetPacket(MessageType.ExtractorMessage, AddMud ? 7 : 5); packet.Write(ID); packet.Write((byte)clientMsg); if (AddMud) { packet.Write(mud); } packet.Send(); }
public static void Send(Rectangle area) { ModPacket packet = ErgophobiaMod.Instance.GetPacket(); packet.Write((int)area.X); packet.Write((int)area.Y); packet.Write((ushort)area.Width); packet.Write((ushort)area.Height); for (int i = area.Left; i < area.Right; i++) { for (int j = area.Top; j < area.Bottom; j++) { TileStreamLibraries.ToStream(packet, Main.tile[i, j], true, true, false); } } packet.Send(); }
public void SendAmmoShaderPacket() { if (Main.netMode == NetmodeID.MultiplayerClient) { ModPacket pak = GetPacket(); pak.Write((byte)PacketType.AMMO); ShaderID.Write(pak, ammoShaders[Main.myPlayer]); pak.Send(); } }
public static void SerializeAndSend( Mod mod, float newVelocityX, float newVelocityY, int npcIndex) { if (Main.netMode != NetmodeID.SinglePlayer) { ModPacket newPacket = mod.GetPacket(); newPacket.Write((int)mPacketMessageType); newPacket.Write(newVelocityX); newPacket.Write(newVelocityY); newPacket.Write(npcIndex); newPacket.Send(); } }
private void HandleSlotChange(int owner, SlotKind kind, int slot) { if (Main.netMode == 2) { ModPacket packet = NetRouter.GetPacketTo(this, mod); packet.Write(owner); packet.Write((byte)kind); packet.Write(slot); Item[] targetInventory = GetInventoryFromKind(owner, kind); ItemIO.Send(targetInventory[slot], packet, true, true); packet.Send(); } else if (Main.netMode == 0) { Recipe.FindRecipes(); } }
public static void SerializeAndSend( Mod mod, int playerId, bool overrideSpecialVariable, int playerModSpecialVariable) { if (Main.netMode != NetmodeID.SinglePlayer) { ModPacket newPacket = mod.GetPacket(); newPacket.Write((int)mPacketMessageType); newPacket.Write(playerId); newPacket.Write(overrideSpecialVariable); newPacket.Write(playerModSpecialVariable); newPacket.Send(); } }
public override void AI() { if (npc.ai[3] < 1) { npc.velocity.X = npc.ai[0]; npc.velocity.Y = npc.ai[1]; npc.damage = (int)npc.ai[2]; npc.ai[3] = 1; if (Main.netMode != 0) { ModPacket packet = mod.GetPacket(); packet.Write((byte)JoostModMessageType.NPCpos); packet.Write(npc.whoAmI); packet.WriteVector2(npc.position); packet.WriteVector2(npc.velocity); ModPacket netMessage = packet; netMessage.Send(); } npc.netUpdate = true; } Dust.NewDustDirect(npc.position, npc.width, npc.height, DustID.Fire, -npc.velocity.X / 5, -npc.velocity.Y / 5, 100, default(Color), 2f + (Main.rand.Next(20) * 0.1f)).noGravity = true; npc.ai[3]++; bool colliding = (npc.ai[3] > 2 && (npc.oldVelocity.X != 0 && npc.velocity.X == 0) || (npc.oldVelocity.Y != 0 && npc.velocity.Y == 0)); for (int i = 0; i < Main.maxNPCs && !colliding; i++) { NPC target = Main.npc[i]; if (!target.friendly && !target.dontTakeDamage && npc.Hitbox.Intersects(target.Hitbox)) { colliding = true; break; } } if (npc.ai[3] > 300 || colliding) { npc.life = 0; npc.HitEffect(0, 0); npc.checkDead(); } npc.rotation = (float)Math.Atan2(npc.velocity.Y, npc.velocity.X) + 1.57f; npc.lifeRegen = 0; }
private void Box_OnClick(UIMouseEvent evt, UIElement listeningElement) { if (Main.keyState.IsKeyDown(Keys.LeftAlt) || Main.keyState.IsKeyDown(Keys.RightAlt)) { boss.hidden = !boss.hidden; if (boss.hidden) { BossChecklistWorld.HiddenBosses.Add(boss.name); } else { BossChecklistWorld.HiddenBosses.Remove(boss.name); } BossChecklist.instance.bossChecklistUI.UpdateCheckboxes(); if (Main.netMode == NetmodeID.MultiplayerClient) { ModPacket packet = BossChecklist.instance.GetPacket(); packet.Write((byte)BossChecklistMessageType.RequestHideBoss); packet.Write(boss.name); packet.Write(boss.hidden); packet.Send(); } return; } UIBossCheckbox clicked = listeningElement as UIBossCheckbox; foreach (var item in BossChecklist.instance.bossChecklistUI.checklistList._items) { UIBossCheckbox box = (item as UIBossCheckbox); if (box != clicked) { box.expanded = false; box.Height.Pixels = 15; box.Recalculate(); } } expanded = !expanded; Height.Pixels = expanded ? 15 + descriptionHeight : 15; Recalculate(); }
public static void CatchNPC(int npcIndex, int who = -1, bool fromMelee = true) { NPC npc = Main.npc[npcIndex]; if (!npc.active) { return; } if (Main.netMode == NetmodeID.MultiplayerClient) { ModPacket packet = GadgetBox.Instance.GetPacket(MessageType.CatchNPC, 2); packet.Write((byte)npcIndex); packet.Write(fromMelee); packet.Send(); npc.active = false; return; } if (npc.catchItem > 0) { npc.active = false; NetMessage.SendData(MessageID.SyncNPC, -1, -1, null, npcIndex); if (npc.SpawnedFromStatue) { Vector2 position = npc.Center - new Vector2(20); Utils.PoofOfSmoke(position); if (Main.netMode == NetmodeID.Server) { NetMessage.SendData(MessageID.SyncNPC, -1, -1, null, npcIndex); NetMessage.SendData(MessageID.PoofOfSmoke, -1, -1, null, (int)position.X, position.Y); } return; } if (fromMelee) { Item.NewItem(Main.player[who].Center, 0, 0, npc.catchItem, 1, false, 0, true); } else { Item.NewItem(npc.Center, 0, 0, npc.catchItem); } } }
public override void RightClick(int i, int j) { Point16 origin = GetOrigin(i, j); Point16 topLeft = origin - tileObjectData.Origin; if (Main.netMode == 0) { Wiring.TripWire(topLeft.X, topLeft.Y, 2, 2); } else { ModPacket packet = NetRouter.GetPacketTo(this, mod); packet.Write(topLeft.X); packet.Write(topLeft.Y); packet.Send(); } mod.GetModWorld <ButtonDelayWorld>().setPoint(topLeft); Main.PlaySound(SoundID.MenuTick); }
public static void SendGuardianItemUseUpdate(int GuardianWhoAmID, int ToWho = -1, int FromWho = -1) { if (!MultiplayerActive || Main.netMode == 0 || !MainMod.ActiveGuardians.ContainsKey(GuardianWhoAmID)) { return; } ModPacket packet = StartNewMessage(MessageIDs.GuardianItemUseUpdate); TerraGuardian tg = MainMod.ActiveGuardians[GuardianWhoAmID]; BitsByte ActionPress = new BitsByte(tg.Action, tg.OffHandAction); BitsByte LastActionPress = new BitsByte(tg.LastAction, tg.LastOffHandAction); Vector2 MousePosition = tg.AimDirection; packet.Write(GuardianWhoAmID); packet.Write(ActionPress); packet.Write(LastActionPress); packet.WriteVector2(MousePosition); packet.Write(tg.SelectedItem); packet.Write(tg.SelectedOffhand); packet.Send(ToWho, FromWho); }