Welcome to the Achaea Forums! Please be sure to read the Forum Rules.

GMCP Questions

NimNim Member Posts: 2,015 @@ - Legendary Achaean
So, I'm likely to have a bunch of questions, but here are some from reading the document. I should mention that I both have a pretty solid understanding of how GMCP itself is sent back and forth, and how my client (tintin++) handles it, so these are more related to Achaea's GMCP modules specifically, rather than GMCP itself or how it works in a particular client. Some of these are probably a bit more nitpicky than others, I'm sure - I just like understanding how things work!

I'll also probably start finding out answers to any of these that I'm able to, for the simpler ones. Part of me hopes these questions might be used to improve the specification document itself, though, since they're all questions that came to mind as I read it.

1. What (if anything) is the client-sent Core.Ping value used for? What unit of measurement should it be? (Tintin++ has precision down to the microsecond, after all)

2. Are there any variables in Char.Vitals aside from those listed in the example?

3. What about StatusVars and Status?

4. I remember something about there being an issue with Char.Skills not differentiating between learned and unlearned abilities. Is this still an issue? If not, then how was it resolved? Are unlearned abilities simply not included, or is there some marker to determine if an ability has been learned yet or not?

5. This should probably be in a TYPO, but I just logged out, so I figure I'll bring it up here. Should the example for Char.Items.Inv be Char.Items.Inv instead of the given example Char.Items.Inv "", or is there a reason for the empty string?

6. For Char.Items.List and similar, I'm fairly certain items also have attributes, but what are they and what do they mean? That doesn't seem to be included in the spec at all.

7. Also for Char.Items.List and similar, is the location for held containers just the ID #, as I presume the format should be for sending it via Char.Items.Contents?

8. What sort of windows does Redirect.Window use, and when does it use them?

9. For IRE.Time, what does "daynight" mean?

10. How often does IRE.Time.Update get sent? Does it include all variables that have changed (eg. if the month changes, will it include a new "mon" key?)

Thanks in advance. I know I ask a lot of questions, but I want to know as much as possible before I start designing my new system's GMCP module~
Tagged:

