Open X5005 opened 2 years ago
奇怪,为什么还是会有这个BUG。我再看看。
又测试了两次,没有出现这个BUG。奇怪。
似乎这个BUG跟生还者的角色有关,电脑Nick在触发相关触发器时对应的文本并没有被广播
寄,这是什么鬼BUG,同一个角色有时开图能触发有时不能。不做了,睡大觉。
觸發範圍無限大覆蓋到整張地圖不是個好點子 你的想法很好但是存在很多錯誤
"hint_range" "0"
就能全場倖存者無論多遠都能接收到,但受到很多限制影響sv_gameinstructor_disable
,否則全部玩家看不見觸發範圍無限大覆蓋到整張地圖不是個好點子 你的想法很好但是存在很多錯誤
1. [trigger_once](https://developer.valvesoftware.com/wiki/Trigger_once) 是一次性物件,**只要任何人碰到一次就會自己消失**,所以覆蓋全場沒什麼意義 2. [env_instructor_hint](https://developer.valvesoftware.com/wiki/Env_instructor_hint) 才是真正的提示訊息,會把提示訊息發給所有倖存者,設定屬性`"hint_range" "0"`就能全場倖存者無論多遠都能接收到,但受到很多限制影響 * 玩家必須開始新手指導教學(esc->選項->多人連線->遊戲指導系統->啟用),否則只有他自己看不見 * 伺服器不得修改指令`sv_gameinstructor_disable`,否則全部玩家看不見 * 即使都有檢查無誤,依然受到遊戲系統影響,貌似是遊戲自己幫玩家決定要不要顯示或何時顯示 3. 最好不要寫中文,容易有亂碼問題,不是每個系統都吃中文,一開始測試英文都是[安全牌](https://baike.baidu.com/item/ASCII/309296)
用 trigger_once 主要是因为当玩家在 addoutput 定义的区域范围内时 trigger_multiple 会重复触发提示音。c1m1 关底的门前用的就是 trigger_multiple,然后只要一直呆在那个区域里 HINT 和相应的提示音就会重复触发。
我又看了看HINT的各种属性,也许可以将 hint_display_limit 设置为 1、将 hint_timeout 设置为 0,并和上述的全图触发器配套使用: 1)在地图生成时禁用 HINT; 2)触发器启用 HINT; 3)利用全图触发器使每名玩家都能触发 HINT,藉此使每名玩家都能够接收到信息的推送。
hint_auto_start 在某些情况下似乎不正常工作,也可能是我在查属性时忽略掉了这个东西。
这些功能以及中文换成英文的那些代码我还是过两天再看看,我还是先睡觉去了。
觸發範圍無限大覆蓋到整張地圖不是個好點子 你的想法很好但是存在很多錯誤
1. [trigger_once](https://developer.valvesoftware.com/wiki/Trigger_once) 是一次性物件,**只要任何人碰到一次就會自己消失**,所以覆蓋全場沒什麼意義 2. [env_instructor_hint](https://developer.valvesoftware.com/wiki/Env_instructor_hint) 才是真正的提示訊息,會把提示訊息發給所有倖存者,設定屬性`"hint_range" "0"`就能全場倖存者無論多遠都能接收到,但受到很多限制影響 * 玩家必須開始新手指導教學(esc->選項->多人連線->遊戲指導系統->啟用),否則只有他自己看不見 * 伺服器不得修改指令`sv_gameinstructor_disable`,否則全部玩家看不見 * 即使都有檢查無誤,依然受到遊戲系統影響,貌似是遊戲自己幫玩家決定要不要顯示或何時顯示 3. 最好不要寫中文,容易有亂碼問題,不是每個系統都吃中文,一開始測試英文都是[安全牌](https://baike.baidu.com/item/ASCII/309296)
用 trigger_once 主要是因为当玩家在 addoutput 定义的区域范围内时 trigger_multiple 会重复触发提示音。c1m1 关底的门前用的就是 trigger_multiple,然后只要一直呆在那个区域里 HINT 和相应的提示音就会重复触发。
我又看了看HINT的各种属性,也许可以将 hint_display_limit 设置为 1、将 hint_timeout 设置为 0,并和上述的全图触发器配套使用: 1)在地图生成时禁用 HINT; 2)触发器启用 HINT; 3)利用全图触发器使每名玩家都能触发 HINT,藉此使每名玩家都能够接收到信息的推送。
* 设置类型为 Trigger_multiple 以免!self,kill; * hint_display_limit 设置为 1,以免 Trigger_multiple 重复触发提示音; * hint_timeout 设置为 0,以保证提示不会被自动关闭。
hint_auto_start 在某些情况下似乎不正常工作,也可能是我在查属性时忽略掉了这个东西。
这些功能以及中文换成英文的那些代码我还是过两天再看看,我还是先睡觉去了。
我又试了一下,似乎将 hint_display_limit 设置为 1 时仍然存在通知无法推送给所有玩家的 bug。
看了一会 env_instructor_hint 的参数,然后我试了试把 hint_display_limit 设置为 0(不限制提示的产生次数)、把 hint_instance_type 设置为 1(阻止新提示),测试后发现 c1m2 枪店房顶的 hint 能够稳定触发。
奇怪的是 c1m3 警报门前的 hint 提示有时不会被触发,而与开门有关的 hint 却能够稳定地触发。
我怀疑作为触发器的 addoutput 或基于此的触发过程存在某种形式的引擎 bug。总之,我想我找到了修复这个 bug 的替代方法……虽然有点麻烦。
——————
_用于测试 hint 的配置文件:c1m2_streets.zip_
测试方法:用 /tele 将电脑传送到 addoutput(触发器)定义的范围内,以触发 hint 的相关事件,然后看看它能不能正常工作。
测试结果:7/7 次触发。
貌似只有最接近激光路障(触发相关触发器)的玩家接收到了“等待60秒”的信息。
我在另一张图测试 env_instructor_hint 这个东西时也注意到了这个BUG的存在,并且这个BUG似乎同时也在C1M2给发电机灌油桶的相关提示("The generator is way too low on gas to operate the door!")中出现。
于是我想了一个比较阴间的方法:能不能将【文字提示】的触发范围设置为一个无限大的值并将其禁用,同时将相关触发器的设置变更为重新启用文字提示触发器,从而使所有位于【文字提示】触发范围(无限大的)生还者接收到相关的推送信息的“广播”呢?
例如:
嗯……我测试了一个类似的代码,显然它奏效了。
然而貌似有个小问题,这个触发器在镶嵌CAMERA相关代码时会导致视角切回后玩家无法移动、无法转动视角、没有第一人称手臂且无法射击。我甚至以为我电脑死机了XD。
这个问题我也测试了一下,简单来说就是不要把相关代码放进文本提示的触发器和逻辑中继(logic_relay)里。例如:
总的来说,……也许不需要什么总结: 1)将HINT的相关代码(trigger_once*2和logic_relay)独立出来; 2)为HINT和其他事件按需定义触发范围(logic_auto); 3)将HINT的触发器定义为无限大范围,并将其禁用; 4)使某个事件重新启用HINT的触发器,从而实现HINT的广播; 5)没了,是不是很简单?学废了吗XD。
例如:
aviso_camara1.zip
不知道为什么文本编辑器的插入代码不能用,凑合一下吧XD。
C1M3的激光路障的相关代码改成这样应该就能用推送给每名生还者了,虽然我没测试过。我等会还要去给C1M3的一个电锯锯铁丝网触发警报的事件添加类似的文本提示XD。
还有就是 aviso_camara1_event 的 addoutput - min / max 的范围我还没试过有多近/多远,不过这应该不会有太大影响。
这个(c1m2_streets.zip)是我用来测试 env_instructor_hint 时反复修改出的最终代码。
在测试过程中主要通过用控制台命令 warp_all_survivors_here 传送电脑(BOTS)到附近,然后用电脑触发相关事件以测试 hint_caption 是否推送给每名生还者。