LUA - 技术教程文章

游戏资源自动转换成Lua表【代码】

关于这个问题,几年前已经做过一个工具,自动导出成一个c++的struct,然后用vector存储这些数据,然而在实践中发现在遇到多层嵌套时,这种数据表现是非常乏力的。比如掉落表会配多个掉落物,每个掉落物都有数量、概率等。那么最好是将物品ID,数量,概率设置为一个struct然后用一个vector存储,而不是用drop_id1, drop_id2, drop_num1,drop_num2来表示,类似这样的情况是很常见的。后来工作中用Lua比较多,也曾写过一个将表导出lua...

斯坦福大学公开课机器学习: advice for applying machine learning - evaluatin a phpothesis(怎么评估学习算法得到的假设以及如何防止过拟合或欠拟合)【图】

怎样评价我们的学习算法得到的假设以及如何防止过拟合和欠拟合的问题。当我们确定学习算法的参数时,我们考虑的是选择参数来使训练误差最小化。有人认为,得到一个很小的训练误差一定是一件好事。但其实,仅仅是因为这个假设具有很小的训练误差,当将其样本量扩大时,会发现训练误差变大了,这说明它不是一个好的假设。比如下图,拟合的非常好,一旦样本量改变,其训练误差随之增大。 那么我们如何判断一个假设是否是过拟合的呢?...

LuaJIT诡异bug(疑似)【代码】

程序为单进程多线程每个线程开启一个LuaJIT虚拟机,版本为LuaJIT 2.1.0-beta3在高并发情况下,lua代码会出现诡异情况,例如:if true thenif xxx == 1 thenerror("err")end elseif xxx ~= 1 thenerror("err")endif not xxx == 1 thenerror("err")end end 当xxx为1时,按理应该 xxx ~= 1为false,但是很奇怪的是反而为true。只有 not xxx == 1才为false 当把每个线程拆为独立进程后,此诡异情况消失。故猜测是luajit问题。 ps.暂时...

Sublime Text(2/3)编译lua【代码】

想在subLime text 3中集成编译Lua(或其他语言)功能,只需要在Tool->Build System -> New Build System中将原来的{  "shell_cmd": "make"}替换为下面的代码:{"cmd": ["c:/Users/Administrator/AppData/Roaming/Sublime Text 2/compile.exe", "$file"],"file_regex": "^(?:lua:)?[\t ](...*?):([0-9]*):?([0-9]*)","selector": "source.lua" } 然后在sublime Text文件夹路径下/Packages/ 中新建Lua文件夹,保存为Lua.sublime-bu...

150 Evaluate Reverse Polish Notation 逆波兰表达式求值【代码】

求在 逆波兰表示法 中算术表达式的值。有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。例如: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6详见:https://leetcode.com/problems/evaluate-reverse-polish-notation/description/class Solution { public:int evalRPN(vector<string> &tokens) {if(tokens.size() == 0)return 0...

Using an LPC-Link2 as an LPC4370 evaluation board

https://www.lpcware.com/content/faq/lpcxpresso/using-lpclink2-as-lpc4370-evalAs well as being a standalone debug probe, the LPC-Link2 can also be used as a simple LPC4370 evaluation board.The following notes may assist in such usage.Debug connectionMake sure that you have connected the JTAG/SWD cable from your debug probe to the target LPC-Link2‘s connector J2 (and not J7!).Thus if you are using ...

