赞 | 0 |
VIP | 118 |
好人卡 | 0 |
积分 | 5 |
经验 | 28673 |
最后登录 | 2017-5-7 |
在线时间 | 10 小时 |
Lv2.观梦者 龙骑
- 梦石
- 0
- 星屑
- 545
- 在线时间
- 10 小时
- 注册时间
- 2007-12-31
- 帖子
- 2030
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
制作小游戏,大多都使用事件与脚本结合的,下面就推荐几个经常使用的小游戏脚本。
(广泛征集,本帖需要不断完善,偶将会给予奖励,谢谢)
【脚本1】:
时间条(点击进入原发布帖)
[quote]〖说明〗:
原发布帖有个错误,倒数的第10行 $game_variables[$done] = true
应该是 $game_switches[$done] = true,竟然变成变量了…… 〖效果〗:
![]()
[/quote]
脚本内容:
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
-
- #-------------------------------------------------------------------------
- # ● 时间条参数设定
- # 设定技巧:可以根据"设定移动速度"来放慢或加快移动
- # 如果设置"移动速度"为负数,就会倒退走(必须$minbar<=$maxbar)
- # 如果时间条的宽度小,可以把$nextbar设置为小数来放慢速度
- #-------------------------------------------------------------------------
- #设置时间条初始值
- $minbar=0
-
- #设置时间条的最大值,宽度
- $maxbar=200
-
- #设置时间条的移动速度可以是"小数"或"整数(负数)"
- $nextbar=1
-
- #设置时间条运行和显示的开关,和初始化开关
- $show=1 #显示/隐藏时间条
- $stop=2 #启动/停止时间条
- $init=3 #初始化时间条
- $done=4 #到时间之后打开的开关,可以用个自动执行的公共时间调此开关
-
- #设置窗口宽高
- $width=$maxbar+114
- $height=64
-
- #设置窗口位置
- $o=2
- #设置参考
- # 0-采用$x,$y的自定义设置
- # 1-左上角
- # 2-正上
- # 3-右上角
- # 4-正中
- # 5-左下角
- # 6-正下
- # 7-右下角
-
- $x=0 #自定义窗口X
- $y=0 #自定义窗口Y
-
- #定义窗口透明程度,0透明,255不透明数值范围0~255
- $opacity=0 #设置窗口边框透明度
- $back_opacity=0 #设置窗口背景透明度
-
- #------------------------------------------------------------------------
- # ● 时间条描绘
- #------------------------------------------------------------------------
- def draw_time_bar(x, y, width)
- # 边框设定
- self.contents.font.color = system_color
- self.contents.draw_text(x,y,60,32,"时间:")
- self.contents.fill_rect(x-2+60, y+16, width+4,8, Color.new(255, 255, 255, 255))
- self.contents.fill_rect(x-1+60, y+17, width+2,6, Color.new(0, 0, 0, 255))
- # 时间条长度设定
- w = $minbar
- # 时间条颜色设定
- self.contents.fill_rect(x+60, y+18, w,1, Color.new(96,255, 96, 255))
- self.contents.fill_rect(x+60, y+19, w,1, Color.new(0, 255, 0, 255))
- self.contents.fill_rect(x+60, y+20, w,1, Color.new(0, 128, 0, 255))
- self.contents.fill_rect(x+60, y+21, w,1, Color.new(0, 0, 0, 255))
- end
-
- #----------------------------------------------------------------------------
- # ● 时间窗口描绘
- #----------------------------------------------------------------------------
- class Window_Timebar < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化窗口
- #--------------------------------------------------------------------------
- def initialize
- super(0, 0, $width, $height)
- self.contents = Bitmap.new(width - 32, height - 32)
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 窗口内容
- #--------------------------------------------------------------------------
- def refresh
- #判断时间窗口是否可见
- if $game_switches[$show]
- self.visible=true
- else
- self.visible=false
- end
-
- #设置时间窗口透明度
- self.back_opacity=$back_opacity
- self.opacity=$opacity
-
- #设置窗口位置
- case $o
- when 0
- self.x=$x
- self.y=$y
- when 1
- self.x=0
- self.y=0
- when 2
- self.x=320-$width/2
- self.y=0
- when 3
- self.x=640-$width
- self.y=0
- when 4
- self.x=320-$width/2
- self.y=240-$height/2
- when 5
- self.x=0
- self.y=480-$height
- when 6
- self.x=320-$width/2
- self.y=480-$height
- when 7
- self.x=640-$width
- self.y=480-$height
- else
- #防止错误发生
- self.x=0
- self.y=0
- end
-
- #窗口内容
- self.contents.clear
- draw_time_bar(4,0,$maxbar)
- end
- end
-
- #-----------------------------------------------------------------------------
- # ● 地图上显示时间描绘
- #-----------------------------------------------------------------------------
- class Scene_Map
- # 声明别名,以免冲突,主要用于功能追加
- alias mohock_main main
- def main
- # 生成倒计时窗口
- @time_bar=Window_Timebar.new
-
- # 调用别名 (具体功能不清楚,但是不调用必定有错误)
- mohock_main
- # 释放倒计时窗口
- @time_bar.dispose
- end
-
- # 声明别名,以免冲突,主要用于功能追加
- alias mohock_update update
- def update
- # 如果初始化开关打开
- if $game_switches[$init]
- # 初始化数值
- $minbar=0
- $game_switches[$init]=false
- end
- # 刷新时间条,增加数值自己改动
- if $game_switches[$stop]
- #判断是否超过最大数值,是则执行任务,不是继续增加
- if $minbar >= $maxbar
- #执行开关设置为真
- $game_switches[$done] = true
- else
- $minbar += $nextbar
- end
- end
- @time_bar.refresh
- # 调用别名 (具体功能不清楚,但是不调用必定有错误)
- mohock_update
- end
- end
复制代码
【脚本2】:
在地图上显示变量(点击进入原发布帖)
以及VX版
[quote]〖说明〗:
XP版:在地图上显示变量,可带图片和单位,十分方便,如果会一点脚本,可以在地图上显示多个变量。
VX版:如果要显示变量1的话,那:
$variables_id = 1
如果要显示50号图表的话,那:
$icon_index = 50 〖效果〗:
XP版:
VX版:![]()
[/quote]
脚本内容:
——XP版——
- 首先在Scene_Map类中进行以下修改:
-
- 在def main过程中,首先在生成窗口部分增加生成显示变量窗口,添加位置最好在原有窗口之后:
-
- # 生成活动块
- @spriteset = Spriteset_Map.new
- # 生成信息窗口
- @message_window = Window_Message.new
- # 生成显示变量窗口
- @var_window = Window_MapVar.new
-
- 类似的注销释放时也要加上:
-
- # 释放活动块
- @spriteset.dispose
- # 释放信息窗口
- @message_window.dispose
- # 释放显示变量窗口
- @var_window.dispose
-
- 最后在def update过程块中,必须要加入刷新显示变量窗口部分,同样在放在最后,达到改变金钱同步刷新的功能:
-
- # 刷新活动块
- @spriteset.update
- # 刷新信息窗口
- @message_window.update
- # 刷新显示变量窗口
- @var_window.refresh
-
- 然后在脚本最后添加脚本名称为GPRA_Window_MapVar的脚本(建议在main之前)
复制代码
- #==============================================================================
- # ◎ Window_MapVar
- #------------------------------------------------------------------------------
- # ◎ 地图右下显示变量窗口
- #------------------------------------------------------------------------------
- # 制作者:绿梨子红苹果
- # 个人主页:vbgm.9126.com
- # E-Mail:[email protected]
- # QQ:42378361
- #==============================================================================
-
- class Window_MapVar < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化窗口
- #--------------------------------------------------------------------------
- def initialize
-
- # 在这里设定窗口的位置啦(x,y,宽,高),记住要为窗口框架留上下左右各16象素。
- # 默认一个字符的宽和高只有20左右的,这里单位为“金”,加上8位数字。
- super(480,420,160,60)
-
- # 窗口的不透明度(0 ~ 255)。范围外的数值会自动修正。
- # 注:255为不透明,0为完全透明……这个参数为零则只显示窗口内容而没有窗口,
- # 实际上这样做不如不载入窗口背景图,更加节约内存……不过比较麻烦就是。
- self.opacity=64
- # 窗口背景的不透明度(0 ~ 255)。范围外的数值会自动修正。
- # 注:就是窗口那个蓝色的背景啦……受上面参数影响
- self.back_opacity=128
- # 窗口内容的不透明度(0 ~ 255)。范围外的数值会自动修正。
- # 注:窗口内的文字等内容,除非你是想画个空窗口,否则千万不要设0。
- self.contents_opacity=255
-
- # 这个不用管他,必定要写的
- self.contents = Bitmap.new(width - 32, height - 32)
-
- # 建立记录变量原始值,用于判断变量值是否改变,一定要保证不会是变量原来的值
- @var_value_old = -1
- # 载入想要显示的图片就可以了,这里推荐是24*24的标准RM图标
- @var_icon = Bitmap.new("Graphics/Icons/035-Item04")
-
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- # 在这里加上判断语句,就可以完成变量值改变才刷新的效果,节约资源
- if @var_value_old==$game_party.gold then
- return
- end
- # 先清空内容啦
- self.contents.clear
- # 计算系统data里金钱单位的字符宽度
- cx = contents.text_size($data_system.words.gold).width
- # 设定字色为白色。生成RGB颜色参数(红,绿,蓝),这个不用我来说吧...
- self.contents.font.color = Color.new(255,255,255)
- # 绘制金钱数字。记住要用“.to_s”将数字转换为字符!
- # 注:这里24是留着画24*24图标的,104表示所有字符总宽
- self.contents.draw_text(24, 0, 104-cx, 28, $game_party.gold.to_s, 2)
- # 设定字色为金色
- self.contents.font.color = Color.new(255,255,0)
- # 绘制金钱单位。
- # 注:128=160(窗口宽)-32
- self.contents.draw_text(128-cx, 0, cx, 28, $data_system.words.gold)
- # 最后画上需要的图标就可以啦,blt方法详见RM帮助文档啦...
- self.contents.blt(0, 2, @var_icon, Rect.new(0, 0, 24, 24))
- end
- end
复制代码
——VX版——
- #------------------------------------------------------------------------
- # 本脚本来自于66RPG 转载请著名 非法用户【编写】
- #------------------------------------------------------------------------
- # 设定要显示的变量号
- $variables_id = 1
-
- # 设置图标显示号
- $icon_index = 2
- #------------------------------------------------------------------------
-
- # 新建窗口
- class Window_Variables < Window_Base
- # 初始化
- def initialize
- # 创建大小
- super(416,360,128,56)
- # 获取图标编号
- @icon = 0
- # 获取变量编号
- @variable = 0
- # 刷新
- refresh
- # 初始化结束
- end
- # 刷新
- def refresh
- # 在图表与变量都有变化的情况下
- if @icon != $icon_index or @variable != $game_variables[$variables_id]
- # 清楚内容
- self.contents.clear
- # 描绘图表
- draw_icon($icon_index,4,0,true)
- # 描绘变量,偏右
- self.contents.draw_text(32,0,64,24,$game_variables[$variables_id].to_s,2)
- # 带入变量
- @icon = $icon_index
- @variable = $game_variables[$variables_id]
- # if 结束
- end
- # 刷新结束
- end
- # class 结束
- end
-
- # 地图生成窗口
- class Scene_Map < Scene_Base
- # 生成窗口
- alias new_start start
- def start
- new_start
- @varia_window = Window_Variables.new
- end
- # 刷新窗口
- alias new_update update
- def update
- new_update
- @varia_window.refresh
- end
- # 释放窗口
- alias new_terminate terminate
- def terminate
- @varia_window.dispose
- new_terminate
- end
- # class 结束
- end
复制代码
【脚本3】:
跳过开始标题脚本(点击进入原发布帖)
[quote]〖说明〗:
直接开始游戏,不进入开始标题画面,比较适合R剧。
当R剧播完之后,直接在最后一个事件里面使用脚本,输入“exit”或者“$scene = nil”就可以了。如此就能制作非常完美的一个短剧
[/quote]
脚本内容:
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
-
-
- class Scene_Title
- #==============================================================================
- # 脚本作者:朱仔メ龍 QQ:251724722
- # 脚本转载请保留以上信息
- #==============================================================================
- def main
- $data_actors = load_data("Data/Actors.rxdata")
- $data_classes = load_data("Data/Classes.rxdata")
- $data_skills = load_data("Data/Skills.rxdata")
- $data_items = load_data("Data/Items.rxdata")
- $data_weapons = load_data("Data/Weapons.rxdata")
- $data_armors = load_data("Data/Armors.rxdata")
- $data_enemies = load_data("Data/Enemies.rxdata")
- $data_troops = load_data("Data/Troops.rxdata")
- $data_states = load_data("Data/States.rxdata")
- $data_animations = load_data("Data/Animations.rxdata")
- $data_tilesets = load_data("Data/Tilesets.rxdata")
- $data_common_events = load_data("Data/CommonEvents.rxdata")
- $data_system = load_data("Data/System.rxdata")
- $game_system = Game_System.new
- Graphics.frame_count = 0
- $game_temp = Game_Temp.new
- $game_system = Game_System.new
- $game_switches = Game_Switches.new
- $game_variables = Game_Variables.new
- $game_self_switches = Game_SelfSwitches.new
- $game_screen = Game_Screen.new
- $game_actors = Game_Actors.new
- $game_party = Game_Party.new
- $game_troop = Game_Troop.new
- $game_map = Game_Map.new
- $game_player = Game_Player.new
- $game_party.setup_starting_members
- $game_map.setup($data_system.start_map_id)
- $game_player.moveto($data_system.start_x, $data_system.start_y)
- $game_player.refresh
- $game_map.autoplay
- $game_map.update
- $scene = Scene_Map.new
- end
- end
-
-
- #==============================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==============================================================================
复制代码
【脚本4】:
[quote]〖说明〗:
某个方向键失效……任何人都会用
[/quote]
脚本内容:
-
- #==============================================================================
- # ■ Game_Player
- #------------------------------------------------------------------------------
- # 处理主角的类。事件启动的判定、以及地图的滚动等功能。
- # 本类的实例请参考 $game_player。
- #==============================================================================
-
- class Game_Player < Game_Character
- $上无效 = 1 # 上失灵的开关
- $左无效 = 2 # 左失灵的开关
- $下无效 = 3 # 下失灵的开关
- $右无效 = 4 # 右失灵的开关
- #--------------------------------------------------------------------------
- # ● 画面更新
- #--------------------------------------------------------------------------
- def update
- # 本地变量记录移动信息
- last_moving = moving?
- # 移动中、事件执行中、强制移动路线中、
- # 信息窗口一个也不显示的时候
- unless moving? or $game_system.map_interpreter.running? or
- @move_route_forcing or $game_temp.message_window_showing
- # 如果方向键被按下、主角就朝那个方向移动
- case Input.dir4
- when 2
- unless $game_switches[$下无效]
- move_down
- end
- when 4
- unless $game_switches[$左无效]
- move_left
- end
- when 6
- unless $game_switches[$右无效]
- move_right
- end
- when 8
- unless $game_switches[$上无效]
- move_up
- end
- end
- end
- # 本地变量记忆坐标
- last_real_x = @real_x
- last_real_y = @real_y
- super
- # 角色向下移动、画面上的位置在中央下方的情况下
- if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
- # 画面向下卷动
- $game_map.scroll_down(@real_y - last_real_y)
- end
- # 角色向左移动、画面上的位置在中央左方的情况下
- if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
- # 画面向左卷动
- $game_map.scroll_left(last_real_x - @real_x)
- end
- # 角色向右移动、画面上的位置在中央右方的情况下
- if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
- # 画面向右卷动
- $game_map.scroll_right(@real_x - last_real_x)
- end
- # 角色向上移动、画面上的位置在中央上方的情况下
- if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
- # 画面向上卷动
- $game_map.scroll_up(last_real_y - @real_y)
- end
- # 不在移动中的情况下
- unless moving?
- # 上次主角移动中的情况
- if last_moving
- # 与同位置的事件接触就判定为事件启动
- result = check_event_trigger_here([1,2])
- # 没有可以启动的事件的情况下
- if result == false
- # 调试模式为 ON 并且按下 CTRL 键的情况下除外
- unless $DEBUG and Input.press?(Input::CTRL)
- # 遇敌计数下降
- if @encounter_count > 0
- @encounter_count -= 1
- end
- end
- end
- end
- # 按下 C 键的情况下
- if Input.trigger?(Input::C)
- # 判定为同位置以及正面的事件启动
- check_event_trigger_here([0])
- check_event_trigger_there([0,1,2])
- end
- end
- end
- end
复制代码
其它:
〖XP水果机〗
http://rpg.blue/web/htm/news846.htm
精灵使者 推荐的几个:
〖月饼大逃亡〗
http://rpg.blue/web/htm/down727.htm
k'的很经典的作品,里面的好多东西都十分厉害……
http://rpg.blue/web/htm/down729.htm
http://rpg.blue/web/htm/down442.htm
这两个难度都不小的月饼跳跃游戏,相信能给大家很大启发。 |
|