I been messing with mudlet mapper for the past few days and I've been wondering WHO updates it?
As in who updates the map at '
http://www.aetolia.com/maps/MD5SUM ' ?
I started a new discussion for it as then people can ask all the questions in here instead of tons of different topics.
My Main point is. from what the map is saying area wise, the SURVEY says different.
Like unnamed is the new Bihrkaen
North strand is coming back as The highways of Sapience which from SURVEY is, the Prelatorian Highway.
Also rooms like the wings/amulet rooms not being mapped.
Mudlet Bashing System for sale. Message if interested
2
Comments
Names are also based on the -map- rather than the area. The names should usually coincide, but plenty of people have made mistakes or small errors over the years. Most are easy fixes.
Abhorash says, "Ve'kahi has proved that even bastards can earn their place."
Want me to send you a full list of all the wrong things @Oleis? As the getAreaTable() shows up all the 'areas' and some are completely wrong names, or some have numbers to the un-accessible rooms for that area and so on.
["(unnamed)"] = 404,
^ this is suppose to be the new Bihrken? Unsure the correct spelling on the name as dont really go to the area
==
Kentorakro = 102, but it sends you INTO the temple unsure if that's a map issue or, mudlet mapper itself, still trying to figure out how its grabbing the number
==
Also this might be a path find issue, when path finding to -the Maghuir Fissure- it comes back as it cant path to that, I guess it might be as you need the sewers ability to get into that area.. so no bigger just wanted to mention it..
==
Also the area Riluo mentioned doesn't show up.
Is it something I can fix?
I remember, involve me and I
learn.
-Benjamin Franklin
Abhorash says, "Ve'kahi has proved that even bastards can earn their place."
In the second part, I don't really see where it's listing an error, but those numbers where it's like :201:, :176:, etc, is the line that the error itself is actually occurring on.
I remember, involve me and I
learn.
-Benjamin Franklin
but from a wild guess, it shouldn't be MMP_ .. it should be MMP. << a DOT not _
@Nalor the map is this one http://wiki.mudlet.org/w/IRE_mapping_script as I am building a system of my own.
Abhorash says, "Ve'kahi has proved that even bastards can earn their place."
Abhorash says, "Ve'kahi has proved that even bastards can earn their place."
More than likely more places are hidden.. and places with special exits, Unsure if that's game side or our side.
With this n mind when I do "who" with the mapper I get the below list with a echo that sends "Go to if clicked like below:
-------------------------------------------------------------------------------
Alikahn - The Portals of Bloodloch (45544)
Eleanor - A large swell within the --> (23899) <--clickable
Erzsebet - (H) A meadow beneath sca
Ilioyd - A tunnel beneath the Inn (25317)
Jayinn - A fountain at the center (18942)
Jura - Entering Bloodloch marke (9190)
-------------------------------------------------------------------------------
There are 36 players on this plane and 14 players on other planes.
I have endeavoured to try to tweak this to instead send "path find <vnumber> when I click on the link. Sadly I can not figure out what to change as I do not understand the script vadi made
So my hope is someone could show me what line I need to edit please and how as it is driving me insane.
Thanks.
Abhorash says, "Ve'kahi has proved that even bastards can earn their place."
I'm not sure what code you're looking at to tell you just how to do it..
But, Look in the WHO Trigger for ya mudlet mapper.. should be the one which displays @Rilath
function mmp.roomWhoFind(query) if query:ends('.') then query = query:sub(1,-2) end local result = mmp.searchRoomExact(query) if type(result) == "string" or not next(result) then cecho("<CadetBlue> You have no recollection of any room with that name.") return end if not tonumber(select(2, next(result))) then -- old style for roomid, roomname in pairs(result) do roomid = tonumber(roomid) cecho(string.format(" <LightSlateGray>%s<DarkSlateGrey> (<blue>", tostring(roomname))) echoLink(roomid, 'mmp.gotoRoom('..roomid..')', string.format("Go to %s (%s)", roomid, tostring(roomname))) cecho(string.format("<DarkSlateGrey>) <white>%s<DarkSlateGrey>.\n", tostring(mmp.areatabler[getRoomArea(roomid)]))) end else -- new style for roomname, roomid in pairs(result) do roomid = tonumber(roomid) cecho(string.format(" <LightSlateGray>%s<DarkSlateGrey> (<blue>", tostring(roomname))) echoLink(roomid, 'mmp.gotoRoom('..roomid..')', string.format("Go to %s (%s)", roomid, tostring(roomname))) cecho(string.format("<DarkSlateGrey>) <white>%s<DarkSlateGrey>.\n", tostring(mmp.areatabler[getRoomArea(roomid)]))) end end end function mmp.roomFind(query) if query:ends('.') then query = query:sub(1,-2) end local result = mmp.searchRoom(query) if type(result) == "string" or not next(result) then cecho("<grey>You have no recollection of any room with that name.") return end cecho("<DarkSlateGrey>You know the following relevant rooms:\n") local function showmeropis(roomid) if mmp.game ~= "achaea" then return '' end return mmp.oncontinent(getRoomArea(roomid), "Prime") and '' or ' (Meropis)' end if not tonumber(select(2, next(result))) then -- old style for roomid, roomname in pairs(result) do roomid = tonumber(roomid) cecho(string.format(" <LightSlateGray>%s<DarkSlateGrey> (<blue>", tostring(roomname))) echoLink(roomid, 'mmp.gotoRoom('..roomid..')', string.format("Go to %s (%s)", roomid, tostring(roomname))) cecho(string.format("<DarkSlateGrey>) in <LightSlateGray>%s%s<DarkSlateGrey>.", mmp.cleanAreaName(tostring(mmp.areatabler[getRoomArea(roomid)])), showmeropis(roomid))) fg("DarkSlateGrey") echoLink(" > Show path\n", [[mmp.echoPath(mmp.currentroom, ]]..roomid..[[)]], "Display directions from here to "..roomname, true) resetFormat() end else -- new style for roomname, roomid in pairs(result) do roomid = tonumber(roomid) cecho(string.format(" <LightSlateGray>%s<DarkSlateGrey> (<blue>", tostring(roomname))) echoLink(roomid, 'mmp.gotoRoom('..roomid..')', string.format("Go to %s (%s)", roomid, tostring(roomname))) cecho(string.format("<DarkSlateGrey>) in <LightSlateGray>%s%s<DarkSlateGrey>.", mmp.cleanAreaName(tostring(mmp.areatabler[getRoomArea(roomid)])), showmeropis(roomid))) fg("DarkSlateGrey") echoLink(" > Show path\n", [[mmp.echoPath(mmp.currentroom, ]]..roomid..[[)]], "Display directions from here to "..roomname, true) resetFormat() end end cecho(string.format(" <DarkSlateGrey>%d rooms found.\n", table.size(result))) end function mmp.echoRoomList(areaname, exact) local areaid, msg, multiples = mmp.findAreaID(areaname, exact) if areaid then local roomlist, endresult = getAreaRooms(areaid) or {}, {} -- obtain a room list for each of the room IDs we got local getRoomName = getRoomName for _, id in pairs(roomlist) do endresult[id] = getRoomName(id) end -- sort room IDs so we can display them in order table.sort(roomlist) -- now display something half-decent looking cecho(string.format( "<DarkSlateGrey>List of all rooms in <grey>%s<DarkSlateGrey> (areaid <grey>%s<DarkSlateGrey> - <grey>%d<DarkSlateGrey> rooms):\n", msg, areaid, table.size(endresult))) local echoLink, sformat, fg, echo = echoLink, string.format, fg, cecho -- use pairs, as we can have gaps between room IDs for _, roomid in pairs(roomlist) do local roomname = endresult[roomid] fg("blue") echoLink(sformat("%6s", roomid), 'mmp.gotoRoom('..roomid..')', string.format("Go to %s (%s)", roomid, tostring(roomname)), true) cecho(string.format("<DarkSlateGrey>: <LightSlateGray>%s<DarkSlateGrey>.\n", roomname)) end elseif not id and #multiples > 0 then mmp.echo("For which area would you want to list rooms for?") fg("DimGrey") for _, areaname in ipairs(multiples) do echo" "; setUnderline(true) echoLink(areaname, 'mmp.echoRoomList("'..areaname..'", true)', "Click to view the room list for "..areaname, true) setUnderline(false) echo"\n" end resetFormat() else mmp.echo(string.format("Don't know of any area named '%s'.", areaname)) end end function mmp.echoAreaList() local list = getAreaTable() local ids, rlist = {}, {} local totalroomcount = 0 for area, id in pairs(list) do if id ~= 0 then ids[#ids+1] = id; rlist[id] = area end end table.sort(ids) -- count the amount of rooms in an area, taking care to count the room in the 0th -- index as well if there is one -- saves the total room count on the side as well local function countrooms(areaid) local allrooms = getAreaRooms(areaid) or {} local areac = (#allrooms or 0) + (allrooms[0] and 1 or 0) totalroomcount = totalroomcount + areac return areac end cecho(string.format( "<DarkSlateGrey>List of all areas we know of (click to view room list):\n")) local getAreaRooms, cecho, fg, echoLink, format, rep = getAreaRooms, cecho, fg, echoLink, string.format, string.rep for _, id in pairs(ids) do cecho(format("<blue>%s%d ", rep(" ", (7-#tostring(id))), id)) -- +1 because getAreaRooms starts counting at 0 fg("DarkSlateGrey") echoLink(rlist[id]..(" "):rep(40-#rlist[id]).."("..mmp.comma_value(countrooms(id)).." rooms)", 'mmp.echoRoomList("'..rlist[id]..'", true)', "View the room list for "..rlist[id], true) echo("\n") end cecho(string.format( "<DarkSlateGrey>Total amount of rooms in this map: %s\n", mmp.comma_value(totalroomcount))) end function mmp.clearLabels(areaid) local function clearlabels(areaid) local t = getMapLabels(areaid) if type(t) ~= "table" then return end for labelid, _ in pairs(t) do deleteMapLabel(areaid, labelid) end end if areaid == "map" then for areaid in pairs(mmp.areatabler) do clearlabels(areaid) end mmp.echo("Cleared labels in all of the map.") return end clearlabels(areaid) mmp.echo(string.format("Cleared all labels in '%s'.", mmp.areatabler[areaid])) end function mmp.deleteArea(name, exact) local id, fname, ma = mmp.findAreaID(name, exact) if id then mmp.doareadelete(id) elseif next(ma) then mmp.echo("Which one of these specifically would you like to delete?") fg("DimGrey") for _,name in ipairs(ma) do echo " " setUnderline(true) echoLink(name, [[mmp.deleteArea("]]..name..[[", true)]], "Delete "..name, true) setUnderline(false) echo"\n" end resetFormat() else mmp.echo("Don't know of that area.") end raiseEvent("mmp areas changed") end -- the function actually doing area deletion function mmp.doareadelete(areaid) mmp.deletingarea = {} local t = mmp.deletingarea local rooms = getAreaRooms(areaid) t.roomcount = table.size(rooms) t.roombatches = {} t.currentbatch = 1 t.areaid = areaid t.areaname = getAreaTableSwap()[areaid] -- delete the area right away if there's nothing in it if t.roomcount == 0 then deleteArea(t.areaid) mmp.echo("All done! The area was already gone/empty.") end local rooms_per_batch = 100 -- split up rooms into tables of tables, to be deleted in batches so -- that our print statements in between get a chance to be processed for batch = 1, t.roomcount, 100 do t.roombatches[#t.roombatches+1] = {} local onebatch = t.roombatches[#t.roombatches] for inbatch = 1, 100 do onebatch[#onebatch+1] = rooms[batch+inbatch] end end function mmp.deletenextbatch() local t = mmp.deletingarea if not t then return end local currentbatch = t.roombatches[t.currentbatchi] if currentbatch == nil then deleteArea(t.areaid) mmp.echo("All done! Deleted the '"..t.areaname.."' area.") mmp.deletingarea = nil centerview(mmp.currentroom) return end local deleteRoom = deleteRoom for i = 1, #currentbatch do deleteRoom(currentbatch[i]) end mmp.echo(string.format("Deleted %d batch%s so far, %d left to go - %.2f%% done out of %d needed", t.currentbatchi, (t.currentbatchi == 1 and '' or 'es'), #t.roombatches - t.currentbatchi, (100/#t.roombatches)*t.currentbatchi, #t.roombatches)) t.currentbatchi = t.currentbatchi + 1 tempTimer(0.010, mmp.deletenextbatch) end t.currentbatchi = 1 mmp.echo("Prepped room batches, starting deletion...") tempTimer(0.010, mmp.deletenextbatch) end function mmp.renameArea(name, exact) if not (mmp.currentroom or getRoomArea(mmp.currentroom)) then mmp.echo("Don't know what area are we in at the moment, to rename it.") else setAreaName(getRoomArea(mmp.currentroom), name) mmp.echo(string.format("Renamed %s to %s (%d).", mmp.areatabler[getRoomArea(mmp.currentroom)], name, getRoomArea(mmp.currentroom))) centerview(mmp.currentroom) end raiseEvent("mmp areas changed") end function mmp.roomArea(otherroom, name, exact) local id,fname,ma if tonumber(name) then id = tonumber(name); fname = mmp.areatabler[id] else id, fname, ma = mmp.findAreaID(name, exact) end if otherroom ~= "" and not mmp.roomexists(otherroom) then mmp.echo("Room id "..otherroom.." doesn't seem to exist.") return elseif otherroom == "" and not mmp.roomexists(mmp.currentroom) then mmp.echo("Don't know where we are at the moment.") return end otherroom = otherroom ~= "" and otherroom or mmp.currentroom if id then setRoomArea(otherroom, id) mmp.echo(string.format("Moved %s to %s (%d).", (getRoomName(otherroom) ~= "" and getRoomName(otherroom) or "''"), fname, id)) centerview(otherroom) elseif next(ma) then mmp.echo("Into which area exactly would you like to move the room?") fg("DimGrey") for _,name in ipairs(ma) do echo " " setUnderline(true) echoLink(name, [[mmp.roomArea('', "]]..name..[[", true)]], "Move the room to "..name, true) setUnderline(false) echo"\n" end resetFormat() else mmp.echo("Don't know of that area.") end end function mmp.getAreaBorders(areaid) if mmp.debug then mmp.getAreaBordersTimer = mmp.getAreaBordersTimer or createStopWatch() startStopWatch(mmp.getAreaBordersTimer) end local roomlist, endresult = getAreaRooms(areaid), {} -- sometimes getAreaRooms can give us no result :( if not roomlist then mmp.echo("Sorry, seems we can't go there - getAreaRooms("..areaid..") didn't give us any results (Mudlet problem - redownloading the map might help fix it)") return end local getRoomExits, getRoomName, getSpecialExitsSwap, contains, pairs = getRoomExits, getRoomName, getSpecialExitsSwap, table.contains, pairs -- make a key-value list of room IDs local reverselist = {} for i = 0, #roomlist do reverselist[roomlist[i]] = true end -- obtain a room list for each of the room IDs we got --for _, id in pairs(roomlist) do for i = 0, #roomlist do local id = roomlist[i] local exits = getRoomExits(id) for _, to in pairs(exits) do if not reverselist[to] then endresult[id] = getRoomName(id) end end local specialexits = getSpecialExitsSwap(id) for _, to in pairs(specialexits) do if not reverselist[to] then endresult[id] = getRoomName(id) end end end if mmp.debug then mmp.echo("mmp.getAreaBordersTimer() on areaid "..areaid.." took "..stopStopWatch(mmp.getAreaBordersTimer).."s to run. Returned "..table.size(endresult).." results.") end return endresult end function mmp.viewArea (where, exact) if not where or not type(where)=="string" then mmp.echo("Which area would you like to view?") return end local areaid, msg, multiples = mmp.findAreaID(where, exact) if areaid then -- center on the first room ID, which typically is the start of an area local rooms = getAreaRooms(areaid) or {} if not rooms[1] then mmp.echo("The area has no rooms in it.") else centerview(rooms[1]) end elseif not areaid and #multiples > 0 then mmp.echo("Which area would you like to view exactly?") fg("DimGrey") for _, areaname in ipairs(multiples) do echo" "; setUnderline(true) echoLink(areaname, 'mmp.viewArea("'..areaname..'", true)', "Click to view "..areaname, true) setUnderline(false) echo"\n" end resetFormat() return else mmp.echo(string.format("Don't know of any area named '%s'.", where)) return end end -- room label the room I'm in -- room label 342 this is a label in room 342 -- room label green this is a green label where I'm at -- room label green black this is a green to black label where I'm at -- room label 34 green black this is a green to black label at room 34 -- how it works: split input string into tokens by space, then determine -- what to do by checking first few tokens, and finally call the local -- function with the proper arguments function mmp.roomLabel(input) if not createMapLabel then mmp.echo("Your Mudlet doesn't support createMapLabel() yet - please update to 2.0-test3 or better.") return end local tk = input:split(" ") local room, fg, bg, message = mmp.currentroom, "yellow", "red", "Some room label" -- input always have to be something, so tk[1] at least always exists if tonumber(tk[1]) then room = tonumber(table.remove(tk, 1)) -- remove the number, so we're left with the colors or msg end -- next: is this a foreground color? if tk[1] and color_table[tk[1]] then fg = table.remove(tk, 1) end -- next: is this a backround color? if tk[1] and color_table[tk[1]] then bg = table.remove(tk, 1) end -- the rest would be our message if tk[1] then message = table.concat(tk, " ") end -- if we haven't provided a room ID and we don't know where we are yet, we can't make a label if not room then mmp.echo("We don't know where we are to make a label here.") return end local x,y = getRoomCoordinates(room) local f1,f2,f3 = unpack(color_table[fg]) local b1,b2,b3 = unpack(color_table[bg]) -- finally: do it :) local lid = createMapLabel(getRoomArea(room), message, x, y, f1,f2,f3, b1,b2,b3) mmp.echo(string.format("Created new label #%d '%s' in %s.", lid, message, getRoomAreaName(getRoomArea(room)))) end function mmp.areaLabels (where, exact) if not getMapLabels then mmp.echo("Your Mudlet doesn't support getMapLabels() yet - please update to 2.0-test3 or better.") return end if (not where or not type(where)=="string") and not mmp.currentroom then mmp.echo("For which area would you like to view labels?") return end if not where then exact = true where = getRoomAreaName(getRoomArea(mmp.currentroom)) end local areaid, msg, multiples = mmp.findAreaID(where, exact) if areaid then local t = getMapLabels(areaid) if type(t) ~= "table" or not next(t) then mmp.echo(string.format("'%s' doesn't seem to have any labels.", getRoomAreaName(areaid))) return end mmp.echo(string.format("Area labels for '%s'", getRoomAreaName(areaid))) for labelid, labeltext in pairs(t) do fg("DimGrey") echo(string.format(" %d) %s (", labelid, labeltext)) fg"orange_red" setUnderline(true) echoLink('delete', string.format('deleteMapLabel(%d, %d); mmp.echo("Deleted label #'..labelid..'")', areaid, labelid), "Delete label #"..labelid.." from "..getRoomAreaName(areaid)) setUnderline(false) echo")\n" end resetFormat() elseif not areaid and #multiples > 0 then mmp.echo("Which area would you like to view exactly?") fg("DimGrey") for _, areaname in ipairs(multiples) do echo" "; setUnderline(true) echoLink(areaname, 'mmp.areaLabels("'..areaname..'", true)', "Click to view labels in "..areaname, true) setUnderline(false) echo"\n" end resetFormat() return else mmp.echo(string.format("Don't know of any area named '%s'.", where)) return end end function mmp.echoPath(from, to) assert(tonumber(from) and tonumber(to), "mmp.getPath: both from and to have to be room IDs") if mmp.getPath(from, to) then mmp.echo("<white>Directions from <yellow>" .. string.upper(searchRoom(from)) .. " <white>to <yellow>" .. string.upper(searchRoom(to)) .. "<white>:") mmp.echo(table.concat(speedWalkDir, ", ")) return mmp.speedWalkDir end end function mmp.listSpecialExits(filter) local c = 0 mmp.echo("Listing special exits...") for area, areaname in pairs(mmp.areatabler) do local rooms = getAreaRooms(area) or {} for i = 0, #rooms do local exits = getSpecialExits(rooms[i] or 0) if exits and next(exits) then for exit, cmd in pairs(exits) do if type(cmd) == "table" then cmd = next(cmd) end if cmd:match("^%d") then cmd = cmd:sub(2) end if not filter or cmd:lower():find(filter, 1, true) then if getRoomArea(exit) ~= area then cecho(string.format("<dark_slate_grey>%s <LightSlateGray>(%d, in %s)<dark_slate_grey> <MediumSlateBlue>-> <coral>%s -<MediumSlateBlue>><dark_slate_grey> %s <LightSlateGray>(%d, in %s)\n", getRoomName(rooms[i]), rooms[i], areaname, cmd, getRoomName(exit), exit, mmp.areatabler[getRoomArea(exit)] or '?')) else cecho(string.format("<dark_slate_grey>%s <LightSlateGray>(%d)<dark_slate_grey> <MediumSlateBlue>-> <coral>%s <MediumSlateBlue>-><dark_slate_grey> %s <LightSlateGray>(%d)<dark_slate_grey> in %s\n", getRoomName(rooms[i]), rooms[i], cmd, getRoomName(exit), exit, areaname)) end c = c + 1 end end end end end mmp.echo(string.format("%d exits listed%s.", c, (not filter and '' or ", with for the filter '"..filter.."'"))) end function mmp.delSpecialExits(filter) local c = 0 for area, areaname in pairs(mmp.areatabler) do local rooms = getAreaRooms(area) or {} for i = 0, #rooms do local exits = getSpecialExits(rooms[i] or 0) if exits and next(exits) then for exit, cmd in pairs(exits) do if type(cmd) == "table" then cmd = next(cmd) end if cmd:match("^%d") then cmd = cmd:sub(2) end if not filter or cmd:lower():find(filter, 1, true) then local rid, action local originalExits = {} local e = getSpecialExits(rooms[i]) for t,n in pairs(e) do rid = tonumber(t) for a,l in pairs(n) do action = tostring(a) end if not action:find(filter,1,true) then originalExits[rid] = action end end clearSpecialExits(rooms[i]) for rid, act in pairs(originalExits) do addSpecialExit(rooms[i], tonumber(rid), tostring(act)) end c = c + 1 end end end end end mmp.echo(string.format("%d exits deleted%s.", c, (not filter and '' or ", with for the filter '"..filter.."'"))) end
Abhorash says, "Ve'kahi has proved that even bastards can earn their place."
It's something within ' mmp.gotoRoom ' script but unsure as to what as, map path, map find, etc dont stand out when running a search
It is a lot of scripting and yep it has to be in there somewhere I will keep breaking it until I and find it and thanks
Abhorash says, "Ve'kahi has proved that even bastards can earn their place."
Now it does what I require and more as it is fast and direct with no latency concerns at last \o/
Abhorash says, "Ve'kahi has proved that even bastards can earn their place."