coco Dieu Maker Lv 44
Nombre de messages : 2989 Age : 30
| Sujet: [tuto]faire un a-rpg (avec script) Jeu 28 Juin 2007, 20:06 | |
| Nous prendrons pour base le tuto d'a-rpg avec événements : Si vous voulez voir le résultat allez ici : Il faut absolument partir de ce tuto pour arriver à celui la Bon voici les codes : Remplacer Window_MenuStatus par celui là - Spoiler:
- Code:
-
#============================================================================== # ■ Window_MenuStatus #------------------------------------------------------------------------------ # Modifié par coco76 #==============================================================================
class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 0, 480, 480) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 116 actor = $game_party.actors[i] draw_actor_graphic(actor, x - 40, y 80) draw_actor_name(actor, x, y) self.contents.draw_text(60, 40, 96, 32, $game_variables[20].to_s) self.contents.draw_text(75, 40, 96, 32, "/8 PV") end end #-------------------------------------------------------------------------- # ● カーソルの矩形更新 #-------------------------------------------------------------------------- def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(0, @index * 116, self.width - 32, 96) end end end
Remplacer Window_SkillStatus par celui là : - Spoiler:
- Code:
-
#============================================================================== # ■ Window_SkillStatus #------------------------------------------------------------------------------ # modifié par coco76 #==============================================================================
class Window_SkillStatus < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 # actor : アクター #-------------------------------------------------------------------------- def initialize(actor) super(0, 64, 640, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @actor = actor refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_name(@actor, 4, 0) end end
Replacer Window_EquipLeft par celui là - Spoiler:
- Code:
-
#============================================================================== # ■ Window_EquipLeft #------------------------------------------------------------------------------ # modifié par coco76 #==============================================================================
class Window_EquipLeft < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 # actor : アクター #-------------------------------------------------------------------------- def initialize(actor) super(0, 64, 272, 192) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @actor = actor refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_graphic(@actor, 40, 112) draw_actor_name(@actor, 4, 0) end #-------------------------------------------------------------------------- # ● 装備変更後のパラメータ設定 # new_atk : 装備変更後の攻撃力 # new_pdef : 装備変更後の物理防御 # new_mdef : 装備変更後の魔法防御 #-------------------------------------------------------------------------- def set_new_parameters(new_atk, new_pdef, new_mdef) if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef @new_atk = new_atk @new_pdef = new_pdef @new_mdef = new_mdef refresh end end end
Remplacer Window_EquipRight par celui là : - Spoiler:
- Code:
-
#============================================================================== # ■ Window_EquipRight #------------------------------------------------------------------------------ # modifié par coco76 #==============================================================================
class Window_EquipRight < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 # actor : アクター #-------------------------------------------------------------------------- def initialize(actor) super(272, 64, 368, 192) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @actor = actor refresh self.index = 0 end #-------------------------------------------------------------------------- # ● アイテムの取得 #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear @data = [] @data.push($data_weapons[@actor.weapon_id]) @data.push($data_armors[@actor.armor1_id]) @data.push($data_armors[@actor.armor2_id]) @data.push($data_armors[@actor.armor3_id]) @item_max = @data.size self.contents.font.color = system_color self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon) self.contents.draw_text(4, 32 * 1, 92, 32, "Bouclier") self.contents.draw_text(4, 32 * 2, 92, 32, "Accessoire") self.contents.draw_text(4, 32 * 3, 92, 32, "Arme de jet") draw_item_name(@data[0], 120, 32 * 0) draw_item_name(@data[1], 120, 32 * 1) draw_item_name(@data[2], 120, 32 * 2) draw_item_name(@data[3], 120, 32 * 3) end #-------------------------------------------------------------------------- # ● ヘルプテキスト更新 #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end
[/spoiler Et enfin remplacez Window_Status par : [spoiler] - Code:
-
#============================================================================== # ■ Window_Status #------------------------------------------------------------------------------ # modifié par coco76 #==============================================================================
class Window_Status < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 # actor : アクター #-------------------------------------------------------------------------- def initialize(actor) super(0, 0, 640, 480) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @actor = actor refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_graphic(@actor, 40, 112) draw_actor_name(@actor, 4, 0) self.contents.font.color = system_color self.contents.font.color = normal_color self.contents.font.color = system_color self.contents.draw_text(320, 160, 196, 32, "Equipement : ") self.contents.draw_text(320, 420, 96, 32, "Munition :") self.contents.draw_text(430, 420, 96, 32, $game_variables[19].to_s) self.contents.draw_text(320, 40, 96, 32, $game_variables[20].to_s) self.contents.draw_text(335, 40, 96, 32, "/8 PV") draw_item_name($data_weapons[@actor.weapon_id], 320 16, 208) draw_item_name($data_armors[@actor.armor1_id], 320 16, 256) draw_item_name($data_armors[@actor.armor2_id], 320 16, 304) draw_item_name($data_armors[@actor.armor3_id], 320 16, 352) end def dummy self.contents.font.color = system_color self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon) self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1) self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor3) self.contents.draw_text(320, 304, 96, 32, "Arme de jet") draw_item_name($data_weapons[@actor.weapon_id], 320 24, 144) draw_item_name($data_armors[@actor.armor1_id], 320 24, 208) draw_item_name($data_armors[@actor.armor3_id], 320 24, 336) draw_item_name($data_armors[@actor.armor4_id], 320 24, 400) end end
Fonctionnement1) Les armes de jetA) La baseAvec ces script les armures sont des armes de jet, les boucliers des boucliers et les casques des acessoires,les acessoires n'existent plus Ce dont nous n'avons pas besoin et barré Si vous ne voulez pas qu'une seule sorte d'armes de jet créez plusieurs armes de jet (armures) B) Les muintionsMaintenant que nous pouvons faire plusieurs types d'armes de jet il faut créez les munitions pour cela créez des objets qui servriront comme munition Bon maintenant il va falloir gerer le nombre de munition Faite un événement commun en processus parallelle et appelez le comme vous voulez Dedans mettez : Si vous avez plusieurs armes de jet : -condition le hero ? est équipé de l'armure ? -faite une variable munition (il faut absolument que ce soit la 19eme variable sinon ca ne marche pas) égale au nombre d'objets qui servent de munition pour cette arme de jetLes étapes soulignées sont à répeter autant de fois que vous avez d'armes de jet -Après le dernier sinon rendez la variable munition égale à 0 exemple : Si vous n'avez qu'une seule arme de jet faite comme précédamment mais en mettant la premiere parie qu'une seule fois exemple : C) Differents projectiles pour differentes armes de jetIl va falloir modifier l'événement commun projectile : Après la condition la touche ? est enfoncée il faut rajouter : -condition le hero ? est équipé de l'armure ? Ensuite il y a un modifier l'apparence de cet événement après chaque condition le hero regarde vers ? , il faut mettre l'apparence du projectile correspondant à l'arme de jet Ensuite entre la condition le hero ? est équipé de l'armure ? et le héro regarde vers le bas mettez : -condition l'objet ? (la munition de l'arme équipée) est possédé -enlevez une munition (de l'arme équipée) 2) La vieCe script affiche la vie du héro dans le menu mais ce n'est pas la vie qu'il y a dans le systeme normal de la base de donnée dans l'onglet héros Ce dont nous n'avons pas besoin a été barré La vie du héro est le nombre de la variable 20, donc si vous enlevez 1 à la variable 20 le hero perdera 1 PV La vie maximale de défaut de ce script est de 8 mais vous pouvez la changer en modifiant la ligne 33 du script Window_MenuStatus et en changant le script Window_Status à la ligne 34 Si vous ne voulez que 8 PV, j'ai un systeme pour les afficher sur la map sous forme de barre de vie Pour cela il faut importer les picture se trouvant ici dans votre projet Ensuit créer un évenement commun mettez le en processus parallelle et appelez le vie, dedans mettez : -condition la variable vie (il faut absolument que ce soit la variable 20) est égale à 0 -afficher l'image de la barre vide Si vous voulez que le héro soit teleporter à un endroit quand il meurt : -téléporter l'équipe (où vous voulez) -afficher un message (ce que vous voulez) -rendre la variable 20 (vie) à (le chiffre que vous voulez) Si vous voulez qu'il y ait un game over à la mort du hero : -fin du jeu Pour le reste il faut mettre : -condition la variable (20) vie est égale à ? -afficher l'image ? comme sur les captures d'écran La suite demain
Dernière édition par le Ven 29 Juin 2007, 19:06, édité 9 fois | |
|
Awakeing Maker Ultime Lv 34
Nombre de messages : 1779 Age : 36
| Sujet: Re: [tuto]faire un a-rpg (avec script) Jeu 28 Juin 2007, 22:29 | |
| Tu as vraiment crée ce script toi-même ? ____________ - Citation :
- [22:55:39] Falco : de toute façon Mex c'est un triso
- Citation :
- [12:23:52] Falco : Le pire dans l'histoire c'est que je suis vraiment gay
| |
|
dani_nouvel_star Maker experimenté Lv 9
Nombre de messages : 279 Age : 44
| Sujet: Re: [tuto]faire un a-rpg (avec script) Ven 29 Juin 2007, 01:52 | |
| ce n'est pas vraiment un tuto a-rpg mais je dirais que c'est une astuce pour utiliser la base de donnée de rmxp d'une autre manière. Les données peuvent ainsi être utilisé autrement. Les données inutiles peuvent ainsi devenir utile. Pour voir ce qu'affiche une classe window il faut regarder dans le refresh. Coco76 a chang2 les noms des données pour qu'ils aient une autre fonction. L'avantage est que ces données nouvellement nommées sont gérable dans la base de données de rmxp. Je fais aussi ça pour mon projet. Exemple : dans la base de données, les armes ont un prix mais je ne me sert pas de cet donnée, je l'ai donc utilisé pour un autre truc. Ajouté à cela, ces windows affichent aussi certaines variables du jeu. Ceci est très pratique pour la programmation en event qui manipule beaucoup les variables (dans "gestion des variables"). Par exemple ici je crois que les munitions sont stockées dans la variables [19]. La programmation en event modifie cet variable 19 et le menu status, quand il est appelé, affiche cet variable 19.
Bravo coco76 ! | |
|
coco Dieu Maker Lv 44
Nombre de messages : 2989 Age : 30
| Sujet: Re: [tuto]faire un a-rpg (avec script) Ven 29 Juin 2007, 10:45 | |
| Ce script est entéierement de moi Et tu as raison dani_nouvel_star le script affiche le contenu de la variable 19 qu'il faut modifié avec un événement commun en processus parallele
Edit : Systeme de vie ajouté | |
|