Aller au contenu


Bloquer L'inventaire Du Joueur....


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

#1 Kira

Kira

    Top-modeleuse...


Posté 11 February 2017 - 14:28

Coucou...

Tout d'abord, un grand bonjour et de gros bisous à tous ceux qui se souviennent de mon existence...  Je suis un peu gênée d'avoir disparu pendant si longtemps mais je crois que j'avais besoin de faire une longue pose loin de l'informatique et loin d'Internet... Je n'étais pas mal ou déprimée, mais j'avais besoin de retrouver mes crayons, mes feuilles de papier qui sentent si bon, et puis aussi les promenades dans les collines et les visites aux gens que j'aime...

Bref, après ce chapitre de "Kira, sa vie et tout le reste", j'aborde le sujet qui m'amène...

Je sais, c'est un peu tard, mais le sujet d'empêcher le joueur d'accéder à son inventaire est, il me semble revenu plusieurs fois sur le tapis dans la rubrique des scripts et, il me semble avoir trouvé, hier, une solution à peu près acceptable...

En fait, il n'existe pas de commande permettant, comme il a été fait dans les jeux suivants, Oblivion, Fallout 3 et 4, ainsi que Skyrim, de vider l'inventaire du joueur dans un container... Il y a bien, dans Morrowind, un système qui confisque les objets obtenus de façon plus ou moins illégale quand le joueur va en prison, mais c'est une fonction qui ne réagit qu'aux objets volés...

Il existe bien une fonction "EnablePlayerInventory", utilisée au début du jeu pour autoriser le joueur à ouvrir son inventaire, mais elle n'est utilisée qu'une seule fois, au cours du chargen et ne possède pas de fonction inverse... Le personnage arrive sans la possibilité d'ouvrir son inventaire et, donc, il n'y a pas besoin de créer une fonction pour initialiser un état qui est impliqué par défaut dans le hardcode...

Mais, il existe tout de même une commande qui, bien que n'empêchant pas l'ouverture de l'inventaire, permet de le refermer en une frame, ce qui en interdit l'utilisation... C'est une fonction qui sert au moment des voyages instantanés et permet au joueur de se retrouver à destination sans avoir d'inventaire ouvert s'il l'était au moment du départ...

Bref, la simple commande

if ( MenuMode == 1 )
	 MenuTest
endif

Permet de refermer sur les doigts du joueur son inventaire dès qu'il tente de l'ouvrir... En partant de cette base, il est très simple de faire un script qui enlève son équipement au joueur, l'empêche de s'en rééquiper et de se battre ou d'utiliser la magie...

Tout d'abord, il faut l'objet qui va permettre d'exécuter le script... Comme je suis partie de l'hypothèse de départ d'une mise en prison, j'ai utilisé un collier, placé sur le slot de la clavicule...

Ensuite, il convient de dépouiller le joueur de son équipement et de ses armes, afin de le vêtir d'une tenue plus en rapport avec son statut de prisonnier... Par paresse, j'ai décidé qu'au lieu de la tenue rayée traditionnelle,  il devrait se contenter d'un pagne...

Pour enlever l'équipement, j'ai créé des faux vêtements armures et armes qui ne sont que des fiches avec juste une ID et un type... Il faut dix-huit fiches pour mettre un personnage en pagne...

-Amulet
-Belt
-Left Glove
-Right Glove
-Ring
-Robe
-Shoes
-Boots
-Cuirass
-Greaves
-Helmet
-Left Bracer
-Left Gauntlet
-Left Pauldron
-Right Bracer
-Right Gauntlet
-Right Pauldron
-Shield
-BluntTwoClose

(Je suppose que certains éléments sont en doublon, par exemple les bracelets d'armure devraient logiquement avoir le même emploi que les gantelets, mais je n'ai pas pris le temps de vérifier cela pour toutes les armures, sans oublier qu'il existe de nombreuses armures moddées... J'ai donc préféré ne pas prendre de risques...)

Comme la commande MenuTest rend aussi la console inutilisable, j'ai préféré ajouter deux parchemins, un qui déclenche le port du collier et l'autre qui l'enlève... Ces deux parchemins peuvent être remplacés par tout ce qu'on veut... Fenêtre de résultat de dialogue, activateur, entrée de journal, décompte du temps passé, etc....

Voici le script de départ...

begin test_depart
short done
	 if ( OnActivate == 1 )
		if ( done == 0 )
			   player->additem test_prison_collar 1
			   player->equip test_prison_collar
				   set done to 1
		endif
	  endif

end

Et celui de fin...

begin test_fin
  short done
		 if ( OnActivate == 1 )
			if ( done == 0 )
				 player->removeitem test_prison_collar 1
					EnablePlayerFighting
					EnablePlayerMagic
				 set done to 1
			endif
		 endif
end

Et voila le script qui est appliqué sur le collier...

	  begin "prison collar"

short OnPCEquip
short clothing
				if ( OnPCEquip == 1 )
					  if (MenuMode == 1 )
							 MenuTest
					  endif
				 endif
			   
				if ( clothing == 20 )
					  return
				endif
				if ( clothing == 0 )
				   player->additem test_001 1
				   player->equip test_001
				   player->removeitem test_001 1
				   set clothing to 1
				 endif
				 if ( clothing == 1 )
				   player->additem test_002 1
				   player->equip test_002
				   player->removeitem test_002 1
				   set clothing to 2
				 endif
				  if ( clothing == 2 )
				   player->additem test_003 1
				   player->equip test_003
				   player->removeitem test_003 1
				   set clothing to 3
				 endif
				   if ( clothing == 3 )
				   player->additem test_004 1
				   player->equip test_004
				   player->removeitem test_004 1
				   set clothing to 4
				 endif
				   if ( clothing == 4 )
				   player->additem test_005 1
				   player->equip test_005
				   player->removeitem test_005 1
				   set clothing to 5
				 endif
				   if ( clothing == 5 )
				   player->additem test_006 1
				   player->equip test_006
				   player->removeitem test_006 1
				   set clothing to 6
				 endif
				   if ( clothing == 6 )
				   player->additem test_007 1
				   player->equip test_007
				   player->removeitem test_007 1
				   set clothing to 7
				 endif
				   if ( clothing == 7 )
				   player->additem test_008 1
				   player->equip test_008
				   player->removeitem test_008 1
				   set clothing to 8
				 endif
				   if ( clothing == 8 )
				   player->additem test_009 1
				   player->equip test_009
				   player->removeitem test_009 1
				   set clothing to 9
				 endif
				   if ( clothing == 9 )
				   player->additem test_010 1
				   player->equip test_010
				   player->removeitem test_010 1
				   set clothing to 10
				 endif

				   if ( clothing == 10 )
				   player->additem test_011 1
				   player->equip test_011
				   player->removeitem test_011 1
				   set clothing to 11
				 endif
				   if ( clothing == 11 )
				   player->additem test_012 1
				   player->equip test_012
				   player->removeitem test_012 1
				   set clothing to 12
				 endif
				   if ( clothing == 12 )
				   player->additem test_013 1
				   player->equip test_013
				   player->removeitem test_013 1
				   set clothing to 13
				 endif
				   if ( clothing == 13 )
				   player->additem test_014 1
				   player->equip test_014
				   player->removeitem test_014 1
				   set clothing to 14
				 endif
				   if ( clothing == 14 )
				   player->additem test_015 1
				   player->equip test_015
				   player->removeitem test_015 1
				   set clothing to 15
				 endif
				   if ( clothing == 15 )
				   player->additem test_016 1
				   player->equip test_016
				   player->removeitem test_016 1
				   set clothing to 16
				 endif
				   if ( clothing == 16 )
				   player->additem test_017 1
				   player->equip test_017
				   player->removeitem test_017 1
				   set clothing to 17
				 endif
				   if ( clothing == 17 )
				   player->additem test_018 1
				   player->equip test_018
				   player->removeitem test_018 1
				   set clothing to 18
				 endif

				   if ( clothing == 18 )
				   player->additem test_rag 1
				   player->equip test_rag
				   set clothing to 19
				 endif

				   if ( clothing == 19 )
				   DisablePlayerFighting
				   DisablePlayerMagic
				   set clothing to 20
				  endif
	 end


Il y a deux points faibles dans ce système... Le premier est que le joueur a toujours accès à ses raccourcis...Il paut donc équiper une arme ou un sort, mais li ne peut pas s'en servir parce que son combat et sa magie sont désactivés...
Le deuxième point faible est que si le joueur est suivi par un compagnon, il peut ouvrir son inventaire par la fenêtre de partage dudit compagnon... Il semble que cette fenêtre n'est pas un inventaire à ce moment-là, mais plutôt une forme de fenêtre de dialogue... Mais là aussi, le combat et la magie restent désactivés... Evidemment, le joueur peut enlever le collier en profitant de cette faille, mais s'il veut vraiment tricher à ce point-là, il peut aussi se déclarer en GodMode à la sortie du bureau des taxes...

Voilà... Je ne sais pas si tout çà peut être utile à quelqu'un, Mais si cela peut être le cas, j'en serai très heureuse...


Bisous...
Tout n'est qu'illusion... Surtout le fait de le penser.....
Image IPB
(Wiwi d'or de la plus serviable et de la plus cool... Merci à vous tous...)

#2 Svartalfar

Svartalfar

Posté 12 February 2017 - 22:00

:yahoo: Coucou Kira, bon retour parmi nous !
Contents de te voir et merci pour ce script, je suis sûr qu'il trouvera preneur ! ^^
Fantôme de la tour hantée. (de pc la tour)

"Je suis un loriste, le monstre dont on menace les petits moddeurs pas sages au moment du coucher."

#3 Troglodyte

Troglodyte

Posté 13 February 2017 - 13:59

Bonjour Kira et très heureux de voir que tu es toujours en vie ! Pour ma part je n'ai plus d'ordi pour faire tourner Morro donc tous les projets sont en berne. Mais j'y reviendrai, tôt ou tard. C'est d'ailleurs tout-à-fait le genre de script dont je pourrai me servir ! Mon dernier mod, où le joueur devait être forcé de se mettre à poils pour avancer, en aurait eu l'utilité.

Modifié par Troglodyte, 13 February 2017 - 14:00.

Jouez à Castel Uvirith.
Lisez les nouvelles Saturniennes.




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

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