roBrowser - Ragnarok Online for Web Browsers

As packet specification, yes it would be 12.

But I'm not sure use uint16 would solve the problem though, because a string can also mixed with numbers and English alphabets, those are still single byte.
I guess in all case it use two bytes even if it's alpha in this case (just the second byte set to 0).

By chance, can you give me the binary data of a player talking with chinese and alphanumeric text in the same message ? Would be great to figure it out
default_biggrin.png


If my .htacess is not producing any error, does it mean that my webhost is not reading it?

I use asdfsafd to produce an error.. but It shows only white screen.

If my webhost is not reading it what should I do ?.
If you have a white page, the .htaccess is read ! In the other case it would show a 404 error page. Try to set the debug mode to true to find the error.

I did some updates to the remote client code two days ago, it should be easier to debug.

 
I guess in all case it use two bytes even if it's alpha in this case (just the second byte set to 0).

By chance, can you give me the binary data of a player talking with chinese and alphanumeric text in the same message ? Would be great to figure it out
default_biggrin.png
So here I sent 测试test123Hex: B2 E2 CA D4 74 65 73 74 31 32 33

Data sent to server: f3 00 17 00 53 61 6b 61 20 3a 20 b2 e2 ca d4 74 65 73 74 31 32 33 00

 
Ok so it's just charset...

Good news there is an API in progress for browser, but only available in Firefox, a shim exist.

Would be good to have the list of charset based on the langtype, anyone want to help to generate it ?

Aeomin, if I'm not wrong the charset you used is "gbk" (I tested big5, euc-jp, euc-kr, ... without success).

 
Ok so it's just charset...

Good news there is an API in progress for browser, but only available in Firefox, a shim exist.

Would be good to have the list of charset based on the langtype, anyone want to help to generate it ?

Aeomin, if I'm not wrong the charset you used is "gbk" (I tested big5, euc-jp, euc-kr, ... without success).
yes I use gbk, which is what client uses. big5 is for traditional chinese, I'm not sure whether Taiwan RO or so uses it but gbk includes both simplified chinese and traditional chinese. jp and kr is Japanese and Korean.By charset I assume you are using it in webgl render text? I guess what you are trying is convert to unicode and render using freetype. If that's the case, I'll try find something.

 
Last edited by a moderator:
@Aeomin

I did some work but can't find a way to encode it again to the packet.

So I start working using TextEncoder/TextDecoder api, a WIP draft, there is a shim available so great for now.

I start with a binary:

var data = new Uint8Array([0xB2, 0xE2, 0xCA, 0xD4, 0x74, 0x65, 0x73, 0x74, 0x31, 0x32, 0x33]);
Decode it:

var str = TextDecoder('gbk').decode(data);// result: "测试test123"

Works great, it print "测试test123".

Now the problem is when you have the string and want to pack it to the binary (to send the text to the server).

var data = TextEncoder().encode(str);// result: [ 0xE6, 0xB5, 0x8B, 0xE8, 0xAF, 0x95, 0x74, 0x65, 0x73, 0x74, 0x31, 0x32, 0x33 ];
As you see it doesn't match the first binary data.

Currently checking if there is not a way to fix it without having to recode all charset functions by hand.

Edit: Just did some progress, I'll give some news soon.

 
Last edited by a moderator:
@Aeomin

I did some work but can't find a way to encode it again to the packet.

So I start working using TextEncoder/TextDecoder api, a WIP draft, there is a shim available so great for now.

I start with a binary:

var data = new Uint8Array([0xB2, 0xE2, 0xCA, 0xD4, 0x74, 0x65, 0x73, 0x74, 0x31, 0x32, 0x33]);Decode it:
Code:
var str = TextDecoder('gbk').decode(data);// result: "测试test123"
 Works great, it print "测试test123".

Now the problem is when you have the string and want to pack it to the binary (to send the text to the server).

var data = TextEncoder().encode(str);// result: [ 0xE6, 0xB5, 0x8B, 0xE8, 0xAF, 0x95, 0x74, 0x65, 0x73, 0x74, 0x31, 0x32, 0x33 ];As you see it doesn't match the first binary data.Currently checking if there is not a way to fix it without having to recode all charset functions by hand.

Edit: Just did some progress, I'll give some news soon.
You can try https://github.com/inexorabletash/text-encoding
 
That's why i used, with some comments to encode back to the original charset.

I did a branch "charset" to test, now i just need the charset of each langtype to complete it.

 
That's why i used, with some comments to encode back to the original charset.

I did a branch "charset" to test, now i just need the charset of each langtype to complete it.
What's the format for the charset?

BTW, I'm not sure whether the langtype you are basing of clientinfo. If was basing on clientinfo, then japan would be 2 and china would be 3, there is no sakray.

 
Last edited by a moderator:
This is what I have for now:

