Re: Beta Technical Demonstration - Translation without Hexing the EXE
Well,I have delphi 7 Enterprise, and I didnt buy it.. hehe.
But focus in the thread, that is, in fact, very exciting :B
Re: Beta Technical Demonstration - Translation without Hexing the EXE
If another wanna edit it to hack. how to it will??? You must code function accept only string :) ^^.. I never use it. If it have finish. I will use it :D
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Yea... I don't want to encourage ppls to go hunting Torrents or even searching Amazon for old copies for cheap. I don't mind if it's not FOSS, but there must be a private, non-commercial use version or community edition like Visual C Express editions or SQLYog.
Closest "free" alternative to Delphi is lazarus but I honestly don't think that any Borland or GCC based tool that isn't part of the core GNU Compiler Collection (C GC, C++ CC, x86 Assembler GAS, Fortran 66 FC and Java JC) is going to be an improvement on freeBASIC... which also uses GCC for underlying operations.
MinGW (Minimal GNU for Windows) comes with headers for the Windows platform and is an near complete re-write of Microsofts Platform SDK, it links directly to MSVCRT.dll, just a VC6 does, and doesn't have the dependencies of newer VC editions, or the overhead of statically linking VC7, 8, or 9 C Runtime libraries... so that's okay. Anything else ends up linking in a custom (non C) runtime library based on MSVCRT, or in Borland compilers case, their own RTLs either static or dynamically linked.
I know, I love my BCB 6 and it is still one of my most prized software purchases. It may be very easy to create DLLs, but the dependency overhead is way worse than any GNU based tool. The RAD development with VCL is fantastic for large projects, or small tools which make no money and need to be produced quickly... but the cost is size and memory consumption, so for DLLs to import in to PT is not a great choice, I am sadden to say.
It's probably no worse than freeBASIC... but I only see it as an "alternative", it has some pluses, and an equal quantity of negatives, and also shares many of the failings of freeBASIC.
VC is well known to most people, it can produce small code, if you codebum well enough, watch what you are doing with compiler directives and keep a keen eye on the build process (don't link what you don't use, and don't rely heavily on the DLL versions of the RTL which will contain many functions your DLL doesn't use, and this is a failing in most of the sql.dll and clan.dll libraries built with MSVC7 as debug builds dynamically linked to their CRT libraries and then missing their .PDB >.<).
I also think GCC CC (C++) is still a good choice, because it links to MSVCRT.dll which is in every version of Windows since 95b, and has not changed. It's quite small, compared to it's newer VC counterparts and is pretty stable (if not completely ANSI or ISO compliant)... but it does lack an IDE, and project management through bash scripts and makefiles scare many Windows developers silly. (Code::Blocks and Bloodshed are possibilities here) I'm not good with make files my self, but I'm not great with ATL or MFC either, so if that's what people here would prefer, I will redirect my aim in that direction.
I suspect, that most people would prefer a Visual Studio Express edition solution, as that has proven to be the case in most successful projects of this nature.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
DLL easy create on C++.. You can search it on Google :D
Re: Beta Technical Demonstration - Translation without Hexing the EXE
I think there is another bug.
This string:
TextOutA(), 1239352, "게임을 종료 합니다", "/* Not Replaced */"
I cant patch it.. When I patch with this number, others strings will be patched too, right? I think this is the same problem we had with the Tribe & Class stuff.
Could you try to patch it bob?
Re: Beta Technical Demonstration - Translation without Hexing the EXE
"Exit Game"? How do you get the client to display that Lelejau? I can't even find that string "EA B2 8C EC 9E 84 EC 9D 84 20 EC A2 85 EB A3 8C 20 ED 95 A9 EB 8B 88 EB 8B A4 " in my client... does it maybe come from the server, and get displayed in the chat window?
If that's the case, you would need to implement International.dll in the server.
@zahara: Yes... there are very few languages you can't assign functions to export to a DLL. The point is not C++, but which C++ compiler, and what framework. VCL (Easy, but big and not free), ATL (Small, not so easy), STL (Much the same as ATL but less MS specific, and not quite so easy), MFC (Not very useful for this task I think, and bigger than ATL / STL).
There may be other OpenSource "Type Library Frameworks" and such that could be excellent for low memory usage fast access to dynamic length arrays or linked lists and string manipulation? If anyone knows a good one, I'd like to hear about it.
Maybe someone here thinks they could implement something like VCL-like TString object and String Lists in C++ (VC / GCC) and would be willing to donate such classes. Or maybe someone is really cleaver and can implement one in Assebler that they (or I) can compile to a .obj / .bin / .o and use Microsoft lib.exe to make it into a .lib file I can include at build time in Visual C++? IDK It's something I've considered.
I worked a version in ANSI C which had the right exports and stuff... but with no means of getting Mid(szString, dwStart, dwLenght) or StrObj.SubString(Start,Lenght) and InStr(String, SubString) or StrObj.InString('SubString') it's very difficult to work with strings in regular standard C.
It's very easy to do this stuff in Basic, Fortran, Pascal, PHP, Perl etc without any special typelibs or add-ons to the standard language, and not so easy to make a lightweight DLL. With Asm, C or C++, it's pretty hard, but very easy to build the DLL.
More examples of possibilities I discounted as impractical:-- The C++ strlib.h helps but doesn't quite go far enough in terms of the arrays / linked lists.
- I can include SQLite and that would be awesomely easy... but as light an SQL engine as it may be, it's still way to heavy for this job.
See the problem?
Re: Beta Technical Demonstration - Translation without Hexing the EXE
this string is showed when you, in-game, press SHITF+ESC to exit the game. Or just clicking in the Exit Button.
Its like that in KPTTrans:
"Quitting SGPT!"
@edit
And, the new dll is crashing my game. After I login in Ricartem or Pilai, or whichever map, after a few seconds, the game just stops ansering. I'll reinstall my client full, but I'm not convinced that it will stop...
Re: Beta Technical Demonstration - Translation without Hexing the EXE
I trapped this stringwith the following line:-
1566976 = "Logging out..."
This is in the main threads stack space, so it's not a very "safe" place to patch it, but I don't see it appearing before it is stored there.
I haven't seen any other string placed at exactly that location on the stack, and this string seems to always appear at that location... so, while it's not safe, it does seem to be reliable.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
OK, I reinstalled KPT and updated to 1988.
I added the dll, and everything seems to be fine.
Here is the 0016.lng, for 1988: (it appears to work fine in 1987, once I made it in 1987 and works - until where I checked - fine.)
Quote:
; BETA
1239352 = "Saindo do jogo..."
; First Screen
;6209776 = "Ver: 1.98.7"
6215984 = "Conectando ao EvoPT..."
6215956 = "Falha na conexão!"
6215928 = "Preencha com seus dados!"
6215900 = "Usuário ou senha incorretos!"
6214708 = "Deseja continuar?"
6215808 = "Conta já está logada!"
6215720 = "Tempo de jogar expirou."
6215836 = "Você está banido! Entre em contato com o suporte."
; Tier Rank Name
51408268 = "Lancelot"
; Tribe
6212548 = "Tempskron"
6213852 = "Morion"
; Class
6083640 = "Sacerdotisa"
6083676 = "Cavaleiro"
6083988 = "Pikeman"
6083980 = "Arqueira"
6084000 = "Lutador"
6084008 = "Mecanico"
6083632 = "Mago"
6083664 = "Atalanta"
; Items
6136612 = "Talento: /n"
6136956 = "Defesa: /n"
6136932 = "Absorção: /n"
6136896 = "Integridade:/n"
6136844 = "Terra: /n"
6136820 = "Fogo: /n"
6136808 = "Gelo: /n"
6136796 = "Raio: /n"
6136784 = "Veneno: /n"
6136652 = "Nível: /n"
6136640 = "Força: /n"
6136612 = "Talento: /n"
6137004 = "Pod. de Ataque:/n"
6136992 = "Vel. da Arma:/n"
6136968 = "Crítico: /n"
6136944 = "Taxa de Atq: /n"
6136920 = "Bloqueio: /n"
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Of course these are very different from the addresses in 1977.
Still, thanks.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
^^. i'm happy when you and lelejau develop it :)
Re: Beta Technical Demonstration - Translation without Hexing the EXE
Okay... I see the issue with the game locking up after a while. I believe it's in the MRX rain code.
It seems if you wait for a second shower to come, that's when it locks up, but I'd already noticed that it doesn't restore "ambient" sound when rain ceases, and I think there should be a "rainfall" ambient sound to accompany the thunder... so I'm guessing MRX rain is missing some code. :wink:
I'll mention it on his thread, see if together we can't crack that one.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
well, I think you should disable rain in that dll. I mean, the purpose is translating texts not adding rain...
I think the speed will slow a liltle bit because of the translating. I think we should remove all the code we can, to make the dll cleaner and to make the game as faster as we can.
Re: Beta Technical Demonstration - Translation without Hexing the EXE
http://img405.imageshack.us/img405/4803/errorrm.jpg
Its not working bob. This message should be "DC Disconnected from Server.." but in Korean. But it was patched with that loging out text..
---------- Post added at 06:51 PM ---------- Previous post was at 06:34 PM ----------
Another bug.
IN the skills, we have this: (I'm assuming this is the Healing skill description.)
lstrcat(), 1243828, "신성한 마법으로 생명력을 회복 시
켜준다.", "/* Not Replaced */"
lstrcat(), 51666824, "힐링 (요구레벨:10)
신성한 마법으로 생명력을 회복 시
켜준다.", "/* Not Replaced */"
Skill Name(Level:10)
Description
And, with that same number, I found another text. So, If I pacth this, another one will patch too. I guess we have a problem..
Re: Beta Technical Demonstration - Translation without Hexing the EXE
here is what I have so far:
http://img844.imageshack.us/img844/1102/traduo.jpg
I'm currently translating the skills, which will take alot of time. Since when the skill isnt ready ( i'm not buy it yet) the strings to patch are diffrent from the skill bought.