MMORPG-extreme
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

Amélioration d'armes [VX]

Aller en bas

Amélioration d'armes [VX] Empty Amélioration d'armes [VX]

Message  Hitsugaya Dim 27 Juin - 22:03

Ce script vient de rpg maker créative.
Créez un nouveau script au dessus de main puis collez ceci:
appelez ce script avec :$scene = Scene_Weapons_Upgrade.new
Script:

#=========================================================
# Weapon Level System Script
# by Akin
# Traduction française (partielle) : Blockade
#=========================================================
# Quand l'arme gagne un niveau ces stats augmente
# Pour ouvrir la fenêtre d'amélioration :
# "$scene = Scene_Weapons_Upgrade.new"
#
# Cherchez A34sZ1A pour trouver les formules utilisées
# pour calculer les nombre de points donnés lors d'une amélioration
# et pour le prix de l'amélioration
#
# Le script utilise Window_Confirm class scripté par
# Prexus
#=========================================================

# C'est la classe window confirm scripté par Pexus
class Window_Confirm < Window_Selectable
def initialize(index = -1)
super(192, 168, 160, 80)
create_contents
@item_max = 2
@column_max = 2
self.index = index
self.active = false
self.openness = 0
refresh
end
#--------------------------------------------------------------------------
def refresh
for i in 0..@item_max
rect = item_rect(i)
self.contents.clear_rect(rect)
end
self.contents.draw_text(0, 0, self.contents.width, WLH, "Confirmation?", 1)
rect = item_rect(0)
self.contents.draw_text(rect, "Oui", 1)
rect = item_rect(1)
self.contents.draw_text(rect, "Non", 1)
end
#--------------------------------------------------------------------------
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = WLH
rect.x = index % @column_max * (rect.width + @spacing)
rect.y = (index / @column_max * WLH) + WLH
return rect
end
end

# Ce module donne un niveau supplémentaire pour chaque arme
module RPG
class Weapon < BaseItem
attr_accessor :level
alias akin_weapon_level_system_ini initialize
def initialize
akin_weapon_level_system_ini
@level = 1
end
end
end

# Ce module calcule le niveau supplémentaire de chaque arme
module Akin_Weapons
def self.level_up(weapon_input)
if weapon_input.level == nil or weapon_input.level == 0
weapon_input.level = 1
end
weapon_input.level += 1

#--------Fonctions niveau supplémentaire-------------A34sZ1A -----------------------
# Les stats augmentent de 20 % de leur valeur précédente + 1
# A chaque niveau supplémentaire cette formule est appliquée
# Soyez sure que vous renvoyez un entier grâce à "Integer()"
# Si vous modifiez la fonction, une autre à besoin d'être changée
# cherchez BZ8q1
weapon_input.atk = Integer(weapon_input.atk * 1.2 + 1)
weapon_input.def = Integer(weapon_input.def * 1.2 + 1)
weapon_input.spi = Integer(weapon_input.spi * 1.2 + 1)
weapon_input.agi = Integer(weapon_input.agi * 1.2 + 1)
#-------Fin des fonctions niveau supplémentaire-----------------------------------------
end
end

#------------------------------------------------------------------------------
# Ajoute des méthodes à window_base pour afficher l'icône de l'arme équipée
#==============================================================================

class Window_Base < Window
def draw_actor_weapon(actor, x, y)
self.contents.font.color = power_up_color
self.contents.draw_text(x, y, 96, WLH, "Equipé :")
self.contents.font.color = normal_color
n = actor.weapon_id
equiped_weapon = $data_weapons[n]
if equiped_weapon == nil
self.contents.draw_text(x + 8, y + WLH, 192, WLH, "Aucun")
else
self.contents.draw_text(x + 8, y + WLH, 192, WLH, equiped_weapon.name)
if equiped_weapon.level == nil or equiped_weapon.level == 0
$data_weapons[n].level = 1
equiped_weapon = $data_weapons[n]
end
self.contents.font.color = system_color
self.contents.draw_text(x + 8, y + WLH * 2, 112, WLH, "Arme Niv. :")
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y + WLH * 2, 64, WLH, equiped_weapon.level)
end
end
end

#==============================================================================
# ** Window_Char_WeaponStatus
#------------------------------------------------------------------------------
# Cette fenêtre affiche chaque arme des joueurs, le niveau des armes sur l'écran
#==============================================================================

