| Dormir pour un téléportation | |
|
|
Auteur | Message |
---|
kraken Auxiliaire ArchipelModeur
Nombre de messages : 38 Age : 34 Date d'inscription : 11/01/2007
| Sujet: Dormir pour un téléportation Ven 27 Juil 2007, 20:12 | |
| Bonjours, wiwiland étant en rade j'implore votre aide.
J'aimerais faire que lorsque le joueurs dort plus d'un certains temps dans un lit préçis il soit téléporter dans une autre cell. J'imagine qu'on doit passé par un script attaché au lit mais je suis pas sur. Merci pour votre aide | |
|
| |
Mike89 Maître ArchipelModeur
Nombre de messages : 3151 Age : 68 Date d'inscription : 06/03/2007
| Sujet: Re: Dormir pour un téléportation Ven 27 Juil 2007, 21:04 | |
| - kraken a écrit:
- Bonjours, wiwiland étant en rade j'implore votre aide.
J'aimerais faire que lorsque le joueurs dort plus d'un certains temps dans un lit préçis il soit téléporter dans une autre cell. J'imagine qu'on doit passé par un script attaché au lit mais je suis pas sur. Merci pour votre aide Rien ne dis que le PC dors dans un lit précis... il ny a pas de IsSleepingInBedMachin. Solution : une quête avec script ou un script de lit ! (d'objet) Données : refLitQuiVoyage Fonctions : player.GetDistance refLitQuiVoyage et aussi éventuellement IsPCSleeping Attention, quand le PC dort, on n'est pas en GameMode. Il faut utiliser le bloc 1012 (sleepwait) Le mieux est un script sur le lit avec juste un bloc Menumode Dedans tu testes la distance au lit (petite distance en unités d'oblivion... comme ça tu est sûr qu'il est bien dans ce lit... teste le par un get distance quant il dort dedans, à la console) - Code:
-
Begin MenuMode 1012 If IsPCSleeping If player.GetDistance refLitQuiVoyage < 10 (je dis çà, j'en sais rien) If GetPCSleepHours > nn WakeUpPC player.MoveTo gnagna EndIf EndIf EndIf End Pour le GetPcSleepHours, le pb est qu'il sera téléporté, avant que la jauge d'attente se finisse. Il vaudrait mieux mémoriser l'heure de début du sommeil (avec un doonce et GetCurrentTime, puis calculer à chaque frame le temps passé...) Je n'ai pas testé, il est possible que çà plante ! Mais l'idée est dans cette direction. Donnes des nouvelles, et publies ta solution... End
Dernière édition par le Ven 27 Juil 2007, 21:06, édité 1 fois | |
|
| |
DamonYa Chaman
Nombre de messages : 53 Age : 44 Date d'inscription : 19/07/2007
| Sujet: Re: Dormir pour un téléportation Ven 27 Juil 2007, 21:06 | |
| Oui dans ton script à vu d'oeil comme cela je pense qu'il faut que tu utilises les fonctions :
- IsPCSleeping - que tu fasses un compteur si c'est une durée où que tu utilises la fonction GetCurrentTime si c'est entre certaines heures. - Moveto
EDIT : arf bon je me suis fait doubler et de façon bien plus complète, j'ai rien dit donc ^^ | |
|
| |
Mike89 Maître ArchipelModeur
Nombre de messages : 3151 Age : 68 Date d'inscription : 06/03/2007
| Sujet: Re: Dormir pour un téléportation Ven 27 Juil 2007, 22:49 | |
| - DamonYa a écrit:
- Oui dans ton script à vu d'oeil comme cela je pense qu'il faut que tu utilises les fonctions :
- IsPCSleeping - que tu fasses un compteur si c'est une durée où que tu utilises la fonction GetCurrentTime si c'est entre certaines heures. - Moveto
EDIT : arf bon je me suis fait doubler et de façon bien plus complète, j'ai rien dit donc ^^ Désolé de t'avoir grillé Damonya... Tu as vu juste pour les fonctions utiles, mais il y a aussi un contexte quand le PC dort... on est pas en GameMode... donc lorsque çà marche pas, c'est que le code est mal placé... Je confirme : Script sur le lit, qui ne fonctionnera que lorsque le PC est dans les environs... et de plus en train de dormir puisque ce script ne comportera qu'un bloc MenuMode... le 1012, bien sûr ! C'est à dire quand le menu d'attente pendant le sommeil décompte les heures. Il est donc inutile dans ce script de tester IsPCSleeping, comme je l'ai écrit. - Code:
-
Scn...
short DoOnce float top (je crois, je sais plus si c'est float...)
Begin MenuMode 1012
If DoOnce == 0 Set top to GetCurrentTime Set DoOnce to 1 EndIf
If player.GetDistance refLitQuiVoyage < 10 (je dis çà, 10, j'en sais rien) If (GetCurrentTime - top) > deltaT ; (deltaT = le temps que tu veux) WakeUpPC set Doonce to 0 ; pour la prochaine fois, si çà doit refonctionner player.MoveTo Refgnagna EndIf EndIf
End Si ça broute l'herbe du desk, je sais pas si çà va digérer le wakeup et le moveto... en une frame, tu décales d'une frame... ou deux. pour ça tu testes une variable step que tu augmentes de 1 ou 2 à chaque commande... Je suis parfois surpris que mes scripts fonctionnent du premier coup...
Dernière édition par le Dim 29 Juil 2007, 00:53, édité 2 fois | |
|
| |
kraken Auxiliaire ArchipelModeur
Nombre de messages : 38 Age : 34 Date d'inscription : 11/01/2007
| Sujet: Re: Dormir pour un téléportation Sam 28 Juil 2007, 11:45 | |
| Merci pour vos réponse rapide et complete. Mais quelque chose m'échappe
player.MoveTo Refgnagna
La Refgnagna c'est une cell ou un objet ? | |
|
| |
Mike89 Maître ArchipelModeur
Nombre de messages : 3151 Age : 68 Date d'inscription : 06/03/2007
| Sujet: Re: Dormir pour un téléportation Sam 28 Juil 2007, 12:25 | |
| - kraken a écrit:
- Merci pour vos réponse rapide et complete.
Mais quelque chose m'échappe
player.MoveTo Refgnagna
La Refgnagna c'est une cell ou un objet ? Soit un marqueur (Xmarker...) soit un objet. Si c'est un objet avec collisions, le PJ sera déposé à proximité. Oui, je me suis aperçu récemment que les fonctions MoveTo et MoveToMarker sont une seule et même fonction. MoveTo est une abréviation de MoveToMarker. | |
|
| |
kraken Auxiliaire ArchipelModeur
Nombre de messages : 38 Age : 34 Date d'inscription : 11/01/2007
| Sujet: Re: Dormir pour un téléportation Lun 30 Juil 2007, 10:56 | |
| Merci mike, sa marche, il fallait juste augmenter un peu la valeur de distance. Je continue mes questions. Pour tuer un perso essential via un script J'imagine qu'il y a une commande pour rendre le perso plus essential et après on kill. Ma question quel est cette commande. | |
|
| |
DamonYa Chaman
Nombre de messages : 53 Age : 44 Date d'inscription : 19/07/2007
| Sujet: Re: Dormir pour un téléportation Lun 30 Juil 2007, 11:30 | |
| J'ai pas trop compris ta question "perso essentiel" Mais si tu veux tuer ton joueur avec un trigger par exemple - Code:
-
scn ..... Begin OnTrigger Player Player.Kill End | |
|
| |
kraken Auxiliaire ArchipelModeur
Nombre de messages : 38 Age : 34 Date d'inscription : 11/01/2007
| Sujet: Re: Dormir pour un téléportation Lun 30 Juil 2007, 11:36 | |
| Quand je parle des perso essential, c'est les perso immortelle qui sont inconcient quand on les tue. | |
|
| |
Nenfëa Auxiliaire ArchipelModeur
Nombre de messages : 34 Age : 40 Date d'inscription : 04/04/2007
| Sujet: Re: Dormir pour un téléportation Lun 30 Juil 2007, 13:49 | |
| Hello ! Tu peux peut-être utiliser la fonction SetEssential pour ça. Peut-être, car SetEssential est normalement prévue pour fonctionner avec des IDs, je n'ai aucune idée si ça marche avec des références (probablement que oui, sans quoi le Wiki préciserait que ça ne fonctionne pas en plus d'agir comme un Return, mais sans garanties ! ). Par contre, es tu bien sur de vouloir tuer les acteurs essentiels ? Ils le sont généralement pour une bonne raison, un tel acte risque de faire buguer des quêtes diverses et variées ! | |
|
| |
kraken Auxiliaire ArchipelModeur
Nombre de messages : 38 Age : 34 Date d'inscription : 11/01/2007
| Sujet: Re: Dormir pour un téléportation Lun 30 Juil 2007, 13:56 | |
| Le perso essential que je veux tuer est perso obligatoire pour le début de ma quête mais sa mort a une certaine étape est obligatoire pour garder une certaine logique. | |
|
| |
Mike89 Maître ArchipelModeur
Nombre de messages : 3151 Age : 68 Date d'inscription : 06/03/2007
| Sujet: Re: Dormir pour un téléportation Lun 30 Juil 2007, 15:05 | |
| - Nenfëa a écrit:
- Hello !
Tu peux peut-être utiliser la fonction SetEssential pour ça. Peut-être, car SetEssential est normalement prévue pour fonctionner avec des IDs, je n'ai aucune idée si ça marche avec des références (probablement que oui, sans quoi le Wiki préciserait que ça ne fonctionne pas en plus d'agir comme un Return, mais sans garanties ! ).
Extrait de la référence WTEAM e attendant le retour du Wiwiki ¤ SetEssentialFonction statistiqueFonction d’acteurSyntaxe : SetEssential ''BaseActorID", 0 | 1 Exemple : SetEssential MonPNJFavoris 1 SetEssential MonExFavori 0 Active l'indicateur "essential" d'un acteur (1 ou 0). Lorsque cet indicateur est à 1, le PNJ/creature ne peut pas être tuée -- lorsque sa santé arrive à 0 ou en dessous, un acteur essentiel est mis temporairement à l'état inconscient (''unconscious''). C'est une fonction qui porte sur l'acteur de base, pas sur une référence !!!Donc toutes les références de l'acteur de base subissent le même sort, mais comme en général, les acteurs ont une unique référence (surtout les essentiels !!!) cela ne pose le plus souvent pas de problème. | |
|
| |
Nenfëa Auxiliaire ArchipelModeur
Nombre de messages : 34 Age : 40 Date d'inscription : 04/04/2007
| Sujet: Re: Dormir pour un téléportation Mer 01 Aoû 2007, 05:50 | |
| - Mike89 a écrit:
- C'est une fonction qui porte sur l'acteur de base, pas sur une référence !!!
En fait, après tests, la fonction accepte aussi une variable de type référence comme paramètre d'entrée (d'où l'avertissement du Wiki ElderScrolls). Par exemple : - Citation :
- SetEssential OcatoRef 0
... est refusé par le compilateur, tandis que : - Citation :
- Ref acteur
Set acteur to OcatoRef SetEssential acteur 0 ... passe parfaitement. Les joies du compilateur de scripts ! Celà dit, même appelé sur une référence, ce sera l'acteur de base qui sera modifié, donc toutes les références de l'acteur. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Dormir pour un téléportation | |
| |
|
| |
| Dormir pour un téléportation | |
|