var charset = 'utf-8'; // TODO: find charset based on langtype switch (Session.LangType) { case 0x00: // CLIENTTYPE_KOREAN case 0x01: // CLIENTTYPE_ENGLISH case 0x02: // CLIENTTYPE_SAKRAY case 0x03: // CLIENTTYPE_JAPAN case 0x04: // CLIENTTYPE_CHINA case 0x05: // CLIENTTYPE_TAIWAN case 0x06: // CLIENTTYPE_HONGKONG case 0x07: // CLIENTTYPE_THAI case 0x08: // CLIENTTYPE_LOCAL case 0x09: // CLIENTTYPE_JAPAN_SAKRAY case 0x0a: // CLIENTTYPE_THAI_SAKRAY case 0x0b: // CLIENTTYPE_TAIWAN_SAKRAY case 0x0c: // CLIENTTYPE_INDONESIA case 0x0d: // CLIENTTYPE_INDONESIA_SAKRAY case 0x0e: // CLIENTTYPE_ENGLISH_SAKRAY case 0x0f: // CLIENTTYPE_PHILIPPINE case 0x10: // CLIENTTYPE_MALAYSIA case 0x11: // CLIENTTYPE_SINGAPORE case 0x12: // CLIENTTYPE_PHILIPPINE_SAKRAY case 0x13: // CLIENTTYPE_THAI_FREE case 0x14: // CLIENTTYPE_GERMANY case 0x15: // CLIENTTYPE_INDIA case 0x16: // CLIENTTYPE_BRAZIL case 0x17: // CLIENTTYPE_AUSTRALIA case 0x18: // CLIENTTYPE_KOREAN_PK case 0x19: // CLIENTTYPE_RUSSIA case 0x1a: // CLIENTTYPE_VIETNAM case 0x1b: // CLIENTTYPE_PHILIPPINE_PK case 0x1c: // CLIENTTYPE_JAPAN_PK case 0x1d: // CLIENTTYPE_THAI_PK case 0x1e: // CLIENTTYPE_CHILE case 0x1f: // CLIENTTYPE_FRANCE case 0x20: // CLIENTTYPE_VIETNAM_PK case 0x21: // CLIENTTYPE_VIETNAM_SAKRAY case 0x22: // CLIENTTYPE_INDONESIA_PK case 0x23: // CLIENTTYPE_UAE }

And I'll add :

case 0xFF: charset = 'gbk'; break; // example

But for now I don't have any source informations about it.

 
April news

  • Did some updates to the website:
http://www.robrowser.com/
[*]Add support for 2014 packets.
[*]Introduce NPC Store UI.
[*]Add Skill description Window.
[*]Add support for multiple map-server.
[*]Introduce Screenshot system (alt + P) - experimental.
[*]Introduce a lot of effects.
[*]Add a STR Viewer to the repo.
[*]Add emotions and status effects.
[*]As all months, massive bugs fix.



emotions.jpg

status.jpg

meteor.jpg

store.jpg

skill.jpg

screenshot.jpg


 
Last edited by a moderator:
Woot nice. Awesomely done <3 I played your Demo and a server that uses the browser and it's fantastic. The only issue is... roBrowser is pretty laggy with Safari but when I use Chrome it's a lot better ;3

 
Things here in roBrowser is getting better! More power to you KeyWorld!!

 
better and better everyday *-* good job keyworld

 
Last edited by a moderator:
@Mysterious

Oh, it lagged on Safari ? Too bad. I can't test on this browser since it does not have webgl support on my OS. For now I tested without problems on Chrome, Firefox and Opera.

@all

Thank you guys
default_smile.png


 
Woot nice. Awesomely done <3 I played your Demo and a server that uses the browser and it's fantastic. The only issue is... roBrowser is pretty laggy with Safari but when I use Chrome it's a lot better ;3
some browser doesnt really work good with animated stuff .... ex. Safari / Maxthon ... 

 
@Jelly

Yep, the dedicate server got some problems, it's fixed now.

@all

There were not a lot of new features this month, mostly bug fixes : thanks to servers using roBrowser.

[*]It's now possible to use item that execute skills (fly wings, butterfly wings, scrolls, ...).

[*]Identify items using magnifier (or the skills)

[*]Possibility to see, equip/unequip ammos.

[*]Possibility to remove status ("off" button in equipment to remove falcon/cart/mount).

[*]And more importantly, the card system.

A new branch db_refactoring was created to clean up the DB files and more importantly to drop the support of lua/lub/txt/xray files.

It's still a work in progress but this branch already have new features

[*]Babies support

[*]Display the true attack animation of 2nd/3rd job.

[*]Refactoring and clean up of some parts of the code.

[*]A new user-friendly compiler tool.

For now it's just missing a converter tool to help converting lua/lub/xray/txt files to the proper DB files (work in progress).

Finally, there is a recent talk to migrate to Apache license 2.0.

 
Back
Top