class Window_Char_WeaponStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Initialisation de l'objet
# x : Coordonnée X de la fenêtre
# y : Coordonnée Y de la fenêtre
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 384, 416)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.members.size
for actor in $game_party.members
draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
x = 104
y = actor.index * 96 + WLH / 2
draw_actor_name(actor, x, y)
draw_actor_class(actor, x, y + WLH * 2)
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_weapon(actor, x + 96, y)
end
end
#--------------------------------------------------------------------------
# * Update cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0 # No cursor
self.cursor_rect.empty
elsif @index < @item_max # Normal
self.cursor_rect.set(0, @index * 96, contents.width, 96)
elsif @index >= 100 # Self
self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
else # All
self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
end
end
end

#==============================================================================
# ** Window_Akin_Price
#------------------------------------------------------------------------------
# Cette fenêtre affiche le prix de l'amélioration
#=============================================================================

class Window_Akin_Price < Window_Base
#--------------------------------------------------------------------------
# * Initialisation de l'objet
# x : Coordonnée X de la fenêtre
# y : Coordonnée Y de la fenêtre
#--------------------------------------------------------------------------
def initialize(x, y, price = 0)
super(x, y, 160, 72)
@price = price
refresh(@price)
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(price)
self.contents.clear
self.contents.draw_text(0, -4, 80, 24, "Prix")
draw_currency_value(price, 4, 12, 120)
end
end


#==============================================================================
# ** Window_WeapUpgradeStatus
#------------------------------------------------------------------------------
# Cette fenêtre vous indique ce que l'amélioration fera a votre arme
#==============================================================================

class Window_WeapUpgradeStatus < Window_Base
#--------------------------------------------------------------------------
# * Initialisation de l'objet
# x : Coordonnée X de la fenêtre
# y : Coordonnée Y de la fenêtre
# actor : Héros
#--------------------------------------------------------------------------
def initialize(x, y, weapon)
super(x, y, 160, WLH * 4 + 32)
@weapon = weapon
refresh(@weapon)
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(weapon)
@weapon = weapon
unless @weapon == nil
self.contents.clear
draw_parameter(0, 0, 0)
draw_parameter(0, WLH * 1, 1)
draw_parameter(0, WLH * 2, 2)
draw_parameter(0, WLH * 3, 3)
end
end
#--------------------------------------------------------------------------
# * Paramètres après l'équipement
# new_atk : Attaque après l'équipement
# new_def : Défense après l'équipement
# new_spi : Esprit/Intelligence après l'équipement
# new_agi : Agilité après l'équipement
#--------------------------------------------------------------------------
def set_new_stats(new_atk, new_def, new_spi, new_agi)
if @new_atk != new_atk or @new_def != new_def or
@new_spi != new_spi or @new_agi != new_agi
@new_atk = new_atk
@new_def = new_def
@new_spi = new_spi
@new_agi = new_agi
refresh(@weapon)
end
end
#--------------------------------------------------------------------------
# * Get Post Equip Parameter Drawing Color
# old_value : parameter before equipment change
# new_value : parameter after equipment change
#--------------------------------------------------------------------------
def new_parameter_color(old_value, new_value)
if new_value > old_value # Get stronger
return power_up_color
elsif new_value == old_value # No change
return normal_color
else # Get weaker
return power_down_color
end
end
#--------------------------------------------------------------------------
# * Afficher les paramètres
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : type du paramètre (0 - 3)
#--------------------------------------------------------------------------
def draw_parameter(x, y, type)
case type
when 0
name = "For." # inscrivez Ici ce qui correspond à la Force (5 Caractères Max.)
value = @weapon.atk
new_value = @new_atk
when 1
name = "Def." # inscrivez Ici ce qui correspond à la Défense (5 Caractères Max.)
value = @weapon.def
new_value = @new_def
when 2
name = "Int." # inscrivez Ici ce qui correspond à la Intelligence (5 Caractères Max.)
value = @weapon.spi
new_value = @new_spi
when 3
name = "Agi." # inscrivez Ici ce qui correspond à la Agilité (5 Caractères Max.)
value = @weapon.agi
new_value = @new_agi
end
self.contents.font.color = system_color
self.contents.draw_text(x + 4, y, 80, WLH, name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 50, y, 30, WLH, value, 2)
self.contents.font.color = system_color
self.contents.draw_text(x + 79, y, 20, WLH, ">", 1)
if new_value != nil
self.contents.font.color = new_parameter_color(value, new_value)
self.contents.draw_text(x + 98, y, 30, WLH, new_value, 2)
end
end
end

