Exemple #1
0
        public void SendSoulsRitualInfo()
        {
            if (Main.netMode == NetmodeID.SinglePlayer)
            {
                return;
            }
            ModPacket packet = mod.GetPacket();

            packet.Write(VampKnives.SoulsRitualRecieveMPClient);
            packet.Write(ID);
            packet.Write(RitualOfSouls);
            packet.Write(RitualOwner);
            packet.Write(RoSoType);
            packet.Write(RoSoDelay);
            //ItemIO.Send(BloodCrystal, packet, true);
            //packet.Write(BloodCrystal);
            packet.Send();
        }
Exemple #2
0
        internal static void SendTeleporterWhitelist(Teleporter teleporter, int ignoreClient = -1)
        {
            if (Main.netMode == NetmodeID.SinglePlayer)
            {
                return;
            }

            ModPacket packet = GetPacket(PacketType.TeleporterWhitelist);

            packet.Write(teleporter.ID);

            for (int i = 0; i < teleporter.Whitelist.Length; i++)
            {
                packet.Write(teleporter.Whitelist[i]);
            }

            packet.Send(ignoreClient: ignoreClient);
        }
 public static void Write(int target, bool add)
 {
     if (Main.netMode == NetmodeID.MultiplayerClient)
     {
         ModPacket packet = TerrariaMoba.Instance.GetPacket();
         packet.Write((byte)Message.SyncJunglesWrath);
         packet.Write(target);
         packet.Write(add);
         packet.Send();
     }
     else if (Main.netMode == NetmodeID.Server)
     {
         ModPacket packet = TerrariaMoba.Instance.GetPacket();
         packet.Write((byte)Message.SyncJunglesWrath);
         packet.Write(add);
         packet.Send(target);
     }
 }
        public static void UpdateProjectileClass(Projectile projectile)
        {
            ModPacket packet = Instance.GetPacket();

            packet.Write((byte)ModMessageType.UpdateClassBools); // Message type, you would need to create an enum for this
            packet.Write(projectile.identity);                   // tells which projectile is being modified by the effect, the effect is then applied on the receiving end
            packet.Write((byte)projectile.owner);
            BitsByte flags = new BitsByte();

            flags[0] = projectile.melee;
            flags[1] = projectile.ranged;
            flags[2] = projectile.magic;
            flags[3] = projectile.minion;
            flags[4] = projectile.thrown;
            flags[5] = projectile.GetGlobalProjectile <MorphProjectile>().morph;
            packet.Write(flags);
            packet.Send();
        }
Exemple #5
0
        private void HandlePacketWeaponVisual(BinaryReader reader, int code, int sender)
        {
            bool weaponVis = reader.ReadBoolean();

            if (Main.netMode == 2)
            {
                ModPacket me = GetPacket();
                me.Write(code);
                me.Write(sender);
                me.Write(weaponVis);
                me.Send(-1, sender);
            }
            else
            {
                PlayerWOFX pfx = Main.player[sender].GetModPlayer <PlayerWOFX>(this);
                pfx.weaponVisual = weaponVis;
            }
        }
        public static void RequestDowsingNpcFromServer(DowsingMod mymod, Player player, int npc_type, Vector2 position, Action <int> callback)
        {
            if (Main.netMode != 1)
            {
                return;
            }                                               // Clients only

            DowsingNetProtocol.DowsingNpcRequestQueue.Enqueue(callback);

            ModPacket packet = mymod.GetPacket();

            packet.Write((byte)DowsingNetProtocolTypes.DowsingNpcRequest);
            packet.Write((int)player.whoAmI);
            packet.Write((int)npc_type);
            packet.Write((float)position.X);
            packet.Write((float)position.Y);
            packet.Send();
        }
        public override bool NewRightClick(int i, int j)
        {
            if (Main.netMode == 0)
            {
                Wiring.TripWire(i, j, 1, 1);
            }
            else
            {
                ModPacket packet = NetRouter.GetPacketTo(this, mod);
                packet.Write((Int16)i);
                packet.Write((Int16)j);
                packet.Send();
            }
            ModContent.GetInstance <ButtonDelayWorld>().setPoint(new Point16(i, j));

            Main.PlaySound(SoundID.MenuTick);
            return(true);
        }
