Jump to content
Rpg²S Forum

Bubbly

Utenti
  • Posts

    30
  • Joined

  • Last visited

Posts posted by Bubbly

  1. L'ho trovato :mellow: scusa se non l'ho tradotto ma andavo di fretta. E' di CrimsonSeas

     

     

    Targetting 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

  2. @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 :biggrin:, veramente perfetta per quello che avevo intenzione di fare io! Grazie, se ne trovi altri non esitare a postarli :wink:

  3. 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 :biggrin:

  4. 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
    end
    

     

     

     

    Avviso 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.

  5. 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 :sisi:

     

    Intanto gli//le mostro il progetto che avevo in mente :Ok:

    Il mio contatto è dragobolla@hotmail.it, vi aspetto in chat :sisi:

  6. 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 ^^

  7. 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:

  8. Ciao :) sono Bubbly e sono nuovo in tutti i sensi. Ho cercato con google come creare un gioco e dopo un po' sono arrivato qui! Volevo sapere qualcosa in più su questo RPG Maker e dove posso prenderlo :D.

     

    Aspetto risposte :) ciao

×
×
  • Create New...