摘要:我在去年写过Stefan Reich,晃眼一年就过去了,哎,这人也是个天涯沦落人,一年前的那段也许事出有因。http://luaos.net/pages/cant-do-it-anymore.php
阅读全文
摘要:发现用coroutine处理登陆,交易等异步流程的问题非常简单清晰。同比c++的代码不需要state这个东西。直接上登陆的代码:function co_client_login(User) send_msg_to_loginserver() msg = wait_msg_login(User,{msg_loginserver_logined}) if (not msg.ok) then return end while(true) do msg = wait_msg_login(User,{msg_create_char,msg_del...
阅读全文
摘要:Lua-L最近发生了点趣事与大家分享下。Stefan是一个想把lua引向mobile的人,他发帖《1》Let's make Lua mobile!-- Persistence: Uses Pluto.-- Safety: -- Untrusted non-frozen scripts should be fine (b/c of sandboxing). -- Untrusted frozen scripts should not be run. -- (No protection against bad bytecode or malformed Pluto images)其中提到了
阅读全文
摘要:近来用lua开发了近两个月,深感'工欲善其事必先利其器',人家可以在vim上用tab补全,而我在vs2010没有智能感知,经常出笔误。vsLua已经1年多没有动静了,所以上周末自己拿来改了2天,又是第一个c#的project,磕磕碰碰不少,不过终于可以发布了。git host:git@github.com:yujiang/vsLua.gitThe origin of vsLua athttp://vslua.codeplex.com/I just do few work to make it run under vs2010, include:1. update the iro
阅读全文
摘要:之前使用lua一般用在c/c++程序的扩展,最近写了2个月的纯lua。有一些心得:1. lua非常灵活,function也是第一值(first class),所以不要硬套OO,虽然网上有很多lua支持OO的方法,但是我感觉that's not lua's way。并且使用object:func经常出错,容易写成object.func,如果你统一用object_func(object)就容易写对2. lua没有静态检查,所以typor——拼写错误太多了,这里感叹静态语言的优势,编译成功就扫除了很多bug,好在lua不需要编译(c++编译一个慢,如果改了.h文件可以去喝茶了),写错
阅读全文
摘要:源于Mike Pall的一个帖子http://t.cn/SvuWk0,他举的第一个例子就是游戏开发,最初开发游戏肯定是c/c++了,当接触到lua这样的动态语言的时,确实很amazing;起初可以用来做配置——比xml好用多了;接着做特殊的扩展,比如服务器的脚本任务和活动,然后发现gui的处理放在脚本很方便,测试用脚本也爽,然后一股脑的能脚本的都脚本化,有的用的停不下来的感觉。最后发现我勒个去,卡了。就好像小时候看过一个笑话,一个书生做菜,人家告诉他要撒盐,撒了点盐,好吃,再撒点,更好吃,都撒上,结果没发吃了。第一次做成这样,也是没办法的,是经验问题,值得原谅。不过再次做一番设计,就需要谨慎。
阅读全文
摘要:最近一段时间在lua的新闻组总是碰到这样的问题了。游戏中类似的问题很多,比如设置trigger,当玩家升级死亡的时候调用脚本函数。初级方法,全局的LuaState,全局函数,把函数名注册到trigger中去。进一步,希望支持匿名函数或者closure,那么用luaL_ref把函数记录下来并注册更进一步,希望支持coroutine,那么把LuaState和ref一起注册注意到,在coroutine也要记录注册的对象,在coroutine结束的地方需要取消注册。如果不这么做,而是武断的:co = nilcollectgarbage 'collect'此时当然会crash!
阅读全文
摘要:有人写过相同的文章貌似,在Tools/Extenal Tools做设置。这里讲另外一点小技巧,当vc编译文件出错,双击出错的行就可以快速定位到文件和行,但是用lua编译的输出格式vc无法识别。所幸lua的代码在手,改动简单1. 搜索%s:%d: %s 改为%s:(%d): %s2. 改lua.c的l_message if (pname) fprintf(stderr, "%s: \n", pname); --加个\n3. 在main的最后加上 report(L, status); if (status == 0) printf("ok !");这样如果编
阅读全文