LEGENDES
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Vers l'Infinity et Baldur's Gate
 
AccueilAccueil  PortailPortail  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  ConnexionConnexion  
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

 

 Script pour ramasser les objets

Aller en bas 
3 participants
AuteurMessage
Hysoka64
Drizzt en Puissance



Nombre de messages : 16
Date d'inscription : 10/04/2012

Script pour ramasser les objets Empty
MessageSujet: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Mar 10 Avr 2012 - 13:14

En jeu, lorsqu'on a sélectionné tout son groupe de perso, si on click sur des objets au sol (par ex lâchés sur le cadavre d'un monstre qu'on vient de tuer), le jeu envoie systématiquement le personnage chef du groupe pour ramasser ces objets.

Est ce qu'il est possible d'écrire un script qui indiquerait au jeu d'envoyer le pj (sélectionné évidemment) le plus proche de l'objet a ramasser plutôt que le "chef du groupe" ?

Je parle bien sur lorsqu'on a sélectionné plusieurs personnages, mais peut etre qu il est possible également d'envoyer ramasser un perso non sélectionné juste parce qu'il est proche de la cible clickée ?

Merci d'avance Wink
Revenir en haut Aller en bas
Armand
Mexicanos Muy Bien
Armand


Nombre de messages : 622
Age : 38
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Mar 10 Avr 2012 - 17:05

Y'a une action dans iesdp "PickUpItem" qui permet de faire ramasser un objet par à peu prés n'importe qui (pas à peu prés même, n'importe qui). Donc en théorie on peut faire ramasser un perso extérieur oui...

Après pour l'histoire de savoir qui ramasse dans le groupe ça me parait difficile vu que de base c'est intégré au moteur du jeu ce qui n'arrange jamais vraiment l'affaire et de ce que j'ai vu y'a pas de trigger qui pourrait vérifier qu'un personnage de l’équipe clique sur un objet sol donc ça me semble mal barré.

Mais le mieux serait que nous dise ce que tu veux exactement. C'est quoi l'idée derrière ? Si ça se trouve y'a un système plus simple pour ce que tu veux faire.
Revenir en haut Aller en bas
Lodano
Vers l'Infinity Engine et Au-Delà !
Lodano


Nombre de messages : 32
Date d'inscription : 04/08/2010

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Mar 10 Avr 2012 - 20:01

à la rigueur un extend top (voire replace textually) pour bidouiller le script qui gère ça (et qui reste à trouver) pourrait arranger l'affaire, à voir encore comment le script est foutu et donc la marge de manœuvre derrière. Néanmoins je ne suis pas convaincu qu'on puisse pour autant dire en jeu "ceci est ma mule de service" pour que le jeu envoie en priorité "la mule de service" lorsqu'il sélectionne le larbin qui va aller se coltiner le ramassage, PJ par défaut effectivement.

Pourquoi pas un script IA qui fasse ramasser un objet au personnage qui dispose de ce script et qui le fasse automatiquement ramasser tout ce qui retrouve au sol (enjoy les arcs courts +0 des gobelins qui polluent l'inventaire pour s'avérer invendable). Il suffirait de trouver le trigger si "item au sol GT 1" (gt = plus grand que) alors "PickUpItem". Ce serait marrant un kit "mule". force minimum : 18, avantages : vitesse de déplacement x2 ; inconvénient : fait un peu plante verte tant que le combat n'est pas fini.

Bref, je m'égare Razz
Revenir en haut Aller en bas
Hysoka64
Drizzt en Puissance



Nombre de messages : 16
Date d'inscription : 10/04/2012

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Mer 11 Avr 2012 - 6:53

Alors tout d'abord merci beaucoup a vous de vous intéresser a ma question ^^
Ce que j'aimerais faire est précisément le contraire d'avoir une "mule".

J'aimerais indiquer au moteur du jeu qu'il doit envoyer le personnage de l'équipe (entièrement sélectionnée ou non) le plus proche de l'objet a ramasser pour que ce soit lui qui "ouvre" l'interface de ramassage des objets au sol.

Actuellement le jeu envoie soit le seul personnage sélectionné (logique), soit le personnage dont le portrait est le plus haut dans le groupe si on a sélectionné plusieurs perso.

Moi ce que j'aimerais c'est par ex :

je joue un sorcier qui reste souvent en arrière du groupe, j'ai dans mon groupe par ex minsc et khalid devant, jaheira et imoen derriere, et mettons xan tout en arriere a coté de mon sorcier.
Le groupe tue un monstre (grouilleux, il lache 1 po).
C'est minsc qui l a tué d'un coup d'épée, il est donc juste a coté du cadavre du grouilleux, et le reste du groupe est un peu plus loin derrière.
Si je click avec ma souris sur la po lâchée, ce n'est pas minsc qui n'a (qu un pas a faire...) qui va la ramasser, mais c'est mon perso qui va endurer le pathfinding pas super du jeu pour contourner tous les obstacles y compris ses propres équipiers puis pousser minsc pour se jeter enfin sur la malheureuse PO.

Ne serait il pas possible d'écrire un script (qu il faudrait peut etre appliquer a chaque membre du groupe, je ne sais pas ?) qui dise au perso : "si tu es le plus proche de l'objet qu'on vient de cliquer pour le ramasser, vas y a sa place !"

En fait ce qui doit être difficile a détecter c'est la condition : "quelqu'un a cliqué sur un objet au sol a ramasser".

Puis ensuite est ce que c'est possible de connaitre la distance de chaque PJ a l'objet, ou le plus proche de l'objet clické ?

Et enfin effectivement le reste doit être plus simple avec la commande pickupitem.
Revenir en haut Aller en bas
Armand
Mexicanos Muy Bien
Armand


Nombre de messages : 622
Age : 38
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Ven 13 Avr 2012 - 7:55

Citation :
le plus proche de l'objet a ramasser pour que ce soit lui qui "ouvre" l'interface de ramassage des objets au sol.
Ça déjà c'est impossible. On peut bien vérifier que le joueur a cliqué sur un "objet cliquable" comme certaines machines dans le donjon d'irenicus mais ça s'arrête là. Et ça reste spécifique à ces objets particuliers qu'on appelle dans appelle dans notre jargon les region triggers.


Citation :
Ne serait il pas possible d'écrire un script (qu il faudrait peut etre appliquer a chaque membre du groupe, je ne sais pas ?) qui dise au perso : "si tu es le plus proche de l'objet qu'on vient de cliquer pour le ramasser, vas y a sa place !"
Ça en revanche c'est plus dans le possible on peut cibler chaque perso peut importe leur nom d'ailleurs via ces mots clefs : player1, player2, player3,etc... Et il existe même un trigger "range" pour verifier les distances je ne sais pas s'il pourra vérifier l'existence d'un objet par contre je pense que oui mais bon. Le hic de la manip est que tu ne pourra pas vérifier la présence d'un objet au sol de manière générale mais celle d'un objet précis dans la zone ou qu'il soit.

Citation :
En fait ce qui doit être difficile a détecter c'est la condition : "quelqu'un a cliqué sur un objet au sol a ramasser".
Oui comme je l'ai dis malheureusement c'est impossible. On est tributaire d'un nombre d'action et de conditions limité et parfois y'a pas de moyen de contourner.

Citation :
Puis ensuite est ce que c'est possible de connaitre la distance de chaque PJ a l'objet, ou le plus proche de l'objet clické ?
Comme je te l'ai dit la fonction range ermet de verifier que un cre specifique je trouve au moins à une certaine distance d'un objet.


Si mes explications te conviennent je peux commencer à t'indiquer comment procéder. Faire des tutos et qui plus est des bon tutos prend du temps alors je préfère en attendant faire du cas par cas. Et si tu veux continuer à en discuter on peut encore prendre cinq minutes. Wink
Revenir en haut Aller en bas
Hysoka64
Drizzt en Puissance



Nombre de messages : 16
Date d'inscription : 10/04/2012

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Ven 13 Avr 2012 - 9:12

Oh oui oui, vraiment je suis plus que demandeur de ton aide, surtout que tu expliques vraiment clairement les choses, t'es un excellent vulgarisateur Wink

Je trouve que BG souffre d'un seul gros défaut qui est quand même bien visible dans un jeu ou on passe son temps a ramasser des objets par terre, c cette politique de ramassage non intelligent...
Alors si tu pouvais m'aider a écrire un système de script qui résoudrait au moins partiellement ce "défaut", franchement je serais trop content, sans parler du fait que le scripting est probablement la partie la plus passionnante du modding de l'IE.

De mon coté j'ai commencé a regarder sur IESDP et dans les scripts meme du jeu comment fonctionne la syntaxe, ca a l'air assez basique, ca fonctionne surtout sur des vérifications de conditions et des renvois d'états true() ou false(), ce qui a le mérite d’être une architecture plutôt simple mais malheureuse vite limité.
Revenir en haut Aller en bas
Hysoka64
Drizzt en Puissance



Nombre de messages : 16
Date d'inscription : 10/04/2012

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Ven 13 Avr 2012 - 18:52

j'ai vu qu il y a un trigger ReceivedOrder(O:Object*,I:Order ID*) et une action GiveOrder(O:Object*,I:Order*) peut etre qu'on peut les combiner a la methode detection de la distance par le Range() ?

Du genre :

IF
ReceivedOrder(player1,getitem())
THEN
RESPONSE#100
GiveOrder(player2)
END

ca ne veut surement rien dire, mais je trouvais que ça sonnait bien ^^
Revenir en haut Aller en bas
Armand
Mexicanos Muy Bien
Armand


Nombre de messages : 622
Age : 38
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Sam 14 Avr 2012 - 10:13

Concernant cette commande tu peux avoir plus d'info sur ce topic (si tu es pas trop maladroit avec) :

http://forums.gibberlings3.net/index.php?showtopic=2214


Comme l'indique l'auteur du post le trigger est plus ou moins inutile on indique le received order aprés avoir donné le give order. Quand au getitem je ne te le conseillerais pas vu que comme l'indique iesdp :


This action has not been seen to produce any results.
Cette action ne semble produire aucun résultat

Après oui tu peux toujours tester voir ce que ça donne mais à priori l'action received order ne marche qu'en corrélation avec give order donc je pense pas que ça produise un résultat. Sinon le bloc que je t'avais indiqué par messagerie a t-il produit un résultat ?

Dans tous les cas comme je l'ai dit ce genre de phénomène (le joueur en haut de file qui ramasse automatiquement) est inhérent au moteur du jeu et on n'arrivera pas je pense à avoir un résultat equivalent au jeu d'origine mais on peut toujours bidouiller pour voir ce qu''il est possible de faire.

Revenir en haut Aller en bas
Hysoka64
Drizzt en Puissance



Nombre de messages : 16
Date d'inscription : 10/04/2012

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Sam 14 Avr 2012 - 22:07

non le bloc qu on a rajouté par messagerie n a rien produit du tout, je n'ai rien noté comme changement.

Ta remarque me fait penser qu'on peut peut être justement procéder différemment...

Par ex le script pourrait uniquement se charger d'attribuer le rôle de "joueur en haut de file" au membre du groupe dont le range a l'objet par terre le plus proche est le plus petit ?
Ensuite le moteur ferait envoyer normalement le joueur bougé en haut du groupe, et plus besoin de scripter la partie : "va ramasser l'objet à la place de..."

Mais quand même ca me surprend que pour un jeu ADD dont le principe mêmne dispose d'aucune instruction qui dise clairement : "ramasser le dernier objet dropé"...

Je suppose que pour chaque monstres tué le jeu utilise la commande dropinventory() afin de créer leurs tresors au sol ? ou c'est un peu plus subtil que ca ?
Revenir en haut Aller en bas
Armand
Mexicanos Muy Bien
Armand


Nombre de messages : 622
Age : 38
Localisation : Tréfonds Obscurs
Date d'inscription : 29/07/2008

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Lun 16 Avr 2012 - 7:40

Citation :
non le bloc qu on a rajouté par messagerie n a rien produit du tout, je n'ai rien noté comme changement.
Tu as vérifié sur la créature en question ? C'est un gobelin de mémoire tu dois pouvoir retrouver son cre dans infinity explorer. L'idée du script était de vérifier si tel personnage avait un objet alors on le ramasse (sur son cadavre en fait) mais je n'avais pas encore mis le trigger dead que tu pourrais tenter d’implanter pour voir. Si tu pouvais copier coller le script que je t'ai filé sur ce post ça pourrais nous permettre de bidouiller plus facilement.


Citation :
Je suppose que pour chaque monstres tué le jeu utilise la commande dropinventory() afin de créer leurs tresors au sol ? ou c'est un peu plus subtil que ca ?
Oui un eu plus subtil malheureusement. Le truc c'est que de base dans le jeu tu as une foule de choses qui est implanté via les maps, les scripts, les dialogues et j'en passe et d'autre qui sont inhérent au moteur. Pour le premier cas on peut décortiquer pour voir comment ça se passe toutes les infos sont la mais pour le deuxième cas on est obligé de bidouiller dans le vague vu que ce sont des choses complètement invisible et non modifiable par les moyens que les concepteurs ont pu utiliser.
Ce qu'il faut se dire c'est que les scripts de manière générale implantent un comportement qui est automatique. Cela n'a rien à voir avec les manip du joueur qui utilise une interface et sur lequel nous ne pouvons avoir aucune incidence. Je sais pas si je suis clair pour le coup... ^^

Mais on peut toujours trouver des pistes par exemple pour aborder ce que tu disais de faire bouger l'ordre dans la file. Pour l'instant j'ai rien trouvé de trés concluant niveau action mais j'ai peut être une piste :


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.

On ne peut pas vérifier les objets au sol mais on peut les copier. Il y a peut être une idée à trouver derrière.
Revenir en haut Aller en bas
Hysoka64
Drizzt en Puissance



Nombre de messages : 16
Date d'inscription : 10/04/2012

Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1Lun 16 Avr 2012 - 19:39

pour le block que tu m'avais filé c'est celui ci :
IF
Global("#VISTEAL","GLOBAL",0)
Range("ICGOB03",28)
HasItem("AX1H01","ICGOB03")
THEN
RESPONSE #100
SetGlobal("#VISTEAL","GLOBAL",1)
PickUpItem("AX1H01")
END


Par contre pour le coup de copier les items au sols je vois pas où tu veux en venir ? le principe même de mon idée était de faire adapter le comportement des perso pour le ramassage des objets en fonction de la distance entre eux et l'objet.
Tant qu'on a pas le moyen de connaitre cette distance ou de la comparer... ça me semble compromis.
Revenir en haut Aller en bas
Contenu sponsorisé





Script pour ramasser les objets Empty
MessageSujet: Re: Script pour ramasser les objets   Script pour ramasser les objets Icon_minitime1

Revenir en haut Aller en bas
 
Script pour ramasser les objets
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Deux objets en un
» Diverses questions sur les objets
» Svp, besoin d'un script simple

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LEGENDES :: LE MONDE DU MODDING :: Maîtrise :: Apprentissage-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser