Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[WIP] ItemDispatcher

Avatar du membre
DrAzTiK
Ours des cavernes
Messages : 1190
Enregistré le : ven. 19 sept. 2003, 03:20
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par DrAzTiK »

Question bête mais du coup, qu'est ce que ce mod aurait de mieux et de différent comparé à item randomizer ? ( qui n'est pas fiable à 100 je pense car pas mis à jour mais relativement ok)

Faut pas oublier aussi certains objets de quête : par exemple l'épée de sarevok mais on peut aussi penser à Lilarcorn. Compte tu les randomizer ? Item randomizer le fait pour certaines (pas toutes) mais je crois que ça necessite parfois de changer le dialogue de certains npc.
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : Hors ligne
.

Message par Selphira »

Tout d'abord, ItemDispatcher (ID) ne fera rien tout seul (du moins dans un premier temps), son but premier est de permettre aux autres moddeurs de pouvoir distribuer leurs objets un peu partout dans le jeu, que ce soit à des emplacements vanilla, ou des emplacements ajoutés par d'autres mods. La notion d'aléatoire est arrivée un peu plus tard (mais rapidement), car elle sonnait comme une évidence.

Contrairement à ItemRandomiser (IR), ID n'est pas fermé, n'importe quel auteur pourra venir greffer ses ajouts s'il le désire. Que ce soit ajouter des objets à distribuer, de nouveaux emplacements, de nouvelles liste ou compléter celles existantes.
Aussi, grâce aux règles de distribution, les moddeurs pourront définir de manière assez fine où seront distribués leurs objets.

ID ne fera rien tout seul, du moins dans un premier temps, il sera tout à fait possible de créer des composants qui ajouteraient des listes de distribution pour supporter l'un ou l'autre mod, ou même devenir une alternative à ItemRandomizer (IR), mais ce serait dans un second temps.

Pour la problématique des objets de quête, j'ai prévu un groupe contenant une liste d'objets à ignorer que le mod ne devra absolument pas déplacer/ajouter/supprimer, justement pour le cas de ces objets de quêtes. Un autre groupe contenant une liste d'objets uniques, afin que le mod n'en rajoute pas plusieurs exemplaires si plusieurs règles de distribution le concerne.

Encore une fois, ces listes pourront être complétées par chacun des mods qui auraient aussi de tels objets, et ce, sans devoir nécessiter mon intervention, ils n'auront qu'à ajouter quelques fichiers dans l'arborescence de leur propre mod.

Je suis bien consciente qu'ID ne sera pas adopté par beaucoup de moddeurs (je le fais avant tout pour moi, par défi et par plaisir), mais ses perspectives d'évolution me semblent vraiment intéressantes. Et j'ajouterai moi-même quelques listes pour des mods que j'apprécie.
Modifié en dernier par Selphira le dim. 10 nov. 2024, 12:02, modifié 1 fois.
Avatar du membre
loupgris
Wiverne
Messages : 2092
Enregistré le : jeu. 31 oct. 2019, 19:39
Statut : Hors ligne
.

Message par loupgris »

qu'est ce que ce mod aurait de mieux et de différent comparé à item randomizer ?
@DrAzTiK Si c'est toujours d'actualité (Selphira me corrigera sinon) son intérêt serait aussi d'être installé vers la fin de l'installation, donc après SCS.
Techniquement, Selphira maîtriserait le random en gardant quand même en "tête" les capacités martiales que la créature a de base.
Si c'est le cas, fini les nouvelles installations à chaque "run".
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : Hors ligne
.

Message par Selphira »

loupgris a écrit : dim. 10 nov. 2024, 09:25
qu'est ce que ce mod aurait de mieux et de différent comparé à item randomizer ?
@DrAzTiK Si c'est toujours d'actualité (Selphira me corrigera sinon) son intérêt serait aussi d'être installé vers la fin de l'installation, donc après SCS.
Techniquement, Selphira maîtriserait le random en gardant quand même en "tête" les capacités martiales que la créature a de base.
Si c'est le cas, fini les nouvelles installations à chaque "run".
Oui, si la cible est une créature et que l'objet doit être équipé et que c'est une arme ou un bouclier, il va prendre en compte les compétences martiales de la créature pour s'assurer qu'elle peut les utiliser à leur plein potentiel.
Je pense ajouter une option globale au mod pour indiquer le nombre d'étoiles minimales qu'une créature doit avoir afin que l'objet soit équipé, à l'appréciation du joueur donc. Elle serait de 1 par défaut, mais si le joueur veut que les créatures utilisent vraiment à leur plein potentiel, il pourrait renseigner un chiffre plus élevé qui irait jusque 5. Mais de fait, plus le chiffre sera élevé, moins de chance il y aura que la créature reçoive une arme en tant qu'équipement si on est sur une distribution aléatoire. Par contre, en distribution directe, ce sera très utile pour éviter les problèmes.

Attention, si une créature n'a aucune compétence martiale, l'objet sera équipé, SAUF, si la créature fait partie de la liste des créatures qui ne peuvent pas avoir d'arme équipée.

Aussi, j'ai déjà ajouté une protection pour ne pas remplacer les éventuelles objets spéciaux des créatures. Si l'objet qu'elle porte est non droppable, ou qu'elle n'a pas de description, il sera impossible de le remplacer. Ceci car généralement ce genre d'objet est destiné à donner des capacités spéciales à la créature. Cette liste automatique fonctionnera de concert avec la liste des objets à ignorer.
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : Hors ligne
.

Message par Selphira »

Quelques avancées aujourd'hui sur la sélection aléatoire. Désormais l'objet à distribuer peut être sélectionné de la même manière que la cible, en utilisant les combinaisons.
D'autres améliorations diverses qui étendent les possibilités de filtre et qui préparent l'arrivée de la distribution à proprement parlé.

Avec cette nouvelle sélection d'objet, une nouvelle idée est apparue.

Lorsque l'on sélectionne l'objet aléatoirement ET qu'on indique une quantité plus grande que 1, ID va non pas ajouter xx fois le même objet aux cibles, mais va sélectionner xx objets différents qu'il distribuera aléatoirement aux cibles sélectionnées. Si les cibles sont moins nombreuses que les objets, tant pis pour les objets non distribué.

Prenons cet exemple :

Code : Tout sélectionner

4 leather.arm&1.ilv 10 gnome.rce&male.gnd
Pour ID, cela veut dire : Sélectionne 4 armures de cuir différentes ayant un enchantement +1 et distribue les aléatoirement sur 10 gnomes mâles qui peuvent porter des armures de cuir (condition ajoutée automatique par le mod lorsqu'on veut équiper un objet).
Le script va s'assurer que chacune des 4 armures soit distribuée au moins une fois. Ici on aura 4 armures distribuées 2 fois, et 2 autres seulement 1 fois.

Personnellement j'adore ce genre de chose, mais est-ce que je ne commence pas à aller un peu trop loin ? Cela vous parait-il toujours simple à comprendre et à utiliser ?
rivvers
Ours brun
Messages : 322
Enregistré le : sam. 21 janv. 2012, 14:36
Statut : Hors ligne
.

Message par rivvers »

L'implicite est un frein je pense. Avoir une logique de distribution différente en fonction du nombre est risqué.
Un moddeur qui fait évoluer son mod et bouge la quantité d'un objet de 1 à 2, s'attendra à avoir 2 objets au lieu de 1 et c'est tout.
Je conseillerais plutôt d'avoir une colonne quantité qui gère la quantité et de gérer la méthode de distribution dans une autre colonne, si aucune colonne ne correspond, mieux vaut rajouter une colonne.

Ajouter des choix, des filtres, de la flexibilité c'est toujours bien et permet d'avoir plus de fonctionnalités et d'augmenter le champ du possible.
Remplacer un fonctionnement par un autre, je dirais que le mieux est l'ennemi du bien.

Bravo pour tes avancées en tout cas
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : Hors ligne
.

Message par Selphira »

Oui tu as raison, il est préférable d'avoir une autre colonne que d'adapter le comportement selon la valeur renseignée.
Merci !

J'ai pu faire la correspondance entre les types d'objet et les emplacements, finalement c'était assez simple.

Je recherche désormais comment déterminer qu'une créature peut ou non équiper tel type d'objet.
De base, je vais faire en sort que certains types de créatures ne puissent équiper certains types d'objet dès qu'une composante aléatoire entrera en jeu (Ex: les animaux, les dragons, etc), je ne veux par exemple pas empêcher un moddeur d'équiper une armure à un chien s'il le désire et qu'il l'indique explicitement.

Pour les armes, c'est facile, on regarde clasweap.2da et on couple avec weapprof.2da et on vérifie la présence d'opcode 233 sur la créature pour affiner si on veut donner l'objet qu'à des créatures compétentes.

Pour les armures, on peut limiter le port d'armure à certaines classes, mais je ne sais pas comment cela se traduit en jeu.

Pour les autres types d'objets je ne sais pas non plus comment faire. Quelqu'un pourrait m'indiquer comment faire ou aurait un lien vers un tutoriel ?
rivvers
Ours brun
Messages : 322
Enregistré le : sam. 21 janv. 2012, 14:36
Statut : Hors ligne
.

Message par rivvers »

Je ne comprends pas bien la demande.

Techniquement, on peut s'équiper d'une arme même si on n'a pas le droit de s'y spécialiser. Rien n'empêche un moddeur de spécialiser une créature voleur à la lance et de créer une lance utilisable par les voleurs. Tout ça, en contradiction avec le CLASWEAP et le WEAPPROF.
Il y a au mieux des "normes" et des "conventions". Les restrictions se font item par item en fonction de chaque personnage.

Peux-tu donner des exemples de ce que tu cherches à faire ?
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : Hors ligne
.

Message par Selphira »

Merci @rivvers , je réponds un peu tard mais j'ai finalement simplifié le problème.

Lorsqu'une créature est sélectionnée aléatoirement pour un objet qui doit être équipé, je filtre pour ne garder que les créatures humanoïdes dont l'emplacement de l'objet n'est pas déjà équipé par un objet non lootable. Et dans le cas d'une arme et d'un bouclier, je vérifie en plus que la créature possède la compétence martiale appropriée pour la manier correctement (1 étoile ou plus)

Ca avance toujours bien, j'ai rajouté toute une série de meta-groupes non prévus à la base qui vont permettre d'encore affiner les sélections, gestion des créatures d'une zone précise et les magasins sont désormais pris en charge pour la sélection des cibles. Il y a bien évidemment d'autres changements, mais ce sont les plus notables.

Je vais entamer le filtrage des magasins d'une zone précise, et ensuite je vais m'attaquer à la distribution des objets à proprement parler.
Les cas simples seront très faciles à faire, ADD_CRE_ITEM ou REPLACE_CRE_ITEM pour les créatures , ADD_STORE_ITEM ou ADD_STORE_ITEM_EX pour les magasins et ADD_AREA_ITEM pour les conteneurs.

J'ai pu réfléchir aux cas complexes, c'est à dire ceux où il faut prendre en compte la zone, le chapitre et la difficulté et je sais comment je vais m'y prendre.
Le plus complexe sera pour les magasins, car je vais devoir créer 2 algorithmes, un premier pour générer les différentes versions du magasin, un second pour modifier et ajouter des choix de dialogues conditionnés qui ouvriront la version appropriée du magasin, c'est ce second algorithme qui va me poser le plus de difficulté, car je vais devoir modifier les fichier .dlg directement en binaire, car l'analyse syntaxique est trop compliquée avec Weidu.
Pour les créatures, ça se fera via un script sur la créature tout simplement.
JohnBob
d'Oghmatique
Ogre mage
Messages : 1378
Enregistré le : mar. 28 sept. 2021, 19:52
Localisation : France
Statut : En ligne
.

Message par JohnBob »

Selphira a écrit : jeu. 28 nov. 2024, 07:14 Le plus complexe sera pour les magasins, car je vais devoir créer 2 algorithmes, un premier pour générer les différentes versions du magasin, un second pour modifier et ajouter des choix de dialogues conditionnés qui ouvriront la version appropriée du magasin, c'est ce second algorithme qui va me poser le plus de difficulté, car je vais devoir modifier les fichier .dlg directement en binaire, car l'analyse syntaxique est trop compliquée avec Weidu.

Coucou, question bête : Si tu utilises plusieurs versions du même magasin, comment faire en sorte qu'ils soient cohérent entre eux si le joueur a déjà acheté certaines denrées dans l'une des versions.

Ou bien comptes-tu utiliser AddStoreItem("STO","ITEM",1,1) via des baf et garder le même fichier STO ?
Modifié en dernier par JohnBob le jeu. 28 nov. 2024, 14:26, modifié 1 fois.
Avatar du membre
loupgris
Wiverne
Messages : 2092
Enregistré le : jeu. 31 oct. 2019, 19:39
Statut : Hors ligne
.

Message par loupgris »

Par pitié essaye de ne pas trop toucher aux sorts en vente (ça pourrait être problématique).
Selphira
Adepte de Grondemarteau
Blême
Messages : 952
Enregistré le : dim. 25 juil. 2004, 21:28
Contact :
Statut : Hors ligne
.

Message par Selphira »

JohnBob a écrit : jeu. 28 nov. 2024, 14:25 Coucou, question bête : Si tu utilises plusieurs versions du même magasin, comment faire en sorte qu'ils soient cohérent entre eux si le joueur a déjà acheté certaines denrées dans l'une des versions.

Ou bien comptes-tu utiliser AddStoreItem("STO","ITEM",1,1) via des baf et garder le même fichier STO ?
Pas de question bête, et pas d'informations inutiles. Si je comprends bien ce que tu dis, le stock dépend du fichier .sto, et si je les multiplie, cela crée autant de stocks différents chez le PNJ. Je n'avais pas cette information en tête, et cela change la donne. Alors là oui, les ajouts complexes se feront grâce à un script qui utilisera AddStoreItem(), merci à toi :)
loupgris a écrit : jeu. 28 nov. 2024, 15:54 Par pitié essaye de ne pas trop toucher aux sorts en vente (ça pourrait être problématique).
Le mod ne va pas s'en prendre aux sorts vendus, tout va dépendre des listes créées par les moddeurs.
JohnBob
d'Oghmatique
Ogre mage
Messages : 1378
Enregistré le : mar. 28 sept. 2021, 19:52
Localisation : France
Statut : En ligne
.

Message par JohnBob »

Selphira a écrit : ven. 29 nov. 2024, 11:24 Si je comprends bien ce que tu dis, le stock dépend du fichier .sto, et si je les multiplie, cela crée autant de stocks différents chez le PNJ. Je n'avais pas cette information en tête, et cela change la donne.

Oui, chaque STO devrait avoir son propre stock indépendant des autres, donc si on a acheté plusieurs objets dans le magasin avant d’accéder à ta copie , ces objets seront de nouveaux présents dans ta copie.

Une autre solution pourrait être de créer un stock parallèle avec uniquement les objets ajoutés et une nouvelle option de dialogue comme pour le magasin de Ribald. Du coup le joueur aurait toujours accès au magasin original sans changement mais pourrait aussi accéder à l'autre magasin avec les nouveaux objets. Cela resterait assez proche de ton idée initial mais nécessite d'ajouter au moins une ligne de dialogue ("Puis-je voir vos nouvelles marchandises" ou quelque chose de plus sophistiqué) pour tous les marchands.

AddStoreItem me parait plus simple à mettre en place.
Répondre

Retourner vers « Modules (créés ou en cours de développement) »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité