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

Project1

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

[讨论] 用RGM做了个方便小巧的内嵌命令行输入框

[复制链接]

Lv2.观梦者

梦石
0
星屑
440
在线时间
62 小时
注册时间
2023-7-16
帖子
20
跳转到指定楼层
1
发表于 2023-8-5 22:54:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 zlyl_wiley 于 2023-8-6 22:31 编辑

RGM是自带了控制台的,但那个好像并不能用来输入命令,只能干瞪着(还是我不会用啊?)
没事,里面不还自带了个TextBox么,所以自己做一下也很简单,出来效果还不错,随时输入指令都不用动一下鼠标
虽然依赖于RGM,但即使最终不用RGM,只要工程跟它不冲突的都可以用这个来做测试,因为用起来真的超方便





真正用的时候可以先在脚本里预设一些指令,名字简短一点,类似这样:

  1. def imm
  2.   for actor in $game_party.actors
  3.     actor.immortal = true
  4.   end
  5. end

  6. def win
  7.   for enemy in $game_troop.enemies
  8.     enemy.hp = 0
  9.   end
  10. end

  11. def g n
  12.   $game_party.gain_gold(n)
  13.   $scene = Scene_Menu.new if $scene.class == Scene_Menu
  14. end
复制代码


脚本:

  1. #==============================================================================
  2. # ■ RGM专用CLI输入框 v1.0.1
  3. #------------------------------------------------------------------------------
  4. # 使用说明:
  5. # 脚本插入 Main 前。此功能依赖于 RGM(1.0.4) ,其它 runtime 运行时不会加载。
  6. # 在以下指定的 Scene 中按 Alt 键呼出输入框,输入指令后按 Enter 键立刻执行,
  7. # Esc 键为清空内容,若中途想退出控制台,直接清空后按回车键即可。
  8. # 上、下键可以切换输入框的显示位置。
  9. #
  10. # Wiley 2023.8.5
  11. #==============================================================================

  12. if defined? RGM

  13.   # 数组中是需要添加输入框的 Scene ,可自行增删
  14.   $add_cli_scenes = [
  15.     Scene_Title,
  16.     Scene_Map,
  17.     Scene_Menu,
  18.     Scene_Item,
  19.     Scene_Skill,
  20.     Scene_Equip,
  21.     Scene_Status,
  22.     Scene_Battle,
  23.     Scene_Shop,
  24.     Scene_Debug
  25.   ]

  26.   module RGM
  27.     module Ext
  28.       module Window
  29.         module_function
  30.         def wiley_get_width
  31.           @@width
  32.         end
  33.         def wiley_get_height
  34.           @@height
  35.         end
  36.       end
  37.       class TextBox
  38.         attr_accessor :sprite
  39.       end
  40.     end
  41.   end

  42.   class Window_CLI < Window_Base
  43.     def initialize
  44.       super(16, 16, RGM::Ext::Window::wiley_get_width - 32, 64)
  45.       self.back_opacity = 200 # 背景透明度设置
  46.     end
  47.   end

  48.   $add_cli_scenes.each do |scene|
  49.     scene.alias_method :wiley_old_update, :update
  50.     scene.send :define_method, :update do
  51.       if $tbox
  52.         if Input.trigger?(Input::DOWN)
  53.           $tbox.sprite.y = RGM::Ext::Window::wiley_get_height - $winc.height
  54.           $winc.y = $tbox.sprite.y - 16
  55.         elsif Input.trigger?(Input::UP)
  56.           $winc.y = 16
  57.           $tbox.sprite.y = 32
  58.         end
  59.         $tbox.update
  60.         unless $tbox.active
  61.           eval $tbox.last_text
  62.           $winc.dispose
  63.           $winc = $tbox = nil
  64.         end
  65.       elsif Input.trigger?(23) # 呼出按键设置
  66.         $winc = Window_CLI.new
  67.         $winc.z = 10010
  68.         $tbox = RGM::Ext::TextBox.new
  69.         $tbox.set_rect(32, 32, RGM::Ext::Window::wiley_get_width - 64, 32)
  70. #        $tbox.default_text = 'p "hi"' # 这里可以设置默认输入内容
  71.         $tbox.background_color = Color.new(0, 0, 0, 0)
  72.         $tbox.text_color = Color.new(255, 255, 255, 255)
  73.         $tbox.enable
  74.       else
  75.         wiley_old_update
  76.       end
  77.     end
  78.   end

  79. end
复制代码

评分

参与人数 1+1 收起 理由
enghao_lim + 1 我很赞同

查看全部评分

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
2
发表于 2023-8-8 17:08:42 | 只看该作者
这个想法非常好,要是可以直接预设一些基本指令非脚本党调试就会更易了了。比如果说增减物品,等级之类。。。

评分

参与人数 1+1 收起 理由
zlyl_wiley + 1 谢谢肯定,那我等下去写一些~

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 20:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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