查看: 36136|回复: 92

[RMVA发布] 五行脚本

[复制链接]

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-5-1 21:40:24 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 喵呜喵5 于 2015-5-2 11:37 编辑

闲得Egg疼,决定开一个帖子放一些自己写的简单脚本,

这个帖子中的脚本满足以下条件:

1.脚本的长度在五行或五行以下
2.每行的字符包括空格不超过79个,即RMVA默认脚本中脚本第二行那串注释的长度
3.这些脚本都是有一定意义的,并不是什么打开游戏时弹个窗口说句 hello world 那样鸡肋的代码
4.这些脚本的用法是直接插入到脚本编辑器的main以上,而不是事件脚本

所有的脚本都将更新到2楼,在2楼点评可以接收更新提示

以上


有没有人有兴趣和我一起挖这个大坑的www?

点评

噶~,感觉被骗了,本来以为是 五行(xing)脚本.  发表于 2015-5-2 13:22
http://rm.66rpg.com/forum.php?mod=viewthread&tid=370473  发表于 2015-5-1 21:50

评分

参与人数 4星屑 +50 赞 +1 收起 理由
雪蓮姬 + 1 精品文章
804173948 + 20 好好玩的样子,,
s05s0039 + 15
菊花侠小赵 + 15 QAQ

查看全部评分

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

 楼主| 发表于 2015-5-1 21:42:22 | 显示全部楼层
本帖最后由 喵呜喵5 于 2016-6-3 17:30 编辑

菜单的人物状态界面隐藏HP、MP等RPG游戏用的数据,适用于解谜游戏。
[fold=效果图] 无标题.png [/fold]
[fold=更新时间(2015.5.1)]
  1. class Window_MenuStatus
  2.   def draw_actor_simple_status(actor, x, y)
  3.     draw_actor_name(actor, x, y)
  4.   end
  5. end
复制代码
[/fold]

F12打开读档界面
[fold=更新时间(2015.5.1)]
  1. class << SceneManager
  2.   alias m5_20150501_first_scene_class first_scene_class
  3.   def first_scene_class
  4.     Graphics.frame_count > 0 ? Scene_Load : m5_20150501_first_scene_class
  5. end;end
复制代码
[/fold]

地图名显示后不消失
[fold=更新时间(2015.5.2)]
  1. class Window_MapName
  2.   def update_fadeout; end
  3.   alias m5_20150502_close close
  4.   def close; m5_20150502_close; self.contents_opacity = 0; end
  5. end
复制代码
[/fold]

游戏开始运行时显示一个logo,logo放在 Graphics\Pictures 目录下,文件名为 logo
[fold=更新时间(2015.5.2)]
  1. def m51552logo; sprite = Sprite.new; sprite.opacity = 0;sprite.bitmap = Cache.
  2. picture("logo"); while sprite.opacity != 255 ; sprite.opacity += 8
  3. Graphics.update; end; loop { Input.update; break if Input.trigger?(:C) }
  4. while sprite.opacity != 0; sprite.opacity-=8; Graphics.update; end
  5. sprite.bitmap.dispose; sprite.dispose; end; m51552logo
复制代码
[/fold]
[fold=正常代码]
  1. def m51552logo
  2.   sprite = Sprite.new
  3.   sprite.opacity = 0
  4.   sprite.bitmap = Cache.picture("logo")
  5.   while sprite.opacity != 255
  6.     sprite.opacity += 8
  7.     Graphics.update
  8.   end
  9.   loop do
  10.     Input.update
  11.     break if Input.trigger?(:C)
  12.   end
  13.   while sprite.opacity != 0
  14.     sprite.opacity-=8
  15.     Graphics.update
  16.   end
  17.   sprite.bitmap.dispose
  18.   sprite.dispose
  19. end
  20. m51552logo
复制代码
[/fold]

受怪物攻击不增加TP
[fold=更新时间(2015.5.8)]
  1. class Game_Battler
  2.   def charge_tp_by_damage(damage_rate)   
  3.   end
  4. end
复制代码
[/fold]

