| Script pour switch d'armes à 2 mains / bouclier | |
|
|
Auteur | Message |
---|
Hysoka64 Drizzt en Puissance
Nombre de messages : 16 Date d'inscription : 10/04/2012
| Sujet: Script pour switch d'armes à 2 mains / bouclier Lun 16 Avr 2012 - 19:56 | |
| J'aurais besoin d'aide pour écrire un script que j'aimerais appliquer à mon perso, svp Voila mon Assassin manie l'arc court et l'épée courte avec bouclier. Je souhaiterais utiliser le 1er slot d'arme pour l'arc et le deuxième pour l'épée courte. Le problème c'est que lorsqu'on veut utiliser l'arc il faut avoir la main gauche libre et donc aller dans l'inventaire pour déposer le bouclier. Idem lorsqu'on veut re-passer en attaque de mêlée, il faut déséquiper l'arc et remettre le bouclier. Comment faire pour assigner un comportement automatique du style : IF ennemi a portée d'arc THEN drop le bouclier dans l'inventaire équiper l'arc dans le slot 1 END IF ennemi a portée en combat de mêlée THEN drop arc dans l'inventaire équiper avec l'épée courte dans le slot 2 équiper avec le bouclier dans le slot 2eme main END Est ce que c'est possible ? Doit on connaitre exactement la référence précise du bouclier/arc/epée ou c'est possible de generaliser a n'importe quelle type de bouclier/arc/épée compatible ? merci d'avance | |
|
| |
Zranoff Prétendant Cargoliste
Nombre de messages : 147 Age : 32 Localisation : Arles Date d'inscription : 14/02/2009
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Mer 18 Avr 2012 - 10:14 | |
| A moins d'avoir un bouclier précis que tu voudrais lui faire équiper, le code ne sera pas simple! Donc à part ce genre de code que tu place dans le script de charname:
IF See(NearestEnemyOf(Myself)) !Range(NearestEnemyOf(Myself),5) THEN RESPONSE #100 EquipRanged() END
IF See(NearestEnemyOf(Myself)) THEN RESPONSE #100 EquipMostDamagingMelee() END
Et on peut faire mieux mais pas énormément. C'est le bouclier et l'arme qui posent problème. Si tu connais précisément les items que tu veux équiper, tu peux utiliser à la place: EquipItem("item",myself) Mais apparemment ça ne fonctionne que si l'arme est dans les quickslots donc pas pour le bouclier à priori...
Puisse cette réponse satisfaire à ta demande (je suis rouillé moi...) ^^ Je t'invite à chercher une astuce pour contourner le problème comme créer une arme qui ferait à la fois épée et bouclier spécialement pour ton assassin. | |
|
| |
Armand Mexicanos Muy Bien
Nombre de messages : 622 Age : 38 Localisation : Tréfonds Obscurs Date d'inscription : 29/07/2008
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Mer 18 Avr 2012 - 10:50 | |
| J'ai trouvé une solution qui je pense devrait te convenir. Voici le détail après je t'explique : - Citation :
- IF
See(NearestEnemyOf(Myself)) // si je vois l'ennemi le plus proche de moi !Range(NearestEnemyOf(Myself),4) // et qu'il se trouve à une distance supérieur à quatre pieds (qu'il n'est pas à une distance de quatre pieds) HasItemEquiped("bouclier") // On verifis si le bouclier est equippé THEN RESPONSE #100 TakePartyItem("bouclier") // On le droppe dans l'inventaire EquipRanged() // Equipe une arme à distance AttackReevaluate(NearestEnemyOf(Myself),30) // Le sujet attaque pendant pendant deux secondes (2x15=30) puis reverifis les conditions des "IF" pour savoir quoi faire END - Citation :
- IF
AttackedBy([ANYONE],DEFAULT) // Si le sujet est attaqué physiquement par quelqu'un Range(LastAttackerOf(Myself),4) // Et que le dernier attaquant de "moi même" se trouve à une distance de quatre pieds THEN RESPONSE #100 EquipMostDamagingMelee() // equiper l'arme de melee faisant le plus de degat AttackReevaluate(LastAttackerOf(Myself),30) // idem END En fait comme tu peux le voir on peut équiper par defaut une arme de mêlée ou une arme à distance. Par contre pour le bouclier on peut vérifier qu'il est équipé comme expliqué plus haut mais pour enlever le bouclier je pense pas que ça soit possible. Après ça mériterais de tester si en équipant ton arc par script comme indiqué ça ne vire pas le bouclier directement. Voia tiens moi au courant voir ce que ça donne y'aura justement besoin d'ajuster. Mais peut etre aura tu aussi besoin d'un coup de main pour l'intégrer au jeu ? EDIT : Grillé par zra... En tout cas sympa de te croiser cher confrère ou devrais je dire "professeur" ^^ | |
|
| |
Zranoff Prétendant Cargoliste
Nombre de messages : 147 Age : 32 Localisation : Arles Date d'inscription : 14/02/2009
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Jeu 19 Avr 2012 - 15:00 | |
| Pas mal du tout le coup du TakePartyItem("bouclier"). J'avais oublié d'enlever le bouclier avant :p Le gros inconvénient de ces codes c'est quand même qu'ils forcent le joueur à utiliser l'arc à distance et l'arme la plus puissante (pas forcément la meilleure) au corps à corps. Par ailleurs Armand dans ton code tu forces le joueur à attaquer. Je sais que le changement d'arme interrompt l'attaque, mais là t'as pas intérêt à jouer un mage voleur sinon tu ne pourras jamais lancer de sort puisque tu vas attaquer ton ennemi automatiquement sans réfléchir. Laissons le choix au joueur de le faire Il faudrait pouvoir activer le code en faisant une manip simple ce sera toujours mieux que de faire pause et de remplacer l'objet manuellement. C'est vrai que ça fait un bout de temps que j'étais pas venu sur le fofo ^^ Je vois que ça reprend un peu ça fait plaisir! | |
|
| |
Hysoka64 Drizzt en Puissance
Nombre de messages : 16 Date d'inscription : 10/04/2012
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Jeu 19 Avr 2012 - 17:43 | |
| j'ai essayé ces scripts chez moi et ils ne fonctionnent pas, j'ai remplacé le "bouclier" par un code item précis : "SHLD01" par ex, mais a aucun moment le perso ne s'équipe de l'arc. En fait des qu'il voit un cercle rouge, il dépose le bouclier dans l'inventaire, mais attaque ensuite avec l'épée, car a mon avis tout se passe comme le disait Zranoff, il ne peut équipper l'arc ce celui ci n'est pas manuellement placé dans les slots d'armes rapides.
Ce qu'il me faudrait c une commande qui permette de faire l"inverse de TakePartyItem et place une arme (soit l épée, soit l'arc) directement dans 1 slot d'arme rapide.
Pour info dans ma sauvegarde de test j'utilise le bouclier SHLD01, l'épée SW1H01 et l'arc BOW05 | |
|
| |
Zranoff Prétendant Cargoliste
Nombre de messages : 147 Age : 32 Localisation : Arles Date d'inscription : 14/02/2009
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Jeu 19 Avr 2012 - 19:59 | |
| Je crois (mais je peux me tromper) que cette commande n'existe pas. Mais tu peux utiliser comme je l'ai dit une épée qui fait aussi bouclier avec un skin de bouclier en plus pour faire illusion... ou un arc qui s'utilise à 1 main ^^ Interchanger le bouclier et l'épée est compliqué et nécessite une astuce en tout cas. | |
|
| |
Lodano Vers l'Infinity Engine et Au-Delà !
Nombre de messages : 32 Date d'inscription : 04/08/2010
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Sam 21 Avr 2012 - 10:49 | |
| Wrist Mounted Crossbow Avantages : peut être portée avec un bouclier peut tirer même avec une arme à une main déjà équipée Inconvénients : Ne peut monter que de petits carreaux, dommages plus légers qu'une arbalète classique Portée très réduite Impossible de viser correctement si lance, bâton, hallebarde, épée à de main etc. etc. déjà équipé L'arbalète de poing a été conçue à l'origine par les Duergars, dans l'Ombreterre, pour chasser les Limons Vénéneux, peu avant leur guerre contre les maitres Corbeaux Noirs. Comme elle a été conçue dans l'obscurité et les dédales des sous-terrains, elle n'a pas été prévue pour avoir une véritable portée archère et s'apparente davantage sur le plan tactique à la hache de jet. On raconte quelle fut inventée par le nain Crossdart lors de la grande chasse au Limon Vénéneux de l'an XXX, en surpopulation à l'époque. Les Duergars se dressaient derrière leur "mur de boucliers", de part en part chaque côté de la galerie afin de ne pas laisser les Limons avoir de contacts physiques avec eux, puis jetaient toutes sortes de projectiles. Seule l'arbalète de poing permit une véritable efficacité lorsqu'on découvrit que les Limons Vénéneux étaient sensibles aux carreaux de foudre. Aujourd'hui, l'arbalète à fait surface, mais elle reste encore très marginale. On en trouve notamment dans certaines échoppes exotiques de Padhiver. Plébiscitée par les voleurs qui apprécient particulièrement avoir une grande vitesse d'action en combat, elle leur permet d'alterner combat à distance et combat au corps-à-corps avec souplesse et aisance. | |
|
| |
Armand Mexicanos Muy Bien
Nombre de messages : 622 Age : 38 Localisation : Tréfonds Obscurs Date d'inscription : 29/07/2008
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Sam 21 Avr 2012 - 17:58 | |
| Je rejoins l'avis de zranoff sur le sujet bien souvent les limites que nous impose le moteur nous amène souvent à plus d'inventivité. Aprés dans tous les cas ce sera ton choix au final et on sera la pour t'aider ta progression. Si tu veux toujours tenter sur ton script de base tu as cette commande : - Citation :
- TakeItemReplace(S:Give*,S:Take*,O:Object*)
This action replaces the item in second parameter with the item in first parameter. If the target does not have the item in the second parameter, the item in the first parameter will still be created in the inventory. Note that this action will not automatically equip the item that's created. Une commande assez populaire qui permet de remplacer un objet par un autre, il est utilisé notamment pour transformer les objets des tréfonds en poussière d'adamantine : - Citation :
- TakeItemReplace("DWDUST","DWCHAN02",Player2) // Cotte de mailles elfe noir + 5
Ici on donne la poussiére et en on prend la cotte de maille dans l'inventaire de player2. Voila our la petite info en espérant que ça te soit utile. Bon courage. | |
|
| |
Hysoka64 Drizzt en Puissance
Nombre de messages : 16 Date d'inscription : 10/04/2012
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Lun 23 Avr 2012 - 7:41 | |
| merci pour cette piste, armand, mais la commande nécessite de detruire un autre objet pour remplacer celui ciblé.
C'est quand même incroyable que dans un jeu qui reprend le mécanisme ADD," tuer un monstre, ramasser un item, s’équiper de l'objet..." il n'y ai pas une commande simple qui dise prendre dans l'inventaire l'objet de type arme et l’équiper sur le personnage en arme 1, 2 ou 3... Surtout que la commande TakePartyItem() existe et permet justement de faire le contraire... | |
|
| |
Lodano Vers l'Infinity Engine et Au-Delà !
Nombre de messages : 32 Date d'inscription : 04/08/2010
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Lun 23 Avr 2012 - 11:46 | |
| Vous me pardonnerez le quasi hors sujet de l'autre fois mais à vous lire c'est le premier truc auquel j'ai pensé. Entre temps ça m'a donné deux autres idées, farfelues ou pas. etc. Le script qu'Armand proposait avec EquipMostDamagingMelee() ressemble énormément au BP Series 4.00 qui reste une référence en matière d'IA (ou y'en a-t-il d'autres meilleures ?). - Citation :
- // **********************************************************************
// * Segment Name: gs_EquipMeleeIfAttacked.baf // **********************************************************************
// * EQUIP MELEE IF ATTACKED
// * Ensure that the PC has a Melee weapon equipped, to avoid that -4 to AC (BG2 Only) IF OR(2) ActionListEmpty() GlobalTimerNotExpired("INTERUPT","LOCALS") AttackedBy([ANYTHING],DEFAULT) Range(LastAttackerOf(Myself),4) !HasWeaponEquiped(Myself) !Class(Myself,MONK) THEN RESPONSE #100 EquipMostDamagingMelee() Continue() END
// If somebody's in the PC's face and swinging // Stop firing arrows IF OR(2) ActionListEmpty() GlobalTimerNotExpired("INTERUPT","LOCALS") OR(2) Global("USERANGE","LOCALS",1) // You said use your bow Global("MEL_MISS","LOCALS",1) // and former 'logic' agreed !CombatCounter(0) Range(NearestEnemyOf(Myself),4) !Class(Myself,MONK) THEN RESPONSE #100 SetGlobal("MEL_MISS","LOCALS",0) // Logic says to put up your bow EquipMostDamagingMelee() // Draw your sword, Continue() // and start chopping END
À partir de là j'ai du mal à en déduire que l'on peut aller plus loin dans ce système. Néanmoins, et j'en reviens à mes idées farfelues, il semblerait que la meilleure façon d'aller au plus proche de ce que tu désire faire est de le faire sur des armes spécifiques. Pourquoi pas un ensemble épée courte / bouclier / arc court qui disposent tous du même script ? (et après broder du RP autour, genre les armes "jumelles", deux quêtes différentes pour ramasser épée / bouclier d'un côté et arc de l'autre, avoir tous les objets permet la rotation complète de l'équipement en fonction de la situation etc. etc. ce n'est qu'un exemple bien sûr...). Bref tout ça c'est à toi de voir et pas de notre ressort. Il est peut être aussi possible d'en modifier le comportement de certaines armes ? toutes les épées courtes de +0 à +4 ? Sur le plan technique : - Citation :
- // ------ Attaque à distance avec XXitem01
IF See(NearestEnemyOf(Myself)) !Range(NearestEnemyOf(Myself),4) HasItemEquiped("XXitem02") // le bouclier ici THEN RESPONSE #100 TakePartyItem("XXitem02") // le bouclier ici Equip("XXitem01",Myself) // l'arc ici AttackReevaluate(NearestEnemyOf(Myself),30) END
// ------ Attaque au CàC avec XXitem02 et 03 IF AttackedBy([ANYONE],DEFAULT) Range(LastAttackerOf(Myself),4) THEN RESPONSE #100 Equip("XXitem02",Myself) // le bouclier ici Equip("XXitem03",Myself) // l'épée ici AttackReevaluate(LastAttackerOf(Myself),30) END J'ai pas testé et j'ai un gros doute surle fonctionnement mais bon, pour donner une idée générale quoi. | |
|
| |
Armand Mexicanos Muy Bien
Nombre de messages : 622 Age : 38 Localisation : Tréfonds Obscurs Date d'inscription : 29/07/2008
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Sam 28 Avr 2012 - 11:42 | |
| Désolé j'ai été pas mal pris cette semaine. Oui dans l'idée je suis d'accord avec lodano enfin c'est à tester. C'est vrai que le takeitemreplace détruit l'objet mais c'est pas vraiment important vu que weidu va chercher le fichier directement dans le jeu pas dans l’inventaire. Après tu génère artificiellement les objets donc dans ton script tu dois recréer l'objet disparus dans l'inventaire. C'est pas l’idéal mais ça peut marcher, à voir... - Citation :
- C'est quand même incroyable que dans un jeu qui reprend le mécanisme ADD," tuer un monstre, ramasser un item, s’équiper de l'objet..." il n'y ai pas une commande simple qui dise prendre dans l'inventaire l'objet de type arme et l’équiper sur le personnage en arme 1, 2 ou 3...
Surtout que la commande TakePartyItem() existe et permet justement de faire le contraire... C'est le problème avec ce moteur comme avec tout autre d'ailleurs : les commandes sont limité à ce que les programmeur ont eu besoin. Du coup dés qu'on est dans un cas un peu particulier ça complique. Après en spécifiant des objets spécifiques comme on t'a indiqué ça me semble faisable. | |
|
| |
Hysoka64 Drizzt en Puissance
Nombre de messages : 16 Date d'inscription : 10/04/2012
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Mar 1 Mai 2012 - 7:55 | |
| Je dois pas etre bon, j'arrive pas a écrire ce script, même en précisant quel item je veux. Tu pourrais me donner un exemple ?
Un truc simple avec un hotkey par exemple, si j'appuie sur une touche le perso depose son arc et se met en mode melée epee + bouclier, et si j'appuie sur une autre touche il dépose le bouclier et s'équipe de son arc.
Moi meme quand il s'équipe d'une arme celle ci n'apparait pas dans le slot rapide d'attaque "ca reste avec l image du poing" (combat a main nue) | |
|
| |
Armand Mexicanos Muy Bien
Nombre de messages : 622 Age : 38 Localisation : Tréfonds Obscurs Date d'inscription : 29/07/2008
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Ven 4 Mai 2012 - 12:31 | |
| Pour l'aspect épée bouclier par exemple ça pourrait donner ça : - Citation :
- // ------ Attaque à distance
IF See(NearestEnemyOf(Myself)) !Range(NearestEnemyOf(Myself),4) HasItemEquiped("épée") // l'épée est equipé THEN RESPONSE #100 TakePartyItem("bouclier") // on vire le bouclier TakeItemReplace("épée","arc",Player1) // on remplace l'épée par l'arc GiveItem("épée",Player1) // on recré l'épée dans l'inventaire AttackReevaluate(NearestEnemyOf(Myself),30) END Déjà voir ce que ça donne. | |
|
| |
Hysoka64 Drizzt en Puissance
Nombre de messages : 16 Date d'inscription : 10/04/2012
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Ven 4 Mai 2012 - 15:52 | |
| | |
|
| |
Armand Mexicanos Muy Bien
Nombre de messages : 622 Age : 38 Localisation : Tréfonds Obscurs Date d'inscription : 29/07/2008
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier Ven 4 Mai 2012 - 16:17 | |
| - Citation :
- il ne se passe rien
Sobre comme réponse ! Plus concrètement t'a essayé quoi ? Avec un hotkey ou ces triggers precis ? Tu pourrais essayer avec juste nearestennemy ça se déclencherais automatiquement normalement.. Ca permettrai déjà de cibler le problème... Tes références d'item sont-elle bonne, sont elle bien équipé par player1 ? Dans tous les cas en prog c'est la base, il faut se poser des questions. Si quelque chose ne marche pas il faut chercher à comprendre pourquoi. Tu aurais un code à nous montrer déja ? | |
|
| |
Contenu sponsorisé
| Sujet: Re: Script pour switch d'armes à 2 mains / bouclier | |
| |
|
| |
| Script pour switch d'armes à 2 mains / bouclier | |
|