dmlua
Copyright (c) 2013-2018 brinkqiang (brink.qiang@gmail.com)
Linux | Mac | Windows |
---|---|---|
![lin-badge] | ![mac-badge] | ![win-badge] |
[lin-badge]: https://github.com/brinkqiang/dmlua/workflows/linux/badge.svg «Linux build status» [lin-link]: https://github.com/brinkqiang/dmlua/actions/workflows/linux.yml «Linux build status» [mac-badge]: https://github.com/brinkqiang/dmlua/workflows/mac/badge.svg «Mac build status» [mac-link]: https://github.com/brinkqiang/dmlua/actions/workflows/mac.yml «Mac build status» [win-badge]: https://github.com/brinkqiang/dmlua/workflows/win/badge.svg «Windows build status» [win-link]: https://github.com/brinkqiang/dmlua/actions/workflows/win.yml «Windows build status»
Lua полностью автоматизированный движок, основанный на tolua++, поддерживает Lua 5.1–5.4
#include "role/rolemgr.h"
#include "role/role.h"
#include "gtest/gtest.h"
#include "dmlua.h"
#include "dmutil.h"
#include "script/interface.h"
#define DMLUA_TEST_COUNT 10000
TEST(luabasetest, luabasetest) {
CDMLuaEngine oDMLuaEngine;
/// The default search path is to search the root directory with the exe program /../ relative path (because cmake will add the $BUILD_TYPE directory to the generated bin directory.)
/// If you need to modify to other paths, please set your own search path
std::string strScriptRootPath = DMGetRootPath();
oDMLuaEngine.SetRootPath(strScriptRootPath + PATH_DELIMITER_STR + ".." + PATH_DELIMITER_STR);
oDMLuaEngine.AddModule(tolua_interface_open);
if (!oDMLuaEngine.ReloadScript()) {
ASSERT_TRUE(0);
return;
}
oDMLuaEngine.DoString(R"(
function addtest()
local a = 100000000
local b = 100000000
local c = a * b
print(c)
end
)");
{
for (int i = 0; i < 1; ++i) {
int r = oDMLuaEngine.Call("addtest");
}
}
if (!oDMLuaEngine.ReloadScript()) {
ASSERT_TRUE(0);
return;
}
oDMLuaEngine.DoString(R"(
function addex(first, second)
print("overflow -> " .. first * second)
return first * second
end
)");
{
for (int i = 0; i < 1; ++i) {
uint64_t r = oDMLuaEngine.CallT<uint64_t>("addex", 4294967295ULL,
4294967295ULL);
if (r >= 0) {
std::cout << r << std::endl;
}
}
}
{
oDMLuaEngine.DoString(R"(
function script.task.taskinfo()
local task = STaskInfo:new()
task.nTaskID = 1002
task.nTaskState = 2
task.nTaskCondition = 2
return task
end
)");
STaskInfo sInfo = oDMLuaEngine.CallT<STaskInfo>("script.task.taskinfo");
std::cout << sInfo.nTaskID << std::endl;
}
{
oDMLuaEngine.DoString(R"(
function script.task.taskinfo(task)
task.nTaskID = 1003
task.nTaskState = 1
task.nTaskCondition = 0
end
)");
STaskInfo sInfo;
int r = oDMLuaEngine.Call("script.task.taskinfo", &sInfo);
if (r >= 0) {
...
*Примечание: часть текста не удалось перевести из-за отсутствия контекста.*
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )