| Amélioration de la mise à jour graphique | |
|
|
Auteur | Message |
---|
Corbaque Chercheur
Nombre de messages : 10 Age : 33 Projet Principal : X-Shot II Surnom : Lordryk Date d'inscription : 11/03/2007
| Sujet: Amélioration de la mise à jour graphique Dim 18 Mar - 8:40 | |
| Bonjours à tous. Dans mon propre projet, à savoir X-Shot II, j'utilise un systême très pratique pour éviter de devoir toujours ajouter des lignes et des conditions dans chaque script. En effet, j'ai un module de screens shots, et je souhaite l'utiliser partout, du coup, j'ai préféré changer la méthode de mise à jour graphique. Intérets : - Modulable, efficace, et sans faille - Il suffit de ne pas faire agir la mise à jour Input pour empécher les screens shots (lors d'une animation par exemple, afin de ne pas la ralentir) Contraintes : - Le module graphique ne permet pas de modifier ses méthodes, il faut donc en faire une nouvelle => Chaque Graphics.update doit donc être changé en Graphics.maj Comment installer tout ça ? 1- DLL Ajouter ces deux librairies dans le dossier du jeu (si ce n'est pas déjà fait) : http://www.rpgmxp.ch/Corbaque/screenshot.dllhttp://www.rpgmxp.ch/Corbaque/RGSS100J.dll Puis ajoutez ce script au dessus de Main (Appellez le Screen_Shot de préférence) : - Code:
-
#=================================== # Screen_Shot #--------------------------------------------------------------- # Créé par Andreas21 & cybersam #--------------------------------------------------------------- # Adapté et Commenté par Corbaque #--------------------------------------------------------------- # Exemple d'utilisation : # Screen.shot("Screen", 2) # Screen.shot("Screen shot", 0) # Screen.shot("Piscine ", 1) #=================================== module Screen # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Variables du module # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @screen = Win32API.new 'Scripts\dll\screenshot', 'Screenshot', %w(l l l l p l l), '' @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l' @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l' # Méthode du module module_function #------------------------------------------------------------- # Méthode de Capture de l'écran de jeu # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Accessoires : # => file # Le nom du fichier précédant l'id du screen # => type # Type de fichier # 0 = bmp # 1 = jpg # 2 = png #------------------------------------------------------------- def shot(file = "Screen ", dir="Screens shots/", num=true, type = 2, rect=[0,0,640,480]) # Si le type est 0 if type == 0 # L'extension est .bmp typname = ".bmp" # Si le type est 1 elsif type == 1 # L'extension est .jpg typname = ".jpg" # Si le type est 2 elsif type == 2 # L'extension est .png typname = ".png" end # Le premier screen a pour id 1 id = 1 # Tant qu'il y a un fichier qui porte le nom : ## file + id + extension # C'est à dire par exemple : ## Screen 1.jpg # Auguementer l'id id += 1 while FileTest.exist?(dir + file + id.to_s + typname) # Ajouter au nom du fichier l'id du screen file += id.to_s if num # Nom du fichier final : # Dossier conteuneur + Nom du fichier + extension file_name = dir + file.to_s + typname.to_s # Lance le screen shot : # Position x puis y sur la fenêtre, longueur et # Largeur de l'image, le nom du fichier, gestion # De la récupération du jeu après l'utilisation # De la dll, extension ed l'image @screen.call(rect[0], rect[1], rect[2], rect[3],file_name,handel,type) end #------------------------------------------------------------- # Gestion de la récupération de la fenêtre de # Jeu #------------------------------------------------------------- def handel game_name = "\0" * 256 @readini.call('Game','Title','',game_name,255,".\\Game.ini") game_name.delete!("\0") # Trouve et renvoie la fenêtre de jeu return @findwindow.call('RGSS Player',game_name) end end Pour finir, ajoutez après le précédent ce script : - Code:
-
#=================================== # Module Graphics #--------------------------------------------------------------- # Créé par Corbaque #--------------------------------------------------------------- # Amélioration de la mise à jour graphique #--------------------------------------------------------------- # Ici les screens shot sont enregistrés dans le dossier # "Screens shots" du projets, dans un sous dossier # portant le nom de la classe où il a été fait. # Le screen se fait avec la touche F5 #=================================== module Graphics # Méthodes du module module_function #------------------------------------------------------------- # Mise à jour optimisée #------------------------------------------------------------- def maj if Dir["Screens shots/#{$scene.type}"] != ["Screens shots/#{$scene.type}"] Dir.mkdir("Screens shots/#{$scene.type}") end # Screen via F5 Screen.shot("Screen", "Screens shots/#{$scene.type}/") if Input.trigger?(Input::F5) # Mise à jour classique update end end En espérant que ça serve. | |
|
| |
TLN Chercheur
Nombre de messages : 23 Age : 34 Projet Principal : Un truk secret :D Date d'inscription : 18/03/2007
| Sujet: Re: Amélioration de la mise à jour graphique Dim 25 Mar - 11:59 | |
| Ah tiens, sympa ça ! Je connais ce module de screenshot, et personnellement plutôt que de substituer la méthode update du module Graphics, j'ai créé une méthode "update" dans le module Screen, et je n'ai plus qu'à l'éxecuter dans la boucle principale de chaque scène avant la mise à jour graphique pour pouvoir prendre des screens Perso ça revient au même, mais je préfère ajouter que substituer ^^° @+ | |
|
| |
Corbaque Chercheur
Nombre de messages : 10 Age : 33 Projet Principal : X-Shot II Surnom : Lordryk Date d'inscription : 11/03/2007
| Sujet: Re: Amélioration de la mise à jour graphique Lun 26 Mar - 14:17 | |
| (L'intéret ici TLN est justement de substituer pour optimiser l'ergonomie générale du script, en somme d'avoir moins de lignes quoi...)
Au niveau de ce ptit script je suis toujours déçu de n'avoir pas pu modifier la méthode update du module Graphics, si quelqu'un y arrive qu'il me le fasse savoir ! | |
|
| |
Roys Guide
Nombre de messages : 111 Age : 52 Projet Principal : Le Crépuscule des Dieux Aide Recherchée pour : des chara aRPG Surnom : Scripteur Monomaniaque Date d'inscription : 24/02/2007
| Sujet: Re: Amélioration de la mise à jour graphique Lun 26 Mar - 16:07 | |
| Tu veux dire que ca n'a pas marché avec un alias? | |
|
| |
TLN Chercheur
Nombre de messages : 23 Age : 34 Projet Principal : Un truk secret :D Date d'inscription : 18/03/2007
| Sujet: Re: Amélioration de la mise à jour graphique Mar 27 Mar - 10:47 | |
| Bah l'ergonomie, les lignes ... osef nan ?
Je pense que t'façon peut importe le nombre de ligne d'un code, le tout est que ça reste clair et efficace. Après bien sûr, si on peut faire en 3 ligne ce que d'autres font en 10, c'est mieux, et ça permet au logiciel d'avoir moins de choses à faire. Mais franchement entre deux méthodes qui se suivent et on deux effets distincts, et une seule méthode ayant les mêmes effets regroupés, je pense que l'efficacité reste la même.
Pour substituer une méthode à une autre, normalement je crois qu'on utilise des alias comme a dis Roys, ou qu'on remet carrément un "def update" plus bas dans le script, et qu'rm prendra la dernière définition rencontrée non ? | |
|
| |
Corbaque Chercheur
Nombre de messages : 10 Age : 33 Projet Principal : X-Shot II Surnom : Lordryk Date d'inscription : 11/03/2007
| Sujet: Re: Amélioration de la mise à jour graphique Mar 27 Mar - 12:03 | |
| - Code:
-
module Graphics module_function alias update_ancien update end => Bug ! Idem en changeant les noms des methodes (celle a renommer et son nouveau nom), idem en ajoutant "public_methods"... Hum... A réfléchire... | |
|
| |
TLN Chercheur
Nombre de messages : 23 Age : 34 Projet Principal : Un truk secret :D Date d'inscription : 18/03/2007
| Sujet: Re: Amélioration de la mise à jour graphique Mer 28 Mar - 6:36 | |
| J'ai trouvé ! Crée-toi par exemple un autre module, bon ici on va utiliser le module de Screen. Une fois ta méthode update créé, ajoute ça après le module et le dernier "end" : - Code:
-
module Graphics include Screen end Avec la commande "include", lors de la recherche de la méthode update, la méthode du dernier module inclu sera prioritaire J'ai testé et ça marche ! En plus la méthode update du module Graphics est aussi exécutée ^^° Sur ce, @+ | |
|
| |
Roys Guide
Nombre de messages : 111 Age : 52 Projet Principal : Le Crépuscule des Dieux Aide Recherchée pour : des chara aRPG Surnom : Scripteur Monomaniaque Date d'inscription : 24/02/2007
| Sujet: Re: Amélioration de la mise à jour graphique Jeu 29 Mar - 8:04 | |
| Ah oui, pour corbaque je crois pas qu on puisse faire un alias sur un module, c'est pour les class. Donc faudrait trouver la classe du module qui est mise a jour. Sinon bravo a TLN pour l'astuce, excellent | |
|
| |
Corbaque Chercheur
Nombre de messages : 10 Age : 33 Projet Principal : X-Shot II Surnom : Lordryk Date d'inscription : 11/03/2007
| Sujet: Re: Amélioration de la mise à jour graphique Ven 30 Mar - 10:23 | |
| Bravo a toi TLN, libre a toi de partager ce nouveau script (je publie pas les idée des autres moi ! {bon ok ok, plus maintenant ^^"}) | |
|
| |
TLN Chercheur
Nombre de messages : 23 Age : 34 Projet Principal : Un truk secret :D Date d'inscription : 18/03/2007
| Sujet: Re: Amélioration de la mise à jour graphique Ven 30 Mar - 11:13 | |
| Lol merki ^^° Bah tu peux publier ce système où tu veux, ça ne me dérange pas Si tu veux tu peux mettre un truc du genre : - Code:
-
# Par Corbaque # Avec une idée de TLN Ou un truc du genre Après tout c'est juste une idée, pas un script complet :p * Pour une fois qu'j'vous apprend un truc ^^ *===>[Retourne Scripter] | |
|
| |
Contenu sponsorisé
| Sujet: Re: Amélioration de la mise à jour graphique | |
| |
|
| |
| Amélioration de la mise à jour graphique | |
|