找回密码
 注册
搜索
查看: 563|回复: 6

[灌水]goto必须call back? no, await go

[复制链接]
门派:桃花岛
发表于 2020-2-19 19:30:28 | 显示全部楼层 |阅读模式
go 是一个非常好用的方程,而且也是脚本基础。
写起来简单又好用。给一个callback 函数让go执行完回调,然后再给目标地点信息即可

我这里介绍一个毫无用途的小技巧,如何把go写个await 版本。

  1. function await_go(area, room, sId)
  2.     local self = coroutine.running()
  3.     local async_continue = function(...)      
  4.         print("async resume")
  5.         coroutine.resume(self, ...)
  6.     end
  7.     go(async_continue,area,room,sId)
  8.     print("async yield")
  9.     return coroutine.yield()
  10. end
复制代码


使用例子
  1. function huashan_start()
  2.     map.rooms["village/zhongxin"].ways["northwest"] = "village/caidi"
  3.     map.rooms["village/zhongxin"].ways["northeast"] = "village/caidi"
  4.     DeleteTriggerGroup("all_fight")
  5.     DeleteTriggerGroup("huashan_fight")
  6.     DeleteTriggerGroup("huashan_cut")
  7.     DeleteTriggerGroup("huashan_yls")
  8.     DeleteTriggerGroup("huashan_yls_ask")
  9.     DeleteTriggerGroup("huashan_over")
  10.     DeleteTriggerGroup("huashan_find")
  11.     flag.idle = nil

  12.     wait.make(function()
  13.         await_go('华山', '正气堂')
  14.         return hsaskjob()
  15.     end)
  16.     -- return go(hsaskjob, '华山', '正气堂')
  17. end
复制代码


没啥太大用处,但是挺好玩的,希望大家喜欢

评分

1

查看全部评分

门派:桃花岛
发表于 2020-2-19 19:43:42 | 显示全部楼层
支持。。 高级技巧。。
门派:峨嵋派
发表于 2020-2-19 20:04:52 | 显示全部楼层
感谢分享 虽然我看不懂
门派:桃花岛
发表于 2020-2-22 09:41:09 | 显示全部楼层
好像 mush 里不能用 goto  这个lua 函数。。
门派:天龙寺
发表于 2020-2-22 22:19:15 | 显示全部楼层
挺不错的 ,学习一下         
门派:天龙寺
发表于 2020-2-26 10:18:33 | 显示全部楼层
不明觉历啊             有扫盲贴吗?
门派:少林派
发表于 2020-2-26 17:02:19 | 显示全部楼层
好帖子,必须顶一下,别掉下去了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-8-14 08:24 , Processed in 0.025990 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表