开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
forked from cutself/proj
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
proj
/
cpp
/
Frame
/
Public
/
Script
/
LuaScript.h
proj
/
cpp
/
Frame
/
Public
/
Script
/
LuaScript.h
LuaScript.h 4.14 KB
一键复制 编辑 原始数据 按行查看 历史
cutself 提交于 2017年08月31日 02:55 +08:00 . add cpp
#pragma once
/*
@author zhp
@date 2014年8月31日 3:30
@JsonCall->BufCall: 2016年12月26日 21:26
@purpose for chinese lua script
*/
#include <Net/Bufcall_Socket.h>
#include <Common/UsefulClass.h>
#include <Net/IoTimer.h>
#include "../DependSelfLib.h"
#include <CmnMix/Cmn_RegexMore.h>
#include <WgFacility/CmnSceneHandler.h>
#include <vector>
#include <luabind/luabind.hpp>
class LuaScriptEchoBase : public BufCall_SocketExcept{
protected:
LuaScriptEchoBase(FuncObj& parent);
enum enOperResult{
kBeginRun, //开始运行
kStopped, //已停止
};
public:
//执行某个脚本
virtual bool RunLuaScript(const std::string& lua_file_name, const std::string& lua_serialize) = 0;
//中止脚本
virtual bool TerminateScript() = 0;
//输出脚本信息
virtual bool OutputScriptInfo( const std::string& script_info ) = 0;
//操作结果
virtual bool OperResult(enOperResult result) = 0;
private:
BC_REG_CLS_DECLARE(LuaScriptEchoBase);
};
class ScriptRunRAII{
public:
virtual ~ScriptRunRAII();
virtual bool PreRun();
virtual void AfterRun();
};
class LuasScriptEchoC : public LuaScriptEchoBase, public Singleton<LuasScriptEchoC, Singleton_Instance>{
struct stLevel0ScriptInfo{
std::string level0_script_name_;
luabind::object fn_get_script_name_;
};
typedef std::vector<stLevel0ScriptInfo> Level0Scripts;
public:
struct stEvents{
std::vector<std::string> event_names_;
};
typedef std::vector<const stEvents*> EventsCont;
public:
LuasScriptEchoC(FuncObj& parent);
~LuasScriptEchoC();
static void RegForLua(lua_State* l);
static bool IsRunning();
public:
bool TerminateScript() override;
bool OutputScriptInfo(const std::string& script_info) override;
//转换到lua
std::string ConvertToLua(const std::string& script_file_name);
luabind::object LoadScriptFile(const std::string& script_file_name, const luabind::object& script_param, bool is_new_env);
//智能换脚本相关
public:
//自动选择运行脚本
static luabind::object AutoChooseRunScript(const CSH_HandlerPtr& scene_handler, const luabind::object& fn_get_script_name);
//改变运行的脚本。如果top_n=0,则弹出到最顶层的脚本;top_n=1,则弹出到最顶层的下一层脚本,依此类推;top_n=-1,则弹出当前运行的顶层脚本,依此类推。
static void ChangeRunningScript(int top_n = 0, bool is_rerun = false);
//事件相关
public:
//执行并等待事件
//fn_event_handler或是返回真,表示事件处理成功,并会再一次执行fn_run。否则会退出 执行并等待事件,并把事件处理函数的结果返回之。
static luabind::object RunWaitEvent(const luabind::object& fn_run, const luabind::object& fn_event_handler, const std::string& event_name);
//event_names是个表,表示一系列的事件
static luabind::object RunWaitEvent_(const luabind::object& fn_run, const luabind::object& fn_event_handler, const luabind::object& event_names);
//触发事件
static void TriggerEvent(const std::string& event_name);
private:
static luabind::object RunWaitEventImpl_(const luabind::object& fn_run, const luabind::object& fn_event_handler, const stEvents& events);
protected:
bool RunLuaScript(const std::string& lua_file_name, const std::string& lua_serialize) override;
bool OperResult(enOperResult result) override;
virtual void RunScriptImpl(const std::string& lua_file_name);
virtual ScriptRunRAII* CreateRunRAII();
virtual void PreCallScriptFn(const luabind::object& lua_file_func);
virtual luabind::object GetConsoleCfg() const;
private:
void CatchRunScript(const std::string& lua_file_name);
void TerminateScriptImpl();
//注册关键字
bool RegKeywordForChinese(const char* str_word_src, const char* str_word_chinese);
static bool OutputScriptInfo_(const std::string& script_info);
private:
bool running_;
RegexWordReplace replace_from_chinese_; //从中文转换到lua
IoTimerPtr timer_to_run_script_;
Level0Scripts level0_scripts_; //当前运行的顶级脚本名
EventsCont cur_events_; //当前事件
protected:
ScriptRunRAII* script_raii_;
BC_REG_CLS_DECLARE(LuasScriptEchoC);
};
class LuasScriptEchoS : public LuaScriptEchoBase{
public:
LuasScriptEchoS(FuncObj& parent);
bool RunLuaScript(const std::string& lua_file_name, const std::string& lua_serialize = kEmptyStr) override;
bool TerminateScript() override;
protected:
bool OperResult(enOperResult result) override;
BC_REG_CLS_DECLARE(LuasScriptEchoS);
};
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

本项目是win32下大型客户端游戏的游戏辅助开发框架,由于它集成并包含了游戏辅助开发的各方面功能,称本项目为win32辅助开发的组件也可。 内含具体项目有fifa online3、疾风之刃、怪物猎人online、流放之路等,也有辅助帐号验证服务器,帐号查寻与管理工具,特征码识别,资源文件系统等。 本人现已转型,特发布此项目,旨在分享一份只供参考的多年工作经验与心血,若本项目中有些您认为闪亮的设计、思路或技巧,并对您有帮助的话,则乐哉幸甚!
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/phpcms/proj.git
git@gitee.com:phpcms/proj.git
phpcms
proj
proj
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /