【流放之路】手把手教你写AHK②——监测血蓝(法血做不到的事情

https://www.bilibili.com/video/BV1HF411G7Th/?spm_id_from=pageDriver

教程已开源,需要的同学自取:https://github.com/Newwbbie/study-ahk 

 

#SingleInstance, Force
    SendMode Input
    SetWorkingDir, %A_ScriptDir%
    
    ; 定义一个定时器,以一个很快的频率去监测血量
    ; 监测自定义的血量监测点的明度(V),根据v去判断该点是否有血
    ; 从而完成监测血量的目标,蓝量同理。
    F2::
    SetTimer, autoHP, 100
    Return
    
    F3::
    pause
    Return
    
    autoHP() {
    PixelGetColor, color, 120, 1020 , RGB
    v := RGB2HSV(color)
    if (v < 0.4) {
    send 1
    }
    }
    
    RGB2HSV(color) {
    ; 提取rgb,转成10进制
    rgb := SubStr(color, 3, 6)
    r := toBase(“0x”+SubStr(rgb, 1 , 2), 10)
    g := toBase(“0x”+SubStr(rgb, 3 , 2), 10)
    b := toBase(“0x”+SubStr(rgb, 5 , 2), 10)
    
    ; 转hsv
    cMax := max(r,g,b)
    cMin := min(r,g,b)
    dlta := cMax – cMin
    ; MsgBox %r%, %g%, %b%, %cMax%, %cMin%, %dlta%
    
    if (dlta != 0 && cMax == r) {
    h := (g – b) / dlta
    } else if (dlta != 0 && cMax == g) {
    h := (b – r) / dlta + 2
    } else if (dlta != 0 && cMax == b) {
    h := (r – g) / dlta + 4
    }
    h := h * 60
    if (h < 0) {
    h := h + 360
    }
    if (cMax != 0) {
    s := dlta / cMax
    }
    v := cMax / 255
    ; MsgBox %h%, %s%, %v%
    ; 这里得到三个值,我只返回了对我有用的v
    ; 如果需要在别处使用,请自行修改
    return v
    }
    
    toBase(n, b) {
    return (n < b ? “” : ToBase(n//b,b)) . ((d:=Mod(n,b)) < 10 ? d : Chr(d+55))
    }
    
    max(a, b, c) {
    return (a>=b && a>=c) ? a : (b>=a && b>=c) ? b : c
    }
    
    min(a, b, c) {
    return (a<=b && a<=c) ? a : (b<=a && b<=c) ? b : c
    }

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA捐赠
共{{data.count}}人
人已捐赠
其他

自动更新Hosts工具 - Github

2022-4-11 9:42:07

其他

聚合搜索工具2.0版本

2022-4-12 11:29:13

2 条回复 A文章作者 M管理员
  1. hexuren

    代码放在代码框中比较好一些

  2. ?Marvelous

    视频没了 能再发一下吗

个人中心
购物车
优惠劵
有新私信 私信列表
搜索