gpt4 book ai didi

Java + 脚本——对象改变?

转载 作者:行者123 更新时间:2023-12-01 22:22:07 26 4
gpt4 key购买 nike

我不知道术语对象更改在这里是否正确,或者它是否与所提出的问题相关,所以如果不正确并且如果有人想要的话,我会在建议中道歉随意更改标题

基本上,我正在开发一个小型多人游戏项目,在该项目中,我希望能够为玩家启用脚本来对其服务器进行修改,而无需触及原始服务器源代码。我还不确定我计划使用哪种脚本语言,但首先我需要弄清楚这是否可能。

为了演示,我们使用平面文件存储来为我们的玩家保存原始文本格式,我们的玩家类如下所示:

public final class Player extends AliveEntity {
private String name;
private int currency;

public Player(String name, int currency) {
this.name = name;
this.currency = currency;
}

// Getters & Setters here...
}

现在假设我们的文件保存系统保存了 Player 类中的所有变量,因此我们的保存文件可能如下所示:

**JohnDoe.txt**
name = "JohnDoe"
currency = 0

可以说,我希望人们能够通过脚本对 Player 类进行更改,作为 modding api 的一部分,这将允许他们向该类添加另一个变量。例如(伪脚本示例)

**Mod.script**
Script Start:
Player.add(Integer, Score)
:Script End

为了举例,假设我们希望在执行脚本后允许我们的玩家类成为这样的东西。

public final class Player extends AliveEntity {
private String name;
private int currency;
private int score;

public Player(String name, int currency) {
this.name = name;
this.currency = currency;
}

// Getters & Setters here...
}

分数现在将成为玩家类别的一部分并保存在玩家文件中。

也许这个实现想法不合逻辑,或者是不可能的,但我想知道它是否可能以及正确的方法是什么。正如您所看到的,我只需要向播放器类添加可供其他脚本使用的变量,并将与播放器一起保存/加载。

最佳答案

你可以做的就是在你的玩家类别中拥有一张 map 。如果您希望有多种类型,则此 map 不会描述任何类型。

HashMap<Object, Object> properties = new HashMap<>();

但是,如果您要使用脚本语言,我相信打字可能会很困难,所以您也可以坚持使用字符串。

我会推荐 LUA,因为它相当成熟并且对 Java 具有良好的绑定(bind)。

否则,您可以拥有一个带有名为属性的对象的 map

public class Properties{
String type;
String value
}

然后,您可以使用该对象的 type 属性来确定将其传输到脚本时应采用的类型。

关于Java + 脚本——对象改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com