|  | 
 
| 本帖最后由 richardgong 于 2022-5-11 12:27 PM 编辑 
  ) **首先声明,代码并不是我写的,作者是mudlet当前开发核心人员***Vadim Peretokin***在论坛中发布的代码,我做了简单修改,增加了点击图片打开网页查看大图,修改了图片锚点和宽、高度。**
 代码由2部分组成,一是script部分,二是trigger部分。
 ---
 
 #一、Script部分
 ```lua
 pkuxkx = pkuxkx or {}  --全局变量声明
 
 function pkuxkx.downloaded_file(_, filename) --建立用于下载和判断下载图片文件是否完成的函数
 -- is the file that downloaded ours? 优秀的程序员会给自己的代码加注释,让我这种小白能看懂
 if filename:find("pkuxkx_captcha.html", 1, true) then --如果存在fullme校验页面
 local imageurl = pkuxkx.parsewebpage(filename) --对解析出来的网址和图像文件名做局部变量声明
 local baseurl = pkuxkx.stripurl(pkuxkx.captcha)
 downloadFile(getMudletHomeDir() .. "/pkuxkx_captcha.jpg", baseurl .. imageurl) --下载文件
 elseif filename:find("pkuxkx_captcha.jpg", 1, true) then --如果下载图片完成
 pkuxkx.makeui(filename)                                 --调用展示图片的UI函数
 end
 end
 
 function pkuxkx.downloadcaptcha(url)                    --下载fullme校验网页
 pkuxkx.captcha = url                                                                        --pkuxkx.captcha是在trigger部分获取的
 downloadFile(getMudletHomeDir() .. "/pkuxkx_captcha.html", url)
 end
 
 function pkuxkx.parsewebpage(filename)                 --解析网页代码
 local f, s, webpage = io.open(filename)
 if f then
 webpage = f:read("*a")
 io.close(f)
 end
 local url = webpage:match('img src="%.(.-)"')                        --获取网页中关于图片的网址信息
 return url
 end
 
 function pkuxkx.stripurl(url)                                                        --剥离出图片网址
 return url:match("(.*)/")
 end
 
 -- register our function to run on the event that something was downloaded
 --建立事件监视器,监视器名称"sysDownloadDone",被调用的监视函数为判断是否完
 --成图片下载的函数"pkuxkx.downloaded_file"
 registerAnonymousEventHandler("sysDownloadDone", "pkuxkx.downloaded_file")
 
 function pkuxkx.hidecaptcha()                           --关闭fullme图片浮窗
 pkuxkx.picturelabel:hide()
 end
 
 function pkuxkx.makeui(image)                                                        --建立Geyser.Label型的图片浮窗
 pkuxkx.picturelabel = Geyser.Label:new({name = "pkuxkx.picturelabel", x = "-50%", y = "-20%", width = "15%", height = "10%"})
 -- stick an 'x' top-right 在fullme图片浮窗上加一个close的图标
 pkuxkx.picturelabelclose = Geyser.Label:new(
 {
 name = "pkuxkx.picturelabelclose",
 x = "-20px",y = "5px",
 width = "30px",height = "30px",
 message = "❌",
 },pkuxkx.picturelabel)
 pkuxkx.picturelabel:setBackgroundImage(image)   --在浮窗上展示fullme图片
 pkuxkx.picturelabel:setClickCallback("open_url")  --将浮窗设置为点击图片后打开网页察看图片全貌
 pkuxkx.picturelabelclose:setReleaseCallback("pkuxkx.hidecaptcha") --调用关闭fullme图片浮窗
 end
 
 function open_url()  --点击后打开网页查看图片
 openUrl(fullmeUrl)  --fullmeUrl的值是由trigger抓取的
 end
 
 ```
 ---
 #二、trigger部分(共四行)
 
 ##trigger(1)
  ) 
 ```lua
 fullmeUrl = multimatches[3][1]
 pkuxkx.downloadcaptcha(multimatches[3][1])
 ```
 ---
 ##trigger(2)
  ) 
 ```lua
 deleteLine()
 ```
 ---
 ##trigger(3)
  ) ```lua
 deleteLine()
 ```
 ---
 ##trigger(4)
  ) ```lua
 setTriggerStayOpen("gag text", 0)
 ```
 ---
 #三、改动浮窗位置
 我的显示器分辨率不见得适合大家的的分辨率,大家可以根据各自需求调整script中的以下代码数值
  ) ```lua
 pkuxkx.picturelabel = Geyser.Label:new({
 name = "pkuxkx.picturelabel",
 x = "-50%",    --距离mudlet主窗口右侧50%宽度,设定浮窗的左上角x坐标
 y = "-20%",    --距离mudlet主窗口底部20%高度,设定浮窗的左上角y坐标
 width = "15%",  --设定fullme浮窗宽度为mudlet主窗口宽度的15%
 height = "10%"  --设定fullme浮窗高度为mudlet主窗口宽度的10%
 })
 ```
 ---
 
 | 
 |