怎样用NPCmod做一个物品给予者,通过对话发送物品,主要用于给新手物品。
我这里有一个办法,但是却不能完美符合你的要求首先对话怎么设置你自己一个套路带好
然后点一下可用的选项
点选择对话
先点一下前面的"总是可用"变成"...之后",然后选择你弄好的对话
这样子就好了。
BUT,对话完成后你会发现屁事都没有
然后这时你需要远离这个NPC再接近他就会给你了
不然的话,你搞一下套路,对话的时候写 “你出去逛一下,我准备一下” 这样子。
然后点一下可用的选项

点选择对话

先点一下前面的"总是可用"变成"...之后",然后选择你弄好的对话

这样子就好了。
BUT,对话完成后你会发现屁事都没有
然后这时你需要远离这个NPC再接近他就会给你了
不然的话,你搞一下套路,对话的时候写 “你出去逛一下,我准备一下” 这样子。

如果只需要给一个物品的话,可以透过在对话里嵌入命令做到
例如这样:
如果要给少量的物品,可以把这些对话串起来后变成某个对话里的选项,并且设置有条件的取得物品(避免重复取物)
如果需要大量,可以考虑在NPC附近设置命令方块列执行一串give命令。
但是考虑到命令方块对玩家的选择性可能会有问题。如果需要做到即时给予的话,就用最后的手段,脚本:(示范的NPCmod版本为1.7.10c)
在这之前,先依照作者的指示,将所需的档案放入mods的文件夹里:
我自己因为是用java8开游戏的,所以需要把nashorn.jar丢入mods里
如果不是用java8开的话应该不用,除非你想用别种语言写
进入游戏后有看到可用的脚本语言类型就可以了(右边的Language必须要有脚本语言可选,否则脚本无法执行):
然后将Enabled设置成Yes,这样这个NPC就可以执行你写的脚本了。
然后这是范例,如果你要给10种物品:(我使用ECMA语言(即是javascript)示范)
代码:
复制代码每次玩家开启对话后,都会触发dialog这边的代码
而dialog这个变数记录的数字代表的意义,是被触发的对话的ID:
执行结果:
例如这样:



如果要给少量的物品,可以把这些对话串起来后变成某个对话里的选项,并且设置有条件的取得物品(避免重复取物)
如果需要大量,可以考虑在NPC附近设置命令方块列执行一串give命令。
但是考虑到命令方块对玩家的选择性可能会有问题。如果需要做到即时给予的话,就用最后的手段,脚本:(示范的NPCmod版本为1.7.10c)
在这之前,先依照作者的指示,将所需的档案放入mods的文件夹里:

我自己因为是用java8开游戏的,所以需要把nashorn.jar丢入mods里
如果不是用java8开的话应该不用,除非你想用别种语言写
进入游戏后有看到可用的脚本语言类型就可以了(右边的Language必须要有脚本语言可选,否则脚本无法执行):

然后将Enabled设置成Yes,这样这个NPC就可以执行你写的脚本了。
然后这是范例,如果你要给10种物品:(我使用ECMA语言(即是javascript)示范)

代码:
- if(dialog == 4){
- var items = [["minecraft:bread","10"],["minecraft:diamond","1"],["minecraft:apple","5"],["minecraft:pumpkin","1"],["minecraft:iron_ingot","5"],["minecraft:gold_ingot","2"],["minecraft:wooden_sword","1"],["minecraft:leather","10"]];
- for(var i = 0 ; i < items.length ; i++){
- npc.executeCommand("give "+player.getName()+" "+items[i][0]+" "+items[i][1]);
- }
- }
而dialog这个变数记录的数字代表的意义,是被触发的对话的ID:

执行结果:

平凡的行者 发表于 2016-12-17 23:03
如果只需要给一个物品的话,可以透过在对话里嵌入命令做到
例如这样:
文中有些错误,应该是8种物品(10种太多了所以懒得设)
设置对话任务,任务完成给予物品
