[RELEASE] 5298 EntitySpawn Packet Structures

08/31/2010 18:48 442077771#1
Entity Spawn: (10014)
Spoiler:
Offset Type Value
0 Short Size[200]
2 Short Type[10014]
75 Byte Level
78 Short HairStyle
80 Short CharX
82 Short CharY
123 int QuizPoints
211 byte ShowName
212 byte NameLength
213 String Name

other the same with 5165 Packet Structures.
If error, please correct it

These structures are derived from my own tests, so there may be errors
Do not malicious attacks, please do not BS-ing downstairs, I release them is to share with everyone
If you are not interested in my release, then you go farther
If he is useful to you, then please leave your thanks
09/01/2010 13:45 _DreadNought_#2
Did u ask the person who gave you this to release this?
09/01/2010 14:26 Infictus#3
why do u think that somebody gave it to him?
09/01/2010 14:53 _DreadNought_#4
Was looking round at the threads he made on the packets, I figured he can't of made this himself
09/01/2010 15:01 jackpotsvr#5
Quote:
Originally Posted by Eliminationn View Post
Did u ask the person who gave you this to release this?
Quote:
Originally Posted by Infictus View Post
why do u think that somebody gave it to him?
Quote:
Originally Posted by Eliminationn View Post
Was looking round at the threads he made on the packets, I figured he can't of made this himself
Maybe because he have only a few posts, 0 thanks and join date and his name..
09/01/2010 15:15 _DreadNought_#6
No, as I have already stated, ^ I may be wrong but im pretty sure he didn't: Not saying that I could - He did a better job then I can tbh
09/01/2010 16:57 Basser#7
Credits are a private subject, nothing to do with others, no need to have a discussion bout it, use private messaging.

And uh, this packet is not complete. :)
09/11/2010 22:06 442077771#8
5290 client and 5298 client EntitySpawn may be not the same
I will be released later 5290 and other packet structure of the client, and keep updated

Quote:
Originally Posted by jackpotsvr View Post
Maybe because he have only a few posts, 0 thanks and join date and his name..
Quote:
Originally Posted by Eliminationn View Post
Was looking round at the threads he made on the packets, I figured he can't of made this himself
If you can find the release than this update, please do not casually comment
Please respect other people's work overall, it is also the respect of your own
I think your posts are not posted your own, huh, huh
:rtfm:
09/12/2010 11:15 262315610#9
Quote:
Originally Posted by 442077771 View Post
Entity Spawn: (10014)
Spoiler:
Offset Type Value
0 Short Size[200]
2 Short Type[10014]
75 Byte Level
78 Short HairStyle
80 Short CharX
82 Short CharY
123 int QuizPoints
211 byte ShowName
212 byte NameLength
213 String Name

other the same with 5165 Packet Structures.
If error, please correct it

These structures are derived from my own tests, so there may be errors
Do not malicious attacks, please do not BS-ing downstairs, I release them is to share with everyone
If you are not interested in my release, then you go farther
If he is useful to you, then please leave your thanks
It's Character's spawn or monster's spawn??

I want try spawn monster like this code:
(but not work!)

PHP Code:
    public class MobSpawn ExodusPacket
    
{
        public 
MobSpawn(uint UID,Status type,ulong value)
            : 
base(36)
        {
            
byte[] bt=new byte[8+36];
            
WORD((ushort)(bt.Length-8));
            
WORD((ushort)10017);
            
DWORD32(UID);
            
DWORD32(0x01);
            
DWORD32((uint)type);
            
DWORD(value);
        }
    } 
The MobThreadExecute
PHP Code:
static void MobThread_Execute()
        {
            try
            {
                if (
H_Chars.Count 0)
                {
                    try
                    {
                        foreach (
Hashtable H in H_Mobs.Values)
                        {
                            foreach (
MobStruct M in H.Values)
                            {
                                
//M.Step();

                                
if (M.PoisonedInfo != null)
                                {
                                    if (
DateTime.Now M.PoisonedInfo.LastAttack.AddSeconds(3))
                                    {
                                        if (
M.CurrentHP == 0)
                                        {
                                            
M.PoisonedInfo null;
                                            foreach (
Entity C in H_Chars.Values)
                                                if (
M.Loc.Map == C.MapID)
                                                    if (
MyMath.PointDistance(M.Loc.XM.Loc.YC.XC.Y) <= 20)
                                                        
C.Client.Send(new MobSpawn(M.EntityIDStatus.Effect0));
                                            continue;
                                        }
                                        
//M.PoisonedInfo.Times--;
                                        
M.PoisonedInfo.LastAttack DateTime.Now;
                                        
uint Dmg = (uint)(M.CurrentHP * (10 M.PoisonedInfo.SpellLevel 10) / 100);
                                        if (
Dmg == 1)
                                            continue;
                                       
// M.TakeAttack(M, Dmg, AttackType.Melee);
                                        
if (M.PoisonedInfo.Times == 0)
                                        {
                                            
M.PoisonedInfo null;
                                            foreach (
Entity C in H_Chars.Values)
                                                if (
M.Loc.Map == C.MapID)
                                                    if (
MyMath.PointDistance(M.Loc.XM.Loc.YC.XC.Y) <= 20)
                                                        
C.Client.Send(new MobSpawn(M.EntityIDStatus.Effect0));//.AddSend(Packets.Status(M.EntityID, ConquerSx.Game.Status.Effect, 0));
                                        
}
                                    }
                                }
                            }
                        }
                    }
                    catch (
Exception Exc) { Console.WriteLine(Exc); }
                }
            }
            catch (
Exception Exc) { Console.WriteLine(Exc); }
        } 
