Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 7 messages ] 
Auteur Message
 Sujet du message: [RMXP] Anti-"No such file" / manque de ressource
MessagePublié: 03 Aoû 2009, 00:20 
Bourgeois (Nv 4)

Inscrit le: 15 Juil 2007, 00:00
Messages: 269
Points d'aide: 27/60

Créations :

Voir ses créations

En cours de jeu, dans un projet crypté ou non, il arrive que l'auteur oublie d'inclure une ressource, ce qui résulte à un message d'erreur : "No such file or directory - Graphics/...." et la partie s'arrête.

Ce script permet de continuer une partie malgré le manque d'une ressource, qu'elle soit graphique ou Audio. Un message d'avertissement vous signalera tout de même quelle ressource manque.


Lisez les instructions complémentaires en tête de script.

Code: Tout sélectionner
# --------------------------------------------------------
#  Anti-"No such file"
#  ou comment dédramatiser le manque d'une ressource
#    par Krosk - merci à Wawower et berka
# --------------------------------------------------------
# Ce script permet de continuer le jeu malgré
# l'absence d'une ressource graphique ou audio
# que le projet soit crypté ou non.
#
# Il n'empêche pas le crash en cas
# de manque d'une map ou d'un fichier data...
#
# L'image manquante est substituée par
# une image vide, mais vous pouvez
# à la place utiliser une image de substitution.
#
# Le son manquant n'est tout simplement pas joué.
#
# Par ailleurs, personnalisez vous même le message
# NOSUCHTEXT pour signaler au joueur la conduite à adopter.
#  (utilisez
pour sauter une ligne)
#
# Vous pouvez aussi couper les messages d'avertissement
# en commentant les lignes de print dans ce script.
#  (en placant # en tete de ligne)
# --------------------------------------------------------

NOSUCHTEXT = "Veuillez me contacter pour me prévenir
que cette ressource est manquante."

class << Bitmap
  alias_method :alias_new, :new unless method_defined?(:alias_new)
  def new(*args)
    alias_new(*args)
  rescue
    if args.size == 1
      print "La ressource #{args[0]} manque.\n" + NOSUCHTEXT
    end
    alias_new(32, 32)
  end
end

module Audio
  class << self
    alias_method :temp_se_play, :se_play unless method_defined?(:temp_se_play)
    alias_method :temp_me_play, :me_play unless method_defined?(:temp_me_play)
    alias_method :temp_bgm_play, :bgm_play unless method_defined?(:temp_bgm_play)
    alias_method :temp_bgs_play, :bgs_play unless method_defined?(:temp_bgs_play)
  end

  def self.se_play(filename, volume = 100, pitch = 100)
    self.temp_se_play(filename, volume, pitch)
  rescue
    print "La ressource #{filename} manque.\n" + NOSUCHTEXT
  end
 
  def self.me_play(filename, volume = 100, pitch = 100)
    self.temp_me_play(filename, volume, pitch)
  rescue
    print "La ressource #{filename} manque.\n" + NOSUCHTEXT
  end
 
  def self.bgm_play(filename, volume = 100, pitch = 100)
    self.temp_bgm_play(filename, volume, pitch)
  rescue
    print "La ressource #{filename} manque.\n" + NOSUCHTEXT
  end
 
  def self.bgs_play(filename, volume = 100, pitch = 100)
    self.temp_bgs_play(filename, volume, pitch)
  rescue
    print "La ressource #{filename} manque.\n" + NOSUCHTEXT
  end
end

_________________
Image
Reincarnations. Une jeune fille. Un lourd fardeau. Une quête millénaire.
Chapitre 1 disponible


Haut
 Profil  
 
 Sujet du message: Re: [RMXP] Anti-"No such file" / manque de ressource
MessagePublié: 03 Aoû 2009, 00:59 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 24 Juin 2008, 00:00
Messages: 476
Logiciel(s) préféré(s): Scintilla based
Point(s) Fort(s): Rubyismes
Points d'aide: 60/60

Créations :

- [Rmxp] Vocab

- [Rmxp] Visible Equipment

- [Rmxp] Animated Title

- [XP/VX] Cache Extension


Voir ses créations

Hum tu peux surement faire gagner le script en compatibilité en aliasant Bitmap.new plutôt qu'en redefinissant load_bitmap :
Code: Tout sélectionner
class << Bitmap
   alias old_new new
   def new(*args)

   end
end

Avec une petite condition sur args#size ca doit pouvoir se faire =).


Haut
 Profil  
 
 Sujet du message: Re: [RMXP] Anti-"No such file" / manque de ressource
MessagePublié: 03 Aoû 2009, 17:28 
Bourgeois (Nv 1)
Avatar de l’utilisateur

Inscrit le: 03 Jan 2009, 01:00
Messages: 203
Localisation: Paris
Logiciel(s) préféré(s): VX
Point(s) Fort(s): Ruby
Sexe: Masculin
Points d'aide: 1/60

