Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
| Sujet: [Résolu] Module RPG et class Audio Sam 29 Aoû 2009 - 21:19 | |
| Bonjour,Je voulais bricoler la classe Audio, pour spacialiser certains sons, sans pour autant devoir déclarer un SE auparavant, pour que le tout tienne sur une ligne, lors de l'appel. J'ai bricolé ceci, le compilateur me dit erreur au niveau des derniers "end". Dans mon projet, le script est seul. J'ai peut-être trop joué avec les alias... Ne connaissant pas la structure originelle, de se_play, j'ai voulu utiliser l'alias pour réécrire le code inconnu. Bon, au pire s'il n'y a pas de réponse, j'ai déjà une alternative, mais j'aurais aimé savoir ce que je n'avais pas compris dans ce que j'ai écrit. - Code:
-
module RPG class Audio alias sp_se_play se_play def se_play (filename, volume, pitch, x=0, y=0, r_max=0) #r_max est le rayon maximal où l'on peut entendre le son #x et y sont les coordonnées de l'origine du son #ces arguments sont par défault pour garder la compatibilité if (r_max == 0) #il est impossible que le son n'est pas de rayon, #sauf si c'est le même volume partout #appel de la fonction d'origine sp_se_play else #Calcul de la distance par rapport à l'event, #ramené en pourcentage par rapport au r_max. dx = (100*sqrt(($game_player.x - x)*($game_player.x - x) + ($game_player.y - y)*($game_player.y - y))/r_max) if (dx > 100) #si le player est trop loin alors on entend rien volume = 0 #appel de la fonction d'origine sp_se_play else #sinon on utilise le pourcentage sur le volume à l'origine #pour avoir le volume à la position du player. volume = (volume*(100 - dx) #appel de la fonction d'origine sp_se_play end #erreur end end end end
Cordialement, Vincentmhd
Dernière édition par vincentmhd le Sam 29 Aoû 2009 - 22:01, édité 1 fois |
|
Voyageur Lv.10
Age : 36 Inscrit le : 24/04/2009 Messages : 407
| Sujet: Re: [Résolu] Module RPG et class Audio Sam 29 Aoû 2009 - 21:43 | |
| Tu as oublié une parenthèse sur l'une des dernières lignes : - Code:
-
volume = (volume*(100 - dx) #appel de la fonction d'origine sp_se_play end #erreur end end end end
Correction : volume = (volume*(100 - dx) )Cependant, tu auras juste après un autre problème... Le module RPG ne contient pas de classe nommée "Audio". En revanche, il existe bien un module "Audio"... mais j'éviterais de le modifier sans de solide connaissance, celui-ci n'étant probablement même pas codé en ruby... (d'où son absence dans le fichier d'aide) En revanche, tu peux (et je te le conseille) modifier la classe SE du module RPG. Son contenu est donné dans le fichier d'aide : - Code:
-
module RPG class SE < AudioFile def play unless @name.empty? Audio.se_play("Audio/SE/" + @name, @volume, @pitch) end end def self.stop Audio.se_stop end end end
Il hérite de la classe RPG::Audiofile, que voici : - Code:
-
module RPG class AudioFile def initialize(name = "", volume = 100, pitch = 100) @name = name @volume = volume @pitch = pitch end attr_accessor :name attr_accessor :volume attr_accessor :pitch end end
Je te laisse bidouiller ces classes par toi-même. Mais si tu veux quelques conseils supplémentaires, n'hésite pas. |
|
Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
| Sujet: Re: [Résolu] Module RPG et class Audio Sam 29 Aoû 2009 - 22:00 | |
| Merci Sihn J'étais en train d'éditer mon post Je venais de découvrir l'erreur me disant que se_play n'était pas dans RPG::Audio Je comprend mieux pourquoi je ne peux pas la surcharger. Oui, la classe SE est mon alternative. Si j'ai d'autres problèmes, je n'hésiterais pas. |
|
| Sujet: Re: [Résolu] Module RPG et class Audio | |
| |
|