@@Leo 发表于 2018-2-21 20:03
emm跟执行普通指令一样executeCommand()不可以么?
至于选取点……那么就要深究WE指令了,加油 ...
不行的 不可以两条//
粘兽sama 发表于 2018-2-21 20:54
不行的 不可以两条//
之前我在42楼有回覆说可以使用CBWrapper插件
至少我之前1.7.2版本的服务器是这么做的
不过站内好像没有这款插件的介绍
你要不要去下面这个连结看看?
https://dev.bukkit.org/projects/cbwrapper
粘兽sama 发表于 2018-2-21 20:54
不行的 不可以两条//
如果命令里不用"//",而是弄成"/"+"/"这样,可以吗?
本帖最后由 fankieqiu 于 2018-2-22 18:35 编辑
请教一下大佬们两个问题。
第一,我想做一个在和npc对话时,玩家选不同选项执行不同的命令,请问怎么做?譬如if玩家在id多少的对话里选项选1,就执行什么,选2又执行什么这样,然后还能getsoruce到对话的玩家
第二,可不可以用脚本引出对话框?譬如玩家选项选1,然后执行脚本,随机弹出对话框A或者B这样?
好吧,其实我是想用npc脚本做个赛马的游戏
我想说一下思路
首先和一个赌马的npc对话,然后4个选项,分别是ABCD吧,然后选了自己想选的,npc没收你的票
然后执行脚本,在跑马场召唤ABCD4个马,然后他们向着4个并排的目标点跑,中间一直随机改变他们的速度
然后npc检测这4个目标点,哪个目标点最快检测到有实体,就输出一个结果
然后如果这个结果和玩家选的结果一样,就奖励,不然就没奖励
可是有几个问题
首先怎样可以在选完选项之后执行脚本
还有输出结果之后,怎样检测他和玩家选的选项一不一样
还有奖励的方式,我也不是很确定怎样给奖励
给到正确的人我觉得有点难
还有怎样在跑马的过程中不接受其他人投注
请教一下大佬们两个问题。
第一,我想做一个在和npc对话时,玩家选不同选项执行不同的命令,请问怎么做?譬如if玩家在id多少的对话里选项选1,就执行什么,选2又执行什么这样,然后还能getsoruce到对话的玩家
第二,可不可以用脚本引出对话框?譬如玩家选项选1,然后执行脚本,随机弹出对话框A或者B这样?
好吧,其实我是想用npc脚本做个赛马的游戏
我想说一下思路
首先和一个赌马的npc对话,然后4个选项,分别是ABCD吧,然后选了自己想选的,npc没收你的票
然后执行脚本,在跑马场召唤ABCD4个马,然后他们向着4个并排的目标点跑,中间一直随机改变他们的速度
然后npc检测这4个目标点,哪个目标点最快检测到有实体,就输出一个结果
然后如果这个结果和玩家选的结果一样,就奖励,不然就没奖励
可是有几个问题
首先怎样可以在选完选项之后执行脚本
还有输出结果之后,怎样检测他和玩家选的选项一不一样
还有奖励的方式,我也不是很确定怎样给奖励
给到正确的人我觉得有点难
还有怎样在跑马的过程中不接受其他人投注
fankieqiu 发表于 2018-2-22 16:00
请教一下大佬们两个问题。
第一,我想做一个在和npc对话时,玩家选不同选项执行不同的命令,请问怎么做?譬 ...
关于第一点:
npc的对话选项本身就可以设置执行哪条命令
你在[对话框选项]的设定页面中编辑每一个选项时,应该会有一个[选项类型]的项目可以选
那个项目可以被设置为[命令方块],这表示当你在对话中选了这个选项,将会执行你在这里预先设定好的命令
第二点,刚刚研究后得到的结果是可以的
有两种方法:
第一种比较简单,就是使用npc的命令:
/noppes dialog show <player> <dialog> <name>
这条命令执行后,玩家<player>会立刻看到编号为<dialog>的对话。对话中NPC的名子将显示为<name>
但是这条命令有个小缺点:对话页面的左下角不会出现NPC的模型,因为该命令并非真的去抓一个实际存在的NPC来跟玩家对话,而是创立一个虚拟的NPC和玩家对话
所以后来我去看了一下这条命令的源码,找到了NPC的对话是如何被调出来
只要执行NoppesUtilServer类中的静态方法openDialog()即可:
var dialogs = Java.type("noppes.npcs.controllers.DialogController").instance.dialogs;
Java.type("noppes.npcs.NoppesUtilServer").openDialog(player.getMCEntity(),npc.getMCEntity(),dialogs.get(1));
第一条是取得全部的npc对话
第二条是调用openDialog直接让玩家看到对话
上面这个例子会让玩家看到编号为1的对话,左下角的NPC模型会是玩家右键点击的NPC(如果你这两行代码是放在interact监听项里的话)
本帖最后由 fankieqiu 于 2018-2-22 18:50 编辑
谢谢大神。我说的选项执行命令,不是说游戏的指令呢,是指不同的脚本。请看我后面的补充,我想达到的效果是这样,譬如玩家选了选项1,然后就储存起来,然后最后赛马出来的结果就是1,检测一下和玩家的选项一样,就得到奖励这样。
还有额外有个问题,npc有办法做出破甲这样的攻击吗?就是检测玩家身上穿的物品,然后统计他们的护甲值,然后攻击伤害加上这个护甲值总和...
攻击修改容易,检测身上装备(而非背包)我就不会了,还有统计护甲值,脚本能做到这么强大吗?
平凡的行者 发表于 2018-2-22 18:36
关于第一点:
npc的对话选项本身就可以设置执行哪条命令
你在[对话框选项]的设定页面中编辑每一个选项时 ...
谢谢大神。我说的选项执行命令,不是说游戏的指令呢,是指不同的脚本。请看我后面的补充,我想达到的效果是这样,譬如玩家选了选项1,然后就储存起来,然后最后赛马出来的结果就是1,检测一下和玩家的选项一样,就得到奖励这样。
还有额外有个问题,npc有办法做出破甲这样的攻击吗?就是检测玩家身上穿的物品,然后统计他们的护甲值,然后攻击伤害加上这个护甲值总和...
攻击修改容易,检测身上装备(而非背包)我就不会了,还有统计护甲值,脚本能做到这么强大吗?
本帖最后由 平凡的行者 于 2018-2-23 20:04 编辑
恩......大概了解了
关于第一点,你可以把脚本写在dialog监听项内,而这个监听项中有一个变数可以使用:dialog
这个变数代表的是当前玩家看到的对话ID
所以我自己的方法是:给这个NPC设置4个选项,每一个选项都会连到不同的对话
脚本中藉由判断玩家目前看到哪个对话来得知玩家选了哪个选项
然后dialog项内这样写:
if(dialog >= 10 && dialog <= 13){
player.setStoredData("horse_racing_choice",dialog);
}
由于我新建的4个选项后的对话ID分别是10,11,12,13,所以我就先判断是不是这四个对话的其中一个再执行脚本
然后使用setStoredData来记录玩家选了哪个对话ID,记录起来,等赛马结果出来后再比对是否选中
然后如果你想在赛马途中阻止玩家选择马匹,可以利用阵营点数来控制对话
藉由给对话的[可用的选项]添加阵营点数的判断条件,然后在脚本里操作阵营点数就可以达到控制对话选项的效果
你可以另外创立一个阵营专门给对话判断
然后使用player.getFactionPoints(int faction)和player.addFactionPoints(int faction,int points)来取值或增加(注意:是增加,增加的点数可为负数)该阵营的点数
这个做法有点类似计分板的操作
然后关于输出赛马的结果,我建议可以用NPC魔杖制作马匹,让马自行判断自己是否为第一个到达终点的
结果存在世界的storedData中(使用world.setStoredData()存入),然后NPC就检查这项storedData是否有结果
有的话就可以开始发奖励。
然后关于第二点:
NPC的攻击设定中没有破甲设定,但是利用脚本做到破甲攻击是可行的
不过我是建议不要去计算护甲值,这样写起来麻烦
所以我自己会直接创立一个新的攻击事件取代
刚刚稍微对照了一下DamageSource的函式功能后写了个脚本
近战伤害的话可以在attack监听项中这样写:
if(!event.isRange()){
event.setCancelled(true);
var clsDSnpc = Java.type("noppes.npcs.NpcDamageSource");
var testDS = new clsDSnpc("mob",npc.getMCEntity());
testDS.func_76348_h();
event.getTarget().getMCEntity().func_70097_a(testDS,event.getDamage());
}
第一行是判断NPC该次攻击是否为近战攻击
第二行是取消原本的攻击事件
三四五行是另外创立一个新的伤害源,并且将该伤害源设定为可穿甲
第六行是对NPC的攻击目标施加该伤害,伤害值指定为全国**该次攻击的伤害
远程伤害的破甲效果暂时没研究
fankieqiu 发表于 2018-2-22 18:41
谢谢大神。我说的选项执行命令,不是说游戏的指令呢,是指不同的脚本。请看我后面的补充,我想达到的效果 ...
恩......大概了解了
关于第一点,你可以把脚本写在dialog监听项内,而这个监听项中有一个变数可以使用:dialog
这个变数代表的是当前玩家看到的对话ID
所以我自己的方法是:给这个NPC设置4个选项,每一个选项都会连到不同的对话
脚本中藉由判断玩家目前看到哪个对话来得知玩家选了哪个选项
然后dialog项内这样写:
if(dialog >= 10 && dialog <= 13){
player.setStoredData("horse_racing_choice",dialog);
}
由于我新建的4个选项后的对话ID分别是10,11,12,13,所以我就先判断是不是这四个对话的其中一个再执行脚本
然后使用setStoredData来记录玩家选了哪个对话ID,记录起来,等赛马结果出来后再比对是否选中
然后如果你想在赛马途中阻止玩家选择马匹,可以利用阵营点数来控制对话
藉由给对话的[可用的选项]添加阵营点数的判断条件,然后在脚本里操作阵营点数就可以达到控制对话选项的效果
你可以另外创立一个阵营专门给对话判断
然后使用player.getFactionPoints(int faction)和player.addFactionPoints(int faction,int points)来取值或增加(注意:是增加,增加的点数可为负数)该阵营的点数
这个做法有点类似计分板的操作
然后关于输出赛马的结果,我建议可以用NPC魔杖制作马匹,让马自行判断自己是否为第一个到达终点的
结果存在世界的storedData中(使用world.setStoredData()存入),然后NPC就检查这项storedData是否有结果
有的话就可以开始发奖励。
然后关于第二点:
NPC的攻击设定中没有破甲设定,但是利用脚本做到破甲攻击是可行的
不过我是建议不要去计算护甲值,这样写起来麻烦
所以我自己会直接创立一个新的攻击事件取代
刚刚稍微对照了一下DamageSource的函式功能后写了个脚本
近战伤害的话可以在attack监听项中这样写:
if(!event.isRange()){
event.setCancelled(true);
var clsDSnpc = Java.type("noppes.npcs.NpcDamageSource");
var testDS = new clsDSnpc("mob",npc.getMCEntity());
testDS.func_76348_h();
event.getTarget().getMCEntity().func_70097_a(testDS,event.getDamage());
}
第一行是判断NPC该次攻击是否为近战攻击
第二行是取消原本的攻击事件
三四五行是另外创立一个新的伤害源,并且将该伤害源设定为可穿甲
第六行是对NPC的攻击目标施加该伤害,伤害值指定为全国**该次攻击的伤害
远程伤害的破甲效果暂时没研究
平凡的行者 发表于 2018-2-23 20:02
恩......大概了解了
关于第一点,你可以把脚本写在dialog监听项内,而这个监听项中有一个变数可以使用:di ...
谢谢大神,前面的有点复杂...我要等比较多的空余时间慢慢看
关于第二个问题,我看了你的思路,我才发现是我自己想多了
我想到一个更简单的方法,就是检测攻击的target,然后getHealth,再setHealth为原生命值-npc伤害值
有时候真的会想多了哎
fankieqiu 发表于 2018-2-23 20:49
谢谢大神,前面的有点复杂...我要等比较多的空余时间慢慢看
关于第二个问题,我看了你的思路,我才发现是 ...
是可以这样做,但是我不是很建议这样做,因为比较容易出BUG
因为你这样做并没有透过攻击事件杀死玩家
例如当玩家因直接削减血量而死,死亡讯息会出现「XXX已死亡」而不是「XXX被NPC杀死了」
不过绕过攻击事件直接削减血量是可以避免触发任何伤害防御能力
修改我已经会了,想来问下大佬1.7.10能不能让npc飞起来,或者水面上移动更快些,我想做个可以玩家骑乘的水上npc,然后敲好他的移动路径,玩家就可以等他来了坐上去快速在河道里移动。emmmmmm,起初是想搞个自动移动的魔兽里暴风城的船那样的东西,不过那样的mod都很难找的样子所以才把点子想到了npc上,我改移动过了30之后水上的移速就稳定不变了,但是砸个迅捷还是有效的,所以就算水上的移速改不了也想知道怎么让npc一直获得迅捷buff的办法。
a15020968400 发表于 2018-3-7 21:21
修改我已经会了,想来问下大佬1.7.10能不能让npc飞起来,或者水面上移动更快些,我想做个可以玩家骑乘的水 ...
1.7.10的NPC没办法设置成飞行,要用其他手段模拟是可以但是不建议,因为操作上困难
想要飞行NPC的话建议使用1.10.2或以上的版本
持续获得药水buff的方法可以在[更新]的监听项中调用npc.addPotionEffect(int effect, int duration, int strength, boolean hideParticles)
例如你要迅捷的效果的话:
npc.addPotionEffect(1,2,0,false)
把这行直接写在[更新]监听项内的话,NPC就会每0.5秒对自己施加2秒迅捷1的效果
大佬大佬
平凡的行者 发表于 2018-3-8 12:50
1.7.10的NPC没办法设置成飞行,要用其他手段模拟是可以但是不建议,因为操作上困难
想要飞行NPC的话建议使 ...
想请教一下大神几个问题,如能得到指点感激不尽!
首先是服务器npcmod版本是1.7.10d
我想限制服务器红名(杀人)玩家不能和npc打开对话框
具体我是这样在dialog钩子写的 :D
- var PF = player.getFactionPoints("3");
- npc.say(PF);
- if( PF == 1){
- event.setCancelled(true);
- }
- npc.say(event.isCancelled());
问题就在这个setCancelled没有反应
甚至只写event.setCancelled(true);
一样还是能打开对话框...
第二个问题
我想个boss加点技能 比如在血量多少多少的时候召唤一个回血图腾npc
目前我是打算在玩家客户端上传前先用复制魔杖先复制一个图腾npc
然后再让boss战斗过程中触发技能 从玩家的库中召唤出图腾npc来
还有一个想法是先把这些图腾npc摆在boss房外 战斗中执行/noppes npc 图腾 home
重新设置出生点在boss附近 再让它刷新一下(相当于瞬移到boss身边)【不知道可不可行】
当图腾npc死亡时直接删除该npc 问题就是这些拉过来的图腾npc需要手动补充数量.....
所以我想问问能不能像召唤师那样的职业先把图腾npc存在什么地方在调用出来
或者有没有其他更加简单的方法?
最后一个问题
是我想在图腾npc加点粒子效果
所以我把一个带粒子的npc骑在了图腾npc上
发现原来骑着npc就不能用复制魔杖复制了...
所以能带着粒子npc和图腾npc一起召唤到boss身边吗?
或者能让图腾npc自带粒子效果吗?
先感谢大神能看完这么长一段提问!
希望大神能有空提点一下!感谢大神!
纯白剑姬 发表于 2018-3-25 23:35
想请教一下大神几个问题,如能得到指点感激不尽!
首先是服务器npcmod版本是1.7.10d
我想限制服务器红名 ...
还有一个题外问题:D
就是 能不能在对话框中打开那种在mc聊天框中点击网址时弹出的链接跳转申请框?
能用npcmod直接把那个申请框调出来吗?
静候佳音

纯白剑姬 发表于 2018-3-26 00:01
还有一个题外问题:D
就是 能不能在对话框中打开那种在mc聊天框中点击网址时弹出的链接跳转申请框?
能用 ...
关于第一个问题
有一些事件是无法取消的,dialog就是其中一个
我自己的话会用比较迂回一点的作法,就是执行指令强制开启另一个对话
这个对话的内容大概就是告知玩家你无法跟NPC对话之类的。
我自己大概是会这样写:
- var PF = player.getFactionPoints("3");
- if( PF == 1){
- npc.executeCommand("/noppes dialog show "+player.getName()+" <dialog> "+npc.getName());
- }
执行后,会立刻给指定玩家看到编号为<dialog>的对话,并且对话中的npc名子会显示为<name>
这样写的效果就是:被禁止跟NPC对话的玩家一打开对话介面后,会先看到NPC的第一个对话,接着立刻被脚本强制看到指定的对话
你可以把这个指定的对话设计成告知玩家你目前无法跟NPC对话之类的功能
关于第二个问题
复制魔杖在存放复制NPC或生物的资料时,是可以选择存放在客户端或伺服端的
存放在客户端的话就会存在使用复制魔杖的那个人的客户端
而脚本中的world物件其实有这个功能:spawnClone(int x, int y, int z, int tab, java.lang.String name)
这个就是从伺服端的资料中复制NPC并招唤在指定座标上。
或者是你也可以使用命令:/noppes clone spawn <name> <tab> [[world:]x,y,z] [newname]
如果让NPC使用world.spawnClone(int x, int y, int z, int tab, java.lang.String name)的话,会在NPC所处的维度下招唤复制体
如果是使用命令的话可以指定要在哪个维度生成(指定维度的话要写该维度的代号,例如下界是-1)
所以你就选择用命令或是world.spawnClone叫出NPC就可以了
最后一个问题的话,我是觉得可以让图腾NPC自己制造粒子
调用world.spawnParticle让图腾在自己的位置生成粒子效果

然后关于点击网址的部分,我建议是用tellraw做
例如这样:npc.executeCommand("/tellraw "+player.getName()+" {text:'mcbbs',clickEvent:{action:'open_url',value:'http://www.mcbbs.net'}}")
这样会在玩家的对话窗内出现一个mcbbs的字样,点击它的话就会询问是否开启http://www.mcbbs.net这个网址
平凡的行者 发表于 2018-3-29 16:50
关于第一个问题
有一些事件是无法取消的,dialog就是其中一个
我自己的话会用比较迂回一点的作法,就是执 ...
感谢大神的详细回复!!!

我去慢慢尝试一下!
平凡的行者 发表于 2018-3-29 16:50
关于第一个问题
有一些事件是无法取消的,dialog就是其中一个
我自己的话会用比较迂回一点的作法,就是执 ...
关于第一个问题
貌似1.7.10版本的npcmod没有noppes dialog show的命令呢
在1.7.10的git的wiki上也没有该指令 应该是新版本更新的吧OTZ
所以我用了前面调出对话界面的方法
- var dialogs = Java.type("noppes.npcs.controllers.DialogController").instance.dialogs;
- Java.type("noppes.npcs.NoppesUtilServer").openDialog(player.getMCEntity(),npc.getMCEntity(),dialogs.get(1));
才发现在对话框触发事件打开对话框 变成了无限循环了.....
(甚至客户端被刷的崩溃了...)
最后想想 可能是我太钻牛角尖了=-= 老实用对话框条件选项就能解决的问题 为什么我要这么绕呢OTZ
本帖最后由 平凡的行者 于 2018-3-29 23:27 编辑
我这边npcmod的版本是CustomNPCs_1.7.10d(19jun17) (不过最新的是29-oct-2017)
是1.7.10的版本
你npcmod的版本会不会是旧的?
纯白剑姬 发表于 2018-3-29 18:39
关于第一个问题
貌似1.7.10版本的npcmod没有noppes dialog show的命令呢
在1.7.10的git的wiki上也没有该 ...
我这边npcmod的版本是CustomNPCs_1.7.10d(19jun17) (不过最新的是29-oct-2017)
是1.7.10的版本
你npcmod的版本会不会是旧的?
本帖最后由 纯白剑姬 于 2018-3-30 18:07 编辑
在官网下载最新版本发现确实有dialog show
可能是服务器的npcmod确实太老了
顺带想问问 如果更新npcmod版本
有可能出什么问题吗?
现在服务器的npc时不时会变成另一个npc
(比如我做了两个npc A和B 时不时B就会变成A了)
npc的位置没有变化 但是所有设置(皮肤、对话、职业)都变成另一个npc的设置了
这难道就是贴主说的这个?
平凡的行者 发表于 2018-3-29 23:26
我这边npcmod的版本是CustomNPCs_1.7.10d(19jun17) (不过最新的是29-oct-2017)
是1.7.10的版本
你npcmod的 ...
在官网下载最新版本发现确实有dialog show
可能是服务器的npcmod确实太老了
顺带想问问 如果更新npcmod版本
有可能出什么问题吗?
现在服务器的npc时不时会变成另一个npc
(比如我做了两个npc A和B 时不时B就会变成A了)
npc的位置没有变化 但是所有设置(皮肤、对话、职业)都变成另一个npc的设置了
这难道就是贴主说的这个?

本帖最后由 平凡的行者 于 2018-3-30 18:33 编辑
这个我倒不清楚,我自己没遇过这样的事,最近也没什么在碰插件
不过NPC版本更新的情况中,我记得从b到c 版还是从c到d版,这两种状况中有一种会让原本服务器内的NPC全数消失。可能是NPC的实体ID改了之类的吧?
另外,如果不能更换NPC的版本的话,你上面那个呼叫对话框的代码稍微只要加个判断就能用了
复制代码判断看到的对话框不是要使用脚本开启的对话框才开启
纯白剑姬 发表于 2018-3-30 17:44
在官网下载最新版本发现确实有dialog show
可能是服务器的npcmod确实太老了
顺带想问问 如果更新npcmod版 ...
这个我倒不清楚,我自己没遇过这样的事,最近也没什么在碰插件
不过NPC版本更新的情况中,我记得从b到c 版还是从c到d版,这两种状况中有一种会让原本服务器内的NPC全数消失。可能是NPC的实体ID改了之类的吧?
另外,如果不能更换NPC的版本的话,你上面那个呼叫对话框的代码稍微只要加个判断就能用了
- if(dialog != 1){
- var dialogs = Java.type("noppes.npcs.controllers.DialogController").instance.dialogs;
- Java.type("noppes.npcs.NoppesUtilServer").openDialog(player.getMCEntity(),npc.getMCEntity(),dialogs.get(1));
- }
平凡的行者 发表于 2018-3-30 18:28
这个我倒不清楚,我自己没遇过这样的事,最近也没什么在碰插件
不过NPC版本更新的情况中,我记得从b到c 版 ...
感谢大神回复;
服务器npcmod也是d版本的 所以升级应该没啥问题吧。
上面的问题是有时重启服务器会造成的 原因未明。
最后想问问大神有没有推/抛投npc的方法?
打算尝试一些野猪/狼 的 冲撞/跳劈等略带位移的技能?
在noppes.npcs.scripted.ScriptNpc一直向父类翻到java.lang.Object都没找到位移的方法...
不知道是我哪里看错眼还是没看明白呢 希望大神指点一下:D
请问下为什么安装了引擎之后游戏就闪退了
作者辛苦了!
怎么判断NPC周围是否有玩家
@TGL 发表于 2018-5-24 17:18
怎么判断NPC周围是否有玩家
恩哼,昨天还在学校里学习所以不能回复抱歉
啊**,在该NPC的脚本里面调用npc就是指当前的NPC
- npc.getSurroundingEntities(10);
建议可以多去看看DOC,总会找到的2333
顺带一提,这个方法可以有两个传入
- npc.getSurroundingEntities(10,0);
@@Leo 发表于 2018-5-26 17:34
恩哼,昨天还在学校里学习所以不能回复抱歉
啊**,在该NPC的脚本里面调用npc就是指当前的NPC
获取NPC附近 ...
请问如何判断返回的ScriptEntity[]中是否存在玩家,返回true或者false
@TGL 发表于 2018-5-27 14:38
请问如何判断返回的ScriptEntity[]中是否存在玩家,返回true或者false
ScriptEntity有一个typeOf(int type)方法可以检测是不是目标类型的实体
至于玩家的type值是多少我就不知道了
能办到npc累计受到多少次攻击之后tp攻击最多的玩家嘛...
另外,能不能像东方那样子设置npc死亡后换成另一个npc来实现符卡的效果
(三更半夜才发现这个帖子,死)
另外,能不能像东方那样子设置npc死亡后换成另一个npc来实现符卡的效果
(三更半夜才发现这个帖子,死)
本帖最后由 582558781 于 2018-6-10 14:37 编辑
那个npc怎么在玩家身边刷出方块就是一堆石头围着能暂时困住玩家
或者如何通过命令方块来实现。
(1.7.10)
那个npc怎么在玩家身边刷出方块就是一堆石头围着能暂时困住玩家
或者如何通过命令方块来实现。
(1.7.10)
@@Leo 发表于 2018-6-2 17:31
ScriptEntity有一个typeOf(int type)方法可以检测是不是目标类型的实体
至于玩家的type值是多少我就不知 ...
玩家的type是plear
lz,我可以联系你吗?
大佬 请问下怎么让npc的攻击附带药水效果【瞬间伤害这样的】
1549023568 发表于 2018-6-11 10:10
大佬 请问下怎么让npc的攻击附带药水效果【瞬间伤害这样的】
代码放入攻击(Attack)监听内
- event.getTarget().addPotionEffect(7,1,0,1)
。。。作为凡人我看不懂
一直都不知道怎么弄,谢谢楼主
请问一下大神,我想实现这么一个效果。
几个人一起攻击一个npc,在npc死亡的时候,结算时每个人都有是杀死这个npc之人,而不是只有最后一击的才是。
如果这个效果很难实现的话,那换一下思路,凡是攻击过boss的人,在boss死亡之后,都能完成一个任务(就是杀死boss的任务,只不过用指令或者脚本去强制完成)。如果boss脱战之后,攻击过boss的人的记录被重置。
几个人一起攻击一个npc,在npc死亡的时候,结算时每个人都有是杀死这个npc之人,而不是只有最后一击的才是。
如果这个效果很难实现的话,那换一下思路,凡是攻击过boss的人,在boss死亡之后,都能完成一个任务(就是杀死boss的任务,只不过用指令或者脚本去强制完成)。如果boss脱战之后,攻击过boss的人的记录被重置。
iverson119 发表于 2018-6-23 10:24
请问一下大神,我想实现这么一个效果。
几个人一起攻击一个npc,在npc死亡的时候,结算时每个人都有是杀死 ...
你可以选择用TempData
有这么几个个方法
- public java.lang.Object getTempData(java.lang.String key)
- public void setTempData(java.lang.String key, java.lang.Object value)
- public boolean hasTempData(java.lang.String key)
- public void removeTempData(java.lang.String key)
要么就是维护一个容器了
至于脱战……tick里面循环,超过1s都没有攻击目标大概就是脱战了吧
本帖最后由 iverson119 于 2018-6-23 18:37 编辑
对啊,如果是A打一下,B打一下,A再打一下,这样会不会记录了2个A?再请问下高手,如果我就希望输出的结果是,伤害过这个npc的玩家,都能完成对应任务ID的任务。这个完成任务我会做,但是怎样输出这个玩家的名单?
@@Leo 发表于 2018-6-23 17:11
你可以选择用TempData
有这么几个个方法不过具体维护起来很繁琐,尤其是攻击的人多的时候判断重复很麻烦
...
对啊,如果是A打一下,B打一下,A再打一下,这样会不会记录了2个A?再请问下高手,如果我就希望输出的结果是,伤害过这个npc的玩家,都能完成对应任务ID的任务。这个完成任务我会做,但是怎样输出这个玩家的名单?
iverson119 发表于 2018-6-23 18:35
对啊,如果是A打一下,B打一下,A再打一下,这样会不会记录了2个A?再请问下高手,如果我就希望输出的结果 ...
所以要检查很麻烦啊
你可以从1~n这样子保存
然后保存和读取的时候都要这样子按照引索来
本帖最后由 粘兽sama 于 2018-6-27 06:16 编辑
1.12.2如何实现1.7.10"event.setCancelled(true)"的效果,
我没有找到对应的API......
摸索了一会,找到方法了!
我没有找到对应的API......

摸索了一会,找到方法了!

大佬 想请教一下 1.7.10
如何让npc在被杀时发送一条全服都能看到的公告
复活时发送另一条全服都能看到的公告呢?
如何让npc在被杀时发送一条全服都能看到的公告
复活时发送另一条全服都能看到的公告呢?
123crs 发表于 2018-7-1 01:10
大佬 想请教一下 1.7.10
如何让npc在被杀时发送一条全服都能看到的公告
复活时发送另一条全服都能看到的公 ...
在'死亡'和'复活'的监听里加一个执行指令的脚本即可。
粘兽sama 发表于 2018-7-1 05:33
在'死亡'和'复活'的监听里加一个执行指令的脚本即可。
具体应该怎么执行呢 qwq
有方法让NPC死亡后,不掉落物品吗。(用代码实现)
或者让NPC死亡后所在的区块暂停两秒再卸载
或者让NPC死亡后所在的区块暂停两秒再卸载
很棒的作品!
谢谢版主大人提供的教程

请问下怎么给范围内同一个阵营/敌对阵营的npc上药水效果
当任务被激活时,或者红石被激活,或者群体对话完成后,A士兵和B士兵去攻击一个农民npc,怎么写啊