public void SpawnMob(GameClient client, int mobId) // this shoudn't even rely on client or it's position though i know this is just a hack atm ;) /raist.
{
int nId = mobId;
if (client.Player.Hero.Position == null)
return;
if (client.ObjectIdsSpawned == null)
{
client.ObjectIdsSpawned = new List<int>();
client.ObjectIdsSpawned.Add(client.ObjectId - 100);
client.ObjectIdsSpawned.Add(client.ObjectId);
}
client.ObjectId++;
client.ObjectIdsSpawned.Add(client.ObjectId);
#region ACDEnterKnown Hittable Zombie
client.SendMessage(new ACDEnterKnownMessage()
{
Id = 0x003B,
Field0 = client.ObjectId,
Field1 = nId,
Field2 = 0x8,
Field3 = 0x0,
Field4 = new WorldLocationMessageData()
{
Field0 = 1.35f,
Field1 = new PRTransform()
{
Field0 = new Quaternion()
{
Amount = 0.768145f,
Axis = new Vector3D()
{
X = 0f,
Y = 0f,
Z = -0.640276f,
},
},
ReferencePoint = new Vector3D()
{
X = client.Player.Hero.Position.X + 5,
Y = client.Player.Hero.Position.Y + 5,
Z = client.Player.Hero.Position.Z,
},
},
Field2 = 0x772E0000,
},
Field5 = null,
Field6 = new GBHandle()
{
Field0 = 1,
Field1 = 1,
},
Field7 = 0x00000001,
Field8 = nId,
Field9 = 0x0,
Field10 = 0x0,
Field11 = 0x0,
Field12 = 0x0,
Field13 = 0x0
});
client.SendMessage(new AffixMessage()
{
Id = 0x48,
Field0 = client.ObjectId,
Field1 = 0x1,
aAffixGBIDs = new int[0]
});
client.SendMessage(new AffixMessage()
{
Id = 0x48,
Field0 = client.ObjectId,
Field1 = 0x2,
aAffixGBIDs = new int[0]
});
client.SendMessage(new ACDCollFlagsMessage
{
Id = 0xa6,
Field0 = client.ObjectId,
Field1 = 0x1
});
client.SendMessage(new AttributesSetValuesMessage
{
Id = 0x4d,
Field0 = client.ObjectId,
atKeyVals = new NetAttributeKeyValue[15] {
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[214],
Int = 0
},
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[464],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 1048575,
Attribute = GameAttribute.Attributes[441],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30582,
Attribute = GameAttribute.Attributes[560],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30286,
Attribute = GameAttribute.Attributes[560],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30285,
Attribute = GameAttribute.Attributes[560],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30284,
Attribute = GameAttribute.Attributes[560],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30283,
Attribute = GameAttribute.Attributes[560],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30290,
Attribute = GameAttribute.Attributes[560],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 79486,
Attribute = GameAttribute.Attributes[560],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30286,
Attribute = GameAttribute.Attributes[460],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30285,
Attribute = GameAttribute.Attributes[460],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30284,
Attribute = GameAttribute.Attributes[460],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30283,
Attribute = GameAttribute.Attributes[460],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30290,
Attribute = GameAttribute.Attributes[460],
Int = 1
}
}
});
client.SendMessage(new AttributesSetValuesMessage
{
Id = 0x4d,
Field0 = client.ObjectId,
atKeyVals = new NetAttributeKeyValue[9] {
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[86],
Float = 4.546875f
},
new NetAttributeKeyValue {
Field0 = 79486,
Attribute = GameAttribute.Attributes[460],
Int = 1
},
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[84],
Float = 4.546875f
},
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[81],
Int = 0
},
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[77],
Float = 4.546875f
},
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[69],
Int = 1
},
new NetAttributeKeyValue {
Field0 = 30582,
Attribute = GameAttribute.Attributes[460],
Int = 1
},
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[67],
Int = 10
},
new NetAttributeKeyValue {
Attribute = GameAttribute.Attributes[38],
Int = 1
}
}
});
client.SendMessage(new ACDGroupMessage
{
Id = 0xb8,
Field0 = client.ObjectId,
Field1 = unchecked((int)0xb59b8de4),
Field2 = unchecked((int)0xffffffff)
});
client.SendMessage(new ANNDataMessage
{
Id = 0x3e,
Field0 = client.ObjectId
});
client.SendMessage(new ACDTranslateFacingMessage
{
Id = 0x70,
Field0 = client.ObjectId,
Field1 = (float)(RandomHelper.NextDouble() * 2.0 * Math.PI),
Field2 = false
});
client.SendMessage(new SetIdleAnimationMessage
{
Id = 0xa5,
Field0 = client.ObjectId,
Field1 = 0x11150
});
client.SendMessage(new SNONameDataMessage
{
Id = 0xd3,
Field0 = new SNOName
{
Field0 = 0x1,
Field1 = nId
}
});
#endregion
client.PacketId += 30 * 2;
client.SendMessage(new DWordDataMessage()
{
Id = 0x89,
Field0 = client.PacketId,
});
client.Tick += 20;
client.SendMessage(new EndOfTickMessage()
{
Id = 0x008D,
Field0 = client.Tick - 20,
Field1 = client.Tick
});
}
}