在更改画面色调指令前执行脚本指令 m5_20150518_tone_add ,之后色调更改将变成当前画面的色调【加上】设置值
(例:https://rpg.blue/thread-379207-1-1.html )
[fold=更新时间(2015.5.19 修正BUG)]
  1. class Game_Interpreter; def m5_20150518_tone_add; @index += 1; t = Tone.new;
  2. t.set screen.tone; params = @list[@index].parameters; tone = params[0]
  3. t.red += tone.red; t.green += tone.green; t.blue += tone.blue;
  4. t.gray += tone.gray; @params = params.clone; @params[0] = t; command_223   
  5. end;end
复制代码
[/fold][fold=正常代码]
  1. class Game_Interpreter
  2.   def m5_20150518_tone_add
  3.     @index += 1
  4.     t = Tone.new
  5.     t.set screen.tone
  6.     params = @list[@index].parameters
  7.     tone = params[0]
  8.     t.red += tone.red
  9.     t.green += tone.green
  10.     t.blue += tone.blue
  11.     t.gray += tone.gray
  12.     @params = params.clone
  13.     @params[0] = t
  14.     command_223
  15.   end
  16. end
复制代码
[/fold]

数!值!爆!炸!
全!数!据!库!装!备!能!力!值!变!化!量!统!统!翻!十!倍!
的脚本
[fold=更新时间(2015.6.6 公开)]
  1. class RPG::EquipItem < RPG::BaseItem
  2.   alias m5_20150606_params params
  3.   def params
  4.     return m5_20150606_params.collect{|p| p * 10}
  5.   end;end
复制代码
[/fold]

抽取此前未曾抽取过数字的抽奖系统(https://rpg.blue/thread-379881-1-1.html)
[fold=更新时间(2015.6.11)]
  1. class Game_Interpreter; def m5_20150611_creat_list(var,range)
  2.     $game_variables[var] = range.to_a.shuffle
  3.   end; def m5_20150611_draw_list(var,empty)   
  4.     ( $game_variables[var].pop || empty ) rescue empty
  5. end; end
复制代码
[/fold]

99号开关打开时,玩家可以穿墙
[fold=更新时间(2015.6.28)]
  1. class Game_Player
  2.   alias m5_20150628_debug_through? debug_through?
  3.   def debug_through?
  4.     m5_20150628_debug_through? || $game_switches[99]
  5. end; end
复制代码
[/fold]

地图上按L(默认为键盘上的Q)切换领队,要改按键就改第四行的最后那个:L
[fold=更新时间(2015.7.5)]
  1. class Game_Party; def m5_20150705_swap_leader; return unless a = @actors.shift
  2. @actors.push a; $game_player.refresh; end; end
  3. class Scene_Map; alias m5_20150705_update_call_menu update_call_menu
  4. def update_call_menu; $game_party.m5_20150705_swap_leader if Input.trigger?(:L)
  5. m5_20150705_update_call_menu; end; end
复制代码
[/fold]
[fold=正常代码]
  1. class Game_Party
  2.   def m5_20150705_swap_leader
  3.     return unless a = @actors.shift
  4.     @actors.push a
  5.     $game_player.refresh
  6.   end
  7. end
  8. class Scene_Map
  9.   alias m5_20150705_update_call_menu update_call_menu
  10.   def update_call_menu
  11.     $game_party.m5_20150705_swap_leader if Input.trigger?(:L)
  12.     m5_20150705_update_call_menu
  13.   end
  14. end
复制代码
[/fold]

游戏存档保存到游戏目录下的 Save 文件夹内
[fold=更新时间(2015.8.11)]
  1. class << DataManager;
  2.   def save_file_exists?; !Dir.glob('Save/Save*.rvdata2').empty?; end
  3.   def make_filename(index); Dir.mkdir('Save') unless FileTest.exist?('Save')
  4.     sprintf("Save/Save%02d.rvdata2", index + 1);
  5. end; end
复制代码
[/fold]
[fold=正常代码]
  1. class << DataManager
  2.   def save_file_exists?
  3.     !Dir.glob('Save/Save*.rvdata2').empty?
  4.   end
  5.   def make_filename(index)
  6.     Dir.mkdir('Save') unless FileTest.exist?('Save')
  7.     sprintf("Save/Save%02d.rvdata2", index + 1)
  8.   end
  9. end
复制代码
[/fold]

随游戏进度修改某张地图中的敌群ID(https://rpg.blue/forum.php?mod=r ... 893&pid=2630237)
[fold=更新时间(2015.8.27)]
  1. class Game_Player; alias m5_20150827_met_id make_encounter_troop_id
  2. def make_encounter_troop_id; return 0 if (id = m5_20150827_met_id) == 0
  3. return id + $game_variables[
  4.   1
  5. ]; end; end
复制代码
[/fold]
[fold=正常代码]
  1. class Game_Player
  2.   alias m5_20150827_met_id make_encounter_troop_id
  3.   def make_encounter_troop_id
  4.     return 0 if (id = m5_20150827_met_id) == 0
  5.     return id + $game_variables[1]
  6.   end
  7. end
复制代码
[/fold]

非卖品不显示在出售列表中(https://rpg.blue/thread-383385-1-1.html)
[fold=更新时间(2015.9.14)]
  1. class Window_ShopSell; alias m5_20150914_include? include?
  2.   def include?(item)
  3.     return false unless m5_20150914_include? item
  4.     enable? item
  5. end; end
复制代码
[/fold]
[fold=正常代码]
  1. class Window_ShopSell
  2.   alias m5_20150914_include? include?
  3.   def include?(item)
  4.     return false unless m5_20150914_include? item
  5.     enable? item
  6.   end
  7. end
复制代码
[/fold]

菜单中添加读档选项
[fold=更新时间(2015.11.2)]
  1. class Window_MenuCommand; alias m5_20151102_add_save_command add_save_command
  2.   def add_save_command; m5_20151102_add_save_command
  3.     add_command('读档', :m5_20151102_load); return unless @handler
  4.     @handler[:m5_20151102_load] = ->{ SceneManager.call(Scene_Load) }
  5. end; end
复制代码
[/fold]
[fold=正常代码]
  1. class Window_MenuCommand
  2.   alias m5_20151102_add_save_command add_save_command
  3.   def add_save_command
  4.     m5_20151102_add_save_command
  5.     add_command('读档', :m5_20151102_load)
  6.     return unless @handler
  7.     @handler[:m5_20151102_load] = ->{ SceneManager.call(Scene_Load) }
  8.   end
  9. end
复制代码
[/fold]

删除物品栏和技能栏上方的帮助窗口
[fold=更新时间(2015.11.14)]
  1. class Scene_ItemBase; alias m5_20151114_create_help_window create_help_window
  2.   def create_help_window
  3.     m5_20151114_create_help_window   
  4.     @help_window.height = 0
  5. end; end
复制代码
[/fold]

升级时播放SE
[fold=更新时间(2015.12.31)]
  1. class Game_Actor; alias m5_20151231_display_level_up display_level_up
  2. def display_level_up *args; Audio.se_play(
  3.   "Audio/SE/Cat"
  4. ); m5_20151231_display_level_up *args; end
  5. end
复制代码
[/fold]

删除战斗界面的攻击和防御指令
[fold=更新时间(2016.1.14)]
  1. class Window_ActorCommand
  2.   def add_attack_command; end
  3.   def add_guard_command; end
  4. end
复制代码
[/fold]

非参战角色获得 60% 的战斗胜利经验值
[fold=更新时间(2016.3.19)]
  1. Game_Actor
  2.   def reserve_members_exp_rate
  3.     0.6
  4.   end
  5. end
复制代码
[/fold]

战斗结束后不获取经验值而是将经验值保存到 99 号变量中
[fold=更新时间(2016.6.3)]
  1. class << BattleManager
  2.   def gain_exp
  3.     $game_variables[99] += $game_troop.exp_total
  4.   end
  5. end
复制代码
[/fold]



卖萌的分割线

【自用】更新格式
[fold=更新时间(2016.6.11)]

复制代码
[/fold]
[fold=正常代码]

复制代码
[/fold]

点评

时隔五年,原来喵5一直都在,感谢!不知不觉已经做游戏5年了,从原来的只会用事件的我到现在已经会写脚本了,感谢论坛大佬们的帮助!!!  发表于 2022-5-3 21:55
时隔五年回复楼下,用这个功能(和行数)增加的版本 https://script.miaowm5.com/post/103  发表于 2022-4-16 23:13
请问喵大,经验存入变量,数据库的经验加成就会无效,怎样在某种状态下,获得的战斗后的经验x2存入到变量中?  发表于 2017-12-3 09:47
就是为了释放精灵和释放位图所占用的内存空间的……因为精灵和位图不是Ruby创造的,不会自动垃圾回收  发表于 2016-10-2 10:43
萌新想问一下logo显示脚本中最后的精灵释放和位图释放是干什么的……初学不懂  发表于 2016-10-2 10:39

评分

参与人数 2星屑 +260 收起 理由
tan12345 + 60 精品文章
怪蜀黍 + 200 50×4

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-5-2 07:52:36 | 显示全部楼层
我翻了翻以前写过的:

反转 Shift:
[pre lang="ruby"]class Game_Player < Game_Character; def dash?
    !@move_route_forcing && !$game_map.disable_dash?
      && !vehicle && !Input.press?(:A)
  end
end[/pre]

上控制台:
[pre lang="ruby"]unless $TEST
  Win32API.new('kernel32', 'AllocConsole', 'v', 'v').call
  $stdout = File.open('CONOUT$', 'w')
  $stdin  = File.open('CONIN$')
end[/pre]

删掉敌人名字的后缀(虽然开了挂,不过不开也是能在5行内写完的):
[pre lang="ruby"]class Game_Troop < Game_Unit
  def_after(:make_unique_names) { each { |enemy| enemy.letter = '' } }
end[/pre]

升级时完全恢复(虽然开了挂,不过不开也是能在5行内写完的):
[pre lang="ruby"]Game_Actor.send :def_after, :level_up, :recover_all[/pre]

删除「整队」
[pre lang="ruby"]class Window_MenuCommand < Window_Command
  def add_formation_command; end
end[/pre]

删除战斗日志:
[pre lang="ruby"]
Object.const_set :Window_BattleLog, Class.new {
  def initialize(*) end
  def method_missing(*) end
}
[/pre]

点评

反转shift键脚本报错:第三行出现syntaxerror:unexpected tANDOP, expecting keyword_end  发表于 2016-5-6 21:03
unless $TEST可以去掉,反正AllocConsole再调用一次也不会怎样  发表于 2015-5-2 13:44

评分

参与人数 2星屑 +320 收起 理由
怪蜀黍 + 300 50×6
喵呜喵5 + 20 今天就剩这么多了……

查看全部评分

回复

使用道具 举报

梦石
0
星屑
124
在线时间
900 小时
注册时间
2012-11-13
回帖
845
发表于 2015-5-2 11:14:22 | 显示全部楼层
本帖最后由 3106345123 于 2015-5-2 11:34 编辑

[pre lang="ruby"]exit if $TEST[/pre]
1行,效果易知
开玩笑的

[pre lang="ruby"]class Game_Map
  def update_events
    @events.each_value {|event| event.update } if $game_switches[2] != true
    @common_events.each {|event| event.update }
end;end[/pre]
效果:使2号开关开启时NPC不会移动


新手学脚本,多多关照啦

点评

if !$game_switches[2] 也好看  发表于 2016-10-1 21:47
if $game_switches[2] != true 可改为unless $game_switches[2],这样写更好一些 - -  发表于 2015-8-2 16:10
3.这些脚本都是有一定意义的,并不是什么打开游戏时弹个窗口说句 hello world 那样鸡肋的代码  发表于 2015-5-2 11:25

评分

参与人数 1星屑 +50 收起 理由
怪蜀黍 + 50 50×1

查看全部评分

废弃
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2015-5-2 12:06:16 | 显示全部楼层
本帖最后由 VIPArcher 于 2018-11-20 14:02 编辑

来卖萌的
#==============================================================================
5月1日更新
[fold=自用的测试跳过标题][pre lang="ruby"]class << SceneManager
  def first_scene_class
    DataManager.setup_new_game;$game_map.autoplay;Scene_Map
  end
end unless $BTEST[/pre]
一个不能返回标题的版本[pre lang="ruby"]class Scene_Title
  def start; super; SceneManager.clear;DataManager.setup_new_game
    $game_map.autoplay;SceneManager.goto(Scene_Map)
  end; def terminate; super end
end[/pre][/fold]
[fold=1号开关开启,玩家无法输入方向键移动][pre lang="ruby"]class Game_Player < Game_Character
  alias viparcher_move_by_input move_by_input
  def move_by_input;return if $game_switches[1];viparcher_move_by_input end
end[/pre][/fold]
[fold=固定远景图文件名带有‘fix’的远景][pre lang="ruby"]class Spriteset_Map;alias fix_update_parallax update_parallax
  def update_parallax;fix_update_parallax;return unless @parallax_name =~ /fix/i
    @parallax.ox,@parallax.oy = @tilemap.ox,@tilemap.oy
  end
end[/pre][/fold]
用下面3个和喵呜上面那个‘菜单的人物状态界面隐藏HP、MP等’一起食用可以做一个简单的解密菜单
[fold=简化菜单][pre lang="ruby"]class Window_MenuCommand;def make_command_list;add_command(Vocab::item,:item)
add_command("读档",:save,DataManager.save_file_exists?)
add_command(Vocab::game_end,:game_end) end end
class Scene_Menu;def command_save;SceneManager.call(Scene_Load) end end[/pre][/fold]
[fold=隐藏金币窗口][pre lang="ruby"]class Window_Gold
  def refresh
    self.visible = false
  end
end[/pre][/fold]
[fold=状态菜单适应大小][pre lang="ruby"]class Window_MenuStatus;def window_height; 24 + 98 * item_max end
  def item_height;(height - standard_padding * 2) / item_max end
end[/pre][/fold]
#==============================================================================
5月2日更新
[fold=事件名称里带有<move>的事件可以全地图自主移动][pre lang="ruby"]class Game_Event;alias vip1552usm update_self_movement;def update_self_movement
return vip1552usm unless @event.name.include?('<move>');if @stop_count >
stop_count_threshold;case @move_type;when 1 then move_type_random
when 2 then move_type_toward_player;when 3 then move_type_custom
end end end end[/pre][/fold]
#==============================================================================
5月10日更新
[fold=1号开关打开,显示选项显示在画面正中间][pre lang="ruby"]class Window_ChoiceList;alias vip15510_up update_placement;def update_placement
vip15510_up;return unless $game_switches[1]
self.x,self.y = (Graphics.width - width) / 2,(Graphics.height - height) / 2 end
end[/pre][/fold]
[fold=显示选项显示在画面正中间效果图] QQ图片20150510020556.png [/fold]
#==============================================================================
5月20日更新
[fold=XP行走图批量转化为VA/VX行走图][pre lang="ruby"]Dir.mkdir('VA_Characters') unless FileTest.exist?('VA_Characters')
Dir["XP_Characters/*.png"].each{|path|f=File.basename(path,".png")
b=Bitmap.new(path);w,h=b.width/4*3,b.height;r=Rect.new(b.width/4,0,w,h)
(nb=Bitmap.new(w,h)).blt(0,0,b,r);nb.save_png("VA_Characters/$#{f}.png")}
msgbox '转化结束,请查看VA_Characters文件夹';exit[/pre][/fold]
[fold=使用该脚本注意]首先你需要一个Bitmap#save_png,Bitmap#save_png可以在这个帖子里的范例找到https://rpg.blue/thread-377103-1-1.html
然后把要转化的行走图放在插入这个脚本的目录下的XP_Characters文件夹里,转化完成的行走图会保存在VA_Characters文件夹
参考:https://rpg.blue/thread-379267-1-1.html[/fold]
#==============================================================================
5月28日更新
[fold=1号开关开启时,玩家跳跃跟随的队员也跳到玩家跳的位置上][pre lang="ruby"]class Game_Player < Game_Character
  def jump(x_plus, y_plus) super(x_plus, y_plus)
    followers.each{|f|f.jump(x - f.x, y - f.y)} if $game_switches[1]
  end
end[/pre][/fold]
[fold=说明]默认系统里的移动事件的跳跃。玩家跳跃时,跟随队员并不会跳跃,这样子跳跃后就会出现很奇葩的情况。
用这个脚本后打开1号开关,然后玩家的跳跃就会让队员跳到玩家跳跃后的位置上,最好跳跃之前使用一下集合队员。效果更佳
区域扩充脚本的跳跃参考这个帖子https://rpg.blue/thread-379443-1-1.html[/fold]

#==============================================================================
6月11日更新
[fold=改变默认文字颜色(\c[0]指定的颜色以及normal_color的颜色)][pre lang="ruby"]class Window_Base < Window; alias vip_text_color text_color
  def text_color(n)
    n != 0 ? vip_text_color(n) : Color.new(233,233,233)
  end
end[/pre][/fold]
[fold=说明]直接改素材也可以,倒不如说直接改Graphics\System\Window.png来得彻底=。=
参考这个帖子https://rpg.blue/thread-379896-1-1.html用脚本偷个懒吧]゚(つд`゚)[/fold]
#==============================================================================
6月15日更新
[fold=敌人战斗坐标修正][pre lang="ruby"]class Game_Enemy < Game_Battler
  def screen_x; @screen_x *  Graphics.width / 544.0 end
  def screen_y; @screen_y * Graphics.height / 416.0 end
end[/pre][/fold]
[fold=说明]扩大游戏分辨率后,敌人坐标会出现无法设置到扩大部分的位置(编辑器的限制)所以可以用这个脚本进行修正坐标使得数据库里设置的位置和实际的位置相符。[/fold]
#==============================================================================
6月16日更新
[fold=事件名里包含notsee的事件触发时不会朝向玩家][pre lang="ruby"]class Game_Event < Game_Character
  alias vip150616_lock lock
  def lock; vip150616_lock unless @event.name =~ /not[ _]?see/i end
end[/pre][/fold]
[fold=说明]未详细测试,如有问题请回复或点评本楼。[/fold]
#==============================================================================
6月29日更新
[fold=备注栏备注No number的道具不绘制道具个数][pre lang="ruby"]class Window_ItemList; alias vip0629_din draw_item_number
  def draw_item_number(rect, item)
    vip0629_din(rect, item) unless item.note =~/No[ _]?number/i
  end
end[/pre][/fold]
[fold=说明]备注No_number也可以,忽略大小写,Nonumber也行。你也可以自己改正则,反正很简单[/fold]
#==============================================================================
6月30日更新
[fold=备注栏设置使用道具声效][pre lang="ruby"]class Scene_Item; alias vip0630_psfi play_se_for_item
  def play_se_for_item; return if item.note =~ /<no[ _]?se>/i
    item.note =~/<se[ _:]?(.*?)>/i ? Audio.se_play($1) : vip0630_psfi
  end
end[/pre][/fold]
[fold=说明]道具备注栏备注<no se>的道具使用时不发声效,备注<se:文件名>的时候,使用道具时播放"\Audio\SE\文件名"的声效[/fold]
#==============================================================================
7月22日更新 ※ 注意!大量分号【噗
[fold=物品栏取消分类窗口][pre lang="ruby"]class Scene_Item;def start;super;create_help_window;c_i_w end;def c_i_w;wy =
@help_window.height;w=@item_window=Window_ItemList.new(0, wy, Graphics.width,
Graphics.height-wy);w.viewport = @viewport;w.help_window=@help_window;
w.set_handler(:ok,method(:on_item_ok));w.set_handler(:cancel,method(
:return_scene));w.category = :item;w.activate;w.select_last end end[/pre][/fold]
[fold=说明]取消掉分类窗口,默认分类为普通物品[/fold]
#==============================================================================
7月23日更新
[fold=移动指令的跳跃不会跳到不能移动的位置][pre lang="ruby"]class Game_Character < Game_CharacterBase
alias viparcher_jump jump;def jump(x_plus, y_plus)
return if collide_with_events?(x+x_plus, y+y_plus) ||
[2,4,6,8].any?{|d|!map_passable?(x + x_plus, y + y_plus, d)}
viparcher_jump(x_plus, y_plus) end end[/pre][/fold]
[fold=说明]事件里的移动指令中的跳跃,如果落点上有事件或者不能通行则不能跳跃[/fold]
#==============================================================================
8月6日更新
[fold=数值输入扩展][pre lang="ruby"]class Game_Interpreter
  def num_input(id,size)
    @params = [id,size]; command_103
  end
end[/pre][/fold]
[fold=说明]默认事件里的数值输入,可输入位数最大只到8位,用这个事件脚本调用
  1. num_input(接受输入变量的ID,可输入的位数)
复制代码
即可做到更多位数值的输入。
QQ图片20150806110106.png
不要设置位数太多哦,会超出画面边框的。[/fold]
#==============================================================================
8月29日更新
[fold=指定职业才可使用的道具][pre lang="ruby"]class Game_Actor < Game_Battler
  def item_test(user, item)
    return @class_id == $1.to_i if item.note =~ /<use_class:\s*(\d+)>/i; super
  end
end[/pre][/fold]
[fold=说明]道具的使用范围请设置为单个队友。原帖:https://rpg.blue/thread-382960-1-1.html[/fold]
#==============================================================================
12月11日更新
[fold=开关开启时震动画面也能震动计时器和显示的图片][pre lang="ruby"]class Spriteset_Map; alias picture_update_shake update_viewports
  def update_viewports
    @viewport2.ox = $game_map.screen.shake if $game_switches[1]
    picture_update_shake
end end[/pre][/fold]
[fold=说明]打开1号开关时显示的图片计时器以及天气均会震动。请注意。如果某个东西不想也被震动,改一改它的端口就好了。[/fold]
#==============================================================================
1月25日更新
[fold=关闭菜单之后调用一个公共事件][pre lang="ruby"]class Scene_Menu;alias vip16125_return_scene return_scene
  def return_scene;vip16125_return_scene
    $game_temp.reserve_common_event(1) #这里改公共事件的ID
  end
end[/pre][/fold]
[fold=说明]我也不知道有什么用,参考这个帖子https://rpg.blue/thread-388730-1-1.html[/fold]
#==============================================================================
5月25日更新
[fold=取消窗口皮肤背景的半透明][pre lang="ruby"]class Window_Base; alias vip20160525_initialize initialize
  def initialize(*args)
    vip20160525_initialize(*args); self.back_opacity = 255
  end
end[/pre][/fold]
[fold=说明]色调数据库可以调[/fold]
#==============================================================================
11月19日更新
[fold=技能追加限制使用武器类型][pre lang="ruby"]class Game_Actor;alias vip20161119_swok? skill_wtype_ok?
def skill_wtype_ok?(skill) if skill.note =~ /<限制武器类型:\s*(\d+.*?)>/
  $1.scan(/\d+/).each do |wtype_id|
  return true if wtype_equipped?(wtype_id.to_i)
end end; vip20161119_swok?(skill) end end[/pre][/fold]
[fold=详情参考这个帖子]https://rpg.blue/thread-397413-1-1.html[/fold]
#==============================================================================
12月8日更新
[fold=职业备注隐藏技能类型][pre lang="ruby"]class Game_Actor; alias vip16127_addst added_skill_types
  def added_skill_types; vip16127_addst - hide_skill_types end
  def hide_skill_types; self.class.note =~ /<隐藏技能类型[ :]*(\d+.*?)>/
    $1 ? $1.scan(/\d+/).collect(&:to_i) : []
end end[/pre][/fold]
[fold=用法及参考原帖]职业备注栏注释 <隐藏技能类型: 1,2,3> 隐藏1,2,3类型技能
可以参考这个帖子https://rpg.blue/thread-397652-1-1.html[/fold]
#==============================================================================
12月15日更新
[fold=不显示禁用技能指令][pre lang="ruby"]class Game_Actor; alias vip161215_addst added_skill_types
  def added_skill_types
    vip161215_addst.select {|stype_id| !skill_type_sealed?(stype_id)}
  end
end[/pre][/fold]
[fold=参考这个帖子]https://rpg.blue/forum.php?mod=viewthread&tid=397799[/fold]
更新用帖子格式
#==============================================================================
18.11月20日更新
[fold=开关开启时反向移动][pre lang="ruby"]class Game_Player; alias reverse_move_straight move_straight
  def move_straight(d, turn_ok = true)
    reverse_move_straight($game_switches[1] ? 10 - d : d, turn_ok = true)
  end
end[/pre][/fold]
[fold=参考这个帖子]https://rpg.blue/thread-410962-1-1.html[/fold]
#==============================================================================
X月X日更新
[fold=name][pre lang="ruby"][/pre][/fold]
[fold=说明或者效果图]说明或者效果图[/fold]

点评

呀⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄,没注意  发表于 2015-6-25 12:00
为啥用法里写not see,脚本里写notsee  发表于 2015-6-25 08:06
噗噗噗(233333  发表于 2015-6-11 22:48
x月x日更新  发表于 2015-6-11 20:33
强迫症表示截图中没有显示在画面正中间啊……  发表于 2015-5-10 16:44

评分

参与人数 1星屑 +350 收起 理由
怪蜀黍 + 350 50×7

查看全部评分

回复 1 0

使用道具 举报

梦石
0
星屑
50
在线时间
274 小时
注册时间
2014-2-22
回帖
260
发表于 2015-5-2 16:46:20 | 显示全部楼层
本帖最后由 菊花侠小赵 于 2015-5-2 17:16 编辑

#不熟悉VA的说……所以就弄了个通用的………………我果然很弱鸡,而且毫无意义,生成一个水经验的txt
  1. File.open("水.txt","w+") do |sb|
  2. (1..10000).each do |a|  b = a*2
  3. sb.puts "我发了第#{a}贴""\n""已经拥有了#{b}的经验"end end
  4. File.open("水.txt","a+")do |sb|
  5. sb.puts "我升级啦!!!" end
复制代码
#依然通用,改变当前的工作路径并且例出当前工作路径的文件
  1. p "当前的工作目录为:#{Dir.pwd}"
  2. Dir.chdir("e:/")
  3. p "当前的工作目录为:#{Dir.pwd}"
  4. Dir.foreach(Dir.pwd) do |sb|
  5.   p sb end
复制代码

评分

参与人数 1星屑 +100 收起 理由
怪蜀黍 + 100 50×2

查看全部评分

回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2015-5-2 17:24:07 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2015-5-2 18:10:01 | 显示全部楼层
···你三行情书看多了吧

评分

参与人数 1星屑 -50 收起 理由
怪蜀黍 -50 被举报

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 0 1

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2015-5-3 04:11:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-5-17 16:18:30 | 显示全部楼层
本帖最后由 墨凌羽 于 2015-9-26 09:19 编辑

[fold=rot-13][pre lang="ruby" line="0"]class String
  def rot13
    self.tr "A-Za-z", "N-ZA-Mn-za-m"
  end
end[/pre][/fold]
刚好五行。。。。
给string类加了一个rot13的功能,而所谓Rot13是一种凯撒码的特例。(解密等于加密)可以用在解密类游戏里?不过这个只能对英文字符起作用。实际上只要修改{ "A-Za-z", "N-ZA-Mn-za-m"}部分,就可以实现不同秘钥的凯撒码。【凯撒码是什么请自行百度( ̄∇ ̄)
[fold=控制台日志?][pre lang="ruby" line="1"]class Object;def pw(str);p str
d=Time.new.to_a;d[4]="%02d" %d[4];d[3]="%02d" %d[3]
str = "[#{d[5]}.#{d[4]}.#{d[3]}-#{d[2]}:#{d[1]}:#{d[0]}]:#{str.to_s}\n"
open("log.txt", "a"){|f| f.write str}
end;end        [/pre][/fold]
定义了一个叫pw的方法,其作用是在向控制台输出的时候(p)同时会把其写进一个叫“log.txt”的文件中(每行输出会带一个时间戳)。等同于给控制台加了一个日志。不过要注意对于类日志中会和在控制台上的不一样。。。(实在不能在五行代码里实现。。。就这样也是勉强压缩凑成五行ORZ)

2015.7.2 更新
[fold=1行输出斐波那契数列QAQ]
不是人看的一行版
[pre lang="ruby" line="1"]f=[1];f.each_index{|r|r>=40?break: r==0?f[r+1]=1: f[r+1]=f[r]+f[r-1];puts f[r]}[/pre]
优雅的五行版
[pre lang="ruby" line="1"]f=[1]
f.each_index do|r|
  i >= 40 ? break : r == 0 ? f[r+1] = f[r] + 0 : f[r+1] = f[r] + f[r-1]
  puts(f[r])
end [/pre]
一个返回前N项的Array类的方法
[pre lang="ruby" line="1" ]class Array;def fibo n
self.each_index{|r|r>=n ?break: r==0 ?self[r+1]=1: self[r+1]=self[r]+self[r-1]}
self
end;end
#使用:[1].fibo(10) 效果:返回一个包含斐波那契数列前十项的数组[/pre][/fold]
今天考C,晚上复习(是预习吧ORZ)本想用递归写个输出斐波那契数列前N项,然后各种烦,一时兴起就用ruby写了个

2015.712更新
[fold=读取csv(一行貌似是超了ORZ)][pre lang="ruby" line="1"]def read(p) return x=[],File.open(p,"r").readlines().each{|i|x.push(i.split(","))} end   
[/pre]
用法:
[pre lang="ruby" line="1"]a = read("xx.csv")[0]
#或者
a,b = read("xx.csv")
#其中a是一个二维数组,b是一个由每行所组成的一维数组[/pre]
[/fold]
另外,关于上次C的斐波那契实现后来写了个一行版顺便也贴这(作用略有不同,返回第n项)
[pre lang="c" line="1"]int fibo1(int n,int a, int b){return n<1 ? a : fibo1(n-1,b,a+b);}
int fibo2(int n){retun n==1||n==2 ? 1 : fibo2(n-1)+fibo2(n-2);}[/pre]
1和2的区别,跑一下fibo(50)什么的就知道了

2015.9.26更新
[fold=前置技能][pre lang="ruby" line="1"]class Game_Actor < Game_Battler;alias :shitake_150926_learn_skill :learn_skill
def learn_skill(skill_id);return if skill_learn?($data_skills[skill_id])
skill_switche = true;note = $data_skills[skill_id].note.split(",")
note.each{|id| skill_switche = @skills.include?(id.to_i)} if note !=""
@skills.push(skill_id) if skill_switche;@skills.sort!;end;end[/pre]
效果说明:学习一个技能时会判断是否已经学会前置技能 如果没有则学习失败
使用说明:在技能备注栏里填写相应技能的id就行,多个技能用逗号(半角)分开
[/fold]

点评

$stdout = File.open('log.txt', 'w')  发表于 2015-6-17 06:37
str = "[#{d=Time.now.to_s;d[0,d.length-6]}]:#{str.to_s}\n" 时区已去,[s]大仇已报[/s]  发表于 2015-5-17 17:39
Time.now会带时区。。。。而且他的输出格式看着不喜欢  发表于 2015-5-17 17:35
alias 类似于新建一个方法,这个方法的内容和原来那个完全一样,之后自己再怎么修改这个方法,都可以通过别名调用原来的方法  发表于 2015-5-17 17:33
然后第二行删掉,第三行改成 str = "[#{Time.now}]:#{str.to_s}\n" ……  发表于 2015-5-17 17:31
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部