Comments

  • MannimarMannimar Member Posts: 973
    edited March 2014
    I'll help with what I can. For 2&3 I'll just copy paste my table for you.

    vlua gmcp.Char.Vitals
    {
      wp = "20410",
      eq = "1",
      ep = "21715",
      maxhp = "4791",
      hp = "5339",
      nl = "31.9",
      maxep = "21715",
      maxmp = "4517",
      mp = "4517",
      maxwp = "20410",
      string = "H:5339/4791 M:4517/4517 E:21715/21715 W:20410/20410 NL:31.9/100 ",
      bal = "1"
    }
    vlua gmcp.Char.StatusVars
    {
      explorerrank = "Explorer Rank",
      order = "Order",
      class = "Class",
      unboundcredits = "Unbound Credits",
      specialisation = "Race Specialisation",
      race = "Race",
      city = "City",
      gold = "Gold",
      boundcredits = "Bound Credits",
      level = "Experience Level",
      fullname = "Full Name",
      unread_msgs = "Unread Messages",
      xprank = "Achaean XP Rank",
      mayancrowns = "Unbound Mayan Crowns",
      lessons = "Lessons",
      xp = "Experience To Next Level",
      house = "House",
      name = "Name",
      target = "Target",
      unread_news = "Unread News",
      bank = "Bank",
      boundmayancrowns = "Bound Mayan Crowns",
      age = "Age"
    }
    vlua gmcp.Char.Status
    {
      explorerrank = "a Continental Wanderer",
      order = ,
      class = "Occultist",
      unboundcredits = "",
      specialisation = "Miner",
      race = "Dwarf",
      city = "Hashan (6)",
      gold = "",
      boundcredits = "",
      level = "87 (31.9%)",
      fullname = "Lord Mannimar de Valois, Spirit Warden",
      unread_msgs = "0",
      xprank = "410",
      mayancrowns = "0",
      lessons = "",
      xp = "31.9%",
      house = "The Spirit Walkers(15)",
      name = "Mannimar",
      target = "None",
      unread_news = "0",
      bank = "0",
      boundmayancrowns = "0",
      age = "101"
    }

    4) That is still the case

    6) Each attribute has a different meaning, like wearable vs worn,container. wielded left or right, ect. a Quick recap off the top of my head...

    lL = both hands
    l = left hand
    L = right hand
    c = container
    w = worn
          W = not worn, but wearable
    g = groupable

    10) should update every hour on day/month/year changes.
    Nim
  • KeneanungKeneanung Member Posts: 610 ✭✭✭✭ - Eminent
    I'll help those I can help with as well. I've been collecting some of the answers in https://github.com/keneanung/GMCPAdditions with more to come.
    Nim said:
    4. I remember something about there being an issue with Char.Skills not differentiating between learned and unlearned abilities. Is this still an issue? If not, then how was it resolved? Are unlearned abilities simply not included, or is there some marker to determine if an ability has been learned yet or not?
    Someting I still need to investigate
    5. This should probably be in a TYPO, but I just logged out, so I figure I'll bring it up here. Should the example for Char.Items.Inv be Char.Items.Inv instead of the given example Char.Items.Inv "", or is there a reason for the empty string?
    Not sure, might be the gmcp parser needs some kind of body.
    6. For Char.Items.List and similar, I'm fairly certain items also have attributes, but what are they and what do they mean? That doesn't seem to be included in the spec at all.
    The list is even longer than Mannimar has:
    • "w" = worn,
    • "W" = wearable but not worn,
    • "l" = left hand
    • "L" = right hand
    • "lL" = both hands
    • "g" = groupable
    • "c" = container
    • "r" = riftable
    • "f" = fluid
    • "e" = edible
    • "m" = mobile
    • "d" = dead
    • "t" = takeable
    7. Also for Char.Items.List and similar, is the location for held containers just the ID #, as I presume the format should be for sending it via Char.Items.Contents?
    Not sure yet
    8. What sort of windows does Redirect.Window use, and when does it use them?
    I have't seen it used yet, but I I still need to activate the module.
    9. For IRE.Time, what does "daynight" mean?
    There's been no official statement on this yet. From the looks, it is a number that counts up regularly and resets on sunrise (value goes up to 200). It could be used to make a moving/turning picture to show the current position of sun and/or moon.
    10. How often does IRE.Time.Update get sent? Does it include all variables that have changed (eg. if the month changes, will it include a new "mon" key?)
    Updates every time, there's an update to IRE.Time.List and every time you use DATE ingame. That can include daychange, time messages you see on the outside (sunrise, mid morning etc) and on "daynight" changes. Oly changed parameters are transmitted, so you'd need to merge it with the List values each time you get it.

    Nim
  • KeneanungKeneanung Member Posts: 610 ✭✭✭✭ - Eminent
    edited March 2014
    Some updates on this:

    4) The whole list is sent, when reesting skills in groups. If requesting info on a single ability (like firelash etc), the "info" field is empty for unknown abilities (both existing, but unlearned, and unexisting abilities)

    5) You don't need to put a body after Char.Items.Inv, I just tested that

    8) I have not been able to cause that message to be sent and out of ideas

    ETA: 7) You send the container item id as a number (not surrounded by quotation marks) and get a list back, with the location being "rep<your-id>"
    Nim
  • EldEld Member Posts: 3,946 @@ - Legendary Achaean
    edited March 2014
    4) Char.Skills.List used to only list abilities you've learned. When AB was changed to show all abilities in a skill instead of just the ones you know, the gmcp also changed to include them all. I made a Dais thread asking to change it back, which ended with @Cardan saying he'd add reverting it to the list, but it hasn't happened yet.

    5) Either version works. Not sure if it takes an optional argument, or just ignores the "" because it's not needed.
     
    7) The location is "rep####". Fairly sure you just send it by ID, though.

    8) I believe this is mainly just there for internal use by the HTML5 client.

  • KeneanungKeneanung Member Posts: 610 ✭✭✭✭ - Eminent
    The internal client doesn't use Redirect.Window. At least I didn't find it there yet. There are other messages, which fill the role I'd have thought it'd be used for: IRE.Display.Ohmap, IRE.Display.Help to name a few.

    My guess it was ment as a replacement for the MXP function that should to the same but was never used by IRE. You have to remember, gmcp is supposed to be a standard for muds in general.

    Also @Eld why do you repeat what I said :P
  • EldEld Member Posts: 3,946 @@ - Legendary Achaean
    Keneanung said:
    The internal client doesn't use Redirect.Window. At least I didn't find it there yet. There are other messages, which fill the role I'd have thought it'd be used for: IRE.Display.Ohmap, IRE.Display.Help to name a few.

    My guess it was ment as a replacement for the MXP function that should to the same but was never used by IRE. You have to remember, gmcp is supposed to be a standard for muds in general.

    Also @Eld why do you repeat what I said :P
    Because you ninja'd me and I didn't see it.
    Keneanung
  • VadimusesVadimuses Member Posts: 1,105 @ - Epic Achaean
    I'm fairly certain it was made for one of the homemade clients - maybe the flash one.
  • AkayaAkaya Member Posts: 32 ✭✭ - Stalwart

    10. Oly changed parameters are transmitted, so you'd need to merge it with the List values each time you get it... 


    So gmcp.IRE.Time.List doesn't update itself?

  • KeneanungKeneanung Member Posts: 610 ✭✭✭✭ - Eminent
    Nope. The only time you'd get a full Time.List is upon requesting it.
  • AkayaAkaya Member Posts: 32 ✭✭ - Stalwart
    Hmm... I use Mudlet. If I sendGMCP("IRE.Time.Request") nothing changes.

    Also, are any events raised when anything changes? Checked for IRE.Time, IRE.Time.Update, and IRE.Time.List. Nothing there either.

    The only update I'm seeing is to gmcp.IRE.Time.Update which updates when I type TIME, DATE, there's a daynight change (whatever that is), or an in-game time-related message appears.

  • KeneanungKeneanung Member Posts: 610 ✭✭✭✭ - Eminent

    The events are gmcp.IRE.Time ans subevents, like the tables that contain their values.

    Those situations are the only ones when you will get an update. Daynight is a scale, how far it is in the day. It counts up to 200 and resets at sunrise.

  • AkayaAkaya Member Posts: 32 ✭✭ - Stalwart

    Ah. Figured it out. Thank you. Here's a functional calendar widget I wrote in gratitude: http://forums.mudlet.org/viewtopic.php?f=6&t=4533&p=21029#p21029

    Josoul
Sign In to Comment.