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é...

[SCRIPT] Comment poser un objet au sol et le récupérer par un PNJ ?

Répondre
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne

[SCRIPT] Comment poser un objet au sol et le récupérer par un PNJ ?

.

Message par Cocrane »

Je vais proposer un duel où le gain est l'arme du combattant. Un membre du groupe pourra donc combattre le duelliste.

Dans le cas où le duelliste perd, je sais quel est le nom de l'arme et je peux donc la donner.
Mais dans le cas où c'est le membre du groupe qui perd, j'ignore quelle est le nom de l'arme est utilisé. (je ne vois pas de mot clé utilisable).

Je peux faire poser l'arme perdue au sol et la faire ramasser par le duelliste mais je retrouve le même problème.

Comment ramasser un objet dont on ne connait pas le nom? ^^

* perte de l'objet en main
"effect: drop weapons in panic (264)"

* récupération de l'objet si on a le nom
"257 PickUpItem(S:ResRef*)
This action instructs the active creature remove the item from the area and put it in their inventory (assuming the inventory has enough room and the item exists)."
Kev
Tasloï
Messages : 79
Enregistré le : mer. 19 févr. 2014, 13:57
Statut : Hors ligne
.

Message par Kev »

J'allais écrire que je ne comprenais pas ton souci, jusqu'a ce que je réalise que si c'est un membre du groupe qui se bat, tu ne peux pas prévoir quelle arme le joueur aura choisi de lui donner...

Est ce qu' une action comme PickUpItem ne peut pas fonctionné avec PickUpItem(NearestOf(myself)) ?
Je dis ça à l'aveugle, sans avoir essayé.
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

J'ai comme l'impression qu'on a déjà eu cette discussion quelque part, mais je ne me souviens plus où. A moins que ce ne soit ailleurs, ou avec quelqu'un d'autre...

Peu importe. ;)

Je crains que le moteur ne permette pas de faire ce que tu veux. Cependant, j'y ai réfléchi depuis et je te propose une piste de travail que je n'ai pas testée. Si elle fonctionne, elle permettrait de contourner les limites de l'IE. ^^

Code : Tout sélectionner

[color="#FFFF00"]264 CopyGroundPilesTo(S:ResRef*,P:Location*)[/color]

This action copies all items lying around on the ground in the current area to the specified point in the target area.
Si l'arme est à terre, elle sera automatiquement "transportée" à l'endroit indiqué. L'inconvénient, c'est que tous les objets qui trainent le seront aussi. Mais je pense que tu peux assumer cet inconvénient pour réussir ton coup. :whistle3:

Quant à

Code : Tout sélectionner

[color="#FFFF00"]257 PickUpItem(S:ResRef*)[/color]

This action instructs the active creature remove the item from the area and put it in their inventory (assuming the inventory has enough room and the item exists).
Comme sa définition l'indique, elle ne permet pas de récupérer un objet dont on ne connait pas le code.

Voilà, voilou l'état de mes réflexions. A toi de les tester. ;)

Bon, je retourne dans mes codes en attendant la prochaine version de WeiDU qui devrait me permettre d'arrêter de me prendre la tête à créer des fonctions pour court-circuiter celles de WeiDU qui ne fonctionnent pas dans des cas particuliers. Et comme par hasard, la loi de Murphy est passée par là et ça concerne mes tp2. :gign:
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Kev
Tasloï
Messages : 79
Enregistré le : mer. 19 févr. 2014, 13:57
Statut : Hors ligne
.

Message par Kev »

CopyGroundPilesTo(S:ResRef*,P:Location*)
Si je comprend bien, cette action pourrait copié l'arme au sol dans l'inventaire du duelliste? Donc en utilisant l'action MoveToPoint([P])) aprés la fin du duel, ça pourrait marcher.
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Comme indiqué, l'action CopyGroundPilesTo(S:ResRef*,P:Location*) sert à transférer des piles d'objets au sol d'une zone vers une autre. Elle est utilisée à plusieurs reprises dans le jeu :
  • passage de la zone de départ de ToB vers le plan astral après le combat contre Illasera
  • passage du temple d'ombre au temple en ruines après la mort du seigneur d'ombre
  • passage du bateau de Saemon à la cité Sahuagin
  • passage du combat contre Irenicus aux enfers
  • passage de l'illusion de Kalah au cirque
Bref, il sert partout où le jeu prévoit de récupérer les effets d'éventuels morts au combat à l'occasion d'un changement de zone forcé. Elle va ratisser un peu large si le personnage meurt dans la bataille.

L'alternative est que tu te fasses une liste d'objets que le duelliste est susceptible de réclamer, qu'elle soit ou non portée par le participant du moment que le groupe la possède. Ainsi tu peux tester des noms d'objets bien précis en pariant sur le fait que le groupe sera forcément équipée d'au moins un d'entre ceux que tu prévois. Il y a quand même des incontournables que pratiquement aucun groupe ne peut ignorer.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Merci pour vos retours.

Freddy> oui on avait parlé de poser un objet au sol dans le cadre dune prise d'otages où l'on demande au groupe de poser ses armes.

Kev> je testerai mais j'ai des doutes. ^^

Isaya> l'option de la liste est à retenir si je ne parviens à coder ce besoin. Surtout que le Charname peut s'arranger pour avoir une arme de "merde" pour éviter de perdre un belle arme.
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

CopyGroundPilesTo(S:ResRef*,P:Location*) copie les objets au sol dans une zone à un emplacement précis.

En y réflechissant, ca ne va coller à mon besoin: le Player perd son objet.

En le déposant au sol, il perd son objet mais on le voit au sol. Si j'utilise CopyGroundPilesTo, j'en ai une copie ailleurs, ca ne résout donc pas mon problème.

J'ai pensé à la solution suivante:
GiveItemCreate("arme1",PROTAGONIST,1,0,0)
wait(1)
ActionOverride(PROTAGONIST,FillSlot(SLOT_WEAPON))
wait(1)
ActionOverride(PROTAGONIST,DESTROYITEM("arme1"))

Sachant que :
FillSlot(I:Slot*SLOTS)
This action will attempt to fill a slot in the active creature's inventory with the appropriate item type. Using FillSlot(SLOT_WEAPON) will look for any weapon in the inventory, and move the first such item into the weapon slot. Any item already in the slot is destroyed.
Répondre

Retourner vers « Scripts »

Qui est en ligne

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