#求助

1 messages · Page 1 of 1 (latest)

sick cedar
#

我需要有人能幫我疑難排解一下
我在做boss的時候指令如下圖
然而boss放這招後遊戲就會類似伺服器連線逾時一般的場景
完全搞不懂是怎麼回事
問題出在哪一點頭緒都沒有
而我必須先有辦法克服這個問題才能下一步
故來此尋求幫助 拜託了🙏😥
Version: vanilla 1.20
Mod: nothing

tranquil wigeon
#

一行一行註解掉,看是哪一行有問題

sick cedar
#

什麼意思

#

加井字號?

torpid kernel
sick cedar
# torpid kernel

抱歉 那時電腦沒網路
手機分享的話手機的會用完

tranquil wigeon
sick cedar
#

太少了

#

...我不是在回應 @tranquil wigeon

sick cedar
#

Wait
情況有變
之前是確定放招後出問題(有狀態效果和文字)
現在是到底放了沒就出問題

#


變回去了
頭好痛啊啊啊啊啊啊

sterile spade
#

可能出問題的不在這個檔案?

sick cedar
#

有可能
第九招會召喚小怪
但都看不到那些
但是效果會乖乖跑完時間後才卡住
卡住的情況如圖

ruby panther
#

如果真的是你一開始那張圖的 function 卡住
有可能是 distance 的關係

sick cedar
#

HMM

ruby panther
#

distance 範圍太大的時候會卡

sick cedar
#

那...如果找替代?

ruby panther
#

什麼替代

sterile spade
#

那先確認是不是 distance 的問題?

sick cedar
#

替代方法
不要一次大範圍

sterile spade
#

如果不是的話就不用找替代方法了

sick cedar
#

對了
我先把他換掉看看

sick cedar
sterile spade
sick cedar
#

我重跑一遍看看好了

#

等我

sterile spade
#

因為下一個 tick 被延遲了所以 effect 也被懸在那邊

sick cedar
sterile spade
#

就是因為整個處理都被卡住了
所以時間也沒有繼續算下去

#

如果是這樣的話
那問題應該是在另外一個地方

sick cedar
#

可以確定的是
關掉遊戲就會說崩潰了

#

順便說
第一招的字仍正常出現
只是沒有招式效果

ruby panther
#

1.19 之後只要關遊戲都會說崩潰

#

你在那個 function 頭尾個塞一個 say
看看兩個間隔多久

sick cedar
#

哪一個

sterile spade
#

你懷疑造成問題的都試一遍

sick cedar
#

完了
電腦開始當了

sick cedar
#

這次沒有跑第二招就當了

sterile spade
#

看到這邊了嗎

#

這個超過 50 就代表狀況不太好了

#

看起來像是那個召喚尖刺的技能有些問題

#

從 1:03 之後
總實體數量就一直在上升

#

右邊的數字
到了影片結束時已經到了 1007

#

實體太多也有可能是卡住的原因

#

然後對你來說實體持續增加應該不是你想要的效果吧

sick cedar
#

我看一下

#

...我是指相關指令的部分

sick cedar
sick cedar
sterile spade
#

這種情況我們稱之為燒雞

sick cedar
#

🐥😵

#

我傳檔案連結上來行嗎
因為從生成到刪除是多個函數連鎖的

#

@sterile spade

real jolt
sick cedar
#

因為怕尖牙太快

real jolt
#

huh

#

怕玩家沒辦法躲避這樣?

sick cedar
real jolt
#

那個影片 你BOSS召喚出來 就卡住了诶

sick cedar
#

對啊
但其實卡住的那刻是它身上的黑霧消失時

sick cedar
real jolt
#

讓我說一句

#

我覺得

#

你整包砍掉重寫 : D

#

像是我有張地圖是全部以BOSS為主題的戰鬥地圖

#

scoreboard players add boss boss_cd 1

sick cedar
#

No!!!😨😨😨😨😨
噢不!!!

real jolt
#

boss_cd 這個記分板就是專門為了Boss儲存計分的條件

sick cedar
#

不是
這個我做了幾個月了

#

後半段都卡在這問題

real jolt
#

那就更不應該出問題了阿

#

你都做那麼久了 應該只有你自己最清楚你的系統

#

除非你從一開始就是保持著能動就好

#

你看我的寫法

#

就是一個一個列

#

Level 1 是 第一隻boss

#

時間到哪裡開始循環

tranquil wigeon
#

清楚簡潔又明瞭,真不愧是小飯桶

real jolt
#

最簡單暴力的寫法

#

最不會出問題的寫法

real jolt
#

以前的指令沒優化

#

你看這個

#
execute as @e[type=item,nbt={Item:{tag:{show:1b}}}] run execute at @s run data modify entity @e[type=armor_stand,limit=1,sort=nearest,tag=DamageText2] CustomName set from entity @s Item.tag.display.Name
#

XDD

#

超可怕

#

execute run execute

tranquil wigeon
#

喔不,出現run execute了

real jolt
#

那是轉換器的寫法

#

這也是保持著能動就好的問題

sick cedar
#

我最近幾些開著資料包的時時間都是在修這問題...

real jolt
#

我建議你

#

分開寫

#

先把你要的招式列出來

sick cedar
#

real jolt
#

至少你執行skill function要有招式出來吧

#

不能說一個函數沒有boss就不能執行

#

這樣是錯的

sick cedar
#

是不會...吧
好像會

real jolt
#

你看

#

每一招都這樣寫不就沒問題

#

關於你說的

#

延遲執行

#

確實是那樣寫沒錯

sick cedar
#

我是分開的啊

real jolt
#

execute if entity @e[distance=..50]

#

你去試試看

#

你BOSS召喚出來時

#

會有多少實體產生

sick cedar
#

...蛤

#

寫哪

real jolt
#

#

召喚出來

#

你人物去執行

sterile spade
#

聊天欄吧

real jolt
#

yes

#

看測試通過數量多少

sterile spade
#

剛剛那個影片
boss 出場後
實體就開始無限增加

real jolt
#

先看看是不是實體過量導致execute執行太多指令

#

對阿

#

我看那個粒子特效不太像particle

sick cedar
#

但那是

real jolt
#

沒關係

sick cedar
#

我真的是用particle

real jolt
#

你先試試看

#

因為我不確定你BOSS的功能

#

我要先排除是不是實體過多問題

sick cedar
real jolt
#

#

指令反饋規則要打開

sick cedar
#

...怎開
哪條規則

#

我找一下好了

real jolt
#

诶 不對阿

#

你如果問題是出在指令連鎖崩潰

#

那先執行這個

#

/gamerule maxCommandChainLength 1000

#

先去限制指令執行的數量

#

不然不知道是哪裡卡住

sick cedar
#

Hmm

#

那是對方塊耶

sterile spade
#

那個不只是對指令方塊

#

應該所有指令都會被影響

real jolt
#

看來你對指令認知不熟

#

Command 指的是指令

#

maxCHainLength 是一個function能執行多少指令的限制

sick cedar
real jolt
#

先執行 然後錄影上傳 我們看看效果

#

你的影片我沒有看到任何一個招式出來就崩潰了

sick cedar
sick cedar
sick cedar
#

Hmm

#

等一下
存檔時電腦會當

#

需要時間

#

...工作管理員都沒法動了

real jolt
#

還是建議你砍掉重寫 : D

sick cedar
#

我的工作列不見了

real jolt
#

系統當掉囉

#

GG

sick cedar
#

等我一下影片錄好了

sterile spade
#

錄影存檔

#

還是遊戲存檔

sick cedar
#

#

我要重開機了

#

等等繼續嘗試

sterile spade
#

你注意看左上角這個 E 後面的數字

#

影片裡面的

sick cedar
#

對...
仍不停增加

sterile spade
#

代表你的實體還是沒有刪掉

sick cedar
#

詭了

sterile spade
#

不然你先檢查所有的 summon 和 kill

sick cedar
#

怎麼個檢法

sterile spade
#

你是用 VS code 嗎

sick cedar
#

Y

sterile spade
#

有看到左邊的放大鏡圖示嗎

sick cedar
#

sterile spade
#

那個是在整個資料夾裡面搜尋的功能

#

點下去後
在搜尋欄打 summon

sick cedar
#

哦~~~

sterile spade
#

或 kill

sick cedar
#

Then?

#

打了

sterile spade
#

然後底下應該會跑出所有你打的 summon

#

很多嗎

sick cedar
#

sterile spade
#

截圖一下

sick cedar
#

88個

#

中間有一大段跟前圖下方和後圖上方相同

sterile spade
#

那 kill 呢

sick cedar
#

我找找

#

...158個

#

但只有這個是真kill

#

其他不是函數內容就是skill

sterile spade
#

那你能確定你的 marker 都有執行到 kill @s 嗎

#

這個按鈕可以讓它只找整個符合的"單字"

#

就是你搜尋 kill 它不會給你 skill

sick cedar
#

抱歉其實有兩個kill

#

😅

sterile spade
#

所以 1_1_1 是什麼時候觸發的

#

remove_bossbar 呢

sick cedar
#

1_1_1是在1_1和1_2的函數中觸發的
remove_bossbar是在boss 死亡時移除血條和召喚出來的殘留實體

sterile spade
#

那你等我有空下載吧

sick cedar
#

先說我是把整個資料夾共用
所以下載可能有難度

real jolt
#

還是建議你整個重寫 😄
看你上述的技能 我大概一周內就可以完成

sick cedar
# real jolt 還是建議你整個重寫 😄 看你上述的技能 我大概一周內就可以完成

你可以做到是你厲害
重點是這我了不只一個月還做不完
重做不單只是重新規劃做法 也是一個心理陰影
當一個人花了許久時間和精力做出的將完成的作品在遇到問題時的某一刻被完全否定其價值
他將受到極大創傷 甚至一蹶不振
如果這問題無解的話我大不了改技能 絕對不可能重製
這是我的絕心 也只有在此有如此堅強之信念

sterile spade
#
execute as @e[type=marker,tag=lusfa] at @s unless entity @e[distance=..3,tag=lusfa,type=!#lusfa_help] run function lusfa:lusfa/skill/1_1_1
rugged kelpBOT
#

-=發問指南=-

• 請清楚說明你想做什麼,並想要什麼結果。
• 請提及你正在使用的Minecraft版本,以及是否正在使用任何模組。
• 討論完成後,使用 :resolved: resolved 表情符號關閉貼文。

-=Guidelines=-

• Ask your question straight and clearly, tell us what you are trying to do.
• Mention which Minecraft version you are using and any mods.
• Remember to use :resolved: resolved to close the post after resolved.

torpid kernel
#

wtf

#

為什麼

#

喔 我懂了

#

正設

torpid kernel
sterile spade
#

這一行在 1_1 和 1_2 裡面都有
後面的 function 的執行 (也就是 1_1_1) 會排除所有周圍三格內存在相對應實體種類 (#lusfa_help 內也包含 marker 喔) 的 marker
然後只有 1_1_1 內有 kill
所以應該每次都會有些 marker 沒有刪除喔

sterile spade
real jolt
#

看來是對參數不熟練

sick cedar
#

Hmm

sick cedar
#

當我將標記修改成藥水雲時
事情似乎有了好轉
但當我以為一切都結束了
尖牙也正常釋放了
結果TMD遊戲掛掉了

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

#

😱

sick cedar
sterile spade
#


我發現我看錯了

sterile spade
sick cedar
#

仔細觀察整個作品
應該會發現若無玩家額外干擾
有lusfa的標籤但不屬於#lusfa_help的實體只有boss本身
...至少我是如此設定

#

或是我把marker替換成其他實體?
像是昨天用的藥水雲
或是新的類標記實體

#

Hmm

sterile spade
#

那是不是只要 marker 傳送到離 boss 太近的時候就不會執行 kill @s

#

@sick cedar

sick cedar
#

可是boss會浮空啊

#

記得好像是離地八格

sterile spade
#

🤔

#

那你的 marker 怎麼會刪除不掉

#

我自己開世界測試了

#

你一開始傳的那個版本

#

真的是馬上就有上千個 marker 被召喚欸

#

@sick cedar
這邊有個無限循環

sick cedar
#

Hmm

#

這嗎

#

這是我刻意讓他循環偵測

#

不知道有沒有什麼優化法

#

或者我用schedule 做秒循環?

sick cedar
sterile spade
#

我覺得你寫的邏輯有根本上的問題欸

sick cedar
#

噢不...

#

什麼樣的

sterile spade
#

因為我一時也看不出來問題出在哪

sick cedar
#


原來如此
意思是“找不到問題點但就是有問題”-->“說不定整個都是問題”對吧

#

🙃

sterile spade
#

我暫時只讓他釋放一技能 (我在一技能結束時加了一個刪除所有 tag=lusfa 的 marker 的指令)

#

看起來沒有問題

sick cedar
#

Hmm

sterile spade
#

也不是二技能

sick cedar
#

Hm

sterile spade
#

喔我好像知道問題出在哪了

#

這一行你 as @e 執行
只排除了某些特定 type

#

那如果世界上有 100 個符合條件的實體
這行後面的指令就同時被那 100 個實體執行

sick cedar
#

!!!

sterile spade
#

不過你的 tag 實體應該沒有那麼多🤔

sick cedar
#

這是skill_system中的對吧

#

我忘記改了

#

如果沒有辦法讓marker完美刪除
在重複第一招時會讓marker執行

#

...雖然我已經換效果雲了

sterile spade
#

marker 還是比較好啦

sick cedar
#

但若感覺不修改問題仍會些微存在

sterile spade
#

只要你有刪乾淨的話

sick cedar
sterile spade
#

我知道

sick cedar
#

雞曰:懶惰的傑

#

這樣我就不用煩惱刪乾凈的部分

#

我回家後再試試
沒事就可以繼續做

sterile spade
#

應該就是這個問題了
不過你的第一招是真的耗效能w

#

要是有同時有多於一個實體執行它好像就會卡一下

#

要是有幾十個
那遊戲一定先當機

sick cedar
#

看起來可以繼續了

rugged kelpBOT
#

@sick cedar,你的問題解決了嗎?如果已經解決了,記得使用:resolved: resolved 表情符號關閉貼文。
如果還沒解決,可以嘗試在問題中加入更多資訊。
@sick cedar, did your question got a solution? If it did, remember to close this post using :resolved: resolved emoji.
If it didn't, try offer more information of question.

sick cedar
#

我要不要開一個新的版啊...
因為有個不同的問題