TC官方合作论坛

 找回密码
 立即注册
查看: 4433|回复: 8

【高级篇】4、2013地下城与勇士自动拾取物品

[复制链接]
发表于 2013-3-4 21:28:23 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1. 功能 拾取方法(所在房间,模式)
  2.     dm暗殇 = T_暗乄殇灬.dm暗殇
  3.     Plug365_龍吟 = com("网络验证.Plug365")
  4.     数据 = 数组[5]
  5.     Lv坐标x,Lv坐标y,标记1=0,标记2=0,物品坐标x,物品坐标y,识别次数=0,卡住次数=0,卡住标记=0,跑动判断=0,跑动次数=0,是否进入下个房间=0
  6.     坐标x,坐标y,当前所在房间
  7.     对比坐标x1,对比坐标y1,对比坐标x2,对比坐标y2
  8.     循环(真)
  9.         //[判断人物是否还在所传入的房间]
  10.         标记1=0
  11.         循环(真)
  12.             如果(通用方法.检测网络中断(dm暗殇))
  13.                 返回 "网络连接中断"
  14.             如果结束
  15.             如果(!窗口.是否存在(窗口句柄))
  16.                 返回 "游戏消失"
  17.             如果结束
  18.             数据[0]=-1
  19.             数据 = 通用方法.找字方法(736,26,795,212,"副本人物","06cfde-101010|15c0ed-101010|06c0de-101010|06c0ed-101010|03bdea-101010",dm暗殇)
  20.             如果(数据[0]==2)
  21.                 坐标x = 数据[1]
  22.                 坐标y = 数据[2]
  23.                 跳出
  24.             如果结束
  25.             标记1 +=1
  26.             如果(标记1==200)
  27.                 如果(字符串.比较(Plug365_龍吟.IsWindowDead(窗口句柄,20),"无响应")==0)
  28.                     返回 "游戏卡死"
  29.                 否则
  30.                     标记1 = 0
  31.                 如果结束
  32.             如果结束
  33.         循环结束
  34.         当前所在房间=0
  35.         如果(坐标x>756&&坐标x<774&&坐标y>192&&坐标y<209) //[第一个房间]756,192,774,209
  36.             当前所在房间=1
  37.         如果结束
  38.         如果(坐标x>756&&坐标x<774&&坐标y>174&&坐标y<192)//[第二个房间]756,174,774,192
  39.             当前所在房间=2
  40.         如果结束
  41.         如果(坐标x>756&&坐标x<774&&坐标y>156&&坐标y<173)//[第三个房间]756,156,774,173
  42.             当前所在房间=3
  43.         如果结束
  44.         如果(坐标x>756&&坐标x<774&&坐标y>138&&坐标y<155)//[第四个房间]756,138,774,155
  45.             当前所在房间=4
  46.         如果结束
  47.         如果(坐标x>756&&坐标x<774&&坐标y>120&&坐标y<137)//[第五个房间]757,120,775,137
  48.             当前所在房间=5
  49.         如果结束
  50.         如果(坐标x>756&&坐标x<774&&坐标y>101&&坐标y<119)//[第六个房间]757,101,775,119
  51.             当前所在房间=6
  52.         如果结束
  53.         如果(坐标x>756&&坐标x<774&&坐标y>83&&坐标y<102)//[第七个房间]757,83,775,102
  54.             当前所在房间=7
  55.         如果结束
  56.         如果(坐标x>756&&坐标x<774&&坐标y>66&&坐标y<82)//[第八个房间]757,66,775,82
  57.             当前所在房间=8
  58.         如果结束
  59.         如果(坐标x>756&&坐标x<774&&坐标y>47&&坐标y<65)//[boss房间] 757,47,774,65
  60.             当前所在房间=9
  61.             返回 "已经进入BOSS房间"
  62.         如果结束
  63.         如果(当前所在房间!=所在房间)
  64.             如果(当前所在房间>所在房间)
  65.                 返回 "进入下一房间"
  66.             否则  //[进入上一房间]
  67.                 返回 "进入上一房间"
  68.             如果结束
  69.         如果结束
  70.         标记1=0
  71.         如果(通用方法.检测网络中断(dm暗殇))
  72.             返回 "网络连接中断"
  73.         如果结束
  74.         如果(!窗口.是否存在(窗口句柄))
  75.             返回 "游戏消失"
  76.         如果结束
  77.         //[判断脚下是否有物品,有则拾取一次]
  78.         遍历(标记1=0;标记1<3;标记1++)
  79.             数据[0]=-1
  80.             数据 = 通用方法.找字方法(0,355,800,600,"物品左上框|物品右上框","F5F60C-141414",dm暗殇)
  81.             如果(数据[0]==2)
  82.                 dm暗殇.KeyPress(88)
  83.                 辅助.等待(辅助.随机数(300,350))
  84.             否则
  85.                 跳出
  86.             如果结束
  87.         遍历结束
  88.         //[得到人物的位置]
  89.         标记1=0
  90.         循环(真)
  91.             如果(通用方法.检测网络中断(dm暗殇))
  92.                 返回 "网络连接中断"
  93.             如果结束
  94.             如果(!窗口.是否存在(窗口句柄))
  95.                 返回 "游戏消失"
  96.             如果结束
  97.             数据[0]=-1
  98.             数据 = 通用方法.找字方法(0,0,800,600,标签.获得文本("等级"),"00e7ff-000000|fadc64-000000",dm暗殇)
  99.             如果(数据[0]==2)
  100.                 Lv坐标x = 数据[1]
  101.                 Lv坐标y = 数据[2]
  102.                 数据[0]=-1
  103.                 数据 = 通用方法.找色方法(Lv坐标x,Lv坐标y,Lv坐标x+95,Lv坐标y+8,"00e7ff-000000",2,dm暗殇)
  104.                 如果(数据[0]==2)
  105.                     跳出
  106.                 如果结束
  107.             如果结束
  108.             标记2 +=1
  109.             如果(标记2==3) //[左走一点]
  110.                 dm暗殇.KeyPress(37)
  111.                 辅助.等待(辅助.随机数(20,30))
  112.                 dm暗殇.KeyDown(37) //[左键]  
  113.                 辅助.等待(辅助.随机数(200,250))
  114.                 dm暗殇.KeyUp(37)
  115.                 辅助.等待(辅助.随机数(20,30))
  116.             如果结束
  117.             如果(标记2==6) //[右走一点]
  118.                 dm暗殇.KeyPress(39)
  119.                 辅助.等待(辅助.随机数(20,30))
  120.                 dm暗殇.KeyDown(39) //[右键]  
  121.                 辅助.等待(辅助.随机数(200,250))
  122.                 dm暗殇.KeyUp(39)
  123.                 辅助.等待(辅助.随机数(20,30))
  124.             如果结束
  125.             如果(标记2==9) //[右走一点]
  126.                 dm暗殇.KeyPress(39)
  127.                 辅助.等待(辅助.随机数(20,30))
  128.                 dm暗殇.KeyDown(39) //[右键]  
  129.                 辅助.等待(辅助.随机数(200,250))
  130.                 dm暗殇.KeyUp(39)
  131.                 辅助.等待(辅助.随机数(20,30))
  132.             如果结束
  133.             如果(标记2==12) //[左走一点]
  134.                 dm暗殇.KeyPress(37)
  135.                 辅助.等待(辅助.随机数(20,30))
  136.                 dm暗殇.KeyDown(37) //[左键]  
  137.                 辅助.等待(辅助.随机数(200,250))
  138.                 dm暗殇.KeyUp(37)
  139.                 辅助.等待(辅助.随机数(20,30))
  140.                 标记2=0
  141.             如果结束
  142.             标记1 +=1
  143.             如果(标记1==200)
  144.                 如果(字符串.比较(Plug365_龍吟.IsWindowDead(窗口句柄,20),"无响应")==0)
  145.                     返回 "游戏卡死"
  146.                 否则
  147.                     标记1 = 0
  148.                 如果结束
  149.             如果结束
  150.         循环结束
  151.         //[计算人物脚的位置]
  152.         Lv坐标x = 数学.绝对值(Lv坐标x+(数据[1]-Lv坐标x)/2)  
  153.         Lv坐标y = Lv坐标y + 104      
  154.         //[扫描是否有物品]
  155.         数据[0]=-1
  156.         数据 = 通用方法.找字方法(0,355,800,600,"物品左上框|物品右上框","B8BE82-3C2832",dm暗殇)
  157.         如果(数据[0]==2)
  158.             //help.messagebox("有物品")
  159.             如果(数据[3]==0) //[物品左上框]
  160.                 物品坐标x = 数据[1] +29
  161.                 物品坐标y = 数据[2] + 8
  162.             否则  //[物品右上框]
  163.                 物品坐标x = 数据[1] -29
  164.                 物品坐标y = 数据[2] + 8
  165.             如果结束
  166.             如果(识别次数==0)
  167.                 对比坐标x1 = 物品坐标x
  168.                 对比坐标y1 = 物品坐标y
  169.                 识别次数 = 1
  170.             否则
  171.                 对比坐标x2 = 物品坐标x
  172.                 对比坐标y2 = 物品坐标y
  173.                 识别次数 = 0
  174.             如果结束
  175.             如果(对比坐标x1 == 对比坐标x2&&对比坐标y1 == 对比坐标y2) //[标志人物未移动或许被卡住了]
  176.                 卡住次数+=1
  177.                 如果(卡住次数==5)
  178.                     返回 "物品无法拾取"
  179.                 如果结束
  180.                 如果(卡住次数>2)
  181.                     如果(卡住标记==0)
  182.                         dm暗殇.KeyDown(40) //[下键]  
  183.                         辅助.等待(500)
  184.                         dm暗殇.KeyUp(40)
  185.                         辅助.等待(辅助.随机数(20,30))
  186.                         如果(Lv坐标x>物品坐标x)  //[左走]
  187.                             dm暗殇.KeyPress(37)
  188.                             辅助.等待(辅助.随机数(20,30))
  189.                             dm暗殇.KeyDown(37) //[左键]  
  190.                             辅助.等待(30*(数学.绝对值(Lv坐标x-物品坐标x)/8))
  191.                             dm暗殇.KeyUp(37)
  192.                             辅助.等待(辅助.随机数(20,30))
  193.                         如果结束
  194.                         如果(Lv坐标x<物品坐标x)  //[右走]
  195.                             dm暗殇.KeyPress(39)
  196.                             辅助.等待(辅助.随机数(20,30))
  197.                             dm暗殇.KeyDown(39) //[右键]  
  198.                             辅助.等待(30*(数学.绝对值(物品坐标x-Lv坐标x)/8))
  199.                             dm暗殇.KeyUp(39)
  200.                             辅助.等待(辅助.随机数(20,30))
  201.                         如果结束
  202.                         卡住标记 = 1
  203.                         继续 //[继续寻找物品拾取]
  204.                     否则
  205.                         dm暗殇.KeyDown(38) //[上键]  
  206.                         辅助.等待(500)
  207.                         dm暗殇.KeyUp(38)
  208.                         辅助.等待(辅助.随机数(20,30))
  209.                         如果(Lv坐标x>物品坐标x)  //[左走]
  210.                             dm暗殇.KeyPress(37)
  211.                             辅助.等待(辅助.随机数(20,30))
  212.                             dm暗殇.KeyDown(37) //[左键]  
  213.                             辅助.等待(30*(数学.绝对值(Lv坐标x-物品坐标x)/8))
  214.                             dm暗殇.KeyUp(37)
  215.                             辅助.等待(辅助.随机数(20,30))
  216.                         如果结束
  217.                         如果(Lv坐标x<物品坐标x)  //[右走]
  218.                             dm暗殇.KeyPress(39)
  219.                             辅助.等待(辅助.随机数(20,30))
  220.                             dm暗殇.KeyDown(39) //[右键]  
  221.                             辅助.等待(30*(数学.绝对值(物品坐标x-Lv坐标x)/8))
  222.                             dm暗殇.KeyUp(39)
  223.                             辅助.等待(辅助.随机数(20,30))
  224.                         如果结束
  225.                         卡住标记 = 0
  226.                         继续 //[继续寻找物品拾取]
  227.                     如果结束
  228.                 如果结束
  229.             如果结束
  230.             如果(Lv坐标y>物品坐标y)    //[上走]
  231.                 dm暗殇.KeyDown(38) //[上键]  
  232.                 辅助.等待(50*(数学.绝对值(Lv坐标y-物品坐标y)/8))
  233.                 dm暗殇.KeyUp(38)
  234.                 辅助.等待(辅助.随机数(20,30))
  235.             如果结束
  236.             如果(Lv坐标y<物品坐标y)    //[下走]
  237.                 dm暗殇.KeyDown(40) //[下键]  
  238.                 辅助.等待(50*(数学.绝对值(物品坐标y-Lv坐标y)/5))
  239.                 dm暗殇.KeyUp(40)
  240.                 辅助.等待(辅助.随机数(20,30))
  241.             如果结束
  242.             如果(Lv坐标x>物品坐标x)  //[左走]
  243.                 dm暗殇.KeyPress(37)
  244.                 辅助.等待(辅助.随机数(20,30))
  245.                 dm暗殇.KeyDown(37) //[左键]
  246.                 辅助.等待(30*(数学.绝对值(Lv坐标x-物品坐标x)/8))
  247.                 dm暗殇.KeyUp(37)
  248.                 辅助.等待(辅助.随机数(20,30))
  249.             如果结束
  250.             如果(Lv坐标x<物品坐标x)  //[右走]
  251.                 dm暗殇.KeyPress(39)
  252.                 辅助.等待(辅助.随机数(20,30))
  253.                 dm暗殇.KeyDown(39) //[右键]  
  254.                 辅助.等待(30*(数学.绝对值(物品坐标x-Lv坐标x)/8))
  255.                 dm暗殇.KeyUp(39)
  256.                 辅助.等待(辅助.随机数(20,30))
  257.             如果结束
  258.             遍历(标记1=0;标记1<3;标记1++)
  259.                 数据[0]=-1
  260.                 数据 = 通用方法.找字方法(0,355,800,600,"物品左上框|物品右上框","F5F60C-141414",dm暗殇)
  261.                 如果(数据[0]==2)
  262.                     dm暗殇.KeyPress(88)
  263.                     辅助.等待(辅助.随机数(300,350))
  264.                 否则
  265.                     //[判断是左还是右,然后慢慢一个单位一个单位移动3次]
  266.                     如果(Lv坐标x>物品坐标x)  //[左走]
  267.                         dm暗殇.KeyPress(37)
  268.                         辅助.等待(辅助.随机数(20,30))
  269.                     如果结束
  270.                     如果(Lv坐标x<物品坐标x)  //[右走]
  271.                         dm暗殇.KeyPress(39)
  272.                         辅助.等待(辅助.随机数(20,30))
  273.                     如果结束
  274.                 如果结束
  275.             遍历结束
  276.         否则
  277.             //[根据模式判断是否需要左右跑寻找物品]
  278.             如果(模式==0)
  279.                 跳出
  280.             否则
  281.                
  282.                 循环(真)
  283.                     如果(通用方法.检测网络中断(dm暗殇))
  284.                         返回 "网络连接中断"
  285.                     如果结束
  286.                     如果(!窗口.是否存在(窗口句柄))
  287.                         返回 "游戏消失"
  288.                     如果结束
  289.                     数据[0]=-1
  290.                     数据 = 通用方法.找字方法(0,0,800,600,标签.获得文本("等级"),"00e7ff-000000",dm暗殇)
  291.                     如果(数据[0]==2)
  292.                         Lv坐标x = 数据[1]
  293.                         Lv坐标y = 数据[2]
  294.                         数据[0]=-1
  295.                         数据 = 通用方法.找色方法(Lv坐标x,Lv坐标y,Lv坐标x+95,Lv坐标y+8,"00e7ff-000000",2,dm暗殇)
  296.                         如果(数据[0]==2)
  297.                             跳出
  298.                         如果结束
  299.                     如果结束
  300.                     标记2 +=1
  301.                     如果(标记2==3) //[左走一点]
  302.                         dm暗殇.KeyPress(37)
  303.                         辅助.等待(辅助.随机数(20,30))
  304.                         dm暗殇.KeyDown(37) //[左键]  
  305.                         辅助.等待(辅助.随机数(200,250))
  306.                         dm暗殇.KeyUp(37)
  307.                         辅助.等待(辅助.随机数(20,30))
  308.                     如果结束
  309.                     如果(标记2==6) //[右走一点]
  310.                         dm暗殇.KeyPress(39)
  311.                         辅助.等待(辅助.随机数(20,30))
  312.                         dm暗殇.KeyDown(39) //[右键]  
  313.                         辅助.等待(辅助.随机数(200,250))
  314.                         dm暗殇.KeyUp(39)
  315.                         辅助.等待(辅助.随机数(20,30))
  316.                     如果结束
  317.                     如果(标记2==9) //[右走一点]
  318.                         dm暗殇.KeyPress(39)
  319.                         辅助.等待(辅助.随机数(20,30))
  320.                         dm暗殇.KeyDown(39) //[右键]  
  321.                         辅助.等待(辅助.随机数(200,250))
  322.                         dm暗殇.KeyUp(39)
  323.                         辅助.等待(辅助.随机数(20,30))
  324.                     如果结束
  325.                     如果(标记2==12) //[左走一点]
  326.                         dm暗殇.KeyPress(37)
  327.                         辅助.等待(辅助.随机数(20,30))
  328.                         dm暗殇.KeyDown(37) //[左键]  
  329.                         辅助.等待(辅助.随机数(200,250))
  330.                         dm暗殇.KeyUp(37)
  331.                         辅助.等待(辅助.随机数(20,30))
  332.                         标记2=0
  333.                     如果结束
  334.                     标记1 +=1
  335.                     如果(标记1==200)
  336.                         如果(字符串.比较(Plug365_龍吟.IsWindowDead(窗口句柄,20),"无响应")==0)
  337.                             返回 "游戏卡死"
  338.                         否则
  339.                             标记1 = 0
  340.                         如果结束
  341.                     如果结束
  342.                 循环结束
  343.                 //[计算人物脚的位置]
  344.                 Lv坐标x = 数学.绝对值(Lv坐标x+(数据[1]-Lv坐标x)/2)  
  345.                 Lv坐标y = Lv坐标y + 104   
  346.                 //[判断人物位置是否处于最底或者最上面,若是则将人物移动到中间位置]        
  347.                 //下端:420      上端:275      相距:145      
  348.                 如果(Lv坐标y<469)  //[下走] 横向50毫秒移动8个坐标 纵向50毫秒移动5个坐标
  349.                     dm暗殇.KeyDown(40) //[下键]  
  350.                     辅助.等待(50*((469-Lv坐标y)/5))
  351.                     dm暗殇.KeyUp(40)
  352.                     辅助.等待(辅助.随机数(20,30))
  353.                 如果结束
  354.                 如果(Lv坐标y>469)  //[上走]
  355.                     dm暗殇.KeyDown(38) //[上键]  
  356.                     辅助.等待(50*((Lv坐标y-469)/5))
  357.                     dm暗殇.KeyUp(38)
  358.                     辅助.等待(辅助.随机数(20,30))
  359.                 如果结束
  360.                 //如果(跑动判断==0)
  361.                 //dm暗殇.KeyPress(37)
  362.                 //辅助.等待(辅助.随机数(20,30))
  363.                 //dm暗殇.KeyDown(37) //[左键]
  364.                 //辅助.等待(辅助.随机数(300,310))
  365.                 //dm暗殇.KeyUp(37)
  366.                 //辅助.等待(辅助.随机数(20,30))
  367.                 //跑动判断=1
  368.                 //否则
  369.                 //dm暗殇.KeyPress(39)
  370.                 //辅助.等待(辅助.随机数(20,30))
  371.                 //dm暗殇.KeyDown(39) //[右键]
  372.                 //辅助.等待(辅助.随机数(900,950))
  373.                 //dm暗殇.KeyUp(39)
  374.                 //辅助.等待(辅助.随机数(20,30))
  375.                 //跑动判断=0
  376.                 //如果结束
  377.                 //跑动次数 +=1
  378.                 //如果(跑动次数==3)
  379.                 //跳出
  380.                 //如果结束
  381.             如果结束
  382.             数据[0]=-1
  383.             数据 = 通用方法.找图方法(447,9,800,233,"过图标志1.bmp|过图标志2.bmp",dm暗殇)
  384.             如果(数据[0]==2)
  385.                 跳出
  386.             如果结束
  387.             如果(字符串.比较(dm暗殇.GetColor(765,129),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,148),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,166),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,184),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,202),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,112),"66bbbb")==0||str.strcompare(dm暗殇.GetColor(765,94),"66bbbb")==0)
  388.                 跳出
  389.             如果结束
  390.         如果结束
  391.         辅助.等待(辅助.随机数(20,30))
  392.     循环结束
  393. 功能结束
复制代码

回复

使用道具 举报

发表于 2013-3-4 23:36:17 | 显示全部楼层
真是大神啊!!!你是怎么做到的
回复 支持 反对

使用道具 举报

发表于 2013-3-5 14:56:33 | 显示全部楼层
大神,请讲下思路嘛!
回复 支持 反对

使用道具 举报

发表于 2013-3-11 21:50:34 | 显示全部楼层
这明显看不懂哦。
回复 支持 反对

使用道具 举报

发表于 2013-3-25 08:38:40 | 显示全部楼层
貌似很好,可惜看不懂。。。。
回复 支持 反对

使用道具 举报

发表于 2013-4-14 10:19:08 | 显示全部楼层
哇  还有没有关于地下城其他的脚本
回复 支持 反对

使用道具 举报

发表于 2013-5-6 20:01:09 | 显示全部楼层
能不能讲下
回复 支持 反对

使用道具 举报

发表于 2013-12-31 23:38:12 | 显示全部楼层
不明觉厉
回复

使用道具 举报

发表于 2014-2-4 16:54:52 | 显示全部楼层
是用天使的吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-19 13:07 , Processed in 0.044856 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表