跳到主要内容

通用

编码转换

编码转换: gbk转utf-8 sys_gbk2utf8

  • args:
名字类型说明、描述
sourcestring源字符串
---
  • ret: string utf-8编码字符串

编码转换: utf-8转gbk sys_utf82gbk

  • args:
名字类型说明、描述
sourcestring源字符串
---
  • ret: string gbk编码字符串

系统路径编码转换(主要应用于中文路径,windows平台转换为gbk编码,linux平台转换为utf-8编码) sys_path_encoding

  • args:
名字类型说明、描述
sourcestring源字符串
---
  • ret: string 转换后的字符串

载入文件 include

  • args:
名字类型说明、描述
require_filestring需要载入的文件,core同级别的相对路径
---
  • ret: table 载入的文件module

  • 示例:

function isc_test_general:include()
-- 示例展示测试载入检查中文路径/文件是否存在
local flag, status = pcall(edi.general.include, edi.general, "中文路径/测试.lua")
if not flag then
print("isc_test_general not include flag: ", tostring(flag))
end
end

全局数据

初始化全局数据 init_global_val

  • args:
名字类型说明、描述
modulenamestring模块名
is_safeboolean是否存储(默认有变化时3分钟模块自动存盘)
---
  • ret: 无

  • 示例:

function isc_test_general:init_global_val(...)
local mode = "test"

edi.general:init_global_val(mode, true)

local key_int = 1
edi.general:set_global_int(mode, key_int, 100)
local keyval = edi.general:get_global_int(mode, key_int)
print("keyval ".. keyval);

edi.general:set_global_int(mode, 2, 1001)
local list_str = edi.general:get_all_global_str(mode)
for k, v in pairs(list_str) do
print("k ".. k .. ", v " .. v);
end

edi.general: save_global_val(mode)
print(" save_global_val ok");

local key_str = "test_key1"
edi.general:set_global_str(mode, key_str, "hello world!")
local str_val = edi.general:get_global_str(mode, key_str)
print("str_val " .. str_val)

edi.general:set_global_str(mode, "helo", "hello tom!")
local list_str = edi.general:get_all_global_str(mode)
for k, v in pairs(list_str) do
print("k ".. k .. ", v " .. v);
end

edi.general:clean_global_val(mode)
print("clean_global_val ok");

local str_val2 = edi.general:get_global_str(mode, key_str)
print("str_val " .. str_val2)
end

清空全局数据 clean_global_val

  • args:
名字类型说明、描述
modulenamestring模块名
---
  • ret: 无

获取全局int数据 get_global_int

  • args:
名字类型说明、描述
modulenamestring模块名
keynumber
---
  • ret: number

设置全局inti数据 set_global_int

  • args:
名字类型说明、描述
modulenamestring模块名
keynumber
valnumber
---
  • ret: 无

获取全部int数据 get_all_global_int

  • args:
名字类型说明、描述
modulenamestring模块名
---
  • ret: table 全局string数据列表<k, v>

  • 示例:

function isc_test_general:get_all_global_int()
local ret = edi.general:get_all_global_int(module.KVMODE)
print("ret : ", ret)
end

获取全局string数据 get_global_str

  • args:
名字类型说明、描述
modulenamestring模块名
keystring
---
  • ret: string

设置全局string数据 set_global_str

  • args:
名字类型说明、描述
modulenamestring模块名
keystring
valstring
---
  • ret: 无

生成唯一ID make_uuid

  • args:
名字类型说明、描述
---
  • ret: string 字符串唯一ID

  • 示例:

function isc_test_general:make_uuid(...)
local id = edi.general:make_uuid()
print("id : ", id)
end

获取基础执行路径 get_envir_base_dir

  • args:
名字类型说明、描述
---
  • ret: string 执行路径

  • 示例:

function isc_test_general:get_envir_base_dir()
local ret = edi.general:get_envir_base_dir()
print("ret : ", ret)
end

消息、界面

是否存在非法字符 is_filter_char

  • args:
名字类型说明、描述
ctxstring内容
---
  • ret: boolean true-是 false-否

  • 示例:

function isc_test_general:is_filter_char(...)
local ctx = "测试世界频道"
local ret = edi.general:is_filter_char(ctx)
print("ctx: ", ctx)
print("ret: ", ret)
end

发送系统邮件 send_sys_mail

  • args:
名字类型说明、描述
recv_idnumber邮件接收者玩家id
mail_titlestring邮件标题
mail_cxtstring邮件内容
itemsitem_info[]附件奖励 { item_info }
remarkstring标记
---
  • ret: 无

  • 示例:

function isc_test_general:send_sys_mail(actor, ...)
local playerId = edi.player:get_uuid(actor)
local items = {}
edi.struct:append_item_info(items, 101, 1, false)
edi.struct:append_item_info(items, 103, 1, false)
edi.general:send_sys_mail(playerId, "mail_title", "mail_cxt", items, "remark")
end

聊天 chat

  • args:
名字类型说明、描述
fromuserdata
rev_namestring接收者玩家名字
channelCHAT_TYPE频道枚举
saystring聊天内容
---
  • ret: 无

  • 示例:

function isc_test_general:chat(player, ...)
edi.general:chat(player, "元元", 0, "私聊频道")
edi.general:chat(player, "", 1, "私聊频道")
--edi.general:chat(player, "", 2, "世界频道")
end

发送文字提示 send_player_notice

  • args:
名字类型说明、描述
playeruserdata玩家对象
styleNOTICE_TYPE枚举
contentstring内容
---
  • ret: 无

  • 示例:

function isc_test_general:send_player_notice(player, ...)
edi.general:send_player_notice(player, 8, "玩家个人公告测试")
end

全服广播 send_broadcast_notice

  • args:
名字类型说明、描述
styleNOTICE_TYPE枚举
contentstring内容
---
  • ret: 无

  • 示例:

function isc_test_general:send_broadcast_notice(player, ...)
edi.general:send_broadcast_notice(8, "全服公告测试")
end

全视野广播 broadcast_notice_eyeshot

  • args:
名字类型说明、描述
objectuserdata对象
styleNOTICE_TYPE枚举
contentstring内容
---
  • ret: 无

  • 示例:

function isc_test_general:broadcast_notice_eyeshot()
edi.general:broadcast_notice_eyeshot(module.player, core_def.NOTICE_TYPE.TopHorseLamp, "全视野广播测试")
end

全地图广播 broadcast_notice_map

  • args:
名字类型说明、描述
sceneuserdata场景对象
styleNOTICE_TYPE枚举
contentstring内容
---
  • ret: 无

  • 示例:

function isc_test_general:broadcast_notice_map()
edi.general:broadcast_notice_map(module.player, core_def.NOTICE_TYPE.TopHorseLamp, "全地图广播测试")
end

全队广播 broadcast_notice_team

  • args:
名字类型说明、描述
teamuserdata组队对象
styleNOTICE_TYPE枚举
contentstring内容
---
  • ret: 无

  • 示例:

function isc_test_general:broadcast_notice_team()
edi.general:broadcast_notice_team(module.player, core_def.NOTICE_TYPE.TopHorseLamp, "全队广播测试")
end

全公会广播 broadcast_notice_guild

  • args:
名字类型说明、描述
guilduserdata公会对象
styleNOTICE_TYPE枚举
contentstring内容
---
  • ret: 无

  • 示例:

function isc_test_general:broadcast_notice_guild()
edi.general:broadcast_notice_guild(module.player, core_def.NOTICE_TYPE.TopHorseLamp, "全行会广播测试")
end

发送错误码 send_err_notice

  • args:
