Beispiel #1
0
        public static void GuildstoneLocation(Client client, MabiCreature creature)
        {
            var packet = new MabiPacket(Op.GuildstoneLocation, creature.Id);
            packet.PutByte(1);
            packet.PutInts(creature.Guild.Region);
            packet.PutInts(creature.Guild.X);
            packet.PutInts(creature.Guild.Y);

            client.Send(packet);
        }
Beispiel #2
0
        /// <summary>
        /// Broadcasts WalkTo. If to is null, the creature's position is used.
        /// </summary>
        /// <param name="wm"></param>
        /// <param name="creature"></param>
        public static void WalkTo(MabiCreature creature, MabiVertex to = null)
        {
            var pos = creature.GetPosition();

            var p = new MabiPacket(Op.WalkTo, creature.Id);
            p.PutInts(pos.X, pos.Y); // From
            p.PutInts(pos.X, pos.Y); // To
            p.PutBytes(1, 0);

            WorldManager.Instance.Broadcast(p, SendTargets.Range, creature);
        }
Beispiel #3
0
        /// <summary>
        /// Skill complete with an additional id parameter, and 2 unknown ints.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature"></param>
        /// <param name="skillId"></param>
        /// <param name="id"></param>
        /// <param name="unk1"></param>
        /// <param name="unk2"></param>
        public static void SkillComplete(Client client, MabiCreature creature, SkillConst skillId, ulong id, uint unk1, uint unk2)
        {
            var packet = new MabiPacket(Op.SkillComplete, creature.Id);
            packet.PutShort((ushort)skillId);
            packet.PutLong(id);
            packet.PutInts(unk1, unk2);

            client.Send(packet);
        }
Beispiel #4
0
        /// <summary>
        /// Skill use with a delay?
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature"></param>
        /// <param name="skillId"></param>
        /// <param name="ms"></param>
        /// <param name="unk"></param>
        public static void SkillUse(Client client, MabiCreature creature, SkillConst skillId, uint ms, uint unk)
        {
            var packet = new MabiPacket(Op.SkillUse, creature.Id);
            packet.PutShort((ushort)skillId);
            packet.PutInts(ms, unk);

            client.Send(packet);
        }
Beispiel #5
0
    public void OpenMapWindow(WorldClient c, MabiPC cr, MabiProp pr)
    {
        var gate = _gates.Values.FirstOrDefault(a => a.Region == cr.Region);
        if (gate == null || gate.Prop.State == "closed")
            return;

        if(!cr.Keywords.Contains(gate.KeywordId))
            cr.Keywords.Add(gate.KeywordId);

        var mygates = _gates.Values.Where(a => cr.Keywords.Contains(a.KeywordId) || _freeRoaming || cr.Keywords.Contains(10142));

        var p = new MabiPacket(Op.MoonGateMap, cr.Id);
        p.PutInt(2);
        p.PutString(gate.Ident);
        p.PutByte((byte)mygates.Count());
        foreach (var g in mygates)
        {
            p.PutShort(g.KeywordId);
            p.PutByte(1);
            p.PutInts(g.Region, g.X, g.Y);
        }
        c.Send(p);
    }