引言 最近小哈開放了路亞模式的同人陣,換句話來說,我們現在可以用路亞來製作同人陣了這可以帶來很多好處: 1.運算可以快一點點(但系統不能長期連續運算路亞,你要隔一段時間讓它運算同人陣和光暈系統) 2.可以用lua的函式庫(這就不需要用我們提供的VAR函式庫) 3.省容量(路亞好像沒有容量限制) 4.用真正的程式路言寫同人 當然,也有限制: 1.其中一名玩家不能手動遊玩,希望假醬的建議被通過 2.路亞程式跟同人程式的溝通只能靠人物說話或人物血量,API欠奉(API要自己寫哦,期待小哈加強同人陣和LUA的溝通) 本中心的路亞同人陣: 路亞闖關BETA:270136 路亞闖關2:270532 基本步驟 1.同人作者要求其中一名玩家用路亞模式來闖關 2.該玩家要用作者提供的程式碼作為他的路亞程式 3.最基本的路亞同人陣就可以玩了 給個例子吧,用下面這條路亞便能0容量玩猜數字了,讚吧 require "sys.game"game.logState("player id = ", me.info.id )--state nil : game init , state 0 : start game, state 1 : enter number, compare and print, state 2 : bingo back to state 1if state == nil then state = 0elseif state == 0 then math.randomseed(os.time()) math.random(); math.random(); math.random() a = 0 b = 100 ans = math.random(a,b) game.log("answer : ".. ans) state = 1elseif state == 1 then me.triggerKeyboard("Enter") for i,e in ipairs(game.events) do if e.type == "talk" then x = tonumber(string.match(e.text,"%d+")) game.log("ans, a, b, x".. ans .. a .. b .. x) if x > ans and x < b then b = x elseif x < ans and x > a then a = x elseif x == ans then state = 2 end end end me.talk("between "..a.." and "..b)elseif state ==2 then me.talk("bingo") state = 3 timedelay = game.now + 1000endif timedelay and state == 3 then if timedelay < game.now then state = 0 end end 不過,這條路亞在路亞修行仍能玩,還未能展現出用路亞寫同人的關鍵技術(玩的時間不多QAQ) 晚些再補充路亞可以怎樣跟同人陣溝通(目前只有人物說話比較易用,其他的不方便用),去真正實現路亞同人陣的真正威力 進階 - LUA同人溝通方法 LUA至同人: me.talk(command) 同人陣中需用「檢查玩家說話內容」的方式,自製API接收來自LUA的指令,並進行動作 同人至LUA: (LUA偵測不到同人AI在說話,不能用人物說話的方式來傳,不知小哈會不會改) 1.設定人物血量(註意:只能傳1至9999的數字) 2.人物名字(註意:名字是靜態資料,你只能讀到人物生成時所用的人物名字,後面無論怎改LUA也讀不了 --下面程式碼示範如何讀取,從同人陣以人物血量的方式傳來的變數資料--用無陣營人物傳資料吧,無陣營都是朋友,取得的朋友列表存至friendsfriends = game.findVisibleFriends()--逐一檢視朋友列表中的朋友,存至friend中for _,friend in pairs(friends) do --如果朋友的id是level,他的生命值資訊存至變數level if friend.info.id == "level" then level = friend.hp --如果朋友的id是input1,他的生命值資訊存至變數a elseif friend.info.id == "input1" then a = friend.hp --如果朋友的id是input2,他的生命值資訊存至變數b elseif friend.info.id == "input2" then b = friend.hp endend 如果大家有更好的方法,歡迎提出~ |
同人小技巧 >