设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2560|回复: 8
打印 上一主题 下一主题

[已经解决] 【关于任务】这个怎么搞

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2012-8-28
帖子
117
跳转到指定楼层
1
发表于 2013-8-24 13:51:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 hyx1963 于 2013-10-5 13:46 编辑

同网络游戏那样接任务npc头上的感叹号 问号 是怎么搞的

Lv2.观梦者

梦石
0
星屑
362
在线时间
1292 小时
注册时间
2013-1-12
帖子
3590

贵宾

2
发表于 2013-8-25 09:22:33 | 只看该作者
請搜索Hover Alerts

算了 傳送門開啟!
http://pastebin.com/ZXHC9b2m

点评

代理什么  发表于 2013-8-25 18:33
不明觉厉=-=  发表于 2013-8-25 13:03

评分

参与人数 1星屑 +80 收起 理由
Sion + 80 感谢帮忙

查看全部评分


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2012-8-28
帖子
117
3
 楼主| 发表于 2013-8-25 11:59:57 | 只看该作者
76213585 发表于 2013-8-25 09:22
請搜索Hover Alerts

算了 傳送門開啟!

什么 什么来的 打不开

点评

代理  发表于 2013-8-25 12:06
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
119 小时
注册时间
2012-10-19
帖子
144
4
发表于 2013-8-25 12:08:14 | 只看该作者
有几个方法,一
自己去制作人物头上带感叹号的行走图。。。。。
做出来后直接用(我不会。。。

制作一个感叹号的行走图,然后在NPC上一个格子做个事件,图标就是感叹号。。(出现条件为任务完成,没完成就问号。。。。。。。。。。。。。好人卡,必须的,给我啊

评分

参与人数 1星屑 +80 收起 理由
Sion + 80 感谢帮忙

查看全部评分

点击下面的文字
论坛
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22963
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
5
发表于 2013-8-25 15:45:02 | 只看该作者
村人系統

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2012-8-28
帖子
117
6
 楼主| 发表于 2013-8-25 18:30:30 | 只看该作者
664299301 发表于 2013-8-25 12:08
有几个方法,一
自己去制作人物头上带感叹号的行走图。。。。。
做出来后直接用(我不会。。。

1.我没有好人做,所以没好人卡。
2.你讲的话,好似5系几行得通
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2012-8-28
帖子
117
7
 楼主| 发表于 2013-8-25 18:31:50 | 只看该作者
tseyik 发表于 2013-8-25 15:45
村人系統

你的好似几好,是怎么搞的
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22963
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
8
发表于 2013-8-25 19:06:58 | 只看该作者
本帖最后由 tseyik 于 2013-8-25 19:14 编辑
hyx1963 发表于 2013-8-25 18:31
你的好似几好,是怎么搞的
  1. #==============================================================================
  2. # ★ RGSS3_村人のつぶやき Ver0.1a
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. webサイト:ひきも記は閉鎖しました。 (http://hikimoki.sakura.ne.jp/)

  7. キャラクターの頭上にフキダシメッセージを表示します。

  8. イベント名、あるいは実行内容の先頭に注釈コマンドでメッセージを設定します。
  9.   <mrbt 少年>
  10.     メッセージタイプを 少年 に設定します、メッセージタイプは
  11.     自由に編集、追加することができます。
  12.    
  13.   イベントコマンドのスクリプトを使い、手動でメッセージを表示することもできます。
  14.   mrbt(0, "動き理解した?")
  15.     最初の数値でメッセージを表示するイベントを指定してください、
  16.     0 で実行中のイベント、-1 でプレイヤー、1 以上でそのIDのイベントが対象です。
  17.    
  18. メッセージには以下の制御文字が利用できます、内容は文章の表示コマンドと同様です。
  19.   \V[1] / \N[1] / \P / \C[2] / \G
  20.   上記以外に \L で手動での改行が可能です。
  21.   
  22. 注意事項
  23.   イベント名と注釈コマンドの両方でメッセージタイプを指定した場合は
  24.   注釈コマンドが優先されます。注釈コマンドでの指定がないイベントページでのみ
  25.   イベント名による指定が有効になります。

  26. 動作に必要な画像
  27.   Graphics/System/mrbt_window.png
  28.   
  29. 2013.08.20 Ver0.1a
  30.   公開

  31. =end

  32. #==============================================================================
  33. # ■ 設定項目
  34. #==============================================================================
  35. module TMMRBT
  36.   FONT_SIZE = 16                  # フォントサイズ
  37.   BACK_OPACITY = 192              # つぶやきウィンドウの不透明度
  38.   MESSAGE_DURATION = 240          # つぶやきの表示時間(フレーム)
  39.   
  40.   MIN_INTERVAL = 180              # 次のつぶやきまでの最小間隔(フレーム)
  41.   MAX_INTERVAL = 360              # 次のつぶやきまでの最大間隔(フレーム)
  42.   
  43.   # メッセージタイプの設定
  44.   # メッセージは '' で囲み、カンマで区切って必要な数だけ設定します
  45.   DATABASE = {}
  46.   DATABASE["少年"] = ['わーい!', '\C[2]動き\C[0]理解した?', '\N[1]さん!\Lこんにちは!']
  47.   DATABASE["盗賊"] = ['げへへへ', 'ひゃっはーー!!']
  48.   DATABASE["任務"] = ['在這接\C[2]任務\C[0]','我是\C[2]任務長\C[0]。']
  49. end

  50. #==============================================================================
  51. # ■ Game_Character
  52. #==============================================================================
  53. class Game_Character
  54.   #--------------------------------------------------------------------------
  55.   # ○ 現在のつぶやき内容を返す
  56.   #--------------------------------------------------------------------------
  57.   def mrbt
  58.     @mrbt
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ○ つぶやきをセット
  62.   #--------------------------------------------------------------------------
  63.   def set_mrbt(text)
  64.     @mrbt = text
  65.   end
  66. end

  67. #==============================================================================
  68. # ■ Game_Event
  69. #==============================================================================
  70. class Game_Event
  71.   #--------------------------------------------------------------------------
  72.   # ● イベントページの設定をセットアップ
  73.   #--------------------------------------------------------------------------
  74.   alias tmmrbt_game_event_setup_page_settings setup_page_settings
  75.   def setup_page_settings
  76.     tmmrbt_game_event_setup_page_settings
  77.     set_next_mrbt_count
  78.     @mrbt_type = /<mrbt\s+(\S+?)>/i =~ @event.name ? $1 : nil
  79.     if @list
  80.       @list.each do |list|
  81.         if list.code == 108 || list.code == 408
  82.           @mrbt_type = $1 if /<mrbt\s+(\S+?)>/i =~ list.parameters[0]
  83.         else
  84.           break
  85.         end
  86.       end
  87.     else
  88.       @mrbt = nil
  89.     end
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● フレーム更新
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     super
  96.     update_mrbt
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ○ つぶやきの更新
  100.   #--------------------------------------------------------------------------
  101.   def update_mrbt
  102.     if @mrbt_count > 0
  103.       @mrbt_count -= 1
  104.       if @mrbt_count == 0
  105.         set_mrbt(get_random_mrbt)
  106.         set_next_mrbt_count
  107.       end
  108.     end
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ○ ランダムつぶやきの内容取得
  112.   #--------------------------------------------------------------------------
  113.   def get_random_mrbt
  114.     return nil unless @mrbt_type && TMMRBT::DATABASE[@mrbt_type]
  115.     TMMRBT::DATABASE[@mrbt_type][rand(TMMRBT::DATABASE[@mrbt_type].size)].clone
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ○ ランダムつぶやきの待機時間をセット
  119.   #--------------------------------------------------------------------------
  120.   def set_next_mrbt_count
  121.     n = rand([TMMRBT::MAX_INTERVAL - TMMRBT::MIN_INTERVAL, 1].max)
  122.     @mrbt_count = TMMRBT::MIN_INTERVAL + n
  123.   end
  124. end

  125. #==============================================================================
  126. # ■ Game_Interpreter
  127. #==============================================================================
  128. class Game_Interpreter
  129.   #--------------------------------------------------------------------------
  130.   # ● 指定したIDのイベントにつぶやきを強制
  131.   #--------------------------------------------------------------------------
  132.   def mrbt(id, text)
  133.     event = $game_map.interpreter.get_character(id)
  134.     event.set_mrbt(text) if event
  135.   end
  136. end

  137. #==============================================================================
  138. # ■ Sprite_Character
  139. #==============================================================================
  140. class Sprite_Character
  141.   #--------------------------------------------------------------------------
  142.   # ● オブジェクト初期化
  143.   #     viewport  : ビューポート
  144.   #     character : キャラクター (Game_Character)
  145.   #--------------------------------------------------------------------------
  146.   alias tmmrbt_sprite_character_initialize initialize
  147.   def initialize(viewport, character = nil)
  148.     @bitmap_mrbt = Cache.system("mrbt_window")
  149.     @mrbt_duration = 0
  150.     tmmrbt_sprite_character_initialize(viewport, character)
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 解放
  154.   #--------------------------------------------------------------------------
  155.   alias tmmrbt_sprite_character_dispose dispose
  156.   def dispose
  157.     dispose_mrbt
  158.     tmmrbt_sprite_character_dispose
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ○ フキダシメッセージの解放
  162.   #--------------------------------------------------------------------------
  163.   def dispose_mrbt
  164.     if @mrbt_sprite
  165.       @mrbt_sprite.bitmap.dispose if @mrbt_sprite.bitmap
  166.       @mrbt_sprite.dispose
  167.       @mrbt_sprite = nil
  168.     end
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● その他の更新
  172.   #--------------------------------------------------------------------------
  173.   alias tmmrbt_sprite_character_update_other update_other
  174.   def update_other
  175.     tmmrbt_sprite_character_update_other
  176.     update_mrbt
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ○ フキダシメッセージの更新
  180.   #--------------------------------------------------------------------------
  181.   def update_mrbt
  182.     if @mrbt_duration > 0
  183.       @mrbt_duration -= 1
  184.       if @mrbt_duration == 0
  185.         @character.set_mrbt(nil)
  186.       else
  187.         @mrbt_sprite.x = x
  188.         @mrbt_sprite.y = y - height
  189.         @mrbt_sprite.opacity = @mrbt_duration * 24
  190.       end
  191.     end
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 新しいエフェクトの設定
  195.   #--------------------------------------------------------------------------
  196.   alias tmmrbt_sprite_character_setup_new_effect setup_new_effect
  197.   def setup_new_effect
  198.     tmmrbt_sprite_character_setup_new_effect
  199.     if @mrbt != @character.mrbt
  200.       @mrbt = @character.mrbt
  201.       start_mrbt(@mrbt)
  202.     end
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ○ 文字色取得
  206.   #     n : 文字色番号 (0~31)
  207.   #--------------------------------------------------------------------------
  208.   def text_color(n)
  209.     x = (n % 8) * 8
  210.     y = 32 + (n / 8) * 8
  211.     return @bitmap_mrbt.get_pixel(x, y)
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ○ 特殊文字の変換
  215.   #--------------------------------------------------------------------------
  216.   def convert_special_characters(text)
  217.     text.gsub!(/\\/)               { "\e" }
  218.     text.gsub!(/\e\e/)             { "\\" }
  219.     text.gsub!(/\eV\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  220.     text.gsub!(/\eV\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  221.     text.gsub!(/\eN\[([0-9]+)\]/i) { actor_name($1.to_i) }
  222.     text.gsub!(/\eP\[(\d+)\]/i)    { party_member_name($1.to_i) }
  223.     text.gsub!(/\eG/i)             { Vocab::currency_unit }
  224.     text.gsub!(/\eL/i)             { "\x00" }
  225.     text.gsub!(/\eC\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  226.     text
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ○ アクター n 番の名前を取得
  230.   #--------------------------------------------------------------------------
  231.   def actor_name(n)
  232.     actor = n >= 1 ? $game_actors[n] : nil
  233.     actor ? actor.name : ""
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ○ パーティメンバー n 番の名前を取得
  237.   #--------------------------------------------------------------------------
  238.   def party_member_name(n)
  239.     actor = n >= 1 ? $game_party.members[n - 1] : nil
  240.     actor ? actor.name : ""
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ○ フキダシメッセージ表示の開始
  244.   #--------------------------------------------------------------------------
  245.   def start_mrbt(text)
  246.     dispose_mrbt
  247.     return unless text
  248.     @mrbt_duration = TMMRBT::MESSAGE_DURATION
  249.     text = convert_special_characters(text)
  250.     pos = {:x => 4, :y => 0, :width => 0, :line_height => TMMRBT::FONT_SIZE + 4}
  251.     bitmap = Bitmap.new(160, 160)
  252.     bitmap.font.size = TMMRBT::FONT_SIZE
  253.     loop do
  254.       c = text.slice!(/./m)         # 次の文字を取得
  255.       case c
  256.       when nil
  257.         break                           # 描画すべき文字がなければ終了
  258.       when "\x00"                       # 改行
  259.         process_new_line(pos)
  260.       when "\x01"                       # \C[n]  (文字色変更)
  261.         text.sub!(/\[([0-9]+)\]/, "")
  262.         bitmap.font.color = text_color($1.to_i)
  263.       else
  264.         bitmap.draw_text(pos[:x], pos[:y], 40, pos[:line_height], c)
  265.         c_width = bitmap.text_size(c).width
  266.         pos[:x] += c_width
  267.         process_new_line(pos) if pos[:x] >= 140   # 右端にきていれば改行
  268.       end
  269.     end
  270.     w = [pos[:x], pos[:width]].max + 4
  271.     h = pos[:y] + (pos[:x] == 4 ? 0 : pos[:line_height])
  272.     create_mrbt_sprite(w, h)            # フキダシウィンドウのスプライトを作成
  273.     @mrbt_sprite.bitmap.blt(0, 0, bitmap, bitmap.rect)
  274.     bitmap.dispose
  275.     update_mrbt
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ○ 改行の処理
  279.   #--------------------------------------------------------------------------
  280.   def process_new_line(pos)
  281.     pos[:width] = pos[:x] if pos[:width] < pos[:x]
  282.     pos[:x] = 4
  283.     pos[:y] += pos[:line_height]
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ○ フキダシウィンドウのスプライトを作成
  287.   #--------------------------------------------------------------------------
  288.   def create_mrbt_sprite(width, height)
  289.     @mrbt_sprite = ::Sprite.new(nil)
  290.     @mrbt_sprite.z = 90
  291.     @mrbt_sprite.ox = width / 2
  292.     @mrbt_sprite.oy = height + 4
  293.     @mrbt_sprite.bitmap = Bitmap.new(width, height + 8)
  294.     rect = Rect.new(0, 0, 8, 8)
  295.     alpha = TMMRBT::BACK_OPACITY
  296.     @mrbt_sprite.bitmap.blt(0, 0, @bitmap_mrbt, rect, alpha)
  297.     rect.x += 8
  298.     @mrbt_sprite.bitmap.blt(width - 8, 0, @bitmap_mrbt, rect, alpha)
  299.     rect.y += 8
  300.     @mrbt_sprite.bitmap.blt(width - 8, height - 8, @bitmap_mrbt, rect, alpha)
  301.     rect.x -= 8
  302.     @mrbt_sprite.bitmap.blt(0, height - 8, @bitmap_mrbt, rect, alpha)
  303.     rect.set(16, 0, 8, 8)
  304.     @mrbt_sprite.bitmap.blt(@mrbt_sprite.ox - 4, height, @bitmap_mrbt, rect, alpha)
  305.     color = @bitmap_mrbt.get_pixel(8, 8)
  306.     color.alpha = alpha
  307.     @mrbt_sprite.bitmap.fill_rect(8, 0, width - 16, height, color)
  308.     @mrbt_sprite.bitmap.fill_rect(0, 8, 8, height - 16, color)
  309.     @mrbt_sprite.bitmap.fill_rect(width - 8, 8, 8, height - 16, color)
  310.   end
  311. end



复制代码
設定可自由增加
在事件加上註釋<mrbt xx>#xx=小年或任務
動作必要な画像放在
  Graphics/System/mrbt_window.png

  DATABASE["少年"] = ['わーい!', '\C[2]動き\C[0]理解した?', '\N[1]さん!\Lこんにちは!']
  DATABASE["盗賊"] = ['げへへへ', 'ひゃっはーー!!']
  DATABASE["任務"] = ['在這接\C[2]任務\C[0]','我是\C[2]任務長\C[0]。']

RE.zip

3.96 KB, 下载次数: 45

解圧放在Graphics/System/

评分

参与人数 1梦石 +1 收起 理由
Sion + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2012-8-28
帖子
117
9
 楼主| 发表于 2013-8-26 16:07:08 | 只看该作者
tseyik 发表于 2013-8-25 19:06
設定可自由增加
在事件加上註釋#xx=小年或任務
動作必要な画像放在

mrbt_window.png这是什么图片

点评

導入到Graphics/System/ 主要是NPC説話的∇形  发表于 2013-8-26 16:42
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 20:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表