你使用别人的服务端当然受别人服务端的限制了...
要看看别人的服务端是否支持lua,你才能放置lua脚本加功能,甚至自己写lua的功能
(其实写lua这样和修改数据库 dbc 是一样的 属于二次开发)
而你说的反编译啥的,我自问是没那个本事了
对于有自己的源代码的作者吧,当然能用c++书写功能的话就不会用lua了
因为lua执行实际上是调用c++的方法,中间其实是绕了远路了
比如lua里player:GetLevel() 返回等级这个吧
实际它是通过关键字 GetLevel 来对应进源码里的方法
然后获取数据,再压进lua的堆栈里
-
- int GetLevel(Eluna* /*E*/, lua_State* L, Unit* unit)
- {
- Eluna::Push(L, unit->getLevel());
- return 1;
- }
复制代码
而直接的c++开发是直接读取内存的数据,不需要这个"绕远路"的过程,单单从效率上说,lua比不上c++的
所以能c++开发的作者,一般不会用lua做功能,也只有像我这些闲着的才会写点小功能放出来给别人玩的罢了
其实最重要的一点就是,除去效率问题.
lua的api只是映射了常用的c++里面的方法,还有更多的东西是从lua里获取不了的
比如你想在lua里获取某个物品的物品图标,这是没有的
你必须绕远路自己导出物品的图标数据,自己记录,并做好物品id和路径一一对应,
才能在lua里知道得到物品的图标路径
而如果C++里,直接读取dbc中的路径,加一个方法返回地址就行了
这就是上面说的lua限制了,获取你想要的数据的途径少的多,能做的也不多
|