void LoadGrabPet()
{
//Wrap our function inside a catcher
try
{
//Query check
MsSQL ms = new MsSQL("SELECT * FROM pets WHERE playerid='" + Character.Information.CharacterID + "' AND pet_active='1'");
//Get active pet count
int checkactive = ms.Count();
//If the player has an active grabpet
if (checkactive > 0)
{
//Set new pet object
pet_obj o = new pet_obj();
//Create new data reader for mssql
using (SqlDataReader reader = ms.Read())
{
//While the sql data reader is reading
while (reader.Read())
{
//Get pet location inside the player inventory
string slot = reader.GetString(12);
//Check our slot inside the database
int slotcheck = MsSQL.GetDataInt("SELECT * FROM char_items WHERE itemnumber='" + slot + "' AND owner='" + Character.Information.CharacterID + "' AND storagetype='0'", "slot");
//Set slot item information (item).
Global.slotItem item = GetItem((uint)Character.Information.CharacterID, Convert.ToByte(slotcheck), 0);
//Set model information of the pet
int model = Global.objectdata.GetItem(Data.ItemBase[item.ID].ObjectName);
//Set id for the pet (First database value is always unique).
Character.Grabpet.Grabpetid = item.dbID;
//Set unique id
o.UniqueID = Character.Grabpet.Grabpetid;
//Pet object model
o.Model = model;
//Spawning location of the pet
o.x = Character.Position.x + rnd.Next(1, 3);
o.z = Character.Position.z;
o.y = Character.Position.y + rnd.Next(1, 3);
o.xSec = Character.Position.xSec;
o.ySec = Character.Position.ySec;
//Owner id information
o.OwnerID = Character.Information.CharacterID;
//Owner name information
o.OwnerName = Character.Information.Name;
//Set walking state
o.Walking = Character.Position.Walking;
//Set petname
o.Petname = reader.GetString(3);
//Set our switch case
o.Named = 2;
//Set speed of pet (Need to check speed on official).
o.Run = Character.Speed.RunSpeed - 3;
o.Walk = Character.Speed.WalkSpeed - 3;
o.Zerk = Character.Speed.BerserkSpeed - 3;
//Set grabpet as active so there cant be double spawns
Character.Grabpet.Active = true;
//Set object information to true
o.Information = true;
//Spawn the pet
Systems.HelperObject.Add(o);
//Set global information for the pet
Character.Grabpet.Details = o;
//Send the visual packet for details of the pet management
client.Send(Packet.Pet_Information_grab(o, Convert.ToByte(slotcheck)));
//Spawn
o.SpawnMe();
//Update state into database
MsSQL.UpdateData("UPDATE pets SET pet_active='1' WHERE pet_unique='" + Character.Grabpet.Grabpetid + "' AND playerid='" + Character.Information.CharacterID + "'");
}
//Close sql reader
ms.Close();
}
//Set state
Character.Grabpet.Active = true;
}
}
catch (Exception ex)
{
Console.WriteLine("Grab pet player load error {0}", ex);
Systems.Debugger.Write(ex);
}
}