diff --git a/Arkadia.xml b/Arkadia.xml
index 0f62fe38..444949ee 100644
--- a/Arkadia.xml
+++ b/Arkadia.xml
@@ -26689,6 +26689,27 @@
^/idz$
+
+ prowadz
+
+
+
+ ^/prowadz (\d+)$
+
+
+ prowadz skrot
+
+
+
+ ^/prowadz (\w+)$
+
+
+ prowadz-
+
+
+
+ /prowadz-
+
diff --git a/mapper/help.lua b/mapper/help.lua
index 7df94ad6..9b75bddd 100644
--- a/mapper/help.lua
+++ b/mapper/help.lua
@@ -37,6 +37,9 @@ function amap:print_help()
cecho("| /idz - jesli weszlismy na lokacje z dwoma wyjsciam (wedlug mappera), |\n")
cecho("| to alias ten wykona kierunek aby podazac dalej. Dziala to na podstawie wyjsc |\n")
cecho("| wyjsc z mappera Mudletowego, a nie GMCP/Arkadiowej mapy. |\n")
+ cecho("| /prowadz [id] - pokazuje na mapie sciezke do lokacji aktualizowana co krok. |\n")
+ cecho("| /prowadz [nazwa_skrotu] - - pokazuje na mapie sciezke do skrotu. |\n")
+ cecho("| /prowadz- - wylacza sciezke prowadzaca do lokacji |\n")
cecho("| |\n")
cecho("| ----------------------- |\n")
cecho("| CHODZIK |\n")
diff --git a/mapper/path.lua b/mapper/path.lua
new file mode 100644
index 00000000..fbb53fcb
--- /dev/null
+++ b/mapper/path.lua
@@ -0,0 +1,59 @@
+amap.path_display = amap.path_display or {
+ highlighter = Highlight:new({}, {255, 200, 150}, {150, 100, 255})
+}
+
+function amap.path_display:start(destination)
+ if not tonumber(destination) then
+ destination = amap.shortcuts:get_room_by_name(destination)
+ if not destination then
+ scripts:print_log("Podaj ID lub prawidlowa nazwe skrotu.")
+ return
+ end
+ end
+ self.destination = tonumber(destination)
+
+ if self.destination == amap.curr.id then
+ scripts:print_log("Jestes juz na tej lokacji.")
+ return
+ end
+
+ self:show_destination()
+ self.handler = scripts.event_register:force_register_event_handler(self.handler, "amapNewLocation", function() self:show_destination() end)
+ registerMapInfo("GPS", function() return self:map_info() end)
+ enableMapInfo("GPS")
+ if not getPath(amap.curr.id, self.destination) then
+ scripts:print_log("Aktualnie nie jestem w stanie znalezc sciezki do lokacji " .. destination)
+ end
+end
+
+
+function amap.path_display:stop()
+ self.highlighter:clear()
+ scripts.event_register:kill_event_handler(self.handler)
+ disableMapInfo("GPS")
+ killMapInfo("GPS")
+end
+
+function amap.path_display:show_destination()
+ if amap.curr.id == self.destination then
+ self:stop()
+ return
+ end
+ self.highlighter:clear()
+ if getPath(amap.curr.id, self.destination) then
+ self.highlighter:set_locations(speedWalkPath)
+ self.highlighter:on()
+ end
+end
+
+function amap.path_display:map_info()
+ return string.format("Sciezka do %d | Odleglosc: %s", self.destination, #speedWalkPath > 0 and #speedWalkPath or "?"), true
+end
+
+function alias_func_prowadz(id)
+ amap.path_display:start(id)
+end
+
+function alias_func_prowadz_stop()
+ amap.path_display:stop()
+end
\ No newline at end of file
diff --git a/mapper/walker_highlights.lua b/mapper/walker_highlights.lua
index b2d7ed71..a07a89f8 100644
--- a/mapper/walker_highlights.lua
+++ b/mapper/walker_highlights.lua
@@ -1,28 +1,25 @@
amap.walker_highlights = amap.walker_highlights or {
- highlighter = Highlight:new({}, {255, 200, 150}, {150, 100, 255}),
event_handlers = {}
}
function amap.walker_highlights:register_events()
- table.insert(self.event_handlers, scripts.event_register:register_event_handler("amapWalkerStarted", function() self:highlight_current_path() end))
- table.insert(self.event_handlers, scripts.event_register:register_event_handler("amapWalkerTerminated", function() self:clear_highlight() end))
- table.insert(self.event_handlers, scripts.event_register:register_event_handler("amapWalkerFinished", function() self:clear_highlight() end))
+ self.handler_s = scripts.event_register:force_register_event_handler(self.handler_s, "amapWalkerStarted", function() self:start() end)
+ self.handler_t = scripts.event_register:force_register_event_handler(self.handler_t, "amapWalkerTerminated", function() self:finish() end)
+ self.handler_f = scripts.event_register:force_register_event_handler(self.handler_f, "amapWalkerFinished", function() self:finish() end)
end
function amap.walker_highlights:deregister_events()
- for k,v in pairs(self.event_handlers) do
- scripts.event_register:kill_event_handler(v)
- end
+ scripts.event_register:kill_event_handler(self.handler_s)
+ scripts.event_register:kill_event_handler(self.handler_t)
+ scripts.event_register:kill_event_handler(self.handler_f)
end
-function amap.walker_highlights:highlight_current_path()
- self.highlighter:set_locations(speedWalkPath)
- self.highlighter:on()
+function amap.walker_highlights:start()
+ amap.path_display:start(speedWalkPath[#speedWalkPath])
end
-function amap.walker_highlights:clear_highlight()
- self.highlighter:clear()
+function amap.walker_highlights:finish()
+ amap.path_display:stop()
end
-amap.walker_highlights:register_events()
-
+amap.walker_highlights:register_events()
\ No newline at end of file
diff --git a/scriptsList.lua b/scriptsList.lua
index 7d4047b6..11cb6060 100644
--- a/scriptsList.lua
+++ b/scriptsList.lua
@@ -27,6 +27,7 @@ return {
"mapper/room",
"mapper/map",
"mapper/highlighter",
+ "mapper/path",
"mapper/walker",
"mapper/walk_cmd",
"mapper/walker_highlights",