tolamba và lckhoa ơi mình cũng đang muốn dịch game này có vài chỗ không biết muốn hỏi các bạn các bạn có thể add nick yahoo mình được không. Nick mình là
[email protected] hiện nay mình đã thay đổi được Font chữ của các Menu và các Tên nhân vật Item còn Font của các đoạn hội thoại mình tìm hoài không ra.Mình muốn trao đổi với các bạn qua yahoo cho nó tiện
---------- Post added at 17:39 ---------- Previous post was at 16:38 ----------
Hiện nay mình dịch game không patch thẳng vào đĩa mà mình patch vào Memory của game khi đang chơi. Tức là mình lập trình một cái phần mềm khi đang chơi thì mới patch vào . Chỉ có thay đổi Font chữ thì mình mới Pach vào game thôi.Mình gom các kí tự từ A-Z và a-z vào bảng ký tự 40 của game hết nhưng có một số ký tự như g p thì nó nhảy lên trên khi hiển thị còn muốn hiển thị thì phải đặt nó ở bảng ký tự 41 thì nó mới tự thụt xuống cho hợp.
-Đây là đoạn Code mình dịch Game
Private Sub Dịch(ĐịaChỉ As Long, VănBảnCầnDịch As String)
On Error Resume Next
WinHwnd = FindWindow(vbNullString, "PS7 v0.18")
If WinHwnd = 0 Then Exit Sub
Dim BaseAddress As Long
Dim TextAddress As Long
Dim sText As String
Dim iChange As Long
Dim iNextAddress As Long
Dim iText As Long
Dim iNextText As Long
Dim MyChrW
Dim eNextString As Variant
Dim WriteAddress As Long
sText = VănBảnCầnDịch
TextAddress = ĐịaChỉ
GetWindowThreadProcessId WinHwnd, dwProcessID
hProcess = OpenProcess(PROCESS_READ_WRITE_QUERY, False, dwProcessID)
BaseAddress = ReadProcessLong(hProcess, BASE_ADDRESS)
WriteAddress = BaseAddress + TextAddress
Dim NextWriteAddress As Long
Dim iNextWrite(0 To 20) As Long
For iChange = 1 To Len(sText)
Select Case Asc(Mid(sText, iChange, 1))
Case 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90
If iChange = 1 And Asc(Mid(sText, iChange + 1, 1)) <= 90 Then
WriteProcessByte hProcess, WriteAddress + (iChange - 1), Asc(Mid(sText, iChange, 1)) + 109
Else
WriteProcessByte hProcess, WriteAddress + (iChange - 1), Asc(Mid(sText, iChange, 1)) + 109
WriteProcessByte hProcess, WriteAddress + (iChange), 0
WriteProcessByte hProcess, WriteAddress + (iChange + 1), &H41
WriteAddress = WriteAddress + 2
End If
Case 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122
MyChrW = Array(196, 197, 198, 199, 200, 201, 202, 217, 203, 0, 204, 205, 24, 206, 207, 208, 25, 209, 210, 211, 212, 213, 218, 28, 26, 27)
'If iChange = 3 And Asc(Mid(sText, iChange - 1, 1)) < 91 Then
Select Case MyChrW(Asc(Mid(sText, iChange, 1)) - 97)
Case 24, 25, 26, 27, 28
WriteProcessByte hProcess, WriteAddress + (iChange - 1), 0
WriteProcessByte hProcess, WriteAddress + (iChange), &H42
WriteProcessByte hProcess, WriteAddress + (iChange + 1), MyChrW(Asc(Mid(sText, iChange, 1)) - 97)
WriteProcessByte hProcess, WriteAddress + (iChange + 2), 0
WriteProcessByte hProcess, WriteAddress + (iChange + 3), &H41
WriteAddress = WriteAddress + 4
Case Else
WriteProcessByte hProcess, WriteAddress + (iChange - 1), MyChrW(Asc(Mid(sText, iChange, 1)) - 97)
End Select
Case Else
End Select
Next iChange
Dim izNext As Long
CloseHandle hProcess
End Sub