Aller au contenu


Problème D'Apparition Du Journal Dans Un Script


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

#1 Ariya

Ariya

Posté 03 avril 2010 - 05:25

après 6 mois sans touchez a TES, c'est dur de s'y remettre

mon problème est le suivant, dans mon script ci-dessous, je cherche a ce que un PNJ a qui je viens de donner une armure récupère un sort et me donne l'index 15 du journal que j'ai rajouté.

et je fais cela par script car c'est seulement un Betâ. j'ai pour but de faire ce script avec une dizaine de PNJ et je voulais tester

mais sa ne marche pas !


Begin kam_script_armor1

short HasItemEquipped
short Armor1
short Lum

if (GetJournalIndex "Kam_armory" >= 10)
	set Armor1 to 1
else
	set Armor1 to 0
endif

if (Armor1 = 1)
	if ("kam_lum"->HasItemEquipped "adamantium boots" == 1)
		if ("kam_lum"->HasItemEquipped "adamantium_bracer_right" == 1)
			if ("kam_lum"->HasItemEquipped "adamantium_bracer_left" == 1)
				if ("kam_lum"->HasItemEquipped "adamantium_pauldron_left" == 1)
					if ("kam_lum"->HasItemEquipped "adamantium_pauldron_right" == 1)
						if ("kam_lum"->HasItemEquipped "adamantium_cuirass" == 1)
							if ("kam_lum"->HasItemEquipped "adamantium_greaves" == 1)
								set Lum to 1
							else
								set Lum to 0
							endif
						else
							set Lum to 0
						endif
					else
						set Lum to 0
					endif
				else
					set Lum to 0
				endif
			else
				set Lum to 0
			endif
		else
			set Lum to 0
		endif
	else
		set Lum to 0
	endif
else
	set Lum to 0
endif

if (Lum = 1)
	Journal "Kam_armory" 15
	"kam_lum"->AddSpell "akaviri danger-sense" 1
endif

End

personnellement je ne vois pas d'erreur de syntaxe

je précise que le sort "akaviri danger-sense" et l'armure d'adamantium sont purement arbitraires

si vous avez un moyen de me débloquer ou de raccourcir le script, cela m'arrangerai

encore merci les Wiwilandais

Modifié par Ariya, 03 avril 2010 - 05:30.

- Apprends comme si tu devais vivre pour toujours et vis comme si tu devais mourir ce soir.
- Bavardage est écume sur l’eau, action est goutte d’or.
proverbes tibétains

#2 abg

abg

    L'ABG pour les civilisés


Posté 03 avril 2010 - 08:24

Bonjour,

HasItemEquiped est une fonction, tu ne dois pas déclarer de variable de ce nom (voir le MSfD9 page 45)

Par ailleurs, selon le contexte, il n'est peut-être pas nécessaire de faire tout ça : Si le PNJ reçoit l'armure via un dialogue (avec des AddItem dans le champs result du dialogue) pourquoi ne pas tout faire là-bas  :) (sachant que le PNJ s'équipera de l'armure s'il la juge meilleure que ce qu'il porte déjà)
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#3 Ariya

Ariya

Posté 03 avril 2010 - 08:44

effectivement, je pourrais faire comme cela mais la, je veux qu'il porte celle la! (je sais je suis chiant)
et de plus, je veux faire cela pour 10 ou 15 PNJ donc, je préfère faire ça en script.

je vais essayer en enlevant
short HasItemEquipped

EDIT : cela n'a rien changé, le journal ne se met pas a jour

Modifié par Ariya, 03 avril 2010 - 08:48.

- Apprends comme si tu devais vivre pour toujours et vis comme si tu devais mourir ce soir.
- Bavardage est écume sur l’eau, action est goutte d’or.
proverbes tibétains

#4 abg

abg

    L'ABG pour les civilisés


Posté 03 avril 2010 - 09:23

 Ariya, le 03 avril 2010 - 08:44, dit :

effectivement, je pourrais faire comme cela mais la, je veux qu'il porte celle la! (je sais je suis chiant)
et de plus, je veux faire cela pour 10 ou 15 PNJ donc, je préfère faire ça en script.

