Page 1 sur 1

Comment ajouter un objet à un magasin et/ou à un conteneur ?

Posté : sam. 12 sept. 2009, 15:40
par bob
Bonjours à tous,

J'aimerais savoir comment faut-il faire pour mettre un objet "entre-autre" dans le jeux et que l'on puisse l'utilisé directement sans refaire une partie entière.

Ps: je crée Les objets, avec DLTCEP.

Merci de vos réponses.

Re : Mettre un objet directement dans le jeux

Posté : sam. 12 sept. 2009, 18:18
par Akadis
Rassures-toi rajouter un objet ne demande jamais de recommencer une partie.
Mais ta question est très vaste dit nous dans quoi, tu veux rajouter ton objet : dans un conteneur, sur un personnage non recrutable, etc.
En ce qui concerne rajouter une créature et/ou un magasin, c'est une autre histoire.

Re : Mettre un objet directement dans le jeux

Posté : sam. 12 sept. 2009, 19:17
par bob
Donc en gros, j'aimerais modifier un magasin, je suis allé voir avec DLTCEP et j'ai rajouter un item dans un magasin, imaginons "une fronde +1", mais le problème c'est que lorsque je lance une save l'objet n'apparait pas dans le magasin


Mon bute est bien sure de rajouter des objets de ma création dans un magasin qui existe déjà.



PS: comment fait ton pour avoir des lueurs sur les armes, comme les armes puissantes de BG2 ou une couleur dorée qui brille un peu a l'armure de plat +3 dans BG1


Re : Mettre un objet directement dans le jeux

Posté : sam. 12 sept. 2009, 19:30
par Isaya
Une sauvegarde conserve les traces de ton passage dans une zone ou dans un magasin ou encore des dialogues avec les personnages. Tu as modifié un magasin mais si tu l'avais déjà visité dans ta sauvegarde, le jeu va reprendre la version du magasin qu'il a déjà dans la sauvegarde.
Pour constater tes modifications, il faut que tu repartes d'une sauvegarde qui précède ta première visite du magasin, voire de la zone dans laquelle il est.

L'autre solution, pour tester tes objets, est de les ajouter à l'inventaire avec la console CLUA, en utilisant la commande CreateItem. Si tu ne connais pas, consulte les sujets épinglés du forum consacré à Baldur's Gate II pour trouver des informations sur la façon de procéder. Ou suis ces instructions (en anglais).

En ce qui concerne l'effet des armes, il se peut que ce soit parce qu'elles ont un flags d'enchantement. Mais le plus simple est que tu charges une arme qui a l'effet dans l'éditeur et que tu regardes les effets ou les flags de l'objet. Tu trouveras une liste des objets du jeu et leur code dans les sujets épinglés du forum de Baldur's Gate II.
Essaie d'appliquer, un par un, ces effets ou flags à ton objet jusqu'à trouver celui qui apporte ce que tu recherches.

Note que, contrairement aux magasins, les modifications que tu apportes à l'objet ont un effet immédiat quand tu reprends une sauvegarde. Donc il te suffit de le mettre dans ton inventaire et de sauvegarder pour facilement tester les modifications apportées à l'objet.

Re : Mettre un objet directement dans le jeux

Posté : sam. 12 sept. 2009, 21:03
par bob
Donc si j'ai bien comprit il faut obligatoirement que je crée un marchand pour qu'il puisse vendre mes objets dans une partie ou tout les marchands dans le jeux ont déjà était "utilisé".

Merci pour tout donc.

Re : Mettre un objet directement dans le jeux

Posté : sam. 12 sept. 2009, 22:44
par Isaya
Qu'est ce que tu entends par "utilisés" ? Il est certain que si ta sauvegarde est une partie dans laquelle tu as déjà visité tous les marchands et si tu ne veux pas reprendre une sauvegarde plus ancienne, alors il n'y a pas le choix. Mais c'est reculé pour mieux sauter. Il te faudra créer un dialogue, un personnage pour tenir le magasin et il te faudra bien ajouter ce personnage quelque part. Et tu ne pourras pas éditer une zone pour ajouter ton personnage, sous peine d'avoir le même problème (la zone est la sauvegarde et ton ajout tardif n'est pas pris en compte). La seule solution sera de créer un script pour ajouter le personnage dans un lieu donné.

J'avoue ne pas comprendre ce que tu cherches à faire et quelles sont les contraintes. Peux-tu le préciser, s'il te plaît ?

Re : Mettre un objet directement dans le jeux

Posté : dim. 13 sept. 2009, 09:40
par bob
En gros par exemple j'ai rajouté des mods avec des marchands. Ils ont des objets à vendre et j'aimerais rajouter des objets de ma création dans ces objets à vendre.

Vous me dites que "la zone est la sauvegarde et ton ajout tardif n'est pas pris en compte"
Mais quand j'installe des mods ou j'ai déjà visiter la zone, le marchand apparait quand même.
Ex: "AbyStore"

Mon objectif et juste de pouvoir rajouter des objets dans un marchand quelconque en cours de jeu.
Pour le moment comme vous l'avez dit les objets rajouter n'apparaissent pas dans le magasin des marchands.

Re : Mettre un objet directement dans le jeux

Posté : dim. 13 sept. 2009, 09:53
par Armand
Et bien en pratique le plus simple serait d'éditer le fichier store (du marchand) via dltcep et de reinstaller puis relancer une nouvelle partie ou le script de zone n'ai pas été appliqué comme il a déja été dit.

Après si tu ne veux vraiment pas recharger le plus simple serai de créer un script. Il existe une commande dans la doc de weidu qui permet d'ajouter des objets dans des cre. La commande s'appelle add_cre_item mais permet seulement d'ajouter des fichiers à l'inventaire du personnage et non du marchand. J'ignore s'il existe une commande de ce coté la mais peut être qu'en te plongeant dans le read me de weidu pourrait tu trouver la commande adéquat. Ne m'étant jamais penché sur le problème j'ignore si c'est possible.

Dans tous les cas pour ce genre de manip tu sera obligé de passer par weidu. As tu des connaissances en matière de script ?

EDIT : J'ai trouvé ! La commande s'appelle add_store_item dans la partie 9.5 ici : http://weidu.org/WeiDU/README-WeiDU.html#@default279 Ca fait partie des manœuvres relevant du TP2. Je pourrais toujours t'aider dans la marche à suivre mais pour cela j'aurais besoin que tu m'en dises plus sur tes connaissances dans le domaine.

Re : Mettre un objet directement dans le jeux

Posté : dim. 13 sept. 2009, 11:49
par bob
je suis novice, donc mon niveau est faible... Si vous pouvez me donné un explication des démarches à suivre cela pourra me servir et à mon avis à d'autre personnes aussi.

Voila merci de vos réponse.

Ps: je n'ai pas internet pendant la semaine (normalement) donc la communication risque d'être longue...Dsl

Re : Mettre un objet directement dans le jeux

Posté : mar. 15 sept. 2009, 09:40
par Armand
Alors première chose à faire c'est localiser le fichier store qui t'intéresse c'est à dire le fichier marchand. Prenons l'exemple du read me weidu pour y voir plus clair :


COPY_EXISTING ~ribald.sto~ ~override/ribald.sto~


C'est cette ligne qui va te permettre de permettre de patcher le fichier.La commande "COPY_EXISTING" en gros va chercher ton fichier pour modification. Le fichier store se trouve donc comme tu peux le voir entre les premiers "~~", les deuxiémes "~~" faisant référence à l'emplacement du fichier. Maintenant mettons que je veuille rajouter un objet dans le stock de ribald :

ADD_STORE_ITEM "myitem" #10 #0 #0 ~IDENTIFIED~ #5

Donc ici l'action "ADD_STORE..." va ajouter le fichier item qui t'intéresse, fichier dont tu donne la référence entre les guillemets. Aprés l'expression entre les "~~" va permettre de donner un caractéristiques à l'objet :

IDENTIFIED (Identifié)
UNSTEALABLE (Involable)
STOLEN (Volé(e))
IDENTIFIED&STOLEN (Identifié et volé(e))
IDENTIFIED&UNSTEALABLE (Identifié et involable)
)


Pour terminer prenons un exemple concret :

ADD_STORE_ITEM ~MISC01.itm~ #10 #0 #0 ~STOLEN~ #5

Ici j'ajoute à l'inventaire du marchand un objet (une peau de loup en l'occurence). Je donne une précision avec l'argument "STOLEN" qui me permet d'indiquer que l'objet
a été volé.

Le probléme que tu auras et qui ne se présente pas avec la peau de loup est que ton objet n'est pas encore présent dans l'override. Le plus simple dans un premier temps pour toi sera de faire un copier coller de l'objet dans le dossier contenant les autres objets du mod marchand.
Puis d'appliquer tout ça en indiquant les commandes que je t'ai indiqué dans le fichier TP2 du mod.Comme ceci :

COPY_EXISTING ~nomdufichiermarchand.sto~ ~override/nomdufichiermarchand.sto~
ADD_STORE_ITEM ~tonitem.itm~ #10 #0 #0 ~IDENTIFIED~ #5

COPY ~fichierracinedumod/repertoireobjetdumod/tonitem.itm~ ~override/tonitem.itm~


Je résume une dernière fois :

1er ligne : tu va chercher le fichier marchand qui t'intéresse
2eme ligne : tu implante ton item dans l'inventaire du marchand et lui donne un caractéristique (volé,identifié,etc...)
3eme ligne : tu copie ton item dans l'override pour pouvoir l'utiliser


Une fois ces lignes inscrites dans le tp2 tu n'a plus qu'à enregistrer le fichier et à reinstaller le mod et ça devrai marcher. Je ne suis pas sur à 100 % de mes indications au vu que je n'ai jamais utilisé cette commande mais je ne pense pas que ça posera de probléme.

Après tout dépendra de ce que tu envisages de faire dans le futur. Si tu envisage un mod marchand, un mod quête, ou je ne sais quoi d'autre... Les tutorials ne manquent pas sur le sujet mais comme je l'ai dit tout dépendra de tes objectifs.

Re : Mettre un objet directement dans le jeu

Posté : mar. 15 sept. 2009, 21:23
par Isaya
En complément de ce qu'a écrit Armand, voici quelques indications pour faciliter l'écriture du fichier TP2 dans lequel tu devras écrire ces lignes. Ce fichier TP2 est en quelque sorte le script d'installation du mod qui indique ce que l'installateur doit faire pour ajouter tes créations dans le jeu.

Tu trouveras dans ce tutoriel de création d'objet un exemple simple de fichier TP2 permettant d'ajouter un objet dans le jeu.

Comme tu as déjà créé plusieurs objets plus ou moins compliqués, et que tu leur as déjà probablement attribué des descriptions, il existe une méthode assez simple pour demander au programme WeiDU (c'est le programme d'installation) de te générer les lignes qu'il faut ajouter dans le fichier TP2 pour installer ton mod.

Copie tous les fichiers que tu as créés depuis le répertoire Override (c'est là que DLTCEP les créé en général et que le jeu les cherche) vers un répertoire créé spécialement pour l'occasion dans le répertoire du jeu (donc au même niveau que le répertoire Override). Je l'appellerai MesFichiers. Tu peux y mettre les fichiers ITM, STO (ceux que tu as créés toi-même), SPL, EFF, notamment. Mais les fichiers BCS et DLG ne pourront pas être traités ainsi.

Télécharge le programme WeiDU (lien donné dans le tutoriel). Extraie de l'archive le fichier weidu.exe et copie-le dans le répertoire du jeu.

Crée un nouveau fichier texte dans le répertoire du jeu et appelle-le ExtraitMesFichiers.bat. Avec le menu contextuel sélectionne Modifier pour l'éditer avec le bloc-notes.
Recopie ce texte dans le fichier puis enregistre-le :
:: Les lignes commençant par :: sont des commentaires
:: Demande à WeiDU de générer l'extrait de fichier tp2
weidu --automate MesFichiers --out MesFichiers.tp2
:: la pause permet de voir les messages affichés, pour comprendre pourquoi ça échoue en cas d'échec
pause
Le fichier MesFichiers.tp2 va ressembler à ça :
COPY ~MesFichiers/Marchand.STO~ ~override/Marchand.STO~
SAY NAME2 ~Titi, vendeur du mois~ ~Titi, vendeur du mois~

COPY ~MesFichiers/blun14.itm~ ~override/blun14.itm~
SAY NAME1 ~Fléau~ ~Fléau~
SAY NAME2 ~Fléau de l'Eternité +3~ ~Fléau de l'Eternité +3~
SAY UNIDENTIFIED_DESC ~Le fléau est une solide poignée en bois attachée à une tringle en fer, une baguette de bois comportant des pointes, ou une balle en fer pointue. La poignée et l'équipement qui l'accompagne sont reliés par une charnière ou une chaîne. Cette arme servait à l'origine à battre le grain.

PARAMETRES :

Dégâts : 1D6 +1
Type de dégâts : écrasant
Poids : 15
Facteur de vitesse : 7
Type de compétence : Fléau/Etoile du matin
Type : arme à 1 main
Force nécessaire : 13
Non utilisable par :
Druide
Mage
Voleur~
SAY DESC ~Ce fléau, souvenir de la jeunesse aventureuse du Seigneur Arnise, est depuis en sa possession. Il a été démonté, chaque pièce rangée dans un lieu différent, pour n'être utilisé qu'en cas d'extrême urgence. Le Seigneur Arnise semblait inquiet de l'aura magique qui émanait de l'arme une fois assemblée, et il avait raison. Cette arme a laissé dans l'histoire une trace sanglante, qui remonte à ses premiers possesseurs. Ce fléau a été créé par les belliqueux Rakshasas, un peuple d'esprits vengeurs friands de chair humaine, qui s'en servait comme d'une arme capable de s'adapter à tous les combats. Le fléau fut perdu au cours d'une chasse particulièrement violente, puis récupéré quand ils utilisèrent leur affinité avec la magie pour localiser son aura. Ils découvrirent alors que l'arme était tombée entre les mains d'un grand guerrier humain, et la bataille qui s'ensuivit fut vraiment splendide. Ils ont depuis utilisé cet objet comme appât, le 'perdant' encore et encore. Les objets de pouvoir attirent des gens puissants, et c'est à eux qu'on doit les plus grandes batailles.

PARAMETRES :

Capacités de combat : Une chance à chaque coup que la cible soit ralentie (pas de jet de sauvegarde)
TAC0 : +3
Dégâts : 1D6 +4, +1 dégâts de l'acide, +1 dégâts du froid, +1 dégâts du feu
Type de dégât : contondant
Poids : 10
Facteur de vitesse : 4
Type de compétence : Fléau/Etoile du matin
Type : arme à 1 main
Force nécessaire : 13
Inutilisable par :
Druide
Mage
Voleur~
SAY 0x22e ~Lent~ ~Lent~
Remarque : pour l'exemple j'ai fait une manipulation avec des fichiers original du jeu et bricolé un peu les noms de fichier. Mais attention à bien respecter la limite à 8 caractères pour les noms de fichiers sans l'extension !!! Marchand.STO ne convient pas, trop long d'une lettre, c'est juste pour l'exemple.

Le gros avantage de cette méthode est qu'elle sait parfaitement identifier quand il y a des textes qu'il faudrait préciser, y compris au fin fond d'un effet DisplayString du genre "Etourdi" que peut provoquer un objet et elle sait également identifier l'offset auquel l'écrire. Dans le cas du fléau d'Arnise ci-dessus, le mot "Lent" apparaît sur la cible lorsque le fléau provoque l'effet de ralentir la victime. La méthode utilisant --automate assure de ne pas oublier ce genre de texte et éviter d'avoir à trouver à quel offset il faudrait écrire.

Le fichier TP2 généré n'est qu'un extrait qu'il faut ensuite insérer dans le véritable fichier TP2 du mod. Il faudra remplacer le répertoire "MesFichiers" dans l'instruction de copie pour indiquer celui qui servira pour le mod, dans le cas du tutoriel, "itemtut". Et il faudra bien entendu placer les fichiers dans ce même répertoire.

Re : Mettre un objet directement dans le jeu

Posté : ven. 18 sept. 2009, 19:53
par bob
Merci pour vos réponse je vais tester ca ce week end si j'ai le temps...


Vraiment merci beaucoup de votre aide.

Posté : jeu. 03 juil. 2014, 14:17
par Kev
Bonjour,

Désolé, je nécromancie ce topic car je n'arrive pas à comprendre comment sont gérés les objets dans les containers? Si je veux ajouter un objet dans un container déja existant, est ce qu'il y'a une commande weidu pour ça?

Posté : jeu. 03 juil. 2014, 16:11
par Freddy_Gwendo
Ouaip :

Code : Tout sélectionner

[color="#FFFF00"]ADD_AREA_ITEM[/color] : adds an item to a container of an area. This is a PATCH macro and function. 

    SPRINT item_to_add to the item you want to add 
    SET container_to_add_to to the number of the container the item should be added to. The count starts at 1.
    SPRINT flags to flags the item should have (usual weidu syntax: STOLEN, IDENTIFIEDSTOLEN, etc). Default - no flags.
    SET charges1 to amount in stock/number of charges of first magical ability (default 0) 
    SET charges2 to number of charges of second magical ability (default 0) 
    SET charges3 to number of charges of third magical ability (default 0) 


Par exemple, tu veux rajouter 2 MonItem dans le 2° container de la carte AR9999 :

Code : Tout sélectionner

COPY_EXISTING ~ar9999.are~ ~override~ 
    SPRINT ~item_to_add~  ~MonItem~
    SET container_to_add_to = 2
    SET charges1 = 2
    SET charges2 = 0
    SET charges3 = 0
    LAUNCH_PATCH_MACRO ADD_AREA_ITEM

Tu as aussi la fonction suivante :

Code : Tout sélectionner

[color="#FFFF00"]LPF fj_are_structure[/color]

    STR_VAR fj_name to the item’s resource reference (filename); 
    INT_VAR fj_con_itm_idx to the index of the container to which the item is added; 
    INT_VAR fj_itm_expiry to the item expiration time; 
    INT_VAR fj_charge0 to the charges of the 1st ability (item quantity for stackables); 
    INT_VAR fj_charge1 to the charges of the 2nd ability; 
    INT_VAR fj_charge1 to the charges of the 3rd ability; 
    INT_VAR fj_flags to the bitwise item flags (bit0=identified, bit1=unstealable, bit2=stolen, bit3=undroppable); 

qui donne :

Code : Tout sélectionner

COPY_EXISTING ~AR1999.are~ ~override~
    LPF fj_are_structure INT_VAR fj_con_itm_idx = 2  fj_charge0 = 2  STR_VAR fj_name = ~MonItem~ fj_structure_type = itm END

Si l'objet n'a pas de charge, inutile de renseigner les champs charge1 et 2 qui sont initialisés à 0 par défaut.

Posté : jeu. 03 juil. 2014, 18:13
par Kev
Merci bien, je préfère la première commande qui est plus simple à comprendre. Est ce que les exemples que tu m'as donné font partie d'un tutorial sur les macro commande en général?
Il me semblait avoir vu un tutorial sur un bon nombre de macro utiles il y'a quelque semaines, mais impossible de remettre la main dessus. (ou alors j'ai rêvé, quand je dors, je rêve à propos de scripts et de commandes weidu maintenant)

Posté : jeu. 03 juil. 2014, 19:43
par Freddy_Gwendo
Pas à ma connaissance. :(

D'ailleurs je ne crois pas qu'il existe un tuto sur WeiDU en général. En revanche, tu trouveras de nombreux exemples dans les tp2 (et tph) des mods, et dans les topics d'appel à l'aide des différents forums (même ici sur la Couronne).

Sinon, n'hésite pas à lire le readme de WeiDU - même si, j'en conviens, il est très rébarbatif, surtout pour des non-informaticiens comme moi. Notamment les derniers chapitres concernant les fonctions et les macros. Une fois que tu as découvert la fonction ou la macro qui va bien, lance une recherche sur les tp2 et tph des mods que tu as téléchargés pour voir comment elles ont été utilisées : je ne connais pas de meilleure méthode d'apprentissage, outre le fait de se planter en testant une commande pour la première fois, et fais moi confiance, n'hésite pas, tu ne seras ni le dernier, ni le premier ! ;)

Posté : jeu. 03 juil. 2014, 21:15
par Kev
Oh ne t'inquiète pas, ma barre de favoris est blindée de différents forums consacrée à l'IE à l'heure qu'il est, j'ai la weidu documentation et l'IESDP sous les yeux en permanence, notepad++ est envahi par des fichiers de mods en tout genre en plus des miens, et fais moi confiance je n'hésite pas à tester les choses dont je suis pas sur.

Mais bon, des fois j'ai la flemme de faire des recherches partout quand je trouve pas ce qui m’intéresse, d'ailleurs ça m'arrive souvent de trouver des trucs utiles pour plus tard alors que c'est pas du tout ce que je cherche, et quand j'en ai besoin, il me faut au moins 1 heure pour les retrouver.

Enfin bon, à force d'avancer dans le mod, j'ai de plus en plus de modèles que je sais fonctionnels et que je peux réadapter, ça fait gagner du temps.