Créations :

Voir ses créations

mieux encore tu récupère le nom du fichier manquant et tu le soumets à une page web:

Code: Tout sélectionner
nom= "lala.png"
url="http://monsite.com/erreurs.php?fichier=#{nom}"
Thread.new{Kernel.system("explorer "#{url}"")}


J'ai fait ca pour un projet, mais pour la gestion des erreurs toute entière. A chaque bug, le joueur peut choisir de m'envoyer le message, la ligne, le type et le script. Ces infos sont stockées dans la base de données de mon site. Ca m'affiche en fin de compte un tableau avec tout dedans et il ne me reste qu'à corriger le tout.

berka

_________________
Twitter: Pensées politiques et juridiques. Réflexions informatiques


Haut
 Profil  
 
 Sujet du message: Re: [RMXP] Anti-"No such file" / manque de ressource
MessagePublié: 03 Aoû 2009, 21:07 
Bourgeois (Nv 4)

Inscrit le: 15 Juil 2007, 00:00
Messages: 269
Points d'aide: 27/60

Créations :

Voir ses créations

Wawower a écrit:
Hum tu peux surement faire gagner le script en compatibilité en aliasant Bitmap.new plutôt qu'en redefinissant load_bitmap :
Code: Tout sélectionner
class << Bitmap
   alias old_new new
   def new(*args)

   end
end

Avec une petite condition sur args#size ca doit pouvoir se faire =).

Je ne fais qu'intercepter une exception sans quitter le jeu... J'ignore comment est géré la vérification qu'une path arrive à pointer sur une ressource ou non (surement pas un FileTest.exist, étant donné qu'on fouille le cache), et sur quelles conditions l'exception est levée dans la méthode new, ce qui m'empeche d'aliaser la méthode.

Tu as peut etre une idée ? Ca permettrait de simplifier le script, en effet.


berka >> c'est pas mal comme ajout Surprised. Parfait pour des gros projets organisés

_________________
Image
Reincarnations. Une jeune fille. Un lourd fardeau. Une quête millénaire.
Chapitre 1 disponible


Haut
 Profil  
 
 Sujet du message: Re: [RMXP] Anti-"No such file" / manque de ressource
MessagePublié: 03 Aoû 2009, 22:11 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 24 Juin 2008, 00:00
Messages: 476
Logiciel(s) préféré(s): Scintilla based
Point(s) Fort(s): Rubyismes
Points d'aide: 60/60

Créations :

- [Rmxp] Vocab

- [Rmxp] Visible Equipment

- [Rmxp] Animated Title

- [XP/VX] Cache Extension


Voir ses créations

Le principe est exactement le même que quand tu places le bloc 'begin rescue end' autour du Bitmap.new, na ? Sauf que là faut le placer autour de l'appel de la méthode-alias de new (soit dans mon exemple old_new) qui se chargera de lever l'exception. Ca donnerait un truc du genre:
Code: Tout sélectionner
class << Bitmap
   alias old_new new
   def new(*args)
      if args.size == 1
         begin
            old_new(*args)
         rescue Errno::ENOENT
            old_new(32, 32)
         end
      else
         old_new(*args)
      end
   end
end


Haut
 Profil  
 
 Sujet du message: Re: [RMXP] Anti-"No such file" / manque de ressource
MessagePublié: 03 Aoû 2009, 22:15 
Bourgeois (Nv 1)
Avatar de l’utilisateur

Inscrit le: 03 Jan 2009, 01:00
Messages: 203
Localisation: Paris
Logiciel(s) préféré(s): VX
Point(s) Fort(s): Ruby
Sexe: Masculin
Points d'aide: 1/60

Créations :

Voir ses créations

il faut savoir que les méthodes sont des blocs a part entière. On peut utiliser des controleurs d'exceptions dedans:

Code: Tout sélectionner
def methode
#code buggé
rescue
# faire ca si bug
ensure
# de toutes facons, exécuter ca
end


cordialement,
berka

_________________
Twitter: Pensées politiques et juridiques. Réflexions informatiques


Haut
 Profil  
 
 Sujet du message: Re: [RMXP] Anti-"No such file" / manque de ressource
MessagePublié: 03 Aoû 2009, 22:46 
Bourgeois (Nv 4)

Inscrit le: 15 Juil 2007, 00:00
Messages: 269
Points d'aide: 27/60

Créations :

Voir ses créations

Oh, en effet ^^; C'est plutôt évident de faire de cette façon !

Merci pour les indications, ca rend les choses bien plus concises.

EDIT : petite correction d'un bug au reset (double alias ~)

_________________
Image
Reincarnations. Une jeune fille. Un lourd fardeau. Une quête millénaire.
Chapitre 1 disponible


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 7 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728