1. Hello!

    First of all, welcome to MapleLegends! You are currently viewing the forums as a guest, so you can only view the first post of every topic. We highly recommend registering so you can be part of our community.

    By registering to our forums you can introduce yourself and make your first friends, talk in the shoutbox, contribute, and much more!

    This process only takes a few minutes and you can always decide to lurk even after!

    - MapleLegends Administration-
  2. Experiencing disconnecting after inserting your login info? Make sure you are on the latest MapleLegends version. The current latest version is found by clicking here.
    Dismiss Notice

A /slash command for tracking a person's EXP % in real time.

Discussion in 'Suggestions' started by Trion, Feb 18, 2021.

  1. Trion
    Offline

    Trion Capt. Latanica

    306
    80
    273
    Jul 23, 2019
    3:14 PM
    Trion
    Beginner
    1
    The best we have for tracking a person's experience right now is the maple bot (which pulls from the rankings anyway) and the actual rankings on the site. As far as I know these are very inaccurate because it only updates based on CCIng or logging out (among other things).

    Depending on how easy it is to implement, I am suggesting a real time command to track someone's experience progress to see how much further they have to go in getting level with a party or helping people out. But probably the most practical reason is for leeching. If you can sell leech based on exact experience people could take their times more with the leech as long as a certain amount of experience is promised. This would allow people to receive the experience they deserve and not feel ripped off by inefficient leeching for 1 or 2 hours.

    Edit: One thing I forgot to mention is with this command you could take screenshots and it could prevent people from lying about not getting leech as well if you have a "before/after" screenshot.
     
    • Agree Agree x 15
    • Like Like x 1
    • Disagree Disagree x 1
  2. Nightz
    Online

    Nightz Supervisor Staff Member Supervisor Game Moderator

    1,796
    1,038
    490
    Oct 22, 2020
    Male
    9:14 PM
    Nightz
    I/L Arch Mage
    200
    Funk & Pasta
    Moderator Post
    If this is easy to implement I see no downsides to it.
     
  3. Voxtagrams
    Offline

    Voxtagrams Headless Horseman

    885
    381
    376
    Jun 13, 2020
    12:14 PM
    Some people sell leech depending on how much EXP that person gets, thats why during events where theres an extra percentage gain people sell leech for more. So if the leech seller would use such a command that person thats buying would probably be having to pay way more than it normally is intended for that level.

    2mil~2.5mil low level leech.
    5mil~5.5mil mid low level leech.
    6mil~6.5mil leech.
    any higher I have no idea, never really got leech after Skeles.. but I'd have to guess about 10mil or so for like Duku or something
     
  4. Althariisa
    Offline

    Althariisa Slimy

    241
    57
    230
    Jul 17, 2018
    Female
    4:14 PM
    Tauriel
    Dark Knight
    200
    Honor
    best suggestion i ve heard this year.
     
  5. Jaewonnie
    Offline

    Jaewonnie Capt. Latanica

    356
    158
    278
    Apr 21, 2020
    Crimsonwood Mountain: Cavern of Pain
    3:14 PM
    PAWGChamp
    Buccaneer
    This already happens during events regardless of adding in this command. Not so much for low level leech (since there is a general agreement to keep it around 2.5m split) but for ulu3 and higher where the bonus xp is usually within ratio of the price increase.

    Ultimately it's up to the buyer to know how to divide xp/price and see if they're getting a good deal.
     
    • Informative Informative x 1
  6. Alyosha
    Offline

    Alyosha Skelegon Retired Staff

    932
    673
    413
    Mar 9, 2017
    12:14 PM
    Dostoevsky
    Dark Knight
    200
    Spirit
    It's something even larger MMO's like old-school Runescape don't do currently(You need to hop worlds/logout to update the highscores), so I would hazard to guess that something along the line makes it not very viable, but I am no dev or programmer so I wouldn't know anything about that. Game -> database is the main interaction when playing, but in the event of server crashes there have been rollbacks(some fairly large) so the game -> database sendoff might not be nearly as often as one would expect. To make it work it'd need to be a nearly constant game -> database -> webhost feed and that could lead to a lot of problems that only people a lot smarter than I really understand.
     
  7. Huiae
    Offline

    Huiae Headless Horseman

    892
    865
    386
    Aug 1, 2015
    Female
    Seoul, Korea
    4:14 AM
    Verdict
    Bishop
    WeenieHutJrs
    It's really sad that lack of trust made this suggestion, and I see no any downside about this beside of something like 'human privacy of hiding him/herself'.
     
    • Agree Agree x 1
  8. whatdatoast
    Offline

    whatdatoast Windraider

    469
    122
    301
    Apr 9, 2020
    12:14 PM
    whatdatoast
    Bowman
    This would also indirectly let people compare dpm while bossing. Intlords gunna be exposed.
     
    • Disagree Disagree x 1
  9. Huiae
    Offline

    Huiae Headless Horseman

    892
    865
    386
    Aug 1, 2015
    Female
    Seoul, Korea
    4:14 AM
    Verdict
    Bishop
    WeenieHutJrs
    Possible. like, after finishing a part of HT, we can measure how much exp he got/I got, and say like, "Oh you're NL and I'm BM, but I got higher exp, you're useless kekw"

    Wish this remains as joke, but we all know, this can be real, and we will make it real eventually.
     
    • Agree Agree x 3
  10. jesscapades
    Offline

    jesscapades Pac Pinky

    176
    72
    196
    Jun 24, 2019
    Female
    3:14 PM
    jesscapades
    Shadower
    182
    Homies
    That sounds kinda cool, actually. It would mean people would stop comparing dpm 45 despite being at different points in the run at the 45 min mark, so we would get better class comparison data. RIP HT cleaves though :grumpy:

    Edit: actually probably just easier to do a long dpm test then subtract out the excess time. Nvm!
     
    • Disagree Disagree x 1
  11. Jaewonnie
    Offline

    Jaewonnie Capt. Latanica

    356
    158
    278
    Apr 21, 2020
    Crimsonwood Mountain: Cavern of Pain
    3:14 PM
    PAWGChamp
    Buccaneer
    This is not necessarily about mistrust. Many ppl now opt to buy xp packages which take hrs to complete. Buyers will often afk/go to sleep while getting leeched so the seller cannot directly ask what % they are at. In this situation, having a xp status command would be great
     
    • Agree Agree x 1
    • Disagree Disagree x 1
  12. Magen
    Offline

    Magen Selkie Jr.

    202
    51
    205
    Mar 31, 2020
    Male
    10:14 PM
    bishopmage
    Cleric
    55
    active
    I think this small tweak could be nice to have although I feel it gonna be hard to code efficiently.
    You would have to create "save points" and something to trigger that save point.
    Let's say you want to see my exp, your command from your client will have to "talk" to my client and get the exp info from my client. Which actually cause my client to do "save point".
    And this is feels like something that could make an entry for data leak and data security problems.
    I would suggest to make exp saving points every 5 mins
    So if you leech someone you could be updated to the last 5minutes which should be enough for leechers.
     
    • Agree Agree x 1
  13. geospiza
    Offline

    geospiza Web Developer Staff Member Web Developer

    212
    449
    215
    Apr 16, 2020
    12:14 PM
    geospiza
    Dark Knight
    146
    Funk
    I was curious, so I played around with the character API to see how the experience updates. It's pretty much instantaneous whenever you use a portal, CC, or go into the cash shop. Here's a video showing the results (polling every 5 seconds). Here's the python script I used for testing:

    Code:
    #!/usr/bin/env python3
    # usage: python3 monitor-experience.py <NAME>
    import json
    import time
    from argparse import ArgumentParser
    from datetime import datetime
    from urllib.request import urlopen
    
    parser = ArgumentParser()
    parser.add_argument("name", type=str, help="name of the user to track experience")
    parser.add_argument(
        "--period",
        type=int,
        default=30,
        help="number of seconds to wait before the next request",
    )
    parser.add_argument("--output", type=str, default="character.ndjson")
    
    args = parser.parse_args()
    url = f"https://maplelegends.com/api/character?name={args.name}"
    
    
    def print_data(data):
        r = data
        fmt = f'{r["timestamp"][:19]} {data["name"]} level {r["level"]} {r["exp"]}'
        print(fmt)
    
    
    while True:
        resp = urlopen(url)
        data = dict(dict(timestamp=datetime.now().isoformat()), **json.load(resp))
        print_data(data)
        with open(args.output, "a") as fp:
            fp.write(json.dumps(data)+"\n")
        time.sleep(args.period)
    
    
    

    My suggestion is to update the rankings whenever @epm is finished. It has built-in rate limiting with at most one measurement per minute per player (also probably interesting to look at in aggregate). If this were implemented, it would be possible to poll the API at a regular cadence with regular @epm checks and do some math to figure out the party's experience. And since it's all rates and proportions, you can even make estimates about time to the next level which is easy to validate. It's probably doable now to do measurements on a mule in the party that just regularly enters the cash shop...

    Getting up-to-date information about another player could be problematic. One way to do this would be to create a "@epm <player> <time>" command. I can imagine a poor implementation that could cause lag via abuse, e.g., a person with 100 mules asks about one player's current experience. The alternative of updating all players' rankings every X minutes could cause instability at peak times for relatively little gain.
     
    • Creative Creative x 4
    • Like Like x 1
  14. OP
    OP
    Trion
    Offline

    Trion Capt. Latanica

    306
    80
    273
    Jul 23, 2019
    3:14 PM
    Trion
    Beginner
    1
    That sounds like a great start for sure geospiza. Really excited to see where this ends up because my thinking was as you said if it could update instantly from CCing, teleports and CS then perhaps trigger points can be made in regards to monster killing or something of the like.
     
  15. Magen
    Offline

    Magen Selkie Jr.

    202
    51
    205
    Mar 31, 2020
    Male
    10:14 PM
    bishopmage
    Cleric
    55
    active
    I actually thought on other idea which can make the suggestion viable with no security issues.
    What we care about is how much experience specific player gained and not how much he has at the moment.
    So we don't really need the buyer client to parse the data.
    Why?
    Let's say I'm in a party with another person and I kill a mob that gives 10 exp.
    I believe client "knows" the math behind the exp division (its not fully server side), so if i gained 6exp as the mob killer the other partner would get 4exp.
    so I believe it viable to create a thread at the leecher client which just calculate how much exp the player gained - and not how much he has.
    how it should work? lets say the leecher start the command to follow other players exp - @partyexp or something -
    while the thread is working what we care about is the split exp, and I believe its something client sided can do.
    so if the leecher gained 100m exp (example) leecher client side could calculate how much each player got in total (with using level+party exp bonus/event exp bonus formula)
     
  16. yurain
    Offline

    yurain Windraider

    423
    96
    301
    Dec 30, 2019
    3:14 AM
    YUrain
    I/L Wizard
    55
    I think this has to do with how the character is saved into the database, when you change map/ cc / cs / fm, which a character being leeched will not do.
    The exp info is still saved on their client, which your $maple command will not be able to retrieve.

    From a programming aspect to make this happen, without persisting character info into database every x min.
    Make an other /epm-like command, which boardcast the current /epm message into the all chat, instead of only on the client side.

    Of course this means that, the buyer will have to cooperate and key in the command from their side.
     
  17. Magen
    Offline

    Magen Selkie Jr.

    202
    51
    205
    Mar 31, 2020
    Male
    10:14 PM
    bishopmage
    Cleric
    55
    active
    But this could cause data security issues as same as ddos possibility
    That's why I wrote my last message
    What we care about is the formula of exp splitting, once we have it, you could simply calculate how much experience party members received.
    This way we could get the exp that the partner received without getting his personal data
     
  18. yurain
    Offline

    yurain Windraider

    423
    96
    301
    Dec 30, 2019
    3:14 AM
    YUrain
    I/L Wizard
    55
    I believe the formula is out there already. I am just not too sure if it is the same as what we have in ML or what not.
    But I dont think you want to try to do some "not so easy" math, when you are leeching.....
     
  19. geospiza
    Offline

    geospiza Web Developer Staff Member Web Developer

    212
    449
    215
    Apr 16, 2020
    12:14 PM
    geospiza
    Dark Knight
    146
    Funk
    Is this true though? The server is the one responsible for the experience rates (e.g. 110% of normal rates for events) and is the source of truth for what has spawned and what has been killed.

    Using the party chat could be technically viable, depending on how the epm command works. I assumed the message was generated server-side by a timer running in a thread. If it's client-side, I don't think it would be worth the effort (black magic is definitely involved). It's also useless in situations when people go AFK :/

    If the math is already figured out for you via a tool, it wouldn't be so bad. I put together a little prototype of what this could look like https://ml-exp-tracker.geospiza.me, I imagine this could work decently to track PQ experience since everyone is moving through stages quickly. This is what it looks like so far:

    upload_2021-2-23_22-53-26.png

    Aside from updating the experience without losing map ownership (or leveling up), Nise's Formula Collection is missing party experience, so it would take a little bit of data collection and analysis to figure out the details. I'm sure that once you figure out the party members' levels and gather a few data points, estimating the range on the experience per member is doable (with some room for error) as long as one player's data is up to date.
     
    • Great Work Great Work x 1
  20. Motto
    Offline

    Motto Skelegon

    1,068
    1,139
    428
    Jun 30, 2018
    Male
    Mars
    9:14 PM
    PogShad Motto
    Islander
    201
    O~ Ok
    [​IMG]
     

Share This Page