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

Project1

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

[已经解决] 求ひきも記的アイコンポップ脚本添加开关控制

[复制链接]

Lv4.逐梦者 (版主)

漾夕☽星化残月☾

梦石
0
星屑
8596
在线时间
3857 小时
注册时间
2015-5-12
帖子
2077

剧作品鉴家

跳转到指定楼层
1
发表于 2016-1-4 16:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
{:2_276:} 如题的说。。。

求ひきも記的アイコンポップ脚本添加开关控制
我试了好多方法全都失败了...

就是比如说当6号开关关闭时、角色获得物品不会有提示。
6号开关开启时、角色获得物品会有提示(脚本功能)。
麻烦各位了...OTZ

RUBY 代码复制
  1. #==============================================================================
  2. # ★ RGSS3_アイコンポップ Ver1.2
  3. #==============================================================================
  4. =begin
  5.  
  6. 作者:tomoaky
  7. webサイト:ひきも記 ([url]http://hikimoki.sakura.ne.jp/[/url])
  8.  
  9. イベントの頭上に任意のアイコンを表示することができます。
  10.  
  11. イベントコマンド『スクリプト』で以下を実行してください
  12.   pop_icon(event_id, icon_id, duration)
  13.  
  14.   event_id 番のイベントの頭上に icon_id 番のアイコンが表示されます。
  15.   event_id に 0 を指定すると実行中のイベント自身が対象となり、
  16.   -1 を指定すればプレイヤーが対象となります。
  17.   duration は省略することが可能です、その場合は 120 となります。
  18.  
  19.   例)pop_icon(-1, 17, 300)
  20.   プレイヤーに戦闘不能アイコンを5秒間(300フレーム)表示します
  21.  
  22.   アイコン表示中に pop_icon コマンドを実行しても効果はありません。
  23.   すぐに次のアイコンを表示したい場合は、delete_icon コマンドで
  24.   アイコンを削除してから pop_icon コマンドを実行してください。
  25.  
  26.   例)delete_icon(-1)
  27.   プレイヤーに表示中のアイコンを削除する
  28.  
  29. おまけとしてイベントコマンド『アイテムの増減』『武器の増減』『防具の増減』が
  30. 実行されたとき、自動でアイコンを表示する機能が付いています。
  31.   アイコンを表示する対象はゲーム変数(初期設定では6番)で変更が可能です、
  32.   値は pop_icon コマンドにおける event_id と同様ですが、-2 以下を指定することで
  33.   機能をオフにすることができます。
  34.  
  35.  
  36. 使用するゲーム変数(初期設定)
  37.   0006
  38.  
  39. 2012.01.19  Ver1.2
  40.  ・表示中のアイコンポップを削除する delete_icon コマンドを追加
  41.  ・自律移動【カスタム】のスクリプトコマンドで
  42.   アイコンポップ機能が動作しない不具合を修正
  43.  
  44. 2011.12.21  Ver1.11
  45.  ・並列処理で event_id に 0 を指定するとアイコンが表示されない不具合を修正
  46.  
  47. 2011.12.17  Ver1.1
  48.  ・コマンドに表示時間を指定する機能を追加しました
  49.  
  50. 2011.12.15  Ver1.0
  51.   公開
  52.  
  53. =end
  54.  
  55. #==============================================================================
  56. # □ 設定項目
  57. #==============================================================================
  58. module TMICPOP
  59.   GRAVITY = 24              # アイコンにかかる重力
  60.   SPEED   = -320            # アイコンの初速(Y方向)
  61.  
  62.   VN_TARGET = 6             # 自動ポップ対象設定として扱うゲーム変数番号
  63. end
  64.  
  65. #==============================================================================
  66. # □ コマンド
  67. #==============================================================================
  68. module TMICPOP
  69. module Commands
  70.   #--------------------------------------------------------------------------
  71.   # ○ アイコンポップの開始
  72.   #--------------------------------------------------------------------------
  73.   def pop_icon(event_id, icon_id, duration = 120)
  74.     target = get_character(event_id)
  75.     return unless target
  76.     target.icpop_id = icon_id
  77.     target.icpop_duration = duration
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ○ アイコンポップの削除
  81.   #--------------------------------------------------------------------------
  82.   def delete_icon(event_id)
  83.     target = get_character(event_id)
  84.     return unless target
  85.     target.icpop_delete_flag = true
  86.   end
  87. end
  88. end # module TMICPOP
  89.  
  90. #==============================================================================
  91. # ■ Game_CharacterBase
  92. #==============================================================================
  93. class Game_CharacterBase
  94.   #--------------------------------------------------------------------------
  95.   # ● 公開インスタンス変数
  96.   #--------------------------------------------------------------------------
  97.   attr_accessor :icpop_id                 # アイコンポップ ID
  98.   attr_accessor :icpop_duration           # アイコンポップ 表示時間
  99.   attr_accessor :icpop_delete_flag        # アイコンポップ 削除フラグ
  100.   #--------------------------------------------------------------------------
  101.   # ● 公開メンバ変数の初期化
  102.   #--------------------------------------------------------------------------
  103.   alias tmicpop_game_characterbase_init_public_members init_public_members
  104.   def init_public_members
  105.     tmicpop_game_characterbase_init_public_members
  106.     @icpop_id = 0
  107.     @icpop_duration = 0
  108.     @icpop_delete_flag = false
  109.   end
  110. end
  111.  
  112. #==============================================================================
  113. # ■ Sprite_Character
  114. #==============================================================================
  115. class Sprite_Character
  116.   #--------------------------------------------------------------------------
  117.   # ● オブジェクト初期化
  118.   #     character : Game_Character
  119.   #--------------------------------------------------------------------------
  120.   alias tmicpop_sprite_character_initialize initialize
  121.   def initialize(viewport, character = nil)
  122.     @icpop_duration = 0
  123.     tmicpop_sprite_character_initialize(viewport, character)
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 解放
  127.   #--------------------------------------------------------------------------
  128.   alias tmicpop_sprite_character_dispose dispose
  129.   def dispose
  130.     dispose_icpop
  131.     tmicpop_sprite_character_dispose
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● フレーム更新
  135.   #--------------------------------------------------------------------------
  136.   alias tmicpop_sprite_character_update update
  137.   def update
  138.     update_icpop
  139.     tmicpop_sprite_character_update
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 新しいエフェクトの設定
  143.   #--------------------------------------------------------------------------
  144.   alias tmicpop_sprite_character_setup_new_effect setup_new_effect
  145.   def setup_new_effect
  146.     tmicpop_sprite_character_setup_new_effect
  147.     if !@icpop_sprite && @character.icpop_id > 0
  148.       @icpop_id = @character.icpop_id
  149.       @character.icpop_id = 0
  150.       start_icpop
  151.     end
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ○ アイコンポップ表示の開始
  155.   #--------------------------------------------------------------------------
  156.   def start_icpop
  157.     dispose_icpop
  158.     @icpop_duration = @icpop_duration_max = @character.icpop_duration
  159.     @icpop_sprite = ::Sprite.new(viewport)
  160.     @icpop_sprite.bitmap = Cache.system("IconSet")
  161.     @icpop_sprite.src_rect.set(@icpop_id % 16 * 24, @icpop_id / 16 * 24, 24, 24)
  162.     @icpop_sprite.ox = 12
  163.     @icpop_sprite.oy = 24
  164.     @icpop_y_plus = 0
  165.     @icpop_y_speed = TMICPOP::SPEED
  166.     update_icpop
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ○ アイコンポップの解放
  170.   #--------------------------------------------------------------------------
  171.   def dispose_icpop
  172.     @character.icpop_delete_flag = false
  173.     if @icpop_sprite
  174.       @icpop_sprite.dispose
  175.       @icpop_sprite = nil
  176.     end
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ○ アイコンポップの更新
  180.   #--------------------------------------------------------------------------
  181.   def update_icpop
  182.     if @icpop_duration > 0
  183.       @icpop_duration -= 1
  184.       if @character.icpop_delete_flag
  185.         @icpop_duration = 0
  186.         dispose_icpop
  187.       elsif @icpop_duration > 0
  188.         @icpop_sprite.x = x
  189.         @icpop_y_plus += @icpop_y_speed
  190.         @icpop_y_speed += TMICPOP::GRAVITY
  191.         if @icpop_y_plus > 0
  192.           @icpop_y_plus = 0 - @icpop_y_plus
  193.           @icpop_y_speed = 0 - @icpop_y_speed / 2
  194.         end
  195.         @icpop_sprite.y = y - height + (@icpop_y_plus / 256)
  196.         @icpop_sprite.z = z + 200
  197.         @icpop_sprite.opacity = (@icpop_duration < 16 ? @icpop_duration * 16 :
  198.           (@icpop_duration_max - @icpop_duration) * 32)
  199.       else
  200.         dispose_icpop
  201.         @character.icpop_id = 0
  202.       end
  203.     end
  204.   end
  205. end
  206.  
  207. #==============================================================================
  208. # ■ Game_Event
  209. #==============================================================================
  210. class Game_Event
  211.   include TMICPOP::Commands
  212.   #--------------------------------------------------------------------------
  213.   # ○ キャラクターの取得
  214.   #     param : -1 ならプレイヤー、0 ならこのイベント、それ以外はイベント ID
  215.   #--------------------------------------------------------------------------
  216.   def get_character(param)
  217.     if param < 0
  218.       $game_player
  219.     else
  220.       $game_map.events[param > 0 ? param : @id]
  221.     end
  222.   end
  223. end
  224.  
  225. #==============================================================================
  226. # ■ Game_Interpreter
  227. #==============================================================================
  228. class Game_Interpreter
  229.   include TMICPOP::Commands
  230.   #--------------------------------------------------------------------------
  231.   # ● アイテムの増減
  232.   #--------------------------------------------------------------------------
  233.   alias tmicpop_game_interpreter_command_126 command_126
  234.   def command_126
  235.     tmicpop_game_interpreter_command_126
  236.     value = operate_value(@params[1], @params[2], @params[3])
  237.     if value > 0
  238.       if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle
  239.         item = $data_items[@params[0]]
  240.         pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index)
  241.       end
  242.     end
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 武器の増減
  246.   #--------------------------------------------------------------------------
  247.   alias tmicpop_game_interpreter_command_127 command_127
  248.   def command_127
  249.     tmicpop_game_interpreter_command_127
  250.     value = operate_value(@params[1], @params[2], @params[3])
  251.     if value > 0
  252.       if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle
  253.         item = $data_weapons[@params[0]]
  254.         pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index)
  255.       end
  256.     end
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● 防具の増減
  260.   #--------------------------------------------------------------------------
  261.   alias tmicpop_game_interpreter_command_128 command_128
  262.   def command_128
  263.     tmicpop_game_interpreter_command_128
  264.     value = operate_value(@params[1], @params[2], @params[3])
  265.     if value > 0
  266.       if $game_variables[TMICPOP::VN_TARGET] >= -1 && !$game_party.in_battle
  267.         item = $data_armors[@params[0]]
  268.         pop_icon($game_variables[TMICPOP::VN_TARGET], item.icon_index)
  269.       end
  270.     end
  271.   end
  272. end

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2016-1-4 17:31:12 | 只看该作者
  1. module TMICPOP::Commands
  2.   ID = 1 # 这里改ID编号
  3.   def pop_icon(event_id, icon_id, duration = 120)
  4.     return if $game_switches[ID]
  5.     target = get_character(event_id)
  6.     return unless target
  7.     target.icpop_id = icon_id
  8.     target.icpop_duration = duration
  9.   end
  10. end
复制代码
未测试

点评

试了一下、原来是开/关作用反了、实际上还是有效的...  发表于 2016-1-4 20:47
这个脚本的最后面追加上这一段  发表于 2016-1-4 19:48
呃、这个是插在什么地方?脚本页的最后还是mian里面都不行的样子...  发表于 2016-1-4 19:26

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
taroxd + 1 认可答案
御曹司 + 10 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
21 小时
注册时间
2015-12-31
帖子
9
3
发表于 2016-1-4 20:05:44 | 只看该作者
看了下代码,这是个有个初始速度的图片(精灵)掉落的动画效果。
如果不想看到动画,可以改变以下两个参数(选择一种即可):
1,调用pop_icon方法时(73行)第三个参数duration为0,也可以target.icpop_duration = 0。
2,或者在pop_icon方法获取target后,加上target.icpop_delete_flag=true。

楼主说的6号开关存储值是第一个pop_icon方法参数event_id,这个事件的位置是图片(精灵)开始掉落的初始位置,所以只需要找一些特殊值(必须大于0)判断event_id,加上以上的条件即可。

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
taroxd + 1 我很赞同
御曹司 + 10 很有帮助!

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 06:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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