Exemple #8
0
        //Send packet to the server to tell it to drop this npcs corresponding inventory on the ground
        private void SendDropInventory()
        {
            ModPacket packet = mod.GetPacket();

            packet.Write((byte)MediumcoreGhostInventories.MediumcoreGhostInventoriesMessageType.DropInventory);

            packet.Write(position.X);
            packet.Write(position.Y);

            Rectangle rect = npc.getRect();

            packet.Write(rect.X);
            packet.Write(rect.Y);
            packet.Write(rect.Height);
            packet.Write(rect.Width);

            packet.Send();
        }
        private void SendSpawnItem(Rectangle rect, Item item)
        {
            ModContent.GetInstance <MediumcoreGhostInventories>().Logger.Debug("sending spawn item");
            ModPacket packet = ModContent.GetInstance <MediumcoreGhostInventories>().GetPacket();

            packet.Write((byte)MediumcoreGhostInventories.MediumcoreGhostInventoriesMessageType.DropInventory);

            packet.Write(rect.X);
            packet.Write(rect.Y);
            packet.Write(rect.Height);
            packet.Write(rect.Width);

            packet.Write(item.netID);
            packet.Write(item.stack);
            packet.Write(item.prefix);

            packet.Send();
        }
        internal void SendRequestToServer(int retries)
        {
            ModPacket packet = this.GetClientPacket(true, false);

            try {
                packet.Send();
            } catch (Exception e) {
                LogHelpers.Warn(e.ToString());
                return;
            }

            if (ModHelpersMod.Config.DebugModeNetInfo && this.IsVerbose)
            {
                LogHelpers.Log(">" + this.GetPacketName() + " SendRequestToServer");
            }

            this.RetryRequestToServerIfTimeout(retries);
        }
Exemple #11
0
        public static void SendCableModification(Cable cable, int excludedPlayer = -1)
        {
            if (Main.netMode == NetmodeID.SinglePlayer)
            {
                return;
            }

            ModPacket packet = PotentiaTransport.Instance.GetPacket();

            packet.Write((byte)MessageType.CableModification);
            TagIO.Write(new TagCompound
            {
                ["Position"]    = cable.position,
                ["Connections"] = cable.connections,
                ["IO"]          = (int)cable.IO
            }, packet);
            packet.Send(ignoreClient: excludedPlayer);
        }
Exemple #12
0
        private void HandleChestItemChange(int chest)
        {
            int targetPlayer = WhichPlayerInChest(chest);

            if (targetPlayer != -1)
            {
                if (Main.netMode == 2)
                {
                    ModPacket packet = NetRouter.GetPacketTo(this, mod);
                    packet.Send(targetPlayer);
                    Main.player[targetPlayer].chest = -1;
                }
                else if (Main.netMode == 0)
                {
                    Recipe.FindRecipes();
                }
            }
        }
        ////////////////
        // Client Senders
        ////////////////

        public static void SendInvasionRequestFromClient(int musicType, IReadOnlyList <KeyValuePair <int, ISet <int> > > spawnInfo)
        {
            // Clients only
            if (Main.netMode != 1)
            {
                return;
            }

            var       mymod        = DynamicInvasionsMod.Instance;
            ModPacket packet       = mymod.GetPacket();
            string    spawnInfoEnc = JsonConvert.SerializeObject(spawnInfo);

            packet.Write((byte)NetProtocolTypes.RequestInvasion);
            packet.Write((int)musicType);
            packet.Write((string)spawnInfoEnc);

            packet.Send();
        }
Exemple #14
0
        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);
        }
