Sujet: [VX] Forge " Matsuo " Jeu 28 Mai 2009 - 16:58
Auteur : ASHKA ( pour moi intialement, d'où mon partage )
Nom : ForgeMatsuo ( bien que je n'en sois nullement l'auteur, d'ailleurs je n'ai pas choisi le nom x) ).
Action : Permet d'améliorer une arme. Par exemple, si le joueur possède une épée de cuivre, il peut l'améliorer via un forgeron pour la changer en " épée aiguisée ". Ce n'est donc pas une sorte d'alchimie ( style mog dans KH I & II ), contrairement à la dernière forge en date, mais bien une amélioration comme dans les Suikoden.
Utilisation :
Appel :
Appelez cette forge grâce à un event, et un appel de de script :
Code:
$scene = Forge_Matsuo.new
Le nom de cette forge sera alors " le chaudron " ( nom de base modifiable via le module du script ). Si vous souhaitez un nom " personnalisé ", faites cet appel de script :
Code:
$scene = Forge_Matsuo.new("Ton_Nom")
Pour le nom " Forge de Lesternia " pour votre forge, il faut donc cet appel : $scene = Forge_Matsuo.new("Forge de Lesternia")
____
Configuration :
Ce script possède un module qui doit être programmé ; vous devez indiquer quelle arme ( grâce à l'ID ) se change en laquelle, et combien ça coûte.
Vous devez complèter le module ( à la suite de " info = { " ) avec ceci :
X => [Y, ZZZ]
Le X étant l'ID de l'arme à améliorer, le Y l'arme améliorée et le ZZZ le prix de l'amélioration. N'oubliez pas le " , " entre chacune de ces données, sauf à la dernière.
Ex :
1 => [2, 150], 2 => [3, 300], 3 => [4, 450]
}
Script :
Spoiler:
Code:
################################### =begin MODE D'EMPLOI Tu peux appeler ce script grace à une insertion de script :
$scene = Forge_Matsuo.new
La forge aura ainsi le nom defini par defaut ( voir ci-dessous ) Pour lui indiquer un nom spécifique, utilise ceci :
$scene = Forge_Matsuo.new("Ton_Nom")
Configure la liste ci-dessous pour l'evolution des armes
=end ################################### module Forge # Indique ici la table d'evolution des differentes armes du jeu : # ID de l'arme possédé => [ ID de l'arme amélioré, somme necessaire ] Info = { 1 => [2, 150] }
# Nom par defaut de la forge, utilisé si rien n'est indiqué : Nom_defaut = "Le chaudron"
end ################################### class Forge_Matsuo < Scene_Base def initialize(name = Forge::Nom_defaut) @name = name end def start create_menu_background @entete = Window_Help.new @help = Window_Help.new @help.y = 56 @choix = Choix_Arme.new @choix.help_window = @help @desc = Desc_Arme.new(@choix.item) @confirme = Window_Command.new(200, ["Améliorer", "Annuler"]) @confirme.x = 172 @confirme.y = (208 - ((2*24+32) / 2)) @confirme.active = false @confirme.visible = false end def terminate dispose_menu_background @entete.dispose @help.dispose @choix.dispose @desc.dispose @confirme.dispose end def update update_menu_background @entete.set_text("Ouverture du '#{@name}' ...", 1) if @confirme.active update_confirme return end @help.update @choix.update @item = @choix.item @desc.refresh(@item) if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) @wpn = @choix.item if @choix.enable?(@wpn) Sound.play_decision @choix.active = false @confirme.visible = true @confirme.active = true else Sound.play_buzzer end end end def update_confirme @confirme.update if Input.trigger?(Input::B) Sound.play_cancel @choix.active = true @confirme.visible = false @confirme.active = false elsif Input.trigger?(Input::C) Sound.play_decision tab = Forge::Info[@wpn.id] obj = $data_weapons[tab[0]] num = tab[1] if @confirme.index == 0 $game_party.lose_item(@wpn, 1, true) $game_party.lose_gold(num) $game_party.gain_item(obj, 1) $scene = Forge_Matsuo.new(@name) else @choix.active = true @confirme.visible = false @confirme.active = false end end end end ################################### class Choix_Arme < Window_Item def initialize y = 56 * 2 super(0, y, 272, 416-y) @column_max = 1 self.index = 0 refresh end def enable?(item) tab = Forge::Info return (tab.keys.include?(item.id) and $game_party.gold > tab[item.id][1]) end def refresh @info = {} @data = [] for item in $game_party.items next unless item.is_a?(RPG::Weapon) @data.push(item) end for actor in $game_party.members id = actor.weapon_id next if id == 0 eqp = $data_weapons[id] next if @data.include?(eqp) @data.push(eqp) @info[eqp] = actor end @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) item = @data[index] if item != nil num = $game_party.item_number(item) if num == 0 chara_name = @info[item].character_name chara_index = @info[item].character_index draw_character(chara_name, chara_index, (rect.width - 24), rect.y) else text = " : #{num}" self.contents.draw_text(rect, text, 2) end enabled = enable?(item) rect.width -= 4 draw_item_name(item, rect.x, rect.y, enabled) end end def draw_character(character_name, character_index, x, y) return if character_name == nil bitmap = Cache.character(character_name) sign = character_name[/^[\!\$]./] if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) rect = Rect.new(x, y, 24, 24) self.contents.stretch_blt(rect, bitmap, src_rect) end end ################################### class Desc_Arme < Window_Base def initialize(item) super(272, 56*2, 272, 416-56*2) refresh(item) end def refresh(item) if @item != item tab = Forge::Info if tab.keys.include?(item.id) up = true else up = false end w = 272-32 self.contents.clear self.contents.draw_text(0, 0, w, 24, "Choississez l'arme", 1) self.contents.draw_text(0, 24, w, 24, "à améliorer", 1) x = (w / 2) - ((self.contents.text_size(item.name).width + 24) / 2) draw_item_name(item, x, 48, up) self.contents.font.color.alpha = 255 if up cout = tab[item.id][1].to_s + " #{Vocab.gold}" self.contents.draw_text(0, 72, w, 24, "Coût : #{cout}", 1) self.contents.fill_rect(0, 106, w, 4, normal_color) self.contents.draw_text(0, 120, w, 24, "Amélioration :", 1) obj = $data_weapons[tab[item.id][0]] x = (w / 2) - ((self.contents.text_size(obj.name).width + 24) / 2) draw_item_name(obj, x, 144, up) self.contents.font.color.alpha = 255 self.contents.draw_text(0, 168, w/2, 24, "#{Vocab.atk} :", 1) self.contents.draw_text(0, 192, w/2, 24, "#{Vocab.def} :", 1) self.contents.draw_text(0, 216, w/2, 24, "#{Vocab.spi} :", 1) self.contents.draw_text(0, 240, w/2, 24, "#{Vocab.agi} :", 1) set_evolution(item, obj) else self.contents.draw_text(0, 144, w, 24, "Impossible à améliorer ...", 1) end @item = item end end def set_evolution(item, obj) w = 272-32 tab1 = [item.atk, item.def, item.spi, item.agi] tab2 = [obj.atk, obj.def, obj.spi, obj.agi] red = Color.new(255, 0, 0) green = Color.new(0, 255, 0) for num in 0..3 x = tab1[num] y = tab2[num] if x > y color = red dif = (x - y) text = "- #{dif}" elsif y > x color = green dif = (y - x) text = "+ #{dif}" else color = normal_color text = "==" end self.contents.font.color = color self.contents.draw_text(w/2, 168 + (num * 24), w/2, 24, text, 1) end self.contents.font.color = normal_color end end ###################################
Screen :
N'oubliez pas HK dans vos crédits ^^
Vincent Valentine
Templier Lv.15
Age : 33 Inscrit le : 19/07/2008 Messages : 1317
Sujet: Re: [VX] Forge " Matsuo " Ven 29 Mai 2009 - 17:30
Sujet: Re: [VX] Forge " Matsuo " Mer 4 Nov 2009 - 12:26
Moi, sa me marque : Script 'Forge' line 19: SyntaxError occured
Et voici la fameuse ligne 19 :
17# Indique ici la table d'evolution des differentes armes du jeu : 18# ID de l'arme possédé => [ ID de l'arme amélioré, somme necessaire ] 19 Info = { 1 => [34, 080], 20 2 => [35, 140], 21 3 => [36, 220], 22 4 => [37, 440] 23 24 } 25 26 27# Nom par defaut de la forge, utilisé si rien n'est indiqué :
Matsuo Kaito
Age : 33 Inscrit le : 27/06/2008 Messages : 10881
Sujet: Re: [VX] Forge " Matsuo " Mer 4 Nov 2009 - 12:37
Le bug viendrait de l'espace à la ligne 23, peut-être ?
ASHKA
Voyageur Lv.10
Age : 42 Inscrit le : 04/12/2008 Messages : 383
Sujet: Re: [VX] Forge " Matsuo " Mer 4 Nov 2009 - 12:50
Essaye avec 80 au lieu de 080.
zaioun
Habitant Lv.6
Age : 28 Inscrit le : 06/05/2009 Messages : 121
Sujet: Re: [VX] Forge " Matsuo " Mer 4 Nov 2009 - 13:12
Ok je vais essayer, merci quand même !
EDIT : Sa y est, sa marche ! Merci beaucoup !!
Zodiak
Seigneur Lv.18
Age : 29 Avertissements : 3Inscrit le : 20/12/2008 Messages : 2292
Sujet: Re: [VX] Forge " Matsuo " Mer 4 Nov 2009 - 13:39
Je profite du nécro pour mettre un p'tit message ^o^ Cool, c'est bien ça comme script
Merci à toi ASHKA et à Matsu (sans eux ce script n'aurait pas existé *.*) : possibilité que je l'utilise x]
Alors, j'ai un autre problème, quand j'améliore mon arme, je ne peut pas l'équiper, pourtant, j'ai tout bien mis , que l'arme était pour paladin et tout ça, pourriez-vous m'aider s'il vous plait ?
Il y a un nécropost de deux jours, excuser moi, mais je crois savoir ce qui cloche. Vous fichez pas de moi, hein ? Mais comme zaioun a l'air déséspéré, je lui dit : -ligne 19, rajoute un espace avant le [ ca fait peut être buger la ligne suivante. Sinon, est-ce que tes autres améliorations marchent ? Sinon, c'est pas ca et mon post n'aura servit a rien.
Quoique... "forgematsuo" lol ! T'es célébre mec ! J'ai aussi trouvé dans un projet un mage au cheveux verts qui n'a plus ses souvenirs nommé Matsuo. Non, mais t'es vraiment célébre !
zaioun : Ton problème j'ai pas d'autres idées et ca m'énerve ! Car je ne suis pas sur du tout que ce soit l'espace qui fasse buger. Sinon, les armes de départ pour ton jeu c'est pas top et l'icone de "l'épée enflammée" est tordue mais pas enflammée, c'est voulu ? Autre solution : Une incompatibilité de scripts peut-être ?
zaioun
Habitant Lv.6
Age : 28 Inscrit le : 06/05/2009 Messages : 121
Sujet: Re: [VX] Forge " Matsuo " Mer 6 Jan 2010 - 11:53
Oui bon pour les armes c'est normal, je compte les modifier au fur et à mesure du jeu^^. Après pour l'espace à rajouter je vais essayer je te dirais ça après sinon merci pour ta réponse.
LeHomer
Habitant Lv.6
Age : 28 Inscrit le : 04/11/2009 Messages : 131
Sujet: Re: [VX] Forge " Matsuo " Mer 6 Jan 2010 - 13:19
T'as pas répondu si les autres armes du scripts marchaient ou pas, mais bon, c'est peut-être pas important... J'espère que ca va marcher puisque je compte mainenant l'utiliser !!
molgate
Poulet Lv.1
Avertissements : 3Inscrit le : 20/02/2010 Messages : 9
Double post + nécropost + post sans présentation. Je suis désolé, mais je dois te mettre un avertissement. Va te présenter dans la section présentation et va relire le règlement, ou tu risques d'être rapidement banni pour rien. Merci.