名字类型说明、描述
playeruserdata玩家对象
errnumber错误码id common_error_code.xlsx表
paramstable?插入参数列表 中文中文<@0>中文<@1> => <@0>取 params的第一个依次往后填充
---
  • ret: 无

  • 示例:

function isc_test_general:send_err_notice(player, ...)
edi.general:send_err_notice(player, 1000)
end

打开ssr界面 send_open_ssr

  • args:
名字类型说明、描述
playeruserdata玩家对象
contentstring内容
---
  • ret: 无

  • 示例:

function isc_test_general:send_open_ssr(player, ...)
-- 这部分需要用具体的ssr界面做例子
edi.general:send_open_ssr(player, ...)
end

关闭ssr界面 send_close_ssr

  • args:
名字类型说明、描述
playeruserdata玩家对象
ssr_uidintegerSSR界面ID
---
  • ret: 无

  • 示例:

function isc_test_general:send_close_ssr(player, ssr_uid)
-- 这部分需要用具体的ssr界面做例子
edi.general:send_close_ssr(player, ssr_uid)
end

局部刷新ssr界面 send_execute_ssr

  • args:
名字类型说明、描述
playeruserdata玩家对象
contentstring数据内容
---
  • ret: 无

  • 示例:

function isc_test_general:send_execute_ssr(player, content)
-- 这部分需要用具体的ssr界面做例子
edi.general:send_execute_ssr(player, content)
end

发送协议给玩家 send_player_proto

  • args:
名字类型说明、描述
playeruserdata玩家对象
cmdstring协议命令
ctxstring推送内容
---
  • ret: 无

  • 示例:

function isc_test_general:send_player_proto(player, cmd, ctx)
edi.general:send_player_proto(player, cmd, ctx)
end

在线人员全服广播推送协议 send_broadcast_proto

  • args:
名字类型说明、描述
cmdstring协议命令
ctxstring推送内容
---
  • ret: 无

  • 示例:

function isc_test_general:send_broadcast_proto(cmd, ctx)
edi.general:send_broadcast_proto(cmd, ctx)
end

配置

通过配置名以及id获取数据 global.xlsx表需要特殊处理 返回值为string类型的value 非配置表数据 不可通过'*'获取全部配置 read_xlsx

  • args:
名字类型说明、描述
xlsx_namestringexcel/xlsx配置表名字
keynumber or string配置key '*'表示全部数据, 表id查询用number型,用名字查询用string, 当前并非所有表都支持通过名字查询配置信息
---
  • ret: excel_cfg|excel_cfg[]|string? xlsx 的配置信息(每张表各不相同,具体字段名对照xlsx表的字段名),如items.xlsx 的字段name,表示名字,那么lua中使用为 table.name

  • 示例:

function isc_test_general:read_xlsx()
local all = edi.general:read_xlsx("items", "*") -- 整张表
print("items: all: ", all)
local get = edi.general:read_xlsx("items", 100010001) -- 指定id的数据
print("items: get: ", get)
local find = edi.general:read_xlsx("items", "开天") -- 指定名称道具
print("items: find: ", find)
end

时间、定时器

添加定时器 add_timer

  • args:
名字类型说明、描述
keystring标记
ticknumber间隔时间(毫秒)
coutnumber次数
callback_funcfunction回调函数
callback_datastring回调数据
---
  • ret: 无

  • 示例:

function isc_test_general:add_timer(gl_timer_key)

-- 定时器回调
local _callback = function(strdata)
print("add_timer strdata: ", strdata)
end
-- 添加定时器
edi.general:add_timer(gl_timer_key, 1000, 1, _callback, "xxstrdata")
end

删除定时器 del_timer

  • args:
名字类型说明、描述
keystring标记
---
  • ret: 无

  • 示例:

function isc_test_general:del_timer(gl_timer_key)
edi.general:del_timer(gl_timer_key)
end

判断是否存在指定定时器 has_timer

  • args:
名字类型说明、描述
keystring标记
---
  • ret: boolean true-存在 false-不存在

  • 示例:

function isc_test_general:has_timer(gl_timer_key)
local bhas = edi.general:has_timer(gl_timer_key)
print("bhas ", bhas)
end

添加计划任务 add_crontab

  • args:
名字类型说明、描述
keystring标记
crontabstring计划任务 * * * * * *
callback_funcfunction回调函数
callback_datastring回调数据
---
  • ret: 无

  • 示例:

function isc_test_general:add_crontab(crontab_timer)

local _callback = function(strdata)
print("add_crontab strdata: ", strdata)
end
-- 每分钟的第2秒触发
local crontab = "2 * * * * *"
edi.general:add_crontab(crontab_timer, crontab, _callback, "xxstrdata")
end

删除计划任务 del_crontab

  • args:
名字类型说明、描述
keystring标记
---
  • ret: 无

  • 示例:

function isc_test_general:del_crontab(crontab_timer)
edi.general:del_crontab(crontab_timer)
end

判断是否有指定的计划任务 has_crontab

  • args:
名字类型说明、描述
keystring标记
---
  • ret: boolean true-存在 false-不存在

  • 示例:

function isc_test_general:has_crontab(crontab_timer)
local has = edi.general:has_crontab(crontab_timer)
print("has : ", has)
end

获取当前时间戳(秒) get_now_seconds

  • args:
名字类型说明、描述
---
  • ret: integer 当前时间戳(秒)

  • 示例:

function isc_test_general:get_now_seconds()
LOGI("get now seconds : ".. edi.general:get_now_seconds())
end

获取当前为开服第几天 get_open_svr_day

  • args:
名字类型说明、描述
---
  • ret: integer 开服第几天

  • 示例:

function isc_test_general:get_open_svr_day()
LOGI("get now seconds open server day : ".. edi.general:get_open_svr_day())
end

获取首次开服时间 get_server_first_open_timestamp

  • args:
名字类型说明、描述
---
  • ret: integer 获取首次开服时间戳(秒)

  • 示例:

function isc_test_general:get_server_first_open_timestamp()
local timestamp = edi.general:get_server_first_open_timestamp()
print("timestamp: ", timestamp)
end

获取当前毫秒时间戳 get_now_milliseconds

  • args:
名字类型说明、描述
---
  • ret: integer 当前毫秒

  • 示例:

function isc_test_general:get_now_milliseconds()
LOGI("get now mlliseconds : ".. edi.general:get_open_sget_now_millisecondsvr_day())
end

获取0点时间戳(秒) day_zero_time

  • args:
名字类型说明、描述
time_stampinteger时间戳
---
  • ret: integer 0点时间戳(秒)

  • 示例:

function isc_test_general:day_zero_time()
local cur_zero_time = edi.general:day_zero_time(edi.general:get_now_seconds())
LOGI("零点时间戳 : ".. cur_zero_time)
end

计算周几 get_week_day

  • args:
名字类型说明、描述
timenumber时间戳(秒)
---
  • ret: integer 周几 -1 表示无效: 0-6表示从周天到周六

tlog

发送日志 record_tlog

  • args:
名字类型说明、描述
contentstring内容
---
  • ret: 无

  • 示例:

function isc_test_general:record_tlog()
edi.general:record_tlog("content", "context", 0)
LOGI("record_tlog ok")
end

获取mid get_mid

  • args:
名字类型说明、描述
playeruserdata玩家对象
---
  • ret: string mid

获取设备id get_device_id

  • args:
名字类型说明、描述
playeruserdata玩家对象
---
  • ret: string 设备id

获取玩家ip get_player_ip

  • args:
名字类型说明、描述
playeruserdata玩家对象
---
  • ret: string 玩家ip

获取玩家端口 get_player_port

  • args:
名字类型说明、描述
playeruserdata玩家对象
---
  • ret: number 玩家端口

