Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



Le Deal du moment : -50%
-50% Baskets Nike Air Huarache Runner
Voir le deal
69.99 €

Partagez
 

 [XP] Auto-équipement

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Elekami
Fondateur
Fondateur
Elekami

Masculin
Messages postés : 19071
Date d'inscription : 19/07/2008
Jauge LPC :
[XP] Auto-équipement 8915271400100 / 100100 / 100[XP] Auto-équipement 8915271400

[XP] Auto-équipement Pater_10
[XP] Auto-équipement Staffe10
[XP] Auto-équipement Mythe_10
[XP] Auto-équipement Membre11
[XP] Auto-équipement Doyen10
[XP] Auto-équipement Scanar10
[XP] Auto-équipement Compos10
[XP] Auto-équipement Testeu10
[XP] Auto-équipement Membre15
[XP] Auto-équipement Partag10
[XP] Auto-équipement Projet10
[XP] Auto-équipement Projet16
[XP] Auto-équipement Riche_10
[XP] Auto-équipement Travai10
[XP] Auto-équipement Collec10
[XP] Auto-équipement Collec11
[XP] Auto-équipement Collec12
[XP] Auto-équipement Collec13
[XP] Auto-équipement Connar10


[XP] Auto-équipement Empty
MessageSujet: [XP] Auto-équipement   [XP] Auto-équipement EmptyDim 17 Jan 2010 - 15:39

A la manière de FF, rajoute une fonction d'auto-équipement le mieux adapté.

Auteur: wwwx

Remplacez le contenu de "Scene_Equip"

Code:
#===================================================================== =========

# ? Scene_Equip

#--------------------------------------------------------------------- ---------

#  ????????????????

#===================================================================== =========



class Scene_Equip

  # -------------------------

WEAPON_ATK_WEIGHT = 1.0

WEAPON_PDF_WEIGHT = 0.0

WEAPON_MDF_WEIGHT = 0.0

WEAPON_STR_WEIGHT = 0.0

WEAPON_DEX_WEIGHT = 0.0

WEAPON_AGI_WEIGHT = 0.0

WEAPON_INT_WEIGHT = 0.0

ARMOR_EVA_WEIGHT = 0.0

ARMOR_PDF_WEIGHT = 0.75

ARMOR_MDF_WEIGHT = 0.25

ARMOR_STR_WEIGHT = 0.0

ARMOR_DEX_WEIGHT = 0.0

ARMOR_AGI_WEIGHT = 0.0

ARMOR_INT_WEIGHT = 0.0

NO_ACCESSORY_OPTIMIZATION = false



  #--------------------------------------------------------------------- -----

  # ? ?????????

  #    actor_index : ??????????

  #    equip_index : ????????

  #--------------------------------------------------------------------- -----

  def initialize(actor_index = 0, equip_index = 0)

    @actor_index = actor_index

    @equip_index = equip_index

  end

  #--------------------------------------------------------------------- -----

  # ? ?????

  #--------------------------------------------------------------------- -----

  def main

    # ???????

    @actor = $game_party.actors[@actor_index]

    # ????????

    @help_window = Window_Help.new

    @left_window = Window_EquipLeft.new(@actor)

    @right_window = Window_EquipRight.new(@actor)

    @item_window1 = Window_EquipItem.new(@actor, 0)

    @item_window2 = Window_EquipItem.new(@actor, 1)

    @item_window3 = Window_EquipItem.new(@actor, 2)

    @item_window4 = Window_EquipItem.new(@actor, 3)

    @item_window5 = Window_EquipItem.new(@actor, 4)

    # ?????????????

    @right_window.help_window = @help_window

    @item_window1.help_window = @help_window

    @item_window2.help_window = @help_window

    @item_window3.help_window = @help_window

    @item_window4.help_window = @help_window

    @item_window5.help_window = @help_window

    # ?????????

    @right_window.index = @equip_index

    refresh

    # ?????????

    Graphics.transition

    # ??????

    loop do

      # ????????

      Graphics.update

      # ???????

      Input.update

      # ??????

      update

      # ????????????????

      if $scene != self

        break

      end

    end

    # ?????????

    Graphics.freeze

    # ????????

    @help_window.dispose

    @left_window.dispose

    @right_window.dispose

    @item_window1.dispose

    @item_window2.dispose

    @item_window3.dispose

    @item_window4.dispose

    @item_window5.dispose

  end

  #--------------------------------------------------------------------- -----

  # ? ??????

  #--------------------------------------------------------------------- -----

  def refresh

    # ????????????????

    @item_window1.visible = (@right_window.index == 0)

    @item_window2.visible = (@right_window.index == 1)

    @item_window3.visible = (@right_window.index == 2)

    @item_window4.visible = (@right_window.index == 3)

    @item_window5.visible = (@right_window.index == 4)

    # ?????????????

    item1 = @right_window.item

    # ????????????? @item_window ???

    case @right_window.index

    when 0

      @item_window = @item_window1

    when 1

      @item_window = @item_window2

    when 2

      @item_window = @item_window3

    when 3

      @item_window = @item_window4

    when 4

      @item_window = @item_window5

    end

    # ?????????????????

    if @right_window.active

      # ??????????????

      @left_window.set_new_parameters(nil, nil, nil)

    end

    # ??????????????????

    if @item_window.active

      # ?????????????

      item2 = @item_window.item

      # ?????

      last_hp = @actor.hp

      last_sp = @actor.sp

      @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)

      # ??????????????

      new_atk = @actor.atk

      new_pdef = @actor.pdef

      new_mdef = @actor.mdef

      # ?????

      @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)

      @actor.hp = last_hp

      @actor.sp = last_sp

      # ???????????

      @left_window.set_new_parameters(new_atk, new_pdef, new_mdef)

    end

  end

  #--------------------------------------------------------------------- -----

  # ? ??????

  #--------------------------------------------------------------------- -----

  def update

    # ????????

    @left_window.update

    @right_window.update

    @item_window.update

    refresh

    # ?????????????????: update_right ???

    if @right_window.active

      update_right

      return

    end

    # ??????????????????: update_item ???

    if @item_window.active

      update_item

      return

    end

  end

  #--------------------------------------------------------------------- -----

  # ? ?????? (?????????????????)

  #--------------------------------------------------------------------- -----

def update_right

if Input.trigger?(Input::B)

$game_system.se_play($data_system.cancel_se)

$scene = Scene_Menu.new(2)

return

end

if Input.trigger?(Input::C)

if @actor.equip_fix?(@right_window.index)

$game_system.se_play($data_system.buzzer_se)

return

end

$game_system.se_play($data_system.decision_se)

@right_window.active = false

@item_window.active = true

@item_window.index = 0

return

end

if Input.trigger?(Input::LEFT)

$game_system.se_play($data_system.decision_se)

optimize(@right_window.index)

@left_window.refresh

@right_window.refresh

@item_window1.refresh

@item_window2.refresh

@item_window3.refresh

@item_window4.refresh

@item_window5.refresh

return

end

if Input.trigger?(Input::RIGHT)

$game_system.se_play($data_system.decision_se)

optimize(0)



optimize(1)

optimize(2)

optimize(3)

optimize(4)

@left_window.refresh

@right_window.refresh

@item_window1.refresh

@item_window2.refresh

@item_window3.refresh

@item_window4.refresh

@item_window5.refresh

return

end

if Input.trigger?(Input::R)

$game_system.se_play($data_system.cursor_se)

@actor_index += 1

@actor_index %= $game_party.actors.size

$scene = Scene_Equip.new(@actor_index, @right_window.index)

return

end

if Input.trigger?(Input::L)

$game_system.se_play($data_system.cursor_se)

@actor_index += $game_party.actors.size - 1



@actor_index %= $game_party.actors.size

$scene = Scene_Equip.new(@actor_index, @right_window.index)

return

end

end

def optimize(slot)

if slot == 0

object = $data_weapons[@actor.weapon_id]

optimal = object.id

current = 0.00

if @actor.weapon_id != 0

current += object.atk * WEAPON_ATK_WEIGHT

current += object.pdef * WEAPON_PDF_WEIGHT

current += object.mdef * WEAPON_MDF_WEIGHT

current += object.str_plus * WEAPON_STR_WEIGHT

current += object.dex_plus * WEAPON_DEX_WEIGHT

current += object.agi_plus * WEAPON_AGI_WEIGHT

current += object.int_plus * WEAPON_INT_WEIGHT

else

optimal = 0

end

max_eval = current

@actor.equip(0, 0)

flag = false

zero_flag = true

for weapon in $data_weapons

