查看: 1025|回復: 25

[分享] 极限节省物件id之R版暴击特效(附加媒介召唤方法)

[複製鏈接]

13

主題

136

帖子

3090

金錢

暗殺軍王.史雷佛

Rank: 8Rank: 8

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
45
積分
3226
在線時間
29 小時
相冊
0
日誌
0
好友
3
QQ
發表於 2024-3-30 08:12 | 顯示全部樓層 |閱讀模式
本帖最後由 Lin-JN 於 2024-4-19 15:49 編輯

  1.     /**
  2.      * R版暴击特效处理<br>
  3.      * 极限继承物件id by 圣子默默<br>
  4.      * 全网搜索 圣子默默 观看更多视频及天堂一教程<br>
  5.      * 放 L1PcInstance 或 L1Character 任意位置<br>
  6.      * 建议后者 可通用 给NPC(虚拟人物)使用
  7.      *
  8.      * @param target 受攻击对象
  9.      * @param gfx_id 特效动画
  10.      */
  11.     public void sendFollowEffect(L1Character target, int gfx_id) {

  12.         L1NpcInstance followEffect;

  13.         if (this.getFollowEffect() != null) { // 特效物件已经存在
  14.             followEffect = this.getFollowEffect();
  15.             followEffect.setLocation(target.getLocation());
  16.             followEffect.setHeading(this.getHeading());

  17.         } else { // 召唤一次特效物件媒介 然后锁定在主人身上
  18.             followEffect = L1SpawnUtil.spawnS(target.getLocation(),
  19.                     this.get_showId(), 0, this.getHeading());
  20.             this.setFollowEffect(followEffect);
  21.         }

  22.         // 这段用于测试打印物件id 实装时请删除
  23.         Optional.ofNullable(followEffect).ifPresent(u ->
  24.                 _log.info("followEffect: " + followEffect.getId()));

  25.         // 送出物件封包 通知所有对象位置、面向的变化
  26.         Optional.ofNullable(followEffect).ifPresent(u -> followEffect
  27.                 .broadcastPacketAll(new S_NPCPack(followEffect)));
  28.         // 送出特效动画
  29.         Optional.ofNullable(followEffect).ifPresent(u -> followEffect
  30.                 .broadcastPacketAll(new S_SkillSound(followEffect.getId(), gfx_id)));
  31.     }
複製代碼


  1.      // 双手剑R版暴击特效举例 L1Attack (L1AttackPc / L1AttackNpc)
  2.     _pc.sendFollowEffect(_target, 13410);
複製代碼


  1.     /**
  2.      * 召唤的特效物件媒介
  3.      */
  4.     private L1NpcInstance _followEffect;

  5.     private void setFollowEffect(L1NpcInstance followEffect) {
  6.         _followEffect = followEffect;
  7.     }

  8.     public L1NpcInstance getFollowEffect() {
  9.         return _followEffect;
  10.     }
複製代碼


  1.         // 玩家离线或NPC死亡删除时执行
  2.         if (getFollowEffect() != null) {
  3.             getFollowEffect().deleteMe();
  4.         }
複製代碼


  1.     /**
  2.      * 依LOC位置召唤指定NPC (R版变身攻击特效媒介)
  3.      *
  4.      * @param loc     LOC
  5.      * @param showId  副本编号
  6.      * @param time    存在时间(秒) 小于等于0不限制
  7.      * @param heading 面向
  8.      */
  9.     public static L1NpcInstance spawnS(final L1Location loc, final int showId, final int time,
  10.                                        final int heading, final int objId) {
  11.         try {
  12.             final L1NpcInstance npc = NpcTable.get().newNpcInstance(56168);

  13.             if (npc == null) {
  14.                 return null;
  15.             }

  16.             npc.setId(objId);
  17.             npc.setMap(loc.getMap());
  18.             npc.getLocation().set(loc);

  19.             npc.setHomeX(npc.getX());
  20.             npc.setHomeY(npc.getY());
  21.             npc.setHeading(heading);

  22.             npc.set_showId(showId);

  23.             World.get().storeObject(npc); // 不需要 addVisibleObject

  24.             if (0 < time) {
  25.                 npc.set_spawnTime(time);
  26.             }

  27.             return npc;

  28.         } catch (final Exception e) {
  29.             _log.error("依LOC位置召唤指定NPC(传回NPC讯息)发生异常: 56168", e);
  30.         }
  31.         return null;
  32.     }
