Project1

标题: NPC动态提示+自动寻找任务NPC【10.10.5更新】 [打印本页]

作者: 六祈    时间: 2010-10-4 20:29
标题: NPC动态提示+自动寻找任务NPC【10.10.5更新】
本帖最后由 六祈 于 2010-10-5 03:57 编辑

【10.10.5更新内容如下:】
修复一个bug【感谢moy老师测试】
大量优化算法【连续更新了5次……】,字体缩小
坐标动态,即时调整与目标事件的距离【用NWSE表示】
加入事件注释新关键字【重要】,含有该关键字的事件窗体最初就会出现,且到达最高点后不消失【可以切换地图消灭之】

------------------------------吾乃DT的分割线------------------------------------------------

一个DT的作品,但附加了一个【自认为】不错的创意

请先看效果图:【10.10.5更新版】


事件里的设置方法:

目前可用注释:主线、支线和隐藏,优先级 隐藏>主线>支线【用语可以在脚本里设置】

使用方法:只要在【任务npc里添加注释】,就可以轻易的【提示】出主任务npc。【支持读取RMVX的事件当前页:即完成主线后会成为普通npc】。提供了大量设置常量在脚本页,请参看注释。

关于会不会卡:默认设置只允许最多4个窗口同时存在,其余以【队列】储存,延迟出现
并且脚本中有多个参数可用于调节刷新频率,可以自行调节

最后是范例【10.10.5更新版】
NPC动态提示.rar (243.75 KB, 下载次数: 1311)
作者: 越前リョーマ    时间: 2010-10-4 20:52
是靠近那个NPC提示?如果是一直提示的话……嗯,哪个是老乌龟?
作者: 六祈    时间: 2010-10-5 01:35
回复 越前リョーマ 的帖子
更新了,另外阿珂问的如果是之前那个【白色】的【老乌龟】字样的话,其实是上面那个事件对话过一次后的结果
作者: moy    时间: 2010-10-5 01:53
第一反应是龙珠探测器...{:nm_1:}
作者: lbylbtlbylbt    时间: 2010-10-5 08:12
好啊!就是不懂。
作者: 429259591    时间: 2010-10-5 09:04
第一反应是寻宝...
作者: 沉影不器    时间: 2010-10-5 23:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰舞蝶恋    时间: 2010-12-7 20:47
谢谢。。求写法:
改成靠近npc的时候就出现窗口,
一离开范围窗口就渐消失 而且最多就那一个窗口。不要平滑移动的效果。。怎么处理?
谢谢~!
作者: 企鹅达达    时间: 2010-12-8 08:30
回复 冰舞蝶恋 的帖子

窗口没有,表情气泡倒是有一个……上脚本 =.=
  1. =begin
  2.       ★フキダシアイコン常時再生★

  3.       フキダシアイコンを表示し続けるキャラクターを作ります。
  4.       寝ているキャラなどにどうぞ。
  5.       新たな画像ファイルを作って、お店の看板代わりとかもいいかも。

  6.       ● 仕様 ●==========================================================
  7.       フキダシアイコンの画像ファイルは通常、横に8分割したものとなっていますが、
  8.       このスクリプトは、その内の左から数えて、3つ目~7つ目をループ再生します。
  9.       --------------------------------------------------------------------
  10.       このスクリプトで描画するフキダシアイコンのZ軸座標は、
  11.       プレイヤーより上に表示するように、140となっています。
  12.       ====================================================================
  13.       
  14.       ● 使い方 ●========================================================
  15.       イベント>自律移動>カスタム>移動ルート>スクリプトに
  16.           @auto_balloon = n
  17.       と記述してください。nはフキダシアイコンのIDです。
  18.       --------------------------------------------------------------------
  19.       ↑の記述のないイベントページに切り替えれば、再生は停止します。
  20.       ====================================================================
  21.       
  22.       ver1.13

  23.       Last Update : 2010/08/17
  24.       8/17 : ちょっとだけ軽量化
  25.            : フキダシ常時再生中のイベントにも通常のフキダシ表示を可能に改良
  26.       ----------------------2010--------------------------
  27.       8/ 4 : 距離によってフキダシの透明度が変わる機能を追加
  28.       6/ 5 : たまにRGSS2 Playerが動作停止する不具合を修正?(まだ不安)
  29.            : イベントページの切り替えだけで、再生の停止を行えるようになりました
  30.       5/17 : 通常のフキダシアイコン時にエラーが出ることがあるバグを修正
  31.       5/17 : 新規
  32.       ----------------------2009--------------------------
  33.       
  34.       ろかん   http://kaisouryouiki.web.fc2.com/
  35. =end

  36. #===========================================
  37. #   設定箇所
  38. #===========================================
  39. module Rokan
  40. module Auto_Balloon
  41.     # フキダシの半透明化が始まるプレイヤーとの距離
  42.     # 不透明化を行わない場合は"0"を設定してください。
  43.     DBO = 4
  44.     # 不透明化する度合(値が大きいほど、少し離れただけで見えなくなります)
  45.     BOS = 60
  46.     # 使用するフキダシアイコン画像ファイル名(Graphics/System/)
  47.     ABF = "Balloon"
  48. end
  49. end
  50. #===========================================
  51. #   ここまで
  52. #===========================================

  53. $rsi = {} if $rsi == nil
  54. $rsi["フキダシアイコン常時再生"] = true

  55. class Game_Character
  56.   #--------------------------------------------------------------------------
  57.   # ● 公開インスタンス変数
  58.   #--------------------------------------------------------------------------
  59.   attr_reader   :auto_balloon
  60.   #--------------------------------------------------------------------------
  61.   # ● オブジェクト初期化
  62.   #--------------------------------------------------------------------------
  63.   alias rsm_initialize01 initialize
  64.   def initialize
  65.     rsm_initialize01
  66.     @auto_balloon = 0
  67.   end
  68. end

  69. class Game_Event < Game_Character
  70.   #--------------------------------------------------------------------------
  71.   # ● リフレッシュ
  72.   #--------------------------------------------------------------------------
  73.   def refresh
  74.     new_page = nil
  75.     unless @erased                          # 一時消去されていない場合
  76.       for page in @event.pages.reverse      # 番号の大きいページから順に
  77.         next unless conditions_met?(page)   # 条件合致判定
  78.         new_page = page
  79.         break
  80.       end
  81.     end
  82.     if new_page != @page            # イベントページが変わった?
  83.       @auto_balloon = 0             # オートバルーン情報をクリア
  84.       clear_starting                # 起動中フラグをクリア
  85.       setup(new_page)               # イベントページをセットアップ
  86.       check_event_trigger_auto      # 自動イベントの起動判定
  87.     end
  88.   end
  89. end

  90. class Sprite_Character < Sprite_Base
  91.   #--------------------------------------------------------------------------
  92.   # ● インクルード Rokan::Auto_Balloon
  93.   #--------------------------------------------------------------------------
  94.   include Rokan::Auto_Balloon
  95.   #--------------------------------------------------------------------------
  96.   # ● 解放
  97.   #--------------------------------------------------------------------------
  98.   alias auto_b_dispose dispose
  99.   def dispose
  100.     dispose_auto_balloon
  101.     auto_b_dispose
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● フレーム更新
  105.   #--------------------------------------------------------------------------
  106.   alias rsm_update01 update
  107.   def update
  108.     rsm_update01
  109.     if @character.auto_balloon.zero? || ! @balloon_duration.zero?
  110.       dispose_auto_balloon
  111.     else
  112.       update_auto_balloon
  113.     end
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● プレイヤーとの距離
  117.   #--------------------------------------------------------------------------
  118.   def distance_player
  119.     return @character.distance_x_from_player.abs + @character.distance_y_from_player.abs
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● フキダシ半透明化処理
  123.   #--------------------------------------------------------------------------
  124.   def distance_balloom_opacity
  125.     return if DBO.zero?
  126.     @auto_balloon_sprite.opacity = 255 - BOS * (distance_player - DBO)
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 常時再生フキダシアイコン表示の開始
  130.   #--------------------------------------------------------------------------
  131.   def start_auto_balloon
  132.     dispose_auto_balloon
  133.     @balloon_id = @character.auto_balloon
  134.     @auto_balloon_sprite = Sprite.new(self.viewport)
  135.     @auto_balloon_sprite.bitmap = Cache.system(ABF)
  136.     @auto_balloon_sprite.z = 140
  137.     @auto_balloon_sprite.ox = 16
  138.     @auto_balloon_sprite.oy = 32
  139.     @ry = (@character.auto_balloon - 1) * 32
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 常時再生フキダシアイコンの更新
  143.   #--------------------------------------------------------------------------
  144.   def update_auto_balloon
  145.     if ! @auto_balloon_sprite || @balloon_id != @character.auto_balloon
  146.       start_auto_balloon
  147.     end
  148.     @auto_balloon_sprite.x = self.x
  149.     @auto_balloon_sprite.y = self.y - self.height
  150.     distance_balloom_opacity
  151.     if @bw == 10
  152.       @bw = 0 ; @bx = (@bx == 4) ? 0 : @bx + 1
  153.       @auto_balloon_sprite.src_rect.set(@bx * 32 + 64, @ry, 32, 32)
  154.     else
  155.       @bw += 1
  156.     end
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 常時再生フキダシアイコンの解放
  160.   #--------------------------------------------------------------------------
  161.   def dispose_auto_balloon
  162.     @bw = 10 ; @bx = -1
  163.     if @auto_balloon_sprite
  164.       @auto_balloon_sprite.dispose
  165.       @auto_balloon_sprite = nil
  166.     end
  167.   end
  168. end

复制代码

作者: summer92    时间: 2010-12-8 11:28
第一反应是遇敌
作者: 冰舞蝶恋    时间: 2010-12-8 13:47
回复 企鹅达达 的帖子

求用法。
作者: 冰舞蝶恋    时间: 2010-12-8 22:53
回复 企鹅达达 的帖子

呃。谢谢啦
不过呐。怎么设定某些事件靠近以后不提示?




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