Unknown general data subtypes for client v4267, and "spawn effect" subtype?

03/18/2011 19:55 Lateralus#1
Need as much information as possible about any of the following subtypes for the general data packet (type 0x3F2, 1010) for v4267: 0x9B (sent server->client and client->server; When sent server->client, client echoes the packet with character's current coordinates in the 4-byte value, some sort of verification?), 0x9D (sent client->server; no idea.), 0xA0 (sent server->client and client->server; client echoes the packet with the current time in the 4-byte value. But what is it used for? Possibly an anti-bot mechanism?), 0xA3 (sent server->client; no idea.), 0xAF (sent server->client; no idea.), 0xB8 (sent server->client; no idea), 0xBB (sent client->server; no idea.), 0xBC (sent server->client and client->server; a botcheck, but I don't know the structure at all, and I can't get the client to respond to any values.)

Other than these, I have all the subtypes working for v4267, except for the spawn effect subtype. Does anyone have the type and structure of it? It's possible that I messed up one subtype and am using it in place of the real spawn effect subtype.
03/18/2011 21:05 nTL3fTy#2
Quote:
Originally Posted by Lateralus View Post
Other than these, I have all the subtypes working for v4267, except for the spawn effect subtype. Does anyone have the type and structure of it? It's possible that I messed up one subtype and am using it in place of the real spawn effect subtype.
Please clarify what you mean by spawn effect. Are you talking about the effect that gets shown when a monster is spawned or something entirely different?
03/18/2011 21:19 -impulse-#3
Quote:
Originally Posted by Lateralus View Post
Other than these, I have all the subtypes working for v4267, except for the spawn effect subtype. Does anyone have the type and structure of it? It's possible that I messed up one subtype and am using it in place of the real spawn effect subtype.
Unfortunately TQ didn't add a packet to spawn any(proven wrong hehe) effect on a coordinate you want. What you need is actually the floor item packet (0x44D) with Type 11 (other types: Drop = 1, Remove = 2, Animation = 3, DropDetain = 4(new patches)).

Here is an example:

Code:
FloorItem item = new FloorItem(true);
item.Type = 11;
item.UID = 1;
item.X = X;
item.Y = Y;
item.ItemID = effectid;
AddFloorItem(item);
EffectIDs range from 0 to 1000 only. (I have tested until like 50,000)

With this packet you can spawn different effects like squama beads or fireworks and many more.

Credits goes to Spirited(aka Fang) for getting the dump from CO's servers.
RED - Credits to nTL3fTy
03/18/2011 21:46 Lateralus#4
I meant the monster spawn effect packet, although thanks -impulse-, that's useful when I get there. =p
03/18/2011 22:31 nTL3fTy#5
Quote:
Originally Posted by -impulse- View Post
Unfortunately TQ didn't add a packet to spawn any effect on a coordinate you want. What you need is actually the floor item packet (0x44D) with Type 11 (other types: Drop = 1, Remove = 2, Animation = 3, DropDetain = 4(new patches)).
Not entirely correct. :) There's subtype 9 of the string packet (1015, on patch 5017) called MapEffect. With this subtype, you can send an effect that is displayed at the given coordinates.

Here's the layout of the packet in patch 5017:
offsetdesc
0size
2type
4coord_x
6coord_y
8subtype
9string_list
03/18/2011 22:51 unknownone#6
0x9B (and related 0xB5) were used to sync your location if you walked or jumped on an invalid coord for example. The server would send the 0xB5, and the client would respond with 0x9B. This was the source of the old tele hack, as you could just send the 0x9B to the server and move anywhere you want on the map.

0xA0 and 0xBC are both anti-bot mechanisms. The A0 works by xoring your player name against some value created using rand() with your playerID as the seed. It also has a delayed send of x seconds where x is the mod10 of your playerid and is 2,5 or 8.

0xBC sends a value from 3dmotion.ini. The client looks up the value and finds the matching .c3 file. It then looks up the middle record in the first MOTI section of the file, extracts some vertex information. It will then take the x, y, z depending on a value from the sent packet (0, 1 or 2). The float is cast to a signed integer and sent in the reply.

I dunno what the others are used for.
03/18/2011 23:36 Lateralus#7
Quote:
Originally Posted by unknownone View Post
0x9B (and related 0xB5) were used to sync your location if you walked or jumped on an invalid coord for example. The server would send the 0xB5, and the client would respond with 0x9B. This was the source of the old tele hack, as you could just send the 0x9B to the server and move anywhere you want on the map.

0xA0 and 0xBC are both anti-bot mechanisms. The A0 works by xoring your player name against some value created using rand() with your playerID as the seed. It also has a delayed send of x seconds where x is the mod10 of your playerid and is 2,5 or 8.

0xBC sends a value from 3dmotion.ini. The client looks up the value and finds the matching .c3 file. It then looks up the middle record in the first MOTI section of the file, extracts some vertex information. It will then take the x, y, z depending on a value from the sent packet (0, 1 or 2). The float is cast to a signed integer and sent in the reply.

I dunno what the others are used for.
Thank you! Very, very helpful.

I've done a bit of poking around with a debugger and have learned that 0xBB is sent client->server when something happens with string subtype 0x17, which is also unknown.
03/19/2011 01:32 pro4never#8
Quote:
Originally Posted by -impulse- View Post
Unfortunately TQ didn't add a packet to spawn any effect on a coordinate you want. What you need is actually the floor item packet (0x44D) with Type 11 (other types: Drop = 1, Remove = 2, Animation = 3, DropDetain = 4(new patches)).

Here is an example:

Code:
FloorItem item = new FloorItem(true);
item.Type = 11;
item.UID = 1;
item.X = X;
item.Y = Y;
item.ItemID = effectid;
AddFloorItem(item);
EffectIDs range from 0 to 1000 only. (I have tested until like 50,000)

With this packet you can spawn different effects like squama beads or fireworks and many more.

Credits goes to Spirited(aka Fang) for getting the dump from CO's servers.
Possibly already corrected but you can send the effect string and replace uid with ushorts of X/Y where you want to display it.

So yes... tq DID add a way to display effect of your choice at X/Y of your choice.
03/19/2011 02:30 Lateralus#9
But does anyone actually have the monster spawn effect subtype and structure for v4267?
03/19/2011 03:00 pro4never#10
Sadly, no. Sorry for going offtopic :P

That being said... using known current subtypes you could use some guessing to log most of them without toooo much effort i'd think.
03/19/2011 04:16 Korvacs#11
The spawn monster effect is disabled by the client, not the server, as far as i know this has always been the case in all versions of the client, certainly all the ones i've seen.

Are you trying to display the effect because the client isnt? If thats the reason then are you using the correct monster unique id range? If your desperate for it and you are using the correct version you can send the effect in a string packet for a specific target, thats pretty old school though to be honest.
03/19/2011 21:57 -impulse-#12
Well, I didn't have this thing on my server and so I had to get it from TQ's servers. All you have to do is ... send the packet 1010 with uid=monster.uid and type=revive (the revive id of your version). Voila you got your monsters spawn correctly.
03/19/2011 22:48 Lateralus#13
Quote:
Originally Posted by Korvacs View Post
The spawn monster effect is disabled by the client, not the server, as far as i know this has always been the case in all versions of the client, certainly all the ones i've seen.

Are you trying to display the effect because the client isnt? If thats the reason then are you using the correct monster unique id range? If your desperate for it and you are using the correct version you can send the effect in a string packet for a specific target, thats pretty old school though to be honest.
To double check, what's the correct monster unique id range?


Quote:
Originally Posted by -impulse- View Post
Well, I didn't have this thing on my server and so I had to get it from TQ's servers. All you have to do is ... send the packet 1010 with uid=monster.uid and type=revive (the revive id of your version). Voila you got your monsters spawn correctly.
I've got my monsters spawning, they're just not doing the effect (like how a red devil jumps out of the ground with that thing around it). Tried using the revive subtype, but it still isn't working.
03/20/2011 02:37 Korvacs#14
A safe range for monsters is 300k - 500k, thats the range i used. Anything bellow 300k (Around that, you could probably get away with like 250k as a lower limit) is classed as an npc and behaves slightly differently on the client, and anything about 1kk results in the client treating it as a player so again it behaves differently.
03/20/2011 02:47 Lateralus#15
Quote:
Originally Posted by Korvacs View Post
A safe range for monsters is 300k - 500k, thats the range i used. Anything bellow 300k (Around that, you could probably get away with like 250k as a lower limit) is classed as an npc and behaves slightly differently on the client, and anything about 1kk results in the client treating it as a player so again it behaves differently.
It still isn't working. Any other advice? If worse comes to worst, I guess I'll send the effect... But I don't even know the effect name.