Jump to content
Shinryo

Custom Ragnarok Online Client

Recommended Posts

I have implemented a lua state class which acts as the interface you have mentioned. The custom client will read all lua related stuff (*.lua > *.lub) from a folder called "scripts" which resides at the root folder of the client. This folder is split into "tables" and "functions" which again contain lua files that are related to either pc, map, accessory, etc. Here's an example of a function I am currently using to get the hair sprite path:

GetPcHairSpritePath = function(hair_id, male)
local prefix = ""
local postfix = ""

if hair_id < 1 then
 hair_id = 1
elseif hair_id > 27 then
 hair_id = 27
end

if male == false then
 prefix = "Àΰ£Á·/¸Ó¸®Åë/¿©/"
 postfix = "¿©.spr"
else
 prefix = "Àΰ£Á·/¸Ó¸®Åë/³²/"
 postfix = "³².spr"
end

return prefix..hair_id.."_"..postfix
end

Right now, it is even possible to create custom classes with ease.

XML and LUA help a lot in creating customization which is something that I try to achieve. I also plan to export whole classes so that those can be accessed through lua (e.g. network handler, window manager, etc). Therefore an SQL like database would be only good for storing configuration stuff or paths.

Edited by Shinryo
  • Upvote 2
Link to comment
Share on other sites

@Shinyro -

Your Project truly looks great and if only even partially released would be one of the best enhancements / modifications ever released. This from what I can see looks to be massively superior to Gravity's Client & I wish you the best of luck on this project! I can not wait to see the final results of this client ! Also thank you for your dedication to the community even though your core interests are elsewhere, but you can not beat the nostalgia of Ragnarok and you know it haha!

Link to comment
Share on other sites

Hmm, I was reading about the custom Lua files and even about custom windowing, splitting and display, and it kept me thinking. I'm not sure what is it that forces this behavior, but given that it is indeed a client-side issue, could it possibly be made so that you could make any item in the DB to behave like a weapon/shield sprite if the server sends in the apropriate information? I mean, will it show the actual weapon sprite animation (or even the default one) instead of a punch animation?

I keep reading that the DBs have a limited amount of slots for the various weapons and that any change would force the punch thing. sometime people just want to make more than the amount of weapon slots avaialble to them.

Link to comment
Share on other sites

Would you be able to change controls to WASD instead of using mouse clicks? Oh man, the possibilities!

Another thing, i don't know much about game development but new mmo's tend to mask and help people to play with higher latency. RO's client have a huge problem, if you lag even a little bit you get freezed and teleported back to your last valid cell, something to fix that would be awesome. This issue also happens without server/client lag, it seens that the game just can't keep up with people on the screen, so you can cast a aoe and hit nothing or be unable to use a skill because the user is OOR.

Nice work man.

Edited by guacamole
Link to comment
Share on other sites

GetPcHairSpritePath = function(hair_id, male)
local prefix = ""
local postfix = ""

if hair_id < 1 then
 hair_id = 1
elseif hair_id > 27 then
 hair_id = 27
end

if male == false then
 prefix = "Àΰ£Á·/¸Ó¸®Åë/¿©/"
 postfix = "¿©.spr"
else
 prefix = "Àΰ£Á·/¸Ó¸®Åë/³²/"
 postfix = "³².spr"
end

return prefix..hair_id.."_"..postfix
end

It looks like you're implementing classes through a module/function approach. Why not tables?

Link to comment
Share on other sites

Hair sprites don't need a table. :)

Everything else looks like this:

PcIdTable =
{
...
JT_KNIGHT_H = 4008,
...
}
PcNameTable =
{
...
[PcIdTable.JT_KNIGHT_H] = "Lord Knight",
...
}
PcSpriteNameTable =
{
...
[PcIdTable.JT_KNIGHT_H] = "·Îµå³ªÀÌÆ®_",
...
}

Link to comment
Share on other sites

Just as a matter of fact, would you mind leaving that part away:

elseif hair_id > 27 then
 hair_id = 27
end

I think the negativ check is important but the check if the hairstyle id is above 27 is an "unneeded" official behavior. I also would kind of cache all that stuff instead of looking it up every time it is needed.

Link to comment
Share on other sites

Hair sprites don't need a table. :)

Are you sure ?

M :

start to index 2: 1 7 5 4 3 6 8 9 10 12 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

F :

start to index 2: 4 7 1 5 3 6 12 10 9 11 8 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

(Default style: 2)

It was base on an old client, things may have change, I didn't check it recently.

Anyway, good job :)

Link to comment
Share on other sites

I'm pretty sure the hairstyle ids are still mixed up.

Unless they've updated it recently.

btw great progress, you've surprised me already :D

keep it up!

Link to comment
Share on other sites

Hi,

Keep up the good work and updates with the project, the client is considered one of the greatest bottlenecks of rAthena or any other emulator in this case. Completing such project may be excruciating and a long process, but completing such project would revolutionize the whole Ragnarok private server as a whole.

I know this maybe immature or sounds like a word coming from an idiot's mouth or whatever you may call it but I need to know.

It is stated somewhere that running private server is not illegal but hacking client is.

By using this client, will it consider our own client or hacking Ragnarok client?

Does this by any chance change the legality of private servers?

Regards,

Shade

Edited by Shade
Link to comment
Share on other sites

I believe he is writing the client from scratch and planning to make it open source; should not have anything to do with Gravity's client. If anything, this should make ragnarok private servers completely legal and out of the 'grey' zone they are in now.

Link to comment
Share on other sites

As long as the custom client uses gravity's maps, sprites, acts, etc it is still in the grey zone. Correct me if i'm wrong.

Link to comment
Share on other sites

^ Forgot about that, you are correct. But I believe that is a different issue, in our case using the client would be totally fine =p (although I think in regards to other emulators (WoW) as long as you don't modify the client in any way it is fine to use it).

In this instance, we can now modify the client itself and add features as it is not Gravity's.

Link to comment
Share on other sites

Yeah, it is true. As far as I know, it is legal to spread gravity's stuff as long as you do not modify and do not sell it.

Link to comment
Share on other sites

As long as certain file formats like .grf can be read by the client and Gravity's sprites, sounds, music, effects are being used, it's still a violation of law. Although a custom client would be a big step towards legality, because it'd be the least of all problems to develop custom graphics/sounds as well.

  • Upvote 1
Link to comment
Share on other sites

True, there are tons of custom graphics and music that we can use but not client.

Just a suggestion, if you could make character's gender independent of each other. Perhaps maybe when a player creates a character, the client would ask (Male/Female) it would be great. I don't have much knowledge on coding and how it might make things complicated though.

Link to comment
Share on other sites

True, there are tons of custom graphics and music that we can use but not client.

Just a suggestion, if you could make character's gender independent of each other. Perhaps maybe when a player creates a character, the client would ask (Male/Female) it would be great. I don't have much knowledge on coding and how it might make things complicated though.

that's a thing sirius white already did once.

i don't know if you can read it but the pictures are what is most important.

http://siriuswhite.de/blog/2008/11/charakterbasiertes-geschlecht/

Link to comment
Share on other sites

I'm not sure if I mentioned this before however a HUGE +1 if you're able to have your client read higher polygon count models. That would enable more details and opportunities when it comes to playing on custom maps. :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.