[résolu] Détecter Une Chute Critique
#26
Posté 12 janvier 2006 - 21:58
#27
Posté 12 janvier 2006 - 22:13
#28
Posté 12 janvier 2006 - 23:40
Le script pour les chutes marche! Même sans la modif pour détecter l'eau! J'ai tout essayé, les sauts, les plogeons, les combats sous l'eau etc... j'ai bien des sons distinct en fonction des chutes, et pas de problème pendant les combats.
Juste un cas très particulier: quand je saute dans la lave (faut le vouloir! ) on devrait entendre un grand plouf ! suivi d'une séquence grillade... Mais on n'a pas de "plouf dans la lave"...
Le script pour la lave marche aussi.
Faut juste que j'améliore le son et que ça fasse un loop, ça rendra mieux.
Citation
Bon, en pratique, si c'est possible. Mais au lieu de faire un script global, il faut faire des script locaux collés sur chaque ennemi ou monstre. Ce qui implique donc de modifier des tas de scripts préexistants pour rajouter la portion de code concernée. L'horreur.
Remarque, on peut faire un script spécial "la musique ignore les rats et autres petites nuisances...". Mais le souci, c'est qu'il vaut mieux éviter de trop toucher inutilement à la fonction Streammusic. A chaque fois, elle remet automatiquement le volume de la musique à fond...
Merci à tous pour votre aide.
PS: Juste un truc à corriger, à la dernière ligne
Set PJPosZ_prev to PJPozZ_encours
C'est un s, pas un Z.
#29
Posté 13 janvier 2006 - 15:53
Le script ne gère pas la lave, car je ne vois pas comment il pourrait le faire tout seul. Il faudrait modifier le script "lava" et rajouter une variable globale. Tu le veux?
Quel script fonctionne pour la lave?
#30
Posté 14 janvier 2006 - 13:01
Juste une question: avec ce système de détection des chutes, est-ce qu'il y a moyen de changer les conditions pour le choix du son par rapport à la gravité de la chute (chute=1, chute =2, etc. ça ne laisse guère de place pour des réglages, non ? contrairement à >=30, >=60, >=90)
Dans tous les cas, c'est déjà très bon comme ça. Donc surtout ne pas s'embetter à revoir tout le script.
MysticalShadow, le 13.01.2006 à 15:53, dit :
Citation
Puisque tu sembles aimer les scripts , j'en profite pour demander deux autres choses par rapport aux sons:
- serait-il possible d'attacher au NIF des planches en bois un script pour que lorsque le joueur ou un PNJ marche sur un dock ou sur un pont en bois, on entende un son de pas différent que celui par défaut ? (ça me paraît assez dur à moins de placer manuellement des activateurs partout, mais je demande, sans me faire trop d'illusion, si un script directement attaché à un élément statique pourrait fonctionner... et remplacer les bruits de pas)
- autre chose sans doute très difficile: serait-il possible de modifier le son de l'impact des projectiles (flèches, carreaux, armes de jet) lorsqu'un PNJ ou une créature est touché par le PJ, ou le contraire ? (sans, évidemment, attacher de scripts à tous les PNJ et monstres...)
#31
Posté 14 janvier 2006 - 18:09
Citation
OK, j'ai édité le message où est le script.
Citation
BEGIN local_BruitSurBois if ( GetStandingPC == 0 ) Return endif if ( Player->GetSoundPlaying "Bruit de pas" == 0 ) ; à voir dans le TESCS Return endif Player->PlaySoundVP "crac", ( ( Random100 / 333 ) + 0.7 ), 1.0 ENDSi ca marche bien, ton son devrait être joué plus ou moins fort alétoirement. Il est également possible de varier les sons:
BEGIN local_BruitSurBois short bruit if ( GetStandingPC == 0 ) Return endif if ( Player->GetSoundPlaying "Bruit de pas" == 0 ) ; à voir dans le TESCS Return endif Set bruit to ( Random, X ) ; X est le nombre de sons différents if ( bruit == 0 ) Player->PlaySoundVP "crac1", ( ( ( Random, 30 ) / 100 ) + 0.4 ), 1.0 elseif ( bruit == 1 ) Player->PlaySoundVP "crac2", ( ( ( Random, 30 ) / 100 ) + 0.4 ), 1.0 ; ... ; etc. ; ... endif END
Quant à la lave:
- crée une variable globale short (dans l'exemple c'est PjSurLave)
- Dans le script d'Angora, change ça:
if ( GetStandingPC == 1 ) if ( timer >= 1 )en ça:
Set PjSurLave to 0 if ( GetStandingPC == 1 ) Set PjSurLave to 1 if ( timer >= 1 )
- dans mon script, remplace ce code
endif if ( chute >= 90 )par ce code
endif if ( PjSurLave == 1 ) if ( chute >= 30 ) PlaySound "ton bruit PLOUF" endif endif if ( chute >= 90 )
#32
Posté 01 février 2006 - 14:50
Merci pour le script du bois, je ne l'ai pas encore essayer mais cela ne saurait tarder.
Sinon, pour le son de la chute, avec le script actuel j'ai un tout petit souci:
il arrive que le son de la chute soit joué quand le joueur n'est pas blessé (alors qu'il devrait retomber normalement, si, par exemple, il a un haut score en acrobatie élevé ou si il porte une amulette de saut). Et il arrive aussi que le son de la chute ne soit pas joué alors que le PJ reçoit des dégâts... Dans les deux cas c'est plutôt rare, mais ça arrive.
La ligne:
if ( chute > 0 ) ; test pour savoir si on est blessé lors de l'aterrissage.n'est pas infaillible...
Est-ce que tu as une idée ? Peut-on détecter les dégâts reçu en pourcentage, ou varier le script en fonction de l'acrobatie ?
-----------------
Un autre script en rapport avec les sons sur lequel je me casse les dents depuis trois semaines... pour changer le son d'une arme dégainer. Ca paraît bête, mais à moins d'attacher un script aux armes (ce que je ne ferai pas), je ne vois pas de moyen efficace. Pourtant je ne suis pas loin...
Voilà deux méthodes différentes (dans le même script)
pour deux armes (type 7 hache à 1 main, et type 11, arbalette)
begin weapon_effects Short MordiOnce Short MordiDart if ( Player -> GetWeaponType <= 6 ) set MordiDart to 0 endif if ( Player -> GetWeaponType == 7 ) if ( Player->GetWeaponDrawn ) if ( DoOnce == 0 ) ;if ( Player -> GetSoundPlaying "Item Weapon Bow Up" == 1 ) Player -> stopsound "Item Weapon Bow Up" Player -> playsound "Item Weapon Axe Up" Messagebox "Hache une main" set MordiOnce to 1 set MordiDart to 0 elseif ( MordiOnce == 1 ) ;if ( Player -> GetSoundPlaying "Item Weapon Bow Down" == 1 ) Player -> stopsound "Item Weapon Bow Down" Player -> playsound "Item Weapon Axe Down" Messagebox "hache une main rangée" set MordiOnce to 0 endif endif endif if ( Player->GetWeaponType == 11 ) if ( Player -> GetSoundPlaying "Item Weapon Blunt Up" == 1 ) ;if ( Player -> GetWeaponDrawn ) Player -> stopsound "Item Weapon Blunt Up" Player -> playsound "Item Weapon Dart Up" Messagebox "Son des flèchettes sorties" set MordiDart to 1 endif endif if ( MordiDart == 1 ) ;if ( Player -> GetSoundPlaying "Item Weapon Blunt Down" == 1 ) Player -> stopsound "Item Weapon Blunt Down" Player -> playsound "Item Weapon Dart Down" Messagebox "Son des fléchettes rangées" set MordiDart to 0 ;endif endif ;if ( MordiDart == 1 ) ;if ( Player -> GetSoundPlaying "Weapon Swish" == 1 ) ;Player -> stopsound "Weapon Swish" ;Player -> playsound "SwishS" ;MessageBox "Son swishS joué" ;endif ;endif end weapon_effects
Et un autre script testé pour la hache à 2 main qui fonctionne
begin MordiAxe2 Short DoOnce if ( Player -> GetWeaponType == 7 ) if ( Player -> GetWeaponDrawn ) if ( DoOnce == 0 ) Player -> stopsound "Item Weapon Bow Up" Player -> playsound "Item Weapon Axe Up" Messagebox "Son de la Hache" set DoOnce to 1 elseif ( DoDonce == 1 ) Player -> stopsound "Item Weapon Bow Down" Player -> playsound "Item Weapon Axe Down" Messagebox "Son de la Hache rangée" set DoOnce to 0 endif endif endif endLe problème avec les variables de type DoOnce (MordiOnce, MordiDart), c'est qu'on ne range pas forcément son arme avant d'en sortir une autre... on peut passer de l'une à l'autre via le clavier. Donc le script ne marche qu'à moitié...
Je précise que j'ai essayé toute les variantes possibles sans "DoOnce", juste avec IF, ELSEIF et ELSE... ça ne marche jamais bien. Le son est entendu quand l'arme est sortie, mais non quand elle est rangée.
Et pour corser le tout, j'ai un problème bizarre... Impossible de détecter le son Blunt Down (quand on range une arme contondante).
Par exemple:
begin MordiBlunt_detection if ( Player -> GetSoundPlaying "Item Weapon Blunt Up" == 1 ) Messagebox "blunt up joué" endif if ( Player -> GetSoundPlaying "Item Weapon Blunt Down" == 1 ) Messagebox "blunt down joué" endif End
Quand je sors un bâton, j'aurai le message "Blunt up joué". Mais quand je le range, je n'ai jamais "blunt down joué". Pour tant c'est bien "Item Weapon Blunt Down" que j'entends et pas un autre son . Or ça m'embête, car ce son est aussi utilisé pour les armes de jet, et je voudrais le remplacer. Mais sans pouvoir le détecter, pas moyen de le changer...
Modifié par Mordicus, 01 février 2006 - 14:51.
#33
Posté 20 février 2006 - 11:47
Player->PlaySoundVP "crac", ( ( Random100 / 333 ) + 0.7 ), 1.0
Player->PlaySoundVP "crac1", ( ( ( Random, 30 ) / 100 ) + 0.4 ), 1.0
Aucune de ces deux typo n'est reconnue par le TESCS, qui me demande de rentrer un volume... Peut-on vraiment utiliser random pour le volume/pitch d'un son ? (je n'ai pas réussi à trouver d'autres exemples du type). Et si oui , quelle est la typo correcte ?
Autre question: placer des activateurs invisibles un peu partout dans le jeu, cela ne risque-t-il pas de faire chuter le FPS ? (je pense aux effets du mod ASE)
Merci
#34
Posté 20 février 2006 - 12:39
float volume (...) set volume to ( ( ( Random, 30 ) / 100 ) + 0.4 ) Player->PlaySoundVP "crac1", volume, 1.0
Malheureusement dans de nombreuses commandes de scripts, les formules ne sont pas acceptées en paramètre, et parfois même les variables locales/globales non plus.
#35
Posté 22 février 2006 - 00:33
En fait j'ai tenté ça:
float volume float pitch set volume to ( ( ( Random, 30 ) / 100 ) + 0.4 ) set pitch to ( ( ( Random, 30 ) / 100 ) + 0.4 ) Player->PlaySoundVP "crac1", volume, pitchCa devrait marcher théoriquement, n'est-ce pas ?
Le problème, c'est que dans la pratique playsoundVP n'a pas l'air de tenir compte de mes valeurs volume/pitch... PlaySoundVP marche assez mal en général ? ou y a-t-il quelque astuce à savoir ?
J'ai placé les commandes "set volume" et "set pitch" en dessous d'une condition chaque fois répétée, de façon à ce que les variables soient à chaque fois réinitialisées et différentes, mais visiblement, j'ai toujours le même son... c'est comme si je faisais Playsound (sans VP)
#36
Posté 22 février 2006 - 11:46
Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.
#37
Posté 22 février 2006 - 12:54
Morrowind et les commandes sonores, ce n'est pas très folichon...
Je vais quand même essayer la variante PlaySound3DVP que j'avais complètement oubliée, mais je ne me fais pas trop d'illusion...
#38
Posté 21 septembre 2006 - 10:34
Orann, le 22.02.2006 à 12:46, dit :
- as-tu constaté la même chose pour le pitch ? (ou seulement le volume) ?
- est-ce que c'est, selon toi, la même chose avec playsound, playsound3D et playsound3DVP ?
EDIT: bon ben non, apparemment ça marche pas du tout...
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)