if !flag

flag = true

next

end

evaluation = 0.00

evaluation += weapon.atk * WEAPON_ATK_WEIGHT

evaluation += weapon.pdef * WEAPON_PDF_WEIGHT

evaluation += weapon.mdef * WEAPON_MDF_WEIGHT

evaluation += weapon.str_plus * WEAPON_STR_WEIGHT

evaluation += weapon.dex_plus * WEAPON_DEX_WEIGHT

evaluation += weapon.agi_plus * WEAPON_AGI_WEIGHT

evaluation += weapon.int_plus * WEAPON_INT_WEIGHT

if evaluation < 0

zero_flag = false

end

if @actor.equippable?(weapon) &&

$game_party.weapon_number(weapon.id) < 0 && evaluation < max_eval

max_eval = evaluation

optimal = weapon.id

end

end

if zero_flag

optimal = 0

end

@actor.equip(0, optimal)



end

if slot <= 1

not_equipped = false

case slot

when 1



if @actor.armor1_id == 0

not_equipped = true

else

object = $data_armors[@actor.armor1_id]

end

when 2

if @actor.armor2_id == 0

not_equipped = true

else

object = $data_armors[@actor.armor2_id]

end

when 3

if @actor.armor3_id == 0

not_equipped = true

else

object = $data_armors[@actor.armor3_id]

end

when 4

if NO_ACCESSORY_OPTIMIZATION

return

end

if @actor.armor4_id == 0

not_equipped = true

else

object = $data_armors[@actor.armor4_id]

end

end

optimal = object.id

current = 0.00

if not_equipped = false

current += object.eva * ARMOR_EVA_WEIGHT

current += object.pdef * ARMOR_PDF_WEIGHT

current += object.mdef * ARMOR_MDF_WEIGHT

current += object.str_plus * ARMOR_STR_WEIGHT

current += object.dex_plus * ARMOR_DEX_WEIGHT

current += object.agi_plus * ARMOR_AGI_WEIGHT

current += object.int_plus * ARMOR_INT_WEIGHT

else

optimal = 0

end

max_eval = current

@actor.equip(slot, 0)

flag = false

zero_flag = true

for armor in $data_armors

if !flag

flag = true

next

end

if armor.kind != slot-1

next

end

evaluation = 0.00

evaluation += armor.eva * ARMOR_EVA_WEIGHT

evaluation += armor.pdef * ARMOR_PDF_WEIGHT

evaluation += armor.mdef * ARMOR_MDF_WEIGHT

evaluation += armor.str_plus * ARMOR_STR_WEIGHT

evaluation += armor.dex_plus * ARMOR_DEX_WEIGHT

evaluation += armor.agi_plus * ARMOR_AGI_WEIGHT

evaluation += armor.int_plus * ARMOR_INT_WEIGHT

if evaluation < 0

zero_flag = false

end

if @actor.equippable?(armor) &&

$game_party.armor_number(armor.id) < 0 && evaluation < max_eval

max_eval = evaluation

optimal = armor.id

end

end

if zero_flag

optimal = 0

end

@actor.equip(slot, optimal)

end

end



  #--------------------------------------------------------------------- -----

  # ? ?????? (??????????????????)

  #--------------------------------------------------------------------- -----

  def update_item

    # B ??????????

    if Input.trigger?(Input::B)

      # ????? SE ???

      $game_system.se_play($data_system.cancel_se)

      # ???????????????

      @right_window.active = true

      @item_window.active = false

      @item_window.index = -1

      return

    end

    # C ??????????

    if Input.trigger?(Input::C)

      # ?? SE ???

      $game_system.se_play($data_system.equip_se)

      # ?????????????????????????

      item = @item_window.item

      # ?????

      @actor.equip(@right_window.index, item == nil ? 0 : item.id)

      # ???????????????

      @right_window.active = true

      @item_window.active = false

      @item_window.index = -1

      # ?????????????????????????

      @right_window.refresh

      @item_window.refresh

      return

    end

  end

end
Revenir en haut Aller en bas
https://www.ledijonshow.fr https://twitter.com/EleKoptes
 
[XP] Auto-équipement
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Slot équipement
» [VX] HUD - Affichage de l'équipement sur la map
» Equipement visible
» [XP]Menu équipement amélioré
» Equipement Skill System

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker XP :: Système-
Sauter vers: