我想知道是否可以使用IDA获得Lua类型{ None、Nil、UserData等等,以便在一个名为ROBLOX的游戏中实现客户端代码执行。如果在IDA中是不可能的,那么有什么方法可以连接到游戏并检索这些值吗?
我尝试过像"IsNil“、" type ”和“type to ”这样的东西,但是没有找到一个函数,它与这样的字符串连接起来来检索lua类型的值。
任何答案都会很有见地。
注意:游戏本身有一个高度修改的Lua .
在Lua参考手册中,它指出每个值都有一个类型,它可能是本地、全局、表字段类型之一。我的问题是在Lua中匿名函数的类型是什么?匿名函数有什么生命周期?我只是举个例子。
local co = coroutine.create( function () print "hi" end )
print(coroutine.status(co))
我试图向Lua脚本提供一个整数列表,并对它们进行迭代。
我得到的错误是:
test.lua:12: bad argument #1 to 'pairs' (table expected, got userdata) stack traceback: [C]: in function 'pairs' test.lua:12: in main chunk
正在使用的C++代码:
#include <sol.hpp>
struct Test {
std::vector<int> a;
};
int m
所以我发现lua中没有类,我们如何使用函数或其他方式来实现OOP呢?
--I heard that we can do OOP like this:
local className = {}
local function className.my_function(_t)
--the program
end
但它只能制造一个物体……
我情不自禁地注意到我们还没有FizzBuzz in lua。我一直想向卢阿开枪,所以现在什么都没做。
代码:
function fizzBuzz(maxNum)
local fizz = "Lua"
local buzz = "Yay"
for i = 1, maxNum do
if i % 15 == 0 then
print(fizz..buzz)
elseif i % 3 == 0 then
print(fizz)
elseif i % 5 == 0 then
print (buzz)
我们希望根据大小从Map bin中删除元素。将有多个线程尝试执行上述操作。因此,编写一个UDF来执行此操作将使它在线程之间同步。但remove_by_rank_range不在lua内部工作。下面是错误iwe :尝试调用字段'remove_by_rank_range‘(一个零值)
样本lua代码:
function delete(rec)
local testBinMap = rec.testBin
map.remove_by_rank_range(testBinMap, 0, 5)
end
redis.call('select','14')
local allKeys = redis.call('keys','orgId#1:logs:email:uid#*')
for i = 1 , #allKeys ,1
do
local object11 = redis.call('DEBUG OBJECT',allKeys[i])
print("kk",object11[1])
end
这里,“调试对象”在redis-cli上成功运行,但是如果我们想在多个键上运行lua脚
比如说,aerospike数据库有如下记录的数据
将名称空间设为employee
name age characteristics
sachin 25 MAP('{"weight":70, "height":25}')
现在,我希望通过lua脚本为employee名称空间中的所有记录更改高度值。
我已经尝试更改正常数据类型的bin,如下所示,即我尝试更改年龄,如下所示:
function changeAgeOfEmployee(rec)
if not aerospike:exists(rec) then
error (
我想要一个接受字符串参数的lua函数。字符串具有N+2字节的数据。前两个字节的长度为bigendian格式,rest N字节包含数据。
说数据是"abcd“
所以字符串是0x00 0x04 a b c d
在Lua函数中,这个字符串对我来说是一个输入参数。如何计算长度最优方式。
到目前为止,我已经尝试了以下代码
function calculate_length(s)
len = string.len(s)
if(len >= 2) then
first_byte = s:byte(1);
second_byte = s:b