#==============================================================================
# ** Scene_Weapons_Upgrade
#------------------------------------------------------------------------------
# Cette classe indique le processus d'amélioration de l'arme
#==============================================================================

class Scene_Weapons_Upgrade < Scene_Base
#--------------------------------------------------------------------------
# * Initialisation de l'objet
# weapon_up_index : Position initiale du curseur de commande
#--------------------------------------------------------------------------
def initialize(weapon_up_index = 0, player_index = 0)
@weapon_up_index = weapon_up_index
@actor_index = player_index
@actor = $game_party.members[player_index]
n = @actor.weapon_id
@weapon = $data_weapons[n]
end
#--------------------------------------------------------------------------
# * Démarrage du processus
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_select_window
@gold_window = Window_Gold.new(384, 360)
@character_window = Window_Char_WeaponStatus.new(0, 0)
@header_window = Window_Base.new(384, 0, 160, 80)
#--------Shop Heading --------------------A34sZ1A -----------------------
@header_window.contents.draw_text(0, 0, 128, 24, "Choisissez l'arme", 1)
@header_window.contents.draw_text(0, 24, 128, 24, "à améliorer", 1)
#--------Shop Heading End ----------------A34sZ1A -----------------------
@upgrade_window = Window_WeapUpgradeStatus.new(384, 160, @weapon)
@upgrade_window.visible = false
@price_window = Window_Akin_Price.new(384, 288, 0)
@price_window.visible = false
@confirm_window = Window_Confirm.new
@confirm_window.visible = false
end
#--------------------------------------------------------------------------
# * Fin du processus
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@select_window.dispose
@gold_window.dispose
@character_window.dispose
@header_window.dispose
@upgrade_window.dispose
@price_window.dispose
@confirm_window.dispose
$game_party.last_actor_index = 0
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@select_window.update
@gold_window.update
@character_window.update
@confirm_window.update
if @select_window.active
@upgrade_window.visible = false
@price_window.visible = false
update_select_selection
elsif @character_window.active
@upgrade_window.visible = true
@price_window.visible = true
update_actor_selection
update_weapon_upgrade
elsif @confirm_window.active
update_confirm_window_selection
end
end
#--------------------------------------------------------------------------
# * Création d'une fenêtre de confirmation
#--------------------------------------------------------------------------
def create_select_window
#--------Textes du menus -------------A34sZ1A ------------------------
s1 = "Améliorer"
s2 = "Quitter"
#------- Fin----------------------------------------------------------------------
@select_window = Window_Command.new(160, [s1, s2])
@select_window.x = 384
@select_window.y = 80
@select_window.index = @weapon_up_index
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_select_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
Sound.play_decision
case @select_window.index
when 0 # Upgrade
start_actor_selection
when 1 # Back
return_scene
end
end
end
#--------------------------------------------------------------------------
# * Start Actor Selection
#--------------------------------------------------------------------------
def start_actor_selection
@select_window.active = false
@character_window.active = true
@character_window.index = 0
end
#--------------------------------------------------------------------------
# * End Actor Selection
#--------------------------------------------------------------------------
def end_actor_selection
@select_window.active = true
@character_window.active = false
@character_window.index = -1
end
#--------------------------------------------------------------------------
# * Update Actor Selection
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
@upgrade_window.visible = false
@price_window.visible = false
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @character_window.index
upgrade_weapon($game_party.last_actor_index)
end
end
#--------------------------------------------------------------------------
# * Update Confirm Window
#--------------------------------------------------------------------------
def update_confirm_window_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@confirm_window.active = false
@confirm_window.visible = false
@confirm_window.index = 0
@character_window.active = true
@confirm_window.close
elsif Input.trigger?(Input::C)
if @confirm_window.index == 0 # Yes
@confirm_window.active = false
@confirm_window.visible = false
@confirm_window.index = 0
@character_window.active = true
Sound.play_use_skill
player_index = @character_window.index
@actor = $game_party.members[player_index]
n = @actor.weapon_id
equiped_weapon = $data_weapons[n]
$game_party.lose_gold(@price)
Akin_Weapons.level_up(equiped_weapon)
@character_window.refresh
@gold_window.refresh
elsif @confirm_window.index == 1 # No
Sound.play_cancel
@confirm_window.active = false
@confirm_window.visible = false
@confirm_window.index = 0
@character_window.active = true
@confirm_window.close
end
end
end
#--------------------------------------------------------------------------
# * Update Upgrade Window
#--------------------------------------------------------------------------
def update_weapon_upgrade
player_index = @character_window.index
@actor = $game_party.members[player_index]
n = @actor.weapon_id
@weapon = $data_weapons[n]
unless @weapon == nil
#--------Formule des prix -------------A34sZ1A -----------------------
# Les prix augmentent de 20 % de leur valeur précédente + 1
# La valeur est affiché dans la fenêtre
# Soyez sur que la valeur soit un entier en utilisant ".to_i"
# Si vous modifiez la fonction, une autre à besoin d'être changée
# cherchez SER23
temp = Math.exp(@weapon.level / 1.7)
@price = 100 * @weapon.level + temp
@price = @price.to_i
#-------Fin de la formule des prix ---------------------------------------------
@upgrade_window.refresh(@weapon)
@price_window.refresh(@price)
@upgrade_window.visible = true
@price_window.visible = true
if @weapon.level < 20
#--------Fonctions niveau supplémentaire------BZ8q1-------A34sZ1A -----------------------
# Les niveaux augmentent de 20 % de leur valeur précédente + 1
# Faites que cette formule soit la même que celle mise pour le niveau supplémentaire
# La valeur est affiché dans la fenêtre
# Soyez sur que la valeur soit un entier en utilisant "Integer()"
after_atk = Integer(@weapon.atk * 1.2 + 1)
after_def = Integer(@weapon.def * 1.2 + 1)
after_spi = Integer(@weapon.spi * 1.2 + 1)
after_agi = Integer(@weapon.agi * 1.2 + 1)
#-------Fin des fonctions niveau supplémentaire-----------------------------------------
@upgrade_window.set_new_stats(after_atk, after_def, after_spi, after_agi)
else
@upgrade_window.set_new_stats(@weapon.atk, @weapon.def, @weapon.spi, @weapon.agi)
@price_window.refresh("/ ")
end
else
@upgrade_window.visible = false
@price_window.visible = false
end
end
#--------------------------------------------------------------------------
# * Upgrade Weapon Selected
#--------------------------------------------------------------------------
def upgrade_weapon(player_index)
@actor = $game_party.members[player_index]
n = @actor.weapon_id
equiped_weapon = $data_weapons[n]
if equiped_weapon == nil
Sound.play_buzzer
else
#--------Formule des prix ----SER23---------A34sZ1A -------------------
# Les niveaux augmentent de 20 % de leur valeur précédente + 1
# Faites que cette formule soit la même que celle mise pour la formule des prix
# La valeur est affiché dans la fenêtre
# Soyez sur que la valeur soit un entier en utilisant ".to_i"
temp = Math.exp(@weapon.level / 1.7)
@price = 100 * @weapon.level + temp
@price = @price.to_i
#-------Fin de la Formule des prix ---------------------------------------------

#--------Niveau maximum de l'arme-------------A34sZ1A -----------------------
# Changer le nombre après"if equiped_weapon.level >="
# en le niveau maximum que l'arme peut atteindre
if equiped_weapon.level >= 20
#--------Fin niveau maximum de l'arme---- ---A34sZ1A -----------------------
Sound.play_buzzer
elsif @price > $game_party.gold
Sound.play_buzzer
else
Sound.play_decision
@confirm_window.visible = true
@character_window.active = false
@confirm_window.open
@confirm_window.index = 0
@confirm_window.active = true
end
@character_window.refresh
end
end

#--------------------------------------------------------------------------
# * Retour à la map
#--------------------------------------------------------------------------
def return_scene
#--------Fin du retour-------------A34sZ1A -----------------------
# Éditez cette ligne de code si vous voulez utiliser ce système par
# le menu principal
#$scene = Scene_Menu.new(0) # Changez ce nombre pour placer le curseur dans le menu
$scene = Scene_Map.new
end
end


# Cela édite la classe Scene_File pour ajouter une option de sauvegarde et de chargement des niveaux des armes.
class Scene_File < Scene_Base
#-------------------------------Alias List
alias akin_weaps_write_save_data write_save_data
alias akin_weaps_read_save_data read_save_data

def write_save_data(file)
akin_weaps_write_save_data(file)
Marshal.dump($data_weapons, file)
end

def read_save_data(file)
akin_weaps_read_save_data(file)
$data_weapons = Marshal.load(file)
end
end



Screen:

Amélioration d'armes [VX] Amelio_arme
Hitsugaya
Hitsugaya
Admin

Messages : 75
Date d'inscription : 24/06/2010

https://mmorpg-extreme.forum-actif.net

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum