RUBY 代码 - #功能:判定某人是否在队内,如果不在队内则不显示他的对话。
- #默认格式:【角色名】
- #例如:【娜塔丽】今天天气真好!
- #若娜塔丽在队伍中则显示这句话,否则不显示。
- #不仅限于角色名,可以自由添加其他敏感词。填写在shield_words_list = []数组内即可。
- #如果在对话中发现敏感词,则不显示这句对话。
- #默认1号开关开启本功能,如果想使用别的开关把JUDGE=1改成其他值即可。关闭1号开关则关闭该功能。
- #开关的设定放在事件页的第一条才能起效果,原理不明。放在中间的话对后续的文字可能是不起效果的。
- #为了改善使用体验,请将开关设定放在事件页第一条来书写事件。
- #作者:梅林
- #允许随意使用和修改,可以不标注作者。需要修改本脚本的有关功能可以联系我。
- class Window_Message < Window_Base
- JUDGE = 1
- #1号开关用于决定是否打开本效果。注意,只有放在事件最前面才有效。
- def add_shield_words(shield_words_list)
- #shield_words_list = []
- i = 1
- #把不在队的角色名添加进敏感词列表
- loopdo
- if$game_party.battle_members.include?($game_actors[i])
- else
- shield_words_list.push('【'+$game_actors[i].name+'】')
- end
- i += 1
- breakunless$game_actors[i]
- end
- end
- #显示文字的煮鲜橙
- alias merlin20171102_fiber_main fiber_main
- def fiber_main
- if$game_switches[JUDGE]
- merlin_judge_fiber_main
- else
- merlin20171102_fiber_main
- end
- end
- def merlin_judge_fiber_main
- $game_message.visible = true
- shield_words_list = []
- update_background
- update_placement
- add_shield_words(shield_words_list)
- loopdo
- text = convert_escape_characters($game_message.all_text)
- if$game_message.has_text?
- if judge_text(text, shield_words_list) == 1
- $game_message.clear
- else
- process_all_text
- process_input
- end
- end
- $game_message.clear
- @gold_window.close
- Fiber.yield
- breakunless text_continue?
- end
- close_and_wait
- $game_message.visible = false
- @fiber = nil
- end
- #判定是否含有敏感词
- #alias merlin20171102_judge_text judge_text
- def judge_text(text, shield_words_list)
- i = 0
- flag = 0
- loopdo
- if shield_words_list[i] == nil
- break
- else
- if text.include?(shield_words_list[i])
- flag = 1
- break
- end
- end
- i += 1
- end
- return flag
- end
- end
复制代码
本帖来自P1论坛作者魔法☆梅莉,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=403715 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |