コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        //  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;
            }
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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;
            }
        }
コード例 #6
0
        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;
            }
            }
        }