添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
zgbl这个bl等一直让我写个什么mush的简洁教程。。。。说实话这太难了,用几句话教会人编程。。。。偶55555555
下面我把我写的钓鱼机器人作了很详细的注释,想学mush的人可以仔细研究下各条语句的用法。看得多了,自然也理解多了。
不理解的,可以直接问我
  1. -------------------钓鱼机器人 start--------------------------
  2. require "wait"
  3. require "tprint"
  4. function diaoyu_start()
  5. wait.make (function ()  --- coroutine below here
  6. wait.regexp ("这里是城市的正中心,一个很宽阔的广场,铺着青石地面。一些游手好闲") -- 设置一个等待事件,只有在出现括号中的语句时,这行之后 end of coroutine 之前 代码才会被执行
  7. wait.time (1) -- 等待1秒
  8. Note( '回到ct了' ) -- 提示到达目的地
  9. diaoyu_cttomatou() -- 从ct走道岸边
  10. end)  -- end of coroutine
  11. diaoyu_maiyuer() -- 去买鱼饵
  12. end

  13. function diaoyu_maiyuer()
  14. wait.make (function ()  --- coroutine below here
  15. wait.regexp ("你一走进杂货铺,老板就笑眯眯的跟你打招呼。这里卖一些杂七杂八的东西")-- 设置一个等待事件,只有在出现括号中的语句时,这行之后 end of coroutine 之前 代码才会被执行
  16. wait.time (1) -- 等待1秒
  17. Note( '到杂货铺了' ) -- 提示到达目的地
  18. -- 以下是购买钓鱼物品
  19. Send( 'buy yugou' )
  20. wait.time (2)
  21. Send( 'buy yuer 95;' )
  22. wait.time (2)
  23. Send( 'buy yuer 100;' )
  24. wait.time (2)
  25. Send( 'buy yuer 100;' )
  26. --wait.time (2)
  27. wait.time (2)
  28. diaoyu_suzhoub()-- 从杂货铺返回ct
  29. end)  -- end of coroutine
  30. diaoyu_suzhou()-- 从ct到杂货铺去
  31. end

  32. function diaoyu_cttomatou()--从ct到岸边
  33. create_trigger( 'diaoyu_to_matou', "面前是一条波涛翻滚的大江\\(river\\)。浊流滚滚,万舟竞", "", "diaoyu_diaoyu" ) --设置一个一次性触发器,当到达岸边时触发并执行diaoyu_diaoyu
  34. Send( "do 9 n" )--到岸边去
  35. wait.make (function ()  --- coroutine below here
  36. wait.time (3)
  37. Send( 'l' ) --到达岸边后look一次
  38. end)  -- end of coroutine
  39. end

  40. function diaoyu_diaoyu()--开始钓鱼
  41. Note( "开始钓鱼" ) -- 提示
  42. local jingshen = tonumber( GetVariable ("jingshen") ) -- 提取现在精神值
  43. local jingyan = tonumber( GetVariable ("jingyan") ) -- 提取现在经验值
  44. if jingyan >= 50000 then --当经验大于5w,停止钓鱼并提醒
  45. utils.msgbox ( "别钓拉,再钓也没有经验了" .. jingyan, "恭喜你" )
  46. return false
  47. end
  48. if jingshen < 20 then --如果精神值小于20,跳到发呆函数
  49. diaoyu_fadai()
  50. return false
  51. end

  52. create_trigger( 'diaoyu_to_matou_ok', "你一提杆,钓到了一条(.*),恭喜,恭喜。 ", "", "diaoyu_diaoyu_ok" ) --设置一个一次性触发器,当钓到鱼的时候执行diaoyu_diaoyu_ok函数
  53. create_trigger( 'diaoyu_to_matou_no', "你猛地一拉鱼线,感到手上一沉", "", "diaoyu_diaoyu_end" ) --设置一个一次性触发器,当钓鱼完毕时执行diaoyu_diaoyu_end函数
  54. create_trigger( 'diaoyu_to_no_jingshen', "你太累了,歇会再钓吧!", "", "diaoyu_fadai" )--设置一个一次性触发器,当"你太累了,歇会再钓吧!"时执行diaoyu_fadai函数去发呆
  55. Note( "定时器返回:" )
  56. Note(create_timer( 'diaoyu_to_matou_timeout', 50, '', 'diaoyu_to_matou_timeout' ) )--设置一个一次性定时器,如果50秒没有钓鱼成功,执行 diaoyu_to_matou_timeout 钓鱼超时函数

  57. wait.make (function ()  --- coroutine below here
  58. wait.time (1)
  59. Send( "gua yuer" ) --
  60. wait.time (1)
  61. Send( "diao yu" ) --钓鱼

  62. end)  -- end of coroutine
  63. end

  64. function diaoyu_to_matou_timeout() --超时后重新开始钓鱼
  65. Note( "超时了重来" )
  66. diaoyu_diaoyu() --重新开始钓鱼
  67. end

  68. function diaoyu_diaoyu_ok (name, line, wildcards) --成功钓到鱼
  69. Note( "成功钓到鱼" )
  70. Send( 'drop fish' ) --丢掉鱼
  71. end

  72. function diaoyu_diaoyu_end (name, line, wildcards) --钓鱼完毕
  73. Send( 'hp' )
  74. DeleteTimer( 'diaoyu_to_matou_timeout' ) --删除钓鱼超时触发器
  75. wait.make (function ()  --- coroutine below here
  76. wait.time (1)
  77. diaoyu_diaoyu() --重新开始钓鱼
  78. end)  -- end of coroutine
  79. end

  80. function diaoyu_report( yu ) --恶搞
  81. local jingshen = GetVariable ("jingshen" )
  82. local jingyan = GetVariable ("jingyan" )
  83. local str = ""
  84. --if yu == "" then
  85. --        str = str .. "活鱼什么也没有掉到" .. ","
  86. --else
  87. --        str = str .. "活鱼钓到了一条" .. yu .. ","
  88. --end
  89. str = str .. "钓鱼钓的累死了,搞的我精神(" .. jingshen .. ")低落,经验高涨(" .. jingyan .. ") 待我去发呆室享受一次福利先"
  90. Send( "chat " .. str )
  91. end

  92. function diaoyu_fadai() --发呆函数
  93. diaoyu_report( "" )
  94. create_trigger( 'diaoyu_fadai', "你发呆了一会儿", "", "diaoyu_fadaied" )--设置一个一次性触发器,当发呆完毕后执行diaoyu_fadaied函数去发呆
  95. wait.make (function ()  --- coroutine below here
  96. wait.time (1)
  97. Send( 'do 9 s' )
  98. wait.time (1)
  99. Send( 'd' )
  100. Send( 'out' )
  101. wait.time (2)
  102. Send( 'fadai' )
  103. end)  -- end of coroutine
  104. end

  105. function diaoyu_fadaied()  --发呆完毕
  106. wait.make (function ()  --- coroutine below here
  107. Send( 'hp' )
  108. wait.time (1)
  109. Send( 'do 10 drink' )
  110. wait.time (1)
  111. Send( 'do 10 eat ganliang' )
  112. wait.time (1)
  113. Send( 'enter' )
  114. Send( 'u' )
  115. wait.time (1)
  116. diaoyu_cttomatou() --执行从ct到岸边的函数重新开始钓鱼
  117. end)  -- end of coroutine
  118. end

  119. function diaoyu_suzhou() -- 从ct到杂货铺
  120. Execute( "e;e;e;e;e;e;se;s;e;n;n;n;n;n;nw;w;s" )
  121. wait.make (function ()  --- coroutine below here
  122. wait.time (3)
  123. Send( 'l' )
  124. end)  -- end of coroutine
  125. end

  126. function diaoyu_suzhoub() -- 从杂货铺到ct
  127. Execute( "n;e;se;s;s;s;s;s;w;n;nw;w;w;w;w;w;w;l" )
  128. wait.make (function ()  --- coroutine below here
  129. wait.time (3)
  130. Send( 'l' )
  131. end)  -- end of coroutine
  132. end

  133. -------------------钓鱼机器人 end--------------------------

  134. -- 创建一个临时的一次性触发器
  135. -- AddTrigger的api见 http://mc.chinaido.com/help.php?function=AddTrigger
  136. function create_trigger( t_name, t_match, t_response, t_function )
  137. return AddTrigger(
  138. t_name,
  139. t_match,
  140. t_response,
  141. trigger_flag.Enabled + trigger_flag.RegularExpression + trigger_flag.Replace + trigger_flag.Temporary + trigger_flag.OneShot,
  142. -1,
  143. 0,
  144. "",
  145. t_function
  146. )
  147. end
  148. -- 创建一个临时的一次性定时器
  149. -- AddTimer的api见 http://mc.chinaido.com/help.php?function=AddTimer
  150. function create_timer( t_name, t_time, t_com, t_function )
  151. return AddTimer (
  152. t_name,
  153. 0,
  154. 0,
  155. t_time,
  156. t_com,
  157. timer_flag.Enabled        + timer_flag.OneShot + timer_flag.TimerSpeedWalk + timer_flag.Replace        + timer_flag.Temporary,
  158. t_function
  159. )
  160. end
复制代码

[ 本帖最后由 huoyu 于 2008-9-4 01:20 PM 编辑 ] 好漂亮的程序,多谢。
提醒大家一定要把 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 编辑 ]