Bubbly
-
Posts
30 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by Bubbly
-
-
L'ho trovato
scusa se non l'ho tradotto ma andavo di fretta. E' di CrimsonSeasTargetting Extended for Tankentai v1.0
by CrimsonSeas
Introduction
This skill extends how targetting works in your game. Ever want to slash your teammate away or heal your enemies? Or do you want to be able to shift single targetting skills/items to target all? You can do both with this script. There are other scripts that do things like this but I haven't found any that combines both functions, so I made own version.
Features
v1.1
-Bugfixes(thanks to Aranarther and deggy for pointing out the bugs)
-New feature: Can divide damage among all targets when switching from single to multiple targets (thanks to dorky106's post for the idea)
-Better cursor animation for the ATB version.
v1.0
-Blow away your teammate or heal up your enemies! Press L/R to switch targets between enemy members or party members.
-Pressing shift while targetting will shift single targetting skills to target all.
-Defines which skill/item IDs both feature apply or not apply to.
-Cursors!! Have a cursor over every target when targetting multiple targets.
-Automatically switches area animation in the anime hash if it is set to target enemy area or party area.
How to Use
Place all necessary script below the Tankentai and ATB(if used) core scripts.
Base Script (neeeded for both ATB and non ATB):
=begin
================================================================================
Targetting Extended v 1.1
by CrimsonSeas
================================================================================
This is a script I made to extend targettting capabilities.
Features:
+Target any allies or enemies with any action. You can choose to blow your team
mate or heal your enemies by pressing L/R button at target selection.
+Press shift at target selection to change single target skills and items to
target all.
+Define which skills both feature apply or not apply to.
+Cursors!! Multiple cursors over all targets when targeting multiple targets
+Can also divide damage among all targets when switching from single to all target
================================================================================
Compatibility
================================================================================
I think there may be many issues around this. I'll list rewrites and aliases of
default and Tankentai scripts.
Rewrites:
+Game_Battler
-make_attack_targets
-make_obj_targets
+Sprite_Battler
-moving_anime
Aliases:
+Scene_Battle
-execute_action
+Game_Battler
-make_obj_damage_value
-calc_mp_cost
================================================================================
=
CONFIG
================================================================================
=end
module TargetExt
#Defines whether you can attack ally or not.
ATTACK_ANY = true
#Defines skill IDs that the 'Target Any' feature doesn't apply.
NO_TARGET_ANY_S = []
#Defines item IDs that the 'Target Any' feature doesn't apply/
NO_TARGET_ANY_I = [2]
#Defines skill IDs that the 'Target All' feature apply.
TARGET_ALL_S = [59, 63]
#Defines item IDs that the 'Target All'feature apply.
TARGET_ALL_I = [1]
#Defines damage percentage when changing target from single to all
DAMAGE_PERCENT = 66
#Defines MP percentage when changing target from single to all
MP_PERCENT = 150
#Defines vocabulary to be used when targetting multiple targets.
#Format is: [string1, [stringParty, StringEnemies]]
#Text shown on help window when targetting party:
# String1 StringParty
#Text shown on help wondow when targetting enemies:
# String1 StringEnemies
TARGET_ALL_VOC = ["Target All", ["Allies", "Enemies"]]
#Show MP cost when 'Target All' feature is being used
SHOW_MP_ALTER = true
#Divides damage among all targets when switching from single target to all target
DAMAGE_DIVIDE = true
end
class Game_Battler
def target_all
if @target_all == nil
@target_all = false
end
return @target_all
end
def inverse_target
if @inverse_target == nil
@inverse_target = false
end
return @inverse_target
end
def target_all=(target_all)
@target_all = target_all
end
def inverse_target=(inverse_target)
@inverse_target = inverse_target
end
end
module RPG
class Skill
def all_available
return TargetExt::TARGET_ALL_S.include?(@id)
end
end
class Item
def all_available
return TargetExt::TARGET_ALL_I.include?(@id)
end
end
class UsableItem
def need_selection?
return !(@scope == 11 || @scope == 0)
end
end
end
class Scene_Battle
alias crmsn_end_target end_target_selection
def end_target_selection(*args)
if @cursor2 != nil
dispose_cursor_all
end
crmsn_end_target(*args)
end
def cursor_all_visible(value)
for cursor in @cursor2
cursor.visible = value
end
end
def dispose_cursor_all
return if @cursor2 == nil
for cursor in @cursor2
cursor.dispose
cursor = nil
end
@cursor2 = nil
end
alias targetext_execute_action execute_action
def execute_action
targetext_execute_action
@active_battler.target_all = false
@active_battler.inverse_target = false
end
end
class Game_BattleAction
def make_attack_targets
targets = []
if battler.confusion?
targets.push(friends_unit.random_target)
elsif battler.berserker?
targets.push(opponents_unit.random_target)
else
targets.push(opponents_unit.smooth_target(@target_index)) unless battler.inverse_target
targets.push(friends_unit.smooth_target(@target_index)) if battler.inverse_target
end
if battler.dual_attack # Chain attack
targets += targets
end
return targets.compact
end
#--------------------------------------------------------------------------
# * Create Skill or Item Targets
# obj : Skill or item
#--------------------------------------------------------------------------
def make_obj_targets(obj)
targets = []
if obj.for_opponent?
if obj.for_random?
if obj.for_one? # One random enemy
number_of_targets = 1
elsif obj.for_two? # Two random enemies
number_of_targets = 2
else # Three random enemies
number_of_targets = 3
end
number_of_targets.times do
targets.push(opponents_unit.random_target) unless battler.inverse_target
targets.push(friends_unit.random_target) if battler.inverse_target
end
elsif obj.dual? # One enemy, dual
targets.push(opponents_unit.smooth_target(@target_index)) unless battler.inverse_target
targets.push(friends_unit.smooth_target(@target_index)) if battler.inverse_target
targets += targets
elsif obj.for_one?
if obj.all_available && battler.target_all
targets += opponents_unit.existing_members unless battler.inverse_target
targets += friends_unit.existing_members if battler.inverse_target
else
targets.push(opponents_unit.smooth_target(@target_index)) unless battler.inverse_target
targets.push(friends_unit.smooth_target(@target_index)) if battler.inverse_target
end
else # All enemies
targets += opponents_unit.existing_members unless battler.inverse_target
targets += friends_unit.existing_members if battler.inverse_target
end
elsif obj.for_user? # User
targets.push(battler)
elsif obj.for_dead_friend?
if obj.for_one? # One ally (incapacitated)
targets.push(friends_unit.smooth_dead_target(@target_index)) unless battler.inverse_target
targets.push(opponents_unit.smooth_target(@target_index)) if battler.inverse_target
else # All allies (incapacitated)
targets += friends_unit.dead_members unless battler.inverse_target
targets += opponents_unit.existing_members if battler.inverse_target
end
elsif obj.for_friend?
if obj.for_one? # One ally
if obj.all_available && battler.target_all
targets += friends_unit.existing_members unless battler.inverse_target
targets += opponents_unit.existing_members if battler.inverse_target
else
targets.push(friends_unit.smooth_target(@target_index)) unless battler.inverse_target
targets.push(opponents_unit.smooth_target(@target_index)) if battler.inverse_target
end
else # All allies
targets += friends_unit.existing_members unless battler.inverse_target
targets += opponents_unit.existing_members if battler.inverse_target
end
end
return targets.compact
end
end
class Sprite_Battler
def moving_anime
# まだ�‰�の�‚��ƒ‹�ƒ��›ば�—�Œ�‹って�„�‚‹な�‚‰�ˆ��œŸ�Œ–
@move_anime.action_reset if @anime_moving
@anime_moving = true
# �ƒ��ƒƒ�‚��‚��‚��ƒƒ�‚�中は�‚��ƒ‹�ƒ��€�武�™��”��ƒ�反転
mirror = false
mirror = true if $back_attack
# �‚��ƒ‹�ƒ�ID
id = @active_action[1]
# 対象
target = @active_action[2]
x = y = mem = 0
# 対象�Œ�˜�“の場�ˆ
if target == 0
# �‚��ƒ��‚��ƒƒ�ƒˆ�Œ決まってな�„場�ˆ�€��‡�身に�‰�›
if @target_battler == nil
x = self.x
y = self.y
else
# �‚��ƒ��‚��ƒƒ�ƒˆ�Œ空の場�ˆ�€��‡�身に�‰�›
if @target_battler[0] == nil
x = self.x
y = self.y
else
# �œ€�ˆ�に�…�って�„�‚‹�‚��ƒ��‚��ƒƒ�ƒˆに対象決�š
x = @target_battler[0].position_x
y = @target_battler[0].position_y
end
end
# 対象�Œ�•�の中�ƒの場�ˆ
elsif target == 1
# �‡�身�Œ�‚��‚��‚��ƒ�の場�ˆは�‚��ƒ��ƒŸ�ƒ�の中�ƒ�‚’�ˆ�—
if (@battler.is_a?(Game_Actor) && !@battler.inverse_target)
for target in $game_troop.members
bitmap = Cache.battler(target.battler_name, target.battler_hue)
ox = bitmap.width/2
oy = bitmap.height/2
x += target.position_x + ox
y += target.position_y + oy
mem += 1
end
x /= mem
y /= mem
# �‡�身�Œ�‚��ƒ��ƒŸ�ƒ�の場�ˆは�‚��‚��‚��ƒ�の中�ƒ�‚’�ˆ�—
else
for target in $game_party.members
ox = 16
oy = 16
x += target.position_x + ox
y += target.position_y + oy
mem += 1
end
x /= mem
y /= mem
end
# 対象�Œ�‘��–�の中�ƒの場�ˆ
elsif target == 2
# �‡�身�Œ�‚��‚��‚��ƒ�の場�ˆは�‚��‚��‚��ƒ�の中�ƒ�‚’�ˆ�—
if @battler.is_a?(Game_Actor)
for target in $game_party.members
x += target.position_x
y += target.position_y
mem += 1
end
x = x / mem
y = y / mem
# �‡�身�Œ�‚��ƒ��ƒŸ�ƒ�の場�ˆは�‚��ƒ��ƒŸ�ƒ�の中�ƒ�‚’�ˆ�—
else
for target in $game_troop.members
x += target.position_x
y += target.position_y
mem += 1
end
x = x / mem
y = y / mem
end
# 対象�Œ�‡�身の場�ˆ
else
x = self.x
y = self.y
end
# �–‹�‹位置の微調�•�
plus_x = @active_action[6]
plus_y = @active_action[7]
# �‚��ƒ��ƒŸ�ƒ�はX軸�‚’�€†に
plus_x *= -1 if @battler.is_a?(Game_Enemy)
# �œ€�‚�š„な移�‹•距�›��‚’�—�‡�
distanse_x = x - self.x - plus_x
distanse_y = y - self.y - plus_y
# �›ば�—�‚��‚��ƒ—
type = @active_action[3]
# �€Ÿ度
speed = @active_action[4]
# �Œ�“
orbit = @active_action[5]
# �‡�身�Œ�–‹�‹位置な�‚‰
if @active_action[8] == 0
@move_anime.base_x = self.x + plus_x
@move_anime.base_y = self.y + plus_y
# 対象�Œ�–‹�‹位置な�‚‰
elsif @active_action[8] == 1
@move_anime.base_x = x + plus_x
@move_anime.base_y = y + plus_y
# 距�›��‚’反対に
distanse_y = distanse_y * -1
distanse_x = distanse_x * -1
# �‹•�‹�•な�„な�‚‰
else
@move_anime.base_x = x
@move_anime.base_y = y
distanse_x = distanse_y = 0
end
# 武�™��‚��‚��‚��ƒ��ƒ�な�—は武�™�表示�—な�„
if @active_action[10] == ""
weapon = ""
# �‚��ƒ‹�ƒ�な�—�‚��ƒ��ƒŸ�ƒ�は武�™�表示�—な�„
elsif @anime_flug != true
weapon = ""
# 武�™��‚��‚��‚��ƒ��ƒ��Œ�‚�‚‹場�ˆ
else
# �›ば�™武�™��‚��ƒ��ƒ•�‚��ƒƒ�‚��Œ�Œ‡�š�•�‚Œて�„�‚‹�‹�ƒ��‚��ƒƒ�‚�
if @battler.is_a?(Game_Actor)
battler = $game_party.members[@battler.index]
weapon_id = battler.weapon_id
else
battler = $game_troop.members[@battler.index]
weapon_id = battler.weapon
end
# �‚��‚��ƒ��”��ƒ��ˆ��”��‹武�™��”��ƒ��ˆ��”��‹�ˆ��ˆ�
weapon_act = N01::ANIME[@active_action[10]].dup if @active_action[10] != ""
# 武�™��”��ƒ��ˆ��”�で素�‰‹でな�‘�‚Œば
if weapon_id != 0 && weapon_act.size == 3
weapon_file = $data_weapons[weapon_id].flying_graphic
# �ˆ��”��ƒ��Œ�Œ‡�š�•�‚Œて�„な�‘�‚Œば�—��˜の武�™��‚��ƒ��ƒ•�‚��ƒƒ�‚��‚’�–�—
if weapon_file == ""
weapon_name = $data_weapons[weapon_id].graphic
icon_weapon = false
# �•�‚‰に�Œ‡�š�Œな�‘�‚Œば�‚��‚��‚��ƒ��‚��ƒ��ƒ•�‚��ƒƒ�‚��‚’�ˆ��”�
if weapon_name == ""
weapon_name = $data_weapons[weapon_id].icon_index
icon_weapon = true
end
# �Œ‡�š�•�‚Œて�„�‚Œばその�‚��ƒ��ƒ•�‚��ƒƒ�‚�名�‚’�–�—
else
icon_weapon = false
weapon_name = weapon_file
end
# 武�™��‚��‚��‚��ƒ��ƒ��ƒ…報�‚’�–�—
weapon = @active_action[10]
# 武�™��”��ƒ��ˆ��”�で素�‰‹な�‚‰表示�—な�„
elsif weapon_act.size == 3
weapon = ""
# �‚��‚��ƒ��”��ƒ��ˆ��”�
elsif weapon_act != nil && @battler.action.skill != nil
icon_weapon = false
weapon_name = $data_skills[@battler.action.skill.id].flying_graphic
weapon = @active_action[10]
end
end
# Z座�™�‚’決�š
@move_anime.z = 1
@move_anime.z = 1000 if @active_action[9]
# 以�Šの�ƒ…報�‚’�…�て�‚��ƒ‹�ƒ��›ば�—�‚��ƒ—�ƒ��‚��ƒˆに�€��‚‹
@move_anime.anime_action(id,mirror,distanse_x,distanse_y,type,speed,orbit,weapon
,weapon_name,icon_weapon)
end
end
class Game_Battler
alias targetext_make_obj_dmg make_obj_damage_value
def make_obj_damage_value(user, obj)
targetext_make_obj_dmg(user, obj)
if user.target_all && obj.all_available
if @hp_damage != 0
@hp_damage *= TargetExt::DAMAGE_PERCENT
@hp_damage /= 100
@hp_damage /= user.action.make_targets.size if TargetExt::DAMAGE_DIVIDE && user.target_all
end
if @mp_damage != 0
@mp_damage *= TargetExt::DAMAGE_PERCENT
@mp_damage /= 100
@mp_damage /= user.make_targets.size if TargetExt::DAMAGE_DIVIDE && user.target_all
end
end
end
alias targetext_calc_mp_cost calc_mp_cost
def calc_mp_cost(skill)
cost = targetext_calc_mp_cost(skill)
if self.target_all && skill.all_available
cost *= TargetExt::MP_PERCENT
cost /= 100
end
return cost
end
end
For Non ATB:
=begin
################################################################################
Targetting Extended for Tankentai Non-ATB v1.1
by CrimsonSeas
################################################################################
Use with the base script to enable the targetting extended.
This script adds to the rewrites list of the base script
Rewrites:
+Scene_Battle
-start_target_selection
-select_member
################################################################################
=end
class Scene_Battle
def start_target_selection(actor = false)
members = $game_party.members if actor
members = $game_troop.members unless actor
if @active_battler.action.kind == 1
obj = @active_battler.action.skill
elsif @active_battler.action.kind == 2
obj = @active_battler.action.item
end
case obj
when nil
@target_any = TargetExt::ATTACK_ANY
when RPG::Skill
@target_any = !TargetExt::NO_TARGET_ANY_S.include?(@active_battler.action.skill.id)
when RPG::Item
@target_any = !TargetExt::NO_TARGET_ANY_I.include?(@active_battler.action.item.id)
end
if obj != nil && obj.extension.include?("TARGETALL")
members = $game_party.members + $game_troop.members
end
# �‚��ƒ��‚��ƒ��‚��ƒ—�ƒ��‚��ƒˆの�œ�ˆ�
@cursor = Sprite.new
@cursor.bitmap = Cache.character("cursor")
@cursor.src_rect.set(0, 0, 32, 32)
@cursor_flame = 0
@cursor.x = -200
@cursor.y = -200
@cursor.ox = @cursor.width
@cursor.oy = @cursor.height
@all = false
@all = [2, 4, 5, 6, 8, 10].include?(obj.scope) || obj.extension.include?("TARGETALL") if obj != nil
@cursor.visible = !@all
# �‚��ƒ��‚��ƒƒ�ƒˆ名�‚’表示�™�‚‹�ƒ˜�ƒ��ƒ—�‚��‚��ƒ��ƒ‰�‚��‚’�œ�ˆ�
@help_window.visible = false if @help_window != nil
@help_window2 = Window_Help.new if @help_window2 == nil
# 不要な�‚��‚��ƒ��ƒ‰�‚��‚’�ˆ�™
@actor_command_window.active = false
@skill_window.visible = false if @skill_window != nil
@item_window.visible = false if @item_window != nil
# �˜�œ��—て�„�‚‹�‚��ƒ��‚��ƒƒ�ƒˆで�œ€�‚‚�•�号の�Ž�„対象�‚’�œ€�ˆ�に�Œ‡�™�‚ˆ�†に
@index = 0
@max_index = members.size - 1
# �‚��‚��‚��ƒ�は�ˆ��—˜不�ƒ��€…で�‚‚�‚��ƒ��‚��ƒƒ�ƒˆでき�‚‹�‚ˆ�†に�‚��ƒ��ƒŸ�ƒ�と�Œ��ˆ�
unless actor
members.size.times do
break if members[@index].exist?
@index += 1
end
end
@help_window2.set_text(members[@index].name, 1)
if @all
string1 = TargetExt::TARGET_ALL_VOC[0]
string2 = actor ? TargetExt::TARGET_ALL_VOC[1][0] : TargetExt::TARGET_ALL_VOC[1][1]
string1 += " " + string2 unless obj.extension.include?("TARGETALL")
@help_window2.set_text(string1, 1)
make_cursor_all(members)
end
select_member(members, actor)
end
#--------------------------------------------------------------------------
# �—� �‚��ƒ��‚��ƒƒ�ƒˆ選�Šž
#--------------------------------------------------------------------------
def select_member(targets, actor = true)
members = targets
if @active_battler.action.kind == 1
obj = @active_battler.action.skill
elsif @active_battler.action.kind == 2
obj = @active_battler.action.item
end
loop do
update_basic
@cursor_flame = 0 if @cursor_flame == 30
@cursor.src_rect.set(0, 0, 32, 32) if @cursor_flame == 29
@cursor.src_rect.set(0, 32, 32, 32) if @cursor_flame == 15
point = @spriteset.set_cursor(actor, @index)
@cursor.x = point[0]
@cursor.y = point[1]
@cursor_flame += 1
if Input.trigger?(Input::B)
Sound.play_cancel
end_target_selection
break
elsif Input.trigger?(Input::C)
Sound.play_decision
@active_battler.action.target_index = @index
end_target_selection
end_skill_selection
end_item_selection
next_actor
break
end
if Input.repeat?(Input::LEFT) && !(@all || @active_battler.target_all)
if actor
cursor_down(members, actor) if $back_attack
cursor_up(members, actor) unless $back_attack
else
cursor_up(members, actor) if $back_attack
cursor_down(members, actor) unless $back_attack
end
end
if Input.repeat?(Input::RIGHT) && !(@all || @active_battler.target_all)
if actor
cursor_up(members, actor) if $back_attack
cursor_down(members, actor) unless $back_attack
else
cursor_down(members, actor) if $back_attack
cursor_up(members, actor) unless $back_attack
end
end
if (Input.trigger?(Input::L) || Input.trigger?(Input::R)) && @target_any
if members == $game_party.members
members = $game_troop.members
actor = false
elsif members == $game_troop.members
members = $game_party.members
actor = true
end
if @active_battler.inverse_target
@active_battler.inverse_target = false
else
@active_battler.inverse_target = true
end
@index = 0 if @index >= members.size
@max_index = members.size - 1
# �‚��‚��‚��ƒ�は�ˆ��—˜不�ƒ��€…で�‚‚�‚��ƒ��‚��ƒƒ�ƒˆでき�‚‹�‚ˆ�†に�‚��ƒ��ƒŸ�ƒ�と�Œ��ˆ�
unless actor
members.size.times do
break if members[@index].exist?
@index += 1
end
end
if @cursor != nil
dispose_cursor_all
make_cursor_all(members)
cursor_all_visible(@active_battler.target_all || @all)
end
if @active_battler.target_all || @all
string1 = TargetExt::TARGET_ALL_VOC[0]
string2 = actor ? TargetExt::TARGET_ALL_VOC[1][0] : TargetExt::TARGET_ALL_VOC[1][1]
string1 += " " + string2 unless obj.extension.include?("TARGETALL")
if TargetExt::SHOW_MP_ALTER && @active_battler.target_all && obj.is_a?(RPG::Skill)
cost = @active_battler.calc_mp_cost(obj)
string1 += ": " + cost.to_s + Vocab::mp
end
@help_window2.set_text(string1, 1)
end
@help_window2.set_text(members[@index].name, 1) if !@active_battler.target_all && !@all
Sound.play_cursor
end
if Input.trigger?(Input::A) && !@all && obj != nil
if obj.all_available
Sound.play_cursor
if @active_battler.target_all
@active_battler.target_all = false
@cursor.visible = true
cursor_all_visible(false) if @cursor2 != nil
@help_window2.set_text(members[@index].name, 1)
else
@active_battler.target_all = true
@cursor.visible = false
make_cursor_all(members) if @cursor2 == nil
cursor_all_visible(true)
string1 = TargetExt::TARGET_ALL_VOC[0]
string2 = actor ? TargetExt::TARGET_ALL_VOC[1][0] : TargetExt::TARGET_ALL_VOC[1][1]
string1 += " " + string2 unless obj.extension.include?("TARGETALL")
if TargetExt::SHOW_MP_ALTER && @active_battler.target_all && obj.is_a?(RPG::Skill)
cost = @active_battler.calc_mp_cost(obj)
string1 += ": " + cost.to_s + Vocab::mp
end
@help_window2.set_text(string1 , 1)
end
end
end
cursor_up(members, actor) if Input.repeat?(Input::UP) && !(@all || @active_battler.target_all)
cursor_down(members, actor) if Input.repeat?(Input::DOWN) && !(@all || @active_battler.target_all)
end
end
def make_cursor_all(members)
@cursor2 = []
for i in 0...members.size
next if members == $game_troop.members && !members.exist?
@cursor2 = Sprite.new
@cursor2.bitmap = Cache.character("cursor")
@cursor2.src_rect.set(0, 0, 32, 32)
@cursor2.x = members.position_x - 48
@cursor2.y = members.position_y - 48
end
@cursor2.compact!
end
end
For ATB:
=begin
################################################################################
Targetting Extended for Tankentai ATB v1.1
by CrimsonSeas
###############################################################################
Use this with the base script to enable Targetting Extended
This Tankentai ATB adds to the rewrites list of the base script
Rewrites:
+Scene_Battle
-start_target_actor_selection
-update_target
+Window_Help
-set_text_n02add
################################################################################
=end
class Scene_Battle
def start_target_selection(actor = false)
$in_target = true
$in_command = $in_select = false
if @commander.action.kind == 1
obj = @commander.action.skill
elsif @commander.action.kind == 2
obj = @commander.action.item
end
case obj
when nil
@target_any = TargetExt::ATTACK_ANY
when RPG::Skill
@target_any = !TargetExt::NO_TARGET_ANY_S.include?(@commander.action.skill.id)
when RPG::Item
@target_any = !TargetExt::NO_TARGET_ANY_I.include?(@commander.action.item.id)
end
@all = false
@all = [2, 4, 5, 6, 8, 10].include?(obj.scope) || obj.extension.include?("TARGETALL") if obj != nil
@target_actors = actor
@target_members = $game_party.members if @target_actors && !obj.extension.include?("TARGETALL")
@target_members = $game_troop.members unless @target_actors && ! obj.extension.include?("TARGETALL")
@target_members = $game_troop.members + $game_party.members if obj != nil && obj.extension.include?("TARGETALL")
# 不要な�‚��‚��ƒ��ƒ‰�‚��‚’�ˆ�™
@actor_command_window.active = false
@skill_window.visible = false if @skill_window != nil
@item_window.visible = false if @item_window != nil
# �˜�œ��—て�„�‚‹�‚��ƒ��‚��ƒƒ�ƒˆで�œ€�‚‚�•�号の�Ž�„対象�‚’�œ€�ˆ�に�Œ‡�™�‚ˆ�†に
@index = 0
@max_index = @target_members.size - 1
# �‚��‚��‚��ƒ�は�ˆ��—˜不�ƒ��€…で�‚‚�‚��ƒ��‚��ƒƒ�ƒˆでき�‚‹�‚ˆ�†に�‚��ƒ��ƒŸ�ƒ�と�Œ��ˆ�
unless @target_actors
@target_members.size.times do
break if @target_members[@index].exist?
@index += 1
end
end
# �‚��ƒ��‚��ƒ��‚��ƒƒ�ƒˆ
@cursor.visible = true unless @all
@cursor.visible = false if @all
if @all
make_cursor_all
end
@cursor.set(@target_members[@index]) unless @all
@help_window.visible = false if @help_window != nil
@help_window2 = Window_Help.new if @help_window2 == nil
@help_window2.set_text_n02add(@target_members[@index]) unless @all
if @all
string1 = TargetExt::TARGET_ALL_VOC[0]
string2 = actor ? TargetExt::TARGET_ALL_VOC[1][0] : TargetExt::TARGET_ALL_VOC[1][1]
string1 += " " + string2 unless obj.extension.include?("TARGETALL")
@help_window2.set_text(string1, 1)
end
end
def update_target
# �‚��ƒž�ƒ��ƒ‰�…��Š›でき�‚‹�Š��…‹でなくな�‚Œば�‚��ƒ��ƒ��‚��ƒ�
if @cursor2 != nil
if !@target_actors && (@all || @commander.target_all) && @cursor2.size != $game_troop.existing_members.size
dispose_cursor_all
make_cursor_all
end
for cursor in @cursor2
cursor.update if cursor.visible
end
end
return reset_command unless commanding?
return end_target_selection(cansel = true) if $game_troop.all_dead?
if @index >= @target_members.size
@index = 0
end
cursor_down if !@target_members[@index].actor? && !@target_members[@index].exist? && !@commander.target_all && !@all
if Input.trigger?(Input::B)
Input.update
@commander.target_all = false
@commander.inverse_target = false
Sound.play_cancel
end_target_selection(cansel = true)
dispose_cursor_all if @cursor2 != nil
elsif Input.trigger?(Input::C)
Input.update
Sound.play_decision
@commander.action.target_index = @index unless @commander.target_all || @all
end_target_selection
end_skill_selection
end_item_selection
@actor_command_window.active = false
dispose_cursor_all if @cursor2 != nil
next_actor
end
if Input.repeat?(Input::LEFT) && !@commander.target_all && !@all
if @target_actors
cursor_down if $back_attack
cursor_up unless $back_attack
else
cursor_up if $back_attack
cursor_down unless $back_attack
end
end
if Input.repeat?(Input::RIGHT) && !@commander.target_all && !@all
if @target_actors
cursor_up if $back_attack
cursor_down unless $back_attack
else
cursor_down if $back_attack
cursor_up unless $back_attack
end
end
if @commander != nil && @commander.action.kind == 1
obj = @commander.action.skill
elsif @commader != nil && @commander.action.kind == 2
obj = @commander.action.item
end
if Input.trigger?(Input::A) && !@all && obj != nil
if obj.all_available
Sound.play_cursor
if @commander.target_all
@commander.target_all = false
@cursor.visible = true
dispose_cursor_all if @cursor2 != nil
@help_window2.set_text_n02add(@target_members[@index])
else
@commander.target_all = true
@cursor.visible = false
make_cursor_all if @cursor2 == nil
cursor_all_visible(true)
string1 = TargetExt::TARGET_ALL_VOC[0]
string2 = @target_actors ? TargetExt::TARGET_ALL_VOC[1][0] : TargetExt::TARGET_ALL_VOC[1][1]
string1 += " " + string2 unless obj.extension.include?("TARGETALL")
if TargetExt::SHOW_MP_ALTER && @commander.target_all && obj.is_a?(RPG::Skill)
cost = @commander.calc_mp_cost(obj)
string1 += ": " + cost.to_s + Vocab::mp
end
@help_window2.set_text(string1 , 1)
end
end
end
if (Input.trigger?(Input::L) || Input.trigger?(Input::R)) && @target_any
if @target_actors
@target_actors = false
@target_members = $game_troop.members
else
@target_actors = true
@target_members = $game_party.members
end
@index = 0 if @index >= @target_members.size
unless @target_actors
@target_members.size.times do
break if @target_members[@index].exist?
@index += 1
end
end
if @commander.inverse_target
@commander.inverse_target = false
else
@commander.inverse_target = true
end
if @cursor2 != nil
dispose_cursor_all
make_cursor_all
cursor_all_visible(!@cursor.visible)
end
if @commander.target_all || @all
string1 = TargetExt::TARGET_ALL_VOC[0]
string2 = @target_actors ? TargetExt::TARGET_ALL_VOC[1][0] : TargetExt::TARGET_ALL_VOC[1][1]
strings = string1 + " " + string2
if TargetExt::SHOW_MP_ALTER && @commander.target_all && obj.is_a?(RPG::Skill)
cost = @commander.calc_mp_cost(obj)
strings += ": " + cost.to_s + Vocab::mp
end
@help_window2.set_text(strings , 1)
end
@cursor.set_battler_start(@target_members[@index]) if @cursor.visible
@cursor.set(@target_members[@index])
@cursor.visible = !@all && !@commander.target_all
@help_window2.set_text_n02add(@target_members[@index]) if !@commander.target_all && !@all
end
cursor_up if Input.repeat?(Input::UP) && !@commander.target_all && !@all
cursor_down if Input.repeat?(Input::DOWN) && !@commander.target_all && !@all
end
def make_cursor_all
@cursor2 = []
for i in 0...@target_members.size
next if @target_members == $game_troop.members && !@target_members[i].exist?
@cursor2[i] = Sprite_Cursor.new
@cursor2[i].set_area(@target_members == $game_party.members)
@cursor2[i].set(@target_members[i])
end
@cursor2.compact!
end
end
class Window_Help < Window_Base
#--------------------------------------------------------------------------
# �—� �ƒ†�‚��‚��ƒˆ設�š
#--------------------------------------------------------------------------
def set_text_n02add(member)
return if member == nil
self.contents.clear
self.contents.font.color = normal_color
if !member.actor? && N02::ENEMY_NON_DISPLAY.include?(member.enemy_id)
return self.contents.draw_text(4, 0, self.width - 40, WLH, member.name, 1)
elsif member.actor? && !N02::ACTOR_DISPLAY
return self.contents.draw_text(4, 0, self.width - 40, WLH, member.name, 1)
end
if N02::WORD_STATE_DISPLAY && N02::HP_DISPLAY
self.contents.draw_text(0, 0, 180, WLH, member.name, 1)
draw_actor_hp(member, 182, 0, 120)
text = "["
for state in member.states
next if N02::STATE_NON_DISPLAY.include?(state.id)
text += " " if text != "["
text += state.name
end
text += N02::WORD_NORMAL_STATE if text == "["
text += "]"
text = "" if text == "[]"
self.contents.draw_text(315, 0, 195, WLH, text, 0)
elsif N02::WORD_STATE_DISPLAY
text = member.name + " ["
for state in member.states
next if N02::STATE_NON_DISPLAY.include?(state.id)
text += " " if text != member.name + " ["
text += state.name
end
text += N02::WORD_NORMAL_STATE if text == member.name + " ["
text += "]"
text = "" if text == "[]"
self.contents.draw_text(4, 0, self.width - 40, WLH, text, 1)
elsif N02::HP_DISPLAY
self.contents.draw_text(4, 0, 240, WLH, member.name, 1)
draw_actor_hp(member, 262, 0, 120)
end
@text = text
end
end
class Sprite_Cursor
def set_area(actor = true)
temp_x = 0
temp_y = 0
n = 0
unit = $game_party.existing_members if actor
unit = $game_troop.existing_members unless actor
for battler in unit
temp_x += battler.position_x
temp_y += battler.position_y
n += 1
end
self.x = temp_x / n
self.y = temp_y /n
end
def set_battler_start(battler)
self.x = battler.position_x
self.y = battler.position_y
end
end
Further instructions are in the base script's header
[u][b][size=3]FAQ[/size][/b][/u]
Q: Can you make this for other battle systems?
A: No. It's too much of hassle, and I've wasted 2.5 hours only to make the non ATB version, so don't expect me to make this for other battle systems. For the default battle system I recommend yuuto's battle scope changer found on this forums also (don't ask me the link, use the search function), although it doesn't have 'Target Any' feature, it still has a good 'Target All' feature.
Q: I get error(s)
A: Post what error that you got here, and please look in the rewrite and alias lists in my scripts header to determine what other scripts might be conflicting. This will help a lot for me to make the fixes.
Q: Please give screenshots/demo!
A: Screenshots can't really show it very well, and I'm not in the mood to make demos, so you can just try it out firsthand,
Q: I saw other scripts like this already.
A: Then pick one that you like best.
[u][b][size=3]Credit and Thanks[/size][/b][/u]
CrimsonSeas
-
Troppo bella quella di wailord... povero pikachu :|
-
Grazie infinite, si li prende :smile:
Ti aggiungo anche tra i crediti

-
@idru: Quelli di RPG Maker sono background da usare come parallaxes e se ridimensionati non vengono bene, quelli che richiedo io servono per un altro scopo :rovatfl:
@Impaled Janus: Bellissima la foresta
, veramente perfetta per quello che avevo intenzione di fare io! Grazie, se ne trovi altri non esitare a postarli 
-
Ciao a tutti, avrei bisogno di alcune risorse e spero di essere limpido come l'acqua.
Allora, mi servirebbero delle Immagini Background, di dimensioni 544x416. Raffiguranti:
- Un villaggio Grazie Impaled Janus
- Una città Grazie Impaled Janus
- Una foresta Grazie Impaled Janus
- Una grotta
Potrei anche richederne altre in futuro. Grazie mille per il vostro aiuto

-
-
Ho cercato su web una battaglia laterale ed ho trovato questo script niente male. Per evitare inconvenienti vi riporto l'intero post tradotto in italiano.
Reedo's Simple Side Battle System (RSSBS)
Versione 1.0
07 Gennaio 2010
By Reedo
Riferimenti
Nessuno. Questo è uno script originale da Reedo.
Descrizione
Nell'insieme di tutti i SBS presenti nel web, molti di essi presentano grandi quantità di configurazioni da settare, e sono spesso incompatibili con molti script.
Tuttavia, per avere quella sensazione "Final Fantasy", il SBS non deve essere complesso. E deve essere scritto in una maniera compatibile con la maggior parte degli script.
Questo script è appunto un tentativo di quello spiegato prima; creare un SBS Metti-e-Gioca, altamente compatibile, con sistema di battaglia al 100% laterale.
Questo script ha subito una marea di test ed è ancora leggermente imperfetto. Il topic originale di supporto lo potete trovare qui:
http://www.rpgmakervx.net/index.php?showtopic=24587
Per favore leggete qui prima di commentare lo script, e postate anche le incompatibilità con altri script.
Io pianifico anche di condividere vari pacchi di espansioni per il SBS. Essi saranno script opzionali per migliorare l'esperienza della visuale laterale. Controllate gli aggiornamenti, in quanto ci saranno molte espansioni da aggiungere.
Features
Questo script aggiunge alla battaglia un tocco di Final Fantasy.
Ecco varie funzioni inserite nello script:
- Disegna gli eroi nella parte a destra dello schermo, rivolti a sinistra.
- Obbliga gli eroi a fare stepping quando non hanno condizioni sfavorevoli.
- Crea l'ombra dell'eroe.
- Provvede animazioni per qualsiasi obiettivo, anche per gli eroi.
- Mette in formazione gli eroi, dando loro una certa distanza e spostandoli avanti o indietro in base all'impostazione nella classe.
- Obbliga gli eroi a fare un passo avanti per ogni azione.
- Disegna gli eroi sdraiati e semitrasparenti quando muoiono.
- Gli eroi rimasti invita ballano alla vittoria.
- Provvede facoltativamente di capovolgere i battle avversari.
Screen Shots
Ci sono screenshot solo del SBS.
Inizia la battagla!
http://etv6la.blu.livefilestore.com/y1pe1nLCvZotjS6J8NR1yYD_H0GwcoBiHTi6Bqrq68a6BbJuFV1hp4mJYNe4eDP4qCP1KNSzjlhyvqfUteJh8Gfbk9hPnXthtv_/sbs1.jpg
Un eroe attacca un nemico.
http://etv6la.blu.livefilestore.com/y1pk1PQqQaxzzh03CXWGDUMq1dmxkCamJFsA_HEbnn87rRhhToPOmurlynLHIzkyHh2gzO5M56LW3COQfp7XIsJxEUXLE4hd95o/sbs2.jpg
Gli eroi vincono, festeggiando con la "danza gira e salta".
http://etv6la.blu.livefilestore.com/y1pvCoox50EH4zHg04KFXg1atOh1e3pYLk1MRTU12Jzzml0SCYtGX0AOmRTU7HrfoTmbt-meSZTLdBIk2kX3_s39UqMdjJFA05m/sbs3.jpg
Bugs
Nessuno
Per favore segnalateli nel topic apposito: http://www.rpgmakervx.net/index.php?showtopic=24587
Requisiti
Nessuno, questo script si regge da solo.
Installation
Metti-e-Gioca
Basta inserirlo sotto (Materials)
Compatibilità
Dovrebbe essere compatibile con la maggior parte degli script.
Script
Questo è lo script completo.
############################################################## ################# ## RSSBS - Reedo's Simple Side Battle System ## Version 1.0 ## January 7, 2010 ## By Reedo ############################################################################### ## SOURCE ## ## Source thread: ## ## ## Support thread: ## [url="http://www.rpgmakervx.net/index.php?showtopic=24587"]http://www.rpgmakervx.net/index.php?showtopic=24587[/url] ############################################################################### ## REFERENCES ## ## None. This is an original script by Reedo. ## However other people have contributed ideas and bug finds. Please see the ## support thread link above for details. ############################################################################### ## DESCRIPTION ## ## This script provides a plug-and-play Side Battle System for the default ## battle system. This is purely an asthetic script, and as such, it only ## modifies the visuals of the battle. It does not modify battle mechanics ## when used by itself. ## ## This script will: ## 1) Draw the party on the right side of the screen, facing left, during batle. ## 2) Cause actors to perform their stepping animation when they are on the ## ground, and have no state restrictions applied. ## 3) Place a shadow under the actor. ## 4) Provide a target for animations, and optionally, animations themselves. ## 5) Line up actors in a staggerd row, top to bottom, with adjustable spacing, ## recessed according to the position value of their class. ## 6) Cause actors to step forward when performing an action. ## 7) Draw actors lying down, whitened, and semi-transparent when dead. ## 8) Cause living actors to do a victory dance at the end of battle. ## 9) Provide the option to horizontally flip enemy images by enemy ID. ## ## When used with the YERD or YEZ battle scripts, you then get even more ## animation options (such as casting animations) and popups for most battle ## event messages. This SBS and YEZ combine to form an amazing SBS experience! ## YEZ Script Link: [url="http://www.pockethouse.com/yez/"]http://www.pockethouse.com/yez/[/url] ############################################################################### ## COMPATIBILITY ## ## Should be compatible with most other scripts. ## ## This script overwrites 1 method: Spriteset_Battle.update_actors ## All other methods are aliased, and those aliases are called. ## The one overwrite should not cause an issue as the only functionality it ## supresses is setting the party members to the current battle sprites. The ## rest of the original method is maintained, and this script handles the ## relationship between party members and battle sprites. ############################################################################### ## REQUIREMENTS ## ## None ############################################################################### ## INSTALLATION ## ## Plug-and-play. (and this time I mean it for reals!) ## ## Insert below Materials, above other Reedo scripts. ## All Reedo scripts should be below all YERD/YEZ scripts. ############################################################################### ## RIGHTS & RESTRICTIONS ## ## As with most Reedo scripts, this script is free to re-use, as-is, ## in personal, educational, and commercial RPGVX development projects, ## providing that: this script, as well as the rpgmakervx.net forum link ## from which it was obtained, are credited in writing displayed readily ## to the user of the final compiled code assembly. ## ## Reedo and rgpmakervx.net retain all rights of intellect and ownership. ## You forego all rights of warranty by utilizing this script. ############################################################################### ## USAGE ## ## Plug and play. Suggested to use YEZ Battle Engine Zealous, and Reedo's ## Tile-Based Battle Backgrounds scripts. ## ## Some visual options can be modified below. ############################################################################### ############################################################################### ## USER OPTIONS ############################################################################### module REEDO_SBS # If desired, you can modify the default script options using the constants # below. In most cases though, you should not need to adjust these values. ############################################################################### ## This section controls the battle animations provided by this script ############################################################################### # This controls whether or not this script will provide animations during # battle. Set to 'true' when using this script without any other battle scene # enhancements. Set to 'false' when using battle scene enhancements such # as YEZ/YERD. Default is 'false'. SBS_ACTION_ANIMES = false # If this script is providing animations, then you can specify which # animations to use a default. SBS_DEFAULT_ATTACK_ANIME = 19 # Skill and item animations will use the animation assigned to the skill or # item, if any. If none is assigned, then the default will be used. Specify # a value of 0 if you do not want a default animation. These values have no # effect if SBS_ACTION_ANIMES is set to 'false'. SBS_DEFAULT_SKILL_ANIME = 1 SBS_DEFAULT_ITEM_ANIME = 1 ############################################################################### ## This section adjusts the actors positions on screen ############################################################################### ACTOR_START_LINE = 432 # The left-most position of the first actor ACTOR_START_TOP = 80 # The top-most position of the first actor ACTOR_STAGGER_HORZ = 8 # The amount to recess each actor to the right ACTOR_STAGGER_VERT = 16 # The vertical spacing between characters ACTOR_CLASS_POS_STAGGER = 16 # The extra distance to the right for class position ACTOR_STEP_IN_DISTANCE = 64 # The distance an actor steps in during an action ACTOR_STEP_IN_RATE = 8 # The rate at which the actor covers the distance ############################################################################### ## This section controls when an actor displays their stepping animation ############################################################################### # If an actor has a state applied which has a restriction value listed in # the following array, the actor will not display their stepping animation # until the state is removed. NO_STEP_RESTRICTIONS = [4, 5] # Has the same effect as above, but halts the stepping animation based on # the state's ID, without regard to the state's restriction. NO_STEP_STATES = [] ############################################################################### ## This section adjusts the appearance of an actor when dead ############################################################################### ACTOR_DEATH_OPACITY = 175 # The tranparency of dead actors ACTOR_DEATH_ANGLE = 270 # The angle to rotate the body ACTOR_DEATH_TONE = [128, 128, 128, 0] # A color tone to apply to the image ACTOR_DEATH_OFFSET_X = -8 # A horizontal offset to move the body by ACTOR_DEATH_OFFSET_Y = -8 # A vertical offset to move the body by ############################################################################### ## This section adjusts the actor's shadow ############################################################################### ACTOR_SHADOW_IMAGE = "Shadow" # The name of the system image to use ACTOR_SHADOW_CUSTOM_PICTURE = nil # The name of a resource picture to use instead; nil to use system image ACTOR_SHADOW_OFFSET_X = 0 # The horizontal offset to the actor's position ACTOR_SHADOW_OFFSET_Y = 8 # The vertical offset to the actor's position ACTOR_DEATH_SHADOW_OFFSET_X = 8 # Additional X offset added when dead ACTOR_DEATH_SHADOW_OFFSET_Y = 2 # Additional Y offset added when dead ############################################################################### ## This section adjusts the victory dance ############################################################################### VICTORY_DANCE_JUMP_HEIGHT = 16 # The height of the jump VICTORY_DANCE_JUMP_INCREMENT = 2 # The rate of jump movement VICTORY_DANCE_JUMP_HOVER = 4 # The number of frames to wait in the air VICTORY_DANCE_JUMP_WAIT = 70 # The number of frames before jumping again VICTORY_DANCE_JUMP_TWIST = true # True to twirl when jumping; false to face forward ############################################################################### ## This section adjusts the battle floor location ############################################################################### BATTLE_FLOOR_TOP = 128 # Allows you to set the top of the battle floor ############################################################################### ## This section adjusts enemy images ############################################################################### # Specify the ID of enemies who should have their image flipped in battle FLIP_ENEMY = [ 2, 3, 4, 5, 8, 10, 12, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 28, 29, ] end ############################################################################### ## MAIN SCRIPT ############################################################################### ## EDITS BEYOND THIS POINT ARE AT YOUR OWN RISK!!! ############################################################################### class Game_Battler alias reedo_sbs_gb_add_state add_state def add_state(state_id) reedo_sbs_gb_add_state(state_id) if self.is_a?(Game_Actor) and $scene.is_a?(Scene_Battle) bs = $scene.reedo_get_battle_sprite(reedo_battle_sprite_id) return if bs == nil bs.reedo_bc_sprite.character.step_anime = reedo_check_step_anime reedo_update_life_state end end alias reedo_sbs_gb_remove_state remove_state def remove_state(state_id) reedo_sbs_gb_remove_state(state_id) if self.is_a?(Game_Actor) and $scene.is_a?(Scene_Battle) bs = $scene.reedo_get_battle_sprite(reedo_battle_sprite_id) return if bs == nil bs.reedo_bc_sprite.character.step_anime = reedo_check_step_anime reedo_update_life_state end end def reedo_check_step_anime return false if dead? for state in states return false if REEDO_SBS::NO_STEP_STATES.include?(state.id) return false if REEDO_SBS::NO_STEP_RESTRICTIONS.include?(state.restriction) end return true end def reedo_update_life_state(battle_sprite = nil) if dead? if !@reedo_dead_set reedo_set_dead_state(battle_sprite) @reedo_dead_set = true end else if @reedo_dead_set reedo_set_live_state(battle_sprite) @reedo_dead_set = false end end end def reedo_reset_dead_set @reedo_dead_set = false end def reedo_set_dead_state(battle_sprite = nil) if battle_sprite == nil bs = $scene.reedo_get_battle_sprite(reedo_battle_sprite_id) else bs = battle_sprite end return if bs == nil return if bs.reedo_bc_sprite.is_dead bs.reedo_bc_sprite.angle = REEDO_SBS::ACTOR_DEATH_ANGLE tone = REEDO_SBS::ACTOR_DEATH_TONE bs.reedo_bc_sprite.tone.set(tone[0], tone[1], tone[2], tone[3]) bs.reedo_bc_sprite.character.opacity = REEDO_SBS::ACTOR_DEATH_OPACITY bs.reedo_bc_sprite.character.screen_x += REEDO_SBS::ACTOR_DEATH_OFFSET_X bs.reedo_bc_sprite.character.screen_y += REEDO_SBS::ACTOR_DEATH_OFFSET_Y bs.reedo_bc_sprite.shadow_sprite.x += REEDO_SBS::ACTOR_DEATH_SHADOW_OFFSET_X bs.reedo_bc_sprite.shadow_sprite.y += REEDO_SBS::ACTOR_DEATH_SHADOW_OFFSET_Y bs.reedo_bc_sprite.is_dead = true end def reedo_set_live_state(battle_sprite = nil) if battle_sprite == nil bs = $scene.reedo_get_battle_sprite(reedo_battle_sprite_id) else bs = battle_sprite end return if bs == nil return if bs.reedo_bc_sprite.is_dead != true bs.reedo_bc_sprite.angle = 0 bs.reedo_bc_sprite.tone.set(0, 0, 0, 0) bs.reedo_bc_sprite.character.opacity = 255 bs.reedo_bc_sprite.character.screen_x -= REEDO_SBS::ACTOR_DEATH_OFFSET_X bs.reedo_bc_sprite.character.screen_y -= REEDO_SBS::ACTOR_DEATH_OFFSET_Y bs.reedo_bc_sprite.shadow_sprite.x -= REEDO_SBS::ACTOR_DEATH_SHADOW_OFFSET_X bs.reedo_bc_sprite.shadow_sprite.y -= REEDO_SBS::ACTOR_DEATH_SHADOW_OFFSET_Y bs.reedo_bc_sprite.is_dead = false end end class Game_Actor attr_accessor :reedo_battle_sprite_id attr_accessor :screen_x attr_accessor :screen_y end class Game_Actors def members return @data end end class Game_Troop def troop_id return @troop_id end end class Game_Character alias reedo_sbs_gc_screen_x screen_x def screen_x if $scene.is_a?(Scene_Battle) return @battle_screen_x else return reedo_sbs_gc_screen_x end end alias reedo_sbs_gc_screen_y screen_y def screen_y if $scene.is_a?(Scene_Battle) return @battle_screen_y else return reedo_sbs_gc_screen_y end end def opacity=(value) @opacity = value end def screen_x=(value) @battle_screen_x = value end def screen_y=(value) @battle_screen_y = value end def step_anime return @step_anime end def step_anime=(value) @step_anime = value end end class Sprite_Base attr_accessor :reedo_victory_wait end class Sprite_Character attr_accessor :shadow_sprite attr_accessor :is_dead alias reedo_sbs_sc_dispose dispose def dispose @shadow_sprite.dispose if @shadow_sprite != nil reedo_sbs_sc_dispose end def create_shadow_sprite @shadow_sprite = Sprite_Base.new(self.viewport) bmp = Cache.picture(REEDO_SBS::ACTOR_SHADOW_CUSTOM_PICTURE) if REEDO_SBS::ACTOR_SHADOW_CUSTOM_PICTURE != nil bmp = Cache.system(REEDO_SBS::ACTOR_SHADOW_IMAGE) if bmp == nil @shadow_sprite.bitmap = bmp @shadow_sprite.src_rect = Rect.new(0, 0, bmp.width, bmp.height) @shadow_sprite.x = self.x - self.ox + REEDO_SBS::ACTOR_SHADOW_OFFSET_X @shadow_sprite.y = self.y - self.oy + REEDO_SBS::ACTOR_SHADOW_OFFSET_Y @shadow_sprite.z = self.z - 1 end alias reedo_sbs_sc_update update def update reedo_sbs_sc_update @shadow_sprite.update if @shadow_sprite != nil end end class Sprite_Battler attr_accessor :reedo_bc_sprite alias reedo_sbs_sb_dispose dispose def dispose @reedo_bc_sprite.dispose if @reedo_bc_sprite != nil reedo_sbs_sb_dispose end alias reedo_sbs_sb_update update def update reedo_sbs_sb_update @reedo_bc_sprite.update if @reedo_bc_sprite != nil end end class Spriteset_Battle alias reedo_sbs_ssb_create_battlefloor create_battlefloor def create_battlefloor reedo_sbs_ssb_create_battlefloor @battlefloor_sprite.y = REEDO_SBS::BATTLE_FLOOR_TOP end alias reedo_sbs_ssb_create_actors create_actors def create_actors if @actor_sprites != nil dispose_actors end reedo_sbs_ssb_create_actors @reedo_start_points = {} @actor_sprites = [] i = 1 for actor in $game_party.members actor.reedo_battle_sprite_id = i - 1 gc = Game_Character.new gc.set_graphic(actor.character_name, actor.character_index) gc.set_direction(4) gc.screen_x = 0; gc.screen_y = 0 bc = Sprite_Character.new(@viewport1, gc) gc.screen_x = REEDO_SBS::ACTOR_START_LINE + ($data_classes[actor.class_id].position * REEDO_SBS::ACTOR_CLASS_POS_STAGGER) + ((i - 1) * REEDO_SBS::ACTOR_STAGGER_HORZ) gc.screen_y = REEDO_SBS::ACTOR_START_TOP + ((bc.height * i) + (REEDO_SBS::ACTOR_STAGGER_VERT * i)) actor.screen_x = gc.screen_x; actor.screen_y = gc.screen_y sb = Sprite_Battler.new(@viewport1, actor) sb.reedo_victory_wait = REEDO_SBS::VICTORY_DANCE_JUMP_HOVER sb.reedo_bc_sprite = bc gc.step_anime = actor.reedo_check_step_anime @reedo_start_points[sb] = [gc.screen_x, gc.screen_y] @actor_sprites.push(sb) bc.update bc.create_shadow_sprite actor.reedo_reset_dead_set actor.reedo_update_life_state(sb) i += 1 end end alias reedo_sbs_ssb_create_enemies create_enemies def create_enemies reedo_sbs_ssb_create_enemies for sprite in @enemy_sprites if REEDO_SBS::FLIP_ENEMY.include?(sprite.battler.enemy_id) sprite.mirror = true end end end def update_actors if $scene.is_a?(Scene_Battle) if $scene.victory_dance_time reedo_update_victory_dance end end for sprite in @actor_sprites sprite.reedo_bc_sprite.character.update sprite.update end end def reedo_get_battle_sprite(sprite_id) return nil if !sprite_id.is_a?(Fixnum) return nil if sprite_id < 0 return nil if sprite_id >= @actor_sprites.length return @actor_sprites[sprite_id] end def reedo_update_victory_dance if @victory_delta == nil @victory_delta = -REEDO_SBS::VICTORY_DANCE_JUMP_INCREMENT for sp in @actor_sprites sp.reedo_bc_sprite.character.step_anime = false end end for sp in @actor_sprites next if sp.battler.reedo_check_step_anime == false stpt = @reedo_start_points[sp] if sp.reedo_bc_sprite.character.screen_y < stpt[1] - REEDO_SBS::VICTORY_DANCE_JUMP_HEIGHT if sp.reedo_victory_wait <= 0 @victory_delta = REEDO_SBS::VICTORY_DANCE_JUMP_INCREMENT sp.reedo_victory_wait = REEDO_SBS::VICTORY_DANCE_JUMP_WAIT else @victory_delta = 0 sp.reedo_victory_wait -= 1 end end if sp.reedo_bc_sprite.character.screen_y > stpt[1] if sp.reedo_victory_wait <= 0 @victory_delta = -REEDO_SBS::VICTORY_DANCE_JUMP_INCREMENT sp.reedo_victory_wait = REEDO_SBS::VICTORY_DANCE_JUMP_HOVER sp.reedo_bc_sprite.character.step_anime = false else @victory_delta = 0 sp.reedo_victory_wait -= 1 sp.reedo_bc_sprite.character.step_anime = true if !sp.reedo_bc_sprite.character.step_anime end end if REEDO_SBS::VICTORY_DANCE_JUMP_TWIST if sp.reedo_bc_sprite.character.screen_y <= stpt[1] if (sp.reedo_bc_sprite.character.screen_y - stpt[1]) % (REEDO_SBS::VICTORY_DANCE_JUMP_HEIGHT / 4) == 0 case sp.reedo_bc_sprite.character.direction when 4; sp.reedo_bc_sprite.character.set_direction(2) when 2; sp.reedo_bc_sprite.character.set_direction(6) when 6; sp.reedo_bc_sprite.character.set_direction(8) when 8; sp.reedo_bc_sprite.character.set_direction(4) end end else sp.reedo_bc_sprite.character.set_direction(4) if sp.reedo_bc_sprite.character.direction != 4 end end sp.reedo_bc_sprite.character.screen_y += @victory_delta sp.battler.screen_y += @victory_delta end end end class Scene_Battle attr_reader :victory_dance_time alias reedo_sbs_sb_start start def start reedo_sbs_sb_start @current_party = $game_party.members end alias reedo_sbs_sb_terminate terminate def terminate reedo_teardown_actors reedo_sbs_sb_terminate end alias reedo_sbs_sb_update update def update if @current_party != $game_party.members @spriteset.create_actors @current_party = $game_party.members end reedo_sbs_sb_update end alias reedo_sbs_sb_execute_action_attack execute_action_attack def execute_action_attack reedo_do_execute_action("attack") end alias reedo_sbs_sb_execute_action_skill execute_action_skill def execute_action_skill reedo_do_execute_action("skill") end alias reedo_sbs_sb_execute_action_item execute_action_item def execute_action_item reedo_do_execute_action("item") end alias reedo_sbs_sb_process_victory process_victory def process_victory @victory_dance_time = true reedo_sbs_sb_process_victory end def reedo_get_battle_sprite(sprite_id) return @spriteset.reedo_get_battle_sprite(sprite_id) end def reedo_teardown_actors for actor in $game_actors.members actor.reedo_battle_sprite_id = nil if actor != nil end end def reedo_do_execute_action(action_method) targets = @active_battler.action.make_targets if @active_battler.is_a?(Game_Actor) reedo_actor_step_in if REEDO_SBS::SBS_ACTION_ANIMES targets.each do |t| if t.is_a?(Game_Actor) bs = reedo_get_battle_sprite(t.reedo_battle_sprite_id) bs.reedo_bc_sprite.character.animation_id = eval("reedo_get_" + action_method + "_animation") if bs != nil end end end eval("reedo_sbs_sb_execute_action_" + action_method) reedo_actor_step_back else if REEDO_SBS::SBS_ACTION_ANIMES targets.each do |t| if t.is_a?(Game_Actor) bs = reedo_get_battle_sprite(t.reedo_battle_sprite_id) bs.reedo_bc_sprite.character.animation_id = eval("reedo_get_" + action_method + "_animation") if bs != nil end end end eval("reedo_sbs_sb_execute_action_" + action_method) end end def reedo_get_attack_animation return REEDO_SBS::SBS_DEFAULT_ATTACK_ANIME end def reedo_get_skill_animation skill = $data_skills[@active_battler.action.skill_id] aid = REEDO_SBS::SBS_DEFAULT_SKILL_ANIME aid = skill.animation_id if skill.animation_id > 0 return aid end def reedo_get_item_animation item = $data_items[@active_battler.action.item_id] aid = REEDO_SBS::SBS_DEFAULT_ITEM_ANIME aid = item.animation_id if item.animation_id > 0 return aid end def reedo_actor_step_in delta = 0 dr = REEDO_SBS::ACTOR_STEP_IN_RATE while delta < REEDO_SBS::ACTOR_STEP_IN_DISTANCE bs = reedo_get_battle_sprite(@active_battler.reedo_battle_sprite_id) return if bs == nil bs.reedo_bc_sprite.shadow_sprite.x -= dr bs.reedo_bc_sprite.character.screen_x -= dr bs.battler.screen_x -= dr Graphics.update @spriteset.update delta += dr end end def reedo_actor_step_back delta = 0 dr = REEDO_SBS::ACTOR_STEP_IN_RATE while delta < REEDO_SBS::ACTOR_STEP_IN_DISTANCE bs = reedo_get_battle_sprite(@active_battler.reedo_battle_sprite_id) return if bs == nil bs.reedo_bc_sprite.shadow_sprite.x += dr bs.reedo_bc_sprite.character.screen_x += dr bs.battler.screen_x += dr Graphics.update @spriteset.update delta += dr end end endAvviso da Bubbly
Alcune parti del topic potrebbero non essere state tradotte alla lettera, inoltre sono stati tagliati dei pezzi per non creare problemi (in quanto esiste anche un'alternativa versione combinata ad un altro script). Spero che comunque vi piaccia lo stesso lo script
TUTTI I DIRITTI SONO RISERVATI A REEDO. NON DOVETE CREDITARE ME IN QUANTO HO SOLO TRADOTTO IL TOPIC.
- Disegna gli eroi nella parte a destra dello schermo, rivolti a sinistra.
-
Ciao a tutti
ho provato a fare la mia prima canzone per rpg maker (o meglio ho preso la canzone da un sito, mi sembra sia vgmusic o qualcosa del genere ed ho cambiato gli strumenti) e volevo sapere se potrebbe andare bene come "sintonia tra gli strumenti".PS: Gli allegati perchè non si possono usare con più di 100kb? O.o
-
XDXDXD Bella questa sezione!!!
Aspetta che aggiungo qualcosa anchio :Ok:
http://wordandimage.files.wordpress.com/2008/04/funny-pictures-facebook-library-cat1.jpg
:rovatfl:
-
Grazie per i consigli ^^ Ho dato un'occhiata al campus e sto imparando come creare al meglio la storia (ci sono cose scritte che neanche sognavo di poter fare '.')
-
-
Ciao :rovatfl: Ho creato una discussione qui perchè mi sembrava la sezione più in tema.
Allora, avrei bisogno di una persona che mi aiuti e che mi supporti... Va bene di qualsiasi campo, tanto devo imparare a fare tutto
Intanto gli//le mostro il progetto che avevo in mente :Ok:
Il mio contatto è dragobolla@hotmail.it, vi aspetto in chat

-
Ho scelto finalmente il programma vx perchè mi sembrava il più accogliente per i principianti :)
Ho sperimentato il programma e letto molte guide ed ho pensato nel frattempo ad una storia, speravo che voi mi poteste dare un commento per migliorarla :D
Genere: Fantastico
Storia: "Nell'isola di Sirpen, due draghi chiamati Bubbly e Bobbel sono famosi tra gli uomini per le loro avventure e le loro gesta eroiche, neanche stavolta si tireranno indietro. Un drago più grande e più cattivo, chiamato Devilion, vuole conquistare l'isola di Sirpen e farne un covo per i suoi Dragnozzi (Drago Scagnozzi). Riusciranno i due draghi buoni a proteggere ancora una volta l'isola?"
Ho proprio buttato giù un pezzo, per ora l'idea base è questa poi posso ampliarla ^^
-
Benvenuto! ^ ^
Puoi scaricare dal sito ufficiale (nuovo :D) le versioni trial (qui è vietato chiedere crack o simili) di rpgmaker XP e VX. Esiste anche la versione 2k3 (o 2k). In ordine cronologico è 2k3, XP, VX, ma non farti ingannare ognuna ha caratteristiche proprie ed è bene scegliere quella che si adatta di più al tuo modo di makerare.
^ ^
Addirittura tre versioni? vuol dire che le proverò tutte ^^
Versioni trial nel senso che durano solo pochi giorni? D:
-

RE - Shoot System
in Richieste scripts RGSS2 (VX)
Posted · Edited by Bubbly
Mi dispiace avvisarti che quel gioco è stato COMPLETAMENTE realizzato ad eventi
Esistono, comunque, script che permettono di fare un bs in tempo reale con armi a distanza (prova a usare cerca)