LUA - 技术教程文章

Lua使用os.date函数也要小心【代码】【图】

前段时间,在给我们游戏服务器写lua的脚本的时候,发现了一个奇怪的现象,一段lua代码只要一执行就把服务器给搞挂了,仔细分析了一下,发现这段lua代码并没有执行什么特别的操作,甚至都没有跟我们服务器的C++层交互,仅仅只是使用lua自身的一些库函数,而且只对windows平台下的服务端会产生这个崩溃。初步认为是windows平台的原因。于是我在windows平台下编译了lua的源码,跟进去后发现原来是宕在了windows的CRT函数里,解释一下C...

lua 学习

1、lua 只有false和nil视为假,其他都为真2、lua 没有整数类型,只有浮点型,一般用双精度浮点型表示整形数3、可以用一对匹配的双括号界定一个字母字符串,类似于块注释[[abcdeeff]]4、lua支持运行时字符串与数字的自动转换print("11"+1);12print(11 .. 22);1122tonumber - 字符串转数字tostring -数字转字符串#获取字符串长度5、table 关联数组是对象初始化 a = {}可以用数字索引,也可以用其他类型索引数字索引从1开始#a代表最后...

cocos2d-lua 3.5 ios搭建步骤

xcode搭建cocos2d-lua是最简单的,不用 配置一系列环境变量,只把xcode安装好就可以步骤一:去官网下载quick-3.5,然后打开命令行工具步骤二:cd进入/Users/song/Desktop/cocos2dStudy/quick-3.5/tools/cocos2d-console/bin/,然后运行下面的命令cocos.py new HelloCC -p com.wwj.hellocc -l lua -d /Users/song/Desktop/cocos2dStudy/quick-3.5,然后即可生成新项目,进入到HelloCC的/Users/song/Desktop/cocos2dStudy/quick-3.5/...

cocos2dx for lua 加密图片

图片加密的方法有很多种,在cocos2dx中,经常会使用TexturePacker来加密图片,方法如下:打开TexturePacker,点击Add Sprite添加图片,在output栏下的Texture format选择pvr.gz格式, 点击Content protection加密按钮,创建加密密钥,点击create new key来创建一个新的密钥,clear/disable删除密钥,save as global key可以将当前密钥保存成全局密钥,以后可以使用,use global key 可以使用save as global key保存的全局密钥。 点...

Lua程序设计之————Lua面向对象2【代码】【图】

----------------------------------------------------------- Lua面向对象3 local smartMan = {name = "Tinywan",age = 26,money = 800000,sayHello = function()print("Tinywan say 大家好")end } local t1 = {} local mt = {__index = smartMan,__newindex = function(table, key, value)print(key .. "字段不存在不要试图给他赋值")end } setmetatable(t1, mt) t1.sayHello = function()print("HAHA") end t1.sayHello() --- ...

Lua判断一个目录或文件是否存在的方法

一、使用io.openOpen 一下就可以了。复制代码 代码如下: file,err=io.open("XXXX") 如果文件正常打开 file为文件句柄,err 为 nil 。否则 file 为 nil ,err为错误信息 “drr: No such file or directory”。只需要 open 一下。然后看看返回值。复制代码 代码如下: somefile="xxxj.pdf" local F,err=io.open(somefile,"r+"); print(err) 如果文件不存在 err 会包含相关信息。 二、自定义函数复制代码 代码如下: function file_exis...

Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected

首先说一下5.3貌似没有这个问题, 但是目前最新版的luasocket 3.0 rc1只能支持5.2, 5.3调用的话程序会崩溃(不知道是不是我没配置好)出现这个问题的原因, 想必网上有很多资料了, 就是C model的静态和动态链接的问题, lua5.2不支持 >= 2的静态链接, 而如果在编译得到lua.lib的时候用了静态链接, 编译得到socket.dll 和 mime.dll的时候链接了它, 那么在命令行解释的时候, 相当于链接了两次, 就会出现这样的错误.很可惜, 现在网上大多数...

Lua Table 操作【代码】

