@@Leo
iverson119 发表于 2018-6-23 10:24
请问一下大神,我想实现这么一个效果。
几个人一起攻击一个npc,在npc死亡的时候,结算时每个人都有是杀死 ...

你可以选择用TempData
有这么几个个方法
  1. public java.lang.Object getTempData(java.lang.String key)
  2. public void setTempData(java.lang.String key, java.lang.Object value)
  3. public boolean hasTempData(java.lang.String key)
  4. public void removeTempData(java.lang.String key)
复制代码
不过具体维护起来很繁琐,尤其是攻击的人多的时候判断重复很麻烦

要么就是维护一个容器了
至于脱战……tick里面循环,超过1s都没有攻击目标大概就是脱战了吧

iverson119
本帖最后由 iverson119 于 2018-6-23 18:37 编辑
@@Leo 发表于 2018-6-23 17:11
你可以选择用TempData
有这么几个个方法不过具体维护起来很繁琐,尤其是攻击的人多的时候判断重复很麻烦
...

对啊,如果是A打一下,B打一下,A再打一下,这样会不会记录了2个A?再请问下高手,如果我就希望输出的结果是,伤害过这个npc的玩家,都能完成对应任务ID的任务。这个完成任务我会做,但是怎样输出这个玩家的名单?

@@Leo
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......




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

123crs
大佬 想请教一下 1.7.10
如何让npc在被杀时发送一条全服都能看到的公告
复活时发送另一条全服都能看到的公告呢?

粘兽
123crs 发表于 2018-7-1 01:10
大佬 想请教一下 1.7.10
如何让npc在被杀时发送一条全服都能看到的公告
复活时发送另一条全服都能看到的公 ...

在'死亡'和'复活'的监听里加一个执行指令的脚本即可。

123crs
粘兽sama 发表于 2018-7-1 05:33
在'死亡'和'复活'的监听里加一个执行指令的脚本即可。

具体应该怎么执行呢 qwq

粘兽
123crs 发表于 2018-7-1 15:32
具体应该怎么执行呢 qwq

执行指令的脚本如下
npc.executeCommand("bc <消息内容>")

@TGL
有方法让NPC死亡后,不掉落物品吗。(用代码实现)
或者让NPC死亡后所在的区块暂停两秒再卸载

111968511
很棒的作品!

凛弦
谢谢版主大人提供的教程

1549023568
请问下怎么给范围内同一个阵营/敌对阵营的npc上药水效果

DJMC
当任务被激活时,或者红石被激活,或者群体对话完成后,A士兵和B士兵去攻击一个农民npc,怎么写啊

@@Leo
DJMC 发表于 2018-7-18 18:40
当任务被激活时,或者红石被激活,或者群体对话完成后,A士兵和B士兵去攻击一个农民npc,怎么写啊 ...

可以用脚本。
任务执行完后,让他执行某段脚本,让A和B走到某个位置,然后把这两个阵营设置成敌对就对开打了

1549023568
请问下大佬。如果用脚本来改变职业里傀儡的动作参数会有0.5s延迟(从脚本执行到动作改变之间有0.5S)。大佬有没有什么想法或者方法来去掉这0.5s

粘兽
本帖最后由 粘兽sama 于 2018-8-6 20:45 编辑

楼主有意向做高版本的CustomNpcs教程么

1549023568
粘兽sama 发表于 2018-8-6 20:43
楼主有意向做高版本的CustomNpcs教程么

粘受大佬

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

Hueihuea
@TGL 发表于 2018-7-3 10:47
有方法让NPC死亡后,不掉落物品吗。(用代码实现)
或者让NPC死亡后所在的区块暂停两秒再卸载 ...

一个月后的回复awa
让NPC不掉落物品的办法倒是没有(1.7.10)
让NPC掉物品的办法倒是有……
区域暂停应该做不到(或者放个两秒死亡的区域加载者awa)
如果让整个服务器的主线程暂停倒是可以使用sleep方法
你想做到什么样的效果

Hueihuea
本帖最后由 skpsk自己家 于 2018-8-7 23:56 编辑
582558781 发表于 2018-6-10 00:55
能办到npc累计受到多少次攻击之后tp攻击最多的玩家嘛...
另外,能不能像东方那样子设置npc死亡后换成另一个 ...

没人回答你呢
两个月后我看见了呢awa
瞬移可以在伤害钩子中(1.7.10)
使用代码

  1. var time;
  2. for(var i=0;i<1;i++){if(time>=1)break;time=0;}
  3. time++;
  4. if(time==10){
  5. event.getSource().setRider(npc);
  6. event.getSource().setRider(null);
  7. time=null;
  8. }

  9. //为什么用setRider方法 因为刚好有就复制过来了 懒癌晚期
  10. //为什么是time 因为我从之前的定时代码拿的awa
复制代码

死亡钩子可以使用scriptWorld类里面的一个方法
这里就不写代码了 因为懒啊

luomu丶夕阳
本帖最后由 luomu丶夕阳 于 2018-8-9 01:06 编辑

请问下,怎么右键NPC实现打开bs菜单  不做任务 直接右键NPC打开菜单

@TGL
npc.setAttackTarget(这里应该填什么(试了很多都不行))

粘兽
@TGL 发表于 2018-8-11 08:40
npc.setAttackTarget(这里应该填什么(试了很多都不行))



粘兽
luomu丶夕阳 发表于 2018-8-8 23:52
请问下,怎么右键NPC实现打开bs菜单  不做任务 直接右键NPC打开菜单

交互钩子下用脚本执行指令
  1. npc.executeCommand("bs open <shop> "player.name"")
  2. <shop> 改为你想打开的菜单 其余不用更改
复制代码

luomu丶夕阳
粘兽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


粘兽
luomu丶夕阳 发表于 2018-8-12 21:48
没效果呀   显示这个:1:40 Expected , but found player
npc.executeCommand("bossShop open Menu "playe ...

哦 不好意思 写错了
  1. npc.executeCommand("bs open <shop> "+player.name)
  2. <shop> 改为你想打开的菜单 其余不用更改
复制代码

我心不变
很好的教程,谢谢了

m7862k224
一看到脚本两个字,就头疼

不二语
请问下为什么一对npc在damaged钩子里用knockback就闪退

iverson119
本帖最后由 iverson119 于 2018-8-25 17:00 编辑

再次请教大神。
我使用了这条命令<npc> owner [玩家] ---------------------- 设置npc跟随的玩家
发现他并不会跟随玩家。
有没有什么方法是可以令npc不需要雇佣也跟随玩家的?

如果玩家在雇佣过程中下线了,超过了雇佣时间还不上线,是不是这个雇佣的npc会自动消失?

iverson119
skpsk自己家 发表于 2018-8-7 23:55
没人回答你呢
两个月后我看见了呢awa
瞬移可以在伤害钩子中(1.7.10)

这个用骑乘来代替tp的方法很棒!层主有试过有用吗?如果有用的话那真是太强了,这思路好开阔

Hueihuea
iverson119 发表于 2018-8-25 16:45
这个用骑乘来代替tp的方法很棒!层主有试过有用吗?如果有用的话那真是太强了,这思路好开阔 ...

用过 为什么用setRider 因为用setPosition比较长

Hueihuea
大佬啊awa
因为我太懒了 不想在脚本教程再加个NPC基础教程
所以你来接盘下行吧qwq

Hueihuea
iverson119 发表于 2018-8-25 16:45
这个用骑乘来代替tp的方法很棒!层主有试过有用吗?如果有用的话那真是太强了,这思路好开阔 ...

我今天在你那个setTimeout帖子下面回复了整理好的 不知道你看见没有

@@Leo
本帖最后由 @@Leo 于 2018-8-25 21:32 编辑
skpsk自己家 发表于 2018-8-25 17:12
大佬啊awa
因为我太懒了 不想在脚本教程再加个NPC基础教程
所以你来接盘下行吧qwq

可以可以可以可以,谢谢谢谢谢谢谢谢
终于有个像样的教程了2333
我也可以把你的链接挂在帖子里面么

Hueihuea
@@Leo 发表于 2018-8-25 21:31
可以可以可以可以,谢谢谢谢谢谢谢谢
终于有个像样的教程了2333
我也可以把你的链接挂在帖子里面么

好的 谢谢
(我已经托更一天了awa 然后放出了几个干货)

iverson119
平凡的行者 发表于 2017-2-8 15:13
给NPC调用navigateTo()方法,可以令NPC朝某个座标点走去
这可以让NPC自动搜索路径后走过去:

我经过试验,这个方法和用路径魔杖一样,最远的移动距离是32格,目标距离超过32格的话,npc就会不动了

iverson119
本帖最后由 iverson119 于 2018-8-28 18:00 编辑

还有个事请教下大神们..对话关闭的isClosing()应该怎么用?在对话的钩子里写
if(dialog.isClosing(678)){
npc.setRider(player);
}
报错了。我想做到ID678的对话关闭之后,让玩家骑乘npc
再问个问题。怎样在和npc对话之后让npc移动到指定地方?我是想先用路径魔杖设定路径,对话之后改变他的ai,变成路径移动。但是在文档里找不到有关ai的api

iverson119
本帖最后由 iverson119 于 2018-8-29 13:15 编辑
平凡的行者 发表于 2018-2-11 13:53
脚本中没有可以直接修改移动速度的方法,所以得查源码看看如何修改
不过幸运的是,查完后发现修改起来也 ...

请问一下,这个ai的源码,是在哪里查的?请问一下,可以用脚本更改npc的移动模式吗?譬如从站立改成路径移动这样

npc.getMCEntity().ai.movingType = 1
npc.getMCEntity().ai.movingType = "movingpath"

都不行啊..

qazxmko
很实用的教程很感谢楼主

不二语
问一下有时候用一些api就必定闪退是什么个情况呀。

我心不变
请问一下:创造出的NPC,想让他在攻击范围内,看到玩家就自动攻击,该怎么设置?

@@Leo
我心不变 发表于 2018-8-31 07:05
请问一下:创造出的NPC,想让他在攻击范围内,看到玩家就自动攻击,该怎么设置? ...

设置与玩家敌对就好了,不需要脚本的说

Hueihuea
本帖最后由 skpsk自己家 于 2018-9-25 22:08 编辑
iverson119 发表于 2018-8-28 18:01
请问一下,这个ai的源码,是在哪里查的?请问一下,可以用脚本更改npc的移动模式吗?譬如从站立改成路径移 ...
  1. var EnumMovingType=Java.type("noppes.npcs.constants.EnumMovingType")
  2. function setMovingType(type){
  3. switch(type){
  4. case 0:
  5. npc.getMCEntity().ai.movingType = EnumMovingType.Standing//站立
  6. return
  7. case 1:
  8. npc.getMCEntity().ai.movingType = EnumMovingType.Wandering//游荡
  9. return
  10. case 2:
  11. npc.getMCEntity().ai.movingType = EnumMovingType.MovingPath//路径移动
  12. return
  13. }
  14. }
复制代码

请叫我雷锋

不二语
问一下1.12里面就没有开关傀儡部位的api了。这个怎么回事呀

272378191
太好了正好需要  谢谢粒

蓝瑕
咳咳,这个帖子好像冷好久了,我就来提个问题啦。  如果让一个NPC能够使用手持物品的附魔效果或者该武器的属性该怎么写脚本?

2330848276
为什么我弄了还是没用。。。

liukai3185
谢谢教程 这两天在研究这个

郎朗
感谢教程,正好服务器需要

第一页 上一页 下一页 最后一页