綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[其他] 【觸摸精靈】簡單腳本編寫+基礎教學文(新帖)

   關閉 [複製連結] 查看: 51904|回覆: 82|好評: 11
跳轉到指定樓層
樓主
有本書 | 收聽TA | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2014-1-19 16:35

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 有本書 於 2014-3-23 00:51 編輯

在此事先申明!

小的只是單純把自己所知道的帶到本帖中做教學!而大部分的函數代碼都來自於網路相關論壇~對於一些腳本上的不懂小的會的就幫不會的...也愛莫能助!當然~也歡迎對LUA函數有認知的大大們前來分享自己的心得~


範例與原碼如要複製使用請先刪除原碼前的"全形"空白鍵

=================================================

↓↓↓相關網址↓↓↓

☆☆☆0基础必看☆☆☆ 触摸培训群出品

↑↑↑相關網址↑↑↑

=================================================

↓↓↓相關檔案↓↓↓

【应用】触摸精灵Android正式版-3.6.2.apk

颜色获取.lua

↑↑↑相關檔案↑↑↑

=================================================

正題

有了基礎就可以來學一些比較不一樣的東西了~

=================================================

一 日誌紀錄

功用:本代碼用於紀錄你所設定的相關訊息~比方說我希望某些判斷成立後記錄成立的時間點!

原碼:

    function log(txt)
    date = os.date("%m/%d/%Y-%H:%M:%S");
    file = io.open("/mnt/sdcard/Touchelper/cooler.txt","a");
    file:write(date..""..txt.."");
    file:write("");
    file:close();
    end

備註:本代碼需搭配log("")一起使用

====================↓↓↓範例↓↓↓====================

    function log(txt)
    date = os.date("%m/%d/%Y-%H:%M:%S");
    file = io.open("/mnt/sdcard/Touchelper/cooler.txt","a");
    file:write(date..""..txt.."");
    file:write("");
    file:close();
    end

    function main()    --主入口
    log("記錄我")  --紀錄日誌 ("")在""中間輸入欲要記錄的文字
    end

以上腳本撥放後會將日誌存入/mnt/sdcard/Touchelper這個路徑,並以cooler.txt檔呈現~

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 28碎鑽 +21 幫助 +30 收起 理由
yemin + 1 + 1 非常讃
fackyou48 + 1 + 1 非常讃
ckchiu1 + 1 偶像,看完你的內容,讓我找到了活著的意義.
tony3625235 + 1 + 1 非常讃
神劍闖江湖浪人 + 1 + 1 很給力!
rickysir + 1 + 3 論壇就是要有像樓主這樣用心的人.
桂葉紅兒 + 1 + 1 非常讚
jjvk + 1 + 1 非常讚
0931556150 + 1 老衲來幫這篇文章開光
2619458247 + 1 非常讚

查看全部評分

收藏收藏79 分享分享1 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-1-19 16:45
本帖最後由 有本書 於 2014-2-2 23:18 編輯

腳本的實際編寫~

 關於多線程

有的時候在製作腳本時會很希望能夠同時運行多個腳本代碼,但依現在的技術還沒辦法實現這個"多線程"的功能!那麼要該如何實現這個多線程的功能呢?小的一直在測試和搞懂這個多線程的原理與具體使用方法,原理方面還是沒有著落!但實際編寫倒是有了一點了解~

function Buff1()
while true do
mSleep(500);
coroutine.yield();
end
end

上面代碼是一個線程,function Buff1()中的Buff1是一個線程名!純粹的賦予這個線程一個名稱~而代碼中有個循環,但這個循環中並沒有任何跳出的條件!那這個線程就成了一個單一循環線程~而代碼中的coroutine.yield();用意在於給這個線程一個跳出的條件!只是這個跳出只是暫時結束這個線程的循環~為了就是在多個線程被調用時不是一直單一循環,而是能夠達到多個線程同時循環的假象!

function Buff1()
while true do
mSleep(500);
coroutine.yield();
end
end

function Buff2()
while true do
mSleep(500);
coroutine.yield();
end
end

function main()
co1 = coroutine.create(Buff1);
co1 = coroutine.create(Buff2);

while true do
coroutine.resume(co1);
coroutine.resume(co2);

end
end

上面代碼我去做了兩個線程去運行,co1 = coroutine.create(Buff1);這個代碼用來調用一個線程!而括弧中Buff1是線程名稱,這個線程名稱是依你所設的線程名來給予命名的~比方說線程名稱叫"BBB"而這個調用的括弧中就要寫入BBB,而腳本中main下的while true do這個循環裡則是要用來循環coroutine.create的調用!

多線程的解釋都是小的個人的見解,如果有其他說法小的很樂意聽聽各位大大的說明!
當然!如果對於我的解釋有任何疑問~小的都很樂意給您解答!

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
q7a4z1w8s5 + 1 + 1 非常讚

查看全部評分

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

使用道具 舉報

板凳
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-1-23 09:42
zawa0615 發表於 2014-1-21 21:15
您的 兩個腳本互點來解鎖限制時間的教學 怎麼不見了?

版上好像有解鎖版的了~所以那個互點的很多餘~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-1-23 09:42
shunwenyang 發表於 2014-1-22 23:40
一千次的閱讀,一百次的回覆,其實只為找到您的一個錯別字

勞煩大大要回復就完整點~不要太無聊@@
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-1-30 12:46
zawa0615 發表於 2014-1-30 04:33
解鎖板? 3.62的嗎? 我找找看....
我的acer a500 用腳本精靈跑 要開兼容模式
一個條件都不成立的簡單回圈要5 ...

觸摸精靈裡的函數庫有專門優化在兼容模式下的腳本代碼...去看看吧!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-2-26 20:17
silverwings 發表於 2014-2-25 00:13
目前這玩意,對沒接觸過XX精靈來說蠻難的
又不好寫碼,也不好判斷一些關鍵點
真希望原作者能先弄個 ...

不太懂你的意思?
直接記憶使用者操作的精靈?
不管是腳本精靈 觸摸精靈或PC的按鍵精靈都有個叫"錄製"的功能!
它的功用就是紀錄你在錄製前所做的所有動作~
當然這些動作只包刮(點擊 延時 滑動) 如果要對自己所錄的腳本做更進一步的編輯,就必須進到腳本裏頭做更進一步的編寫!
如果沒有任何基礎,文有一個超連結可以直達基礎教學文!歡迎去參考看看~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-2-28 23:22
silverwings 發表於 2014-2-27 15:28
您覺得哪一個比較好抓色點?
比如說抓血量條..
或是您知道哪個程式是腳本碼電腦與手機共通的? ...

腳本的好用程度通常都是看手機的性能和寫的腳本的功能...
抓色的速度通常都一樣~我用了兩款程式效果都差不多!
只是腳本精靈吃的效能比較高 觸摸精靈吃的效能較低
腳本精靈功能較完善 但個人用起來覺得很麻煩 唯一好處是沒有時間限制
觸摸精靈功能比較沒那麼完善 但開發空間很大 只是有時間限制就是了...

我兩款都有再用 也有再用PC的按鍵精靈~如果你手機性能比較好然後又不想有時間限制的話
就用腳本精靈吧~

至於有哪款程式的腳本碼與電腦及手機的腳本碼是共通的~這我不知道!!!
觸摸 腳本 按鍵 三款的語言都差不多 只是腳本碼都各有差異...
比方說
觸摸的延遲是 mSleep 腳本的延遲則是 sleep
還有什麼問題需要回答的可以留言:P
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 1 反對 2

使用道具 舉報

8
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-5-12 19:43
本帖最後由 有本書 於 2014-5-12 21:55 編輯
charxp 發表於 2014-5-12 16:45
各位大大問一下
1.
SCREEN_RESOLUTION="720x1280";


好吧...有些東西我無解,畢竟我只是淺學...

1.

SCREEN_RESOLUTION="720x1280";
SCREEN_COLOR_BITS=32;
此參數為別人的腳本我可以直接修改720x1280成我的適用參數嗎?

答:那兩段好看用的~純告訴你設備的一些基本訊息,所以改了也沒用~

2.
count=1;
round=0
defPrevRound=0;
bloodRound=65
hardRound=100
function main()  
   
        while count<6000 do
                fightEvil();
                mSleep(300);
        end
        end
這一串可以幫我解釋嗎?

答:
count=1; --定義變量 (定義一個叫count的變量為1)
round=0 --同上
defPrevRound=0; --同上
bloodRound=65 --同上
hardRound=100 --同上
function main()   --腳本主入口 (所有腳本運行後由此開始)
   
while count<6000 do --這樣的編寫我不是很常見,大概就是循環判斷count小於6000就...
fightEvil(); --這個我就不懂了,他可能是個副程式或甚麼的?
mSleep(300); --基本延遲,BJ4
end --對應while
end --對應main()

基本上除了"fightEvil();"這段我基本上我是不太了解,不過初步判斷應該是個封裝子程序的調用!

封裝子程序:
function fightEvil() --封裝一個子程序,子程序名稱為fightEvil(這個名稱可以隨意取)
mSleep(300) --延遲300毫秒
end --子程序end

function main() --腳本主入口(所有腳本有此開始運行)
fightEvil() --調用名為fightEvil的子程序
end --主入口end

3. 這個我直接幫你翻

function clickRound(x,y,dx,dy) --這段大致上也是封裝子程序(括弧內的變量不明)
--上面那段代碼括弧內的變量用意應該是一種座標,只是它所代表的是甚麼我就不懂了!
--如果有更懂得大大,還勞煩幫忙解釋與解答~
        if x ~= -1 and y ~= -1 then  --判斷xy是否不等於-1 (是的話往下運行,不是的話直接end)
              round=round+1; --定義變量round = round+1
              touchDown(0, (x+dx), (y+dy)) ; --點擊座標(x+dx)(y+dy)
--(x+dx)(y+dy) 這個應該是去運用到(x,y,dx,dy)裡的變量,或者他之前有事先設定x,y,dx,dy的變量!
              touchUp(0); --基本函數bj4
    end --對應if

end --對應clickRound
function clickDef(x,y,dx,dy) --這段大致上也是封裝子程序(括弧內的變量不明)
        diffRound=round-defPrevRound; --定義變量diffRound=round-defPrevRound
        if defPrevRound == 0  then  --如果變量diffRound等於0就往下運行
                click(x,y,dx,dy); --調用名為click的子程序(通常這個是用來封裝點擊子程序的)
--比方說:
--function click(x,y,dx,dy)
--touchDown(0,128,11)
--touchUp(0)
--end
--function main()
--click(x,y,dx,dy)
--end

                defPrevRound=round; --定義變量diffRound=round
        elseif diffRound >18  then  --第一個判斷不成立會跳到這裡(譯:否則如果defPrevRound大於18就往下運行)
                click(x,y,dx,dy); --調用名為click的子程序(通常這個是用來封裝點擊子程序的)
                defPrevRound=round; --定義變量diffRound=round
        else --判斷不成立會跳到這裡(譯:否則就...)
                click30Percent();--調用名為click30Percent的子程序
        end --對應if (PS:腳本中否則如果是不用end的)
end --對應clickDef

function click30Percent() --這段大致上也是封裝子程序
        x, y =findColorInRegion(0x939393,346,751,346,751); --區域找色bj4
        if x ~= -1 and y ~= -1 then  --判斷變量xy是否不等於-1
                click(350,385,0,0) --調用名為click的子程序(通常這個是用來封裝點擊子程序的)
        else --否則
                click(347,751,0,0); --調用名為click的子程序(通常這個是用來封裝點擊子程序的)
        end --對應if

end --對應click30Percent

function click(x,y,dx,dy) --這段大致上也是封裝子程序(括弧內變量不明)
    if x ~= -1 and y ~= -1 then --判斷xy是否不等於-1
        touchDown(0, (x+dx), (y+dy)) --點擊座標(x+dx)(y+dy)               
        touchUp(0); --基本函數bj4
        --mSleep(500); --基本延遲bj4

       --notifyMessage(x); --這個也是基本的(提示框)不過被設為註解了
       --notifyMessage(y); --這個也是基本的(提示框)不過被設為註解了
    else --否則                           
      -- notifyMessage("no"); --這個也是基本的(提示框)不過被設為註解了                    
    end  --對應if

end --對應click

=================================================================

大致上就這樣了~翻完後我發現除了"fightEvil();"意義不明~
(x,y,dx,dy)這個大概是用來分辨子程序的~
不過看到touchDown(0, (x+dx), (y+dy))這段,
或許(x,y,dx,dy)是用來定義座標的,
只不過腳本中我沒找到定義x,y,dx,dy的變量,所以還是存在著一個無解的狀態~

我翻的是照自己認知的,不過應該也不會差太遠,腳本內容我個人在猜並不完整,
不過這可能是自己學習未達到一定程度吧!

總之希望我有幫到您,如果有哪位大大有更好的解答,也歡迎回復這個問題~
不惑還是在這裡呼應前來提問的大大們,如果您是想提問腳本有哪裡錯了,
或那裡是需要改進的!
請各位張貼完整的腳本內容,不然解答有誤就不能怪小的我了~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

9
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-5-13 17:33
charxp 發表於 2014-5-13 16:38
大大問一下:
-- 适用屏幕参数
SCREEN_RESOLUTION="640x1136";

我不太清楚IOS和Android 的腳本是否能通用...
不過既然你有原碼,你可試著將他所有的點擊和座標位置
都修改成適用於自己的位置,顏色部份也是需要修改的~

不過呢!如果你跟她的設備屏幕大小是相同的,那只要將找色的部份修一修!
自然就能運作了...

還有啊...與其修改別人腳本,不如自己寫一個~
你現在有一個範例,只是不太清楚他的具體功用!
不過有個範例,寫起來也會跟著輕鬆恩多~

以上都是我的建議!比較麻煩的是要將屏幕座標不同的腳本,
改寫成適用自己屏幕大小的腳本,是比較麻煩的!

如果希望我幫您改,也必須我有接觸相同的遊戲...
不然我也只能說說而已了~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

10
 樓主| 有本書 | 收聽TA | 顯示全部樓層
發表於 2014-5-13 19:30
charxp 發表於 2014-5-13 19:11
我有用過過我的座標套上大大的 顏色獲取.lua 把獲取的色跟座標變更成我的
結果還是一樣一執行就跳成音量設 ...

上面的腳本是擬修改過的嗎?
一執行就跳到音量設置畫面?

你確認一下他是自己點到音量設置畫面,
還是一執行就跳到音量執行畫面?

這種問題我個人沒遇過,
而且這個腳本也沒有任何關於開啟音量設置的代碼和動作!

還有啊~你可刪掉
SCREEN_RESOLUTION="640x1136";
SCREEN_COLOR_BITS=32;
看看~沒用也刪掉吧!他只是查看腳本信息時會好看點的...
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

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

本版積分規則