DNF卡牌对对翻

社区服务
高级搜索
猴岛论坛辅助工具DNF卡牌对对翻
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
0个回复

DNF卡牌对对翻

楼层直达
mimi_rice

ZxID:55494225

等级: 上士
举报 图酷模式  只看楼主 使用道具 楼主   发表于: 2015-01-09 0
— 本帖被 岁月苍白 执行加亮操作(2015-01-09) —

DNF卡牌对对翻
本文按键学院提供技术支持
按键学院交流群(1群已满):376122403
零基础学按键精灵群(2群):372671254





引用
最近,DNF出了一个卡牌对对翻的活动,和连连看的玩法差不多。
翻开一张牌,再翻开另一张牌,如果两张牌是一样的,则加点数。点数积累到30点即可换取奖励。
这样的翻牌脚本要怎么写呢?




翻牌规则






1截止时间:一月十五号。活动期间,LV30及以上的玩家每天登录可以获得1个翻牌机会。
2LV30及以上的角色通关符合自身等级的推荐地下城2次即可获得1次翻牌机会。每日获得翻牌机会的个数不受限制。
3、消耗1个翻牌机会,可翻两张牌。
  
             翻牌布局是4行4列:

          


             我们可以集满8次翻牌次数之后一次性翻牌。
             翻牌次数不够的话,可以通过  通关 “推荐地下城” 获取。        
             副本名字下有绿色字 "E适应等级" 提示的,就是翻牌规则里所说的
“推荐地下城”

            



翻牌攻略


引用
              卡牌对对翻里图片的分布是固定的五种,                
               首先需要知道当前翻牌的布局是属于哪种,
               然后照着对应的布局点开图片即可:  

          
             每种布局的第四排的第二张图片是不一样的。
             首次翻牌的时候,翻开第四排第二张图片,就能知道当前翻牌的布局是属于哪种。         



流程图







执行步骤


引用
本例子中的脚本为前台脚本,游戏窗口默认大小:800*600




1游戏窗口移动之后,坐标会发生变化,所以需要获取窗口左上角坐标,来计算出变化后的坐标。
      相关院刊:【院刊】-【201412期】简单几个步骤实现游戏掉线重连(上)
       代码:
  1. Hwnd = Plugin.Window.Find("地下城与勇士", "地下城与勇士")    
  2. sRect = Plugin.Window.GetClientRect(Hwnd)    
  3. MyArray = Split(sRect, "|")    
  4. x = Clng(MyArray(0)) : y = Clng(MyArray(1))
      
2
点击卡牌对对翻的活动图标

      
      


3、通过查找 "翻牌次数"  来判断卡牌翻翻界面是否出现。
      每隔一秒查找一次,如果找到则退出循环,继续下一步,五次没有找到,则提示信息并且停止脚本运行。
      (避免找不到图进入死循环)

      
      

      代码:
  1. ////////判断卡牌翻翻界面是否出现/////////
  2. For 5
  3.     FindPic x+90,y+37,x+322,y+116,"D:\卡牌翻翻\翻牌次数.bmp",0.9,intX,intY
  4.     If intX > 0 And intY > 0 Then
  5.         j=1
  6.         Exit For        
  7.     End If
  8.     Delay 1000
  9. Next
  10. If j <> 1 Then
  11.     MessageBox "没找到翻牌界面 T_T"
  12.     EndScript
  13. End If
4、翻开第四排第二张图片,判断第四排第二张图片是哪张图片

      第一种布局:第四排第二张图片是一只紫色的羊
      第二种布局:第四排第二张图片是一只粉红色的羊
      第三种布局:第四排第二张图片是一只绿色的羊
      第四种布局:第四排第二张图片是一只Yellow色的羊
      第五种布局:第四排第二张图片是一只蓝色的羊

      
      将这五只羊截图以供查找
      
     小编没有截取整只羊,只截了一丢丢, 找图的范围也设置在第四排第二张图片的上半部
       这样可以提高找图效率。


     代码:
  1. ////////翻开第四排第二个图片////////////////
  2. MoveTo x+451,y+467
  3. LeftClick 1
  4. Delay 1000
  5. ////////找第四排第二个图片是哪张图片///////
  6. For i= 1 to  5
  7.     FindPic x+423,y+420,x+500,y+474,"D:\卡牌翻翻\" & i &".bmp",0.9,intX,intY
  8.     If intX > 0 And intY > 0 Then
  9.         TracePrint i
  10.         布局=i
  11.     End If
  12. Next
{:5_155:}
     例如,翻开的第四排第二张图是紫色的羊。

      


     那么,接下去应该是:
     点开第四排第一张图
     点开第一排第一张图
     点开第二排第二张图
     点开第一排第二张图
     点开第一排第三张图
     以此类推……




     我们需要记录下这一组要点击的坐标
      打开抓抓放大镜,移动到第四排的第一张图片上记下它的坐标
      再移动到第一排第一张图片的位置上记下它的坐标 ?
      这么麻烦?


      
{:5_130:}麻烦的事情还是交给脚本来做吧。
                      另写一个脚本专门用来获取坐标:



  1. Hwnd = Plugin.Window.Find("地下城与勇士", "地下城与勇士")
  2. Call Plugin.Window.Move(hwnd,0,0)
  3. For 32   //16张图片本应该循环16次,但是由于waitclick命令,鼠标按下弹起都会触发一次,所以这里需要循环32次
  4.     last_click=WaitClick()    
  5.     If   last_click=32773 then  //判断鼠标右键是不是按下
  6.         GetCursorPos x, y
  7.         TracePrint x & "," & y
  8.         坐标字符串 = 坐标字符串  & "x+" & x & "," &"y+" & y & "|"
  9.     End  if
  10. Next
  11. TracePrint 坐标字符串
      
      启动“获取坐标”脚本之后,按照布局,依次右击图片

      

     红色框框里的就是我们需要的坐标了,复制保存起来。
      用这种方法将五种布局需要点击的坐标组获取到。



5、根据布局,选择对应的坐标字符串
       代码:
  1. ////////根据布局,选择对应的坐标字符串///////
  2. Select Case 布局
  3. Case 1  //紫色的羊,第一种布局
  4.     坐标字符串 ="x+373,y+465|x+372,y+110|x+449,y+231|x+456,y+118|x+552,y+119|x+629,y+113|x+642,y+233|x+366,y+226|x+548,y+235|x+367,y+350|x+460,y+353|x+553,y+349|x+553,y+469|x+636,y+344|x+641,y+468"
  5. Case 2 // 粉红色的羊,第二种布局
  6.     坐标字符串 ="x+459,y+241|x+371,y+125|x+638,y+120|x+459,y+114|x+561,y+117|x+377,y+240|x+558,y+244|x+636,y+242|x+634,y+477|x+371,y+353|x+552,y+359|x+448,y+356|x+633,y+354|x+383,y+474|x+548,y+478"
  7. Case 3 //绿色的羊,第三种布局
  8.     坐标字符串 ="x+372,y+346|x+361,y+113|x+461,y+244|x+458,y+109|x+549,y+354|x+548,y+116|x+641,y+234|x+645,y+116|x+372,y+481|x+368,y+228|x+556,y+475|x+552,y+233|x+631,y+353|x+465,y+350|x+632,y+467"
  9. Case 4 //**的羊,第四种布局
  10.     坐标字符串 ="x+387,y+464|x+366,y+120|x+367,y+344|x+466,y+116|x+364,y+233|x+547,y+121|x+637,y+345|x+646,y+103|x+645,y+239|x+462,y+236|x+559,y+244|x+451,y+349|x+635,y+470|x+550,y+358|x+549,y+464"
  11. Case 5 //蓝色的羊,第五种布局
  12.     坐标字符串 ="x+459,y+346|x+373,y+111|x+372,y+244|x+465,y+116|x+466,y+233|x+555,y+117|x+645,y+119|x+546,y+235|x+640,y+472|x+640,y+232|x+544,y+470|x+378,y+353|x+369,y+464|x+553,y+360|x+633,y+360"
  13. End Select
6、分割坐标字符串,依次点击坐标
       代码:
  1. ////////分割坐标字符串,依次点击坐标//////////////
  2. 坐标 = Split(坐标字符串, "|")
  3. For i = 0 To UBound(坐标)
  4.     Execute "MoveTo " & 坐标(i)
  5.     LeftClick 1
  6.     Delay 1000
  7. Next
  

Execute知识相关:
【院刊】-【201410期】 神奇的Execute语句


