楼主: 灰帽
打印 上一主题 下一主题

[公告] 开发者问题反馈通道

  [复制链接]

39

主题

395

回帖

194

积分

服务器开发者

UID
140026
小麦
11
金锭
1454
下界之星
0
131
发表于 2019-8-5 13:17:45 | 只看该作者 IP:浙江
上次反馈表达错误,重新询问:

要如何实现让玩家不受重力的影响?

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
130
发表于 2019-8-5 10:10:09 | 只看该作者 IP:广东
超神的清凉 发表于 2019-8-2 21:20
请问modsdk有方式操作文件吗,测试使用python自带的文件操作失败,有没有方式能够储存一些数据以供永久性使 ...

如果是开发组件,那么像境界说的用extraData组件;
如果是开发网络游戏,那么可以用数据库。

22

主题

727

回帖

208

积分

Lv.5 农牧专家

UID
624989
小麦
-1
金锭
865
下界之星
0
129
发表于 2019-8-2 21:20:48 | 只看该作者 IP:山东
请问modsdk有方式操作文件吗,测试使用python自带的文件操作失败,有没有方式能够储存一些数据以供永久性使用呢?毕竟开发的时候经常需要存储数据。

3

主题

138

回帖

65

积分

Lv.3 矿物能手

UID
6472670
小麦
3
金锭
422
下界之星
0
128
发表于 2019-8-2 16:22:32 | 只看该作者 IP:福建
crazyooooo 发表于 2019-7-31 16:43
1:玩家不受重力影响,如何实现让玩家能受重力影响.
2:如果在通过Api让一个生物无法被移动的同时有碰撞箱的 ...

行为包中,1.12开始有个pushable的行为可以设定不被玩家推动或者不被其他生物推动,
1.12以下,可以用pull_through行为,value设定为1.0,但只能不被玩家推动,还是会被其他生物推动。
不被推动指的是这个生物有点会像盔甲架,可以直接穿过去。
这里给个思路,利用entity_event在生物出生时放置屏障,但同时你要在行为包里取消生物的碰撞箱,
然后如果你有在用modapi的话,可以用approachevent来进行交互等等

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
127
发表于 2019-8-2 14:46:16 | 只看该作者 IP:广东
超神的清凉 发表于 2019-8-2 10:14
请问如何注册事件监听?
如题,在官方的示例模组里添加了一个新的事件监听,但是不起作用,在modPC中调试 ...

注册的函数时OnTick,定义的函数为Tick,所以会不生效,可以修改后再试试

22

主题

727

回帖

208

积分

Lv.5 农牧专家

UID
624989
小麦
-1
金锭
865
下界之星
0
126
发表于 2019-8-2 10:14:41 | 只看该作者 IP:山东
请问如何注册事件监听?
如题,在官方的示例模组里添加了一个新的事件监听,但是不起作用,在modPC中调试时只注册了"ServerChatEvent"没有注册"OnScriptTickServer"
我想请教一下官方API上最近更新的那个注册方法是不正确的吗,或者是我遗漏了什么?只能注册一个事件监听吗?
modPC运行效果:官方的能够运行,添加的红色代码运行毫无效果

代码如下:
# -*- coding: utf-8 -*-

# 获取引擎服务端API的模块
import server.extraServerApi as serverApi
# 获取引擎服务端System的基类,System都要继承于ServerSystem来调用相关函数
ServerSystem = serverApi.GetServerSystemCls()

# 在modMain中注册的Server System类
class TutorialServerSystem(ServerSystem):

    # ServerSystem的初始化函数
    def __init__(self, namespace, systemName):
        # 首先调用父类的初始化函数
        super(TutorialServerSystem, self).__init__(namespace, systemName)
        print "===== TutorialServerSystem init ====="
        # 初始时调用监听函数监听事件
        self.ListenEvent()

    # 监听函数,用于定义和监听函数。函数名称除了强调的其他都是自取的,这个函数也是。
    def ListenEvent(self):
        # 在自定义的ServerSystem中监听引擎的事件ServerChatEvent,回调函数为OnServerChat
        self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), "ServerChatEvent", self, self.OnServerChat)
        self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), "OnScriptTickServer", self, self.OnTick)

    # 反监听函数,用于反监听事件,在代码中有创建注册就对应了销毁反注册是一个好的编程习惯,不要依赖引擎来做这些事。
    def UnListenEvent(self):
        self.UnListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), "ServerChatEvent", self, self.OnServerChat)
        self.UnListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(), "DestroyBlockEvent", self, self.OnDestroyBlock)

    # 监听ServerChatEvent的回调函数
    def OnServerChat(self, args):
        print "==== OnServerChat ==== ", args
        # 生成掉落物品
        # 当我们输入的信息等于右边这个值时,创建相应的物品
        if args["message"] == "钻石剑":
            # 创建Component,用来完成特定的功能,这里是为了创建Item物品
            comp = serverApi.CreateComponent(serverApi.GetLevelId(), "Minecraft", "item")
            # 给这个Component赋值,参数参考《MODSDK文档》
            comp.addItems = [("minecraft:diamond_sword", 1, 0, True, {"to": "inventory", "playerId": args["playerId"]})]
            # 这一步很重要,它告诉系统需要更新这个Component,继而完成响应的功能
            self.NeedsUpdate(comp)
        elif args["message"] == "钻石镐":
            comp = serverApi.CreateComponent(serverApi.GetLevelId(), "Minecraft", "item")
            comp.addItems = [("minecraft:diamond_pickaxe", 1, 0, True, {"to": "inventory", "playerId": args["playerId"]})]
            self.NeedsUpdate(comp)
        elif args["message"] == "钻石头盔":
            comp = serverApi.CreateComponent(serverApi.GetLevelId(), "Minecraft", "item")
            comp.addItems = [("minecraft:diamond_helmet", 1, 0, True, {"to": "inventory", "playerId": args["playerId"]})]
            self.NeedsUpdate(comp)
        elif args["message"] == "钻石胸甲":
            comp = serverApi.CreateComponent(serverApi.GetLevelId(), "Minecraft", "item")
            comp.addItems = [("minecraft:diamond_chestplate", 1, 0, True, {"to": "inventory", "playerId": args["playerId"]})]
            self.NeedsUpdate(comp)
        elif args["message"] == "钻石护腿":
            comp = serverApi.CreateComponent(serverApi.GetLevelId(), "Minecraft", "item")
            comp.addItems = [("minecraft:diamond_leggings", 1, 0, True, {"to": "inventory", "playerId": args["playerId"]})]
            self.NeedsUpdate(comp)
        elif args["message"] == "钻石靴子":
            comp = serverApi.CreateComponent(serverApi.GetLevelId(), "Minecraft", "item")
            comp.addItems = [("minecraft:diamond_boots", 1, 0, True, {"to": "inventory", "playerId": args["playerId"]})]
            self.NeedsUpdate(comp)
        else:
            print "==== Sorry man ===="

    def Tick(self, args):
        print "get"


    # 函数名为Destroy才会被调用,在这个System被引擎回收的时候会调这个函数来销毁一些内容
    def Destroy(self):
        print "===== TutorialServerSystem Destroy ====="
        # 调用上面的反监听函数来销毁
        self.UnListenEvent()

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
125
发表于 2019-8-1 14:54:55 | 只看该作者 IP:广东
crazyooooo 发表于 2019-7-31 16:43
1:玩家不受重力影响,如何实现让玩家能受重力影响.
2:如果在通过Api让一个生物无法被移动的同时有碰撞箱的 ...

1.玩家是受重力影响的呀,比如从高处下落就是重力的作用。
2.生物无法被移动可以通过修改实体json的方式,可以参考潜影贝的shulker.json中minecraft:movement的设置.
实体模型不可被穿越这个目前暂时还不支持设置。

39

主题

395

回帖

194

积分

服务器开发者

UID
140026
小麦
11
金锭
1454
下界之星
0
124
发表于 2019-7-31 16:43:38 来自手机 | 只看该作者 IP:浙江
1:玩家不受重力影响,如何实现让玩家能受重力影响.
2:如果在通过Api让一个生物无法被移动的同时有碰撞箱的体积。(实现类似于潜影贝的效果但没有潜影贝的特性)

12

主题

61

回帖

52

积分

Lv.3 矿物能手

UID
6514283
小麦
0
金锭
299
下界之星
0
123
发表于 2019-7-31 11:06:56 | 只看该作者 IP:江苏
雾都漫游者 发表于 2019-7-31 09:48
我之前点评了你那个问题,可以看到消息提醒吗
需要提供一下会崩溃的组件给我们

我之前就发送给小川让其转交了,或者你给我一个QQ我直接发你

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
122
发表于 2019-7-31 09:49:43 | 只看该作者 IP:广东
黑曜石网络 发表于 2019-7-30 16:21
不是很会用mc studio,主要是一直崩溃

我们尝试把这个模型放到玩家身上并播放动画,是正常的

那提供组件和资源给我们吧,我们看看问题在哪里

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
121
发表于 2019-7-31 09:48:53 | 只看该作者 IP:广东
黑曜石网络 发表于 2019-7-30 16:17
关于之前提出的自定义物品增加了数据值后导致打开合成台会崩溃的问题,有什么反馈吗

我之前点评了你那个问题,可以看到消息提醒吗
需要提供一下会崩溃的组件给我们

12

主题

61

回帖

52

积分

Lv.3 矿物能手

UID
6514283
小麦
0
金锭
299
下界之星
0
120
发表于 2019-7-30 16:21:50 | 只看该作者 IP:江苏
雾都漫游者 发表于 2019-7-30 14:31
代码没问题,这个模型在MC Studio的编辑器中导入测试能够播放run动作吗

不是很会用mc studio,主要是一直崩溃

我们尝试把这个模型放到玩家身上并播放动画,是正常的

但是使用新增生物就不播放了

12

主题

61

回帖

52

积分

Lv.3 矿物能手

UID
6514283
小麦
0
金锭
299
下界之星
0
119
发表于 2019-7-30 16:17:56 | 只看该作者 IP:江苏
本帖最后由 黑曜石网络 于 2019-7-30 16:25 编辑
雾都漫游者 发表于 2019-7-30 14:25
server_entity_module这个模块没有公开,使用的话就会通不过机审

关于之前提出的自定义物品增加了数据值后导致打开合成台会崩溃的问题,有什么反馈吗

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
118
发表于 2019-7-30 14:31:22 | 只看该作者 IP:广东
黑曜石网络 发表于 2019-7-29 12:09
设置循环播放后,在游戏内自定义生物仍然未加载动画

代码没问题,这个模型在MC Studio的编辑器中导入测试能够播放run动作吗

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
117
发表于 2019-7-30 14:25:19 | 只看该作者 IP:广东
黑曜石网络 发表于 2019-7-29 18:40
import server_entity_module as aaa
导入改包名,本地测试正常,上传到平台失败,18错误。
所有涉及到自 ...

server_entity_module这个模块没有公开,使用的话就会通不过机审
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部