Message (Kernel)

Retrieves message resource information. Messages are what is spoken by in-game characters. See Message editor.

Important

SCI1.1 only.

Message(msgGET moduleNumber noun verb condition sequence textBuffer)

Gets the text for the specified message resource, and returns the talker number.

Parameters:
  • moduleNumber (number) – The module number (room number).
  • noun (number) – The message noun.
  • verb (number) – The message verb.
  • condition (number) – The message condition.
  • sequence (number) – The message sequence number.
  • textBuffer (string) – The buffer that receives the message text.
Returns:

A talker number, or 0 if it failed.

Example:

(procedure (SomeFunc &tmp [buffer 100])
        (Message msgGET 0 12 0 0 1 @buffer)
        ...
)
Message(msgNEXT textBuffer)

Gets the text for the message resource that follows the one previously obtained by msgGET. The following message is the one with the same moduleNumber/noun/verb/condition tuple, but an incremented sequence number. If no such message exists, then the search continues at the message given by the last stack frame.

Parameters:textBuffer (string) – The buffer that receives the message text.
Returns:A talker number, or 0 if it failed.
Message(msgLAST_MESSAGE outBuffer)

Gets the tuple of the last returned message. This consists of 5 16-bit values: moduleNumber, noun, verb, condition and sequence.

Parameters:outBuffer (heapPtr) – A buffer large enough to hold 12 bytes (2 for the null terminator)

Example:

(procedure (SomeFunc &tmp buffer modNum noun verb condition case)
        (= buffer (Memory memALLOC_CRIT 12))
        (Message msgLAST_MESSAGE buffer)
        (= modNum (WordAt buffer 0))
        (= noun (WordAt buffer 1))
        (= verb (WordAt buffer 2))
        (= condition (WordAt buffer 3))
        (= case (WordAt buffer 4))
        (DoAudio audPLAY modNum noun verb condition case)
)
Message(msgSIZE moduleNumber noun verb condition sequence)

Gets the size needed to store the message text (including terminating null).

Parameters:
  • moduleNumber (number) – The module number (room number).
  • noun (number) – The message noun.
  • verb (number) – The message verb.
  • condition (number) – The message condition.
  • sequence (number) – The message sequence number.
Returns:

The size in bytes needed to store the message text.

Example:

(procedure (SomeFunc modNum noun verb condition seq &tmp theSize title)
        (= theSize (Message msgSIZE modNum noun verb condition seq))
        (if (theSize)
                (= title (Memory memALLOC_CRIT theSize))
                (Message msgGET modNum noun verb condition seq title)
        )
)
Message(msgREF_NOUN moduleNumber noun verb condition sequence)
Message(msgREF_VERB moduleNumber noun verb condition sequence)
Message(msgREF_COND moduleNumber noun verb condition sequence)
Message(msgPUSH)
Message(msgPOP)