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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Faire jouer un son puis le détruire

Par mobidique le 23/7/2002 à 12:55:30 (#1847099)

Je voudrais qu'un son qui est une loop infinie joue jusqu'à ce qu'il se passe kkchose. Un exmple ... Dans les sons on a à un moment des grognement de Loup-garous dans une caverne ... Imaginez que vous mettier un paquet de loup-garous dans une caverne donné un seul lieu un seul tileset et décidiez d'utiliser ce son sur une aire donnée, pas toute l'area... Une fois tous les Loup garous descendus vous vous retrouvez avec cet andouille de son qui continue a jouer ... c't'idiot tout de même ... Il faudrait donc que le son soit joué jusqu'à ce que tout les loup garous soient morts ...

Voici ce que j'ai l'intention de faire pour gérer cela ... Mes garous sont sur un seul tile de caverne, la sortie de ce tile se fait par un seul des cotés du tile. Sur ce coté je mets je met un trigger qui entraine sur OnEnter la destruction de l'objet son ... Les garous ne bougeront que s'il y a proximité de joueurs, ce qui entrainera inévitablement une baston et l'éradication des bestioles ...

Pensez vous que celà va marcher ? Un son peut il être détruit ? Sa destruction entraine t-elle bien l'arrêt du son (on sait jamais hein ...) ? Plus embétant surement ... Un garou passant sur mon trigger déclanchera t-il l'action sur le OnEnter ... j'ai pas l'impression ... Je peux pas mettre de trigger à déclancher par le joueur parce que l'évenement c'est bien la destruction des garous pas le passage du joueur à un endroit donné. Le joueur pourrait déclancher le trigger sans être attaqué ou bien sans attaquer les bestioles ... Par ailleurs du fait de l'existence de monstres errant, une bataille à proximité du tile à garous pourrait entrainer le déplacement des garous sur le lieu de la baston sans que le joueur soit passé sur le trigger ...

Une suggestion ?

Mob'.

Par souana le 23/7/2002 à 14:16:40 (#1847590)

plutot sur le OnDeath des loup non ?
avec une variable qui vérifie que ce soit le dernier loup tué.

Par Azrael07 le 23/7/2002 à 14:23:33 (#1847632)

G une solution je sais pas si c la meilleure...

On va appeller le TAG de ton son TAG_SON et on considère qu'il y a 5 loups (t'a juste a changer les valeurs pour en mettre + ou -.

tu va donc aller dans le script SPAWN et y inserer une définition de variable du type

SetLocalInt(OBJECT_SELF,"iCreatureLeft", 5);

puis tu va dans le script OnDeath de chaques loups et tu ajoute avant la fct main

int iCreatLeft = GetLocalInt(GetObjectByTag("TAG_SON"),"iCreatureLeft);

dans la fct main tu ajoute

iCreatLeft --;
if (!iCreatLeft)
SoundObjectStop(GetObjectByTag("TAG_SON"))
SetLocalInt(OBJECT_SELF,"iCreatureLeft", iCreatLeft);


Voila c pas testé mais ca devrais marcher après debugging
(je fais tjs des tas de fautes d'inatention sur mes scripts y'a surement des erreurs.

Si ca marche pas, tu peut tjs me mailler j'esserais de t'envoyer qlc de plus finis. VOila c tout bonne chance ;)

Par mobidique le 24/7/2002 à 9:39:39 (#1852293)

Merci pour les suggestions et j'aime les solutions simples... J'aime pas modifier les scripts par défaut ... Je crois que je vais opter pour la solution suivante ... faire un trigger à un endroit où normalement les joueurs devraient se faire attaquer et placer sur le OnEnter un script entrainant le déplacement d'un monstre vers un waypoint la rencontre du persos et détruire 5 seconde aprés le son. La rencontre du monstre devrait entrainer une baston déclenchant l'arrivée des autres monstres et la musique de baston, cette dernière masquant habilement la disparition de mon son d'ambiance ... D'où la mise en oeuvre d'un trigger, d'un waypoint, d'un son et d'un script de trois ligne ...

Mob'.

Par botumys le 24/7/2002 à 9:47:22 (#1852311)

a propos de modifier un script, peut-on alterer un script original, ou bien est-ce seulement le blueprint qui est modifie?

Par Azrael07 le 24/7/2002 à 11:05:45 (#1852667)

ton script original ne sera jamais modifié, il le sera seulement pour ce module (enfin je crois :ange: ). Au pire de toutes facon tu sauve le sript original sous un autre nom.

Les gas je veux pas trop m'avencer mais si vous refusez de toucher aux scripts originaux vous irez pas très loin. Ce n'est pas présentez sous forme de reproche mais de réalité (z'avez suivis).

C ni honteux ni dangereux de récupérer les scripts édité par bioware ils sont la pour ca. faites juste un saveas et mettez un autre nom... ;)

Par mobidique le 24/7/2002 à 11:10:44 (#1852709)

L'essentiel c'est d'arriver à un résultat satisfaisant ... Plus c'est simple plus celà a de chance de marcher moins y a de code moine celà a de chance de bugger. J'vais aussi loin que je peux comme ça et quand je peux pas faire autrement je script ... avec la même règle ...

Mob'.

Par Azrael07 le 24/7/2002 à 11:21:44 (#1852780)

Ok + un scipts est réduit moins il sera buggé, d'accord sur ce point

effectivement ta solution marche bien dans un cas simple cme celui ci mais si tu commence à faire des projets un peu plus gros, il faut avoir un peu plus de rigeur et de présision dans les script ou ca va vite devenir un bordel total.

Mais on peut dire en effet que pour des petits truc pas trop complexe cme celui là jje me fais chier pour rien...
A chaqun sa vision des choses...

Par mobidique le 24/7/2002 à 11:26:04 (#1852812)

;) j'ai pas dit ça ... mais j'ai pas l'ambition de faire des gros trucs autonomes ... dans le pire des cas je détruit le son en tant que DM ou bien j'utilise la méthode Tonton ... je met un levier autodestructible détruisant le son en question et au moment idéal je détruit le son en question (et le levier aussi) ... mais bon je préfère être derrière mes joueurs ...

Mob'.

Par botumys le 24/7/2002 à 11:35:04 (#1852866)

*hors sujet* mob, quand tu comptes maitriser un partie, j'aimerais bcp participer car pour le moment, je n'ai jamais eu l'occasion de vivre un aventure RP sous NWN. (ou alors une toute petite qui ressemblait bcp a diablo). Bon si il reste de la place pour un nain guerrier, voici mon email:
olivier@movida3d.com

Par mobidique le 25/7/2002 à 18:35:04 (#1858423)

Illustration de ma philosophie ... Simple de bon gout et tout ... Vous faite s le script suivant :


void main()
{
//object oSound = GetObjectByTag(GetTag(OBJECT_SELF) + "_loop");

SoundObjectStop(GetObjectByTag(GetTag(OBJECT_SELF) + "_loop"));
}


Ensuite vous faites un encounter que l'on appellera .. Bernard par exemple c'est bien comme nom pour un encounter de loup garou, Bernard ... Et puis vous faite un son de loup-garou que vous allez appeller Bernard_loop. Pour finir et c'est là qu'est toute la beauté de la chose vous collez vot' script d'une ligne là haut sur l'événement ... j'vous l'donne en mille ... l'événement OnExhauted de l'encounter ... :D ... elle est pas belle la vie ? A noter que j'ai pensé un moment que pour que l'événement OnExhausted soit réalisé il fallait que l'encounter présente une caractéristique de respawn .. ben pas du tout.

(Au cas où il y aurait méprise Azrael07, je nargue pas, c'est juste que je suis content d'avoir trouvé ce coup là ... non mais on sait jamais on dit des trucs et pis aprés y en a qui te font jeu troll alors me méfie moué ... ;))

Botumys je t'ai envoyé un MP ...

Mob'.

Par Azrael07 le 26/7/2002 à 10:55:39 (#1861651)

Peu !!! :enerve: J'suis sur que t'a passé la nuit sur ton PC pour trouver se truc minable... Et en plus t'est fier...

Si j'avais voulut j'aurais pu trouver un truc mille fois mieu en deux secondes :enerve: , me je ne veux vous dévoiler l'empleur de mon genie que petit à petit...

Bon j'arrete la pour la mauvaise foi. Sinserement c bien trouvé cme truc. En fait, j'utilise pas trop les encouter, je trouve que les monstres ont tandance à apparaitre au dernier moment...

Mais moi j'suis cme ca il faut tjrs que je trouve des truc super compliqué pour des trucs super simple...

La je m'incline, le truc de mobidique, c vraiment BEACOUP mieux que mon truc a moi...

Par Gargantuel le 26/7/2002 à 11:38:46 (#1861872)

OnExhauted
J'adore ce forum, j'apprends des trucs tout le temps :)
j'utilise pas trop les encouter, je trouve que les monstres ont tandance à apparaitre au dernier moment

Tu sais que tu peux déplacer la zone de spawn de l'encounter ?
Comme ca tu décales l'apparition des monstres avant que les joueurs arrivent.
(Tu selectionnes ton encounter et tu cliques avec le bouton droit sur le lieu où tu veux que les monstres apparaissent et tu choisis "set a spawn location" ou un truc du genre)

Par mobidique le 26/7/2002 à 14:03:14 (#1862746)

Provient du message de Azrael07
Peu !!! :enerve: J'suis sur que t'a passé la nuit sur ton PC pour trouver se truc minable... Et en plus t'est fier...

Si j'avais voulut j'aurais pu trouver un truc mille fois mieu en deux secondes :enerve: , me je ne veux vous dévoiler l'empleur de mon genie que petit à petit...


MOUHAHAHAHAHAHAHA ! ;)

Pour les encounter au dernier moment, pareil que Garg, je met mon trigger d'encounter bien avant le point de spawn, quand les joueurs arrivent les bestioles sont déjà là depuis longtemps ...

Autre avantage des encounters, comme écrit dans mon autre post sur le fait de faire bouger une bestioles spawnée par encounter, c'est que ces bestioles par défaut ont une animation mobile, un randomwalk avec des animations. Un mélange d'encounter et de bestioles mise à la main me semble bien.

Mob'.

Par Azrael07 le 26/7/2002 à 14:23:51 (#1862919)

Bon bein c d'accord je vais essayer les encounters, en fait j'avais telement pas essayé ce truc que j'avais meme pas remarqué tout ce que vous dites

Au pire si je trouve toujors ca trop minable je vais reprogrammé un peu le code source :enerve: :enerve: :enerve: -lol-;)

JOL Archives 1.0.1
@ JOL / JeuxOnLine