同人小技巧‎ > ‎

路亞同人陣

張貼者:2017年2月2日 晚上9:47人FK   [ Ka Kit Lau 已於 2017年5月6日 凌晨12:03 更新]
引言
最近小哈開放了路亞模式的同人陣,換句話來說,我們現在可以用路亞來製作同人陣了

這可以帶來很多好處:
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同人溝通方法
進階範例: TWF檔 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
如果大家有更好的方法,歡迎提出~