ATCP Prompt help

Post Reply
Kanner
Posts: 6
Joined: Wed Nov 03, 2010 4:53 pm

ATCP Prompt help

Post by Kanner »

Hi,

I’m very new when it comes to programming and even newer when it comes to Mudlet. I have been slowly learning triggers, key bindings and aliases and would like to venture on to learn a little of the scripting area. I took a look at Vadi’s sipper for Achaea and was able to change it around enough to get it to work in Aetolia.

Now I moved on to try and figure out Naftali’s ATCP version of it and I am stuck. I have tried switching the prompt around tons of times but I don’t seem to be coming up with the correct combo. Could someone explain to me how to find the ATCP prompt information for Aetolia? And if possible really dumb it down for me :oops:

Thanks.

colloquialism
Posts: 6
Joined: Thu Jan 07, 2010 2:00 am

Re: ATCP Prompt help

Post by colloquialism »

Hey there!

Firstly, IRE muds have introduce GMCP, which is essentially a much nicer version of GMCP. Therefore, you'll want to use that. Also, GMCP isn't dependent on a certain prompt structure; it follows a different method of identification entirely. Note that vadi's code may require a certain prompt, but GMCP itself will not.

Now, for how to get it working: with your Mudlet profile open, hit the "Settings" button on the top bar. At the bottom of the General tab, you'll see a box labelled "Enable GMCP". Check that, then hit save. Now Mudlet will capture GMCP. You won't notice anything different immediately as you play the mud (unless a few triggers start catching) since the info given to Mudlet through GMCP is invisible, so to speak. Put more correctly, it is not displayed on the main screen, but rather stored in a table, "gmcp". If you hit the debug button in the script editor, each time a line of real text is received you'll get a message saying, in part, "GMCP event <gmcp.Char> display(gmcp) to see the full content".

In my case, running the function "display(gmcp)" gives the following:
Code: [show] | [select all] lua
table {
  'Char': table {
    'Items': table {
      'Remove': table {
        'location': 'room'
        'item': 64452
      }
      'Add': table {
        'location': 'room'
        'item': table {
          'id': '64452'
          'name': 'a painted mountain stallion'
        }
      }
      'List': table {
        'location': 'room'
        'items': table {
          1: table {
            'id': '133872'
            'name': 'a monolith sigil'
          }
          2: table {
            'id': '100503'
            'name': 'an imposing Indorani guard'
          }
          3: table {
            'id': '195172'
            'name': 'a grotesque Nazetu guard'
          }
        }
      }
    }
    'Name': table {
      'name': 'Setar'
      'fullname': 'Grand Duke Setar Lunare'
    }
    'Status': table {
      'guild': 'Bloodborn'
      'explorer': 'a Searcher of Horizons'
      'class': 'Bloodborn'
      'race': 'human'
      'name': 'Setar'
      'order': 'Ysmali'
      'status': 'Vampire'
      'level': '83 (18)'
      'city': 'Bloodloch'
      'fullname': 'Grand Duke Setar Lunare'
    }
    'Skills': table {
      'Groups': table {
        1: '{ "name": "Vision", "rank": "Skilled", "percent": "19" }'
        2: '{ "name": "Avoidance", "rank": "Inept", "percent": "0" }'
        3: '{ "name": "Tattoos", "rank": "Novice", "percent": "4" }'
        4: '{ "name": "Survival", "rank": "Skilled", "percent": "8" }'
        5: '{ "name": "Weaponry", "rank": "Virtuoso", "percent": "19" }'
        6: '{ "name": "Reanimation", "rank": "Expert", "percent": "27" }'
        7: '{ "name": "Corpus", "rank": "Transcendent", "percent": "100" }'
        8: '{ "name": "Mentis", "rank": "Transcendent", "percent": "100" }'
        9: '{ "name": "Hematurgy", "rank": "Transcendent", "percent": "100" }'
        10: '{ "name": "Constitution", "rank": "Inept", "percent": "0" }'
        11: '{ "name": "Thermology", "rank": "Inept", "percent": "0" }'
        12: '{ "name": "Frost", "rank": "Inept", "percent": "0" }'
        13: '{ "name": "Antidotes", "rank": "Inept", "percent": "0" }'
        14: '{ "name": "Fitness", "rank": "Virtuoso", "percent": "4" }'
        15: '{ "name": "Galvanism", "rank": "Inept", "percent": "0" }'
        16: '{ "name": "Philosophy", "rank": "Inept", "percent": "0" }'
        17: '{ "name": "Horsemanship", "rank": "Virtuoso", "percent": "18" }'
        18: '{ "name": "Linguistics", "rank": "Transcendent", "percent": "100" }'
      }
    }
    'Vitals': table {
      'deaf': '1'
      'ep': '23225'
      'hp': '4933'
      'prone': '0'
      'flying': '0'
      'mp': '3371'
      'maxwp': '15755'
      'string': 'H:4933/4906 M:3371/3371 E:23225/23225 W:15755/15755 NL:18/100 '
      'cloak': '0'
      'right_arm': '1'
      'wp': '15755'
      'blind': '1'
      'left_arm': '1'
      'equilibrium': '1'
      'maxhp': '4906'
      'xp': '9277292'
      'maxxp': '50000000'
      'maxep': '23225'
      'maxmp': '3371'
      'balance': '1'
      'status': 'vampire'
      'fangbarrier': '0'
      'bleeding': '0'
      'nl': '18'
      'blood': '95'
    }
    'StatusVars': table {
      'guild': 'Guild'
      'explorer': 'Explorer rank'
      'class': 'Class'
      'race': 'Race'
      'name': 'Name'
      'order': 'Order'
      'status': 'Status'
      'level': 'Level'
      'city': 'City'
      'fullname': 'Full name'
    }
  }
  'Comm': table {
    'Channel': table {
      'List': table {
        1: table {
          'caption': ''
          'name': ''
          'command': ''
        }
      }
    }
  }
  'Room': table {
    'Info': table {
      'map': 'www.aetolia.com/irex/maps/clientmap.php?map=68&building=0&level=0 10 9'
      'num': 7790
      'name': 'A wide corridor passing merchants'
      'environment': 'Constructed underground'
      'details': table {
        1: ''
      }
      'coords': '68,-1,12,0'
      'exits': table {
        's': 9188
        'nw': 4575
        'e': 7791
        'sw': 7679
        'w': 4573
        'n': 4477
      }
      'area': 'Bloodloch'
    }
  }
}
You can access all the data in GMCP just as you would a normal table! The events raised whenever you receive GMCP information are "gmcp.Char" and "gmcp.Char.Vitals", which you can use as event handlers to run whatever scripts you want to execute whenever those tables are updated.

Post Reply