Affichage des résultats 1 à 7 sur 7

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

  1. #1
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    995

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

    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)."

  2. #2
    Date d'inscription
    February 2014
    Messages
    79
    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é.

  3. #3
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages
    4 414
    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:
    264 CopyGroundPilesTo(S:ResRef*,P:Location*)
    
    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.

    Quant à
    Code:
    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).
    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.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  4. #4
    Date d'inscription
    February 2014
    Messages
    79
    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.

  5. #5
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 708
    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 !

  6. #6
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    995
    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.

  7. #7
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages
    995
    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.
    Dernière modification par Cocrane ; 02/12/2015 à 23h39.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2016, 15h44
  2. Réponses: 6
    Dernier message: 20/03/2015, 08h05
  3. [WeiDU] Comment ajouter un objet AU SOL sur une carte ?
    Par deratiseur dans le forum Programmation WeiDU
    Réponses: 6
    Dernier message: 13/03/2015, 20h13
  4. [matos] clé USB illisible - comment récupérer des données
    Par Voyageuse dans le forum Informatik'
    Réponses: 20
    Dernier message: 21/05/2013, 16h58
  5. [ITM] Comment associer un script à un objet ?
    Par Shinook dans le forum Objets et magasins
    Réponses: 9
    Dernier message: 05/11/2005, 16h41

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244