Aller au contenu


[Resolu] Unable To Locate Reference For Global


  • Veuillez vous connecter pour répondre
6 réponses à ce sujet

#1 Orann

Orann

    Nérévarine de Pertevue


Posté 07 août 2010 - 16:51

Bonjour. Voici le message d'erreur que j'ai obtenu avec un script : Unable to locate reference for global script 'A_P_cita_son_ambiance'

Ce message d'erreur se produit quand je charge une sauvegarde dans laquelle ce script tourne (c'est un script global). Le message d'erreur n'apparait pas quand le script se lance au cours de la partie. Même après le chargement, le script fonctionne sans problème... Donc je ne comprends pas bien ce message d'erreur... Voici le script, qui gère l'arrêt de la musique (remplacée par un son vide), et la diffusion de sons d'ambiance (avec playsound).

begin A_P_cita_son_ambiance

; script gérant l'écoute aléatoire des sons d'ambiance dans la Citadelle de Douleur

float timer
float timer2 ; timer pour l'abscence de musique dans la citadelle
short temps ; temps du son diffusé (en secondes)
short choix ; selection du son à lancer
short aleatoire ; savoir si on joue un son ou pas.
short musique
; 0 = test pour jouer une musique
; 1 = musique en cours
; 2 = pas de musique pendant 20 secondes

if ( getinterior == 0 )
	return
endif

if ( getPCcell "Citadelle de Douleur" != 1 )
	return
endif

set timer2 to timer2 + getsecondspassed
if ( timer2 >= 0.8 )
	streammusic "A_P_blanc.mp3"
	set timer2 to 0
endif

if ( musique == 1 )
	set timer to timer + getsecondspassed
	if ( timer >= temps )
		set musique to 0
		set timer to 0
	else
		return
	endif
endif

if ( musique == 2 )
	set timer to timer + getsecondspassed
	if ( timer >= 20 )
		set musique to 0
		set timer to 0
	else
		return
	endif
endif

set aleatoire to random 100

if ( aleatoire > 50 )
	set musique to 2 ; pas de musique pour 20 secondes
	return
else
	set musique to 0
endif

set choix to random 11

if ( choix == 0 ) ; 1er son
	playsound "A_P_cita_torture01"
	set temps to 35
	set musique to 1
	return
endif

if ( choix == 1 ) ; 2e son
	playsound "A_P_cita_son_strident02"
	set temps to 16
	set musique to 1
	return
endif

if ( choix == 2 ) ; 3e son
	playsound "A_P_cita_son_strident"
	set temps to 6
	set musique to 1
	return
endif

if ( choix == 3 ) ; 4e son
	playsound "A_P_cita_cris_femme02"
	set temps to 9
	set musique to 1
	return
endif

if ( choix == 4 ) ; 5e son
	playsound "A_P_cita_cris01"
	set temps to 8
	set musique to 1
	return
endif

if ( choix == 5 ) ; 6e son
	playsound "A_P_cita_cris01"
	set temps to 8
	set musique to 1
	return
endif

if ( choix == 6 ) ; 7e son
	playsound "A_P_cita_depecage04"
	set temps to 35
	set musique to 1
	return
endif

if ( choix == 7 ) ; 8e son
	playsound "A_P_cita_son_strident03"
	set temps to 16
	set musique to 1
	return
endif

if ( choix == 8 ) ; 9e son
	playsound "A_P_cita_son_strident04"
	set temps to 30
	set musique to 1
	return
endif

if ( choix == 9 ) ; 10e son
	playsound "A_P_cita_son_strident05"
	set temps to 12
	set musique to 1
	return
endif

if ( choix == 10 ) ; 11e son
	playsound "A_P_cita_spectre01"
	set temps to 6
	set musique to 1
	return
endif

if ( choix == 11 ) ; 12e son
	playsound "A_P_cita_cris02"
	set temps to 6
	set musique to 1
	return
endif

end

Merci.

Modifié par Orann, 09 août 2010 - 14:28.

Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#2 abg

abg

    L'ABG pour les civilisés


Posté 07 août 2010 - 17:17

Hypothèse :
Si le script est lancé depuis un activateur (ou un objet quelconque) c'est un "targeted script" (voir le MSfD) et les "targeted scripts" ont fortement tendance à perdre leur cible (après un rechargement, ou au bout de 3 jours...). Évidement c'est un peu surprenant puisque PlaySound n'a pas, sauf erreur, besoin d'une ref...
A essayer : mettre des redirections "player->" devant tes playsounds.
Alternativement mettre le script en local, sur un activateur invisible au milieu de la ville.
Dans les 2 cas il s'agit de fournir une référence (explicitement ou par défaut) puisque c'est manifestement ce qui embête Morrowind  :|

Aparté : Tu es probablement au courant mais Streammusic a l'horripilant défaut de mettre la musique à fond ! Donc le joueur va en prendre plein les oreilles lorsque le mp3 blanc va se terminer et qu'il sera hors de portée du script. De toute manière, jouer avec ou sans musique, c'est affaire de goût...
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#3 Kira

Kira

    Top-modeleuse...


Posté 07 août 2010 - 17:33

Coucou abg...

Je tiens à signaler que le Morrowind Code Patch corrige désormais cet horripilant problème dû à la commande "StreamMusic"...
Finies les montées de son intempestives, propres à ruiner l'ambiance des mods....
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#4 abg

abg

    L'ABG pour les civilisés


Posté 07 août 2010 - 17:53

Voir le messageKira, le 07 août 2010 - 17:33, dit :

Je tiens à signaler que le Morrowind Code Patch corrige désormais cet horripilant problème dû à la commande "StreamMusic"...
Finies les montées de son intempestives, propres à ruiner l'ambiance des mods....

J'avais oublié. J'oublie tout en ce moment  :(   :agedor:

Ceci dit le mcp réclame la dernière version de Morrowind.exe et je crois me souvenir qu'Orann souhaitait garder une compatibilité "Morrowind seul" (si c'est toujours d'actualité bien sûr)... Avant le MCP j'avais pris cette habitude d'abattre à vue les "streammusic" dans les scripts (je joue sans musique)
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#5 Orann

Orann

    Nérévarine de Pertevue


Posté 07 août 2010 - 17:55

Merci pour l'astuce, mais malheureusement, je viens de faire le test et rajouter "player->" devant les playsound n'enlève pas le message d'erreur au chargement d'une sauvegarde.
Je peux effectivement transformé un peu se script et le mettre sur un activator. Mais ça veut dire qu'il faudra que j'en mette un dans chaque cell. J'avais conçu ce script global pour éviter... Mais je ne vois pas d'où vient le problème.

Pour le streammusic, je connais les limitations. Mais j'en abuse dans Pertevue. Il y a des musiques dans les tavernes, et pour la Citadelle de Douleur, j'ai vraiment besoin de créer une ambiance sonore particulière. J'espère que Morrowind Code Patch fonctionne aussi bien que tu le dis Kira ^^
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.

#6 abg

abg

    L'ABG pour les civilisés


Posté 07 août 2010 - 18:14

Ce script est-il lancé via le menu GamePlay/Edit Start Scripts... du TESCS ou depuis autre chose (une commande startscript depuis un autre global ou depuis un local) ?
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#7 Orann

Orann

    Nérévarine de Pertevue


Posté 09 août 2010 - 14:27

Il est lancé à partir d'un local qui déclenche le global (comme tous les scripts globaux de Pertevue).

J'ai trouvé la solution. En fait, il fallait cocher "reference persist" sur l'objet avec le script local qui appelait le script global. Le message n'apparait plus au chargement d'une sauvegarde. Merci pour votre coup de main !
Palme d'honneur 2010 pour le mod Archipel de Pertevue

Entamez votre voyage vers l'Archipel de Pertevue ! Test communautaire en cours.




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)