綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

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

   關閉 [複製連結] 查看: 44503|回覆: 109|好評: 10
41
vip999 | 收聽TA | 只看該作者
發表於 2013-12-19 20:24
看到板大文章的的是有所領悟

但是我怎麼用  他都是顯示文法錯誤.....

-- ??膩
DESCRIPTION="??憭?;

-- ?撅??
SCREEN_RESOLUTION="800x480";
SCREEN_COLOR_BITS=4;

-- 銝餃??
function main()
        a = getColor(380, 15);
        if a == 0x5a3908 then
        touchDown(0, 744, 103);
        touchUp(0);
        mSleep(30000);
        elseif a ~= 0x5a3908 then
        touchDown(0, 400, 100);
        touchUp(0);
        mSleep(100);
        touchDown(0, 400, 100);
        touchUp(0);
        mSleep(100);
        touchDown(0, 400, 100);
        touchUp(0);
        mSleep(8000);
end
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

42
qooqoox99 | 收聽TA | 只看該作者
發表於 2013-12-19 21:44
感謝分享呀~我一直為了找色一直搞不定也~下戴了大大取色就馬上ok了~可以寫一些基本腳本了~感謝也
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

43
t300020 | 收聽TA | 只看該作者
發表於 2014-1-12 17:07
大大請問一下,我使用取色腳本來取色
但是同一個座標我看有不只一組色碼(好像會有三~四組),
這是啥問題?手機問題嗎?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

44
 樓主| 有本書 | 收聽TA | 只看該作者
發表於 2014-1-12 21:04
t300020 發表於 2014-1-12 17:07
大大請問一下,我使用取色腳本來取色
但是同一個座標我看有不只一組色碼(好像會有三~四組),
這是啥問題?手機 ...

一次可取4組座標的色碼
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

45
zawa0615 | 收聽TA | 只看該作者
發表於 2014-1-14 12:21
我本身大概會一點按鍵精靈的編寫 也有IF END IF迴圈的概念
但對於LUA很苦手 有兩個編寫的問題想請教大大

1. 是否有 標記/副程式  跳至標記/調用副程式 這類的編碼呢?
例如VBS的 REM 跟GOTO
因為在IF 跟 ELSE下 能選擇跳去哪 或調用什麼 可以更靈活 不只是讓程式往下跑

2. LUA看似 在迴圈裡 加入定時施放 (例如BUFF) 是比較容易的樣子]
依照您上面所交

如果我要在一個打怪無限循環迴圈裡 加入定時 是否只要把Y1 Y2的變量加進去
然後 if y2-y1>=5*60 then 怎樣怎樣

標記 打怪模式
如果 血低於 則 補血
如果 魔低於 則 等魔 跳至等魔標記
按下攻擊鍵
跳回 打怪模式

若是我想要優先插入 每五分鐘施放buff a 如下這樣寫的概念可以嗎?

標記 打怪模式

function main()
y1=os.time()
while true do
y2=os.time()
mSleep(4000);
if y2-y1>=5*60 then
施放 buff a
y1=os.time()  <===這行的用意是?
否則
繼續讓程式往下跑

如果 血低於 則 補血
如果 魔低於 則 等魔 跳至等魔標記
按下攻擊鍵
跳回 打怪模式

小弟很有心想要學習LUA的一些差別 我的line ID是 zawa0615
請望能請大大指教 非常感謝
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

46
 樓主| 有本書 | 收聽TA | 只看該作者
發表於 2014-1-14 15:05
本帖最後由 有本書 於 2014-1-14 17:38 編輯
zawa0615 發表於 2014-1-14 12:21
我本身大概會一點按鍵精靈的編寫 也有IF END IF迴圈的概念
但對於LUA很苦手 有兩個編寫的問題想請教大大


所學不多...
::apk:: -相當與標記    goto apk -相當於跳轉標記

function apk() -相當於副程式    apk() -相當於調用副程式
-在此加入動作
end -副程式end

具體功用應該不必多做解釋?

至於時間函數嗎...我也是從網路上複製來的!
公用基本上就像文中所的~

function main() --function ? main() --此為主入口
y1=os.time() --意旨不明
while true do --死循環
y2=os.time() --意旨不明
mSleep(4000);
if y2-y1>=5*60 then
y1=os.time() --意旨不明

其具體功效還有代碼的用意,基本上我不會刻意去研究就是了!

LUA函數我也沒刻意去學,只是很單純的將自己有用到的東西帶來版上做教學!

如果還有什麼不懂的,可以私訊我~我可以給你LINE不彷一起討論與研究!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

47
zawa0615 | 收聽TA | 只看該作者
發表於 2014-1-15 00:27
沒想到這麼久前的文章 竟然大大您還會看到 真是感恩~
非常感謝您提供的指令 有空我來試試

不過我目前改用了判斷式 抓BUFF顏色的 給您參考好了 目前我覺得這比較好用
總覺得再無限循環裡面插入定時 怪怪的 (可能是我還不夠了解 所以一直弄不好)
我在 if y2-y1>=5*60 then 之後
加入了第二次的變量 y1=os.time() <==這應該是重至OS時間
總是會有問題 我不會用LUA表達出 我想要的方式
因為後面的循環是跳來跳出 但沒有出口的

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 addBuffer3()                                       -- 循环检测和补充buffer3
    while true do                                                 -- 主循环
        if getColor(300, 300) ~= 0x000000 then  -- 如果没有buffer3
            touchDown(0, 300, 300);                       -- 释放buffer3
            touchUp(0);
        end
        mSleep(500);
        coroutine.yield();                                       -- 主动挂起自己
    end
end

function addBuffer4()                                       -- 循环检测和补充buffer4
    while true do                                                 -- 主循环
        if getColor(400, 400) ~= 0x000000 then  -- 如果没有buffer4
            touchDown(0, 400, 400);                       -- 释放buffer4
            touchUp(0);
        end
        mSleep(500);
        coroutine.yield();                                        -- 主动挂起自己
    end     
end

function addBuffer5()                                        -- 循环检测和补充buffer5
    while true do                                                  -- 主循环
         if getColor(500, 500) ~= 0x000000 then  -- 如果没有buffer5
            touchDown(0, 500, 500);                        -- 释放buffer5
            touchUp(0);
        end
        mSleep(500);
        coroutine.yield();                                        -- 主动挂起自己
    end
end

function kill()                                                     -- 循环打怪一直到怪物死亡
    while true do
        if getColor(600, 600) ~= 0x000000 then  -- 如果怪物没死
           touchDown(0, 1000, 1000);                    -- 释放一次技能
           touchUp(0);
        end
        mSleep(500);
        coroutine.yield();                                       -- 主动挂起自己
    end
end

function main()
    co1 = coroutine.create(addBuffer1);
    co2 = coroutine.create(addBuffer2);
    co3 = coroutine.create(addBuffer3);
    co4 = coroutine.create(addBuffer4);
    co5 = coroutine.create(addBuffer5);
    co6 = coroutine.create(kill);

    while true do
        coroutine.resume(co1);
        coroutine.resume(co2);
        coroutine.resume(co3);
        coroutine.resume(co4);
        coroutine.resume(co5);
        coroutine.resume(co6);
    end
end

coroutine 頗好用.....又簡單
定時 還是弄不好><

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

使用道具 舉報

48
zawa0615 | 收聽TA | 只看該作者
發表於 2014-1-15 01:27
還是不死心想利用標寄來讓判斷更靈活的穿插

再跟有本書大大請教 您剛說的
::apk:: -相當與標記    goto apk -相當於跳轉標記

假如 我有 REM1 跟REM2
具體上該怎麼用 ::apk:: 來表達呢? 1,2 是該寫在哪 而GOTO APK 也是。

大概的邏輯如下
REM 打怪
如果        HP        低於多少                則        補血         GOTO 打怪
                (如果沒低於)        則        ↓               
                                               
如果        MP        低於多少                則        進入等魔        GOTO 等魔
                (如果沒低於)        則        ↓               

攻擊熱鍵
GOTO 打怪

REM 等魔
如果        HP        低於多少                則        補血        GOTO 等魔
                (如果沒低於)                ↓               
                                               
如果        MP        高於多少                則                GOTO 打怪
                (沒高於)                則                GOTO 等魔

以上是說 沒血補血 然後打怪 , 如果沒有魔 就等魔 (但被怪打的話還是會補血)
魔到一定程度了 再回到打怪模式
(多一個等魔模式,用意是讓他回滿在動作比較有效率,不會滿足了最低魔量就動作,然後又馬上要停)

不知這樣的思維是否有需要修改的地方,是否有更好的詮釋方式呢?
再一次非常感謝。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

49
 樓主| 有本書 | 收聽TA | 只看該作者
發表於 2014-1-15 08:48
本帖最後由 有本書 於 2014-1-15 08:58 編輯
zawa0615 發表於 2014-1-15 01:27
還是不死心想利用標寄來讓判斷更靈活的穿插

再跟有本書大大請教 您剛說的


活用範例如下

function appa() --這段代碼中的appa()代表副程式的名稱
--這裡面放你想執行的動作
end --結束副程式

function main() --主入口(這段是基本代碼BJ4)
::apk:: --這段代碼中的apk是標記名稱(這段代碼等同標記)
--這裡放你要執行的動作(此段我當顏色獲取的動作)
--這裡放你要執行的動作(此段我當如果句)
appa() --當判斷成立後調用appa副程式
--(這裡當否則else)
goto kpa --跳轉到kpa標記點
end --(這end是如果句的end,如果上面判斷成立後沒其他動作就結束)
::kpa:: --這段代碼中的kpa是標記名稱(這段代碼等同標記)
--這裡放你要執行的動作(此段當顏色獲取)
--這裡放你要執行的動作(這裡我當如果句)
--這裡放判斷成立後的動作
--(這裡當否則else)
goto apk --跳轉到apk標記點
end --(如果句的end)
end --(主入口的end)

思路就是   
儲存某點到變量,如果變量成立就調用副程式!
如果不成立就跳轉到標記點,儲存某點到變量!
如果變量成立後就執行某些動作,如果判斷不成立就跳轉標記!

希望有幫到您:)

我看你剛剛的回復,說真的我學的可能比你少...所沒辦法幫你解釋到什麼!
上面的範例我只是活用了副程式的調用與標記的使用!至於你要怎麼放,就要看你的發揮了!

時間函數如果你想用就參考一下教學文吧!如果看不太懂我在弄個範例給你:)
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

50
ChangMichael | 收聽TA | 只看該作者
發表於 2014-1-15 14:12
本帖最後由 ChangMichael 於 2014-1-15 14:19 編輯

亂入下~
y1=os.time() --把該時間儲存至Y1 如 18:00
y2=os.time() --把該時間儲存至Y2 如 18:05  

if y2-y1>=5*60 then...

這邊是時間的判斷
Y2時間-Y1時間 大於等於(超過) 300 就 do
這樣的意思
=================
zawa0615 您的需求
我覺得用while同時跑就行了

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

使用道具 舉報

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

本版積分規則