- 注释:测试环境:英雄无敌在线--战场第四章133地图
- 注释:测试目的:1.验证程序有效性 2.调整RecoupGrid使符合情况
- 注释:以下常数是测量得出,因每个图是不一定一样的
- 注释: MapDown 和 MapLeft 的测试留待您来参与,呵呵
- 定义常量 MapUpper = "057,003"
- 定义常量 MapRight = "066,005"
- 定义常量 OriginPos = "510,380"
- 定义常量 MapXoffset = "32,16"
- 定义常量 MapYoffset = "-32,16"
- 定义常量 RecoupGrid = "7,9"
- 定义变量 Str
- 定义变量 TestPos
- 注释:上边界边界补偿测试
- 令 TestPos = "057,008"
- 令 Str = "以下为上框边界补偿测试:" & vbCrlf
- 令 Str = Str & "地图坐标{" & TestPos & "}到上框点[" & MapUpper & "]的距离为:"
- 令 Str = Str & Offset(MapUpper,TestPos,MapXoffset,MapYoffset) & vbCrlf
- 令 Str = Str & "原来的屏幕坐标为:{" & OriginPos & "},边界补偿后的屏幕坐标为:"
- 令 Str = Str & GetOriginPos(TestPos,OriginPos,RecoupGrid,MapXoffset,MapYoffset,MapUpper,",",",",MapRight) & vbCrlf
- 弹出窗口 Str
- 令 TestPos = "074,019"
- 注释:右边界边界补偿测试
- 令 Str = "以下为右框边界补偿测试:" & vbCrlf
- 令 Str = Str & "地图坐标{" & TestPos & "}到右框点[" & MapRight & "]的距离为:"
- 令 Str = Str & Offset(MapRight,TestPos,MapXoffset,MapYoffset) & vbCrlf
- 令 Str = Str & "原来的屏幕坐标为:{" & OriginPos & "},边界补偿后的屏幕坐标为:"
- 令 Str = Str & GetOriginPos(TestPos,OriginPos,RecoupGrid,MapXoffset,MapYoffset,MapUpper,",",",",MapRight) & vbCrlf
- 弹出窗口 Str
- 令 TestPos = "060,005"
- 注释:上/右边界混合边界补偿测试
- 令 Str = "以下为混合边界补偿测试:" & vbCrlf
- 令 Str = Str & "地图坐标{" & TestPos & "}到上框点[" & MapUpper & "]的距离为:"
- 令 Str = Str & Offset(MapUpper,TestPos,MapXoffset,MapYoffset) & vbCrlf
- 令 Str = Str & "地图坐标{" & TestPos & "}到右框点[" & MapRight & "]的距离为:"
- 令 Str = Str & Offset(MapRight,TestPos,MapXoffset,MapYoffset) & vbCrlf
- 令 Str = Str & "原来的屏幕坐标为:{" & OriginPos & "},边界补偿后的屏幕坐标为:"
- 令 Str = Str & GetOriginPos(TestPos,OriginPos,RecoupGrid,MapXoffset,MapYoffset,MapUpper,",",",",MapRight) & vbCrlf
- 弹出窗口 Str
- 脚本停止运行
- 函数 GetOriginPos(MapPos,OriginPos,RecoupGrid,MapXoffset,MapYoffset,MapUpper,MapDown,MapLeft,MapRight)
- 注释:制作人员:xxchuchu
- 注释:制作时间:2011.01.09
- 注释:功能说明:[英雄无敌在线]中,从游戏[地图坐标]换算屏幕坐标时,返回经过[边界补偿]的屏幕坐标
- 注释: 其中参数 MapPos, OriginPos, RecoupGrid, MapXoffset, MapYoffset 必须
- 注释: MapUpper, MapDown, MapLeft, MapRight 没有的用 "," 代入
- 注释:参数说明:
- 注释:GetOriginPos 返回值,OriginPos加上补偿值后的坐标,格式:X,Y 字符型
- 注释:MapPos 需要计算的[地图坐标],格式: X,Y 字符型
- 注释:OriginPos 正常的人物[屏幕当前坐标],格式:X,Y 字符型
- 注释:RecoupGrid 需要补偿的格子范围,格式: RecoupX,RecoupY 字符型
- 注释:MapXoffset 游戏坐标X+1时屏幕坐标位移值,格式:X,Y 字符型
- 注释:MapYoffset 游戏坐标Y+1时屏幕坐标位移值,格式:X,Y 字符型
- 注释:MapUpper 游戏画面边界上边界的任一点,格式:X,Y 字符型
- 注释:MapDown 游戏画面边界下边界的任一点,格式:X,Y 字符型
- 注释:MapLeft 游戏画面边界左边界的任一点,格式:X,Y 字符型
- 注释:MapRight 游戏画面边界右边界的任一点,格式:X,Y 字符型
- 定义变量 MyArray, XOrigin, YOrigin, RecoupX, RecoupY
- 定义变量 Xoffset, Yoffset, Ystep, Xstep
- 注释:假定游戏显示坐标不能为负数
- 如果 InStr(MapPos,"-") 则
- 令 GetOriginPos = OriginPos
- 跳转到标记 EndOfFun(函数 GetOriginPos)
- 条件结束
- 注释:记录原始的屏幕坐标
- 令 MyArray = Split(OriginPos,",")
- 令 XOrigin = CInt(MyArray(0))
- 令 YOrigin = CInt(MyArray(1))
- 注释:记录需要补偿的X/Y的格子数
- 令 MyArray = Split(RecoupGrid,",")
- 令 RecoupX = CInt(MyArray(0))
- 令 RecoupY = CInt(MyArray(1))
- 注释:上框补偿计算开始,这里是把Y轴向上推
- 如果 MapUpper <> "," 并且 InStr(MapUpper,",") 则
- 令 MyArray = split(MapXoffset,",")
- 令 Ystep = MyArray(1)
- 令 MyArray = Split(Offset(MapUpper,MapPos,MapXoffset,MapYoffset),",")
- 令 Xoffset = CInt(MyArray(0))
- 令 Yoffset = CInt(MyArray(1))
- 如果 Abs(Yoffset) <= Abs(Ystep * RecoupX) 则
- 注释:具体怎么补偿,需要看不同游戏自己分析一下
- 令 YOrigin = YOrigin - (Abs(Ystep * RecoupX) - Abs(Yoffset))
- 条件结束
- 条件结束
- 注释:下框补偿计算开始,这里是把Y轴向下推
- 如果 MapDown <> "," 并且 InStr(MapDown,",") 则
- 令 MyArray = split(MapXoffset,",")
- 令 Ystep = MyArray(1)
- 令 MyArray = Split(Offset(MapDown,MapPos,MapXoffset,MapYoffset),",")
- 令 Xoffset = CInt(MyArray(0))
- 令 Yoffset = CInt(MyArray(1))
- 如果 Abs(Yoffset) <= Abs(Ystep * RecoupX) 则
- 注释:具体怎么补偿,需要看不同游戏自己分析一下
- 令 YOrigin = YOrigin + (Abs(Ystep * RecoupX) - Abs(Yoffset))
- 条件结束
- 条件结束
- 注释:左框补偿计算开始,这里是把X轴向右推
- 如果 MapLeft <> "," 并且 InStr(MapLeft,",") 则
- 令 MyArray = split(MapYoffset,",")
- 令 Xstep = MyArray(0)
- 令 MyArray = Split(Offset(MapLeft,MapPos,MapXoffset,MapYoffset),",")