|
You last visited: Today at 21:24
Advertisement
How to guess Entity Spawn (10014) packet?
Discussion on How to guess Entity Spawn (10014) packet? within the CO2 Private Server forum part of the Conquer Online 2 category.
07/05/2014, 01:36
|
#1
|
elite*gold: 0
Join Date: Jul 2009
Posts: 908
Received Thanks: 390
|
How to guess Entity Spawn (10014) packet?
Hyia, thats me again xD
Well, ive been using ExodusBinaries, been upgrading it and gotta say that ive been learning alot too, hope i can make something good out of it, or maybe when i feel ready, re-build it with better structure..
Didnt make much progress depending on who sees, but i think im going well...
But ive been working on respawns and its almost done, except the fact that i cant see the target infos.. Example, name;;;
I can see my name, i can see NPCs names :v I still not working on mobs lol idk why, but i guess its gonna be harder...
but i cant see other players name.. ><
am i missing something?
It's version 5180...
The Server>Client Packet (Not bidirectional), how can i guess its values? The client gives any signal?
====Off thread=====
I fixed the logout issue *-*
Now the characters can logout and they disappear from other players screen gotta thank the guy that helped me with that.. but i forgot his name lol
|
|
|
07/05/2014, 01:55
|
#2
|
elite*gold: 0
Join Date: Jul 2006
Posts: 2,216
Received Thanks: 793
|
On this patch - Korvacs` wiki, other sources, trial and error, or RE. I would advise you the first one.
|
|
|
07/05/2014, 05:16
|
#3
|
elite*gold: 0
Join Date: Jul 2009
Posts: 908
Received Thanks: 390
|
Quote:
Originally Posted by KraHen
On this patch - Korvacs` wiki, other sources, trial and error, or RE. I would advise you the first one.
|
The wiki has the 5165, i tried to follow it.. but didnt work
My name started to disappear hah
Ive tried Phoenix Source from Spirited... the 10014 isnt complete, only shows the character name also :/ lets try out guessing it alone hahah
|
|
|
07/05/2014, 06:43
|
#4
|
elite*gold: 0
Join Date: Dec 2010
Posts: 105
Received Thanks: 13
|
at offset 218 name length then the name. That is for 5500 though, not sure if it changed before that. But hey one step closer to solving :P
|
|
|
07/05/2014, 08:33
|
#5
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,211
Received Thanks: 4,114
|
Well, I still have the original Trinity-Co source from 5187 (before it was actually leaked). According to Alex's old work on the source, string count is at offset 155, name length at 156, name bytes at 157, hairstyle at 62, x at 64, y at 66, direction at 68, and action at 69 (haha). I don't expect people to guess random offsets on old patches - that's why we have somewhat complete packet wikis.
|
|
|
07/05/2014, 18:28
|
#6
|
elite*gold: 28
Join Date: Jun 2010
Posts: 2,223
Received Thanks: 867
|
Quote:
Originally Posted by Spirited
Well, I still have the original Trinity-Co source from 5187 (before it was actually leaked). According to Alex's old work on the source, string count is at offset 155, name length at 156, name bytes at 157, hairstyle at 62, x at 64, y at 66, direction at 68, and action at 69 (haha). I don't expect people to guess random offsets on old patches - that's why we have somewhat complete packet wikis.
|
He's right ya'know; according to the 5187 source I was working on during the anyway;
UInt16(160 + Name.Length);//Offset 0
UInt16(10014); //Packet Type - Offset 2
UInt32(Body); //Offset 4
UInt32(UID);//Offset 8
Byte(Level); //Offset 75 for players, 60 for everything else.
Byte(1); //String Count - Offset 155
Byte(Name.Length); //Offset 156
String(Name);//Offset 157
|
|
|
07/05/2014, 18:44
|
#7
|
elite*gold: 0
Join Date: Jul 2009
Posts: 908
Received Thanks: 390
|
Well, this is what ive got..
Code:
public Entity(string Name)
: base(8 + 160 +
Name.Length)
{
WORD((ushort)(ToArray().Length - 8), 0);
WORD(10014, 2);
Packet[71] = 1;
this.Name = Name;
}
#region Accessors
public string Mate
{
get { return this.mate; }
set
{
Update(StringPacket.Spouse, value, false);
UpdateDatabase("mate", value);
this.mate = value;
}
}
public byte Class
{
get { return this.m_Proffesion; }
set {
Update(UpdatePacket.Class, value, false);
UpdateDatabase("profession", value);
this.m_Proffesion = value;
}
}
public byte Metempsychosis
{
get { return this.m_metompsychosis; }
set {
Update(UpdatePacket.Reborn, value, false);
UpdateDatabase("metempsychosis", value);
this.m_metompsychosis = value;
}
}
public ushort AdditionalPoints
{
get { return this.m_rbpoints; }
set {
Update(UpdatePacket.OtherBonus, value, false);
UpdateDatabase("additional_point", value);
this.m_rbpoints = value;
}
}
public ushort Strength
{
get { return this.m_str; }
set
{
UpdateDatabase("strength", value);
Update(UpdatePacket.Strength, value, false);
this.m_str = value;
}
}
public ushort Vitality
{
get { return this.m_vit; }
set
{
UpdateDatabase("health", value);
Update(UpdatePacket.Vitality, value, false);
this.m_vit = value;
}
}
public ushort Mana
{
get { return this.m_Mana; }
set
{
this.m_Mana = value;
Update(UpdatePacket.Mana, value, false);
UpdateDatabase("mana", value);
}
}
public uint PKPoints
{
get { return this.m_pk; }
set
{
this.m_pk = (ushort)value;
Update(UpdatePacket.PKPoints, value, false);
UpdateDatabase("pk", value);
}
}
public ulong Exp
{
get { return this.m_exp; }
set
{
this.m_exp = value;
UpdateDatabase("experience", value);
Update(UpdatePacket.Experience, value, false);
}
}
public ushort Agility
{
get { return this.m_agi; }
set
{
UpdateDatabase("Speed", value);
Update(UpdatePacket.Agility, value, false);
this.m_agi = value;
}
}
public ushort Spirit
{
get { return this.m_spi; }
set
{
UpdateDatabase("soul", value);
Update(UpdatePacket.Spirit, value, false);
this.m_spi = value;
}
}
public uint Money
{
get { return this.m_Money; }
set
{
this.m_Money = value;
UpdateDatabase("money", value);
Update(UpdatePacket.Money, value, false);
}
}
public uint ConquerPoints
{
get { return this.m_CPs; }
set
{
this.m_CPs = value;
UpdateDatabase("emoney", value);
Update(UpdatePacket.ConquerPoints, value, false);
}
}
public RecognizitionType Flag
{
get { return this.m_Flag; }
set { this.m_Flag = value; }
}
public ushort Defence
{
get { return this.m_Defence; }
set { this.m_Defence = value; }
}
public uint MinimumAttack
{
get { return this.m_MinimumAttack; }
set { this.m_MinimumAttack = value; }
}
public uint MaximumAttack
{
get { return this.m_MaximumAttack; }
set { this.m_MaximumAttack = value; }
}
public ushort MapID
{
get { return this.m_Map; }
set { UpdateDatabase("recordmap_id", value); this.m_Map = value; }
}
public ushort MagicalDefense
{
get { return this.m_MagicalDefense; }
set { this.m_MagicalDefense = value; }
}
public object Owner
{
get { return this.m_Owner; }
set {
this.Equipment = new Equipment(value as SocketClient);
this.Inventory = new Inventory(value as SocketClient);
this.m_Owner = value; }
}
public uint Mesh
{
get { return BitConverter.ToUInt32(Packet, 4); }
set { Update(UpdatePacket.Mesh, value, true); DWORD32(value, 4); }
}
public uint UID
{
get { return BitConverter.ToUInt32(Packet, 8); }
set {
this.m_UID = value;
DWORD32(value, 8); }
}
public ulong StatusFlag
{
get { return BitConverter.ToUInt64(Packet, 24); }
set { Update(UpdatePacket.StatusFlag, value, true); DWORD(value, 24); }
}
public uint HitPoints
{
get { return this.m_HitPoints; }
set
{
this.m_HitPoints = value;
UpdateDatabase("life", value);
Update(UpdatePacket.Hitpoints, value, false);
WORD((ushort)value, 58);
}
}
public uint MaximumHitPoint
{
get { return this.m_MaximumHitPoints; }
set { Update(UpdatePacket.MaxHitpoints, value, false);
this.m_MaximumHitPoints = value; }
}
public ConquerAngle Facing
{
get { return (ConquerAngle)Packet[62]; }
set { Packet[68] = (byte)value; }
}
public ConquerAction Action
{
get { return (ConquerAction)Packet[63]; }
set { Packet[69] = (byte)value; }
}
public ushort HairStyle
{
get { return BitConverter.ToUInt16(Packet, 62); }
set { UpdateDatabase("hair", value);
Update(UpdatePacket.HairStyle, value, true);
WORD(value, 62); }
}
public ushort X
{
get { return this.m_X; }
set
{
this.m_X = value;
UpdateDatabase("recordx", value);
WORD(value, 64);
}
}
public ushort Y
{
get { return this.m_Y; }
set
{
this.m_Y = value;
UpdateDatabase("recordy", value);
WORD(value, 66);
}
}
public ushort PreviousMapID
{
get { return this.m_previousmapid; }
set { this.m_previousmapid = value; }
}
public uint HeavenBlessing
{
get { return this.m_HBless; }
set
{
uint oldVal = HeavenBlessing;
this.m_HBless = value;
if (Online)
{
if (value > 0)
{
AddFlag(ExodusBinaries.UpdatePacket.Flags.HeavenBlessing);
Update(ExodusBinaries.UpdatePacket.HeavensBlessing, HeavenBlessing, false);
Update(ExodusBinaries.StringPacket.Effect, "bless", true);
}
}
}
}
public uint LastLogout
{
get { return this.m_LastLogout; }
set { this.m_LastLogout = value; }
}
public ushort AutoExercise
{
get { return this.m_AutoExer; }
set
{
this.m_AutoExer = value;
}
}
public byte Away
{
get { return Packet[102]; }
set
{
Packet[102] = value;
}
}
public byte Level
{
get { return this.m_Level; }
set
{
this.m_Level = value;
Update(UpdatePacket.Level, value, false);
UpdateDatabase("level", value);
Packet[75] = value;
}
}
public uint QuizPoints
{
get { return BitConverter.ToUInt32(Packet, 104); }
set { Update(UpdatePacket.QuizPoints, value, false);
DWORD32(value, 104); }
}
public byte StringCount
{
get { return Packet[155]; }
set { WORD(value, 155); }
}
public string Name
{
get { return Encoding.ASCII.GetString(ToArray(), 157, ToArray()[156]); }
set
{
Packet[156] = (byte)value.Length;
Byte(value, 157, Packet);
}
}
I added somethings and edited others... If i change the name packet and lenght offsets it will the name disappears (My name) and the target name stills dont appear.. i wont work on this today haha, i finished my relationship this week and im gonna party tonight :3
Spirited, can you show me the offsets?
Because the 5165 offsets are sooo different and the 5250 also
===========================
Ignore the UpdateDatabase things, because ill change the way it will work.. looks like it will take so much resources with many players lol updating every step
===========================
I think ive got whats wrong... -_______-
I will try out and then ill come back to report xd
Anyway if there is somewhere i can get the offsets <3 <3 <3
otherwise tomorrow i start guessing
===========================
Failed D:
|
|
|
07/07/2014, 04:28
|
#8
|
elite*gold: 0
Join Date: Jul 2009
Posts: 908
Received Thanks: 390
|
Ive been trying to rebuild this spawn packet... btw, i made my packet logger and i noticed that MY packet, with my account informations is sent with the right lenght, and when i request other players infos, it is coming with +11 lenght, i am trying to figure it out... if someone can help me btw, when Armor and Garment offsets has changed?
I checked a 5517 and i noticed they switch places, Garment goes to 40 and armor to 44...
|
|
|
07/07/2014, 05:41
|
#9
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,211
Received Thanks: 4,114
|
Wait, my spawn packet from Project Phoenix doesn't work?
|
|
|
07/07/2014, 06:51
|
#10
|
elite*gold: 0
Join Date: Jul 2009
Posts: 908
Received Thanks: 390
|
Yep, It has the same offsets '-'
I can see my Character infos, i actually fixed the Metempsychosis offset, now i have the 2 rb effect around my character, am trying to guess how to show notibility icon and ranking on the character.. guess i need to load the entiry table to make it... idk
Tried to spawn the items by using their ids, but i think most wont work if i dont set up the colors, which will imply on a biiig waste of time switching offsets, anyway, ill have to do it...
But...
I dont know what is being inserted on it, but the EntitySpawn packet when i send it to another screen, after i change a few things, is sending the 10014 with +7 Lenght
and no... its not because of the na... **** it, its because of the name (yep, noticed now, it was +11 before, so i fixed the extra 4 bytes)..
then i dont know whats wrong..
|
|
|
07/07/2014, 07:04
|
#11
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,211
Received Thanks: 4,114
|
Again, according to the old Trinity source I have that was later leaked, nobility is 95, head is 30 and 103, garment is 34, armor is 38 and 99, right weapon is 46, Left Weapon is 42 and 101, steed is 20, 109 (plus), and 115 (lineage).
|
|
|
07/07/2014, 07:29
|
#12
|
elite*gold: 0
Join Date: Jul 2009
Posts: 908
Received Thanks: 390
|
Thanks Fang, ill test it now
I am so happy now, because i fixed the Name issue..
found out that it was missing the String Amount... ****, stupid error...
I read byte after byte on both packets
Quote:
a7 00 1e 27 d1 07 00 00 48 42 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6b c4 02 00 00 00 00 00 e3 42 06 00 00 00 00 00 00 00 00 00 46 01 66 01 54 01 00 64 00 01 00 02 00 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 00 00 00 be 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 53 68 65 6d 61 6c 65 00 00 00 00 00 00 00 00 00 00 00
ae 00 1e 27 eb 03 00 00 4a 42 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 d9 7a 33 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6b c4 02 00 00 00 00 00 e3 42 06 00 00 00 00 00 00 00 00 00 00 00 6a 01 52 01 00 00 00 01 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 00 00 00 20 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0e 4f 75 74 72 6f 4e 69 6e 6a 61 5b 47 4d 5d 00 00 00 00 00 00 00 00 00 00 00
|
Then i saw those 00 :|
And ill try those now...
btw, 104 is quiz points
103 isnt too close? or Color just take 1 byte? and RWeapon doesnt have a color byte? o.O
this Thanks thanks thanks, been learning alot *-*
and by the way, the items packet... i send their itemtype id? "410339"
|
|
|
07/07/2014, 07:38
|
#13
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,211
Received Thanks: 4,114
|
You send the item's static id (the mesh of the item, whatever you want to call it). Also, your character meshes are off. The mesh offset in the spawn packet and character info packet isn't just the body; it also includes the avatar and transformation.
mesh = body + (avatar * 10000) + (transformation * 10000000)
|
|
|
07/07/2014, 07:46
|
#14
|
elite*gold: 0
Join Date: Jul 2009
Posts: 908
Received Thanks: 390
|
Quote:
Originally Posted by Spirited
You send the item's static id (the mesh of the item, whatever you want to call it). Also, your character meshes are off. The mesh offset in the spawn packet and character info packet isn't just the body; it also includes the avatar and transformation.
mesh = body + (avatar * 10000) + (transformation * 10000000)
|
Working on it right now, ill check other bases to see how they do it also
Hahah, just used the wrong ID on the lookface, but seems working :'D
Its fine *-*
Progress...
|
|
|
|
Similar Threads
|
Entity Spawn packet problem?
01/22/2013 - CO2 Private Server - 7 Replies
Hello all,
I've been coding my own source and everything wen't well untill I've come to the Entity Spawn part.
Here is the problem:
http://i47.tinypic.com/2zyes15.png
http://i48.tinypic.com/6rq91h.png
Here is my spawn packet:
WriteUInt(client.Identity, 4);
|
Entity Spawn packet 5017
12/22/2011 - CO2 Private Server - 7 Replies
So I checked different sources and it seems that not one public source unless I missed it has the complete Entity Spawn packet for 5017.
Taking bits and pieces from sources I got the following offsets and really random different packet sizes.
UID = 4
overlaymesh = 8 //all 8? wtf?
Mesh = 8
Avatar = 8
Model = 8
Status = 12
|
[5180] Entity Spawn Packet Structures
12/29/2010 - CO2 Private Server - 4 Replies
Anybody has Packet structures of Entity Spawn (5180 Version)?
Thanks.
*Can I Get Them* ?
|
Confused about the spawn entity packet
12/20/2010 - CO2 Private Server - 7 Replies
So I wanted to update the spawn entity packet from Hybrid's source (5135 -> 5165)
public unsafe struct SpawnEntityPacket
{
public ushort Size;
public ushort Type;
public uint Model;
|
All times are GMT +2. The time now is 21:24.
|
|