Placid Report post Posted October 26, 2006 (edited) Greetings! robotbob on a previous thread suggested documenting the EL protocol. This is obviously an awesome idea as at current there isn't any publicly available information. Therefore I have provided a Wiki aptly named 'Eternal Lands Network Protocol Wiki' for documentation. The wiki will provide a breakdown of the protocol, its uses, examples of packets and other information pertaining to communication to and from the Eternal Lands server. If you are a programmer and have experience with the protocol, you are invited to join us to help make the Wiki an extensive source of information for the EL protocol. Disclaimer If there is any abuse to this Wiki, the IPs in question will receive an outright ban from accessing my server, both the Wiki and the webserver in general. Currently it is just myself and Vegar editing it, with robotbob planning to join us. Please feel free to assist us by creating a username and begin editing. If you run a trade bot, we could use the item ID information if you have it to hand Cheers Edited August 29, 2007 by Placid Share this post Link to post Share on other sites
DarthCarter Report post Posted October 26, 2006 Excellent idea, I'll add some of my protocol knowledge in the next couple of days cheers Greetings! robotbob on a previous thread suggested documenting the EL protocol. This is obviously an awesome idea as at current there isn't any publicly available information. Therefore I have provided a Wiki article for documentation. The wiki will provide a breakdown of the protocol, it's uses, examples of packets and other information pertaining to communication to and from the Eternal Lands server. If you are a programmer and have experience with the protocol, you are invited to join us to help make the Wiki an extensive source of information regarding the EL protocol. Disclaimer If there is any abuse to this Wiki, the IPs in question will receive an outright ban from accessing my server, both the Wiki and the webserver in general. Currently it is just myself and Vegar editing it, with robotbob planning to join us. Please feel free to assist us by creating a username and begin editing. If you run a trade bot, we could use the item ID information if you have it to hand Cheers Share this post Link to post Share on other sites
Placid Report post Posted October 26, 2006 Excellent idea, I'll add some of my protocol knowledge in the next couple of days cheers Good to have you aboard, jump on over and create a username when you're free (I'd prefer to keep anonymous edits at a minimum) [EDIT] Anonymous edits are now disabled. Share this post Link to post Share on other sites
Mar(c) Report post Posted October 26, 2006 Semi-off-topic but not irrelevant: Yes, I do have both IE and FireFox installed on my computer. But I refuse to switch to FireFox because of some tactic which aggressiveness towers over any of M$... Not meant to be offensive.. or maybe it is...? Well, you show your statement on your blocking page as shown in IE, I have my statement written here. :shrugs: Share this post Link to post Share on other sites
Placid Report post Posted October 26, 2006 Semi-off-topic but not irrelevant: Yes, I do have both IE and FireFox installed on my computer. But I refuse to switch to FireFox because of some tactic which aggressiveness towers over any of M$... Not meant to be offensive.. or maybe it is...? Well, you show your statement on your blocking page as shown in IE, I have my statement written here. :shrugs: I will add the wiki to an exclusion list to allow all browsers. Share this post Link to post Share on other sites
LabRat Report post Posted October 26, 2006 Please (as I just requested on the wiki discussion page) let us have some kind of flag to show that somebody is currently editing the page.. a minor change made by somebody else causes a lot of headache to somebody that just went through half the page filling in the gaps. Share this post Link to post Share on other sites
Learner Report post Posted October 26, 2006 Please (as I just requested on the wiki discussion page) let us have some kind of flag to show that somebody is currently editing the page.. a minor change made by somebody else causes a lot of headache to somebody that just went through half the page filling in the gaps. Maybe it needs to be broken up into multiple pages to reduce contention/conflicts on edits. Share this post Link to post Share on other sites
Placid Report post Posted October 26, 2006 Please (as I just requested on the wiki discussion page) let us have some kind of flag to show that somebody is currently editing the page.. a minor change made by somebody else causes a lot of headache to somebody that just went through half the page filling in the gaps. As a tip (i've added a reply to the discussion page), edit the page by sections and not the whole page in it's entirety. Share this post Link to post Share on other sites
Artem Report post Posted October 26, 2006 Great work! I will contribute to the Wiki too. Share this post Link to post Share on other sites
robotbob Report post Posted October 26, 2006 Hello all, Great! After speaking with vegar about a wiki, in the neighborhood of 24-48 hrs ago, the doc is coming to life! Some ideas and wishes: I would like the data type to stay in the byte, word, dword ; instead of the C-sque data types. Like a format specification for a file fomat. Personally I prefer seeing the protocol byte listed as hexadecimal, instead of decimal. But perhaps decimal is the best to prevent confusion. Here is a blurb from a rar spec doc: Each block begins with following fields: HEAD_CRC 2 bytes CRC of total block or block part HEAD_TYPE 1 byte Block type HEAD_FLAGS 2 bytes Block flags HEAD_SIZE 2 bytes Block size ADD_SIZE 4 bytes Optional field - added block size Declared block types: HEAD_TYPE=0x72 marker block HEAD_TYPE=0x73 archive header HEAD_TYPE=0x74 file header HEAD_TYPE=0x75 comment header HEAD_TYPE=0x76 extra information HEAD_TYPE=0x77 subblock HEAD_TYPE=0x78 recovery record Just my first thoughts over coffee, robotbob Share this post Link to post Share on other sites
Entropy Report post Posted October 26, 2006 I would like the data type to stay in the byte, word, dword ; instead of the C-sque data types. word and dword are ambigous, depending on the machine architecture (64b procesors have different word and dword sizes). C is also like that, which is why the best idea is to use SDL types, such as uint32, sint16, etc. Personally I prefer seeing the protocol byte listed as hexadecimal, instead of decimal. But perhaps decimal is the best to prevent confusion. The data is in decimal in the protocol file. Making it hex would complicate things way too much and would be pointless. Share this post Link to post Share on other sites
Placid Report post Posted October 26, 2006 I would like the data type to stay in the byte, word, dword ; instead of the C-sque data types. word and dword are ambigous, depending on the machine architecture (64b procesors have different word and dword sizes). C is also like that, which is why the best idea is to use SDL types, such as uint32, sint16, etc. Personally I prefer seeing the protocol byte listed as hexadecimal, instead of decimal. But perhaps decimal is the best to prevent confusion. The data is in decimal in the protocol file. Making it hex would complicate things way too much and would be pointless. Feel free to join us robotbob: Vegar mentioned this to me, but I think it would be best to stick to more common terminology. By all means you can add a section describing the correlation or indeed just add '(or dword)' etc to the text wherever you see fit. Thanks for joining those who have Share this post Link to post Share on other sites
robotbob Report post Posted October 26, 2006 and would be pointless. Ok yes. i just realized the client code itself references the protocol with decimal. (I packet sniff most, so intitally I saw this in hex) Just a personal wish, I never use decimal values in cmps. But for this project, it differs from the design of the app itself. I understand. which is why the best idea is to use SDL types, such as uint32, sint16, etc. Ok, then I'll make sure the examples I present use sdl. At least a generic non-langauge, non-platform data types are going to be used. robotbob Share this post Link to post Share on other sites
DarthCarter Report post Posted October 28, 2006 This is looking really good - and best of all (for me;-), the docs are uncovering errors in my understanding of the protocol - looks like I'll have some bug fixes to make ;-) cheers Greetings! robotbob on a previous thread suggested documenting the EL protocol. This is obviously an awesome idea as at current there isn't any publicly available information. Therefore I have provided a Wiki article for documentation. The wiki will provide a breakdown of the protocol, it's uses, examples of packets and other information pertaining to communication to and from the Eternal Lands server. If you are a programmer and have experience with the protocol, you are invited to join us to help make the Wiki an extensive source of information regarding the EL protocol. Disclaimer If there is any abuse to this Wiki, the IPs in question will receive an outright ban from accessing my server, both the Wiki and the webserver in general. Currently it is just myself and Vegar editing it, with robotbob planning to join us. Please feel free to assist us by creating a username and begin editing. If you run a trade bot, we could use the item ID information if you have it to hand Cheers Share this post Link to post Share on other sites
Placid Report post Posted October 30, 2006 Note the URL has been updated to http://wiki.beplacid.com/EL_Protocol. Please update any bookmarks you may be using. Share this post Link to post Share on other sites
squiz Report post Posted October 31, 2006 Here are a few errors/suggestions: Rewrite Message_Length description as follows: MESSAGE_LENGTH=(length of PROTOCOL TYPE)+(length of DATA) = 1+(length of DATA) The structure for sending to local chat is wrong. The correct structure (from wireshark) is: [RAW_TEXT (0)][LENGTH (X*)]MESSAGE Basically you only have to send the message with Protocol_type=0 and the length. The channel seems to be only for messages from the server. Otherwise, great job! Share this post Link to post Share on other sites
squiz Report post Posted October 31, 2006 Here is another problem I found. When my client receives a PM, it looks like this: message type= 0 message length= 25 data= '\x01\x80[PM from squiz: hello]' The first byte implies channel 1 (pm). What is the second byte? Share this post Link to post Share on other sites
Placid Report post Posted October 31, 2006 Here are a few errors/suggestions: Rewrite Message_Length description as follows: MESSAGE_LENGTH=(length of PROTOCOL TYPE)+(length of DATA) = 1+(length of DATA) The structure for sending to local chat is wrong. The correct structure (from wireshark) is: [RAW_TEXT (0)][LENGTH (X*)]MESSAGE Basically you only have to send the message with Protocol_type=0 and the length. The channel seems to be only for messages from the server. Otherwise, great job! Thanks for the feedback. Please add this to the Wiki or it's discussion page. Here is another problem I found. When my client receives a PM, it looks like this: message type= 0 message length= 25 data= '\x01\x80[PM from squiz: hello]' The first byte implies channel 1 (pm). What is the second byte? I am assuming it's the colour of the text. The Wiki does need the client colours, so that's something i'll add to the discussion page. Cheers Share this post Link to post Share on other sites
ttlanhil Report post Posted November 1, 2006 I'll sign up and do colours shortly, and possibly some other bits... I'm entering exam time at uni now, though, so if there's still more to do in a month or so, nudge me then Share this post Link to post Share on other sites
ttlanhil Report post Posted November 1, 2006 I'll sign up and do colours shortlydone. http://wiki.beplacid.com/EL_Colors ... if you don't want separate pages, just merge it into the protocol page, but I don't like pages that are too long Share this post Link to post Share on other sites
Placid Report post Posted November 1, 2006 I'll sign up and do colours shortlydone. http://wiki.beplacid.com/EL_Colors ... if you don't want separate pages, just merge it into the protocol page, but I don't like pages that are too long Thanks. The colours are needed and yes the page is getting rather long. I am in favour of just linking to the colours page as it is not crucial to the protocol (as in, things'll work without it) Share this post Link to post Share on other sites
robotbob Report post Posted November 21, 2006 (edited) Going to add my stuff to the wiki soon. Data type soup at the moment for me, but nearly done. robotbob Edited November 21, 2006 by robotbob Share this post Link to post Share on other sites
Placid Report post Posted November 22, 2006 Going to add my stuff to the wiki soon. Data type soup at the moment for me, but nearly done. robotbob Great. At the moment we really need trade documentation and the completion of 'Server to Client' and 'Client to server'. A comprehensive list of Item Image IDs is also required (we have other ways of getting this info, though). Share this post Link to post Share on other sites
The_Piper Report post Posted November 22, 2006 Ok, ill add then the next 100 item ID's i have, when i have the time to do it (hopefully soon) Well done to everybody, who contributed to that Wiki, and thumbs up for snowball for running it Piper Share this post Link to post Share on other sites
Placid Report post Posted January 9, 2007 Thanks to Timbol and Freeone3000 for their recent work on the Wiki. An explanation of message parsing and some examples in Python and Java have been added (although some of the Java code is questionable ) Share this post Link to post Share on other sites