this is for both lotf and coemu
 
HomeCalendarFAQSearchMemberlistUsergroupsRegisterLog in

Share | 
 

 Marriage[LoveStone]

View previous topic View next topic Go down 
AuthorMessage
Admin
Admin


Posts : 56
Join date : 2009-08-20

PostSubject: Marriage[LoveStone]   Sun Aug 23, 2009 1:38 pm

Okay so first your going to need the packet for the MarriageMouse...:

in Packet.cs dearch for

Code:
public unsafe class Packets
    {

After it add:

Code:
public static byte[] MarriageMouse(uint CharUID)
        {
            byte[] Mouse = new byte[24];
            fixed (byte* Ptr = Mouse)
            {
                *(ushort*)(Ptr + 0) = 24;
                *(ushort*)(Ptr + 2) = 1010;
                *(uint*)(Ptr + 8) = CharUID;
                *(uint*)(Ptr + 12) = 1067;
                *(uint*)(Ptr + 22) = 116;
                return Mouse;
            }
        }
in Client.cs find:

Code:
public void GetPacket(byte[] Data)

Replace it with:

Code:
public unsafe void GetPacket(byte[] data)

Next, In Client.cs find:

Code:
if (AttackType == 2 || AttackType == 25)

Above it add:

Code:
if (AttackType == 8)//Marriage Proposal
                            {
                                fixed (byte* Ptr = Data)
                                {
                                    uint TargetUID = *(uint*)(Ptr + 12);
                                    Character Target = (Character)World.AllChars[TargetUID];
                                    *(uint*)(Ptr + 8) = MyChar.UID;
                                    {
                                        if (MyChar.Model == 2001 || MyChar.Model == 2002)
                                        {
                                            if (Target.Model == 1003 || Target.Model == 1004)
                                            {
                                                if (Target.Spouse == "" || Target.Spouse == "None")
                                                {
                                                    Target.MyClient.SendPacket(Data);
                                                }
                                                else
                                                {
                                                    SendPacket(General.MyPackets.NPCSay(Target.Name + " has already got an Spouse."));
                                                    SendPacket(General.MyPackets.NPCLink("Ok.", 255));
                                                    SendPacket(General.MyPackets.NPCSetFace(30));
                                                    SendPacket(General.MyPackets.NPCFinish());
                                                }
                                            }
                                            else
                                            {
                                                SendPacket(General.MyPackets.NPCSay("No Marriage For Same Gender."));
                                                SendPacket(General.MyPackets.NPCLink("I see.", 255));
                                                SendPacket(General.MyPackets.NPCSetFace(30));
                                                SendPacket(General.MyPackets.NPCFinish());
                                            }
                                        }
                                        if (MyChar.Model == 1003 || MyChar.Model == 1004)
                                        {
                                            if (Target.Model == 2001 || Target.Model == 2002)
                                            {
                                                if (Target.Spouse == "" || Target.Spouse == "None")
                                                {
                                                    Target.MyClient.SendPacket(Data);
                                                }
                                                else
                                                {
                                                    SendPacket(General.MyPackets.NPCSay(Target.Name + " has already got an Spouse."));
                                                    SendPacket(General.MyPackets.NPCLink("Ok.", 255));
                                                    SendPacket(General.MyPackets.NPCSetFace(30));
                                                    SendPacket(General.MyPackets.NPCFinish());
                                                }
                                            }
                                            else
                                            {
                                                SendPacket(General.MyPackets.NPCSay("No Marriage For Same Gender."));
                                                SendPacket(General.MyPackets.NPCLink("I see.", 255));
                                                SendPacket(General.MyPackets.NPCSetFace(30));
                                                SendPacket(General.MyPackets.NPCFinish());
                                            }
                                        }
                                    }
                                }
                            }
                            if (AttackType == 9)//Marriage Accept
                            {
                                fixed (byte* Ptr = Data)
                                {
                                    uint UID = *(uint*)(Ptr + 12);
                                    Character Char = (Character)World.AllChars[UID];
                                    {
                                        if (Char.Model == 2001 || Char.Model == 2002)
                                        {
                                            if (MyChar.Model == 1003 || MyChar.Model == 1004)
                                            {
                                                Char.Spouse = MyChar.Name;
                                                MyChar.Spouse = Char.Name;
                                                MyChar.SaveSpouse();
                                                Char.SaveSpouse();
                                                SendPacket(General.MyPackets.CharacterInfo(MyChar));
                                                World.SendMsgToAll(Char.Name + " and " + MyChar.Name + " has been united as husband and wife!", "LoveStone", 2011);
                                            }
                                            else
                                            {
                                                SendPacket(General.MyPackets.NPCSay("No Marriage For Same Gender."));
                                                SendPacket(General.MyPackets.NPCLink("I see.", 255));
                                                SendPacket(General.MyPackets.NPCSetFace(30));
                                                SendPacket(General.MyPackets.NPCFinish());
                                            }
                                        }
                                        if (Char.Model == 1003 || Char.Model == 1004)
                                        {
                                            if (MyChar.Model == 2001 || MyChar.Model == 2002)
                                            {
                                                Char.Spouse = MyChar.Name;
                                                MyChar.Spouse = Char.Name;
                                                MyChar.SaveSpouse();
                                                Char.SaveSpouse();
                                                SendPacket(General.MyPackets.CharacterInfo(MyChar));
                                                World.SendMsgToAll(Char.Name + " and " + MyChar.Name + " has been united as husband and wife!", "LoveStone", 2011);
                                            }
                                            else
                                            {
                                                SendPacket(General.MyPackets.NPCSay("No Marriage For Same Gender."));
                                                SendPacket(General.MyPackets.NPCLink("I see.", 255));
                                                SendPacket(General.MyPackets.NPCSetFace(30));
                                                SendPacket(General.MyPackets.NPCFinish());
                                            }
                                        }
                                    }
                                }
                            }

For the NPC Dialog, near in Case 2031: find:

Code:
if (CurrentNPC == 390)

Replace the whole code with:

Code:
if (CurrentNPC == 390)
                            {
                                if (MyChar.Spouse == "" || MyChar.Spouse == "None")
                                {
                                    SendPacket(General.MyPackets.NPCSay("Do you wish to propose to your sweetheart?"));
                                    SendPacket(General.MyPackets.NPCSay("Remember that marriage is a serious commitment, do not enter into it lightly."));
                                    SendPacket(General.MyPackets.NPCLink("Yes I want to propose", 1));
                                    SendPacket(General.MyPackets.NPCLink("Nooo I'm not ready", 255));
                                    SendPacket(General.MyPackets.NPCSetFace(30));
                                    SendPacket(General.MyPackets.NPCFinish());
                                }
                                else
                                {
                                    SendPacket(General.MyPackets.NPCSay("You have already spouse."));
                                    SendPacket(General.MyPackets.NPCLink("Sorry", 255));
                                    SendPacket(General.MyPackets.NPCSetFace(30));
                                    SendPacket(General.MyPackets.NPCFinish());
                                }
                            }
For the controls:

Code:
if (CurrentNPC == 390)
                            {
                                if (Control == 1)
                                {
                                    SendPacket(General.MyPackets.NPCSay("Click on your sweetheart to propose to them"));
                                    SendPacket(General.MyPackets.NPCLink("OK", 2));
                                    SendPacket(General.MyPackets.NPCSetFace(30));
                                    SendPacket(General.MyPackets.NPCFinish());
                                }
                                if (Control == 2)
                                {
                                    if (MyChar.Spouse == "" || MyChar.Spouse == "None")
                                    {
                                        MyChar.MyClient.SendPacket(Packets.MarriageMouse(MyChar.UID));
                                    }
                                }
                            }
Next, in Character.cs find:

Code:
public void Save()

Above add:

Code:
public void SaveSpouse()
        {
            if (MyClient.There)
                if (MyClient.Online)
                    DataBase.SaveSpouse(this);
        }

Find:

Code:
public string Name = "";

Below add:

Code:
public string Spouse = "";

In DataBase.cs find:

Code:
Charr.Name = (string)DR["CharName"];

Below add:

Code:
Charr.Spouse = (string)DR["Spouse"];

Find:

Code:
public static void SaveChar(Character Charr)

Above add:

Code:
public static void SaveSpouse(Character Charr)
        {
            try
            {
                MySqlCommand Command = new MySqlCommand("UPDATE `Characters` SET `Spouse` = '" + Charr.Spouse + "' WHERE `Account` = '" + Charr.MyClient.Account + "'", Connection);
                Command.ExecuteNonQuery();
            }
            catch (Exception Exc) { General.WriteLine(Convert.ToString(Exc)); }
        }

In Packets.cs, change your public byte[] ViewEquip(Character Char) with:

Code:
public byte[] ViewEquip(Character Char)
        {
            ushort PacketType = 0x3f7;
            string Spouse = Char.Spouse;

                byte[] Packet = new byte[11 + Spouse.Length];

                fixed (byte* p = Packet)
                {
                    *((ushort*)p) = (ushort)Packet.Length;
                    *((ushort*)(p + 2)) = (ushort)PacketType;
                    *((uint*)(p + 4)) = (uint)Char.UID;
                    *(p + 8) = 0x10;
                    *(p + 9) = 0x01;
                    *(p + 10) = (byte)Spouse.Length;

                    for (int i = 0; i < Spouse.Length; i++)
                    {
                        *(p + 11 + i) = Convert.ToByte(Spouse[i]);
                    }
                }
            return Packet;
        }

and public byte[] CharacterInfo(Character Charr) with:

Code:
public byte[] CharacterInfo(Character Charr)
        {
            byte[] Packet = new byte[70 + Charr.Name.Length + Charr.Spouse.Length];
            long Model = Convert.ToInt64(Convert.ToString(Charr.Avatar) + Convert.ToString(Charr.Model));

            fixed (byte* p = Packet)
            {
                *((ushort*)p) = (ushort)Packet.Length;
                *((ushort*)(p + 2)) = 1006;
                *((uint*)(p + 4)) = (uint)Charr.UID;
                *((uint*)(p + 8)) = (uint)Model;
                *((ushort*)(p + 12)) = (ushort)Charr.Hair;
                *((uint*)(p + 14)) = (uint)Charr.Silvers;
                *((uint*)(p + 18)) = (uint)Charr.CPs;
                *((uint*)(p + 22)) = (uint)Charr.Exp;
                *((ushort*)(p + 42)) = (ushort)5130;
                *((ushort*)(p + 46)) = (ushort)Charr.Str;
                *((ushort*)(p + 48)) = (ushort)Charr.Agi;
                *((ushort*)(p + 50)) = (ushort)Charr.Vit;
                *((ushort*)(p + 52)) = (ushort)Charr.Spi;
                *((ushort*)(p + 54)) = (ushort)Charr.StatP;
                *((ushort*)(p + 56)) = (ushort)Charr.CurHP;
                *((ushort*)(p + 58)) = (ushort)Charr.MaxMana();
                *((ushort*)(p + 60)) = (ushort)Charr.PKPoints;
                *(p + 62) = Charr.Level;
                *(p + 63) = Charr.Job;
                *(p + 66) = 1;
                *(p + 67) = 2;
                *(p + 68) = (byte)Charr.Name.Length;

                Packet[69 + Charr.Name.Length] = (byte)Charr.Spouse.Length;

                for (sbyte i = 0; i < Charr.Name.Length; i++)
                {
                    *(p + 69 + i) = (byte)Charr.Name[i];
                }
                for (sbyte i = 0; i < Charr.Spouse.Length; i++)
                {
                    *(p + 70 + Charr.Name.Length + i) = (byte)Charr.Spouse[i];
                }

            }
            return Packet;
        }

In your database edit the character table and add a new field named Spouce dont edit the db yet as i dont have all the info for the database.

Hope this helps,
Questions, Errors, Comments(negative and postive) are free


All Credits : pauldexter and ©️ Haydz , E*PVPs
i only post here ;D
Back to top Go down
View user profile http://openprojects.forumotions.net
 
Marriage[LoveStone]
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» Gerard Butler admits marriage and kids could be on the horizon as he hits the big 4-0
» Capri, Hollywood style marriage
» Should Parents Interfere in Marriage Plans?
» Sandra Bullock Fears George Clooney Is “Rushing Into Marriage,” Tells Him To Postpone Wedding?
» Marriage to George Clooney: Amal secures herself

Permissions in this forum:You cannot reply to topics in this forum
lotf/coemu project :: LOTF :: Codes-
Jump to: