Aller au contenu


[Colle]Utilisation De Container Virtuel Ou Persistant ?


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

#1 beeratwork

beeratwork

Posté 06 novembre 2009 - 09:51

J'ai une fois créé des sacs "fourre-tout" pour le joueur. Il s'agit en fait d'un objet dont on doit s'équiper pour ouvrir le container et mettre des objets dedans ou en prendre.

J'aimerais avoir votre avis sur les points suivant :

1) Pour que le joueur puisse acheter autant de sac qu'il le désire, j'utilise une référence locale au script (container virtuel)
Donc :
scn AARMarket00MiscTote00Script<BR><BR>short step<BR>short DoOnce<BR>ref VirtualContainer<BR><BR>Begin OnEquip player<BR>if (step == 0)<BR>  Message " "<BR>  Message " "<BR>  set step to 1<BR>endif<BR>End<BR><BR>Begin OnUnequip player<BR>if (step != 0)<BR>  set step to 0<BR>endif<BR>End<BR><BR>Begin MenuMode<BR>if (DoOnce == 0)<BR>  set DoOnce to 1<BR>  set VirtualContainer to IDdeCoffre<BR>else<BR>  if (step == 1)<BR>   VirtualContainer.Activate player 1<BR>   set step to 0<BR>  endif<BR>endif<BR>End<BR><BR>Begin GameMode<BR>if (DoOnce == 0)<BR>  set DoOnce to 1<BR>  set VirtualContainer to IDdeCoffre<BR>else<BR>  if (step == 1)<BR>   VirtualContainer.Activate player 1<BR>   set step to 0<BR>  endif<BR>endif<BR>End

2) La seconde solution consisterait à faire dans la condition "if (DoOnce == 0)" un "PlaceAtMe" de "IDdeCoffre" puis de déplacer à l'aide d'un "MoveTo" la référence ainsi crée dans une cellule vide du mod pour que le joueur ne voit pas le container.

3) La troisième solution consiste à utiliser des références persistantes qui seraient placée dès le début dans la cellule vide. Le hic, c'est que ça ne permet pas d'acheter autant de sac qu'on veut. Ca ne ferait que 2 ou 3 sac à acheter.

4) Pourquoi mettre le sac en quest item ? Le joueur devrait pouvoir le ranger là où il veut non ? S'il le perd, tant pis, il savait que le risque existe. Par contre, en utilisant un référence non-persistante, je ne vois pas où est le problème sachant que Bethesda a déjà utilisé ce principe et que je n'ai encore entendu aucune plainte de coffre qui se vide tout seul à part ceux qui respawn.

5) Comment limiter le nombre d'objet/poids des sacs ? J'ai essayé en cliquant sur l'option weigth dans les paramètres d'objet (je n'ai pas encore pensé à allé voir dans des paramètres de référence). J'ai inscrit 50 pour le poids et j'ai pu mettre une massue de 80 ! J'aimerai bien pouvoir faire des sac de 50, 100, 150 et 200, avec les prix en conséquence.

Modifié par beeratwork, 23 mars 2010 - 12:19.


#2 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 07 novembre 2009 - 18:52

Bonjour,

J'ai une petite question vis à vis de ton message...

Tu attends quoi comme réponse ? Car là, on a un script, qui n'est pas placé dans un contexte (il est censé faire quoi exactement ? Il est attaché à quoi ?) , et tu nous demandes ce que nous en pensons.
Après, tu nous demandes "et si je ferais ça plutôt ?", ce qui a tendance à empirer la situation, de plus, on ne sait même pas si le script fonctionne, exactement comme tu le veux, or, si il fonctionne je ne vois pas trop pourquoi il faudrait le changer. Et si ce n'est pas le cas, on ne sait pas ce qui te gène dans ce script...


Je ne suis pas devineresse, et manifestement, je ne suis pas la seule dans ce cas là...

#3 beeratwork

beeratwork

Posté 09 novembre 2009 - 07:42

Ce qui m'ennuie :

Citation

Pour que le joueur puisse acheter autant de sac qu'il le désire

Ce que j'attend comme réponse :
- Un avis
- Une solution

Alors oui ce script fontionne parfaitement comme ceci :
scn AARMarket00MiscTote00Script

short step
short DoOnce

Begin OnEquip player
if (step == 0)
  Message " "
  Message " "
  set step to 1
endif
End

Begin OnUnequip player
if (step != 0)
  set step to 0
endif
End

Begin MenuMode
if (step == 1)
 PersistentRefContainer.Activate player 1
 set step to 0
endif
End

Begin GameMode
if (step == 1)
 PersitentRefContainer.Activate player 1
 set step to 0
endif
End

Je ne suis pas arrivé à faire fonctionner le script avec une référence locale au script, donc non persistente. Il faut absolument utiliser une référence persistente, ce qui restraint le nombre de sac que l'on peut acheter. Le joueur ne pourra pas dire "Oh je vais acheter 2 sac rouge et 3 bleu". Non. Ce sera 1 rouge et un bleu.

#4 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 11 novembre 2009 - 19:05

Hum...je n'ai jamais fait mumuse avec les références dans un script...
Mais, les fonctions GetSelf et/ou This ne permet-elle pas de mémoriser une référence non-persistante justement ?

#5 beeratwork

beeratwork

Posté 12 novembre 2009 - 07:19

Je ne vois pas bien comment.

L'objet qui se trouve dans l'inventaire du joueur, qui permet l'ouverture du sac, est de la catégorie "Misc" (divers) et donc faire un
Set Self to GetSelf
Self.Activate player
ne fonctionne pas. Je peux toujours réessayer pour être sûr que je n'avais rien oublié, mais ça ne va pas. Je pense que l'inverse n'ira pas non plus. Il y a toujours un retour windows avec l'utilisation d'une référence non-persistante.

Pour le moment, je suis obligé de n'utiliser que mes 6 sac en références persistentes.
Je crois qu'Oblivion ne supporte pas cette approche.




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

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