植物大战僵尸吧 关注:558,930贴子:5,075,459

自动收阳光,自动开炮脚本,炮数及位置不限,可不要键盘,你多数是

取消只看楼主收藏回复

刚发了一篇不知怎么的不见了,我白介绍了那么多。
一楼给百度吧。


1楼2010-06-19 23:34回复
    话就少说点,说点关键的用法,要用这脚本,你还要自己抓两个图片,一个是阳光,一个是玉米头(要开的花的),开始游戏后你只要点一下右键就可以在那看了,因为他会自动开炮,自已收阳光,当你动了鼠标后可以加南瓜补的别的什么,这时自动开炮及自动收阳光就会暂时停止,当你再次点右键时就可以又开始了!
    先说这么多,下面给代码


    3楼2010-06-19 23:39
    回复
      Dim hwnd,fx,myhnd,mx,my,i,theDate,pplai,ppkai,yi,paox,paoy,paox2,paoy2,n
      Dim mypaox(8),mypaoy(8) //保存有炮的坐标
      DimEnv wx,wy
      BeginThread mywindow
      theDate=Now
      Delay 2200
      pplai=0
      ppkai=0
      For i=0 to 7
      mypaox(i)=1
      next
      //初始化大炮坐标
      i=0
      Do While true
      //找阳光
      Call FindPic(wx,wy+100,wx+800,wy+600,"2.bmp",0.6,px,py)
      //找炮,分二个区找炮,加快速度
      Call FindPic(wx,wy,wx+550,wy+240,"5.bmp",0.45,paox,paoy)
      Call FindPic(wx,wy+240,wx+550,wy+550,"5.bmp",0.45,paox2,paoy2)
         //第一个区的炮
      If paox>0 and paoy>0 then
         kefang=0
         //不要收重复的炮
         For n=0 to 7
         If mypaox(n)>paox-10 and mypaox(n)<paox+10 and mypaoy(n)>paoy-10 and mypaoy(n)<paoy+10 then kefang=1
        
          Next
      If kefang=0 then
         mypaox(pplai)=paox
         mypaoy(pplai)=paoy
          pplai=pplai+1
         If pplai>7 then pplai=0
         End if
      End if  
      //If GetLastKey = 65 then MsgBox mypaox(0) & "a " & mypaox(1) & "b " & mypaox(2) & "c " & mypaox(3) & "d " & mypaox(4) & "e " & mypaox(5) & "f " & mypaox(6) & "g " & mypaox(7)
      //如果手动点过炮,要按B清一下数组的数据,找过一次炮,可以不要,要了当然更好
      If GetLastKey = 66 then
         For i=0 to 7
         mypaox(i)=1
         next
      End if
      // //第二个区的炮
      If paox2>0 and paoy2>0 then
         paox=paox2
         paoy=paoy2
          kefang=0
         //不要收重复的炮
         For n=0 to 7
         If mypaox(n)>paox-10 and mypaox(n)<paox+10 and mypaoy(n)>paoy-10 and mypaoy(n)<paoy+10 then
         kefang=1
          End if
          Next
      If kefang=0 then
         mypaox(pplai)=paox
         mypaoy(pplai)=paoy
          pplai=pplai+1
         If pplai>7 then pplai=0
         End if
      End if
      //找炮结束
         mym=GetLastClick()
      //阳光收集点坐标
      If mym=32774 or mym=32773 then
         mtox=wx+400
         mtoy=wy+200
         MoveTo mtox,mtoy
      End if
      // //中键滑动 开炮标志
      // If mym=32781 then
      // kp=kp+1
      //
      // End if
      caodix=wx+720
      caodiy=wy+157
      caodiy2=wy+490
      MoveTo caodix,caodiy2
      MsgBox wy & "dd"& wx
      //Call FindColorEx(caodix,caodiy,wx+720,wy+162,"1DE026",0,0.9,x,y)
      //Call FindColorEx(caodix,caodiy2,wx+720,wy+597,"1DE026",0,0.9,x2,y2)   
      //kaipao=0
      caos1=GetPixelColor(caodix,caodiy)
      caos2=GetPixelColor(caodix,caodiy2)
      //MsgBox caos1
      If caos1<>"65EC4A" or caos2<>"16DE1B" Then  
           kaipao=1
           Else
           kaipao=0  
      End If
      //开炮条件
      Call GetCursorPos(mx,my)
      mytime=DateDiff("s", theDate,Now)
      


      5楼2010-06-19 23:42
      回复

        For 2
        If mypaox(ppkai)<>1 and kaipao=1 and mx=mtox then
        ptox=wx+635
        If i Mod 2=0 then
        ptoy=wy+220
        Else
        ptoy=wy+490
        End if
        If mytime>6 then
            MoveTo mypaox(ppkai),mypaoy(ppkai)
        // MsgBox mypaox(ppkai) & " " & mypaoy(ppkai)&" kk"& ppkai
            Delay 350
            LeftClick 1
           //如果没有变红就要再补点一次,就是没点中炮,有钱,花什么的
            For 3
             Call FindColorEx(mypaox(ppkai),mypaoy(ppkai),mypaox(ppkai)+15,mypaoy(ppkai)+15,"1200FF",1,0.9,x,y)
              If x<0 and y<0
            //MsgBox "kk"
            Delay 200
            LeftClick 1   
            End if
            Next
           
            MoveTo ptox,ptoy
           LeftClick 1
           Delay 150
           if i mod 2 =1   then   
           theDate=Now
           //MsgBox mytime
            End if
           i=i+1
           mypaox(ppkai)=1
           ppkai=ppkai+1
           If ppkai>7 then ppkai=0  
           MoveTo mtox,mtoy
           //开完炮就收阳光
        End if
          
        End if
        Next
        If px>0 and py>0 then
        SaveMousePos
        //收阳光代码
           If mx=mtox and my=mtoy   then
            MoveTo px,py
            LeftClick 1
           RestoreMousePos
            End if
        End if
        Delay 20
        loop
        //玩游戏时窗口可以动的,过五秒自己又找回来
        Sub mywindow()
        Do While true
        hwnd=Plugin.Window.GetKeyFocusWnd()
        CLRECT_STR=Plugin.Window.GetClientRect(hwnd)
        If myhnd<>hwnd or CLRECT_STR<>fx then
        fx=CLRECT_STR
        CLRECT_VAL=split(CLRECT_STR,"|")
        wx=Cint(CLRECT_VAL(0)):wy=Cint(CLRECT_VAL(1))
        myhnd=hwnd
        //MsgBox wx&"!"&wy&"kk"&" "&myhnd
        End if
        Delay 5000
        Beep
        loop
        End sub
        //以上代码请高手指点!


        6楼2010-06-19 23:42
        回复
          回复:4楼
          哪,我发的一篇,只是收阳光的,没有自动开炮打过关的呀!


          10楼2010-06-19 23:45
          回复
            回复:9楼
            你给你贴子,还是很有启发的,下一步我要防干扰,把后排及前排的钱都捡了,害我有时都找不到春哥
            回LS我写过一些程序!


            12楼2010-06-20 00:00
            回复
              下一步的目标,实践自动挂机过几关。
              真希望还有高手提几点意见,晚了,明天再写吧!
              今天已一天没离电脑了!为了这个自动开炮。


              14楼2010-06-20 00:06
              回复
                经过一点改进,一百关,自己不要动一下,就过关了!
                还有汽球僵尸,第二个卡用三叶草,等快到了,就放三叶,呵呵,只自动放过一个。
                还有朋友可以不用抓图就可以试了,部分代码改为如下:
                //找阳光
                //Call FindPic(wx,wy+100,wx+800,wy+600,"2.bmp",0.7,px,py)
                XY=Plugin.Color.FindMutiColor(wx,wy+100,wx+800,wy+600,"4FBBF3","-12|12|49B7F2,12|12|5EC4F4,0|13|01F6FE,0|24|57C0F3",0.8)
                ZB = InStr(XY,"|")
                px = Clng(Left(XY, ZB - 1)): py = Clng(Right(XY, Len(XY) - ZB))
                //找炮,分二个区找炮,加快速度
                // Call FindPic(wx,wy,wx+550,wy+240,"5.bmp",0.7,paox,paoy)
                // Call FindPic(wx,wy+240,wx+550,wy+550,"5.bmp",0.7,paox2,paoy2)
                XY=Plugin.Color.FindMutiColor(wx,wy,wx+550,wy+240,"20EBF9","6|0|1CEDFE,14|0|14EEFC,12|4|20FCFE,4|5|23F2FE,6|7|0BD8F6,-2|8|16EAFD,15|8|0BD9F5,2|11|0FDCF8,9|11|0DDEF8,-2|18|00C6E1,5|18|01A6C1,14|18|00B2CC",0.5)
                //XY=Plugin.Color.FindMutiColor(wx,wy,wx+550,wy+550,"23F3FE","2|0|1DDAEA,5|0|22F1FE,2|2|08C6E1,0|3|02BCD7,5|3|06CEEA,0|6|13E2F8,2|6|24E1F9,5|6|0CDEF8",0.7)
                ZB = InStr(XY,"|")
                paox = Clng(Left(XY, ZB - 1)): paoy = Clng(Right(XY, Len(XY) - ZB))
                懂一点程序的朋友都可看明白!
                这么做的好处是提高找炮率。


                17楼2010-06-20 09:56
                回复
                  刚完成最后一波,自动打水中僵尸,及收钱代码!


                  30楼2010-06-20 22:08
                  回复
                    经过两天的努力,已可以从200关挂机打几关了,现在最关的问题,还是找炮与点炮,炮很难做到一出来全找到,还有炮出来了点一下,不一定就点到了,(不想用把钱全收起的办法,收也不一定收的很及时,当你要点炮的时来了一个钱挡在炮上,看你就没办法了)有些问题要认真研究一下!到时发个挂机视频。


                    31楼2010-06-23 08:00
                    回复
                      没楼上的这么夸张,
                      好不容易找到会点空炮的原因了,原来我找炮程序灵敏度太高了,头两个发出去的炮又一次被找到了,(发出的瞬间玉米没有多大的变化,结果找成可用炮)结果下一波就自动空点它了,我两炮打完后再延时500就OK,这个问题真是困了我几天了!害的我,把找炮程序改了又改,已用了好几种方法,总认为找不到炮,今天才知道用TracePrint查看记录,要早知用,可能早解决了,今天我是用视频录再加TracePrint才找到问题的关键!
                      没时间多试,只试了从210关到208关,一下鼠标没点,只吃了我小半个南瓜,我还没做补南瓜的程序,下一步再做!


                      34楼2010-06-23 16:08
                      回复
                        是210到218关


                        35楼2010-06-23 16:09
                        回复
                          自动挂机图片,看看还有什么问题,从224到227关!
                          一个南瓜没有补!


                          36楼2010-06-24 18:43
                          回复

                            大家说说是怎么死的,我没看吃饭回来就这样


                            37楼2010-06-24 18:44
                            回复
                              做了海豚与舞王出来时间的自动调整(0.8秒内自调)及南瓜与被炸曾哥的补充程序,现在可以多跑几关了,还在自测与调整中。
                              发现44楼是一位高手,他说的很没错,10炮节奏很难把握,当然如果做24炮的话,那挂机应太简单了,一直炸就是了!
                              这个10炮完成后,做个20炮以上的试试!


                              48楼2010-06-25 08:30
                              回复