Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Question sur les SoundObjects

Par Prophetia Astrae le 17/2/2003 à 12:20:36 (#3253407)

Bonjour,

Je viens de créer un système pour gérer des cheminées (cf Une cheminé dynamique) ce système gère la création et la destruction dynamique d'objet plaçable à l'aide des fonction CreateObject() et DestroyObject(), maintenant pour ajouter un peu à l'ambiance ainsi créée, je désirais ajouter du son à ce système, mais voila, la fonction CreateObject() ne semble pas pouvoir créer de SoundObject.

d'où ma question, existe-t-il une fonction permettant de créer un SoundObject ou alors d'associer un son à un plaçable que serrait créé pour l'occasion?

J'ai beau chercher dans tout les sens, je ne trouve pas de solution à ce problème..... :aide:

Merci d'avance

Prophetia

Par Defthefirst le 17/2/2003 à 12:30:47 (#3253490)

Tu as essayé dans les propriétés de ta flamme, le hearthbeat de mettre "playsound" ou dans le genre ?

Ensuite plus qu'a trouvé le son :) et ca devrait marcher.

Par Prophetia Astrae le 17/2/2003 à 12:42:28 (#3253579)

C'est une idée, mais alors question nouvelle, la fonction PlaySound() fait-elle jouer le son en boucle ou juste une seule fois? Ensuite, je ne crois pas qu'on puisse arrêter un son jouer par cette fonction, car pour pouvoir le faire, il me semble que le seule moyen est d'utiliser un SoundObject avec les fonctions SoundObjectPlay() et SoundObjectStop().
Et puis pour finir, on m'a toujours dit qu'il fallait pas utiliser un OnHeartBeat car augmentais terriblement la charge du serveur, de plus dans ce cas, je me demande bien ce qui va se passer si le OnHearBeat est déclenché alors que le son n'a pas fini d'être joué....
En utilisant la fonction PlaySound(), je pense que le mieux serrait d'utiliser une boucle récursive déclenché sur le OnSpawn de l'objet, mais est-ce que cette boucle s'arrêtera après la destruction de l'objet?

Vous voyez, c'est pas si simple.... :aide:

Merci quand même

Prophetia

Par eMRaistlin le 17/2/2003 à 12:44:14 (#3253594)

A la limite, tu fais un tile 2*2 avec des SoundObject dans un coin, puis tu les copy (merci la 1.28) a l'endroit desire ingame...

Sinon, je rappele que l'on peut activer un soundobject via script, donc tu place le sound object a cote de ton feu, puis tu l'active et le desactive a loisir avec

void SoundObjectPlay(
object oSound
);


void SoundObjectStop(
object oSound
);

Par Prophetia Astrae le 17/2/2003 à 12:53:48 (#3253678)

Merci eMRaistlin,

Pour l'activation et désactivation des SoundObject, je savais, j'ai planché dessus tout le week-end, par contre l'idée de copier le SoundObject, c'est pas bête du tout, par contre, il faut attendre la 1.28, Car je sais pas pour vous, mais moi je l'ai pas encore, il ne me semble pas qu'elle soit encore sortie en version française ou alors juste en Beta...

Mais je trouve quand même dommage que la fonction CreateObject() ne puisse pas créer de SoundObject, ça aurait été tellement plus simple... Remarque peut être que dans la 1.28 ils sont changé ça... Ou peut être le feront il dans de prochaine version.

Ben en tout cas, des que j'ai la 1.28, je test ton idée.

Merci beaucoup!!!!

Prophetia

Par eMRaistlin le 17/2/2003 à 13:00:03 (#3253716)

En fait, pour le le create object, tu doit pouvoir contourner en faisant, sur un objet deja existant, un CreateObject(GetObjectType(OBJECT_SELF)....) au lieu de CreateObject("OBJECT_TYPE_SOUND",...) j'invente, la ^^

je crois que c'est comme cela qu'ils ont fait pour creer donc...

(mais il te faudra quand meme un original sur le module... apres, tu fais un trigger qui envoie un UDE sur le soundobject, qui cree la copie...)

Par Prophetia Astrae le 17/2/2003 à 15:17:56 (#3254720)

Là je suis pas certaine du tout par contre, car la fonction CreateObject() n'accepte que 4 type d'objet:
- OBJECT_TYPE_ITEM
- OBJECT_TYPE_CREATURE
- OBJECT_TYPE_PLACEABLE
- OBJECT_TYPE_STORE

cf. CreateObject() function (source NWN Lexicon)

Donc je ne suis pas certaine que cela fonctionne, mais comme on dit, qui ne tente rien a rien....

Par Théranthil le 17/2/2003 à 15:48:04 (#3254931)

Waouhou, très joli, on se sent tout de suite mieux avec ca.

Par eMRaistlin le 17/2/2003 à 16:42:27 (#3255310)

Provient du message de Prophetia Astrae
Là je suis pas certaine du tout par contre, car la fonction CreateObject() n'accepte que 4 type d'objet:
- OBJECT_TYPE_ITEM
- OBJECT_TYPE_CREATURE
- OBJECT_TYPE_PLACEABLE
- OBJECT_TYPE_STORE

cf. CreateObject() function (source NWN Lexicon)

Donc je ne suis pas certaine que cela fonctionne, mais comme on dit, qui ne tente rien a rien....



C'est bien pour ca qu'il te faut employer des GetObjectType, ainsi que des GetResRef sur ton WP existant, afin de pouvoir creer une copy a l'endroit désiré, et non pas creer un WP a partir de rien

Par Prophetia Astrae le 17/2/2003 à 16:54:37 (#3255417)

Oui je comprend bien, mais le GetObjectType(), va bien retourner un OBJECT_TYPE_*, qui ne serra pas obligatoirement valide dans la fonction CreateObject(), si?

Par eMRaistlin le 17/2/2003 à 17:32:26 (#3255657)

a priori, ca devrait marcher, même si c'est un peu Mc Gyver...

(mais un peu de patiente, et tu aura CreateCopy ^^)

Par RAT le 17/2/2003 à 17:51:41 (#3255790)

Ba je peux vous dire à l'avance pour avoir fait de multiple test la dessus :). Que le createobject est très très limité, et ne peut pas créer tout selon le type.

Moi c'était par rapport au door, avec mon système de respawn que j'ai déjà parlé :), je voulais recréer le respawn de door automatiquement, mais cela ne marche pas pendant le jeu. Il n'apprécie pas du tout cette manière.

Mais bon :)

Par Prophetia Astrae le 17/2/2003 à 18:01:31 (#3255885)

Oui, mais il y a toujours le même problème avec la fonction CopyObject():

- Added CopyObject() scripting command.
// Duplicates the object specified by oSource.
// ONLY creatures and items can be specified.
// If an owner is specified and the object is an item, it will be put into their inventory
// If the object is a creature, they will be created at the location.
// If a new tag is specified, it will be assigned to the new object.
object CopyObject(object oSource, location locLocation, object oOwner = OBJECT_INVALID, string sNewTag = ");


(source: le sujet sur la fonction CopyObject() de Jedaï)

Donc à priori, cette fonction ne permet que les copies d'objet de type:
- OBJECT_TYPE_CREATURE
- OBJECT_TYPE_ITEM

Donc le problème reste identique avec les SoundObject....

Enfin, je vais tester ton système ce soir pour voir

Par Jedaï le 17/2/2003 à 19:34:36 (#3256585)

Je crois bien que certaines personnes avaient réussi à créer des pièges avec CreateObject() grâce à cette astuce, mais c'est vraiment du montage/bidouille innommable !:o

Pourquoi les SoundObjectPlay() et SoundObjectStop() ne te conviennent-ils pas ?:confus:

Par Prophetia Astrae le 17/2/2003 à 20:07:49 (#3256833)

Mais le SonundObjectPlay() et le SoundObjectStop() me conviennent parfaitement, mais il faut leur passer un oSound, et si le oSound n'existe pas, tu fais comment?

Alors tu me diras, il suffit de placer les SoundObjects lors du mapping, mais dans ce cas, amuse toi pour savoir quel ObjectSound corespond à quel cheminé... surtout si tu as plusieur cheminés....

De plus tu dois donc mettre autant de SoundObjects que tu as d'action pour peu que tu veuilles changer de son selon l'etat... Alors là je n'ose meme pas y penser.....

Alors que creer un SoundObject de façon dynamique comme pour les plaçable serrait tellement plus simple, et je ne pense pas que ce soit bien complique pour Bioware d'implementer cette option dans NWN.

JOL Archives 1.0.1
@ JOL / JeuxOnLine