Project1

标题: 如何使npc显示叹号然后按一下接受任务后叹号消失? [打印本页]

作者: 镜子你不可以    时间: 2014-9-14 09:51
标题: 如何使npc显示叹号然后按一下接受任务后叹号消失?
如何使npc显示叹号然后按一下接受任务后叹号消失?
附图一张,但是不行。求助。

QQ浏览器截屏未命名.png (45.31 KB, 下载次数: 28)

QQ浏览器截屏未命名.png

作者: 游戏我的爱    时间: 2014-9-14 10:14
虽然不知道对你合不合适


第一页这样设置

第二页这样设置

作者: 镜子你不可以    时间: 2014-9-14 10:19
游戏我的爱 发表于 2014-9-14 10:14
虽然不知道对你合不合适

不是这样的,叹号是要在与不接触主角的情况下间接出现的。否则别人怎么知道有没有任务,难道还要一个一个地去按?555555555!
作者: 墨凌羽    时间: 2014-9-14 10:22
用这个做也太麻烦了吧,而且一直循环。。。。。lz找个脚本来试试吧
作者: 游戏我的爱    时间: 2014-9-14 10:23
本帖最后由 游戏我的爱 于 2014-9-14 10:24 编辑
镜子你不可以 发表于 2014-9-14 10:19
不是这样的,叹号是要在与不接触主角的情况下间接出现的。否则别人怎么知道有没有任务,难道还要一个一个 ...


扔个脚本给你好了

RUBY 代码复制
  1. #==============================================================================
  2. # ★ RGSS3_ネームポップ Ver1.1
  3. #==============================================================================
  4. =begin
  5.  
  6. 作者:tomoaky
  7. webサイト:ひきも記 ([url=http://hikimoki.sakura.ne.jp/]http://hikimoki.sakura.ne.jp/[/url])
  8.  
  9. イベント名かイベント実行内容の先頭に『注釈』コマンドで
  10. <namepop 文字列>
  11. と記述してください。
  12. イベントキャラクターの頭上に文字列が表示されます。
  13.  
  14. イベント名で指定した場合はイベント全ページに適用されますが、
  15. 優先度は注釈コマンドの方が高くなっています。
  16.  
  17. 文字を消したい場合は <namepop none> としてください。
  18.  
  19. 2011.12.16  Ver1.1
  20.   ・フォントの縁取り不透明度を設定項目に追加
  21.  
  22. 2011.12.15  Ver1.0
  23.   公開
  24.  
  25. =end
  26. $s_id = 1           #控制是否显示的开关
  27.  
  28.  
  29. #==============================================================================
  30. # □ 設定項目
  31. #==============================================================================
  32. module TMNPOP
  33.   FONT_SIZE = 18          # フォントサイズ
  34.  
  35. FONT_OUT_ALPHA = 255    # フォントの縁取り不透明度
  36.   end
  37.  
  38.  
  39. #==============================================================================
  40. # ■ Game_Character
  41. #==============================================================================
  42. class Game_Character
  43.   #--------------------------------------------------------------------------
  44.   # ● 公開インスタンス変数
  45.   #--------------------------------------------------------------------------
  46.   attr_accessor :namepop                  # ポップアップテキスト
  47.   #--------------------------------------------------------------------------
  48. end
  49.  
  50. #==============================================================================
  51. # ■ Game_Event
  52. #==============================================================================
  53. class Game_Event < Game_Character
  54.   #--------------------------------------------------------------------------
  55.   # ● イベントページの設定をセットアップ
  56.   #--------------------------------------------------------------------------
  57.   alias tmnpop_game_event_setup_page_settings setup_page_settings
  58.   def setup_page_settings
  59.     tmnpop_game_event_setup_page_settings
  60.     if @list
  61.       @namepop = $1 if /<namepop\s*(\S+?)>/i =~ @event.name
  62.       @list.each do |list|
  63.         if list.code == 108 || list.code == 408
  64.           @namepop = $1 if /<namepop\s*(\S+?)>/i =~ list.parameters[0]
  65.         else
  66.           break
  67.         end
  68.       end
  69.     end
  70.   end
  71. end
  72.  
  73. #==============================================================================
  74. # ■ Sprite_Character
  75. #==============================================================================
  76. class Sprite_Character < Sprite_Base
  77.   #--------------------------------------------------------------------------
  78.   # ● 解放
  79.   #--------------------------------------------------------------------------
  80.   alias tmnpop_sprite_character_dispose dispose
  81.   def dispose
  82.     dispose_namepop
  83.     tmnpop_sprite_character_dispose
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● フレーム更新
  87.   #--------------------------------------------------------------------------
  88.   alias tmnpop_sprite_character_update update
  89.   def update
  90.     tmnpop_sprite_character_update
  91.     update_namepop
  92.     if @character.namepop != @namepop
  93.       @namepop = @character.namepop
  94.       start_namepop
  95.     end
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ○ namepopの開始
  99.   #--------------------------------------------------------------------------
  100.   def start_namepop
  101.     dispose_namepop
  102.     return if @namepop == "none" || @namepop == nil
  103.     @namepop_sprite = ::Sprite.new(viewport)
  104.     h = TMNPOP::FONT_SIZE + 4
  105.     @namepop_sprite.bitmap = Bitmap.new(h * 10, h)
  106.     @namepop_sprite.bitmap.font.size = TMNPOP::FONT_SIZE
  107.     @namepop_sprite.bitmap.font.out_color.alpha = TMNPOP::FONT_OUT_ALPHA
  108.     @namepop_sprite.bitmap.draw_text(0, 0, h * 10, h, @namepop, 1)
  109.     @namepop_sprite.ox = h * 5
  110.     @namepop_sprite.oy = h
  111.     update_namepop
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ○ namepopの更新
  115.   #--------------------------------------------------------------------------
  116.   def update_namepop
  117.     if @namepop_sprite
  118.       @namepop_sprite.x = x
  119.       @namepop_sprite.y = y - height
  120.       @namepop_sprite.z = z + 200
  121.     end
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ○ namepopの解放
  125.   #--------------------------------------------------------------------------
  126.   def dispose_namepop
  127.     if @namepop_sprite
  128.       @namepop_sprite.bitmap.dispose
  129.       @namepop_sprite.dispose
  130.       @namepop_sprite = nil
  131.     end
  132.   end
  133. end


这样可以在NPC头上显示名字~感叹号 就改为名字吧~因为找不到链接,有问题你就直接说吧....
作者: 镜子你不可以    时间: 2014-9-14 10:39
游戏我的爱 发表于 2014-9-14 10:23
扔个脚本给你好了

#==============================================================================

可是,如果是名字的话,不就一直出现了吗?那接受任务了叹号是不是还在?我还想在完成任务的时候,npc头上出现问号呢!
作者: 镜子你不可以    时间: 2014-9-14 10:49
好像脚本没效果啊?怎么用这个脚本?

mingzi.png (6.26 KB, 下载次数: 23)

mingzi.png

mingzi2.png (6.39 KB, 下载次数: 22)

mingzi2.png

作者: 游戏我的爱    时间: 2014-9-14 10:52
本帖最后由 游戏我的爱 于 2014-9-14 10:53 编辑
图片和图片效果


然后你自行修改其他地方,就可以了!

注释<namepop none>    可以取消名字显示
作者: 镜子你不可以    时间: 2014-9-14 10:57
游戏我的爱 发表于 2014-9-14 10:52
[fold=图片和图片效果][/fold]

然后你自行修改其他地方,就可以了!

那张图片是什么啊?人家是脚本盲啊。
作者: 镜子你不可以    时间: 2014-9-14 11:00
有件事值得一说,用了上面的那个脚本,加上了注释之后,我最上边的那个做法竟然行了,只不过没有显示名字,而且叹号闪了几下就不闪了。而且而且,喵呜喵5的对话框显示名字的脚本无效化了。。。@喵呜喵5(这个符号是啥?)
作者: 小鸟小鸟的世界    时间: 2014-9-14 11:01
这个问题在百度知道出现过……你应该就是那个提问者了,人家不是回答了么,不用脚本,你去回看一下?
作者: 镜子你不可以    时间: 2014-9-14 11:07
我哪里说“和”了?
作者: 镜子你不可以    时间: 2014-9-14 11:12
小鸟小鸟的世界 发表于 2014-9-14 11:01
这个问题在百度知道出现过……你应该就是那个提问者了,人家不是回答了么,不用脚本,你去回看一下? ...

你就是那个弄了几个草皮就能接受任务的回答者?那样多占空间啊。
作者: 镜子你不可以    时间: 2014-9-14 11:24
不行啊,@游戏我的爱 ,照你的设置,还是没有显示......

asdasas.png (15.82 KB, 下载次数: 17)

asdasas.png

作者: VIPArcher    时间: 2014-9-14 11:25
本帖最后由 VIPArcher 于 2014-9-14 11:44 编辑
镜子你不可以 发表于 2014-9-14 11:24
不行啊,@游戏我的爱 ,照你的设置,还是没有显示......


给你一个脚本,会用就用。不会就算了
使用方法,在事件的第一行注释以下内容。
\hover_alert { name = ""; icon = 361; icon_hue = 0;
time = -1;fontname = "Default"; fontsize = 20;
colour = 0; bold = false;italic = false;
effect = :none; effect_param = nil;se = nil;
proximity = 0 }

补一张效果图吧

@Time @character
脚本正体
  
作者: tseyik    时间: 2014-9-14 11:28
本帖最后由 tseyik 于 2014-9-14 11:31 编辑

アイコンポップ Ver1.2
事件指令『脚本』使用以下指令
  pop_icon(事件id, icon_id, 顯示時間)
事件id,0:事件本身,-1:玩者,1以上:事件id
顯示時間:幀数,60為1秒
  例)pop_icon(-1, 17, 300)

  取消icon表示同delete_icon 指令
  
  
  例)delete_icon(-1)
作者的網頁将於15年5月関閉,
  1. #==============================================================================
  2. # ★ RGSS3_アイコンポップ Ver1.2
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

  7. イベントの頭上に任意のアイコンを表示することができます。

  8. イベントコマンド『スクリプト』で以下を実行してください
  9.   pop_icon(event_id, icon_id, duration)
  10.   
  11.   event_id 番のイベントの頭上に icon_id 番のアイコンが表示されます。
  12.   event_id に 0 を指定すると実行中のイベント自身が対象となり、
  13.   -1 を指定すればプレイヤーが対象となります。
  14.   duration は省略することが可能です、その場合は 120 となります。
  15.   
  16.   例)pop_icon(-1, 17, 300)
  17.   プレイヤーに戦闘不能アイコンを5秒間(300フレーム)表示します
  18.   
  19.   アイコン表示中に pop_icon コマンドを実行しても効果はありません。
  20.   すぐに次のアイコンを表示したい場合は、delete_icon コマンドで
  21.   アイコンを削除してから pop_icon コマンドを実行してください。
  22.   
  23.   例)delete_icon(-1)
  24.   プレイヤーに表示中のアイコンを削除する
  25.   
  26. おまけとしてイベントコマンド『アイテムの増減』『武器の増減』『防具の増減』が
  27. 実行されたとき、自動でアイコンを表示する機能が付いています。
  28.   アイコンを表示する対象はゲーム変数(初期設定では6番)で変更が可能です、
  29.   値は pop_icon コマンドにおける event_id と同様ですが、-2 以下を指定することで
  30.   機能をオフにすることができます。
  31.   

  32. 使用するゲーム変数(初期設定)
  33.   0006
  34.   
  35. 2012.01.19  Ver1.2
  36.  ・表示中のアイコンポップを削除する delete_icon コマンドを追加
  37.  ・自律移動【カスタム】のスクリプトコマンドで
  38.   アイコンポップ機能が動作しない不具合を修正
  39.   
  40. 2011.12.21  Ver1.11
  41.  ・並列処理で event_id に 0 を指定するとアイコンが表示されない不具合を修正
  42.   
  43. 2011.12.17  Ver1.1
  44.  ・コマンドに表示時間を指定する機能を追加しました

  45. 2011.12.15  Ver1.0
  46.   公開

  47. =end

  48. #==============================================================================
  49. # □ 設定項目
  50. #==============================================================================
  51. module TMICPOP
  52.   GRAVITY = 24              # アイコンにかかる重力
  53.   SPEED   = -320            # アイコンの初速(Y方向)
  54.   
  55.   VN_TARGET = 6             # 自動ポップ対象設定として扱うゲーム変数番号
  56. end

  57. #==============================================================================
  58. # □ コマンド
  59. #==============================================================================
  60. module TMICPOP
  61. module Commands
  62.   #--------------------------------------------------------------------------
  63.   # ○ アイコンポップの開始
  64.   #--------------------------------------------------------------------------
  65.   def pop_icon(event_id, icon_id, duration = 120)
  66.     target = get_character(event_id)
  67.     return unless target
  68.     target.icpop_id = icon_id
  69.     target.icpop_duration = duration
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ○ アイコンポップの削除
  73.   #--------------------------------------------------------------------------
  74.   def delete_icon(event_id)
  75.     target = get_character(event_id)
  76.     return unless target
  77.     target.icpop_delete_flag = true
  78.   end
  79. end
  80. end # module TMICPOP

  81. #==============================================================================
  82. # ■ Game_CharacterBase
  83. #==============================================================================
  84. class Game_CharacterBase
  85.   #--------------------------------------------------------------------------
  86.   # ● 公開インスタンス変数
  87.   #--------------------------------------------------------------------------
  88.   attr_accessor :icpop_id                 # アイコンポップ ID
  89.   attr_accessor :icpop_duration           # アイコンポップ 表示時間
  90.   attr_accessor :icpop_delete_flag        # アイコンポップ 削除フラグ
  91.   #--------------------------------------------------------------------------
  92.   # ● 公開メンバ変数の初期化
  93.   #--------------------------------------------------------------------------
  94.   alias tmicpop_game_characterbase_init_public_members init_public_members
  95.   def init_public_members
  96.     tmicpop_game_characterbase_init_public_members
  97.     @icpop_id = 0
  98.     @icpop_duration = 0
  99.     @icpop_delete_flag = false
  100.   end
  101. end

  102. #==============================================================================
  103. # ■ Sprite_Character
  104. #==============================================================================
  105. class Sprite_Character
  106.   #--------------------------------------------------------------------------
  107.   # ● オブジェクト初期化
  108.   #     character : Game_Character
  109.   #--------------------------------------------------------------------------
  110.   alias tmicpop_sprite_character_initialize initialize
  111.   def initialize(viewport, character = nil)
  112.     @icpop_duration = 0
  113.     tmicpop_sprite_character_initialize(viewport, character)
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 解放
  117.   #--------------------------------------------------------------------------
  118.   alias tmicpop_sprite_character_dispose dispose
  119.   def dispose
  120.     dispose_icpop
  121.     tmicpop_sprite_character_dispose
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● フレーム更新
  125.   #--------------------------------------------------------------------------
  126.   alias tmicpop_sprite_character_update update
  127.   def update
  128.     update_icpop
  129.     tmicpop_sprite_character_update
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 新しいエフェクトの設定
  133.   #--------------------------------------------------------------------------
  134.   alias tmicpop_sprite_character_setup_new_effect setup_new_effect
  135.   def setup_new_effect
  136.     tmicpop_sprite_character_setup_new_effect
  137.     if !@icpop_sprite && @character.icpop_id > 0
  138.       @icpop_id = @character.icpop_id
  139.       @character.icpop_id = 0
  140.       start_icpop
  141.     end
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ○ アイコンポップ表示の開始
  145.   #--------------------------------------------------------------------------
  146.   def start_icpop
  147.     dispose_icpop
  148.     @icpop_duration = @icpop_duration_max = @character.icpop_duration
  149.     @icpop_sprite = ::Sprite.new(viewport)
  150.     @icpop_sprite.bitmap = Cache.system("IconSet")
  151.     @icpop_sprite.src_rect.set(@icpop_id % 16 * 24, @icpop_id / 16 * 24, 24, 24)
  152.     @icpop_sprite.ox = 12
  153.     @icpop_sprite.oy = 24
  154.     @icpop_y_plus = 0
  155.     @icpop_y_speed = TMICPOP::SPEED
  156.     update_icpop
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ○ アイコンポップの解放
  160.   #--------------------------------------------------------------------------
  161.   def dispose_icpop
  162.     @character.icpop_delete_flag = false
  163.     if @icpop_sprite
  164.       @icpop_sprite.dispose
  165.       @icpop_sprite = nil
  166.     end
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ○ アイコンポップの更新
  170.   #--------------------------------------------------------------------------
  171.   def update_icpop
  172.     if @icpop_duration > 0
  173.       @icpop_duration -= 1
  174.       if @character.icpop_delete_flag
  175.         @icpop_duration = 0
  176.         dispose_icpop
  177.       elsif @icpop_duration > 0
  178.         @icpop_sprite.x = x
  179.         @icpop_y_plus += @icpop_y_speed
  180.         @icpop_y_speed += TMICPOP::GRAVITY
  181.         if @icpop_y_plus > 0
  182.           @icpop_y_plus = 0 - @icpop_y_plus
  183.           @icpop_y_speed = 0 - @icpop_y_speed / 2
  184.         end
  185.         @icpop_sprite.y = y - height + (@icpop_y_plus / 256)
  186.         @icpop_sprite.z = z + 200
  187.         @icpop_sprite.opacity = (@icpop_duration < 16 ? @icpop_duration * 16 :
  188.           (@icpop_duration_max - @icpop_duration) * 32)
  189.       else
  190.         dispose_icpop
  191.         @character.icpop_id = 0
  192.       end
  193.     end
  194.   end
  195. end

  196. #==============================================================================
  197. # ■ Game_Event
  198. #==============================================================================
  199. class Game_Event
  200.   include TMICPOP::Commands
  201.   #--------------------------------------------------------------------------
  202.   # ○ キャラクターの取得
  203.   #     param : -1 ならプレイヤー、0 ならこのイベント、それ以外はイベント ID
  204.   #--------------------------------------------------------------------------
  205.   def get_character(param)
  206.     if param < 0
  207.       $game_player
  208.     else
  209.       $game_map.events[param > 0 ? param : @id]
  210.     end
  211.   end
  212. end

  213. #==============================================================================
  214. # ■ Game_Interpreter
  215. #==============================================================================
  216. class Game_Interpreter
  217.   include TMICPOP::Commands
  218.   #--------------------------------------------------------------------------
  219.   # ● アイテムの増減
  220.   #--------------------------------------------------------------------------
  221.   alias tmicpop_game_interpreter_command_126 command_126
  222.   def command_126
  223.     tmicpop_game_interpreter_command_126
  224.     value = operate_value(@params[1], @params[2], @params[3])
  225.     if value > 0
  226.       if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle
  227.         item = $data_items[@params[0]]
  228.         pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index)
  229.       end
  230.     end
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 武器の増減
  234.   #--------------------------------------------------------------------------
  235.   alias tmicpop_game_interpreter_command_127 command_127
  236.   def command_127
  237.     tmicpop_game_interpreter_command_127
  238.     value = operate_value(@params[1], @params[2], @params[3])
  239.     if value > 0
  240.       if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle
  241.         item = $data_weapons[@params[0]]
  242.         pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index)
  243.       end
  244.     end
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 防具の増減
  248.   #--------------------------------------------------------------------------
  249.   alias tmicpop_game_interpreter_command_128 command_128
  250.   def command_128
  251.     tmicpop_game_interpreter_command_128
  252.     value = operate_value(@params[1], @params[2], @params[3])
  253.     if value > 0
  254.       if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle
  255.         item = $data_armors[@params[0]]
  256.         pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index)
  257.       end
  258.     end
  259.   end
  260. end

复制代码

作者: 镜子你不可以    时间: 2014-9-14 11:29
VIPArcher 发表于 2014-9-14 11:25
给你一个脚本,会用就用。不会就算了

怎么这样......我....我.......只是想把游戏做得好一点而已。5555555
作者: 镜子你不可以    时间: 2014-9-14 11:36
VIPArcher 发表于 2014-9-14 11:25
给你一个脚本,会用就用。不会就算了
使用方法,在事件的第一行注释以下内容。
\hover_alert { name = "" ...

结果....

sjohi.png (8.07 KB, 下载次数: 25)

sjohi.png

作者: 喵kano    时间: 2014-9-14 11:48
给楼主一个简单的事件思路。 楼主也可以选择使用楼上各种脚本,个人比较推荐事件。
A.地图上设置一个并行事件(触发条件为-并行处理),思路是当【任务开启】的开关被打开后,地图上的人物持续显示心情-惊讶(叹号),当【接受任务】开关打开后关闭心情显示-惊讶。


B.上面提到的地图上人物的设置,对话后打开【接受任务】的开关,关闭叹号的显示。



作者: 镜子你不可以    时间: 2014-9-14 11:49
为什么还是不行?

4654.png (1.69 KB, 下载次数: 22)

4654.png

64154.png (7.93 KB, 下载次数: 17)

64154.png

作者: 镜子你不可以    时间: 2014-9-14 12:07
@游戏我的爱 @小鸟小鸟的世界 @VIPArcher @tseyik @喵kano ,感谢你们的回复。不好意思占用了你们这么多时间。问题已经解决了。目前采用了喵kano的事件法,还有其他人的我用不来。@游戏我的爱 ,其实,你的方法也应该是可行的,但是,我没有按开那个图,所以我做错了。有机会的话我也去试一下那个方法。至此,感谢你们。





                                                                                             祝你们幸福快乐,天天向上。
                                                                                          2014年9月14日,@镜子你不可以  

asdas.png (2.37 KB, 下载次数: 12)

没有按开的图

没有按开的图

作者: 3106345123    时间: 2014-9-14 16:36
本帖最后由 3106345123 于 2014-9-14 16:37 编辑
Hover Alerts v1.3:这个脚本可以在指定角色头顶上显示动画,文字,或者一个图标,可是用它来做出像暗黑破坏神那样NPC头顶出现任务对话的讯号,或是一些网游中NPC有任务时头顶上的惊嘆号,接受任务后的金色问号,这些头顶上的图文都可以独立关闭,不会影响到别的事件NPC,而且头顶上的图文会跟随NPC移动,是十分不错的脚本。
http://rmrk.net/index.php/topic,46911.0.html

范例下载
作者: 莫言别离    时间: 2014-9-14 20:50
......为什么不直接在行走图上添加叹号,接了任务直接改变npc行走图不就好了...




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1