Valhalla Legends Forums Archive | Battle.net Bot Development | BNCS Packet 0x12

AuthorMessageTime
DeCeP7ioN
I am sure that I am sending the BNCS packet 0x12 (SID_LOCALEINFO) incorrectly. This is what I have:

[code]
With PacketBuffer
.InsertDWORD 0
.InsertDWORD 0
.InsertDWORD 0
.InsertDWORD 0
.InsertDWORD 0
.InsertDWORD 1033
.InsertDWORD 1033
.InsertDWORD 1033
.InsertNTString MakeLocaleInfo(LOCALE_SABBREVLANGNAME)
.InsertNTString MakeLocaleInfo(LOCALE_ICOUNTRY)
.InsertNTString MakeLocaleInfo(LOCALE_SABBREVCTRYNAME)
.InsertNTString MakeLocaleInfo(LOCALE_SENGCOUNTRY)
.SendBNCSPacket &H12
End With

Public Function MakeLocaleInfo(ByVal id As Long) As String
Dim szBuffer As String, Result As Integer
szBuffer = String(256, vbNullChar)
Result = GetLocaleInfo(LOCALE_USER_DEFAULT, id, szBuffer, Len(szBuffer))
If Result > 0 Then
szBuffer = Left$(szBuffer, Result - 1)
MakeLocaleInfo = szBuffer
End If
End Function
[/code]

Since this packet is not accessible to me on BnetDocs, I am unable to know it's structure.

Does anyone know the structure of SID_LOCALEINFO? I would like to know what the first 8 DWORDs should be.
August 19, 2004, 1:08 PM
Kp
[quote author=DeCeP7ioN link=board=17;threadid=8241;start=0#msg76264 date=1092920939]Does anyone know the structure of SID_LOCALEINFO? I would like to know what the first 8 DWORDs should be.[/quote]

Why not just check how one of the legacy clients builds it? :) I'm pretty sure Diablo still sends it, but I haven't looked in ages.
August 19, 2004, 4:21 PM
UserLoser.
What the hell,

JSTR Battle.snp to Visual Basic:

[code]
Public Sub SendLocaleInfo()
Dim TimeZoneInformation As TIME_ZONE_INFORMATION
Dim SysTime1 As SYSTEMTIME, SysTime2 As SYSTEMTIME
Dim FileTime1 As FILETIME, FileTime2 As FILETIME
Dim TimeZoneBias As Long, SystemDefaultLCID As Long, UserDefaultLCID As Long, UserDefaultLangID As Long
Dim LCData1 As String, LCData2 As String, LCData3 As String, LCData4 As String

Call GetTimeZoneInformation(TimeZoneInformation)
Call GetSystemTime(SysTime1)
Call GetLocalTime(SysTime2)
Call SystemTimeToFileTime(SysTime1, FileTime1)
Call SystemTimeToFileTime(SysTime2, FileTime2)

TimeZoneBias = TimeZoneInformation.Bias
SystemDefaultLCID = GetSystemDefaultLCID()
UserDefaultLCID = GetUserDefaultLCID()
UserDefaultLangID = (GetUserDefaultLangID() And &HFFFF)

LCData1 = String(&H40, vbNullChar): LCData2 = String(&H40, vbNullChar)
LCData3 = String(&H40, vbNullChar): LCData4 = String(&H40, vbNullChar)

Call GetLocaleInfo(LANG_USER_DEFAULT, LOCALE_SABBREVLANGNAME, LCData1, &H40)
Call GetLocaleInfo(LANG_USER_DEFAULT, LOCALE_ICOUNTRY, LCData2, &H40)
Call GetLocaleInfo(LANG_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, LCData3, &H40)
Call GetLocaleInfo(LANG_USER_DEFAULT, LOCALE_SENGCOUNTRY, LCData4, &H40)

LCData1 = Left$(LCData, InStr(1, LCData1, vbNullChar) - 1)
LCData2 = Left$(LCData2, InStr(1, LCData2, vbNullChar) - 1)
LCData3 = Left$(LCData3, InStr(1, LCData3, vbNullChar) - 1)
LCData4 = Left$(LCData4, InStr(1, LCData4, vbNullChar) - 1)

With Bot.sendbuf
.Insert FileTime1.dwLowDateTime
.Insert FileTime1.dwHighDateTime
.Insert FileTime2.dwLowDateTime
.Insert FileTime2.dwHighDateTime
.Insert TimeZoneBias
.Insert SystemDefaultLCID
.Insert UserDefaultLCID
.Insert UserDefaultLangID
.Insert LCData1
.Insert LCData2
.Insert LCData3
.Insert LCData4
.SendPacket SID_LOCALEINFO
End With
End Sub
[/code]
August 19, 2004, 5:04 PM

Search