SCRIPT if player.hasPerk

Vous trouverez ici les tutoriels et l'entraide sur les outils et techniques de modding spécifiques à Fallout 4.
Vodkaster
Moddeur aspirant
Moddeur aspirant
Messages : 12

SCRIPT if player.hasPerk

Message par Vodkaster »

Bonjour à tous !

Et oui c'est encore moi, et mes problèmes ! :boulet:

Cette fois, c'est pour du script ! Habitué aux scripts du Geck de F3 et FNV, je découvre le Papyrus de Skyrim et F4.
Que de changements !

J'ai besoin de votre aide pour ceci :

Je veux que lorsque le joueur va activer l'objet (activator) sur lequel le script est appliqué, le script vérifie (si il)s'il possède le rang 8, au moins, dans la Perk INTELLIGENCE.
Si non : Afficher un message "non vous ne pouvez pas utiliser ça"
Si oui : Afficher un message "vous avez utilisé l'objet" + l'objet disparait + une quête commence ( je n'ai pas encore réalisé la quête)

Je ne pensais pas avoir du mal à réaliser ça... Et pourtant. Grâce au net, au wiki, et n'ayant pas trouvé comment définir le rang 8 en intelligence, j'ai choisi de vérifier si le joueur possède la Perk "NuclearPhysicist" (il aura donc le rang 8 en INT).
J'ai tenté :
► Afficher le texte
Mais évidemment ce n'est pas ça, j'ai fais évidemment d'autres essais, sans succès.

Étant donné que Papyrus est sur Skyrim, je suppose que certains d'entres vous pourront me filer un coup de pouce ! (Quel e(n)mmerdeur je fais (einh)hein ? :siffle: )

Merci à ceux qui prendront le temps de me répondre !
Modifié en dernier par Akiro le 08 mai 2016, 14:53, modifié 2 fois.
Raison : Passage d'un disciple.
Avatar du membre
Kesta
Maître de Forge
Maître de Forge
Messages : 1077

Re: SCRIPT

Message par Kesta »

L'entête de ton script devrait être :

Code : Tout sélectionner

Scriptname NewScript001 Extends ObjectReference
Et tu auras besoin de (parentheses)parenthèses après Disable normalement.



Sinon pour "écraser" le fonctionnement normal d'un acti (ce que j'avais compris après une première lecture à 4h du mat) :

Pas vraiment besoin d'un script pour ça, utilise un perk entry point avec activation override (directement sur nuclear physicist, ou sur une perk custom que tu ajoutes au joueur à l'initialisation), mets des conditions sur le target pour que ça cible exclusivement ton activator et sur l'entrypoint pour qu'il ne fonctionne que si le joueur à la perk nuclear physicist. Ensuite, attache un fragment pour effectivement faire quelque chose "à la place de l'action originale".

L'autre solution consiste à bloquer l'activation de l'acti lors de l'initialisation de ton script de sorte à ce que seul ton script en lui-même ne reçoive l'event OnActivate. Mais, ça ne marche que pour empêcher les autres scripts de prendre effet (donc si ton objet est animé, l'animation sera jouée quand même), t'oblige à une "post-activation" pour qu'ils prennent ensuite effet, et dans l'ensemble est plutôt dégeu comme implémentation et potentiellement dangereux pour les savegames.



Au passage, essaye d'utiliser des titres de messages plus précis. Si tout le monde se posant une question sur comment réaliser tel ou tel truc via script appel son topic SCRIPT, ça va "vite" être le bordel.
Modifié en dernier par Akiro le 08 mai 2016, 15:01, modifié 3 fois.
Raison : Passage d'un disciple.
Faites un feu à un homme, il aura chaud un jour.
Mettez le feu à un homme, il aura chaud jusqu'à la fin de sa vie.

Terry Pratchett
Vodkaster
Moddeur aspirant
Moddeur aspirant
Messages : 12

Re: SCRIPT

Message par Vodkaster »

Déjà que je ne comprenais pas grand chose, au moins là, tu m'as tué :xD:

Je veux bien faire tout (ca)ça, mais je ne sais pas ce qu'est un "perk entry point avec activation override" et encore moins m'en servir. Et mon acti est non-animé.

Je ne sais pas non plus ce que sont les fragments (peut-être que je m'en suis déjà servi, mais sans savoir que (ca)ça s’appelait ainsi).

Enfin, si je corrige l'entête du script comme tu m'as di(s)t, le script devrait marcher ? (je n'ai pas accès à mon PC avec le CK avant lundi soir, je pourrai tester qu'à ce moment-là )

Navré d'inonder le forum avec toutes mes questions, j'avoue que j'ai du mal avec ce CK... Et n'ayant aucune formation quelconque en informatique, c'est assez compliqué... Mais l'envie (de) d'apprendre et de créer me pousse à continuer ^^

Merci de ta réponse ;)
Modifié en dernier par Akiro le 08 mai 2016, 15:10, modifié 1 fois.
Raison : Passage d'un disciple.
Vodkaster
Moddeur aspirant
Moddeur aspirant
Messages : 12

Re: SCRIPT if player.hasPerk

Message par Vodkaster »

Bonjour Bonjour !
Désolé pour le double post, mais les deux messages sont assez espacés dans le temps...

J'ai décidé de changer de stratégie.
J'ai maintenant une quête "NewWorldSQT01", qui se lance lors de l'ajout d'un item à l'inventaire du joueur.

Stage10 : activation de l'objectif 10 ( obtenir la perk )

Je veux maintenant que :

Si le joueur possède la perk "NuclearPhysicist01"
--> l'objectif 10 de la quête est terminé
-->passage au Stage 20 qui active l'objectif 20

J'ai donc attaché ce fragment au stage 10, après avoir ajouté les propriétés de type Perk et Quest, nommées respectivement :
"NuclearPhysicist", reliée à la perk "NuclearPhysicist01"
"NewWorldQST01", reliée à la quête "NewWorldQST01"
► Afficher le texte
La compilation est validée, aucun message d'erreur.
Seulement In-Game, quand je débloque la compétence (via un gain d'xp et pas via la commande console "addperk") ou si je l'ai déjà débloquée au début de la quête, rien ne se passe. La quête ne passe pas au stage 20 et donc l'objectif 20 n'est pas activé.

-------------------------------------------------------------------------------------------------------------------------------------------

Comme cela ne fonctionne pas, j'ai aussi tenté d'attacher un script à la perk "NuclearPhysicist01".
J'ai défini la propriété de type "QUEST" en la reliant à ma quête "NewWorldQST01"
Je veux donc que : lorsque la perk sera acquise par le joueur ou si elle l'est déjà, que la quête passe au stage20 donc objectif 20.
► Afficher le texte


Mais je me confronte à un problème : je veux que ce script soit exécuté lors de l'acquisition de la perk, seulement, je ne sais donc pas quoi mettre après le "Event" ( si je met juste le Block "If - ....... - EndIf" compilation impossible). J'ai donc mis "OnPlayerTeleport()", qui permettrait donc au script de se relancer a chaque fois que le player se TP, et donc checker si la quête est en cour ou pas, et si oui passer au Stage20.

La compilation est validée la aussi, pourtant aucun changement InGame.

HELP PLZZZZ !!!

Retourner vers « Modder Fallout 4 »