获取服id get_group_id

  • args:
名字类型说明、描述
---
  • ret: number 服id

获取一级渠道id get_channel_id

  • args:
名字类型说明、描述
---
  • ret: string 一级渠道id

获取二级渠道id get_sub_channel_id

  • args:
名字类型说明、描述
---
  • ret: string 二级渠道id

获取平台id get_platform

  • args:
名字类型说明、描述
---
  • ret: string 获取平台id

获取游戏名称 get_game_project_name

  • args:
名字类型说明、描述
playeruserdata玩家对象
---
  • ret: string 游戏名称

是否开启tlog is_open_tlog

  • args:
名字类型说明、描述
---
  • ret: boolean 是否开启tlog

  • 示例:

function isc_test_general:is_open_tlog()
local ret = edi.general:is_open_tlog()
print("ret : ", ret)
end

获取全局信息 get_global_info

  • args:
名字类型说明、描述
---
  • ret: {app_id:string,area_id:string,server_id:string,channel_id:string,sub_channel_id:string,platform:string,game_name:string} 全局信息表包含:app_id area_id server_id channel_id sub_channel_id platform game_name

  • 示例:

function isc_test_general:get_global_info()
local info = edi.general:get_global_info()
local app_id = info.app_id
LOGI("app_id: " .. app_id)
local area_id = info.area_id
LOGI("area_id: " .. area_id)
local server_id = info.server_id
LOGI("server_id: " .. server_id)
local channel_id = info.channel_id
LOGI("channel_id: " .. channel_id)
local sub_channel_id = info.sub_channel_id
LOGI("sub_channel_id: " .. sub_channel_id)
local platform = info.platform
LOGI("platform: " .. platform)
end

其他

随机数生成 random

  • args:
名字类型说明、描述
param1integer or number参数1
param2integer or number参数2
---
  • ret: number 随机数

  • 示例:

function isc_test_general:random()
local rate = edi.general:random(1, 10000)
LOGI("获取1-10000随机数".. rate)
end

注册配置信息到服务器(接口偏向引擎协助支持具体功能用) reg_cfg_to_server

  • growup_tips 表的内容 为 { tips = "key对应的描述内容" }

  • args:

名字类型说明、描述
table_namestring表名字
keystring
ctxtable内容 table数据 引擎内部依据需要向lua获取数据,依据每个table的规则进行解析
---
  • ret: 无

  • 示例:

function isc_test_general:reg_cfg_to_server()
local grow_up_key = "grow_up_key"
local grow_up_name = "grow_up_name"
edi.general:reg_cfg_to_server("growup_tips", grow_up_key, { tips = grow_up_name})
end

重名检测 check_duplicate_name

  • args:
名字类型说明、描述
playeruserdata玩家对象
namestring名字
---
  • ret: boolean 是否重名

  • 示例:

function isc_test_general:check_duplicate_name()
local bRet = edi.general:check_duplicate_name(module.player, "小明")
if bRet == true then
LOGI("重名")
else
LOGI("未重名")
end
end

获取区ID get_area_id

  • args:
名字类型说明、描述
---
  • ret: number 区ID

获取游戏ID get_app_id

  • args:
名字类型说明、描述
---
  • ret: number 游戏ID

http请求 http_request

  • args:
名字类型说明、描述
methodnumber0:post,1:get
urlstring请求域名
payloadstring请求内容(get时无效)
index_keystring标记Key
callback_funcfunction回调函数(参数参考示例)
callback_datastring回调数据
---
  • ret: 无

  • 示例:

function isc_test_general:http_request()
local _callback = function(index_key, is_success, response_or_error, callback_data)
print("http request callback: ", is_success, response_or_error)
end
edi.general:http_request(0, "www.baidu.com", "", "test", _callback, "")
end

打印table表,debug级别 printtab

  • args:
名字类型说明、描述
...any任意数据
---
  • ret: 无