Example tintin++ script for GMCP

#nop ========================================================================
#nop NewCirMUD GMCP Integration Script
#nop ========================================================================

#nop 1. GMCP NEGOTIATION
#nop The server sends: IAC WILL GMCP (255 251 201)
#nop We must respond with: IAC DO GMCP (255 252 201)
#nop Hex: \xFF = 255, \xFC = 252, \xC9 = 201
#EVENT {IAC WILL GMCP}
{
    #SEND {\xFF\xFD\xC9};
    #echo {Sent that I will use GMCP.}
}

#alias enable_gmcp {
    #send { \xFF\xFC\xC9 };
    #echo { <PROMPT> [GMCP] Negotiation request sent (IAC DO GMCP). }
}

#nop 2. VARIABLE INITIALIZATION

#nop 3. STATUS LINE LOGIC
#nop Updates the TinTin++ footer bar.
#alias update_status_line {
    #format {prompt} {<fac>==[$status_name %.1s:$status_level] $vitals_hp/$vitals_hpmax%s $vitals_mp/$vitals_mpmax%s $vitals_mv/$vitals_mvmax%s AC$status_ac H/T:$vitals_hungry/$vitals_thirsty [$roominfo_num:$roominfo_name]==<099>} {$status_class} {H} {M} {V};
    #format {godprompt} {<fac>==[$status_name %.1s:$status_level] [$roominfo_num:$roominfo_name]==<099>} {$status_class}
}

#nop 4. GMCP EVENT HANDLERS
#nop These assume you are using a TinTin++ build with the GMCP plugin enabled,
#nop which populates the %gmcp% table and triggers these events.

#event {IAC SB GMCP} {
#nop    #echo {GMCP: %0 | %1 | %2 | %3}
}

#nop Handle Character Vitals (HP, MP, MV, Gold, Hunger, Thirst)
#event {IAC SB GMCP Char.Vitals IAC SE} {
    #local {vitals_0} {%0};
    #foreach {*vitals_0[%*]} {i} {#var {vitals_$i} {$vitals_0[$i]}}
    update_status_line
}

#nop Handle Character Static Status (Name, Class, Level, AC)
#event {IAC SB GMCP Char.Status IAC SE} {
    #local {status_0} {%0};
    #foreach {*status_0[%*]} {i} {#var {status_$i} {$status_0[$i]}}
    update_status_line
}

#nop Handle Room Information
#event {IAC SB GMCP Room.Info IAC SE} {
    #local {roominfo_0} {%0};
    #foreach {*roominfo_0[%*]} {i} {#var {roominfo_$i} {$roominfo_0[$i]}}
    update_status_line
}

#event {IAC SB GMCP Core.Ping IAC SE} {
    #nop Send IAC WILL GMCP as a keep alive.  It won't impact the MUD.
    #SEND {\xFF\xFD\xC9};
}

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *