綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[教程] 觸摸精靈基礎腳本編寫

  [複製連結] 查看: 57164|回覆: 5|好評: 2
跳轉到指定樓層
樓主
dick52014 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2015-9-23 15:42

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

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

x
本帖最後由 dick52014 於 2017-8-10 10:20 編輯

觸摸精靈基礎腳本編寫
我是服務業,所以用一些上班下班空閒時間自己研究,會的不多,但是還可以寫出一些基本腳本,給要試著寫簡單腳本掛機的玩家參考,覺得好幫忙評個分喲!

首先說錄製,錄製來掛網的腳本最容易出錯,也最容易寫,相信大家都試過了,三不五時就停住,亂點,如果沒基礎寫腳本又要錄製來掛,就在會因為網路延遲的地方多等幾秒,一定要多幾秒,因為你掛網就是用你不能玩,或是想休息讓他自己玩的時間,所以跑多少算多少,不要為了多跑幾次而卡住,到頭來只有開螢幕浪費電而已。

有些人手機連錄製也會亂點
記得到設定裡面
螢幕測試點一次
下面圖像引擎優化
裡面兼容性打勾
這樣就可以了

要有效率掛網至少來學個基本腳本怎麼寫
第一最多用的就判別座標出現顏色就點,
比如說螢幕中間(如200,300)座標出現,灰色((確定)框框邊緣顏色之類的),就去點擊他。
首先你先用錄製腳本去找你要找顏色的點
然後再放到取色腳本


DESCRIPTION="颜色获取";

--实用屏幕参数
SCREEN_RESOLUTION="480X800";
SCREEN_COLOR_BITS=32;

x1=           108     ;     --座標1
y1=           199       ;

x2=        101     ;     --坐标2
y2=        132       ;

x3=        293       ;     --坐标3
y3=        824      ;

x4=        170       ;     --坐标4
y4=        812       ;

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()
m1= getColor(x1, y1);
m2= getColor(x2, y2);
m3= getColor(x3, y3);
m4= getColor(x4, y4);

log("坐标1:("..x1..","..y1..")HEX:"..string.format("0x%06x", m1).."
".."坐标2:("..x2..","..y2..")HEX:"..string.format("0x%06x",m2).."
".. "坐标3:("..x3..","..y3..")HEX:"..string.format("0x%06x", m3).."
".."坐标4:("..x4..","..y4..")HEX:"..string.format("0x%06x",m4) );

for i=1,3 do
notifyMessage("坐标1:("..x1..","..y1..")HEX:"..string.format("0x%06x", m1).."
".."坐标2:("..x2..","..y2..")HEX:"..string.format("0x%06x",m2).."
".. "坐标3:("..x3..","..y3..")HEX:"..string.format("0x%06x", m3).."
".."坐标4:("..x4..","..y4..")HEX:"..string.format("0x%06x",m4));
end
mSleep(3000);
end

你要找的顏色座標輸入到座標1~4都可以
這個腳本可以一次抓四個座標顏色
然後儲存
在到你要抓顏色的畫面播放
就會顯示出顏色代碼
如果來不及記下了可以到

mnt/sdcard/Touchelper/cooler.txt
這裡看
有了座標跟顏色代碼
就可以用
A等於(200,300)
如果A等於(剛剛抓的顏色代碼)
就點擊(你要點的地方)
A = getColor(200, 300)
  
if A == 剛剛抓的顏色代碼

then   
        
        mSleep(500);
        touchDown(你要點的地方);
        mSleep(100);
        touchUp(0);
        mSleep(15000);
end

大概這樣
也有進階一點就是
如果A出現剛剛抓的顏色
就點擊你要的地方1
如果沒有出現剛剛顏色
就點擊你要的地方2
腳本則變成
A = getColor(你要找顏色的座標)
--轉珠  
if A == 你要的顏色

then   
        
        mSleep(500);
        touchDown(你要點的地方座標1);
        mSleep(100);
        touchUp(0);
        mSleep(15000);
        else   
        mSleep(500);
        touchDown(你要點的地方座標2);
        mSleep(100);
        touchUp(0);
        mSleep(15000);
        end
注意如果腳本中多一個if
則結尾要多一個end
範例腳本
gg = getColor(357, 182)
  
if gg == 0x9c4d08

then   
        
        mSleep(500);
        touchDown(0,101,132);
        mSleep(100);
        touchUp(0);
        mSleep(15000);
end

再來就是找圖語法
找圖的話觸摸精靈基本上都要用.bmp的格式
才能抓的到
而且最好手機抓大圖的時候就直接用腳本抓bmp
附上腳本

DESCRIPTION="。";

-- 适用屏幕参数
SCREEN_RESOLUTION="720x1280";
SCREEN_COLOR_BITS=32;

-- 主入口
function main()
mSleep(3000);
    snapshotScreen(string.format("/mnt/sdcard/%s.bmp", os.time()));
end
執行後抓當前螢幕圖片bmp格式存至內建sdcard空間
然後再切割你要的地方下來
中間不要轉換過格式,比較不會出錯
然後腳本的部分
,,,
以下是區域模糊找圖
在區域左上(36、509)到區域右下(409、1778)中找圖片精準度80
x, y = findImageInRegionFuzzy("/mnt/sdcard/圖片名稱.bmp", 80, 36, 509, 409, 1778); -- 將找到的圖片的左上角坐標保存在x和y中,如果没找到,x和y的值為-1
if x ~= -1 and y ~= -1   --如果x.y 不等於負一(就是有找到的意思,因為有找到就會有座標了)

then   
        mSleep(700);
        touchDown(0, x+5, y+10);   -- 則點擊找到的x加5,y加10的地方(因為找到圖片是左上角,有時剛好是要點的邊緣,點了沒反應所以加往右下一點的地方)
        mSleep(100);
        touchUp(0);
        mSleep(500);
end



x, y = findImage("/mnt/sdcard/你要的圖片.bmp");全螢幕找圖
x, y = findImageFuzzy("/mnt/sdcard/你要的圖片.bmp", 80);全螢幕模糊找圖精準度80
x, y = findImageInRegion("/mnt/sdcard/你要的圖片.bmp", 左上x, 左上y, 右下x, 右下y);區域找圖
以上觸摸精靈裡面也有用法跟第一個範例差不多

施放buff方法
RPG類遊戲常常有需要施放buff

function addBuffer1() -- 循環檢測和補充buffer1
while true do -- 主循環
if getColor(100, 100) ~= 0x000000 then -- 如果没有buffer1
touchDown(0, 100, 100); -- 施放buffer1
touchUp(0);
end
mSleep(500);
coroutine.yield(); -- 回原本循環
end
end

function addBuffer2() -- 循環檢測和施放buffer2
while true do -- 主循環
if getColor(200, 200) ~= 0x000000 then -- 如果没有buffer2
touchDown(0, 200, 200); -- 施放buffer2
touchUp(0);
end
mSleep(500);
coroutine.yield(); -- 回原本循環
end
end
function main()
co1 = coroutine.create(addBuffer1);
co2 = coroutine.create(addBuffer2);
while true do
coroutine.resume(co1);
coroutine.resume(co2);
end
end
裡面座標色碼,在找色找圖腳本都有
套用上去而已

開啟或關閉app指令
appRun("要開啟的app");
appKill("要關閉的app");
括號中是要輸入app名稱
但不是中文名稱喔
我是用es檔案瀏覽器
然後到sdcard/android/data
然後找你要開啟app的那個資料夾
複製他的名稱
輸入到空格就可以了
不懂可以先提問
日後會陸續補充上來

補充內容 (2016-7-5 14:24):
有個區域抓圖示範影片
https://youtu.be/YC1JQ6XOYjk

補充內容 (2016-7-5 14:28):
找圖路徑
一般建議直接放內建SDCARD
路徑設 mnt/sdcard/檔案名稱.bmp
任何手機都通用
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 49碎鑽 +54 經驗 +13 幫助 +58 技術 +3 收起 理由
tab5252 + 1 + 1 非常讃
安心謊言 + 1 + 1 非常讃
jacs0921 + 1 + 1 非常讃
h0934000656 + 1 偶像,看完你的內容,讓我找到了活著的意義.
ChangMichael + 1 + 1 非常讃
~東~ + 1 + 1 非常讃
AA0113 + 1 + 1 非常讃
robinlins + 1 + 1 非常讃
calvin54088 + 1 + 1 非常讃
Ageng + 1 非常讃

查看全部評分

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

使用道具 舉報

沙發
opwolf | 收聽TA | 只看該作者
發表於 2015-9-24 10:12
非常用心的文章~完全考量使用者立場~

能有這樣的立場與想法 確實難得 大家也以此榜樣勉勵之


評分

參與人數 2碎鑽 +2 幫助 +2 收起 理由
非笑是 + 1 + 1 非常讃
dick52014 + 1 + 1 非常讃

查看全部評分

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

使用道具 舉報

板凳
boy810512 | 收聽TA | 只看該作者
發表於 2016-8-21 04:46
這段語法我放進去一直錯誤,請問有寫錯嗎?
log("坐标1:("..x1..","..y1..")HEX:"..string.format("0x%06x", m1).."
".."坐标2:("..x2..","..y2..")HEX:"..string.format("0x%06x",m2).."
".. "坐标3:("..x3..","..y3..")HEX:"..string.format("0x%06x", m3).."
".."坐标4:("..x4..","..y4..")HEX:"..string.format("0x%06x",m4) );

for i=1,3 do
notifyMessage("坐标1:("..x1..","..y1..")HEX:"..string.format("0x%06x", m1).."
".."坐标2:("..x2..","..y2..")HEX:"..string.format("0x%06x",m2).."
".. "坐标3:("..x3..","..y3..")HEX:"..string.format("0x%06x", m3).."
".."坐标4:("..x4..","..y4..")HEX:"..string.format("0x%06x",m4));
end
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
ChangMichael | 收聽TA | 只看該作者
發表於 2016-8-30 08:16
讚一個,貼代碼的時候可以利用快速工具列上面的<>把code放裡面會比較整齊,方便觀看。
  1. -- 主入口
  2. function main()
  3. mSleep(3000);
  4.     snapshotScreen(string.format("/mnt/sdcard/%s.bmp", os.time()));
  5. end
複製代碼
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
liuedd | 收聽TA | 只看該作者
發表於 2017-5-18 19:03
最近在研究寫腳本,很有幫助

評分

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

查看全部評分

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

使用道具 舉報

6
@@@@____ | 收聽TA | 只看該作者
發表於 2017-7-23 08:59
語法沒理解 也沒辦法看懂                                          
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

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

本版積分規則