#==============================================================================
# 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
#==============================================================================
#==============================================================================
# * Animated_Sprite Scripted by: SiR_VaIlHoR
# Edited by: 柳柳
#------------------------------------------------------------------------------
# A class for animated sprites.
#==============================================================================
#66RPG,超级横版战斗脚本简要说明:
#默认情况下,把一张战斗图截成4列,>8行,如果感觉4列4帧的动画还不能满足要求,看
#def pose(number,frame = 4),更改=4,以及相关部分。
#战斗图从上到下:前进图,等待图,防御图,挨打图,普通攻击图(默认的武器),施展魔法,
#倒地不行了,胜利姿势,自定义武器1,自定义武器2……
#这个脚本的模型是老外编写的,其中参考了XMXS的一个方法,我添加了一些功能,去掉素材限制。
#不同职业拥有的图片数可以不一样,参考工程和录像教学
#==============================================================================
# □ RPG::Class
#==============================================================================
module RPG
class Class
def name
name = @name.split(/,/)[0]
return name != nil ? name : ''
end
def name2
name = @name.split(/,/)[1]
return name != nil ? name : ''
end
end
class Weapon
def name
name = @name.split(/,/)[0]
return name != nil ? name : ''
end
def name2
name = @name.split(/,/)[1]
return name != nil ? name : ''
end
end
end
class Game_Actor
#--------------------------------------------------------------------------
# ● 更改名称
# name : 新的名称
#--------------------------------------------------------------------------
def picturephase
name = $data_classes[class_id].name2
return name != nil ? name : "66RPG"
end
end
class Game_Enemy
#--------------------------------------------------------------------------
# ● 获取名称
#--------------------------------------------------------------------------
def name
name = $data_enemies[@enemy_id].name.split(/,/)[0]
return name != nil ? name : ''
end
def picturephase
name = $data_enemies[@enemy_id].name.split(/,/)[1]
return name != nil ? name : "66RPG"
end
end
class Animated_Sprite < RPG::Sprite
#--------------------------------------------------------------------------
#可访问的实例变量。
#--------------------------------------------------------------------------
attr_accessor :frames #动画的帧的数目
attr_accessor :delay # 帧间延迟时间(速度)
attr_accessor :frame_width # 每一帧的宽度
attr_accessor :frame_height # 每一帧的高度
attr_accessor :offset_x # 在第一帧的X坐标
attr_accessor :offset_y # Y的所有帧的坐标
attr_accessor :current_frame # 当前的动画帧
attr_accessor :moving # 是精灵移动?
#--------------------------------------------------------------------------
# - Initialize an animated sprite
# viewport : Sprite viewport
#--------------------------------------------------------------------------
def initialize(viewport = nil)
super(viewport)
@frame_width, @frame_height = 0, 0
change # 一个基本的变化来设置初始变量
@old = Graphics.frame_count # 对于延迟的方法
@goingup = true # 增加动画?(if @rm2k_mode is true)
@once = false # 是动画只播放一次?
@animated = true # 用于停止动画的时候”曾经是真实的
end
#--------------------------------------------------------------------------
# RPG的评论
#变化源矩形(改变动画)
#帧:动画的帧的数目
#延迟:帧延迟,控制动画速度
# offx:在第一帧的X坐标
#抉择:Y所有帧的坐标
# STARTF:动画起始帧
#一旦:是动画只播放一次?
# rm2k_mode:动画模式:1-2-3-2如果属实,1-2-3-1假
#
#评论cybersam
#
#的rm2k_mode不是礼物了…
#如果你想的话,#特征然后用rm2k或使用RPG的SCRîPT…
#--------------------------------------------------------------------------
def change(frames = 0, delay = 0, offx = 0, offy = 0,
startf = 0, once = false)
@frames = frames
@delay = delay
@offset_x, @offset_y = offx, offy
@current_frame = startf
@once = once
x = @current_frame * @frame_width + @offset_x
self.src_rect = Rect.new(x, @offset_y, @frame_width, @frame_height)
@goingup = true
@animated = true
end
#--------------------------------------------------------------------------
# 更新动画和运动
#--------------------------------------------------------------------------
def update
super
if self.bitmap != nil and delay(@delay) and @animated
x = @current_frame * @frame_width + @offset_x
self.src_rect = Rect.new(x, @offset_y, @frame_width, @frame_height)
@current_frame = (@current_frame + 1) unless @frames == 0
@animated = false if @current_frame == @frames and @once
@current_frame %= @frames
end
end
#--------------------------------------------------------------------------
# -移动精灵
# X:对目标点的X坐标
# Y Y的目标点的坐标
#速度:运动速度(0 =延迟,1 + =更快)
#延迟:如果速度是0延迟运动
#--------------------------------------------------------------------------
def move(x, y, speed = 1, delay = 0)
@destx = x
@desty = y
@move_speed = speed
@move_delay = delay
@move_old = Graphics.frame_count
@moving = true
end
#--------------------------------------------------------------------------
#移动精灵destx和类
#--------------------------------------------------------------------------
def update_move
return unless @moving
movinc = @move_speed == 0 ? 1 : @move_speed
if Graphics.frame_count - @move_old > @move_delay or @move_speed != 0
self.x += movinc if self.x < @destx
self.x -= movinc if self.x > @destx
self.y += movinc if self.y < @desty
self.y -= movinc if self.y > @desty
@move_old = Graphics.frame_count
end
if @move_speed > 1 # 检查如果精灵无法做到这一点
self.x = @destx if (@destx - self.x).abs % @move_speed != 0 and
(@destx - self.x).abs <= @move_speed
self.y = @desty if (@desty - self.y).abs % @move_speed != 0 and
(@desty - self.y).abs <= @move_speed
end
if self.x == @destx and self.y == @desty
@moving = false
end
end
#--------------------------------------------------------------------------
#暂停动画,但还是更新运动
#帧:帧的数目
#--------------------------------------------------------------------------
def delay(frames)
update_move
if (Graphics.frame_count - @old >= frames)
@old = Graphics.frame_count
return true
end
return false
end
end
#=============================================================================
#
#在这里,我们走…
#这使得SCRîPT很容易实现
#只需添加一个新的SCRîPT上面的“主要”SCRîPT
#并将这整件事在那里
#
#你可以看到精灵改变代码是从日本SCRîPT
#所以妖怪变的学分去他们…
#我编辑这一点,它可以显示更多的精灵和精灵动画
#和增加了一些其他的东西…接下来的事情是球员的运动…
#
#
#
#我也是变化的îPt在这î可控硅SCR催化剂…
#学分这是谁做的这个家伙…
#
#▼▲▼xrxs11。0▼▲▼戦闘・バトラーモーション版本。
#
#因为这不是用了…它不需要信用卡了…
#但我会让它在这里因为它帮了我很多…
#
#
#为理念…小姐为我提供了很好的思路
#,帮了我很多,我没找到一种方法,其中的一些功能…
#
#这里更多的信贷来的地方…
#的RPG的SCRîPT…
#这里不是整个事情…
#但有些snipplet你知道女巫时,阅读评论
#
#
#如果你想要# SCRîPT了更多一些…
#最多的东西是评论…但如果你仍然有问题或
#建议的话可以联系我
#
#如何或在哪里可以联系我…
#目的:通过#或cych4n或ICQ:73130840
#
#记住这是仍在测试阶段…
#和我要工作在一些其他的添加剂…喜欢的人物动作…
#但不会加入我们…因为我需要先弄清楚…
#
#
#
#哦呵呵…在我忘记之前…
#抱歉为坏的英文…^ - ^ ''''
#
#
#==============================================================================
#
#在这里我要告诉你,你需要给你的甜心什么名字
#战斗的精灵的…
#
#好…在这里…因为我使用RPG的运动îPt晶闸管…
#有很多变化…
#
#当你看# SCRîPT你会找到符合的姿势(N)”或“enemy_pose(N)”
#因为我想我#精灵有不同的精灵…我还添加了一个选项
#这些…
#现在如果你#后添加一个数N(N为女巫精灵使用)
#如8…(“姿势(4,8)”)这将告诉SCRîPT,第四动画
#有8帧…
#构成用于球员…和敌人enemy_pose…
#没有比这更多的…
#我用我的老精灵数量#…(这一次只有一个精灵……)
#
#说明动画精灵…(数字)
#
#
# 0 =移动(在战争中)
# 1 =备用
# 2 =辩护
# 3 =打(攻击)
# 4 =攻击
# 5 =使用技能
# 6 =死亡
# 7 =胜利的姿势…这个想法是从RPG的…
#
#
#当然这只是代码的开始…
#所以更多的动画可以实现…
#但现在这应该是足够的…
#
#很多已经改变了这里…现在看起来做的…
#当然好编辑需要做,所以它看起来和伟大的作品你
#游戏…
#
#
#
#第一字符的运动…完成
#第二字运动中攻击…完成
#第三字符出现在敌人攻击时…完成
#
#第四敌人运动…完成
#第五运动中攻击敌人…完成
#第六敌人似乎在敌人攻击时…完成
#
#第七每个武器都有自己的动画…完成
#第八每个技能都有它自己的动画…完成
#
#
#
#的interisted…我的新项目是一个电影播放器
#(这实际上起到AVI,指导价格等…
#却不认为这会很快结束…^ - ^”
#
#但我可以试试别的我开始之前的代码,一个…
#==============================================================================
class Game_Actor < Game_Battler
#你没有改变你的游戏的演员,让人物schows
#从侧面…
#这会为你做的…^ - ^
#--------------------------------------------------------------------------
# ● 取得战斗画面的 X 坐标
#--------------------------------------------------------------------------
def screen_x
case self.index
when 0
return 420
when 1
return 500
when 2
return 500
when 3
return 580
end
end
#--------------------------------------------------------------------------
# ● 取得战斗画面的 Y 坐标
#--------------------------------------------------------------------------
def screen_y
case self.index
when 0
return 220
when 1
return 150
when 2
return 300
when 3
return 220
end
end
#--------------------------------------------------------------------------
# ● 取得战斗画面的 Z 坐标
#--------------------------------------------------------------------------
def screen_z
case self.index
when 0
return 7
when 1
return 8
when 2
return 9
when 3
return 10
end
end
end
# RPG's snipplet...
class Spriteset_Battle
attr_accessor :actor_sprites
attr_accessor :enemy_sprites
alias original_initialize initialize
def initialize
# _派对@启动游戏_ party.actors.size _ number=元
#ビューポートを作成
@viewport0 = Viewport.new(0, 0, 640, 480)
@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport1.z = 50
@viewport2.z = 50
@viewport3.z = 200
@viewport4.z = 5000
@battleback_sprite = Sprite.new(@viewport0)
@enemy_sprites = []
for enemy in $game_troop.enemies #.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2,$game_party.actors[0]))
@actor_sprites.push(Sprite_Battler.new(@viewport2,$game_party.actors[1]))
@actor_sprites.push(Sprite_Battler.new(@viewport2,$game_party.actors[2]))
@actor_sprites.push(Sprite_Battler.new(@viewport2,$game_party.actors[3]))
@weather = RPG::Weather.new(@viewport1)
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
@timer_sprite = Sprite_Timer.new
update
end
alias original_update update
def update
@viewport1.z = 50 and @viewport2.z = 51 if $actor_on_top == true
@viewport1.z = 51 and @viewport2.z = 50 if $actor_on_top == false
# 刷新角色的活动块 (对应角色的替换)
@actor_sprites[0].battler = $game_party.actors[0]
@actor_sprites[1].battler = $game_party.actors[1]
@actor_sprites[2].battler = $game_party.actors[2]
@actor_sprites[3].battler = $game_party.actors[3]
# 战斗背景的文件名与现在情况有差异的情况下
if @battleback_name != $game_temp.battleback_name
@battleback_name = $game_temp.battleback_name
if @battleback_sprite.bitmap != nil
@battleback_sprite.bitmap.dispose
end
@battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
@battleback_sprite.src_rect.set(0, 0, 640, 480)
end
# 刷新战斗者的活动块
for sprite in @enemy_sprites + @actor_sprites
sprite.update
end
# 刷新天气图形
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.update
# 刷新图片活动块
for sprite in @picture_sprites
sprite.update
end
# 刷新计时器活动块
@timer_sprite.update
# 设置画面的色调与震动位置
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
# 设置画面的闪烁色
@viewport4.color = $game_screen.flash_color
# 刷新显示端口
@viewport1.update
@viewport2.update
@viewport4.update
end
end
# end
# ==============================================================================
#精灵战士的服装战斗系统
# ==============================================================================
#我们做一些动画和东西…
#我知道这不是最好的办法…
#但这是第一次的工作方式,我找到了…
#这需要正确理解动画作品…
#如果你想改变一些东西…
#在这我没有解释太多因为它真的容易,如果你知道你在做什么
#否则将采取你的时间去了解它,但我想的人
#试图编辑本就知道他/她做…^ - ^
#
#
#
#这里我会完全取代“sprite_battler”类…
#所以如果你已经改变了一些东西在那里你需要改变它在这里就好了
#(我认为…我没有测试它…所以你了)
#我标记我只增加——> #
#什么需要说明的有一个评论…
#但并不是所有的评论#…
#所以如果你不知道这意味着什么,或者你只是想知道为什么它是存在的,
#它做什么,那么你需要联系我或任何人谁明白…^ - ^
#如何你可以联系我看到上面…在这个SCRîPt的顶部…
class Sprite_Battler < Animated_Sprite
attr_accessor :battler
attr_reader :index
attr_accessor :target_index
attr_accessor :frame_width
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@pattern_b = 0 #
@counter_b = 0 #
@index = 0 #
if @battler != nil
tempbitmap = RPG::Cache.battler(@battler.battler_name, @battler.battler_hue)
@frame_width = tempbitmap.width/4
picturephase = @battler.picturephase
if picturephase == "66RPG"
@frame_height = tempbitmap.height/8
else
@frame_height = tempbitmap.height/8
end
else
@frame_width, @frame_height = 1,1
end
# start sprite
@battler.is_a?(Game_Enemy) ? enemy_pose(1) : pose(1)
@battler_visible = false
if $target_index == nil
$target_index = 0
end
end
def index=(index) #
@index = index #
update #
end #
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
def enemy #
$target_index += $game_troop.enemies.size
$target_index %= $game_troop.enemies.size
return $game_troop.enemies[$target_index] #
end #
def actor #
$target_index += $game_party.actors.size
$target_index %= $game_party.actors.size
return $game_party.actors[$target_index] #
end
#==============================================================================
#这里是RPG的SCRîPT snipplet…
#我只改变线从这…
#
#这里你可以添加更多的精灵了…如果你有更多的…^ - ^
#==============================================================================
def pose(number, frames = 4)
case number
when 0 # run
change(frames, 5, 0, 0, 0)
when 1 # standby
change(frames, 5, 0, @frame_height)
when 2 # defend
change(frames, 5, 0, @frame_height * 2)
when 3 # Hurt, loops
change(frames, 5, 0, @frame_height * 3)
when 4 # attack no loop
change(frames, 5, 0, @frame_height * 4, 0, true)
when 5 # skill
change(frames, 5, 0, @frame_height * 5)
when 6 # death
change(frames, 5, 0, @frame_height * 6)
when 7 # winning pose
change(frames, 5, 0, @frame_height * 7)
when 8 # no sprite
change(frames, 5, 0, @frame_height * 8)
when 9 # no sprite
change(frames, 5, 0, @frame_height * 9)
when 10 # no sprite
change(frames, 5, 0, @frame_height * 10)
when 11 # no sprite
change(frames, 5, 0, @frame_height * 11)
when 12 # no sprite
change(frames, 5, 0, @frame_height * 12)
when 13 # no sprite
change(frames, 5, 0, @frame_height * 13)
when 14 # no sprite
change(frames, 5, 0, @frame_height * 14)
when 15 # no sprite
change(frames, 5, 0, @frame_height * 15)
when 16 # no sprite
change(frames, 5, 0, @frame_height * 16)
when 17 # no sprite
change(frames, 5, 0, @frame_height * 17)
when 18 # no sprite
change(frames, 5, 0, @frame_height * 18)
when 19 # no sprite
change(frames, 5, 0, @frame_height * 19)
when 20 # no sprite
change(frames, 5, 0, @frame_height * 20)
# ...etc.
else
change(frames, 5, 0, @frame_height * number, 0)
end
end
#--------------------------------------------------------------------------
#变化的敌人的战斗姿态
#号:姿势数
#--------------------------------------------------------------------------
def enemy_pose(number ,enemy_frames = 4)
case number
when 0 # run
change(enemy_frames, 5, 0, 0, 0)
when 1 # standby
change(enemy_frames, 5, 0, @frame_height)
when 2 # defend
change(enemy_frames, 5, 0, @frame_height * 2)
when 3 # Hurt, loops
change(enemy_frames, 5, 0, @frame_height * 3)
when 4 # attack
change(enemy_frames, 5, 0, @frame_height * 4, 0, true)
when 5 # skill
change(enemy_frames, 5, 0, @frame_height * 5)
when 6 # death
change(enemy_frames, 5, 0, @frame_height * 6)
when 7 # no sprite
change(enemy_frames, 5, 0, @frame_height * 7)
# ...etc.
else
change(enemy_frames, 5, 0, @frame_height * number, 0)
end
end
#==============================================================================
# sniplet end...
#==============================================================================
def update
super
########################## X☆R添加 #####################################
if @data_battler != @battler
@data_battler = @battler
if @battler != nil
tempbitmap = RPG::Cache.battler(@battler.battler_name, @battler.battler_hue)
@frame_width = tempbitmap.width/4
picturephase = @battler.picturephase
if picturephase == "66RPG"
@frame_height = tempbitmap.height/8
else
@frame_height = tempbitmap.height/8
end
else
@frame_width, @frame_height = 1,1
end
end
###########################################################################
if @battler.nil?
self.bitmap.dispose if self.bitmap
self.bitmap = nil
loop_animation(nil)
return
end
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @frame_width / 2
self.oy = @frame_height
if @battler.dead? or @battler.hidden
self.opacity = 0
end
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
end
if @battler.damage == nil and
@battler.state_animation_id != @state_animation_id
@state_animation_id = @battler.state_animation_id
loop_animation($data_animations[@state_animation_id])
end
if @battler.is_a?(Game_Actor) and @battler_visible
if $game_temp.battle_main_phase
self.opacity += 3 if self.opacity < 255
else
self.opacity -= 3 if self.opacity > 207
end
end
if @battler.blink
blink_on
else
blink_off
end
unless @battler_visible
if not @battler.hidden and not @battler.dead? and
(@battler.damage == nil or @battler.damage_pop)
appear
@battler_visible = true
end
if not @battler.hidden and
(@battler.damage == nil or @battler.damage_pop) and
@battler.is_a?(Game_Actor)
appear
@battler_visible = true
end
end
if @battler_visible
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@battler_visible = false
end
if @battler.white_flash
whiten
@battler.white_flash = false
end
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.animation_id = 0
end
if @battler.damage_pop
damage(@battler.damage, @battler.critical)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
end
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
collapse
@battler_visible = false
else
$game_system.se_play($data_system.actor_collapse_se) unless @dead
@dead = true
pose(6)
end
else
@dead = false
end
end #
end
end
#==============================================================================
# Scene_Battle Costum Battle System
#==============================================================================
class Scene_Battle
def update_phase4
case @phase4_step
when 1
update_phase4_step1
when 2
update_phase4_step2
when 3
update_phase4_step3
when 4
update_phase4_step4
when 5
update_phase4_step5
when 6
update_phase4_step6
when 7
update_phase4_step7
when 8
update_phase4_step8
end
end
def make_basic_action_result
if @active_battler.is_a?(Game_Actor)
$actor_on_top = true
elsif @active_battler.is_a?(Game_Enemy)
$actor_on_top = false
end
if @active_battler.current_action.basic == 0
# ============================================================================
#武器开始…
# ============================================================================
#
# =================================不同武器不同的动画
#
#正如你可以看到,这是相当简单的#…
#如果你想添加一个武器动画列表然后看下面的SCRîPT…
#,我希望你会发现这是如何工作的…
#
#
#如果不#…
#这里是这样的…
#第一件事…
#只是复制和粘贴”的“@active_battler_enemy.weapon_id = =一致。”
#只是在最后的“weapon_sprite的…
#
#这里的ID是你需要看看你的游戏数据库的数量,站在
#你的武器的名字是你需要在这里输入的ID…
#
#也是一样的怪物的方…^ - ^
#怪物通常不需要武器…更多的精灵
#
#如果你想使用更多#…然后替换“@ weapon_sprite_enemy = 4”
#这些线…(但是你需要编辑)
#
#如果@active_battler.weapon_id = = 1 # <——武器的ID号
# @ weapon_sprite_enemy = 4 # <——战斗动画
# elsif @active_battler.weapon_id = = 5 # <——武器的ID号
# @ weapon_sprite_enemy = 2 # <——战斗动画
# elsif @active_battler.weapon_id = = 9 # <——武器的ID号
# @ weapon_sprite_enemy = 0 # <——战斗动画
# elsif @active_battler.weapon_id = = 13 # <——武器的ID号
# @ weapon_sprite_enemy = 6 # <——战斗动画
#其他#
# @ weapon_sprite_enemy = 4
#结束
#
# =================================结束
if @active_battler.is_a?(Game_Actor)
if $data_weapons[@active_battler.weapon_id] == nil
@weapon_sprite = 4
else
if $data_weapons[@active_battler.weapon_id].name2 == nil or
$data_weapons[@active_battler.weapon_id].name2 == ""
@weapon_sprite = 4
else
@weapon_sprite = $data_weapons[@active_battler.weapon_id].name2.to_i
end
end
#怪物部分在这里…^ - ^
else # @active_battler.is_a?(Game_Enemy)
@weapon_sprite_enemy = 4
end
#
#=============================================================================
# WEAPONS END....
#=============================================================================
@animation1_id = @active_battler.animation1_id
@animation2_id = @active_battler.animation2_id
if @active_battler.is_a?(Game_Enemy)
if @active_battler.restriction == 3
target = $game_troop.random_target_enemy
elsif @active_battler.restriction == 2
target = $game_party.random_target_actor
else
index = @active_battler.current_action.target_index
target = $game_party.smooth_target_actor(index)
end
#======== 这里是运动和动画的设置…
x = target.screen_x - RPG::Cache.battler(@active_battler.battler_name, @active_battler.battler_hue).width/6
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(0)
@spriteset.enemy_sprites[@active_battler.index].move(x, target.screen_y, 10)
# =========在这里,如果你看看RPG的运动设置,你会看到
# =========,他以40为动画的速度…
# =========我东西太快所以我制定了10所以看起来平滑...
end
if @active_battler.is_a?(Game_Actor)
if @active_battler.restriction == 3
target = $game_party.random_target_actor
elsif @active_battler.restriction == 2
target = $game_troop.random_target_enemy
else
index = @active_battler.current_action.target_index
target = $game_troop.smooth_target_enemy(index)
end
#======= 对于球员同样的事情…^ - ^
x = target.screen_x + RPG::Cache.battler(@active_battler.battler_name, @active_battler.battler_hue).width/8
@spriteset.actor_sprites[@active_battler.index].pose(0)
@spriteset.actor_sprites[@active_battler.index].move(x, target.screen_y, 10)
end
@target_battlers = [target]
for target in @target_battlers
target.attack_effect(@active_battler)
end
return
end
if @active_battler.current_action.basic == 1
if @active_battler.is_a?(Game_Actor)
@spriteset.actor_sprites[@active_battler.index].pose(2) #防御
else
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(2) #defence
end
@help_window.set_text($data_system.words.guard, 1)
return
end
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2
@help_window.set_text("逃走", 1)
@active_battler.escape
return
end
if @active_battler.current_action.basic == 3
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
if @active_battler.current_action.basic == 4
if $game_temp.battle_can_escape == false
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
update_phase2_escape
return
end
end
#--------------------------------------------------------------------------
# skill aktion...
#--------------------------------------------------------------------------
def make_skill_action_result
@skill = $data_skills[@active_battler.current_action.skill_id]
unless @active_battler.current_action.forcing
unless @active_battler.skill_can_use?(@skill.id)
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
end
@active_battler.sp -= @skill.sp_cost
@status_window.refresh
@help_window.set_text(@skill.name, 1)
# =============================================================================
#技能的精灵开始
# =============================================================================
#这是为武器一样…
#为人本的第一次
#看SCRîPT我希望它是很容易理解的…
#
#另一个有早期版本的这个SCRîPT他们不需要explenation
#…我认为…
#认为改变是线在动画ID给精灵…
#数后的“姿态”是动画的一致。它为每一个其他的动画以及..
#如果你有技能,有更多的帧动画…
#然后插入帧的数量后第一个数字…
#看来这个…”姿势(5,8)“<<——5是动画…
# 8是最大帧(这意味着你的动画有8帧……)^ - ^
if @active_battler.is_a?(Game_Actor)
if @skill.name != "one of the skills" # <--skill doesn't exist => all the skills have the skill animation!
@spriteset.actor_sprites[@active_battler.index].pose(5) # <-- sprite number
end
else
if @skill.name != "one of the skills" # <-- first skill name
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(5) # <-- sprite number
end
end
#=============================================================================
# SKILL SPRITES END
#=============================================================================
@animation1_id = @skill.animation1_id
@animation2_id = @skill.animation2_id
@common_event_id = @skill.common_event_id
set_target_battlers(@skill.scope)
for target in @target_battlers
target.skill_effect(@active_battler, @skill)
end
end
#--------------------------------------------------------------------------
#在这里,我们如何使项目使用aktions
#--------------------------------------------------------------------------
def make_item_action_result
#对不起我没这方面的工作…
#因为我没有一个精灵,使用物品的…
#所以我刚刚添加的备用的精灵在这里…
#当我得到这个#更多的时间我会尽我所能做的这一个…^ - ^
#其同上面的…
if @active_battler.is_a?(Game_Actor)
@spriteset.actor_sprites[@active_battler.index].pose(1)
else
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
end
@item = $data_items[@active_battler.current_action.item_id]
unless $game_party.item_can_use?(@item.id)
@phase4_step = 1
return
end
if @item.consumable
$game_party.lose_item(@item.id, 1)
end
@help_window.set_text(@item.name, 1)
@animation1_id = @item.animation1_id
@animation2_id = @item.animation2_id
@common_event_id = @item.common_event_id
index = @active_battler.current_action.target_index
target = $game_party.smooth_target_actor(index)
set_target_battlers(@item.scope)
for target in @target_battlers
target.item_effect(@item)
end
end
# ==============================================================================
#这里了…从RPG的SCRîPT snipplet
# ==============================================================================
#这是胜利的姿势…
#如果你使用我的老习惯水平SCRî接着你需要增加
#标记线给你“def start_phase5”中的“scene_battle 2”和删除这一…
# - > = ***** =
#结束标志,你需要删除…
#和-> ===== } {
#标志,你需要复制和粘贴在另一条线…
#你需要添加在同一位置…
def start_phase5
@phase = 5
$game_system.me_play($game_system.battle_end_me)
$game_system.bgm_play($game_temp.map_bgm)
exp = 0
gold = 0
treasures = []
for enemy in $game_troop.enemies
unless enemy.hidden
exp += enemy.exp
gold += enemy.gold
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
end
treasures = treasures[0..5]
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
@spriteset.actor_sprites[i].pose(7) unless actor.dead? # {=====}
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
@status_window.level_up(i)
end
end
end
$game_party.gain_gold(gold)
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
@result_window = Window_BattleResult.new(exp, gold, treasures)
@phase5_wait_count = 100
end
# =*****=
#--------------------------------------------------------------------------
#更新运动
#由于RPG不是用来评论…我要评论它再次…
#--------------------------------------------------------------------------
def update_phase4_step3
if @active_battler.current_action.kind == 0 and
@active_battler.current_action.basic == 0
# 在这一个…我们有我们的武器动画…玩家和怪物
if @active_battler.is_a?(Game_Actor)
@spriteset.actor_sprites[@active_battler.index].pose(@weapon_sprite)
elsif @active_battler.is_a?(Game_Enemy)
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(@weapon_sprite_enemy)
end
end
if @animation1_id == 0
@active_battler.white_flash = true
else
@active_battler.animation_id = @animation1_id
@active_battler.animation_hit = true
end
@phase4_step = 4
end
def update_phase4_step4
# 这是热播的动画…
for target in @target_battlers
if target.is_a?(Game_Actor) and !@active_battler.is_a?(Game_Actor)
if target.guarding?
@spriteset.actor_sprites[target.index].pose(2)
else
@spriteset.actor_sprites[target.index].pose(3)
end
elsif target.is_a?(Game_Enemy) and !@active_battler.is_a?(Game_Enemy)
if target.guarding?
@spriteset.enemy_sprites[target.index].enemy_pose(2)
else
@spriteset.enemy_sprites[target.index].enemy_pose(3)
end
end
target.animation_id = @animation2_id
target.animation_hit = (target.damage != "Miss")
end
@wait_count = 8
@phase4_step = 5
end
def update_phase4_step5
if @active_battler.hp > 0 and @active_battler.slip_damage?
@active_battler.slip_damage_effect
@active_battler.damage_pop = true
end
@help_window.visible = false
@status_window.refresh
#这里是后卫动画…
if @active_battler.is_a?(Game_Actor)
@spriteset.actor_sprites[@active_battler.index].pose(1)
else
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
end
for target in @target_battlers
if target.damage != nil
target.damage_pop = true
if @active_battler.is_a?(Game_Actor)
@spriteset.actor_sprites[@active_battler.index].pose(1)
else
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
end
end
end
@phase4_step = 6
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
def update_phase4_step6
#我们询问玩家死亡和是一名球员或敌人…
#这些线的运行和待机动画的…
if @active_battler.is_a?(Game_Actor) and !@active_battler.dead?
@spriteset.actor_sprites[@active_battler.index].move(@active_battler.screen_x, @active_battler.screen_y, 20)
@spriteset.actor_sprites[@active_battler.index].pose(0)
elsif !@active_battler.dead?
@spriteset.enemy_sprites[@active_battler.index].move(@active_battler.screen_x, @active_battler.screen_y, 20)
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(0)
end
for target in @target_battlers
if target.is_a?(Game_Actor) and !target.dead?
@spriteset.actor_sprites[target.index].pose(1)
elsif !target.dead?
@spriteset.enemy_sprites[target.index].enemy_pose(1)
end
end
$game_temp.forcing_battler = nil
if @common_event_id > 0
common_event = $data_common_events[@common_event_id]
$game_system.battle_interpreter.setup(common_event.list, 0)
end
@phase4_step = 7
end
def update_phase4_step7
#我们询问玩家死亡和是一名球员或敌人…
#这些线的运行和待机动画的…
if @active_battler.is_a?(Game_Actor) and !@active_battler.dead?
@spriteset.actor_sprites[@active_battler.index].pose(1)
elsif !@active_battler.dead?
@spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
end
$game_temp.forcing_battler = nil
if @common_event_id > 0
common_event = $data_common_events[@common_event_id]
$game_system.battle_interpreter.setup(common_event.list, 0)
end
@phase4_step = 1
end
#这是一个额外的…没有这个动画而无法正常工作的。.
def update
if $game_system.battle_interpreter.running?
$game_system.battle_interpreter.update
if $game_temp.forcing_battler == nil
unless $game_system.battle_interpreter.running?
unless judge
setup_battle_event
end
end
if @phase != 5
@status_window.refresh
end
end
end
$game_system.update
$game_screen.update
if $game_system.timer_working and $game_system.timer == 0
$game_temp.battle_abort = true
end
@help_window.update
@party_command_window.update
@actor_command_window.update
@status_window.update
@message_window.update
@spriteset.update
if $game_temp.transition_processing
$game_temp.transition_processing = false
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
if $game_temp.message_window_showing
return
end
if @spriteset.effect?
return
end
if $game_temp.gameover
$scene = Scene_Gameover.new
return
end
if $game_temp.to_title
$scene = Scene_Title.new
return
end
if $game_temp.battle_abort
$game_system.bgm_play($game_temp.map_bgm)
battle_end(1)
return
end
if @wait_count > 0
@wait_count -= 1
return
end
# 这一战役而持有的球员
for actor in @spriteset.actor_sprites
if actor.moving
return
end
end
# 这是敌人…
for enemy in @spriteset.enemy_sprites
if enemy.moving# and $game_system.animated_enemy
return
end
end
if $game_temp.forcing_battler == nil and
$game_system.battle_interpreter.running?
return
end
case @phase
when 1
update_phase1
when 2
update_phase2
when 3
update_phase3
when 4
update_phase4
when 5
update_phase5
end
end #==============================================================================
# 结束的snipplet
#如果你想评论,在这里只看scene_battle 4…
#我加了一些评论以来RPG没有添加任何…
#==============================================================================
end
#==============================================================================
# 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
#==============================================================================