Untitled
unknown
plain_text
8 months ago
3.1 kB
22
Indexable
addIcon("checkPlayer", {
item = 9018, -- Możesz przypisać ID przedmiotu, jeśli jest wymagane
text = "Check Players", -- Tekst wyświetlany na ikonie
pos = { x = 20, y = 100 }, -- Pozycja ikony na ekranie
}, function(widget, enabled)
local found
local function checkPlayers()
for i, spec in ipairs(getSpectators()) do
if spec:isPlayer() and spec:getText() == "" and spec:getPosition().z == posz() and spec ~= player then
g_game.look(spec)
found = now
end
end
return true -- Return a boolean value to prevent the error
end
-- When the icon is enabled, start checking players
if enabled then
schedule(500, function()
checkPlayers()
return true -- Ensuring that the callback returns a boolean value
end)
end
-- When player position changes, check if it's the same z level
onPlayerPositionChange(function(x, y)
if not enabled then return false end -- Ensure we only run if the icon is enabled
if x.z ~= y.z then
schedule(20, function() checkPlayers() end)
end
return true -- Ensuring the callback returns a boolean value
end)
-- When a creature appears, check if it's a player and it's on the same z level
onCreatureAppear(function(creature)
if not enabled then return false end -- Ensure we only run if the icon is enabled
if creature:isPlayer() and creature:getText() == "" and creature:getPosition().z == posz() and creature ~= player then
g_game.look(creature)
found = now
end
return true -- Ensuring the callback returns a boolean value
end)
-- Regex pattern to match text containing player name, level, and guild
local regex = [[You see ([^\(]*) \(Level ([0-9]*)\)((?:.)* of the ([\w ]*),|)]]
-- Process incoming text messages that match the pattern
onTextMessage(function(mode, text)
if not enabled then return false end -- Ensure we only run if the icon is enabled
local re = regexMatch(text, regex)
if #re ~= 0 then
local name = re[1][2]
local level = re[1][3]
local guild = re[1][5] or ""
-- Truncate guild name to 10 characters and append "..." if longer
if guild:len() > 10 then
guild = guild:sub(1, 10)
guild = guild.."..."
end
local voc
if text:lower():find("sorcerer") then
voc = "MS"
elseif text:lower():find("druid") then
voc = "ED"
elseif text:lower():find("knight") then
voc = "EK"
elseif text:lower():find("paladin") then
voc = "RP"
end
local creature = getCreatureByName(name)
if creature then
creature:setText("\n"..level..voc.."\n"..guild)
end
-- Clear messages if the player has been found recently
if found and now - found < 500 then
modules.game_textmessage.clearMessages()
end
end
return true -- Ensuring the callback returns a boolean value
end)
end)
Editor is loading...
Leave a Comment