mush lua 钓鱼机器人完全注释版
zgbl这个bl等一直让我写个什么mush的简洁教程。。。。说实话这太难了,用几句话教会人编程。。。。偶55555555下面我把我写的钓鱼机器人作了很详细的注释,想学mush的人可以仔细研究下各条语句的用法。看得多了,自然也理解多了。
不理解的,可以直接问我-------------------钓鱼机器人 start--------------------------
require "wait"
require "tprint"
function diaoyu_start()
wait.make (function ()--- coroutine below here
wait.regexp ("这里是城市的正中心,一个很宽阔的广场,铺着青石地面。一些游手好闲") -- 设置一个等待事件,只有在出现括号中的语句时,这行之后 end of coroutine 之前 代码才会被执行
wait.time (1) -- 等待1秒
Note( '回到ct了' ) -- 提示到达目的地
diaoyu_cttomatou() -- 从ct走道岸边
end)-- end of coroutine
diaoyu_maiyuer() -- 去买鱼饵
end
function diaoyu_maiyuer()
wait.make (function ()--- coroutine below here
wait.regexp ("你一走进杂货铺,老板就笑眯眯的跟你打招呼。这里卖一些杂七杂八的东西")-- 设置一个等待事件,只有在出现括号中的语句时,这行之后 end of coroutine 之前 代码才会被执行
wait.time (1) -- 等待1秒
Note( '到杂货铺了' ) -- 提示到达目的地
-- 以下是购买钓鱼物品
Send( 'buy yugou' )
wait.time (2)
Send( 'buy yuer 95;' )
wait.time (2)
Send( 'buy yuer 100;' )
wait.time (2)
Send( 'buy yuer 100;' )
--wait.time (2)
wait.time (2)
diaoyu_suzhoub()-- 从杂货铺返回ct
end)-- end of coroutine
diaoyu_suzhou()-- 从ct到杂货铺去
end
function diaoyu_cttomatou()--从ct到岸边
create_trigger( 'diaoyu_to_matou', "面前是一条波涛翻滚的大江\\(river\\)。浊流滚滚,万舟竞", "", "diaoyu_diaoyu" ) --设置一个一次性触发器,当到达岸边时触发并执行diaoyu_diaoyu
Send( "do 9 n" )--到岸边去
wait.make (function ()--- coroutine below here
wait.time (3)
Send( 'l' ) --到达岸边后look一次
end)-- end of coroutine
end
function diaoyu_diaoyu()--开始钓鱼
Note( "开始钓鱼" ) -- 提示
local jingshen = tonumber( GetVariable ("jingshen") ) -- 提取现在精神值
local jingyan = tonumber( GetVariable ("jingyan") ) -- 提取现在经验值
if jingyan >= 50000 then --当经验大于5w,停止钓鱼并提醒
utils.msgbox ( "别钓拉,再钓也没有经验了" .. jingyan, "恭喜你" )
return false
end
if jingshen < 20 then --如果精神值小于20,跳到发呆函数
diaoyu_fadai()
return false
end
create_trigger( 'diaoyu_to_matou_ok', "你一提杆,钓到了一条(.*),恭喜,恭喜。 ", "", "diaoyu_diaoyu_ok" ) --设置一个一次性触发器,当钓到鱼的时候执行diaoyu_diaoyu_ok函数
create_trigger( 'diaoyu_to_matou_no', "你猛地一拉鱼线,感到手上一沉", "", "diaoyu_diaoyu_end" ) --设置一个一次性触发器,当钓鱼完毕时执行diaoyu_diaoyu_end函数
create_trigger( 'diaoyu_to_no_jingshen', "你太累了,歇会再钓吧!", "", "diaoyu_fadai" )--设置一个一次性触发器,当"你太累了,歇会再钓吧!"时执行diaoyu_fadai函数去发呆
Note( "定时器返回:" )
Note(create_timer( 'diaoyu_to_matou_timeout', 50, '', 'diaoyu_to_matou_timeout' ) )--设置一个一次性定时器,如果50秒没有钓鱼成功,执行 diaoyu_to_matou_timeout 钓鱼超时函数
wait.make (function ()--- coroutine below here
wait.time (1)
Send( "gua yuer" ) --
wait.time (1)
Send( "diao yu" ) --钓鱼
end)-- end of coroutine
end
function diaoyu_to_matou_timeout() --超时后重新开始钓鱼
Note( "超时了重来" )
diaoyu_diaoyu() --重新开始钓鱼
end
function diaoyu_diaoyu_ok (name, line, wildcards) --成功钓到鱼
Note( "成功钓到鱼" )
Send( 'drop fish' ) --丢掉鱼
end
function diaoyu_diaoyu_end (name, line, wildcards) --钓鱼完毕
Send( 'hp' )
DeleteTimer( 'diaoyu_to_matou_timeout' ) --删除钓鱼超时触发器
wait.make (function ()--- coroutine below here
wait.time (1)
diaoyu_diaoyu() --重新开始钓鱼
end)-- end of coroutine
end
function diaoyu_report( yu ) --恶搞
local jingshen = GetVariable ("jingshen" )
local jingyan = GetVariable ("jingyan" )
local str = ""
--if yu == "" then
-- str = str .. "活鱼什么也没有掉到" .. ","
--else
-- str = str .. "活鱼钓到了一条" .. yu .. ","
--end
str = str .. "钓鱼钓的累死了,搞的我精神(" .. jingshen .. ")低落,经验高涨(" .. jingyan .. ") 待我去发呆室享受一次福利先"
Send( "chat " .. str )
end
function diaoyu_fadai() --发呆函数
diaoyu_report( "" )
create_trigger( 'diaoyu_fadai', "你发呆了一会儿", "", "diaoyu_fadaied" )--设置一个一次性触发器,当发呆完毕后执行diaoyu_fadaied函数去发呆
wait.make (function ()--- coroutine below here
wait.time (1)
Send( 'do 9 s' )
wait.time (1)
Send( 'd' )
Send( 'out' )
wait.time (2)
Send( 'fadai' )
end)-- end of coroutine
end
function diaoyu_fadaied()--发呆完毕
wait.make (function ()--- coroutine below here
Send( 'hp' )
wait.time (1)
Send( 'do 10 drink' )
wait.time (1)
Send( 'do 10 eat ganliang' )
wait.time (1)
Send( 'enter' )
Send( 'u' )
wait.time (1)
diaoyu_cttomatou() --执行从ct到岸边的函数重新开始钓鱼
end)-- end of coroutine
end
function diaoyu_suzhou() -- 从ct到杂货铺
Execute( "e;e;e;e;e;e;se;s;e;n;n;n;n;n;nw;w;s" )
wait.make (function ()--- coroutine below here
wait.time (3)
Send( 'l' )
end)-- end of coroutine
end
function diaoyu_suzhoub() -- 从杂货铺到ct
Execute( "n;e;se;s;s;s;s;s;w;n;nw;w;w;w;w;w;w;l" )
wait.make (function ()--- coroutine below here
wait.time (3)
Send( 'l' )
end)-- end of coroutine
end
-------------------钓鱼机器人 end--------------------------
-- 创建一个临时的一次性触发器
-- AddTrigger的api见 http://mc.chinaido.com/help.php?function=AddTrigger
function create_trigger( t_name, t_match, t_response, t_function )
return AddTrigger(
t_name,
t_match,
t_response,
trigger_flag.Enabled + trigger_flag.RegularExpression + trigger_flag.Replace + trigger_flag.Temporary + trigger_flag.OneShot,
-1,
0,
"",
t_function
)
end
-- 创建一个临时的一次性定时器
-- AddTimer的api见 http://mc.chinaido.com/help.php?function=AddTimer
function create_timer( t_name, t_time, t_com, t_function )
return AddTimer (
t_name,
0,
0,
t_time,
t_com,
timer_flag.Enabled + timer_flag.OneShot + timer_flag.TimerSpeedWalk + timer_flag.Replace + timer_flag.Temporary,
t_function
)
end
[ 本帖最后由 huoyu 于 2008-9-4 01:20 PM 编辑 ] 看不懂,但是顶一个 哇靠,顶一下 你先把命令先列一下,然后再举例子就好了 看不懂,但是照样顶
不要写导入代码,这个东西太复杂,462的导入代码我都还看不懂……
你写mush里边手动的编机器人,就简单多了,把功能、命令一个个列出来并且说明+举例
另外:活鱼!!!!!!你胆敢叫我bl!!!!!!yct33yct26y
[ 本帖最后由 zgbl 于 2008-9-4 11:57 PM 编辑 ] bl总比玻璃好听吧
http://mc.chinaido.com/help.php?cat=49
这个页面有所有命令的详细解释,真的是非常非常的详细 好漂亮的程序,多谢。
提醒大家一定要把 function create_trigger和 creat_timer一起copy进script中,我就是没贴进去捉摸了好久才发现问题。
结果自己用addtrigger oneshot 改好了才发现,活鱼把这两函数附在最后了。。。
http://www.gammon.com.au/scripts/function.php?name=AddTimer
http://www.gammon.com.au/scripts/function.php?name=AddTrigger
是主页上的函数描述,比较清楚
请教一下。既然diaoyu_diaoyu设的timer是一次性的,为什么diaoyu_end里还要deletetimer呢?
[ 本帖最后由 coka 于 2008-10-4 01:15 AM 编辑 ] timerout_timer是为了防止你超时钓不到鱼,超时会重新开始
diaoyu_end是说你钓到鱼了,并且也自己重新开始
若不删掉,到时候timeout了,即使你已经重新开始钓鱼了,也会再次重新开始的,这时候可能就乱了 顶楼上的 先得顶一下,再好好看
页:
[1]
2