And in Exodus
PHP Code:
            MyThread MobThread = new MyThread();
            
MobThread.Execute += new Execute(MobThread_Execute);
            
MobThread.Start(400); 
09/12/2010 17:39 pro4never#10
obviously your packet is wrong. You don't even have an x/y value for where the monster is spawning <_<...


The packet is the same, it's just structured differently when spawning a monster.

Take out any offsets that could refer to player values and mess around with it. I'm sure you can figure it out.

Ps: don't do a full spawn system yet till you get the base packet worked out. I usually do a chat cmd to find offsets


eg

/mob mesh# Value Offset


then in packet have a writebyte(value, offset, packet);

then you can try diff values for packet offsets while running. Once you log all the byte offsets try with uint16 or uint32.
09/13/2010 11:09 262315610#11
Quote:
Originally Posted by pro4never View Post
obviously your packet is wrong. You don't even have an x/y value for where the monster is spawning <_<...


The packet is the same, it's just structured differently when spawning a monster.

Take out any offsets that could refer to player values and mess around with it. I'm sure you can figure it out.

Ps: don't do a full spawn system yet till you get the base packet worked out. I usually do a chat cmd to find offsets


eg

/mob mesh# Value Offset


then in packet have a writebyte(value, offset, packet);

then you can try diff values for packet offsets while running. Once you log all the byte offsets try with uint16 or uint32.
Like this??

Chat
PHP Code:
                    if(Cmd[0]=="/Mob"){
                        
MobStruct ms = (MobStruct)Exodus.DatabaseMobs[Convert.ToInt32(Cmd[1].ToString())];
                        
ms.Loc.Map 1002;
                        
ms.Loc.428;
                        
ms.Loc.338;
                        
MobStruct.Spawn(ms,false);
                    } 
MobSpawn packet

PHP Code:
        public static void Spawn(MobStruct Mbool Check)
        {
            try
            {
                
ExodusPacket P SpawnEntity(M);
                foreach (
Entity CC in Exodus.H_Chars.Values)
                    if (
CC.MapID == M.Loc.Map )
                        
CC.Client.Send(P);
            }
            catch { }
        }
        public static 
ExodusPacket SpawnEntity(MobStruct C)
        {
            
ExodusPacket P = new ExodusPacket(138 C.Name.Length);
            
P.WORD((ushort)(138 C.Name.Length),0);
            
P.WORD((ushort)10014,2);
            
P.DWORD32(C.Mesh,4);
            
P.DWORD32(C.EntityID,8);
            
P.DWORD32(0,12);
            
P.DWORD(C.PoisonedInfo == null : (ulong)0x2);//Status Effect
            //P.Move(28);
            
P.WORD((ushort)C.CurrentHP,58);
            
P.WORD((ushort)C.Level,60);
            
//P.Move(2);//Hair
            
P.WORD(C.Loc.X,64);
            
P.WORD(C.Loc.Y,66);
            
P.Byte(C.Direction);
            
P.Byte((byte)C.Action);
            
//P.Move(72);
            
P.Byte(1);
            
P.Byte((byte)C.Name.Length);
            
P.Byte(C.Name);

            return 
P;
        } 
09/13/2010 13:34 pro4never#12
LOL no...

You directly send the packet. No need for setting up a mob struct at all.

You OBVIOUSLY have the wrong packet cause you are writing the name as a byte... it's a string...

You also only have offsets listed in a few of the spots.


Using offsets lets you move to the correct offsets without all the P.Move(x) statements.
Note: You have commented out all the move sections which indicates to me that you completely fucked over your packet and have no idea how to structure a working one...


Assuming this packet works to spawn anything at all on your screen... you would use my method for trial/error packet creation via something like..


public static ExodusPacket SpawnEntity(uint mesh, string name, ushort x, ushort y, int offset, byte value)

completely ditch the monster struct and use input values instead.

then as PART of the packet you can do..

P.Byte(Value, Offset);

to write your custom offset on the fly.
09/13/2010 17:40 262315610#13
Quote:
Originally Posted by pro4never View Post
LOL no...

You directly send the packet. No need for setting up a mob struct at all.

You OBVIOUSLY have the wrong packet cause you are writing the name as a byte... it's a string...

You also only have offsets listed in a few of the spots.


Using offsets lets you move to the correct offsets without all the P.Move(x) statements.
Note: You have commented out all the move sections which indicates to me that you completely fucked over your packet and have no idea how to structure a working one...


Assuming this packet works to spawn anything at all on your screen... you would use my method for trial/error packet creation via something like..


public static ExodusPacket SpawnEntity(uint mesh, string name, ushort x, ushort y, int offset, byte value)

completely ditch the monster struct and use input values instead.

then as PART of the packet you can do..

P.Byte(Value, Offset);

to write your custom offset on the fly.
Can you make a simple example help me ?

My English is so bad !!

I can't not quite understand your description!