Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Butchered v4 Pre-release.

Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
People wondering what I'm doing with the Butchered clients and internationalisation and how I plan to implement all the wonderful DLLs Vormav has been sharing with us and so on will be pleased to see, and play with this.

This is Pre-beta, but a bit of a "yahoo" for me. I've finally managed to import all my labels from previous incarnations as exported symbols built into the executable.

This means that all disassemblers will see all my labels, so you can look at them in IDA or PE Explorer or Sourcer or whatever, and also means you don't have to faff about manually looking up addresses and labelling them up according to the lists I've exported before. They will already show up in Olly. \o/

Here's the download:-

What you will want to be aware of is that this is a complete gaping hole for anyone trying to patch the exe with DLL injection cheats... so this is fantastic while you are developing, but you'll want to remove it before you release.

The tool that allows me to do this is still incomplete and very very messy. However, when I no longer have to manually hex a bunch of offsets and can be more sure that it will work in a wide variety of situations, you can rest assured that I will share that also.

Any comments on issues with this client compared to Butchered b2 (on which it is based) are welcome. I'm also open to any other ideas or thoughts on this technique, as it's something I've never seen used before.

--- EDIT ---
MEGAUpload down, now attached as 7z.
View attachment Butchered4Pre.7z

--- EDIT2---
Extra link from SunnyZ
 

Attachments

You must be registered for see attachments list
Last edited:
Joined
Jul 24, 2006
Messages
884
Reaction score
581
Aw wow thanks =D Looks a lot nicer than kpt test.

Window resizes perfect (incorporates the window border aswell)

And item text actually fits on screen. Now just the fun part of translating it ^^

Just wondering if you know of any way to have korean text translated to hex? Would make finding the words to translate much easier :D

Thanks again bobsobol for this exe :D
 
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
None of which should have changed since which now has a patch provided by Osirus translating most of it to English.

He performed his translations in one evening with me using a beta version of my tool to locate the Korean strings in Olly, and translate them via Web Translator, and comparison to an EPT client. :wink:

Butchered 3 became somewhat of a rejected experiment, but Butchered 2b was also the basis of my International experimentation which went a lot better. It became clear, however, that I was going to have to make my labels more portable if I was going to continue that development.

Butchered 4 final release should have full internationalisation via external files, hard or soft pointer configuration, (with dynamic hardware pointer sprite and not both at once) as well as external maps, items and experience tables, and optional window mode for non-admin users.

There are more ideas I have that may make it in there, or may not. But this small step is crucial for me to achieve any of that, because it means my documentation of what I'm doing and where I'm going will follow my executable around. (until such time as you want to release it to players, when of course you will dump it) It's quite safe to remove the export table and the executable doesn't rely on it at all. I don't intend to make DLLs rely on it either, because you really don't want to be giving it to players.

But I need it, and I think it's very useful for me to be able to share that built in documentation with you as well. This means you can see much easier what I have done, and why. And you can see more clearly what you can do with the client to take ownership and use it in your own way.

It's something that is woefully lacking in developer clients like the QF releases.

And... fair dos... it has been quite a struggle for me to turn a CSV exported from Olly into exports in a PE that any debugger or disassembler will see and use. I really don't blame anyone who couldn't be bothered with this one. I've been putting it off and putting it off for a long time, and finally had to bite the biscuit and get on and make it happen.

And I'm not there yet. Because I can only do this once. My tool can't read back the files it has added exports too. :(: I'll get there, and then we can all start documenting locations and offsets and routines and sharing them with one another, merging them into a complete picture of what goes on inside our client.

Because I'm really making this as a base for others to take on and move forward. Not just for me.
 
Last edited:
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
It does not consider it a "threat"!? That's funny, this is the first client I've put together having made changes to imports or exports that my AV has complained about... but I fixed that before releasing. (it's part of the manual hexing required after using my tool that I need to clean up [image size is larger than headers suggest I think])

You can use CFF Explorer to remove HanDes.dll from the import table (that won't hurt) then if any HANGAME parameters are passed, the game will just crash. :wink:

I'm sure you are sufficiently skilled to clean that up.

As stated in my guide, I don't want to remove HanDes from the client, because there are a number of ways you can change the way the client uses it. As a base for others to use, it's better that it remain, and I document where it is used, and what you can do to make it more useful, or get rid of it if you don't want it. If I get rid of it for you, it's much more difficult to put it back that to take it out.

Oh! Also, to Sungam3D, is what this is all aiming towards fixing.

I know it seems like a long winded way of doing it, but I can see that it's patching to much, too many times. I need the DLL to be patched in the header, and apply only to some of the calls made to basic OS string routines... that is very difficult when all of the documenting labels I built up in Olly are destroyed every time I change the Import table. And I'm likely to rely on them even more heavily once I start having to update the thousands of pointers that do want to be patched to the new functions in the International string library.

So, that's all part of where this is heading. At that point all your translation is in an external file.

Ultimately I will enable you to lock it to your client so users can't modify it, but even if they can, updating where SMDs, BMPs and TGAs are loaded from isn't much different from users unlocking those files and editing them in place. So it's not a huge hole. Being able to change the sign up URL isn't nice... being able to modify Clan and SoD ASP URLs is a bit of a pain in the butt. But that's all.
 
Last edited:
Custom Title Activated
Loyal Member
Joined
Jan 28, 2009
Messages
1,320
Reaction score
616
[...]I plan to implement all the wonderful DLLs Vormav has been sharing with us and so on will be please to see, and play with this
I hope for now you will implement only writeClientField.dll, global tables are still beta and they have some bugz when come to special monsters (Babel, Valento).

But I am looking forward to see your fully working translation dll in butchered.
 
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
Yes... I expect to create a "read settings and configurations" library (actually a number of them) and plug International, and then the other tables and such into that.

The reason being, I would like people to use .ini, .xml and other standard configuration files while developing, and move to something binary and most importantly cryptographically signed before releasing to players.

I intend to have translations, item lists, level lists, map data, monster data, skill effects etc. all stored in external tables, accessed by DLLs. (initially) Then I will tell people some ways they can build their DLL into the executable so that it can all be packed / encrypted (since no matter what I say, that is still very popular) together.

One major alteration I will probably make to your DLLs is that (for Butchered) they shouldn't need to be re-compiled to change whatever content they are generating. (I'll still release source, because it's always useful for security and progress to diversify but...) It's perfectly reasonable to have them iterate through a command file, or XML structured data in order to perform the operations that presently need to be changed in source.

I will bare that in mind as I am updating and porting International DLL to C.
 
Last edited:
Newbie Spellweaver
Joined
Oct 6, 2004
Messages
12
Reaction score
0
what port have this?

how to winmode ?
 
Last edited:
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
10009, just like any other KPT client.

Window mode is still only available to Admin users. (Game Master / GM)

You need hotuk.ini in the client folder, with Korean text like this:-
Code:
// Screen Mode 
//          서버모드 = Server
//          창모드 = Window
//          전체화면 = Fullsceen
*화면모드 창모드

// Screen Resolution
*화면해상도 1280 720

//Admin Mode
(왕초보가이드) 포장단체주문환영 /0
Screen resolution is set to 720p HDTV resolution in the example. :wink:

Any line that starts "//" is a comment. You can write in Spanish, as it's only there to remind you what the Korean instructions mean. :D:

--- EDIT ---
Oh, yes... Server Mode does not work with this client. But it still recognises the command, and simply exits if it is found.

The fact that so much server code is in various clients is how we (or more specifically, some very cleaver people from China) got a reasonably working server out of one them.
 
Last edited:
Joined
Jul 24, 2006
Messages
884
Reaction score
581
Sorry for the bump, but seeing how megaupload is down. Here is a mirror for ya.

Mirror 1:
 
Last edited:
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
Added to the OP, but I had already attached a copy, hosted directly on RZ since MEGAUpload when down. ;)
 
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
It's pretty well documented here, but the documentation has gotten spread over several threads. It was pointed out, and I concur, that the effect is actually a trick. The DirectX render area is still 4:3, but the top and bottom are cropped out of the window, even in full screen.

is a good place to start looking over my documentation, but as I say, I've answered questions on it in several other threads. Mostly where various "branches" of forked development from my Butchered client have been used to illustrate something.

See what you can find, and if you don't understand something, just ask. :D
 
Newbie Spellweaver
Joined
Jun 27, 2007
Messages
15
Reaction score
0
Hi Bob ^ ^
Character motion bug ...
How do I fix it?
mo - Butchered v4 Pre-release. - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
Means nothing to me. What is "Character motion bug"?
 
Newbie Spellweaver
Joined
Aug 31, 2012
Messages
72
Reaction score
26
Let me explain it as i know it..i've seen it in some servers in the past, though they didnt fix it so i dont know how to do it..

It appears on one handed weapon mostaly..Bows, wands..
Realy hard to explain..

You use a bow and the game thinks you use a one hand sword, a wand, .. etc ect (in this case a scythe)

and becouse the game "thinks" you use another item instead of a bow your movement will change..

kinda like that xD
 
Last edited:
Custom Title Activated
Loyal Member
Joined
May 26, 2007
Messages
5,545
Reaction score
1,315
Oh... the held item style issue? That's to do with those boundaries in the array index. If you transfer the item table from one client to another, the boundaries will be different and characters will hold weapons the wrong way, until you make the appropriate changes to pointers in the client.

If your server has a different item list to the client... that may do it alone. I'm not sure.
 
Back
Top