整体代码


  1. PutAttachment "D:\卡牌翻翻\","*.bmp"
  2. Hwnd = Plugin.Window.Find("地下城与勇士", "地下城与勇士")    
  3. sRect = Plugin.Window.GetClientRect(Hwnd)    
  4. MyArray = Split(sRect, "|")    
  5. x = Clng(MyArray(0)) : y = Clng(MyArray(1))
  6. ////////点击卡牌翻翻的活动图标///////////
  7. MoveTo x + 450, y + 540
  8. LeftClick 1
  9. ////////判断卡牌翻翻界面是否出现/////////
  10. For 5
  11.     FindPic x+90,y+37,x+322,y+116,"D:\卡牌翻翻\翻牌次数.bmp",0.9,intX,intY
  12.     If intX > 0 And intY > 0 Then
  13.         j=1
  14.         Exit For        
  15.     End If
  16.     Delay 1000
  17. Next
  18. If j <> 1 Then
  19.     MessageBox "没找到翻牌界面 T_T"
  20.     EndScript
  21. End If
  22. ////////翻开第四排第二个图片////////////////
  23. MoveTo x+451,y+467
  24. LeftClick 1
  25. Delay 1000
  26. ////////找第四排第二个图片是哪张图片///////
  27. For i= 1 to  5
  28.     FindPic x+423,y+420,x+500,y+474,"D:\卡牌翻翻\" & i &".bmp",0.9,intX,intY
  29.     If intX > 0 And intY > 0 Then
  30.         TracePrint i
  31.         布局=i
  32.     End If
  33. Next
  34. ////////根据布局,选择对应的坐标字符串///////
  35. Select Case 布局
  36. Case 1  //紫色的羊,第一种布局
  37.     坐标字符串 ="x+373,y+465|x+372,y+110|x+449,y+231|x+456,y+118|x+552,y+119|x+629,y+113|x+642,y+233|x+366,y+226|x+548,y+235|x+367,y+350|x+460,y+353|x+553,y+349|x+553,y+469|x+636,y+344|x+641,y+468"
  38. Case 2 // 粉红色的羊,第二种布局
  39.     坐标字符串 ="x+459,y+241|x+371,y+125|x+638,y+120|x+459,y+114|x+561,y+117|x+377,y+240|x+558,y+244|x+636,y+242|x+634,y+477|x+371,y+353|x+552,y+359|x+448,y+356|x+633,y+354|x+383,y+474|x+548,y+478"
  40. Case 3 //绿色的羊,第三种布局
  41.     坐标字符串 ="x+372,y+346|x+361,y+113|x+461,y+244|x+458,y+109|x+549,y+354|x+548,y+116|x+641,y+234|x+645,y+116|x+372,y+481|x+368,y+228|x+556,y+475|x+552,y+233|x+631,y+353|x+465,y+350|x+632,y+467"
  42. Case 4 //Yellow色的羊,第四种布局
  43.     坐标字符串 ="x+387,y+464|x+366,y+120|x+367,y+344|x+466,y+116|x+364,y+233|x+547,y+121|x+637,y+345|x+646,y+103|x+645,y+239|x+462,y+236|x+559,y+244|x+451,y+349|x+635,y+470|x+550,y+358|x+549,y+464"
  44. Case 5 //蓝色的羊,第五种布局
  45.     坐标字符串 ="x+459,y+346|x+373,y+111|x+372,y+244|x+465,y+116|x+466,y+233|x+555,y+117|x+645,y+119|x+546,y+235|x+640,y+472|x+640,y+232|x+544,y+470|x+378,y+353|x+369,y+464|x+553,y+360|x+633,y+360"
  46. End Select
  47. ////////分割坐标字符串,依次点击坐标//////////////
  48. 坐标 = Split(坐标字符串, "|")
  49. For i = 0 To UBound(坐标)
  50.     Execute "MoveTo " & 坐标(i)
  51.     LeftClick 1
  52.     Delay 1000
  53. Next
Q文件下载:卡牌对对翻.rar[点击下载](6 K) 下载次数:1 累计下载获得 DB 没有记录

DNF游戏相关院刊:
[size=14px]DNF六点刷新疲劳值时从第一个角色开始执行

【院刊】-【201409期】DNF遍历背包卖物




[ 此帖被mimi_rice在2015-01-09 14:56重新编辑 ]
本帖de评分: 1 条评分 DB +100
DB+100 2015-01-09

精品工具文章

« 返回列表
发帖 回复