LODM (L'Oasis des Makers)
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

LODM (L'Oasis des Makers)

Forum d'étude sur le Making RMXP
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -28%
Précommande : Smartphone Google Pixel 8a 5G ...
Voir le deal
389 €

 

 Amélioration de la mise à jour graphique

Aller en bas 
3 participants
AuteurMessage
Corbaque
Chercheur



Nombre de messages : 10
Age : 33
Projet Principal : X-Shot II
Surnom : Lordryk
Date d'inscription : 11/03/2007

Amélioration de la mise à jour graphique Empty
MessageSujet: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeDim 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.dll
http://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.
Revenir en haut Aller en bas
http://rpgmxp.ch
TLN
Chercheur
TLN


Nombre de messages : 23
Age : 34
Projet Principal : Un truk secret :D
Date d'inscription : 18/03/2007

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeDim 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 Wink

Perso ça revient au même, mais je préfère ajouter que substituer ^^°

@+
Revenir en haut Aller en bas
Corbaque
Chercheur



Nombre de messages : 10
Age : 33
Projet Principal : X-Shot II
Surnom : Lordryk
Date d'inscription : 11/03/2007

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeLun 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 !
Revenir en haut Aller en bas
http://rpgmxp.ch
Roys
Guide
Guide
Roys


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

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeLun 26 Mar - 16:07

Tu veux dire que ca n'a pas marché avec un alias?
Revenir en haut Aller en bas
https://lodm.forumactif.com
TLN
Chercheur
TLN


Nombre de messages : 23
Age : 34
Projet Principal : Un truk secret :D
Date d'inscription : 18/03/2007

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeMar 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 ?
Revenir en haut Aller en bas
Corbaque
Chercheur



Nombre de messages : 10
Age : 33
Projet Principal : X-Shot II
Surnom : Lordryk
Date d'inscription : 11/03/2007

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeMar 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...
Revenir en haut Aller en bas
http://rpgmxp.ch
TLN
Chercheur
TLN


Nombre de messages : 23
Age : 34
Projet Principal : Un truk secret :D
Date d'inscription : 18/03/2007

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeMer 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 Smile
J'ai testé et ça marche ! En plus la méthode update du module Graphics est aussi exécutée ^^°



Sur ce, @+
Revenir en haut Aller en bas
Roys
Guide
Guide
Roys


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

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeJeu 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 Smile
Revenir en haut Aller en bas
https://lodm.forumactif.com
Corbaque
Chercheur



Nombre de messages : 10
Age : 33
Projet Principal : X-Shot II
Surnom : Lordryk
Date d'inscription : 11/03/2007

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeVen 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 ^^"})
Revenir en haut Aller en bas
http://rpgmxp.ch
TLN
Chercheur
TLN


Nombre de messages : 23
Age : 34
Projet Principal : Un truk secret :D
Date d'inscription : 18/03/2007

Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitimeVen 30 Mar - 11:13

Lol merki ^^°

Bah tu peux publier ce système où tu veux, ça ne me dérange pas Wink

Si tu veux tu peux mettre un truc du genre :

Code:
# Par Corbaque
# Avec une idée de TLN

Ou un truc du genre Very Happy

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]
Revenir en haut Aller en bas
Contenu sponsorisé





Amélioration de la mise à jour graphique Empty
MessageSujet: Re: Amélioration de la mise à jour graphique   Amélioration de la mise à jour graphique Icon_minitime

Revenir en haut Aller en bas
 
Amélioration de la mise à jour graphique
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LODM (L'Oasis des Makers) :: Groupe pour Scripts :: Outils pour Scripteur-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser