[Guide]How To Put Marriage !

12/30/2008 16:16 davidcerv#1
In Packet.cs find:
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(M yChar.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;
}
Dont critice me :(
XDD
12/30/2008 17:39 turk55#2
double post
12/30/2008 21:54 © Haydz#3
Yeah, because you made that yourself.
12/30/2008 22:34 Tw3ak#4
Why would you post a guide that there has been at least 4 others released ??

ALL you did was copy+paste some one elses guilde again in another thread.:rolleyes:
12/30/2008 22:35 LetterX#5
"6 years playing" in signature.
12/31/2008 09:59 KraHen#6
I lolled.
#request close, people can search for this
12/31/2008 10:45 davidcerv#7
Quote:
Originally Posted by turk55 View Post
double post
Double Post ?? o.o??
12/31/2008 19:20 sherwin9#8
Quote:
Originally Posted by ElDeRnEcRo View Post
I lolled.
#request close, people can search for this
You can't close this thread HAHAH nuub.

You guys always say ppl are lazy right, and now you guys are whining again... GOOOSSSHHH. Well I guess we've just found someone that helps us with our lazyness. Just don't give him +k...

Ciao!