Exemple #15
0
        public override void RightClick(int i, int j)
        {
            //don't bother if there's already a Crystal King in the world
            for (int x = 0; x < Main.npc.Length; x++)
            {
                if (Main.npc[x].active && Main.npc[x].type == mod.NPCType <NPCs.Bosses.CrystalKing>())
                {
                    return;
                }
            }

            //check if player has a Cryptic Crystal
            if (Main.LocalPlayer.HasItem(mod.ItemType <Items.CrypticCrystal>()))
            {
                // TODO, someone said this didn't work. Migrate to Main.LocalPlayer.ConsumeItem() and check MP code.
                //now to search for it
                Item[] inventory = Main.LocalPlayer.inventory;
                for (int k = 0; k < inventory.Length; k++)
                {
                    if (inventory[k].type == mod.ItemType <Items.CrypticCrystal>())
                    {
                        //consume it, and summon the Crystal King!
                        inventory[k].stack--;
                        if (inventory[k].stack == 0)
                        {
                            inventory[k].TurnToAir();
                        }
                        if (Main.netMode == NetmodeID.MultiplayerClient)
                        {
                            ModPacket packet = mod.GetPacket();
                            packet.Write((byte)CrystiliumModMessageType.SpawnBossSpecial);
                            packet.Send();
                        }
                        else
                        {
                            NPC.SpawnOnPlayer(Main.myPlayer, mod.NPCType <NPCs.Bosses.CrystalKing>());
                        }

                        //and don't spam crystal kings if the player didn't ask for it :P
                        return;
                    }
                }
            }
        }
Exemple #16
0
        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
            }
        }
Exemple #17
0
        internal void SendRequestToClient(int toWho, int ignoreWho, int retries)
        {
            var       mymod  = ModHelpersMod.Instance;
            ModPacket packet = this.GetServerPacket(true);

            try {
                packet.Send(toWho, ignoreWho);
            } catch (Exception e) {
                LogHelpers.Warn(e.ToString());
                return;
            }

            if (mymod.Config.DebugModeNetInfo && this.IsVerbose)
            {
                LogHelpers.Log(">" + this.GetPacketName() + " SendRequestToClient " + toWho + ", " + ignoreWho);
            }

            this.RetryRequestToClientIfTimeout(toWho, ignoreWho, retries);
        }
Exemple #18
0
 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();
     }
 }
Exemple #19
0
        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);
            }
        }
        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();
        }
Exemple #21
0
        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);
            }
        }
 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);
 }
        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();
        }
Exemple #24
0
        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();
            }
        }
Exemple #26
0
        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);
            }
        }
        /// <summary>
        /// Server's request to new player (includes map settings)
        /// </summary>
        /// <param name="mod"></param>
        /// <param name="playerIndex"></param>
        public static void ServerNewPlayerSync(Mod mod, int playerIndex)
        {
            if (Main.netMode != 2)
            {
                return;
            }

            ModPacket packet = mod.GetPacket();

            packet.Write((byte)ExpModMessageType.ServerNewPlayerSync);
            packet.Write(ExperienceAndClasses.worldClassDamageReduction);
            packet.Write(ExperienceAndClasses.worldExpModifier);
            packet.Write(ExperienceAndClasses.worldIgnoreCaps);
            packet.Write(ExperienceAndClasses.worldLevelCap);
            packet.Write(ExperienceAndClasses.worldRequireAuth);
            packet.Write(ExperienceAndClasses.worldTrace);
            packet.Write(ExperienceAndClasses.worldDeathPenalty);
            packet.Send(playerIndex);
        }
        /// <summary>
        /// Server updating map settings
        /// </summary>
        /// <param name="mod"></param>
        public static void ServerUpdateMapSettings(Mod mod)
        {
            if (Main.netMode != 2)
            {
                return;
            }

            ModPacket packet = mod.GetPacket();

            packet.Write((byte)ExpModMessageType.ServerUpdateMapSettings);
            packet.Write(ExperienceAndClasses.worldClassDamageReduction);
            packet.Write(ExperienceAndClasses.worldExpModifier);
            packet.Write(ExperienceAndClasses.worldIgnoreCaps);
            packet.Write(ExperienceAndClasses.worldLevelCap);
            packet.Write(ExperienceAndClasses.worldRequireAuth);
            packet.Write(ExperienceAndClasses.worldTrace);
            packet.Write(ExperienceAndClasses.worldDeathPenalty);
            packet.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();
            }
        }
        ///// <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);
        }