Comment puis-je ouvrir mon magasin ?

Créer des magasin basiques est relativement simple…tout ce que vous avez à faire est d’utiliser le « store wizard » et ça vous crée un « objet » magasin basique avec un inventaire, un pourcentage d’augmentation ou du réduction du prix, un nom et un tag. Mais qu’est ce que vous allez faire avec ?

Etape 1: Placez l’ « objet » magasin dans votre module. Un magasin est juste un blueprint non placé auquel on ne peut accéder par le module. Vous devez maintenant le placer quelque part. Vous noterez que quand vous le placez, il ressemble juste à un waypoint…c’est bien. Les joueurs ne le verront pas et ne pourront pas interagir avec…il a juste besoin d’exister, de préférence près de l’objet qui va l’appeler (le marchant par exemple).

Etape 2: Créez l’objet y accèdent. Habituellement, c’est un NPC marchant... mais ce n’est pas obligé.
Tout objet qui peut lancer un script peut ouvrir un magasin. Cependant, avoir un marchant PNC est le moyen le plus facile. Créez simplement votre marchant et allez créer un dialogue pour lui. La méthode la plus simple est de lui faire dire « Bienvenue ! Est ce que vous voulez jeter un œil à mes marchandises ? » Puis d’ajouter deux réponses : « Oui » et « Non »

Etape 3: Ajouter le script qui ouvrira le magasin. Dans le dialogue ci dessus, vous devez entrer ce script dans « Action Taken » pour la réponse « oui » du joueur…donc quand le joueur sélectionnera cette réponse, le magasin est ouvert. Vous n’avez rien besoin d’ajouter dans « No »…cela terminera simplement la conversation.
Le script basique pour ouvrir un magasin à la fin du dialogue est celui ci :


void main()
{
object oStore = GetObjectByTag("STORE_TAG_HERE");
OpenStore(oStore, GetPCSpeaker());
}

...et c’est tout. Naturellement, vous devez remplacer "STORE_TAG_HERE" par le tag de votre magasin..
Si vous regardez la structure de la commande OpenStore, vous verrez que vous pouvez rajouter marque d’une réduction et une augmentation du prix…c’est juste au cas ou vous voulez en faire une utilisation conditionnelle. Prenez le script qui suit par exemple…le vendeur double les prix pour les elfes (il ne les aime pas) :


void main()
{
object oStore = GetObjectByTag("STORE_TAG_HERE");
if (GetRacialType(GetPCSpeaker()) == RACIAL_TYPE_ELF)
{
OpenStore(oStore, GetPCSpeaker(), 100);
}
else OpenStore(oStore, GetPCSpeaker());
}

Un dernier commentaire sur les magasins: Les magasins ne peuvent, pour l’instant, offrir que des objets génériques, c’est un peu limité. Peut être que ça changera dans le futur. Sachez que vous ne pouvez pas ajuster le prix des objets individuellement…un marchant applique les même majorations ou réductions à tous les objets…de même vous ne pouvez pas préciser quels types d’objets le marchant pourra acheter ou non. C’est tout ou rien. Une dernière chose, dans tous les scripts, les commande en rapport avec les objets comme CreateItemOnObject, GetFirstItemInInventory et GetNextItemInInventory doit avoir pour cible le magasin lui même. Souvenez vous : c’est lui qui a l’inventaire, pas le marchant.

__________________
Théranthil, Mage Elfe prêtre de Mystra Membre des GdE
Parti Elmotiste pour un parler jowilien: Ministre supérieur de la corruption

"Les langues vont toujours bon train. Les pieds ont du mal à suivre."
(les bourses aussi NdT )
Mespert de la porte de Baldur