複製代碼

和正常的R版暴击特效写法相比,试想一个角色在24小时内(我的服好几天才会重启一次……)要挥刀多少次?会触发多少次特效?原版的写法里,每一次触发都需要消耗掉一个物件id,如此修改,在物件主人消失(离线)之前,不论何时攻击触发,都只会用到一个物件id。

代码不作隐藏,欢迎取用。

評分

參與人數 2金錢 +40 收起 理由
blackgood + 20 很給力!
ben9215 + 20 很給力!

查看全部評分




上一篇︰搖一搖
下一篇︰求助 空指標異常
http://starway.freebbs.tw/index.php

30

主題

772

帖子

2564

金錢

暗殺軍王.史雷佛

Rank: 8Rank: 8

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
45
積分
3336
在線時間
161 小時
相冊
0
日誌
0
好友
1
發表於 2024-3-30 11:35 | 顯示全部樓層
謝謝大大分享
新手學習
目前功力還不到那邊
看看學習

回復 支持 反對

使用道具 舉報

0

主題

30

帖子

1443

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1473
在線時間
39 小時
相冊
0
日誌
0
好友
0
發表於 2024-3-30 15:29 | 顯示全部樓層
疑 爆擊特效 為什麼不用 S_SkillSound 還是R版沒這個封包

回復 支持 反對

使用道具 舉報

13

主題

136

帖子

3090

金錢

暗殺軍王.史雷佛

Rank: 8Rank: 8

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
45
積分
3226
在線時間
29 小時
相冊
0
日誌
0
好友
3
QQ
 樓主| 發表於 2024-3-30 17:47 | 顯示全部樓層
Java大神 發表於 2024-3-30 15:29
疑 爆擊特效 為什麼不用 S_SkillSound 還是R版沒這個封包

天堂1的特效动画各不一样,一般分为四种。

1:无向特效,比如极道落雷、流星雨、究极光裂之类,这种特效不区分方向,不管哪个位置都是同样方向的动画。
2:有向特效,比如黑妖双刀双击、钢爪重击,特征为触发在当前的物件身上,显示的方向和当前物件一致。
3:R版暴击特效,特征为触发在被攻击者身上,但显示位置会在被攻击者前一格的位置,而显示的方向和攻击发起者一致,所以是不可以使用S_SkillSound封包的,那样看起来会很诡异。
4:飞行特效,弓箭,飞刀,沙哈魔法箭矢类

这里指的就是第3种。
第1种,建议使用S_EffectLocation封包。
第2种,建议使用S_SKillSound封包。
第3种,建议用我上面写的。
第4种,只有一种封包,封包名字各人写法不同,我用的是S_UseArrowFlySkill

以上四种,就是天堂1常用的特效显示方式。
至于一些S_Attack之类的type 0x01 0x02 0x04 0x08之类的封包特效就不叙述了,那玩意有些主程式(客户端)下使用可能会有问题,而且局限性大,仅适用于双击、重击等几个有限的场合,极度不推荐。

http://starway.freebbs.tw/index.php
回復 支持 反對

使用道具 舉報

0

主題

2213

帖子

12萬

金錢

巴拉卡斯

Rank: 13Rank: 13Rank: 13Rank: 13

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
75
積分
129949
在線時間
494 小時
相冊
0
日誌
0
好友
0
發表於 2024-3-30 18:48 | 顯示全部樓層
感謝分享

回復

使用道具 舉報

2

主題

129

帖子

661

金錢

妖魔

Rank: 4

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
35
積分
790
在線時間
80 小時
相冊
0
日誌
0
好友
0
發表於 2024-3-30 19:22 | 顯示全部樓層
謝謝大大分享
新手學習

回復 支持 反對

使用道具 舉報

32

主題

253

帖子

4695

金錢

鑽石VIP

Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127Rank: 127

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
90
積分
4948
在線時間
114 小時
相冊
0
日誌
0
好友
0
發表於 2024-3-30 19:31 | 顯示全部樓層
讓我們繼續看下去~

回復 支持 反對

使用道具 舉報

0

主題

30

帖子

1443

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1473
在線時間
39 小時
相冊
0
日誌
0
好友
0
發表於 2024-3-31 00:51 | 顯示全部樓層
Lin-JN 發表於 2024-3-30 17:47
天堂1的特效动画各不一样,一般分为四种。

1:无向特效,比如极道落雷、流星雨、究极光裂之类,这种特效 ...

了解 謝謝解釋

[發帖際遇]: Java大神 發帖時在路邊撿到 2 金錢,偷偷放進了口袋. 幸運榜 / 衰神榜
回復 支持 反對

使用道具 舉報

1

主題

50

帖子

1278

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1328
在線時間
34 小時
相冊
0
日誌
0
好友
1
發表於 2024-4-11 22:09 | 顯示全部樓層
請問你的 spawnS 是自訂方法嗎? 因為原始的 spawnS 是5個數值, 你提供的代碼中缺少了 npcid, 是否刻意移除?

回復 支持 反對

使用道具 舉報

0

主題

113

帖子

5894

金錢

火焰之影

Rank: 8Rank: 8

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
50
積分
5920
在線時間
32 小時
相冊
0
日誌
0
好友
0
發表於 2024-4-11 22:19 | 顯示全部樓層
搖搖搖~~~~~~

回復

使用道具 舉報

0

主題

214

帖子

5148

金錢

火焰之影

Rank: 8Rank: 8

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
50
積分
5362
在線時間
80 小時
相冊
0
日誌
0
好友
0
發表於 2024-4-12 02:02 | 顯示全部樓層
       
感謝分享-學習學習

[發帖際遇]: ryan0703 在網吧通宵,花了 9 金錢. 幸運榜 / 衰神榜
回復 支持 反對

使用道具 舉報

35

主題

165

帖子

2070

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
2235
在線時間
36 小時
相冊
0
日誌
0
好友
1
發表於 2024-4-17 12:35 | 顯示全部樓層
Lin-JN 發表於 2024-3-30 17:47
天堂1的特效动画各不一样,一般分为四种。

1:无向特效,比如极道落雷、流星雨、究极光裂之类,这种特效 ...

这段科普太有用了,非常感谢!收藏保存!

回復 支持 反對

使用道具 舉報

0

主題

32

帖子

467

金錢

哥布林

Rank: 3Rank: 3

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
30
積分
499
在線時間
2 小時
相冊
0
日誌
0
好友
0
發表於 2024-4-17 14:28 | 顯示全部樓層
感謝有您的無私分享

[發帖際遇]: 紅藍天堂 撿了錢沒交公 金錢 降了 2 . 幸運榜 / 衰神榜
回復 支持 反對

使用道具 舉報

13

主題

136

帖子

3090

金錢

暗殺軍王.史雷佛

Rank: 8Rank: 8

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
45
積分
3226
在線時間
29 小時
相冊
0
日誌
0
好友
3
QQ
 樓主| 發表於 2024-4-18 00:41 | 顯示全部樓層
diorlive 發表於 2024-4-11 22:09
請問你的 spawnS 是自訂方法嗎? 因為原始的 spawnS 是5個數值, 你提供的代碼中缺少了 npcid, 是否刻意移除 ...

自己修改,没有必要太多参数的,就自然不需要了。


我写的任何所谓“教学”,都是仅供参考的,一般直接搬运肯定是不行的,每个人版本不一样,参数也不同,主要是了解大致上的方法流程以及思路。

http://starway.freebbs.tw/index.php
回復 支持 反對

使用道具 舉報

1

主題

50

帖子

1278

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1328
在線時間
34 小時
相冊
0
日誌
0
好友
1
發表於 2024-4-18 06:31 | 顯示全部樓層
本帖最後由 diorlive 於 2024-4-18 06:34 編輯
Lin-JN 發表於 2024-4-18 00:41
自己修改,没有必要太多参数的,就自然不需要了。

瞭解 謝謝

回復 支持 反對

使用道具 舉報

1

主題

50

帖子

1278

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1328
在線時間
34 小時
相冊
0
日誌
0
好友
1
發表於 2024-4-18 21:34 | 顯示全部樓層
請問如果碰到這樣召喚出來的特效不會消失的問題, 您的時間控制是怎麼做的呢..

回復 支持 反對

使用道具 舉報

5

主題

110

帖子

224

金錢

哥布林

Rank: 3Rank: 3

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
30
積分
334
在線時間
43 小時
相冊
0
日誌
0
好友
0
發表於 2024-4-18 21:43 | 顯示全部樓層
               
       
謝謝大大分享
新手學習
目前功力還不到那邊
看看學習

       

回復 支持 反對

使用道具 舉報

13

主題

136

帖子

3090

金錢

暗殺軍王.史雷佛

Rank: 8Rank: 8

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
45
積分
3226
在線時間
29 小時
相冊
0
日誌
0
好友
3
QQ
 樓主| 發表於 2024-4-19 15:38 | 顯示全部樓層
diorlive 發表於 2024-4-18 21:34
請問如果碰到這樣召喚出來的特效不會消失的問題, 您的時間控制是怎麼做的呢.. ...

不需要时间控制的,玩家下线或者怪物死亡那里进行删除就可以了。

http://starway.freebbs.tw/index.php
回復 支持 反對

使用道具 舉報

2

主題

330

帖子

2607

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
3
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
2943
在線時間
76 小時
相冊
0
日誌
0
好友
1
發表於 2024-4-19 15:49 | 顯示全部樓層
感恩大大無私分享

[發帖際遇]: 一個袋子砸在了 au03l729 頭上,au03l729 賺了 5 金錢. 幸運榜 / 衰神榜
回復 支持 反對

使用道具 舉報

1

主題

50

帖子

1278

金錢

妖魔鬥士

Rank: 6Rank: 6

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
40
積分
1328
在線時間
34 小時
相冊
0
日誌
0
好友
1
發表於 2024-4-19 17:07 | 顯示全部樓層
Lin-JN 發表於 2024-4-19 15:38
不需要时间控制的,玩家下线或者怪物死亡那里进行删除就可以了。

我碰到的問題是因為這個暴擊特效是機率產生的 他是隨著觸發暴擊而調用
但是暴擊時調用了特效 他播放一次後就呈現停止畫面留在畫面上了
換下一隻怪上一隻怪停在畫面上的特效才會消失 但是下一隻怪身上有觸發又會停一個.. 他不像單純用 skillsound 發送一樣播放完一次消失..

回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊會員

本版積分規則

天堂私服列表

45客服

Archiver| 45天堂私服論壇   分享到微博! 分享到臉書! 分享到噗浪! 分享到維特! 分享到Google+! 分享到LINE!

45天堂私服發佈站 ©    天堂私服架設教學  提供最新天堂私服最新資訊

流量最高、品質最好、服務最優、玩家首選、最新天堂私服資訊,都在45天堂私服發佈站.    免責聲明

Sitetag
line客服聯繫
掃一掃二碼
Line客服聯繫
24H專人回覆
返回頂部 返回列表