Lua中table类似与C#种的字典,其实就是一个key-value键值对数据结构.来学习下table基本操作Table的创建myTable = {} --表名后面使用{}赋值,表示一个空的表 myTable = {name="盘子脸",age=18,isMan=true} --创建时候就添加键-值 myTable = {10,20,30,"plateface"} --创建数字下标值的table,默认是从1开始Table的赋值myTable[3] = 34--当键是一个数字的时候的赋值...

cocos2dxlua sprite【代码】

require "Cocos2d" require "Cocos2dConstants"local TestScene = class("TestScene",function()return cc.Scene:create() end)function TestScene.create()local scene = TestScene.new()local sp=cc.Sprite:create("dog.png")sp:setPosition(100,100)scene:addChild(sp)return scene endreturn TestScene 原文:http://www.cnblogs.com/yufenghou/p/4304465.html

Lua面向对象编程之类的简单实现方式

先来看一段程序:复制代码 代码如下: function create(name, id) local obj = { name = name, id = id } function obj:SetName(name) self.name = name end function obj:GetName() return self.name end function obj:SetId(id) self.id = id end function obj:GetId() return self.id end return obj end o1 = create("Sam",...

No2:luacom中文内容输出BUG及修正

经检查,luacom没有问题,是lc转换的代码有问题,没有注意到lua_tolstring都会包含一个结束符造成多了一个空格,导致认为是luacom少了一个空格(加起来2个空格刚好是2个字符的结束符),思路完全错误,下文作废。 使用cell.Value2输出中文内容时总是乱码。怀疑是utf-8的原因,转换后结果仍然是乱码。自己再写个转换的再测试,依然是乱码,莫非有BUG!?下个LUACOM的源码,查看函数tLuaCOMTypeHandler::com2lua和tStringBuffer tUtil...

lua与c的交互(运用)【代码】【图】

(1)lua程序 (2)C++程序(头文件)extern "C"{ #include "lua.h" #include "lualib.h" #include "lauxlib.h"};class CLuaFn{public: CLuaFn(void); ~CLuaFn(void); void Init(); //初始化Lua对象指针参数 void Close(); //关闭Lua对象指针 bool LoadLuaFile(const char* pFileName); //加载指定的Lua文件 bool CallFileFn(const char* pFunctionName, int nParam1, int nParam2); ...

ngx lua获取时间戳的几种方式

原创自由de单车 最后发布于2017-02-14 14:58:43 阅读数 18218 收藏在ngx_lua里,获取时间相关信息的方式大概有4种(见下面代码):print(string.format("%s, %s, %s, %s", ngx.time(), os.time(), os.clock(), ngx.now()))ngx.exit(200)-- 以上代码会输出:1486971340, 1486971340, 209.77, 1486971340.422可见,通过os.clock()获取到的并不是时间戳,它获取的是一个程序使用CPU时间的一个近似值,而我们的目的是获取时间戳,所以...

core_framework —— 基于libev的轻量级lua网络开发框架【代码】

大道至简, 返璞归真.前言在发表这篇博文的前夕, 还有一些小伙伴在提问一些以下相关的问题:性能怎么样?是否容易上手?开发目标在哪?如何反馈问题?对比行业内的lua开源项目有何优势?等等, 以上问题会在本文中一一介绍.CF的起因首先来聊聊情怀这个东西! 相信每一个行业内的从业者都或多或少有过一个梦, 这个梦叫做: "我到时候要开发一个XXX"!其实作者当初也是一样.每当半夜(凌晨)在加班、看文档、调试的时候, 总会搜索到一些几年前或...

发现一个nginx LUA开发Web App的框架【代码】

nginx是个好东西, nginx的openrtsy发行版本更是个好东西。今天又发现个好东西 :MoochineMOOCHINE - 一个简单的轻量级的web framework, 基于ngx_OpenResty(ngx_lua,ttp://openresty.org) 做的框架, 使用例子 https://github.com/appwilldev/moochine-demo项目地址:https://github.com/appwilldev/moochine可以让我们构建WebApp 更加的简单,具体使用方法请看具体的 moochine-demorequest对象的属性和方法--属性 method ...

Mac下Lua Sublime Text2 开发环境搭建【图】

1.安装Lua编译器下载Lua, http://www.lua.org/;解压后,cd进入该文件夹src目录下在当前文件夹执行make macosx 然后回车cd 到上一目录,执行sudo make install完成之后执行lua -v 可以看到:Lua 5.3.3 Copyright (C) 1994-2016 Lua.org, PUC-Rio2.安装Sublime Text2 1.下载http://sublime-text-2.cn.uptodown.com后打开; { "cmd": ["/usr/local/bin/lua", "$file"], "file_regex": "^(...*?):([0-9]*):?([0-9]*)", "sel...

高速掌握Lua 5.3 —— 扩展你的程序 (1)【代码】

Q:怎样在C中将Lua作为配置文件语言使用?A: “config.lua”文件里:-- window size width = 200 height = 300“main.c”文件里:#include <stdarg.h>#include <stdio.h>#include <stdlib.h>#include <lua.h>#include <lauxlib.h>#include <lualib.h>void error(lua_State *L, constchar *fmt, ...) { // 逐一取出參数并打印到标准错误输出。va_list argp;va_start(argp, fmt);vfprintf(stderr, fmt, argp);va_end(argp);lua_c...

lua 中pairs 和 ipairs区别

ipairs 和pairs在lua中都是遍历tbale的函数但是两者有区别1.pairs遍历table中的所有的key-vale 而ipairs会根据key的数值从1开始加1递增遍历对应的table[i]值 pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的keya = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5",} for key, value...

LuaBoy编辑器开发日志-完成框架【图】

终于有点时间可以整理一下三年前开发的Lua编辑器了, 目前完成了主框架。时间不确定,只能趁有空的时间做了。 按照惯例,上个框架完成的图。 目前功能: 1)支持Lua语法高亮,支持行号显示,支持折叠。 下一步: 实现:Lua函数库的智能感知。 效果图: 原文:http://blog.csdn.net/wangfangjie/article/details/42192005

cocos2dx游戏开发学习笔记3-lua面向对象分析

在lua中,能够通过元表来实现类、对象、继承等。与元表相关的方法有setmetatable()、__index、getmetatable()、__newindex。详细什么是元表在这里就不细说了,网上非常多介绍,这里主要讲与cocos2dx相关联的部分。在lua-binding库中extern.lua里,有例如以下方法:--Create an class. function class(classname, super)local superType = type(super)local clsif superType ~= "function" and superType ~= "table" thensuperType ...

【算法】用Lua解决八皇后的问题【图】

最近在学习Lua脚本,经过了不到十天的学习,也算是对语法有所了解吧,另外正好也看到了八皇后问题,感觉挺有意思的 就试了试用算法解出来。八皇后问题的原题是:八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。以下是lua的算法代码:local eightQueen = { 0,0,0,0,0,0,0,0,} l...

cartographer_common_lua_parameter_dictionary【代码】

class FileResolver 读lua参数文件程序接口参考cartographer_common_configuration_file_resolver.mdclass LuaParameterDictionary 获取lua参数表 说明: 读取 lua参数 相关文件,形成lua 参数表,实现过程用到cpp调用lua 知识,比较繁杂,有兴趣的读者可以参考: cpp_call_lua.md 文件。 或参考链接:https://www.cnblogs.com/chevin/p/5884657.html 系统学习。当然,也可以忽略该部分具体lua相关知识,仅仅了解LuaParameterDicti...

【转】lua random()

先来看看这两段代码:①math.randomseed(os.time())for i=1,10 do n = math.random(10) print(n)运行结果是:632107543410②for i=1,10 do math.randomseed(os.time()) n = math.random(10) print(n)end运行结果是:6666666666结论:要多次运行math.random()获取不同结果,不能把math.randomseed()和它写到一个循环内,最好不要把它写到循环,而是作为初始化的数据。再来看一下代码①,多次运行后发现,所有的第一个结果都是6,也就...

lua redis接口 (在ubuntu16.04 环境下配置lua-redis开发环境)【代码】

目前成功的lua版本是5.1, 根据网络上的资料显示 lua5.1能够支持 lua-socket安装lua及相关软件:#安装lua5.1sudo apt install lua5.1#安装lua-socketxiangg sudo apt install lua-socket sudo apt install lua-socket-dev#安装lua-redis相关 sudo apt install lua-redis sudo apt install lua-redis-dev安装redis及相关软件:#安装Redis服务 sudo apt install redis-server#安装redis客户端及工具 sudo apt install redis-tool测试...

以一则LUA实例说明敏捷开发中“分离构造和使用”原则

分离构造和使用构造含义是功能的实现, 此功能是一个定义明确的处理过程, 开放出明确的接口给调用者使用。则使用者可以直接调用接口进行使用, 但是使用者需要搞清楚, 那些是构造, 那些是使用。不要再使用的地方, 将构造的代码也实现。 否则, 构造的代码会淹没掉 使用地方的 业务逻辑。 LUA需求在一个lua表中, 查询指定参数名称的参数值, 并将此参数值转换为 html encode编码方式。instData = {[“para”] = “paravalue<”...

Lua学习教程之 可变参数数据打包与解包【图】

利用table的pack与unpack进行数据打包与解包,测试代码如下:print("Test table.pack()----------------");function printTable ( t )if type(t) == "table" thenfor k,v in pairs(t) doprintTable(v);endelseprint(t);end endlocal packData =function( ... )local arg = table.pack(...);--arg.n 得到可变部分的参数的个数-- print("arg.n:", arg.n)for k,v in pairs(arg) doprint("----------------");print(k,v);printTable(v);...

在线调试lua原型设计

在规模日益增长的软件项目开发中, 如何有效的进行代码调试成为影响开发效率的致命因素之一。在当今网络游戏项目中, lua几乎成了项目脚本的标配。编译型的语言, 诸如C++, 都有良好的ide支持调试。而作为脚本型语言, lua至今都没有一个很好的调试环境, 比较常用的做法就是打印日志。显而易见, 这是一个十分原始且低效的调试手段, 他只能打印一些我们预先想要知道的变量值, 而无法查看整个程序环境, 这对于一些复杂的bug或者...

0.A1-Air302(NB-IOT)-硬件使用说明,下载和运行第一个lua程序(Mini板)【代码】【图】

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/Learn-NB-IOT-Air302-ForLua" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p> 实物图 尺寸图(超小尺寸,小到2.5CM) 模组供电可采用5V或者3.3V给模组供电 测试AT指令连接示意图 pytnon + vscode 开发下载1.安装 python(自行百度安装)2.安装VSCode(自行百度安装) 注意安装这里勾选上 3.下载工程文件https://gitee.com/op...

Lua 关于"."与":"号的用法区别【代码】

"."的用法: TSprite = {x = 0,y = 0,}function TSprite.setPosition(m, x ,y) m.x = x;m.y = yendlocal who = TSprite  TSprite = nilwho.setPosition(who, 1, 2)print(who.x, who.y)--输出:1 2":"的用法 TSprite = {x = 0,y = 0,}function TSprite:setPosition(x ,y) --不同self.x = x;self.y = yendlocal who = TSprite  TSprite = nilwho:setPosition(1, 2) --只有这不同print(who.x, who.y)--输出:1 2 看出差别了...

对lua中_ENV表的理解(lua5.2版本以后)【代码】【图】

当我拿到_ENV表的时候,会去想这个_ENV表是干什么用的? 首先看如下代码:1print(_ENV) --0x1d005f02print(_G) --0x1d005f0ViewCode  看了上面的代码,就感觉_ENV表不就是_G表吗?但_ENV表是不是全局的呢?我又打印了_G表的内容: 1for k , v inpairs(_G) do 2print(k , v)3end 4--[[ 5package table: 0xad1e506setmetatable function: 0x4192207pairs function: 0x4193808require function: 0xad39009loadfile func...