freeswitch,在lua脚本如何获取通话时间

freeswitch,在lua脚本如何获取通话时间,第1张

FREESWITCH中录音你如果要搞到LUA脚本里就麻烦了,直接在dialplan里面就能录音。

<action application="set" data="execute_on_answer=record_session /data/media/${strftime(%Y%m%d)}/${strftime(%Y%m%d%H)}/${uuid}_$1_${caller_id_number}wav"/>

时间也都是从FS上面获取到传进LUA脚本里的。我是这么使用的。

1、首先通过解压游戏资源包,获取游戏脚本文件,可以直观的看到函数名称、参数等,是最佳的方法。

2、其次游戏没有验证lua、luaplus等dll,可以修改源码编译一个新的dll,在register函数里打印出注册的函数名称、函数地址等等。

3、然后用IDA、OllyDBG等工具查看反编译代码获取参数等信息。

4、最后直接用OllyDBG跟lua的register函数并配合所有参考字符串列表,看看都注册了哪些函数。

*** 作方法如下:

nLog

_1init

init(‘0’,1);_高速程序,当前的游戏是横屏游戏,并且home建在右面

function 点击(x,y)

_ body

touchDown(0, x , y)_模拟手指触摸位置 点下

mSleep(20) --停止20ms

touchMove(0, x , y)-- 模拟手指做轻微偏移

mSleep(20)

touchUp(0, x , y) _ 模拟手指抬起

while (true) do

点击(265, 1427)

mSleep(2000)

end

Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序种,从而为程序提供灵活的扩展和定制功能。

Lua是巴西里约热内卢天主教大学里的一个研究小组,有Roberto Ierusalimschy 、Waldemar Cleles和Luiz Henrique de Figueriredo锁组成并与1993年开发。

当 Lua 调用 C 函数的时候,使用和 C 调用 Lua 相同类型的栈来交互。C 函数从栈中获取她的参数,调用结束后将返回结果放到栈中。为了区分返回结果和栈中的其他的值,每个 C 函数还会返回结果的个数(the  function  returns  (in  C)  the  number  of  results  it  is leaving on the stack)。

// luacallcppcpp : 定义控制台应用程序的入口点。

//

#include "stdafxh"

#include <stdioh>

//lua头文件

#ifdef __cplusplus

extern "C" {

#include "luah"  

#include <lauxlibh>  

#include <lualibh>  

}  

#else

#include <luah>

#include <lualibh>

#include <lauxlibh>

#endif

int static add(lua_State L)

{

 //获取第一个参数

 double x=lua_tonumber(L,1);

 double y=lua_tonumber(L,2);

 //返回值压栈,压入两个返回值

 lua_pushnumber(L,x+y);

 lua_pushnumber(L,1000);

//返回值的个数,

 return 2;

}

int _tmain(int argc, _TCHAR argv[])

{

lua_State L=NULL;

/ 初始化 Lua /  

 L = lua_open();

/ 载入Lua基本库 /  

 luaL_openlibs(L);

/ 运行脚本 /  

 luaL_dofile(L, "/script/funclua");

//函数入栈

 lua_pushcfunction(L,add);

 //设置全局函数名

 lua_setglobal(L,"Add");

 //调用lua函数LUACALLCPP来反调cpp中的add

 lua_getglobal(L,"LUACALLCPP");

 lua_pushnumber(L,10);

 lua_pushnumber(L,3433);

 //两个参数,两个返回值

 lua_pcall(L,2,2,0);

 //取返回值二

 printf("lua call cpp return val is %f \n",lua_tonumber(L,-1));

 //取返回值一

 printf("lua call cpp return val is %f \n",lua_tonumber(L,-2));

 / 清除Lua /  

 lua_close(L);

return 0;

}

---------------------------------------

--region lua

--Date

--此文件由[BabeLua]插件自动生成

print("funclua hava been loaded")

function LUACALLCPP(x,y)

-- 调用c++中的函数

return Add(x,y)

--print(Add(x,y))

end

--endregion

运行结果:

保存到本地的Lua代码需要经过以下步骤:

1 导入相关库文件

首先需要导入相关库文件,包括cocos2d-x库和io库。这可以通过在代码开头添加以下代码实现:

local FileUtils = ccFileUtils:getInstance()

local io = require("io")

2 获取数据

接下来需要获取需要保存的的数据。这可以通过使用cocos2d-x中的Sprite类来实现:

local sprite = ccSprite:create("imagepng")

local texture2D = sprite:getTexture()

local size = texture2D:getContentSizeInPixels()

local data = texture2D:getData()

3 将数据写入文件

最后一步是将获取到的数据写入文件。这可以通过使用io库中的文件 *** 作函数来实现:

local path = FileUtils:getWritablePath() "imagepng"

local file = ioopen(path, "wb")

file:write(data, size)

file:close()

这段代码会将获取到的数据写入一个名为imagepng的文件中,保存在应用的可写目录下。需要注意的是,在写入文件之前需要先创建一个io文件对象,并且在写入完成之后需要关闭文件对象。

以上就是将保存到本地的Lua代码的详细步骤。

以上就是关于freeswitch,在lua脚本如何获取通话时间全部的内容,包括:freeswitch,在lua脚本如何获取通话时间、如何找到游戏的lua接口、lua获取上次点击函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9352717.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存