Ok, avec tant de PNJs le script local va s'imposer  :)
Mais est-il vraiment nécessaire de vérifier qu'ils équipent l'armure ?
Je veux dire par la que si leur score en armure intermédiaire (c'est bien de l'intermédiaire l'adamantium  :green: ) et l'absence d'une alternative le justifie ils vont forcément l'équiper !
A essayer donc : remplacer HasItemEquiped par une commande GetItemCount.

Hypothèse idiote : ce ne sont pas des argoniens ou des khajiits (auquel cas tu peux attendre longtemps qu'ils enfilent les bottes  :yahoo: ) ?

Autre hypothèse idiote : Tu ne leur donnes pas l'armure via l'interface de commerce (auquel cas le Morrowind Code Patch va s'opposer à ce qu'ils équipent l'armure)

A tester (j'écris ce script de mémoire sans essayer de le compiler dans le TESCS) :

Begin kam_script_armor1

If ( GetJournalIndex "Kam_armory" == 10 )
	If ( "kam_lum" -> HasItemEquipped, "adamantium boots" == 1 )
				If ( "kam_lum" -> HasItemEquipped, "adamantium_bracer_right" == 1 )
						If ( "kam_lum" -> HasItemEquipped, "adamantium_bracer_left" == 1 )
								If ( "kam_lum" -> HasItemEquipped, "adamantium_pauldron_left" == 1 )
										If ( "kam_lum" -> HasItemEquipped, "adamantium_pauldron_right" == 1 )
												If ( "kam_lum" -> HasItemEquipped, "adamantium_cuirass" == 1 )
														If ( "kam_lum" -> HasItemEquipped, "adamantium_greaves" == 1 )
								Journal, "Kam_armory", 15
								"kam_lum" -> AddSpell, "akaviri danger-sense"
							EndIf
						EndIf
					EndIf
				EndIf
			EndIf
		EndIf
	EndIf
EndIf

End kam_script_armor1

Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#5 Ariya

Ariya

Posté 03 avril 2010 - 09:30

je vais essayer

EDIT : le script est blindée d'erreur (ligne 13-14-15-16-17-18-19-20, TES me dit "Miss matched quotes" alors que il y a bien tout ce qu'il faut sur l'écriture ou il me met "functionreference "If" not found) et je ne peux pas le compiler
KEZAKO ??, pourquoi sa marche pas ?


EDIT 2 : effectivement, les Hypothèses idiotes sont pas si idiotes que ça mais, désolé de te décevoir, je sais que les races animales peuvent pas porter de bottes mais j'ai des elfes noirs, des rougegardes et 1 haut elfe a équiper en armure par script (et la, j'ai peu de PNJ (6))

----------------------> si tu ne trouve pas, cher abg, je changerais de chemin c-a-d, j'enleverai les scripts et je ferai sa par Journal

Modifié par Ariya, 03 avril 2010 - 09:47.

- Apprends comme si tu devais vivre pour toujours et vis comme si tu devais mourir ce soir.
- Bavardage est écume sur l’eau, action est goutte d’or.
proverbes tibétains

#6 abg

abg

    L'ABG pour les civilisés


Posté 03 avril 2010 - 10:07

 Ariya, le 03 avril 2010 - 09:30, dit :

EDIT : le script est blindée d'erreur (ligne 13-14-15-16-17-18-19-20, TES me dit "Miss matched quotes" alors que il y a bien tout ce qu'il faut sur l'écriture ou il me met "functionreference "If" not found) et je ne peux pas le compiler
KEZAKO ??, pourquoi sa marche pas ?

Parce que je suis une buse qui devrait valider ce qu'il propose avant de poster  :)

Bon il y a un problème avec la redirection "kam-lun" -> dans ces lignes. En jouant avec les espaces ça finit par passer mais plus surement cette commande HasItemEquipped fonctionnera de façon plus fiable avec une variable intermédiaire :
Set mavariable to ( HasItemEquipped, "truc_machin" )
if ( mavariable == 1 )
...etc...

Mais de toute façon, ma logique est en défaut puisqu'il s'agit d'un script local attribué à plusieurs PNJs (le premier obtiendra le sort mais les autres n'auront rien le journal étant déjà passé à 15...)

Tentative de réécriture en utilisant cette fois le sort comme drapeau local :
Les redirections sont inutiles puisque le script sera local (placé sur les PNJs concernés)

Begin kam_script_armor1

If ( GetSpell, "akaviri danger-sense" == 0 )
		If ( HasItemEquipped, "adamantium boots" == 1 )
				If ( HasItemEquipped, "adamantium_bracer_right" == 1 )
						If ( HasItemEquipped, "adamantium_bracer_left" == 1 )
								If ( HasItemEquipped, "adamantium_pauldron_left" == 1 )
										If ( HasItemEquipped, "adamantium_pauldron_right" == 1 )
												If ( HasItemEquipped, "adamantium_cuirass" == 1 )
														If ( HasItemEquipped, "adamantium_greaves" == 1 )
																Journal, "Kam_armory", 15
																AddSpell, "akaviri danger-sense"
														EndIf
												EndIf
										EndIf
								EndIf
						EndIf
				EndIf
		EndIf
EndIf

End kam_script_armor1

Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#7 Ariya

Ariya

Posté 03 avril 2010 - 10:16

je vais refaire ça a ma manière, sa va être un beau bordel dans 5 minutes

encore merci abg mais je pense que la je vais arreter les scripts la (19h de script non-stop sa suffit)

encore merci pour ton aide et tes indications (je me coucherai moins conne ce soir)

Modifié par Ariya, 03 avril 2010 - 10:16.

- Apprends comme si tu devais vivre pour toujours et vis comme si tu devais mourir ce soir.
- Bavardage est écume sur l’eau, action est goutte d’or.
proverbes tibétains

#8 elendell

elendell

    Mécano Dell'Arte


Posté 03 avril 2010 - 12:20

Bonjour Ariya,

Pense à utiliser le débugueur de scripts. Il n'indique pas tout mais permet de relever de nombreuses erreurs de syntaxes. Certaines de ces erreurs n'empêchent ni la compilation ni même le script de fonctionner dans la plupart des cas mais elles peuvent créer des bugs aléatoires qui sont ensuite très durs à déceler. Par exemple, voici le rapport pour ton script (du 1er message) :

Citation

                     DebugTES3 version 2.03 : script "kam_script_armor1"
                    -----------------------------------------------------


Liste des erreurs :
---------------------
    - Ligne 7 : une parenthèse sans espace après.
    - Ligne 7 : une parenthèse sans espace avant.
    - Ligne 13 : une parenthèse sans espace après.
    - Ligne 13 : une parenthèse sans espace avant.
    - Ligne 14 : une parenthèse sans espace après.
    - Ligne 14 : une parenthèse sans espace avant.
    - Ligne 15 : une parenthèse sans espace après.
    - Ligne 15 : une parenthèse sans espace avant.
    - Ligne 16 : une parenthèse sans espace après.
    - Ligne 16 : une parenthèse sans espace avant.
    - Ligne 17 : une parenthèse sans espace après.
    - Ligne 17 : une parenthèse sans espace avant.
    - Ligne 18 : une parenthèse sans espace après.
    - Ligne 18 : une parenthèse sans espace avant.
    - Ligne 19 : une parenthèse sans espace après.
    - Ligne 19 : une parenthèse sans espace avant.
    - Ligne 20 : une parenthèse sans espace après.
    - Ligne 20 : une parenthèse sans espace avant.
    - Ligne 47 : une parenthèse sans espace après.
    - Ligne 47 : une parenthèse sans espace avant.
    - Ligne 49 : erreur, la fonction AddSpell ne doit contenir aucun paramètre après l'ID "akaviri danger-sense" !


Liste des variables locales utilisées :
-----------------------------------------
    - "hasitemequipped" (type SHORT)
    - "armor1" (type SHORT)
    - "lum" (type SHORT)

Liste des objets physiques utilisés :
---------------------------------------
    - "kam_lum" (type PERSONNE)

Liste des objets non physiques utilisés :
-------------------------------------------
    - "akaviri danger-sense" (type SORT)

Liste des dialogues utilisés :
--------------------------------
    - "kam_armory" (type QUETE)

PS : Pourrais-tu ne pas rédiger tes messages en couleur stp ? Suivant la skin utilisée, c'est très difficile à lire. Et je le sais pour avoir moi-même essayé toutes les couleurs, celles qui vont aux uns ne vont pas aux autres. Désolé.  :good:




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

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