綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[其他] 觸摸精靈-簡單的腳本編寫教學

   關閉 [複製連結] 查看: 44523|回覆: 109|好評: 10
71
taco0103 | 收聽TA | 只看該作者
發表於 2014-3-5 21:42
本帖最後由 taco0103 於 2014-3-5 21:43 編輯

請問一下要怎在這個角本上加入2分鐘施放1個技能function main()
c = getColor(1400, 1000);
if c ~= 0xb42b07 then  --
    touchDown(0, 984, 1668);-
    mSleep(386);
     touchUp(0);
     mSleep(386);
    else                                 
mSleep(50);
touchDown(0, 1168, 1670);
    mSleep(50);
     touchUp(0);
     mSleep(50);
touchDown(0, 1168, 1670);
    mSleep(50);
     touchUp(0);
     mSleep(50);
touchDown(0, 1168, 1670);
    mSleep(50);
     touchUp(0);
     mSleep(50);
touchDown(0, 1168, 1670);
    mSleep(50);
     touchUp(0);
     mSleep(50);
end
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

72
 樓主| 有本書 | 收聽TA | 只看該作者
發表於 2014-3-5 21:46
taco0103 發表於 2014-3-5 21:42
請問一下要怎在這個角本上加入2分鐘施放1個技能function main()
c = getColor(1400, 1000);
if c ~= 0xb4 ...

教學文中有個新帖的超連結~到那看看喔~
那邊都有詳細的解說~如果看完還是不懂在發問唷!!!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

73
just.tw | 收聽TA | 只看該作者
發表於 2014-3-11 16:16
本帖最後由 just.tw 於 2014-3-11 16:51 編輯
taco0103 發表於 2014-3-5 21:42
請問一下要怎在這個角本上加入2分鐘施放1個技能function main()
c = getColor(1400, 1000);
if c ~= 0xb4 ...


改成下面這樣就可以了



round=1

function main()

        while round == 1 do       
                fight();
                mSleep(120000);
        end
end


function fight()

        c = getColor(1400, 1000);
        if c ~= 0xb42b07 then  --
                  touchDown(0, 984, 1668);-
                    mSleep(386);
                     touchUp(0);
                     mSleep(386);
            else                                 
                mSleep(50);
                touchDown(0, 1168, 1670);
                  mSleep(50);
                     touchUp(0);
                     mSleep(50);
                touchDown(0, 1168, 1670);
                    mSleep(50);
                     touchUp(0);
                     mSleep(50);
                touchDown(0, 1168, 1670);
                    mSleep(50);
                     touchUp(0);
                     mSleep(50);
                touchDown(0, 1168, 1670);
                    mSleep(50);
                     touchUp(0);
                     mSleep(50);
        end

end
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

74
taco0103 | 收聽TA | 只看該作者
發表於 2014-3-19 21:37
感謝搞了好久終於可以寫出完整的腳本了
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

75
 樓主| 有本書 | 收聽TA | 只看該作者
發表於 2014-3-21 19:29
just.tw 發表於 2014-3-11 16:16
改成下面這樣就可以了

看了大大的腳本,好奇之下寫了一下!我對腳本只有一點基礎,但我很好奇為何要這樣寫...
如果他只是單純的想要每兩分鐘做一件事,而等待兩分鐘的過程中沒做其他事,只要加個延遲就可以了!
好奇大大腳本裡的while round == 1 do 這句是甚麼?
我試寫一下這個腳本發現好像沒啥功用...只不過是調用副程序然後延遲兩分鐘...
不知道大大能否告訴我...那句的功用?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

76
 樓主| 有本書 | 收聽TA | 只看該作者
發表於 2014-3-21 19:34
taco0103 發表於 2014-3-19 21:37
感謝搞了好久終於可以寫出完整的腳本了

如果單純想寫每兩分鐘做一件事~加個延遲就可以了!
如果你是想先做其他事,然後等兩分鐘之後做一件事!
那我的文章都有相關代碼~新發的教學文也有實作和詳細教學!
如果一度的想等人幫忙寫出完整的腳本,那說真的...我的文章可以乾脆刪一刪了!
時間函數的運用文中都有教學,看不懂有新文章可以參考,在看不懂發問無訪!
但我真的很好奇...我發這篇文章到底有多少人有認真的在看
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

77
just.tw | 收聽TA | 只看該作者
發表於 2014-3-22 11:36
本帖最後由 just.tw 於 2014-3-22 12:15 編輯
有本書 發表於 2014-3-21 19:29
看了大大的腳本,好奇之下寫了一下!我對腳本只有一點基礎,但我很好奇為何要這樣寫...
如果他只是單純的 ...


while round == 1 do      
                fight();
                mSleep(120000);
end


這只是個無窮迴圈,每兩分鐘執行一次 fight() 裡面的動作而已

的確如您所說,加個2分鐘的延遲即可
但因為提出需求的人只有說想每兩分鐘想執行一次動作,並沒有提到是否還有其它動作
所以我才用無窮迴圈的方式來實現

我這裡用無窮迴圈還有個好處,就是在每次執行時不用再去設定延遲時間,直接按下播放鍵即可


在我看來 taco0103 是有能力把程式寫出來的,因為他已經具有 if...else..的判斷能力,他只差在臨門一腳而已
既然我有能力幫他一把,稍微幫他補充一下不足之處,不也是您開這個教學文的原始美意嗎?



寫到這裡,我就順便貢獻一個函數給大家
以後如果想在特定座標點一下,只要打 click(座標x,座標y) 就可以了


function main()  

        click(185,250)

end



function click(x,y)
                     
        touchDown(0, x, y)   ;                     
        touchUp(0);               
        mSleep(300);

end




以 taco0103 提出的需求為例,程式碼可大幅縮減如下:

round=1

function main()

        while round == 1 do      
                fight();
                mSleep(120000);
        end
end


function fight()

        c = getColor(1400, 1000);
        if c ~= 0xb42b07 then  --

                click(984,1668)

            else   

                click(1168,1670)
                click(1168,1670)
                click(1168,1670)
                click(1168,1670)
                             
        end

end



function click(x,y)
                     
        touchDown(0, x, y)   ;                     
        touchUp(0);               
        mSleep(300);

end


感謝樓主「有本書」以及版友 taco0103 提出的需求

才讓小弟有機會在這裡獻醜一下
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

78
 樓主| 有本書 | 收聽TA | 只看該作者
發表於 2014-3-23 00:17
just.tw 發表於 2014-3-22 11:36
while round == 1 do      
                fight();
                mSleep(120000);

function click(x,y) --這個函數封裝也有更簡略的寫法
function click() or function c() --其實它的用途就跟調用副程序一樣!
在寫入 click(x,y) 時去掉用預先設好的動作

function click(x,y) --這裡面的click不過是個定義名(此定義名可隨意輸入)
而click(x,y)中的(x,y)貌似是用來定義click(x,y)的調用~
如果再調用多個click()的副程序可以這樣寫

function click(x,y)
touchDown(0,x,y)
touchUp(0)
end

function click(z,r)
touchDown(0,x,y)
touchUp(0)
end

function main()
click(x,y)
click(z,r)
end

上面都屬個人見解,其實際解釋個人並不瞭解!

至於無窮迴圈我倒覺得用意不大...lua不是已經有個無線循環的函數了嗎?
多寫那幾行總覺得很多餘~不過小的很好奇!

round=1 --這個1 和 while round == 1 do --裡的1是何用途?

起初剛認識這個代碼時我以為這是在設定迴圈幾次在跳出,但實際寫出來的解果卻不是如此...
與其增加這兩行來定義循環何不while true do直接用這個呢?

最後我之所以不幫他是因為他既能寫出一個基本的腳本,對於只是單純的每兩分鐘做一件事的腳本應該不是難處~
但這個部份我個人要向他致歉...因為沒有注意她的要求,一度以為他是要我教她怎麼寫每兩分鐘做一件事!
而不是單純的每兩分鐘做一件事的腳本!

個人很高興有人能一起研究腳本的編寫,對於我的回覆如果有不對之處有本書還要在此項大大學習!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

79
pig55790 | 收聽TA | 只看該作者
發表於 2014-3-23 00:26
錄座標好物
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

80
islapple | 收聽TA | 只看該作者
發表於 2014-3-23 00:47
收下了,感謝
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則