赞 | 153 |
VIP | 10 |
好人卡 | 39 |
积分 | 93 |
经验 | 146191 |
最后登录 | 2024-5-6 |
在线时间 | 2504 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 9280
- 在线时间
- 2504 小时
- 注册时间
- 2011-5-20
- 帖子
- 15389
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 feizhaodan 于 2012-12-8 15:58 编辑
ht
tp://tieba.baidu.co
m/f?kz=1380322597[img=200,200][/img]
上面那个是APRPV0.3的下载地址以及APRP的游戏截图
APRP是一个集回合战斗与直线伤害于一体的半ARPG游戏,但是他不是用RMXP做的,所以想解密学习修改等等的人只能叹息(我承认以前确实我也想解密···)···
今天我要讲的当然不是玩APRP,而是做一个APRP!
可能有人会问了,直线伤害是XAS那心情不好就抽风的脚本,怎么可能半小时做呢?
其实,XAS之所以狂抽,是因为敌人也和角色一样动来动去,再加上各种冲突···(众:别废话了···)
APRP的直线伤害和XAS的不太一样,因为APRP是角色单方面的直线伤害,而XAS是敌人和角色都有的···
所以,APRP的直线伤害更加好做···just do it!
第一步,将以下2个脚本插入脚本编辑器MAIN的前面- #==============================================================================
- # 本脚本来自www.66rpg.com,转载、使用请保留此信息
- #==============================================================================
- # 作者:柳柳
- #
- # 使用方法:插入到main前即可,之后就会显示每个事件的名字。
- # 不想显示名字的NPC直接把名字设置为一个空格就行了。
- #
- # 附加功能:名字颜色区分:比如一个NPC的名字是 柳柳,2 就会用2号颜色(红色)显示
- #
- # 修改NPC名的方法:$game_map.events[事件ID编号].name =
- # 比如某个宝箱,原名宝箱,打开后名为“打开的宝箱”,则
- # $game_map.events[@event_id].name = "打开的宝箱" 或者
- # $game_map.events[2].name = "打开的宝箱" (假设宝箱是2号事件)
- #
- # 修改颜色定义:70-88行,131-149行,自己随便改。
- #
- # 给主角带上名字:192行,改 "" 为 "主角" 或者 $game_party.actors[0].name 即可
- #
- # 是否显示姓名的开关:157行,开头的井号去掉。则以后39号开关打开的时候才会显示姓名
- #
- #==============================================================================
- # ■ Game_Event
- #------------------------------------------------------------------------------
- # 处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
- # 在 Game_Map 类的内部使用。
- #==============================================================================
- class Game_Event < Game_Character
- #——————————————————————————————————————
- # 用来返回名称
- #——————————————————————————————————————
- def name
- return @event.name
- end
- def name=(newname)
- @event.name = newname
- end
- end
- #==============================================================================
- # ■ Sprite_Character
- #------------------------------------------------------------------------------
- # 角色显示用脚本。监视 Game_Character 类的实例、
- # 自动变化脚本状态。
- #==============================================================================
- class Sprite_Character < RPG::Sprite
- #--------------------------------------------------------------------------
- # ● 定义实例变量
- #--------------------------------------------------------------------------
- attr_accessor :character # 角色
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # viewport : 查看端口
- # character : 角色 (Game_Character)
- #--------------------------------------------------------------------------
- def initialize(viewport, character = nil)
- name = character.name
- super(viewport)
- @character = character
- @namesprite = Sprite.new
- @namesprite.bitmap = Bitmap.new(160, 48)
- @namesprite.bitmap.font.name = "黑体"
- @namesprite.bitmap.font.size = 16
- @namesprite.bitmap.font.color.set(255, 255, 255)
- @evname = name
- @evname_split = name.split(/,/)[0]
- if name[0, 2]=="EV"
- @evname_split = " "
- end
- if name.split(/,/)[1] != nil
- case name.split(/,/)[1]
- when "0"
- @namesprite.bitmap.font.color.set(255, 255, 255)
- when "1"
- @namesprite.bitmap.font.color.set(128, 128, 255)
- when "2"
- @namesprite.bitmap.font.color.set(255, 128, 128)
- when "3"
- @namesprite.bitmap.font.color.set(128, 255, 128)
- when "4"
- @namesprite.bitmap.font.color.set(128, 255, 255)
- when "5"
- @namesprite.bitmap.font.color.set(255, 128, 255)
- when "6"
- @namesprite.bitmap.font.color.set(255, 255, 128)
- when "7"
- @namesprite.bitmap.font.color.set(192, 192, 192)
- else
- @namesprite.bitmap.font.color.set(255, 255, 255)
- end
- end
- if @evname_split != "" and @evname_split != nil
- @namesprite.bitmap.draw_text(0, 0, 160, 36, @evname_split, 1)
- end
- update
- end
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update
- super
- # 元件 ID、文件名、色相与现在的情况存在差异的情况下
- if @tile_id != @character.tile_id or
- @character_name != @character.character_name or
- @character_hue != @character.character_hue
- # 记忆元件 ID 与文件名、色相
- @tile_id = @character.tile_id
- @character_name = @character.character_name
- @character_hue = @character.character_hue
- # 元件 ID 为有效值的情况下
- if @tile_id >= 384
- self.bitmap = RPG::Cache.tile($game_map.tileset_name,
- @tile_id, @character.character_hue)
- self.src_rect.set(0, 0, 32, 32)
- self.ox = 16
- self.oy = 32
- # 元件 ID 为无效值的情况下
- else
- self.bitmap = RPG::Cache.character(@character.character_name,
- @character.character_hue)
- @cw = bitmap.width / 4
- @ch = bitmap.height / 4
- self.ox = @cw / 2
- self.oy = @ch
- end
- end
- if @evname != @character.name
- @namesprite.bitmap.clear
- @evname = @character.name
- @evname_split = @character.name.split(/,/)[0]
- if @character.name.split(/,/)[1] != nil
- case @character.name.split(/,/)[1]
- when "0"
- @namesprite.bitmap.font.color.set(255, 255, 255)
- when "1"
- @namesprite.bitmap.font.color.set(128, 128, 255)
- when "2"
- @namesprite.bitmap.font.color.set(255, 128, 128)
- when "3"
- @namesprite.bitmap.font.color.set(128, 255, 128)
- when "4"
- @namesprite.bitmap.font.color.set(128, 255, 255)
- when "5"
- @namesprite.bitmap.font.color.set(255, 128, 255)
- when "6"
- @namesprite.bitmap.font.color.set(255, 255, 128)
- when "7"
- @namesprite.bitmap.font.color.set(192, 192, 192)
- else
- @namesprite.bitmap.font.color.set(255, 255, 255)
- end
- end
- if @evname_split != "" and @evname_split != nil
- @namesprite.bitmap.draw_text(0, 0, 160, 36, @evname_split, 1)
- end
- end
- @namesprite.x = self.x-80
- @namesprite.y = self.y-self.oy-24
- #@namesprite.visible = $game_switches[39]
- # 设置可视状态
- self.visible = (not @character.transparent)
- # 图形是角色的情况下
- if @tile_id == 0
- # 设置传送目标的矩形
- sx = @character.pattern * @cw
- sy = (@character.direction - 2) / 2 * @ch
- self.src_rect.set(sx, sy, @cw, @ch)
- end
- # 设置脚本的坐标
- self.x = @character.screen_x
- self.y = @character.screen_y
- self.z = @character.screen_z(@ch)
- # 设置不透明度、合成方式、茂密
- self.opacity = @character.opacity
- self.blend_type = @character.blend_type
- self.bush_depth = @character.bush_depth
- # 动画
- if @character.animation_id != 0
- animation = $data_animations[@character.animation_id]
- animation(animation, true)
- @character.animation_id = 0
- end
- end
- end
- #==============================================================================
- # ■ Game_Player
- #------------------------------------------------------------------------------
- # 处理主角的类。事件启动的判定、以及地图的滚动等功能。
- # 本类的实例请参考 $game_player。
- #==============================================================================
- class Game_Player < Game_Character
- def name
- return ""
- end
- end
- #==============================================================================
- # 本脚本来自www.66rpg.com,转载、使用请保留此信息
- #==============================================================================
复制代码- #==============================================================================
- # ■ Game_Event
- #------------------------------------------------------------------------------
- # 处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
- # 在 Game_Map 类的内部使用。
- #==============================================================================
- class Game_Event < Game_Character
- #——————————————————————————————————————
- # 用来返回名称
- #——————————————————————————————————————
- def name
- return @event.name
- end
- def name=(newname)
- @event.name = newname
- end
- end
复制代码 第二步,在地图上新建一个事件,将他的名字命名为“怪物X”(如果不想为怪物X也可以是敌人、靶子、沙包等等···但是记得改事件里面的条件分歧)
第三步,在这个敌人面前放一个执行公共事件的事件
第四步,把公共事件的内容如此写
(第四步需要注意的是在条件分歧@z==true下面加入你想要这个事件挂彩的结果的结果)
第五步就是测试,然后查看事件名字的变化,如果成功就再试,直到这个事件的名称为“怪物X:100”并且达到你做的挂彩的效果
如果第五步成功,那么简单易做的APRP的直线伤害就完成了!
如果你以为只是做APRP的直线伤害就特意开个贴做教程那就太天真了!因为,重头戏刚刚开始!
玩过APRP的朋友应该知道,APRP一开始的教程地图有光环敌人,那么这个光环我们要如何制作呢?答案其实很简单,用事件!
很多人以为持续的光环是一定要用并行处理的脚本或者事件才能做,其实不需要那么麻烦!我们只需要做战斗才需要触发的事件就可以了。
今天教大家做3*3范围的耐久光环
第一步
在你刚才做的那个敌人旁边(最好是两个事件的X相差2,Y也相差2,这样更能测试效果)再创建一个一样的事件,不过不同的是要记得修改它的名称,将他的名称改为“怪物XN2"( N代表耐久光环,2代表耐久光环使敌人的HP临时上升2倍)
第二步,做一个公共事件,内容如下
因为是3*3的光环,所以一个敌人被光环有效笼罩的范围是5*5(包括那个拥有光环的敌人自己)
注意:被削弱的敌人必须和你想要削弱的敌人的编号一样,否则可能起不了作用···我的建议是用X变量从事件名称“怪物X”中的X获得敌人编号,然后再控制那个敌人的能力···
将光环的公共事件放进最初的那个事件里面,记得加一条触发战斗···
在战斗结束后,我们还要让那个初始的事件再执行一次光环事件,不过是把增加的能力返回初始能力(等于削弱···)
然后我们测试看,如果不出错,有效就说明成功了!
今天的教程暂时就到这里了,故都白!~~~o(∩_∩)o为了防止有人白看不回,所以开始改为有偿查看,请各位谅解! |
|