Questions En Vrac
#1
Posté 02 juin 2011 - 20:44
Est-il possible de verifier que le PJ ait complétement vidé son inventaire? (sinon j'utiliserai une ruse comme decrit par Von Zeeple plus haut).
Pour les frontières de Crépuscule, j'utilise le MarkerBox de Tribunal x 2. Mais pas moyen quand on s'approche, ou quand on le heurte d'obtenir le declenchement d'une MessageBox. Est-ce dut à sa taille? Sinon, est-il possible quand un objet n'a pas de système de collision, de lui en ajouter un (en le changeant de catégorie par exemple), ou faut il passer par un outil de modélisation?
Quoi qu'il en soit, si le problème est la taille, je placerai des detecteurs invisibles.
Et un problème un peu vexant (mais je n'ai pas la bosse des maths),
Je voudrai faire tourner un objet sur lui-meme, en soit pas de problèmes, mais:
j'ai un objet positionné comme suit, X 90 Y 0 Z 0 auquel j'imprime une rotation en Y, ça marche,
mais sur un autre positionné en, X 0 Y 90 Z 0, pas moyen de le faire tourner sur lui meme, que ce soit en changeant les parametres de rotation (X, Y ou Z), ou le positionnement initial (auquel je souhaite conserver son Y 90 ),
Si quelqu'un à la solus clef en main, ce serait chouette. J'en ai marre de faire des essais...
#2
Posté 02 juin 2011 - 23:08
Pour l'inventaire, je ne sais pas trop, je vais donc laisser ce sujet à quelqu'un de plus compétent....
Pour ton marker de collision, il me semble bien me souvenir que c'est un static... En faire un autre, en activateur, te permettra d'y placer un script détectant l'approche du joueur afin de déclencher une boîte de message...
Et quand à la rotation de ton objet, tu as deux commandes possibles "rotate xyz" qui fait tourner l'objet autour d'un de ses axes, et "RotateWorld xyz" qui le fait tourner par rapport aux axes du monde....
Il me semble que la commande "RotateWorld" ne devrait pas être gênée par le placement de ton objet....
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)
#3
Posté 03 juin 2011 - 00:08
Bon, teste fait, c'est impec, merci Kira.
En revanche j'avais déjà placé le MarkerBox en activateur et utilisé des scripts, mais aucun, que ce soit en collision ou en detection de distance ne fonctionnent, ça doit etre la taille, il s'étend sur 2 Cells!
#4
Posté 03 juin 2011 - 08:39
Not Quite Dead, le 22.06.2006 à 19:42, dit :
Fervent Partisan de l'Immuabilité Avatarienne.
#5
Posté 03 juin 2011 - 08:56
Finraïl, le 03 juin 2011 - 08:39, dit :
Oui, mais si je ne me trompe pas, cela signifie que le joueur aussi doit l'utiliser (j'ai testé ça dans Fallout pour le mod Real Time Settler, mais pas dans Morro)?
Si c'est le cas, ça m'embete.
Je crois que je vais réduire sa force à 0 pour l'immobiliser le temps qu'il décharge son matériel dans un coffre (cf Von Zeeple), j'ai déjà plus ou moins monté le pretexte, mais je n'ai pas eu le temps de tester (je bute sur un autre truc insignifiant pour le moment, un petit problème d'AiTravel que je n'arrive pas à cadrer dans un fond de bateau qui manque d'espace), on verra bien...
#6
Posté 03 juin 2011 - 18:38
kebra, le 03 juin 2011 - 08:56, dit :
Si c'est le cas, ça m'embete.
Not Quite Dead, le 22.06.2006 à 19:42, dit :
Fervent Partisan de l'Immuabilité Avatarienne.
#7
Posté 04 juin 2011 - 01:11
J'explique,
Il s'agit de forcer le PJ a vidé son inventaire dans un coffre en abaissant sa force (il ne peut plus rien porter).
Premier épisode, je me ballade avec le Sunder (en Fr ?), résultat, décès immédiat .
Deuxième, je lourde l'engin et ça marche..... heu, non, aprés deux plombes a tout transférer et alors que je ne porte plus rien, il me reste 46 kilos. Je sais que certains objets scriptés peuvent laisser leurs traces comme du pneu au fond d'une culotte et je pense que c'est ça, mais du coup, je ne vois pas d'alternative à MWSE. Si quelqu'un connait l'explication (moi, je me contente de supposer...) ou a une idée pour contourner ce défaut...
C'est dommage, je voulais une phase MinerCraft, de ficelles en bout de bois et autres bidules permettant de créer des outils d'évasions. Pfffff.
Une autre question (ça va devenir un topic complet à force), je sauvegarde un script et ce couillon me trouve une erreur ligne 155 tandis que mon End est en 88, comment c'est possible? Win7 et Morro dans Program Files? Autres? C'est un truc banal?
Je garde les autres questions pour plus tard, sinon, je vais m'ennuyer .
Modifié par kebra, 04 juin 2011 - 03:23.
#8
Posté 09 juin 2011 - 10:33
Pour ton erreur de script, copie le ENTIEREMENT (CTRL+A) dans un éditeur de texte normal essaie de voir si il n'y a pas des caractères cachés et des lignes vides après ton end, supprime tout ce qu'il y a derrière, si l'erreur persiste, essaie de supprimer les lignes vides et retour à la ligne (quitte à les refaire) dans le script des fois que le caractère problématique soit avant le end.
L'abus de SMS est dangereux pour l'élocution mentale
Le mod qui révèle (presque) tout sur les dwemers : Dwarmor
Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...
#9
Posté 11 juin 2011 - 18:51
En revanche les invisos sont trop petits pour couvrir une frontière egale à une moitié des cotes de Solstheim, je vais voir avec des detecteurs et du GetDistance.
Et puis maintenant, je galère avec les AiTravel-Escort-Follow qui ne veulent pas faire leurs PackageDone à cause que je ballade le PNJ sur un paquet de cellules et que les solus proposées, ici et là (Wiwi, scipting for dummies...) ne fonctionnent pas. Pas grave, je finirait bien par trouver un truc...
Merci...
Modifié par kebra, 11 juin 2011 - 18:52.
#10
Posté 17 juin 2011 - 01:38
Je continu mon petit chemin dans les joies du scripting (en fait je kif bien), et j'ai encore quelques questions, ça m'évitera peut-etre de répéter les memes erreurs en boucle.
Je vais partir du cas pratique de la soirée,
Je cherche à obtenir que le PJ se prennent des dégats quand il passe dans certaines zones végétales. J'ai obtenu exactement l'effet recherché, ça tourne, sauf deux trucs.
En gros, il se prend 1 de dégat tant qu'il stationne dans la zone (<=300) d'où l'usage d'un timer. J'ai ajouté trois effets, une MessageBox, un son et, l'apparition d'une brume nauséeuse (verte, par PlaceAtMe d'un Activator persistant) qui disparait quand le PJ sort de la zone (script sur l'activator) et réapparait s'il y revient.
Bon, tout ça marche bien, sauf si je place une seconde zone, dans ce cas, MessageBox et son se declenchent mais la brume n'apparait qu'avec la 1ere zone (un editormarker).
En gros, je ne peux pas appeler deux fois l'instance brume. Si quelqu'un peut m'expliquer pourquoi, ( un peu de théorie m'évitera beaucoup de galère ) et s'il est possible de résoudre ça autrement qu'en recréant tout le processus pour chaque zone (par un général peut-etre?).
Et puis, toujours dans la théorie, je me suis apperçu que malgré le timer, la perte de santé variait selon les lieus, enfin selon le framerate (comme avec GetScale+timer). On meurt moins vite à Crépuscule (framerate chargé) qu'à la campagne (saleté de sélection sociale). J'utilise ModCurrentHealth -1, pendant un cours interval de temps (deux secondes if timer>=1 if<=2 ). Si quelqu'un sait regler et expliquer ça, merci...
#11
Posté 17 juin 2011 - 10:51
Pour ton autre problème, il faudrait plus de précision sur quels sont les activateurs utilisés et les scripts attachés pour déterminer les interactions indésirables.
L'abus de SMS est dangereux pour l'élocution mentale
Le mod qui révèle (presque) tout sur les dwemers : Dwarmor
Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...
#12
Posté 17 juin 2011 - 12:17
Korfandar, le 17 juin 2011 - 10:51, dit :
Pour ton autre problème, il faudrait plus de précision sur quels sont les activateurs utilisés et les scripts attachés pour déterminer les interactions indésirables.
Oui, en gros, un gars avec une machine poussive ne prendra aucun degat et un autre avec une rapide sera seché sur place, la revanche sociale . Bon, plus sérieusement, ça m'embete, j'ai mis des timer partout. A voir...
Alors, il y'a deux script et deux meshes placé en activator.
La principale un bete editormarker qui porte le script et agit suite à un GetDistancePlayer.
La seconde, une meshe de ??, db_ , un nuage vert, que j'ai place en activator et rendu persistant. Il porte un script de Disable, quand le PJ sort de la zone...
Le mieux, c'est que je les envoie, bon, je suis pas un cador et il y'aura du degraissage, mais j'apprend...
Le PJ entre dans la zone d'effet, une Box, un son et une brume verte le previennent d'un truc, il perd vie et fatigue jusqu'à une certaine limite. S'il sort de la zone, le nuage disparait, si il y retourne, le meme processus complet redemarre.
float timer short lieu short doOnce if ( GetDistance Player >= 300 ) set timer to 0 set lieu to 0 set doOnce to 0 return endif if ( GetDistance Player <= 300 ) set timer to ( timer + GetSecondsPassed ) set lieu to 1 endif if ( lieu == 1) if ( timer >= 0 ) if ( doOnce == 0 ) MessageBox "Ces plantes malsaines semblent aspirer votre vitalité." PlaySound "bl_serpent_01" set doOnce to 1 "bl_detec_02"->PlaceAtMe bl_effetmarais_01 1 0 0 endif if ( timer <=1 ) Player->ModCurrentFatigue -1 Player->ModCurrentHealth -1 set lieu to 2 endif endif endif
et
if ( GetDistance Player >= 300 ) Disable endif
Sinon, j'en ai fait un qui fait trebucher le PJ (fatigue à 0 et retour de la fatigue l'instant d'aprés). Hier, je le teste dans les marais, et Plouf, j'ai en prime l'effet de noyade au milieu des joncs, avec bruit de bulle SVP. Marrant, je vais envoyer une vidéo, tiens.
#13
Posté 17 juin 2011 - 13:08
Je suis désolée si je dis une bêtise, mais ne serait-il pas plus simple de déclencher sur ton joueur un effet de poison qui s'interrompt quand le personnage a perdu n points de santé?.....
L'effet poison retire des points et produit un nuage verdâtre bien malsain d'aspect...
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)
#14
Posté 17 juin 2011 - 13:24
Donc je rejoins Kira : Quelque chose comme un "explodespell 'sort_de_poison'" lorsque le PJ est en contact avec la plante vénéneuse et tous ces problèmes de timer et framerate sont réglés, automatiquement gérés par le jeu !
C'est une politique à généraliser : IA, effets magiques, animations...etc. Un bon scripteur doit savoir être fainéant
Coaching de PNJs chez Morrowind Renaissance
#15
Posté 17 juin 2011 - 13:44
abg, le 17 juin 2011 - 13:24, dit :
Oui, mais justement, je ne suis pas un bon scripteur .
Cela dit, pigé comment ça marche ou pas me sert pour d'autres trucs, mais je retiens le conseil.
Et puis parfois implementé ou pas... j'arrive pas à faire fonctionner Fall d'où le script modifiant la santé etc... Rrrah, c'est bon.
#16
Posté 17 juin 2011 - 14:55
float timer short lieu short doOnce if ( GetDistance Player >= 300 ) set timer to 0 set doOnce to 0 return endif set timer to ( timer + GetSecondsPassed ) if ( doOnce == 0 ) MessageBox "Ces plantes malsaines semblent aspirer votre vitalité." PlaySound "bl_serpent_01" PlaceAtMe bl_effetmarais_01 1 0 0 set doOnce to 1 endif if ( timer <=1 ) Player->ModCurrentFatigue -1 Player->ModCurrentHealth -1 endif
Explications :
Simplification :
- le RETURN placé dans le test de distance suffit à contrôler tout le reste de l'exécution à part le timer. Le second test de distance est inutile, déjà il aurait mieux valu utiliser un else plutôt qu'un nouveau if, mais le return le rend de toute manière inutile puisque si le joueur est à plus de 300, le script s'interrompt avec le return sans que le reste soit exécuté. Enfin mais c'est plus anecdotique, la condition du second if aurait du être < 300 et non <= 300.
- le test sur lieu ne sert à rien puisqu'il est forcément remis à 1 à partir du moment où le joueur est à moins de 300
Source du problème :
Le script ne fonctionne pas à cause du "bl_detec_02"->PlaceAtMe bl_effetmarais_01 1 0 0
Je suppose que bl_detec_02 est l'id de l'activateur de type editormarker et que tu utilises plusieurs instances de cette id. Le problème est que si il y a plusieurs instances d'un même activator dans la même cell, seule la première chargée peut être référencée par script. C'est la raison pour laquelle on ne peut pas agir globalement sur toutes les instances d'une même id.
Donc pour corriger ton problème, il suffit de remplacer la ligne visée par "PlaceAtMe bl_effetmarais_01 1 0 0" tout court car là ça référence l'instance locale qui porte le script. En effet, chaque instance de ton bl_detec_02 exécute une version qui lui est propre du script notamment au niveau de l'état des variables.
Sinon la solution proposée par Kira et abg est une bonne alternative.
Enfin il serait intéressant d'ajouter dans le script du nuage vert un setdelete afin de supprimer réellement les nuages qui ne servent plus (je te laisse voir comment cette instruction fonctionne) car sinon si le joueur passe son temps à s'approcher et s'éloigner de la plante, tu vas saturer la mémoire d'activator invisibles mais toujours présents.
La solution de l'explodespell ne présente pas cet inconvénient.
L'abus de SMS est dangereux pour l'élocution mentale
Le mod qui révèle (presque) tout sur les dwemers : Dwarmor
Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...
#17
Posté 17 juin 2011 - 17:08
Testé et ça marche parfaitement, un grand merci, et surtout pour l'explication, j'ai beaucoup appris. Je n'aurai pas pensé à l'activateur initial, par exemple (si il y a plusieurs instances d'un même activator dans la même cell, seule la première chargée peut être référencée par script.). J'avais cependant fait gaffe à ne placer qu'une instance par cellule pour les tests... Et je vais pouvoir exploiter, d'autres scripts que j'avais laissé de coté.
J'arrive à bidouiller, je comprend de mieux en mieux la logique de l'ensemble, mais je suis loin de savoir vraiment scripter. Par exemple, je ne maitrise pas concretement, les else, elseif etc... Donc, je les évitent, comme je préfère laisser une condition dont je doute de l'utilité, plutot que la supprimer. Mine de rien, je n'aurai jamais cru etre capable de faire bouger un mur il n'y a pas si longtemps, alors faire des extincteurs de nuage vert, je suis plutot content.
Et puis, comme je progresse, je me dis que je degraisserai quand je maitriserai mieux...
Reste, que je vois le chemin a parcourir, ton explication est clair et simple, tout en maitrise, ça parait évident...
Pour savoir, ces instances invisibles peuvent avoir une réelle incidence? Parcqu'il est joli mon nuage qui part et qui revient (et pour d'autres usages surtout).
Au fait, Kira, j'use et j'abuse des effets magiques comme ceux du poison pour créer des monstres ou des ambiances puisque je ne sais pas modeler. C'est vrai qu'il y a beaucoup a détourner et c'est souvent plus marrant .
Modifié par kebra, 17 juin 2011 - 17:18.
#18
Posté 17 juin 2011 - 17:51
Le minimum serait de transformer le script comme suit :
short doonce if ( doonce == 0 ) if ( GetDistance Player >= 300 ) Disable set doonce to 1 endif endifAu moins le getdistance des cachés ne s'exécutera plus, mais il faudrait utiliser setdelete pour être plus propre, voir le mod magasins de miniatures pour des exemples.
L'abus de SMS est dangereux pour l'élocution mentale
Le mod qui révèle (presque) tout sur les dwemers : Dwarmor
Fervent Partisan de l'Instabilité Avatarienne
Quart du quarteron des VGM...
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)