Page 2 sur 2 • 1, 2
Re: Petite modification de script
Dim 28 Fév 2016 - 10:39
Pour la transition d'ouverture viré :
par contre, pour la gestion du défilement, tu pourrais me paramétrer un objet avec suffisamment de conditions pour que ça dépasse le cadre?
- Code:
=begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
Changed script name from Equipment Level Requirements
to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
#--------------------------------------------------------------------------
# ● If set to true then it compares the requirement with the actor's base
# stat rather than their current.
#--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
#--------------------------------------------------------------------------
# ● Vocab for switch's
# every switch_id in a different line
#--------------------------------------------------------------------------
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
#--------------------------------------------------------------------------
# ● Vocab for variables
# every variable_id in a different line
#--------------------------------------------------------------------------
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
class Game_Actor
def optimize_equipments
clear_equipments
equip_slots.size.times do |i|
next if !equip_change_ok?(i)
items = $game_party.equip_items.select do |item|
item.etype_id == equip_slots[i] &&
equippable?(item) && item.performance >= 0 && reqstate?(item)
end
change_equip(i, items.max_by {|item| item.performance })
end
end
def reqstate?(item)
unless item == nil
return false if level < item.levelreq
return false if reqstat(0) < item.mhpreq
return false if reqstat(1) < item.mmpreq
return false if reqstat(2) < item.atkreq
return false if reqstat(3) < item.defreq
return false if reqstat(4) < item.matreq
return false if reqstat(5) < item.mdfreq
return false if reqstat(6) < item.agireq
return false if reqstat(7) < item.lukreq
if item.switchreq > 0
return false unless $game_switches[item.switchreq]
end
if item.variablereq != 0
return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
end
if item.wepreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Weapon
end
return false unless e.include?(item.wepreq)
end
if item.armreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Armor
end
return false unless e.include?(item.armreq)
end
end
return true
end
#--------------------------------------------------------------------------
# ● New Method
#--------------------------------------------------------------------------
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
end
end
class Window_EquipItem
#--------------------------------------------------------------------------
# ● Check the requirements
#--------------------------------------------------------------------------
def enable?(item)
return @actor.reqstate?(item)
end
end
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def variablereq
self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
end
def levelreq
self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
end
def mhpreq
self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
end
def mmpreq
self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
end
def atkreq
self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
end
def defreq
self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
end
def matreq
self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
end
def mdfreq
self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
end
def agireq
self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
end
def lukreq
self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
end
def switchreq
self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
end
def wepreq
self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
end
def armreq
self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
end
end
end
class Window_Requirement < Window_Base
def initialize(x, y)
super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
#self.openness = 0
self.visible = false
self.z = 250
@item = nil
@actor = nil
refresh
end
def window_width
return 326
end
def window_height
return 224
end
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
end
def item ; return @item ; end
def item=(item)
@item = item
refresh
end
def actor ; return @actor ; end
def actor=(actor)
@actor = actor
refresh
end
def update
super
refresh
end
def refresh
contents.clear
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
@t = 2
change_color(normal_color)
draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
end
end
end
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ # This class performs the equipment screen processing.
#~ #==============================================================================
class Scene_Equip
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
#if @window_req.openness == 0 && @item_window.active && @item_window.item != nil
if !@window_req.visible && @item_window.active && @item_window.item != nil
Sound.play_cursor
@window_req.item=@item_window.item
@window_req.actor= @actor
@background = Sprite.new
@background.z = 200
@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
#@window_req.open
@window_req.visible = true
@item_window.deactivate
@item_window.visible = false
#elsif @window_req.openness == 255
elsif @window_req.visible
Sound.play_cancel
@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@window_req.visible = false
end
elsif Input.trigger?(:B)
#if @window_req.openness == 255
if @window_req.visible
Sound.play_cancel
@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@window_req.visible = false
end
end
end
end
class Scene_Item < Scene_ItemBase
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
@window_req.width = 544
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
#if @window_req.openness == 0 && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
if !@window_req.visible && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
Sound.play_cursor
@window_req.item=@item_window.item
@window_req.actor= @actor
@background = Sprite.new
@background.z = 200
@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
#@window_req.open
@item_window.visible = true
@item_window.deactivate
@item_window.visible = false
#elsif @window_req.openness == 255
elsif @window_req.visible
Sound.play_cancel
@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@item_window.visible = false
end
elsif Input.trigger?(:B)
#if @window_req.openness == 255
if @window_req.visible
Sound.play_cancel
@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@item_window.visible = false
end
end
end
end
par contre, pour la gestion du défilement, tu pourrais me paramétrer un objet avec suffisamment de conditions pour que ça dépasse le cadre?
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Dim 28 Fév 2016 - 19:04
Nickel la transition.
Je t'ai fait une nouvelle démo avec la première arme, la hache, blindée de conditions : http://www.mediafire.com/download/zxc22wc829cae2o/Ace+menu7.exe
On retrouve cette fameuse ligne où on voit l'extrémité du haut des lettres.
Je t'ai fait une nouvelle démo avec la première arme, la hache, blindée de conditions : http://www.mediafire.com/download/zxc22wc829cae2o/Ace+menu7.exe
On retrouve cette fameuse ligne où on voit l'extrémité du haut des lettres.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Mar 1 Mar 2016 - 9:36
Tu rencontres des soucis avec le défilement ?
Re: Petite modification de script
Mar 1 Mar 2016 - 10:44
oui, c'est pas si simple, car y'avait rien de prévu pour le défilement, et l'on a 2 surcharges de cette interface. Donc faut faire des modifications mais en prenant les 2 cas en compte.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Mar 1 Mar 2016 - 11:17
Ouh là, je viens de voir un truc. L'accès à l'interface depuis le menu Objets, je l'avais supprimé, mais je vois que tu l'as encore (je l'avais peut-être pas enlevé de la démo). Y a pas besoin de traiter ce cas-là. C'est juste depuis le menu Equipement qu'on doit pouvoir accéder à l'interface. Donc, je ne sais pas si c'est ça que tu appelles les 2 surcharges. En tout cas, je te préviens pour pas que tu bosses pour rien pour la partie avec le menu Objets.
Re: Petite modification de script
Mar 1 Mar 2016 - 13:08
ça va le faire.
Par contre ça :
INTERDIT!!
Affiche le nombre de FPS (F2), quant tu passes dans l'affichage de requirrement avec CTRL. Commentes #refresh, et relances, ça va te surprendre
Par contre ça :
- Code:
def update
super
refresh
end
INTERDIT!!
Affiche le nombre de FPS (F2), quant tu passes dans l'affichage de requirrement avec CTRL. Commentes #refresh, et relances, ça va te surprendre
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Mar 1 Mar 2016 - 13:10
Lol je ne vois pas du tout ce que ça fait.^^
J'ai 60 FPS tout le temps.
J'ai 60 FPS tout le temps.
Re: Petite modification de script
Mar 1 Mar 2016 - 13:25
Ce n'est pas possible.
si tu laisses le refresh dans l'update de la fenêtre requirement, et que tu entres dedans, elle devient active, et tu tombes à 7 FPS. car à chaque frame, le contenu est recréé avec le refresh.
Edit :
Les scripts modifiés :
Fomar0153 - Equipment requirements :
Vincent26 - Requirements type weapon
si tu laisses le refresh dans l'update de la fenêtre requirement, et que tu entres dedans, elle devient active, et tu tombes à 7 FPS. car à chaque frame, le contenu est recréé avec le refresh.
Edit :
Les scripts modifiés :
Fomar0153 - Equipment requirements :
- Code:
=begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
Changed script name from Equipment Level Requirements
to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
#--------------------------------------------------------------------------
# ● If set to true then it compares the requirement with the actor's base
# stat rather than their current.
#--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
#--------------------------------------------------------------------------
# ● Vocab for switch's
# every switch_id in a different line
#--------------------------------------------------------------------------
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
#--------------------------------------------------------------------------
# ● Vocab for variables
# every variable_id in a different line
#--------------------------------------------------------------------------
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
class Game_Actor
def optimize_equipments
clear_equipments
equip_slots.size.times do |i|
next if !equip_change_ok?(i)
items = $game_party.equip_items.select do |item|
item.etype_id == equip_slots[i] &&
equippable?(item) && item.performance >= 0 && reqstate?(item)
end
change_equip(i, items.max_by {|item| item.performance })
end
end
def reqstate?(item)
unless item == nil
return false if level < item.levelreq
return false if reqstat(0) < item.mhpreq
return false if reqstat(1) < item.mmpreq
return false if reqstat(2) < item.atkreq
return false if reqstat(3) < item.defreq
return false if reqstat(4) < item.matreq
return false if reqstat(5) < item.mdfreq
return false if reqstat(6) < item.agireq
return false if reqstat(7) < item.lukreq
if item.switchreq > 0
return false unless $game_switches[item.switchreq]
end
if item.variablereq != 0
return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
end
if item.wepreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Weapon
end
return false unless e.include?(item.wepreq)
end
if item.armreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Armor
end
return false unless e.include?(item.armreq)
end
end
return true
end
#--------------------------------------------------------------------------
# ● New Method
#--------------------------------------------------------------------------
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
end
end
class Window_EquipItem
#--------------------------------------------------------------------------
# ● Check the requirements
#--------------------------------------------------------------------------
def enable?(item)
return @actor.reqstate?(item)
end
end
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def variablereq
self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
end
def levelreq
self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
end
def mhpreq
self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
end
def mmpreq
self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
end
def atkreq
self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
end
def defreq
self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
end
def matreq
self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
end
def mdfreq
self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
end
def agireq
self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
end
def lukreq
self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
end
def switchreq
self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
end
def wepreq
self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
end
def armreq
self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
end
end
end
class Window_Requirement < Window_Base
def initialize(x, y)
super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
#self.openness = 0
self.visible = false
self.z = 250
@item = nil
@actor = nil
self.padding = 16
refresh
end
def window_width
return 326
end
def window_height
return 224
end
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
end
def item ; return @item ; end
def item=(item)
@item = item
refresh
end
def actor ; return @actor ; end
def actor=(actor)
@actor = actor
refresh
end
def update
super
#refresh
end
def refresh
self.oy = 0
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
# Calculer la taille du contenu
@t = 2
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
@t += 1
end
end
if item != nil && item.wepreq != 0 && actor != nil
@t += 1
end
if item != nil && item.armreq != 0 && actor != nil
@t += 1
end
if item && item.switchreq != 0
@t += 1
end
if item && item.variablereq != 0
@t += 1
end
self.contents = Bitmap.new(width - self.padding * 2, @t * line_height)
change_color(system_color)
draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
@t = 2
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
end
end
def downStat
dif = (@t * line_height) - (height - self.padding * 2)
save_oy = self.oy
if self.oy + line_height > dif
self.oy = [dif,0].max
else
self.oy += line_height
end
if save_oy != self.oy
Sound.play_cursor
end
end
def upStat
save_oy = self.oy
if self.oy - line_height < 0
self.oy = 0
else
self.oy -= line_height
end
if save_oy != self.oy
Sound.play_cursor
end
end
end
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ # This class performs the equipment screen processing.
#~ #==============================================================================
class Scene_Equip
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
#if @window_req.openness == 0 && @item_window.active && @item_window.item != nil
if !@window_req.visible && @item_window.active && @item_window.item != nil
Sound.play_cursor
@window_req.item=@item_window.item
@window_req.actor= @actor
#@background = Sprite.new
#@background.z = 200
#@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
#@window_req.open
@window_req.visible = true
@item_window.deactivate
@item_window.visible = false
#elsif @window_req.openness == 255
elsif @window_req.visible
Sound.play_cancel
#@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@window_req.visible = false
end
elsif Input.trigger?(:B)
#if @window_req.openness == 255
if @window_req.visible
Sound.play_cancel
#@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@window_req.visible = false
end
elsif Input.trigger?(:UP) && @window_req.visible
@window_req.upStat
#@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:DOWN) && @window_req.visible
@window_req.downStat
end
end
end
class Scene_Item < Scene_ItemBase
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
@window_req.width = 544
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
#if @window_req.openness == 0 && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
if !@window_req.visible && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
Sound.play_cursor
@window_req.item=@item_window.item
@window_req.actor= @actor
@background = Sprite.new
@background.z = 200
@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
#@window_req.open
@item_window.visible = true
@item_window.deactivate
@item_window.visible = false
#elsif @window_req.openness == 255
elsif @window_req.visible
Sound.play_cancel
@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@item_window.visible = false
end
elsif Input.trigger?(:B)
#if @window_req.openness == 255
if @window_req.visible
Sound.play_cancel
@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@item_window.visible = false
end
end
end
end
Vincent26 - Requirements type weapon
- Code:
#Notetag the weapons/armors
#<maitrise name,y>
#<maitrise_rang name,rang>
Equipement_Vocab = {
# Variable_ID => "Vocab",
"Hache" => "Maitrise :",
"Lance" => "Maitrise :",
"Griffes" => "Maitrise :",
"Epée" => "Maitrise :",
"Katana" => "Maitrise :",
"Arc" => "Maitrise :",
"Dague" => "Maitrise :",
"Massue" => "Maitrise :",
"Bâton" => "Maitrise :",
"Arme à feu" => "Maitrise :",
}
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def maitrise
self.note =~ /<maitrise (.*)>/i ? $1 : 0
end
def maitrise_rang
self.note =~ /<maitrise_rang (.*)>/i ? $1 : 0
end
end
end
class Window_EquipItem
alias enable_weapon_upgrade? enable?
def enable?(item)
return false unless enable_weapon_upgrade?(item)
unless item == nil
if item.maitrise != 0
array = item.maitrise.split(",")
array[1] = array[1].to_i
name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
return false if nbr < array[1]
end
if item.maitrise_rang != 0
array = item.maitrise_rang.split(",")
name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
nbr2 = Weapon_Upgrade::LVL_DESCRIPTION.key(array[1])
nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
return false if nbr < nbr2
end
end
return true
end
alias draw_remove_equip_weapon_upgrade draw_remove_equip
def draw_remove_equip(rect)
change_color(normal_color, true)
draw_remove_equip_weapon_upgrade(rect)
end
end
class Window_Requirement
def refresh
contents.clear
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
@t = 2
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
@t += 1
end
end
if item != nil && item.wepreq != 0 && actor != nil
@t += 1
end
if item != nil && item.armreq != 0 && actor != nil
@t += 1
end
if item && item.switchreq != 0
@t += 1
end
if item && item.variablereq != 0
@t += 1
end
if item && item.maitrise != 0
return if @actor == nil
@t += 1
end
if item && item.maitrise_rang != 0
return if @actor == nil
@t += 1
end
self.contents = Bitmap.new(width - self.padding * 2, @t * line_height)
@t = 2
change_color(system_color)
draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
@t += 1
end
if item && item.maitrise != 0
array = item.maitrise.split(",")
array[1] = array[1].to_i
name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
return if @actor == nil
nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
nbr >= array[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Equipement_Vocab[array[0]]+" "+array[1].to_s)
@t += 1
end
if item && item.maitrise_rang != 0
array = item.maitrise_rang.split(",")
name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
return if @actor == nil
nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
nbr2 = Weapon_Upgrade::LVL_DESCRIPTION.key(array[1])
nbr >= nbr2 ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Equipement_Vocab[array[0]]+" "+array[1])
@t += 1
end
end
end
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Mar 1 Mar 2016 - 13:54
Pas mal, merci bien.
Deux petites choses :
- Il y a un bug lorsqu'on sélectionne un équipement avec plein de conditions, qu'on descend en bas de la fenêtre, qu'on revient en arrière puis qu'on sélectionne un autre équipement pour vérifier les conditions, il faut remonter la fenêtre alors qu'on devrait démarrer d'en haut.
- Une petite amélioration si possible, est-ce qu'on pourrait garder le texte "Conditions requises" affiché quand on fait défiler les pré-requis ? De façon à ce que les conditions uniquement défilent, et pas l'en-tête qui indique au joueur ce qu'il visualise.
Deux petites choses :
- Il y a un bug lorsqu'on sélectionne un équipement avec plein de conditions, qu'on descend en bas de la fenêtre, qu'on revient en arrière puis qu'on sélectionne un autre équipement pour vérifier les conditions, il faut remonter la fenêtre alors qu'on devrait démarrer d'en haut.
- Une petite amélioration si possible, est-ce qu'on pourrait garder le texte "Conditions requises" affiché quand on fait défiler les pré-requis ? De façon à ce que les conditions uniquement défilent, et pas l'en-tête qui indique au joueur ce qu'il visualise.
Re: Petite modification de script
Mar 1 Mar 2016 - 15:20
pour le petit bug, c'est un oubli de ma part :
Vincent26 - Requirements type weapon :
Pour l'amélioration, ce n'est pas possible, il faudrait réécrire tout le code de la fenêtre et il n'y aura plus la possibilité d'afficher les flèches.
Vincent26 - Requirements type weapon :
- Code:
#Notetag the weapons/armors
#<maitrise name,y>
#<maitrise_rang name,rang>
Equipement_Vocab = {
# Variable_ID => "Vocab",
"Hache" => "Maitrise :",
"Lance" => "Maitrise :",
"Griffes" => "Maitrise :",
"Epée" => "Maitrise :",
"Katana" => "Maitrise :",
"Arc" => "Maitrise :",
"Dague" => "Maitrise :",
"Massue" => "Maitrise :",
"Bâton" => "Maitrise :",
"Arme à feu" => "Maitrise :",
}
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def maitrise
self.note =~ /<maitrise (.*)>/i ? $1 : 0
end
def maitrise_rang
self.note =~ /<maitrise_rang (.*)>/i ? $1 : 0
end
end
end
class Window_EquipItem
alias enable_weapon_upgrade? enable?
def enable?(item)
return false unless enable_weapon_upgrade?(item)
unless item == nil
if item.maitrise != 0
array = item.maitrise.split(",")
array[1] = array[1].to_i
name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
return false if nbr < array[1]
end
if item.maitrise_rang != 0
array = item.maitrise_rang.split(",")
name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
nbr2 = Weapon_Upgrade::LVL_DESCRIPTION.key(array[1])
nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
return false if nbr < nbr2
end
end
return true
end
alias draw_remove_equip_weapon_upgrade draw_remove_equip
def draw_remove_equip(rect)
change_color(normal_color, true)
draw_remove_equip_weapon_upgrade(rect)
end
end
class Window_Requirement
def refresh
self.oy = 0
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
@t = 2
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
@t += 1
end
end
if item != nil && item.wepreq != 0 && actor != nil
@t += 1
end
if item != nil && item.armreq != 0 && actor != nil
@t += 1
end
if item && item.switchreq != 0
@t += 1
end
if item && item.variablereq != 0
@t += 1
end
if item && item.maitrise != 0
return if @actor == nil
@t += 1
end
if item && item.maitrise_rang != 0
return if @actor == nil
@t += 1
end
self.contents = Bitmap.new(width - self.padding * 2, @t * line_height)
@t = 2
change_color(system_color)
draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
@t += 1
end
if item && item.maitrise != 0
array = item.maitrise.split(",")
array[1] = array[1].to_i
name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
return if @actor == nil
nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
nbr >= array[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Equipement_Vocab[array[0]]+" "+array[1].to_s)
@t += 1
end
if item && item.maitrise_rang != 0
array = item.maitrise_rang.split(",")
name = (Weapon_Upgrade::LIST_TYPE_ARME.index(array[0])+1).to_s
return if @actor == nil
nbr = $game_actors[@actor.id].weapon_upgrade[name] == nil ? 0 : $game_actors[@actor.id].weapon_upgrade[name]
nbr2 = Weapon_Upgrade::LVL_DESCRIPTION.key(array[1])
nbr >= nbr2 ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Equipement_Vocab[array[0]]+" "+array[1])
@t += 1
end
end
end
Pour l'amélioration, ce n'est pas possible, il faudrait réécrire tout le code de la fenêtre et il n'y aura plus la possibilité d'afficher les flèches.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Mar 1 Mar 2016 - 15:41
Ok, ça marche, pas de soucis.
Merci beaucoup pour ton aide pour l'optimisation de toutes ces interfaces. Maintenant, j'ai quelque chose d'assez uniforme et pas trop moche. A priori, il n'y a plus aucun bug avec mes menus. Je vais jeter un dernier coup d’œil au cas où mais ça semble bon. Je te contacterai par MP si jamais je rencontre un autre souci avec les menus. Du coup, il ne me reste plus qu'un seul problème dans ma démo mais qui n'a rien à voir avec les menus. Je ferai un nouveau topic pour ça très probablement.
Merci encore pour ce que tu as fais.
Merci beaucoup pour ton aide pour l'optimisation de toutes ces interfaces. Maintenant, j'ai quelque chose d'assez uniforme et pas trop moche. A priori, il n'y a plus aucun bug avec mes menus. Je vais jeter un dernier coup d’œil au cas où mais ça semble bon. Je te contacterai par MP si jamais je rencontre un autre souci avec les menus. Du coup, il ne me reste plus qu'un seul problème dans ma démo mais qui n'a rien à voir avec les menus. Je ferai un nouveau topic pour ça très probablement.
Merci encore pour ce que tu as fais.
Page 2 sur 2 • 1, 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|