Page 1 of 1

hook packet 0xAD

Posted: Sat Sep 23, 2006 5:32 am
by innominabile
In hook packet

Code: Select all

Packet 0xAD
{
  Length variable
  ReceiveFunction FilterSpeakingHook:HandleReceiveSpeak
}

with const:

Code: Select all

const SPEECH_PKG_OFFSET_MODE := 3;
and script:

Code: Select all

exported function HandleReceiveSpeak(who, byref packet)

  var mode := packet.GetInt8(SPEECH_PKG_OFFSET_MODE);
  if (mode == 0xc0)
    return 0; //continue to core hook functions
  endif
what is 0xc0? What means? Anyone know this?

Posted: Sat Sep 23, 2006 11:46 am
by CWO
0xC0 is the speech.mul mode. The text comes in a wierd way when speech.mul triggers it.

[quote]
Packet ID: 0xAD
Packet Name: Unicode/Ascii speech request
Packet Size: Variable
Sent By: Client
Submitted: MuadDib

Packet Breakdown
BYTE[1] cmd
BYTE[2] length
BYTE[1] Type
BYTE[2] Color
BYTE[2] Font
BYTE[4] Language (Null Terminated)
· “enu“ - United States English
· “desâ€

Posted: Sat Sep 23, 2006 2:14 pm
by innominabile
But is a problem to read text when speech.mul is active? what does speech.mul?

Posted: Sat Sep 23, 2006 4:36 pm
by CWO
speech.mul is used to send codes for commonly said trigger words instead of the entire word. One of the biggest problems with doing things with it though are that they are 12-bit codes. You can still parse them and use them in your scripts but its just wierd. But the packet is a bit different when sent with speech.mul vs without it.

Posted: Sun Sep 24, 2006 12:12 am
by innominabile
mm speech.mul could be used to send commands to Injection or similar?
It is a problem if I do so:

Code: Select all

  var mode := packet.GetInt8(SPEECH_PKG_OFFSET_MODE);
  if (mode == 0xc0)
    return 1; //stop packet processing
  endif
?

Posted: Sun Sep 24, 2006 2:54 am
by CWO
no thats not the case. Speech.mul is used in just plain untouched installs of UO for OSI. This is kinda how it works...

Say you say something like:

"I wish to lock this down"

with speech.mul, it will send a small 12-bit number (12 bits is like 1 1/2 characters so its extremely small) which the OSI server uses as an easy serverside processing code for common trigger words. The client also recognizes these phrases in other languages and sends the same exact codes making it even easier for scripts to parse what was said in a multilingual environment.

Speech.mul has never been considered a cheat but its still a bit wierd to try and script out the process because the way the client formats speech.mul into the packet.