(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(8): 生成只读table【代码】

这个函数的作用是:生成只读table。--[[ -- 生成只读table -- @param table t 需要不允许修改的tableexample:local tb = {"星期一", "星期二", "星期日"} local days = readOnly( tb );days[2] = "星期三哪去了啊?" ;"[string \"Functions.lua\"]:466: 别修改我!我是只读的!" --]] function readOnly( t )local newT = tlocal mt = {__index = {}, -- 如果改成 newT = {}, __index = t, 会导致无法直接使用for循环遍历,...

Lua2.4 打印字节码 print.c【代码】

现在编译器相关的部分就剩下 luac.c 中的 do_dump 函数的分析了。这个函数里面主要有两种调用,存储字节码和打印字节码。先来看一下打印字节吧,要打印字节码,需要在编译器的命令行选项中有 "-l" 选项。static void do_dump(TFunc* tf) /* only for tf==main */ { if (dumping) DumpHeader(D); while (tf!=NULL) { TFunc* nf; if (listing) PrintFunction(tf); if (dumping) DumpFunction(tf,D); nf=tf->next; ...

lua解释执行脚本流程【代码】【图】

1 #include "lua.hpp" 2 3 #include <iostream>4usingnamespace std;5 6#pragma comment(lib, "lua5.1.lib")7 8struct lua_guard{9 lua_State *pL; 10 lua_guard(lua_State *s) :pL(s){} 11 ~lua_guard(){ lua_close(pL); } 12}; 1314int main(){ 15 lua_guard g(lua_open()); 16 luaL_openlibs(g.pL); 17int err; 18if ((err = luaL_dofile(g.pL, "mylua.lua") != 0)){ 19throw runtime_error("open lua file e...

Cocos2dx+lua合适还是Cocos2dx+js合适?

问题:开发cocos2dx手游Cocos2dx+lua合适还是Cocos2dx+js合适百牛信息技术bainiu.ltd整理发布于博客园回答:作者:廖宇雷链接:https://www.zhihu.com/question/21130385/answer/18485625来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。2014.02更新:请放心选择 Lua 吧。触控已经收购了 quick-cocos2d-x,2014年肯定会大力强化 cocos2d-x 的 Lua 支持。----我个人肯定是推荐 Lua 的,原因如下:1...

Nginx编译安装Lua模块【代码】

Nginx编译安装Lua模块一、安装Lua环境及相关库官网网址:https://github.com/openresty/lua-nginx-moduleLuaJIT `wget http://luajit.org/download/LuaJIT-2.0.2.tar.gzmake install PREFIX=/usr/local/LuaJITexport LUAJIT_LIB=/usr/local/LuaJIT/libexport LUAJIT_INC=/usr/local/LuaJIT/include/luajit-2.0`ngx_devel_kit和lua-nginx-module ``` cd /opt/downloadwget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.t...

Lua杂项【代码】

lua的全局变量全都保存在table里面,名字叫: _G设置不能访问不存在的全局变量,不能赋值不存在的全局变量setmetatable(_G, {__index = function(_, n)error("attempt to read undeclared variable" .. n, 2)end,__newindex = function(_, n)error("attempt to write undeclared variable " .. n, 2)end})在这种情况下该如何给不存在的全局变量赋值以下方法可行么?测试不通过,环境5.3.5function declare( name, initval )rawset(_...

Quick cocos2dx-Lua(V3.3R1)学习笔记(四)----文本渲染之用BM TTF创建文本【代码】【图】

上一篇我们显示了背景图和文字,这一篇我们详细介绍一下文本显示的方法 一,显示fnt格式字体首先我们下载BMF格式文件制作工具,Bitmap Font Generator下载地址:http://www.angelcode.com/products/bmfont/安装完毕,我们打开这个工具,看到如下的界面 左边就是单独字体 右边就是字体库(注意:如果要有符号输入,将第一项Latin+Latin Supplenment打钩)(你看你看,我不是所有括号都有自言自语的)我们来创建字体点击Options下面的...

Lua wait sleep

使用os.execute 执行涉及等待、超时的外部命令、程序。配合 >nul 不显示标准输出流信息。执行过程是阻塞(block)等待的。 os.execute"ping 1.1.1.1 /n 1 /w <time in milliseconds> >nul" ,如os.execute"ping 1.1.1.1 /n 1 /w 1000 >nul" 。os.execute"CHOICE /n /d:y /c:yn /t:1 >nul" 。为(Windows)系统安装GNU命令包(minGW?)。>sleep --helpUsage: sleep NUMBER[SUFFIX]... or: sleep OPTIONPause for NUMBER seconds....

cocos-lua基础学习(四)quick层封装后的目录结构

命名空间cc  cocos2d核心类ccb  cocosbuilder扩展ccs  cocostudio扩展 cocos2d目录结构bitExtend.lua  cocos2d.luacocos2dConstants.luafuntions.lua  提供一组常用函数,以及对 Lua 标准库的扩展json.lua  json的编码与解码luaj.lua  Lua与Java之间的交互接口luaoc.lua  Lua与Objective-c之间的交互接口Opengl.luaOpenglConstants.lua cocostudio目录结构CocoStudio.luaStudioConstants.luaDeprecatedCocoStudio...

lua 工具类(二)【代码】【图】

local tonumber_ = tonumberfunctiontonumber(v, base)return tonumber_(v, base) or0endfunction toint(v)return math.round(tonumber(v)) endfunction tobool(v)return (v ~= niland v ~= false) endfunction totable(v)iftype(v) ~= "table"then v = {} endreturn v endfunction clone(object)local lookup_table = {}localfunction_copy(object)iftype(object) ~= "table"thenreturn objectelseif lookup_table[object] thenre...

cocos自定义类 绑定到lua【代码】【图】

1:按照\frameworks\cocos2d-x\tools\tolua下的README.mdown的指示一步一步做下去。务必要和文件中描述的一样,我已经被这个坑爹的东西坑的很惨了。(检查这个有没有配置好的方法是:运行下那个genbindings.py,看是否能生成liblua的auto目录下的那些文件。如果能,那么你的环境配置就成功了。)2:写一个自定义的C++类例子:<span style="font-family:KaiTi_GB2312;font-size:14px;">#pragma once #include "cocos2d.h" USING_NS_...

lua5.4.1 中 lua_pushnumber 浮点数处理问题

在arm架构项目中将lua5.4.1移植系统上,在实现数据处理时发现一个奇怪现象。在处理浮点数适合,发现lua_pushnumber将数据压栈后,再到脚本上读取出来时发现值变成科学数;无论输入什么值。网络找了一圈发现没有找到答案, 于是想将浮点转字符串在压栈; 但发现转换的值后一直显示是0.0同时在定义函数中使用c++的std::to_string(2.2) 将这个值打印发现也是0.0此时问题就变得神奇了, 明明是标准C++11的函数也会将 浮点输出强制转换了...

lua内存监测和回收

以下来自书籍《Cocos2d-x之Lua核心编程》1.-----------------------------------------若想查看程序当前的内存占用情况,可以使用Lua提供的collectgarbage。collectgarbage是Lua内部的垃圾回收模块对外提供的接口,可以用来监控或改变垃圾回收器的默认行为。下面是一个collectgarbage使用的例子print(collectgarbage("count")) local test = {} for i=1,10000 do test[i] = {} end print(collectgarbage("count...

Lua中的正则表达式

模式你还可以在模式串中使用字符类。字符类指可以匹配一个特定字符集合内任何字符的模式项。比如,字符类 %d 匹配任意数字. 所以你可以使用模式串‘%d%d/%d%d/%d%d%d%d‘搜索dd/mm/yyyy 格式的日期 :s = "Deadline is 30/05/1999, firm" date = "%d%d/%d%d/%d%d%d%d" print(string.sub(s, string.find(s, date))) --> 30/05/1999 下面的表列出了Lua支持的所有字符类:. 任意字符 %a 字母 %c 控制字符 ...

Cocos2d-x 脚本语言Lua基本数据结构-表(table)【图】

Cocos2d-x 脚本语言Lua基本数据结构-表(table)table是Lua中唯一的数据结构,其他语言所提供的数据结构,如:arrays、records、lists、queues、sets等,Lua都是通过table来实现,并且在lua中table很好的实现了这些数据结构。--摘自:《Programming in Lua》看以下代码,可以很清晰的明白Lua中表的使用:-- Lua中的表,table Config = {hello="Hello Lua",world="World"} -- 赋值方式1,以键=值的方式初始化 Config.words = "Hello" ...

lua:lua与C/C++程序的整合【代码】【图】

lua与C/C++交互,主要靠lua API和向lua注册好的函数。如下图注:LuaGlue就是让Lua脚本中可调用的C++函数的接口。即那些注册的函数。 这里起关键作用的要数lua_State的结构,这就得讲一下Lua环境和Lua Stack。 Lua环境Lua环境由所有可操作的数据构成,如编译好的函数、变量以及其他运行时内存。这些数据保存在一个称做lua_State的结构中。所有Lua应用程序都要求至少有一个lua_State,如果需要还可以有多个(如需要为两个不同的系统保...

关于Lua程序设计{读书笔记}

1、lua中的标识符可以是由任意字母、数字和下划线构成的字符串,但不能以数字开头。2、lua将通常类似"_VALUE"的标识符作为保留标识符3、lua的保留字 and break do else elseif end false for function if in loacl nil not or repear return then true until while 有大小写之分4、行注释-- 块注释--[[ …… ]]==============================================================全局变量lua中访问一个未初始化的变量不会引发...

Lua_第27章 User-Defined Types in C【代码】

Lua_第27章 User-Defined Types in C 在上一章,我们讨论了如何使用 C 函数扩展 Lua 的功能,现在我们讨论如何使用 C 中新创建的类型来扩展 Lua。我们从一个小例子开始,本章后续部分将以这个小例子 为基础逐步加入 metamethods 等其他内容来介绍如何使用 C 中新类型扩展 Lua。 我们的例子涉及的类型非常简单,数字数组。这个例子的目的在于将目光集中到 API 问题上,所以不涉及复杂的算法。尽管例子中的类型很简单,...

照着例子学习 protobuf-lua【代码】【图】

参考文章:cocos2dx使用lua和protobuf首先得下载protobuf-gen-lua的插件,插件Git地址在此。下载完之后进入到protoc-gen-lua\plugin这个目录,并在其中建立一个批处理文件:@python E:\3rd\quick-x-protobuf\proto-gen-lua\protoc-gen-lua\plugin\protoc-gen-lua 然后进入到上一篇笔记中的addressbook.proto所在的文件夹内,运行如下命令:protoc --lua_out=生成的lua存放地址 --plugin=protoc-gen-lua=上面新建的bat的完整地址 ad...

关于cocos2dx手游lua文件加密的解决方式

非常多使用cocos2dx+lua做游戏的同学。都会想到一个问题,我的游戏一旦公布,如何才干保证的我脚本代码不被破解。不泄露代码。尽管这和开源、共享的原则不合。可是代码也是coder的劳动成果,理应得到保护。特别是商业游戏更是如此,不希望被别人破解掉源代码而且进行改动。 今天的话题就是怎样实现lua脚本文件的加密和解密。 我在网络上查过,都没有成熟的解决方式。然后我经过考虑之后,总结出两种解决方式,供大家參考...

Step By Step(Lua字符串库) (转)【代码】【图】

1. 基础字符串函数: 字符串库中有一些函数非常简单,如: 1). string.len(s) 返回字符串s的长度; 2). string.rep(s,n) 返回字符串s重复n次的结果; 3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变; 4). string.upper(s) 和lower相反,将小写转换为大写; 5). string.sub(s,i,j) 提取字符串s的第i个到第j个字符。Lua中,第一个字符的索引值为1,最后一个为-1,以此类推,...

python执行lua代码【代码】

楔子下面我们来看看如何使用python来执行lua代码。如果了解lua的话,可能会感到器官,我们之前调用C、调用go,都是调用其编写的动态库。可lua是脚本语言啊,难道也可以写动态库吗?其实我们不是调用动态库,而是直接执行lua代码。这时候可能又有人猜到了,python执行lua代码,本质上应该还是通过lua解释器来调用吧。答案不是的,因为python的执行lua代码的包自带了一个lua解释器,并且是以pyd的形式。因为lua解释器非常的精简,自带...

cocos2dx -lua 面向对象-转

转自:http://www.himigame.com/lua-game/1282.html上一篇中,向童鞋们介绍了如何自定义类binding到Lua中供给使用的教程,那么本篇将介绍利用OOP思想在在Lua中进行创建一个自定义类。 首先Himi来向大家讲解如何在Lua中不binding来自定义lua类,其实这种方式在Cocos2dx的Lua Samples已经为我们做好了例子,就看童鞋们是否认真阅读了。此示例路径在你解压cocos2dx引擎包下的cocos2d-2.1rc0-x-2.1.2/samples/Lua/TestLua 中的 Touc...

Lua中的数据结构【代码】

1 数组:(lua习惯数组从1开始)a={} for i=1,1000doa[i]=0 end2 阵和多维数组1: mt={}//新建一个表,表元素为表for i=1,N domt[i]={}//新建一个表,里面的表元素为值for j=1,M domt[i][j]=1end end 2: mt={}//新建一个表,表元素为值(注意起始地址是1*M+1,不再是1开始了)for i=1,N dofor j=1,M domt[i*M+j]=0end end!:注意在表中没有被赋值的部分都是nil无效值,相当于不存在3 链表:每个结点代表一个table,每个table两个域:...