Skip to content

Latest commit

 

History

History
105 lines (85 loc) · 3.05 KB

README.md

File metadata and controls

105 lines (85 loc) · 3.05 KB

Getting Started

(1)设置环境变量 JAVA_HOME

(2)设置Path下添加%JAVA_HOME%\bin

(3)VSCode打开服务器工程。

(4)设置引用的jar包路径:sfs2x-core.jar sfs2x.jar

(5)若新建工程,工程的主类必须以 *Extension形式,否则会无法辨认!!

(6)运行enumtool.exe生成前后端(C#+JAVA)公用的枚举类型。(可选)

(7)运行protoname.exe生成前后端(C#+JAVA)公用的消息名称。(可选)

(8)运行protos.bat生成前后端(C#+JAVA)公用的Proto。(可选)

(9)修改publish.bat里面SFS_Path的安装路径。

(10)使用publish.bat发布到sfs的extensions目录下。

(11)为了便于框架升级,开发者推荐在GameLogic下写自己的逻辑。

public class GameWorld extends GameBehaviour implements IWorld  {
    @Override
    public void Initialize() {
        TestTable();
        InitManager();
        RegHandler();
        TestDBServer();
    }

    ///初始化管理器
    void InitManager() {
        modelMgr().AddModel(ModelNames.User, new UserModel());
        modelMgr().AddModel(ModelNames.Backpack, new BackpackModel());
    }

    ///注册处理器
    void RegHandler() {
        handlerMgr().AddHandler(Protocal.ReqLogin, new LoginHandler());
    }

    ///Test Table
    void TestTable() {
        GlobalConfigTableItem item = tableMgr().globalConfigTable.GetItemByKey("CommonWhite");
        logMgr().Trace(String.format("id={%s} value={%s}", item.id, item.value));
    }

    /**
     * 测试数据库
     */
    void TestDBServer() {
        dataMgr().TestDB();
    }

    @Override
    public void OnDispose() {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'OnDispose'");
    }
}
public class LoginHandler extends BaseHandler {
    @Override
    public void OnMessage(User user, byte[] bytes) {
        ///解析客户端数据
        Person person = null;
        try {
            person = Person.parseFrom(bytes);
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
        if (person != null) {
            logMgr().Trace("Person Count: " + person.getName());
        }

        ///从数据库初始化数据
        UserEntity userEntity = new UserEntity("10000");
        if (userEntity != null) {
            userEntity.Initialize();
        }
        
        ///发送reply数据
        UserInfo info = UserInfo.newBuilder()
            .setUserid("10000")
            .setName("张三")
            .setMoney(999999)
            .build();
        ResLogin login = ResLogin.newBuilder()
            .setUserinfo(info)
            .build();
        SendData(user, ProtoType.LuaProtoMsg, Protocal.ResLogin, login);
    }
}

(12)新建扩展步骤登录http://localhost:8080后台后,然后如图所示: (13)重启sfs即可运行。在运行日志中找到MainExtension的信息即为成功。