- Сообщений: 201
- Спасибо получено: 198
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.
[VX] Посоветуйте боевую систему
Скрыть
Больше
15 года 3 мес. назад #39247
от idavollr
Her Third Eye is drawing me closer
idavollr создал тему: [VX] Посоветуйте боевую систему
После целой ночи возни с этим гребным GTBS, так и не исправив ошибку, я решил отказаться от него. Благо, боев в игре не так много и переход пройдет довольно безболезненно.
Так вот. Посоветуйте мне, пожалуйста, боевую систему. Удобную и простую, но не на основе стандартной. Ибо стандартная боевая система-зло О__О
Заранее спасибо)
Так вот. Посоветуйте мне, пожалуйста, боевую систему. Удобную и простую, но не на основе стандартной. Ибо стандартная боевая система-зло О__О
Заранее спасибо)
Her Third Eye is drawing me closer
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
15 года 3 мес. назад #39248
от Poseidon13
Poseidon13 ответил в теме Re: [VX] Посоветуйте боевую систему
Боевая система Tankentai
Спасибо сказали: idavollr
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Скрыть
Больше
- Сообщений: 201
- Спасибо получено: 198
15 года 3 мес. назад #39249
от idavollr
Her Third Eye is drawing me closer
idavollr ответил в теме Re: [VX] Посоветуйте боевую систему
Poseidon13
Спасибо большое) Боевка и вправду интересная))
[strike]А что самое главное, возни с баттлерами никакой ^.^[/strike]
Спасибо большое) Боевка и вправду интересная))
[strike]А что самое главное, возни с баттлерами никакой ^.^[/strike]
Her Third Eye is drawing me closer
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
15 года 3 мес. назад #39253
от Poseidon13
Poseidon13 ответил в теме Re: [VX] Посоветуйте боевую систему
возня лишь 1. Отдельное нахождение каждого чара
в чарсетах.
в чарсетах.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Скрыть
Больше
- Сообщений: 201
- Спасибо получено: 198
15 года 3 мес. назад #39254
от idavollr
Her Third Eye is drawing me closer
idavollr ответил в теме Re: [VX] Посоветуйте боевую систему
Я всех чаров либо делаю в чармейкере, либо беру готовых-так что это не проблема!)
Her Third Eye is drawing me closer
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Animan2010
-
- Не в сети
- Осваиваюсь на форуме
-
Скрыть
Больше
- Сообщений: 48
- Спасибо получено: 7
15 года 3 мес. назад #39255
от Animan2010
Animan2010 ответил в теме Re: [VX] Посоветуйте боевую систему
Вот скрипт на Side-View, с которым не нужны лишние отдельные чары
Три скрипты в материалы помещай.
Три скрипты в материалы помещай.
ВНИМАНИЕ: Спойлер!
#==========================================================================
# ■ VX-RGSS2-6 サイドビュー戦闘[MotionCtrl] [Ver.1.0.1] by Claimh
#
# English Translation By: Elemental Crisis [ www.rpgcrisis.net ]
#
# This script carries out the movement controls of the actors.
#==============================================================================
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#
# ● Battle Start Process
#
alias process_battle_start_sideview process_battle_start
def process_battle_start
for battler in $game_party.members + $game_troop.members
battler.move_mode = SideView::M_MODE_WAIT
end
process_battle_start_sideview
end
#
# ● Victory Process
#
alias process_victory_sideview process_victory
def process_victory
for actor in $game_party.members
actor.move_mode = SideView::M_MODE_WIN
end
process_victory_sideview
end
#
# ● Wait Until Motion Control Is Finished
#
def wait_for_motion
while @active_battler.motion_stop
update_basic
end
end
#
# ● Execute Combat Operations: Attack [Redefinition]
#
def execute_action_attack
text = sprintf(Vocab::DoAttack, @active_battler.name)
@message_window.add_instant_text(text)
targets = @active_battler.action.make_targets
#---Enemy attack sound reproduced.
if @active_battler.is_a?(Game_Enemy)
Sound.play_enemy_attack
wait(15, true)
end
#--- Proximity (Going)
SideView.set_target_point(@active_battler, targets[0])
@active_battler.move_mode = SideView::M_MODE_ATK1
@active_battler.motion_stop = true
wait_for_motion
#--- Attack
wait(5)
@active_battler.move_mode = SideView::M_MODE_ATK2
#---
display_attack_animation(targets)
wait(20)
for target in targets
target.attack_effect(@active_battler)
display_action_effects(target)
end
#--- Proximity (Return)
@active_battler.move_mode = SideView::M_MODE_ATK3
@active_battler.motion_stop = true
wait_for_motion
#---Wait
for target in targets
target.move_mode = SideView::M_MODE_WAIT
end
@active_battler.move_mode = SideView::M_MODE_WAIT
#---
end
#
# ● Execute Combat Operations: Skill [Redefinition]
#
def execute_action_skill
skill = @active_battler.action.skill
text = @active_battler.name + skill.message1
@message_window.add_instant_text(text)
unless skill.message2.empty?
wait(10)
@message_window.add_instant_text(skill.message2)
end
#--- Enemy attack sound reproduced.
if @active_battler.is_a?(Game_Enemy)
Sound.play_enemy_attack
wait(15, true)
end
#--- Long distance attack.
@active_battler.move_mode = SideView::M_MODE_MAGI
#---
targets = @active_battler.action.make_targets
display_animation(targets, skill.animation_id)
@active_battler.mp -= @active_battler.calc_mp_cost(skill)
$game_temp.common_event_id = skill.common_event_id
for target in targets
target.skill_effect(@active_battler, skill)
display_action_effects(target, skill)
end
#---Wait
for target in targets
target.move_mode = SideView::M_MODE_WAIT
end
@active_battler.move_mode = SideView::M_MODE_WAIT
#---
end
#
# Execute Combat Operations: Item [Redefinition]
#
def execute_action_item
item = @active_battler.action.item
text = sprintf(Vocab::UseItem, @active_battler.name, item.name)
@message_window.add_instant_text(text)
#--- Enemy attack sound reproduced.
if @active_battler.is_a?(Game_Enemy)
Sound.play_enemy_attack
wait(15, true)
end
#--- Long distance attack
@active_battler.move_mode = SideView::M_MODE_MAGI
#---
targets = @active_battler.action.make_targets
display_animation(targets, item.animation_id)
$game_party.consume_item(item)
$game_temp.common_event_id = item.common_event_id
for target in targets
target.item_effect(@active_battler, item)
display_action_effects(target, item)
end
#---Wait
for target in targets
target.move_mode = SideView::M_MODE_WAIT
end
@active_battler.move_mode = SideView::M_MODE_WAIT
#---
end
#
# ● Attack Animation Display [Redefinition]
# Targets : Object's Arrangement
#
# 【Changed part】
# Enemy sound effect is changed so it can be used in each phase of operation.
# It changes so that the attack animation of an enemy can be displayed.
#
def display_attack_animation(targets)
display_normal_animation(targets, @active_battler.atk_animation_id, false)
display_normal_animation(targets, @active_battler.atk_animation_id2, true)
wait_for_animation
end
#
# ● HP Damage display [Redefinition]
# Target : Candidate
# object : Skill or item
#
def display_hp_damage(target, obj = nil)
if target.hp_damage == 0 # No damage
return if obj != nil and obj.damage_to_mp
return if obj != nil and obj.base_damage == 0
fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
text = sprintf(fmt, target.name)
elsif target.absorbed # Absorption
fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
elsif target.hp_damage > 0 # Damage
if target.actor?
text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage)
Sound.play_actor_damage
$game_troop.screen.start_shake(5, 5, 10)
target.blink = true # Only adds here
else
text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage)
Sound.play_enemy_damage
target.blink = true
end
else # Recovery
fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage)
Sound.play_recovery
end
@message_window.add_instant_text(text)
wait(30)
end
end
# ■ VX-RGSS2-6 サイドビュー戦闘[MotionCtrl] [Ver.1.0.1] by Claimh
#
# English Translation By: Elemental Crisis [ www.rpgcrisis.net ]
#
# This script carries out the movement controls of the actors.
#==============================================================================
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#
# ● Battle Start Process
#
alias process_battle_start_sideview process_battle_start
def process_battle_start
for battler in $game_party.members + $game_troop.members
battler.move_mode = SideView::M_MODE_WAIT
end
process_battle_start_sideview
end
#
# ● Victory Process
#
alias process_victory_sideview process_victory
def process_victory
for actor in $game_party.members
actor.move_mode = SideView::M_MODE_WIN
end
process_victory_sideview
end
#
# ● Wait Until Motion Control Is Finished
#
def wait_for_motion
while @active_battler.motion_stop
update_basic
end
end
#
# ● Execute Combat Operations: Attack [Redefinition]
#
def execute_action_attack
text = sprintf(Vocab::DoAttack, @active_battler.name)
@message_window.add_instant_text(text)
targets = @active_battler.action.make_targets
#---Enemy attack sound reproduced.
if @active_battler.is_a?(Game_Enemy)
Sound.play_enemy_attack
wait(15, true)
end
#--- Proximity (Going)
SideView.set_target_point(@active_battler, targets[0])
@active_battler.move_mode = SideView::M_MODE_ATK1
@active_battler.motion_stop = true
wait_for_motion
#--- Attack
wait(5)
@active_battler.move_mode = SideView::M_MODE_ATK2
#---
display_attack_animation(targets)
wait(20)
for target in targets
target.attack_effect(@active_battler)
display_action_effects(target)
end
#--- Proximity (Return)
@active_battler.move_mode = SideView::M_MODE_ATK3
@active_battler.motion_stop = true
wait_for_motion
#---Wait
for target in targets
target.move_mode = SideView::M_MODE_WAIT
end
@active_battler.move_mode = SideView::M_MODE_WAIT
#---
end
#
# ● Execute Combat Operations: Skill [Redefinition]
#
def execute_action_skill
skill = @active_battler.action.skill
text = @active_battler.name + skill.message1
@message_window.add_instant_text(text)
unless skill.message2.empty?
wait(10)
@message_window.add_instant_text(skill.message2)
end
#--- Enemy attack sound reproduced.
if @active_battler.is_a?(Game_Enemy)
Sound.play_enemy_attack
wait(15, true)
end
#--- Long distance attack.
@active_battler.move_mode = SideView::M_MODE_MAGI
#---
targets = @active_battler.action.make_targets
display_animation(targets, skill.animation_id)
@active_battler.mp -= @active_battler.calc_mp_cost(skill)
$game_temp.common_event_id = skill.common_event_id
for target in targets
target.skill_effect(@active_battler, skill)
display_action_effects(target, skill)
end
#---Wait
for target in targets
target.move_mode = SideView::M_MODE_WAIT
end
@active_battler.move_mode = SideView::M_MODE_WAIT
#---
end
#
# Execute Combat Operations: Item [Redefinition]
#
def execute_action_item
item = @active_battler.action.item
text = sprintf(Vocab::UseItem, @active_battler.name, item.name)
@message_window.add_instant_text(text)
#--- Enemy attack sound reproduced.
if @active_battler.is_a?(Game_Enemy)
Sound.play_enemy_attack
wait(15, true)
end
#--- Long distance attack
@active_battler.move_mode = SideView::M_MODE_MAGI
#---
targets = @active_battler.action.make_targets
display_animation(targets, item.animation_id)
$game_party.consume_item(item)
$game_temp.common_event_id = item.common_event_id
for target in targets
target.item_effect(@active_battler, item)
display_action_effects(target, item)
end
#---Wait
for target in targets
target.move_mode = SideView::M_MODE_WAIT
end
@active_battler.move_mode = SideView::M_MODE_WAIT
#---
end
#
# ● Attack Animation Display [Redefinition]
# Targets : Object's Arrangement
#
# 【Changed part】
# Enemy sound effect is changed so it can be used in each phase of operation.
# It changes so that the attack animation of an enemy can be displayed.
#
def display_attack_animation(targets)
display_normal_animation(targets, @active_battler.atk_animation_id, false)
display_normal_animation(targets, @active_battler.atk_animation_id2, true)
wait_for_animation
end
#
# ● HP Damage display [Redefinition]
# Target : Candidate
# object : Skill or item
#
def display_hp_damage(target, obj = nil)
if target.hp_damage == 0 # No damage
return if obj != nil and obj.damage_to_mp
return if obj != nil and obj.base_damage == 0
fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
text = sprintf(fmt, target.name)
elsif target.absorbed # Absorption
fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
elsif target.hp_damage > 0 # Damage
if target.actor?
text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage)
Sound.play_actor_damage
$game_troop.screen.start_shake(5, 5, 10)
target.blink = true # Only adds here
else
text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage)
Sound.play_enemy_damage
target.blink = true
end
else # Recovery
fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage)
Sound.play_recovery
end
@message_window.add_instant_text(text)
wait(30)
end
end
ВНИМАНИЕ: Спойлер!
#=========================================================================
# ■ VX-RGSS2-6 サイドビュー戦闘[MotionExe] [Ver.1.0.1] by Claimh
#
# English Translation By: Elemental Crisis [ www.rpgcrisis.net ]
#
# This script executes movement controls of the actors.
#==============================================================================
module SideView
#
#
[Operation Setup]
# Operation Speed
MOTION_SPEED = 20
#
[Animation Setup]
# Usual enemy attack animation setup.
E_ANIME = {
# EnemyID => [Usually atttack and additional attack animations.]
1 => [1, 0]
}
#
#
# Motion Control Mode
M_MODE_WAIT = 0 # Standby
M_MODE_MAGI = 1 # Attack
M_MODE_DAMG = 2 # Non-Damage Attack
M_MODE_WIN = 3 # Victory
M_MODE_ATK1 = 4 # Direct Attack (Approaching)
M_MODE_ATK2 = 5 # Direct Attack (Attacking)
M_MODE_ATK3 = 6 # Direct Attack (Returning)
module_function
#
# ● Movement-Zone Calculation
#
def set_target_point(attacker, target)
case target
when Game_Actor
bits = Cache.character(target.character_name)
attacker.target_x = target.screen_x + (bits.width /
attacker.target_y = target.screen_y
when Game_Enemy
bits = Cache.battler(target.battler_name, target.battler_hue)
attacker.target_x = target.screen_x + (bits.width / 2)
attacker.target_y = target.screen_y
end
end
end
class Game_Battler
attr_accessor :move_mode # Operation Mode
# 0:Standby 1:Attack 2: Un-useless 3:Victory
attr_accessor :motion_stop # Operation Stop Flag (Under Movement Flag)
attr_accessor :target_x # Move Position(x)
attr_accessor :target_y # Move Position(y)
#
# ● Object Initialization
#
alias initialize_sdva_corpse initialize
def initialize
initialize_sdva_corpse
@move_mode = 0
@motion_stop = false
@target_x = 0
@target_y = 0
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#
# ● Attack Animation ID Acquisition
#
def atk_animation_id
return 0 if SideView::E_ANIME[@enemy_id].nil?
return SideView::E_ANIME[@enemy_id][0]
end
#
# ● Attack Animation ID Acquisition (2 Sword Style : 2 Weapons )
#
def atk_animation_id2
return 0 if SideView::E_ANIME[@enemy_id].nil?
return SideView::E_ANIME[@enemy_id][1]
end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
#
# ● Object Initialization
# Viewport : View Port
# Battler : Battler (Game_Battler)
#
alias initialize_sideview initialize
def initialize(viewport, battler = nil)
initialize_sideview(viewport, battler)
init_direct_attack
end
#
# ● Set Proximity Value For Attack
#
def init_direct_attack
@direct_attack_cnt = 0
@direct_attack_phase = 0
@direct_move_cnt = 0
@battler_x_plus = 0
@battler_y_plus = 0
@moving_mode = 0
@pattern = 0
@direction = 0
end
#
# ● Frame Renewal [Redefinition]
#
def update
super
if @battler == nil
self.bitmap = nil
else
@use_sprite = @battler.use_sprite?
if @use_sprite
self.x = @battler.screen_x + @battler_x_plus
self.y = @battler.screen_y + @battler_y_plus
self.z = @battler.screen_z
update_battler_bitmap
end
setup_new_effect
update_effect
end
end
#
# ● Bitmap Transfer Source Renewal
#
alias update_battler_bitmap_sideview update_battler_bitmap
def update_battler_bitmap
case @battler
when Game_Actor
if @battler.character_name != @battler_name or
@battler.character_index != @battler_hue
@battler_name = @battler.character_name
@battler_hue = @battler.character_index
draw_pre_character
draw_character
if (@battler.dead? or @battler.hidden)
self.opacity = 0
end
end
when Game_Enemy
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
draw_battler
if (@battler.dead? or @battler.hidden)
self.opacity = 0
end
end
end
motion_control
end
#
# ● Battler Drawing
#
def draw_battler
self.bitmap = Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 2
self.oy = @height
end
#
# ● Pre-Character Drawing [Common]
#
def draw_pre_character
self.bitmap = Cache.character(@battler_name)
sign = @battler_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
@width = bitmap.width / 3
@height = bitmap.height / 4
else
@width = bitmap.width / 12
@height = bitmap.height / 8
end
self.ox = @width / 2
self.oy = @height
end
#
# ● Character Drawing [Common]
#
def draw_character
index = @battler_hue
pattern = @pattern < 3 ? @pattern : 1
sx = (index % 4 * 3 + pattern) * @width
sy = (index / 4 * 4 + (@direction - 2) / 2) * @height
self.src_rect.set(sx, sy, @width, @height)
end
#
# ● Motion Control
#
def motion_control
# Memory Operation Mode
@moving_mode = @battler.move_mode
# Battler Drawing
case @battler
when Game_Actor # Actor
actor_motion_control
when Game_Enemy # Enemy
enemy_motion_control
end
end
#
# ● Motion Control (Actor)
#
def actor_motion_control
# Operation Change
case @moving_mode
when SideView::M_MODE_WAIT # Standby
init_direct_attack
@battler_x_plus = 0
@direction = 4
@pattern = 1
when SideView::M_MODE_MAGI # Attack
@battler_x_plus = -10
@direction = 4
@pattern = 3
when SideView::M_MODE_DAMG # Non-Damage Attack
@battler_x_plus = 10
@direction = 4
@pattern = 3
when SideView::M_MODE_WIN # Victory
@direction = 2
@pattern = 1
when SideView::M_MODE_ATK1 # Direct Attack (Approaching)
exe_moving_attack_start
@end_pos_x = @battler_x_plus
when SideView::M_MODE_ATK2 # Direct Attack (Attacking)
@battler_x_plus = @end_pos_x - 10
when SideView::M_MODE_ATK3 # Direct Attack (Returning)
exe_moving_attack_end
else
p "error:Sprite_Battler>> @moving_mode"
end
draw_character
end
#
# ● Motion Control (Enemy)
#
def enemy_motion_control
# Operation Change
case @moving_mode
when SideView::M_MODE_WAIT # Standby
init_direct_attack
when SideView::M_MODE_MAGI # Attack
@battler_x_plus = 10
when SideView::M_MODE_DAMG # Non-Damage Attack
@battler_x_plus = -10
@shake_flg = true
when SideView::M_MODE_ATK1 # Direct Attack (Approaching)
exe_moving_attack_start
@end_pos_x = @battler_x_plus
when SideView::M_MODE_ATK2 # Direct Attack (Attacking)
@battler_x_plus = @end_pos_x + 10
when SideView::M_MODE_ATK3 # Direct Attack (Returning)
exe_moving_attack_end
else
p "error:Sprite_Battler>> @moving_mode", @moving_mode
end
end
#
# ● Proximity Attack Execution Method
#
def exe_moving_attack_start
return unless @battler.motion_stop
case @direct_attack_phase
when 0 # Start Operation Preparation
diratk_start
when 1 # Move Operation (Going)
diratk_move
when 2 # After-Movement Wait
diratk_wait
end
end
def exe_moving_attack_end
case @direct_attack_phase
when 0 # Attack Operation
diratk_attack
when 1 # Move Operation (Return)
diratk_back
when 2 # Operation End
diratk_end
end
end
#
# ● Proximity Attack Execution [Start Operation Preparation]
#
def diratk_start
# Pose Change
@pattern = 1
# The number of frames needed is the distance between current position and
# target position.
pos_x = @battler.target_x - self.x
pos_y = @battler.target_y - self.y
# Caculation for ammount of frames needed.
@direct_move_cnt = @direct_attack_cnt = (pos_x.abs / SideView::MOTION_SPEED).round
# NEXT Phase
@direct_attack_phase += 1
end
#
# ● Proximity Attack Execution [Move Operation (Going)]
#
def diratk_move
case @battler
when Game_Actor
x_plus = @width
y_plus = -@height / 4
when Game_Enemy
x_plus = -@width - 10
y_plus = @height / 4
end
# The next movement location is figured out by the distance between
# current position and target position.
pos_x = @battler.target_x - self.x + x_plus
pos_y = @battler.target_y - self.y + y_plus
@battler_x_plus += pos_x / @direct_attack_cnt if @direct_attack_cnt != 0
@battler_y_plus += pos_y / @direct_attack_cnt if @direct_attack_cnt != 0
# End count
@direct_attack_cnt -= 1
# Last movement (Insurance: Last correction)
if @direct_attack_cnt <= 0
@battler_x_plus = @battler.target_x - @battler.screen_x + x_plus
@battler_y_plus = @battler.target_y - @battler.screen_y + y_plus
# NEXTフェーズ
@direct_attack_cnt = 5
@direct_attack_phase += 1
end
end
#
# ● Proximity Attack Execution [Attack Operation Return]
#
def diratk_wait
# End Count
@direct_attack_cnt -= 1
# Last Movement
if @direct_attack_cnt <= 0
# Pose Change
@pattern = 3
# END Phase
@direct_attack_phase = 0
@battler.motion_stop = false
end
end
#
# ● Proximity Attack Execution [Attack Operation Return]
#
def diratk_attack
# Pose Change
@pattern = 1
# End Wait Count
@direct_attack_cnt = @direct_move_cnt
# NEXT Phase
@direct_attack_phase += 1
end
#
# ● Proximity Attack Execution [Move Operation (Return)]
#
def diratk_back
# The next movement location is figured out by the distance between
# current position and target position.
pos_x = @battler.screen_x - self.x
pos_y = @battler.screen_y - self.y
@battler_x_plus += pos_x / @direct_attack_cnt if @direct_attack_cnt != 0
@battler_y_plus += pos_y / @direct_attack_cnt if @direct_attack_cnt != 0
# End Count
@direct_attack_cnt -= 1
# Last Movement
if @direct_attack_cnt == 0
@battler_x_plus = 0
@battler_y_plus = 0
# NEXT Phase
@direct_attack_phase += 1
end
end
#
# ● Proximity attack execution [Operation End]
#
def diratk_end
init_direct_attack
@battler.motion_stop = false
# END Phase
@direct_attack_phase = 0
end
end
# ■ VX-RGSS2-6 サイドビュー戦闘[MotionExe] [Ver.1.0.1] by Claimh
#
# English Translation By: Elemental Crisis [ www.rpgcrisis.net ]
#
# This script executes movement controls of the actors.
#==============================================================================
module SideView
#
#
[Operation Setup]
# Operation Speed
MOTION_SPEED = 20
#
[Animation Setup]
# Usual enemy attack animation setup.
E_ANIME = {
# EnemyID => [Usually atttack and additional attack animations.]
1 => [1, 0]
}
#
#
# Motion Control Mode
M_MODE_WAIT = 0 # Standby
M_MODE_MAGI = 1 # Attack
M_MODE_DAMG = 2 # Non-Damage Attack
M_MODE_WIN = 3 # Victory
M_MODE_ATK1 = 4 # Direct Attack (Approaching)
M_MODE_ATK2 = 5 # Direct Attack (Attacking)
M_MODE_ATK3 = 6 # Direct Attack (Returning)
module_function
#
# ● Movement-Zone Calculation
#
def set_target_point(attacker, target)
case target
when Game_Actor
bits = Cache.character(target.character_name)
attacker.target_x = target.screen_x + (bits.width /

attacker.target_y = target.screen_y
when Game_Enemy
bits = Cache.battler(target.battler_name, target.battler_hue)
attacker.target_x = target.screen_x + (bits.width / 2)
attacker.target_y = target.screen_y
end
end
end
class Game_Battler
attr_accessor :move_mode # Operation Mode
# 0:Standby 1:Attack 2: Un-useless 3:Victory
attr_accessor :motion_stop # Operation Stop Flag (Under Movement Flag)
attr_accessor :target_x # Move Position(x)
attr_accessor :target_y # Move Position(y)
#
# ● Object Initialization
#
alias initialize_sdva_corpse initialize
def initialize
initialize_sdva_corpse
@move_mode = 0
@motion_stop = false
@target_x = 0
@target_y = 0
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#
# ● Attack Animation ID Acquisition
#
def atk_animation_id
return 0 if SideView::E_ANIME[@enemy_id].nil?
return SideView::E_ANIME[@enemy_id][0]
end
#
# ● Attack Animation ID Acquisition (2 Sword Style : 2 Weapons )
#
def atk_animation_id2
return 0 if SideView::E_ANIME[@enemy_id].nil?
return SideView::E_ANIME[@enemy_id][1]
end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
#
# ● Object Initialization
# Viewport : View Port
# Battler : Battler (Game_Battler)
#
alias initialize_sideview initialize
def initialize(viewport, battler = nil)
initialize_sideview(viewport, battler)
init_direct_attack
end
#
# ● Set Proximity Value For Attack
#
def init_direct_attack
@direct_attack_cnt = 0
@direct_attack_phase = 0
@direct_move_cnt = 0
@battler_x_plus = 0
@battler_y_plus = 0
@moving_mode = 0
@pattern = 0
@direction = 0
end
#
# ● Frame Renewal [Redefinition]
#
def update
super
if @battler == nil
self.bitmap = nil
else
@use_sprite = @battler.use_sprite?
if @use_sprite
self.x = @battler.screen_x + @battler_x_plus
self.y = @battler.screen_y + @battler_y_plus
self.z = @battler.screen_z
update_battler_bitmap
end
setup_new_effect
update_effect
end
end
#
# ● Bitmap Transfer Source Renewal
#
alias update_battler_bitmap_sideview update_battler_bitmap
def update_battler_bitmap
case @battler
when Game_Actor
if @battler.character_name != @battler_name or
@battler.character_index != @battler_hue
@battler_name = @battler.character_name
@battler_hue = @battler.character_index
draw_pre_character
draw_character
if (@battler.dead? or @battler.hidden)
self.opacity = 0
end
end
when Game_Enemy
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
draw_battler
if (@battler.dead? or @battler.hidden)
self.opacity = 0
end
end
end
motion_control
end
#
# ● Battler Drawing
#
def draw_battler
self.bitmap = Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 2
self.oy = @height
end
#
# ● Pre-Character Drawing [Common]
#
def draw_pre_character
self.bitmap = Cache.character(@battler_name)
sign = @battler_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
@width = bitmap.width / 3
@height = bitmap.height / 4
else
@width = bitmap.width / 12
@height = bitmap.height / 8
end
self.ox = @width / 2
self.oy = @height
end
#
# ● Character Drawing [Common]
#
def draw_character
index = @battler_hue
pattern = @pattern < 3 ? @pattern : 1
sx = (index % 4 * 3 + pattern) * @width
sy = (index / 4 * 4 + (@direction - 2) / 2) * @height
self.src_rect.set(sx, sy, @width, @height)
end
#
# ● Motion Control
#
def motion_control
# Memory Operation Mode
@moving_mode = @battler.move_mode
# Battler Drawing
case @battler
when Game_Actor # Actor
actor_motion_control
when Game_Enemy # Enemy
enemy_motion_control
end
end
#
# ● Motion Control (Actor)
#
def actor_motion_control
# Operation Change
case @moving_mode
when SideView::M_MODE_WAIT # Standby
init_direct_attack
@battler_x_plus = 0
@direction = 4
@pattern = 1
when SideView::M_MODE_MAGI # Attack
@battler_x_plus = -10
@direction = 4
@pattern = 3
when SideView::M_MODE_DAMG # Non-Damage Attack
@battler_x_plus = 10
@direction = 4
@pattern = 3
when SideView::M_MODE_WIN # Victory
@direction = 2
@pattern = 1
when SideView::M_MODE_ATK1 # Direct Attack (Approaching)
exe_moving_attack_start
@end_pos_x = @battler_x_plus
when SideView::M_MODE_ATK2 # Direct Attack (Attacking)
@battler_x_plus = @end_pos_x - 10
when SideView::M_MODE_ATK3 # Direct Attack (Returning)
exe_moving_attack_end
else
p "error:Sprite_Battler>> @moving_mode"
end
draw_character
end
#
# ● Motion Control (Enemy)
#
def enemy_motion_control
# Operation Change
case @moving_mode
when SideView::M_MODE_WAIT # Standby
init_direct_attack
when SideView::M_MODE_MAGI # Attack
@battler_x_plus = 10
when SideView::M_MODE_DAMG # Non-Damage Attack
@battler_x_plus = -10
@shake_flg = true
when SideView::M_MODE_ATK1 # Direct Attack (Approaching)
exe_moving_attack_start
@end_pos_x = @battler_x_plus
when SideView::M_MODE_ATK2 # Direct Attack (Attacking)
@battler_x_plus = @end_pos_x + 10
when SideView::M_MODE_ATK3 # Direct Attack (Returning)
exe_moving_attack_end
else
p "error:Sprite_Battler>> @moving_mode", @moving_mode
end
end
#
# ● Proximity Attack Execution Method
#
def exe_moving_attack_start
return unless @battler.motion_stop
case @direct_attack_phase
when 0 # Start Operation Preparation
diratk_start
when 1 # Move Operation (Going)
diratk_move
when 2 # After-Movement Wait
diratk_wait
end
end
def exe_moving_attack_end
case @direct_attack_phase
when 0 # Attack Operation
diratk_attack
when 1 # Move Operation (Return)
diratk_back
when 2 # Operation End
diratk_end
end
end
#
# ● Proximity Attack Execution [Start Operation Preparation]
#
def diratk_start
# Pose Change
@pattern = 1
# The number of frames needed is the distance between current position and
# target position.
pos_x = @battler.target_x - self.x
pos_y = @battler.target_y - self.y
# Caculation for ammount of frames needed.
@direct_move_cnt = @direct_attack_cnt = (pos_x.abs / SideView::MOTION_SPEED).round
# NEXT Phase
@direct_attack_phase += 1
end
#
# ● Proximity Attack Execution [Move Operation (Going)]
#
def diratk_move
case @battler
when Game_Actor
x_plus = @width
y_plus = -@height / 4
when Game_Enemy
x_plus = -@width - 10
y_plus = @height / 4
end
# The next movement location is figured out by the distance between
# current position and target position.
pos_x = @battler.target_x - self.x + x_plus
pos_y = @battler.target_y - self.y + y_plus
@battler_x_plus += pos_x / @direct_attack_cnt if @direct_attack_cnt != 0
@battler_y_plus += pos_y / @direct_attack_cnt if @direct_attack_cnt != 0
# End count
@direct_attack_cnt -= 1
# Last movement (Insurance: Last correction)
if @direct_attack_cnt <= 0
@battler_x_plus = @battler.target_x - @battler.screen_x + x_plus
@battler_y_plus = @battler.target_y - @battler.screen_y + y_plus
# NEXTフェーズ
@direct_attack_cnt = 5
@direct_attack_phase += 1
end
end
#
# ● Proximity Attack Execution [Attack Operation Return]
#
def diratk_wait
# End Count
@direct_attack_cnt -= 1
# Last Movement
if @direct_attack_cnt <= 0
# Pose Change
@pattern = 3
# END Phase
@direct_attack_phase = 0
@battler.motion_stop = false
end
end
#
# ● Proximity Attack Execution [Attack Operation Return]
#
def diratk_attack
# Pose Change
@pattern = 1
# End Wait Count
@direct_attack_cnt = @direct_move_cnt
# NEXT Phase
@direct_attack_phase += 1
end
#
# ● Proximity Attack Execution [Move Operation (Return)]
#
def diratk_back
# The next movement location is figured out by the distance between
# current position and target position.
pos_x = @battler.screen_x - self.x
pos_y = @battler.screen_y - self.y
@battler_x_plus += pos_x / @direct_attack_cnt if @direct_attack_cnt != 0
@battler_y_plus += pos_y / @direct_attack_cnt if @direct_attack_cnt != 0
# End Count
@direct_attack_cnt -= 1
# Last Movement
if @direct_attack_cnt == 0
@battler_x_plus = 0
@battler_y_plus = 0
# NEXT Phase
@direct_attack_phase += 1
end
end
#
# ● Proximity attack execution [Operation End]
#
def diratk_end
init_direct_attack
@battler.motion_stop = false
# END Phase
@direct_attack_phase = 0
end
end
ВНИМАНИЕ: Спойлер!
#==============================================================================
# ■ VX-RGSS2-6 サイドビュー戦闘[Formation] [Ver.1.0.1] by Claimh
#
# English Translation By: Elemental Crisis [ www.rpgcrisis.net ]
#
# Actor location [Formation]
# The same amount of damage will be given regardless of formation setup.
#==============================================================================
module Battle_Formation
#
# [Formation Setup]
# $game_system.battle_formation = Formation ID
# It�s possible to change the formation (Even an event script is possible).
FORM = {
# Formation ID => [[Member 1 x、y], [Member2 x, y],
# [Member 3 x, y], [Member 4 x, y]]
0 => 380,150], [400, 230], [460, 170], [480, 250
}
#
end
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
attr_accessor :battle_formation # Formation ID
#
# ● オブジェクト初期化
#
alias init_game_system initialize
def initialize
init_game_system
@battle_formation = 0 # Initial formation
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#
# ● Are sprites used? [Redefinition]
#
def use_sprite?
return true
end
#
# ● Battle Screen Acquiring X Coordinate
#
def screen_x
return Battle_Formation::FORM[$game_system.battle_formation][self.index][0]
end
#
# ● Battle Screen Acquiring Y Coordinate
#
def screen_y
return Battle_Formation::FORM[$game_system.battle_formation][self.index][1]
end
#
# ● Battle Screen Acquiring Z Coordinate
#
def screen_z
bitmap = Cache.character(self.character_name)
# Height + Y Coordinates
return screen_y + bitmap.height / 4
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#
# ● Battle Screen Acquiring Z Coordinate [Redefinition]
#
def screen_z
bitmap = Cache.battler(self.battler_name, self.battler_hue)
# Height + Y Coordinates
return screen_y + bitmap.height
end
end
# ■ VX-RGSS2-6 サイドビュー戦闘[Formation] [Ver.1.0.1] by Claimh
#
# English Translation By: Elemental Crisis [ www.rpgcrisis.net ]
#
# Actor location [Formation]
# The same amount of damage will be given regardless of formation setup.
#==============================================================================
module Battle_Formation
#
# [Formation Setup]
# $game_system.battle_formation = Formation ID
# It�s possible to change the formation (Even an event script is possible).
FORM = {
# Formation ID => [[Member 1 x、y], [Member2 x, y],
# [Member 3 x, y], [Member 4 x, y]]
0 => 380,150], [400, 230], [460, 170], [480, 250
}
#
end
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
attr_accessor :battle_formation # Formation ID
#
# ● オブジェクト初期化
#
alias init_game_system initialize
def initialize
init_game_system
@battle_formation = 0 # Initial formation
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#
# ● Are sprites used? [Redefinition]
#
def use_sprite?
return true
end
#
# ● Battle Screen Acquiring X Coordinate
#
def screen_x
return Battle_Formation::FORM[$game_system.battle_formation][self.index][0]
end
#
# ● Battle Screen Acquiring Y Coordinate
#
def screen_y
return Battle_Formation::FORM[$game_system.battle_formation][self.index][1]
end
#
# ● Battle Screen Acquiring Z Coordinate
#
def screen_z
bitmap = Cache.character(self.character_name)
# Height + Y Coordinates
return screen_y + bitmap.height / 4
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#
# ● Battle Screen Acquiring Z Coordinate [Redefinition]
#
def screen_z
bitmap = Cache.battler(self.battler_name, self.battler_hue)
# Height + Y Coordinates
return screen_y + bitmap.height
end
end
Спасибо сказали: idavollr
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
15 года 3 мес. назад #39411
от Human
Human ответил в теме Re: [VX] Посоветуйте боевую систему
Подскажите где взять боевую систему что бы выглядила как в CT и как в FF6 c такой-же скоростью и без возни в скриптах. (Ссылю если моня. Зарание благодарен).
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
15 года 3 мес. назад #39419
от Avatosius
Avatosius ответил в теме Re: [VX] Посоветуйте боевую систему
Ммм...
Без возни в скриптах я могу сказать только системы на основе стандартной и танкетай.
Остальные - с кастомизацией и вознёй.
А скрипт Хроно Триггера я видел только для ХРюши, и то замороченный.
Без возни в скриптах я могу сказать только системы на основе стандартной и танкетай.
Остальные - с кастомизацией и вознёй.
А скрипт Хроно Триггера я видел только для ХРюши, и то замороченный.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Pavlentus007
-
- Не в сети
- Завсегдатай
-
Скрыть
Больше
- Сообщений: 787
- Спасибо получено: 73
15 года 3 мес. назад #39426
от Pavlentus007
Я линивая свинья...
Я хороший мапер...Но конченый автор...
Я опять ленивая свинья....
Хочу курицу жаренную с пиццой О.О
Pavlentus007 ответил в теме Re: [VX] Посоветуйте боевую систему
Подскажите где взять боевую систему что бы выглядила как в CT и как в FF6 c такой-же скоростью и без возни в скриптах. (Ссылю если моня. Зарание благодарен).
без возьни боёвок мало...очень мало..
Не знаю что тебе придлажить но вот тут глянь для ВХ много боёвок.Что понравиться то выбири www.rpgmaker.su/showthread.php?t=684
без возьни боёвок мало...очень мало..
Не знаю что тебе придлажить но вот тут глянь для ВХ много боёвок.Что понравиться то выбири www.rpgmaker.su/showthread.php?t=684
Я линивая свинья...
Я хороший мапер...Но конченый автор...
Я опять ленивая свинья....
Хочу курицу жаренную с пиццой О.О
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
15 года 3 мес. назад #39429
от Avatosius
Avatosius ответил в теме Re: [VX] Посоветуйте боевую систему
Pavlentus, подобные ссылки на всем известный форум лишь в личку)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.108 секунд
