程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 用lua_tinker將lua腳本嵌入到游戲服務器

用lua_tinker將lua腳本嵌入到游戲服務器

編輯:C++入門知識

     

class MessageBlock
{
    ...
    ///
    int write_char(const char value);
    int write_short(const short value);
    int write_int(const int value);
    int write_string(const char* ss);
    char read_char();
    short read_short();
    int read_int();
    char* read_string();
}

int MessageBlock::write_char(const char value)
{
	(*this) << value;
	return 0;
}

int MessageBlock::write_short(const short value)
{
	(*this) << value;
	return 0;
}

int MessageBlock::write_int(const int value)
{
	(*this) << value;
	return 0;
}

int MessageBlock::write_string(const char* ss)
{
	(*this) << ss;
	return 0;
}

char MessageBlock::read_char()
{
	char a;
	(*this) >> a;
	return a;
}

short MessageBlock::read_short()
{
	short s=0;
	(*this) >> s;
	return s;
}

int MessageBlock::read_int()
{
	int i=0;
	(*this) >> i;
	return i;
}

char* MessageBlock::read_string()
{
	static char ss[150];
	(*this) >> ss;
	return ss;
}

 


  

extern "C"
{
	#include "lua.h"
	#include "lualib.h"
	#include "lauxlib.h"
};

#include "lua_tinker.h"



int GameMonitor::lua_init()
{
	this->L = lua_open();  

	luaopen_base(this->L);  //
	luaopen_string(this->L);


	return 0;
}

int GameMonitor::lua_class()
{
       //注冊MessageBlock 到lua
	

	return 0;
}

int GameMonitor::lua_method()
{
        
	


return 0; } int GameMonitor::lua_member() { //如需要,注冊一些成員 return 0; } int GameMonitor::lua_batfile() { //運行腳本 進入主邏輯循環 lua_tinker::dofile(this->L,"LuaScript/MsgPrc.lua"); return 0; }

    

--msg = MessageBlock(1024)
--
--msg:write_int(10)
--
--print (msg:read_int())
--
--a = "sdsdcds"
--
--msg:write_string(a);
--
--print (msg:read_string())

local s_msghead = {}

local msg

--主邏輯,死循環,用來處理消息 local function run_logic() while true do msg = peek_msg() if msg == nil then sleep(1) else process_msg(msg) end end end local function process_msg(msg) msg_head = msg:read_int() if s_msghead[msg_head] then s_msghead[msg_head](msg) end end
--在此注冊消息處理邏輯 local function init_msghead() s_msghead[10001] = process_10001 s_msghead[10002] = process_10002 end local function process_10002(msg) msg.read_int(a); msg.read_string(b); --process remsg = MessageBlock(50); remsg.write_int(100) remsg.write_string("ok"); respond_to_client(remsg); end --process_10001 init_msghead() run_logic()

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved