大佬大佬
平凡的行者 发表于 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,怎么写啊
DJMC 发表于 2018-7-18 18:40
当任务被激活时,或者红石被激活,或者群体对话完成后,A士兵和B士兵去攻击一个农民npc,怎么写啊 ...
可以用脚本。
任务执行完后,让他执行某段脚本,让A和B走到某个位置,然后把这两个阵营设置成敌对就对开打了
请问下大佬。如果用脚本来改变职业里傀儡的动作参数会有0.5s延迟(从脚本执行到动作改变之间有0.5S)。大佬有没有什么想法或者方法来去掉这0.5s
本帖最后由 粘兽sama 于 2018-8-6 20:45 编辑
楼主有意向做高版本的CustomNpcs教程么
楼主有意向做高版本的CustomNpcs教程么

粘兽sama 发表于 2018-8-6 20:43
楼主有意向做高版本的CustomNpcs教程么
粘受大佬
我来这里请教了awa
对于获取附魔list后返回数组
想知道这个[0:{"lvl":1s,"id":16s}]的数组是如何定义的

对于获取附魔list后返回数组
想知道这个[0:{"lvl":1s,"id":16s}]的数组是如何定义的

@TGL 发表于 2018-7-3 10:47
有方法让NPC死亡后,不掉落物品吗。(用代码实现)
或者让NPC死亡后所在的区块暂停两秒再卸载 ...
一个月后的回复awa
让NPC不掉落物品的办法倒是没有(1.7.10)
让NPC掉物品的办法倒是有……
区域暂停应该做不到(或者放个两秒死亡的区域加载者awa)
如果让整个服务器的主线程暂停倒是可以使用sleep方法
你想做到什么样的效果
本帖最后由 skpsk自己家 于 2018-8-7 23:56 编辑
没人回答你呢
两个月后我看见了呢awa
瞬移可以在伤害钩子中(1.7.10)
使用代码
复制代码
死亡钩子可以使用scriptWorld类里面的一个方法
这里就不写代码了 因为懒啊
582558781 发表于 2018-6-10 00:55
能办到npc累计受到多少次攻击之后tp攻击最多的玩家嘛...
另外,能不能像东方那样子设置npc死亡后换成另一个 ...
没人回答你呢
两个月后我看见了呢awa
瞬移可以在伤害钩子中(1.7.10)
使用代码
- var time;
- for(var i=0;i<1;i++){if(time>=1)break;time=0;}
- time++;
- if(time==10){
- event.getSource().setRider(npc);
- event.getSource().setRider(null);
- time=null;
- }
- //为什么用setRider方法 因为刚好有就复制过来了 懒癌晚期
- //为什么是time 因为我从之前的定时代码拿的awa
死亡钩子可以使用scriptWorld类里面的一个方法
这里就不写代码了 因为懒啊
本帖最后由 luomu丶夕阳 于 2018-8-9 01:06 编辑
请问下,怎么右键NPC实现打开bs菜单 不做任务 直接右键NPC打开菜单
请问下,怎么右键NPC实现打开bs菜单 不做任务 直接右键NPC打开菜单
npc.setAttackTarget(这里应该填什么(试了很多都不行))
luomu丶夕阳 发表于 2018-8-8 23:52
请问下,怎么右键NPC实现打开bs菜单 不做任务 直接右键NPC打开菜单
交互钩子下用脚本执行指令
- npc.executeCommand("bs open <shop> "player.name"")
- <shop> 改为你想打开的菜单 其余不用更改
粘兽sama 发表于 2018-8-12 02:57
交互钩子下用脚本执行指令
没效果呀 显示这个<eval>:1:40 Expected , but found player
npc.executeCommand("bossShop open Menu "player.name"")
^ in <eval> at line number 1 at column number 40