Vers l'Infinity et Baldur's Gate
 
AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  

Partagez | 
 

 Script pour switch d'armes à 2 mains / bouclier

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Hysoka64
Drizzt en Puissance


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

MessageSujet: 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 Smile

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 Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zranoff
Prétendant Cargoliste
avatar

Nombre de messages : 147
Age : 26
Localisation : Arles
Date d'inscription : 14/02/2009

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Armand
Mexicanos Muy Bien
avatar

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

MessageSujet: 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" ^^

_________________
J'ai oublié la rancoeur. Je ne connais plus que l'amour, le bonheur... Bordel je baisse ! C'est pas bon ça, pas bon.....

Armand dit :
*t'a vu bat est d'accord avec moi !
*àa prouve bien que...
*ça
*putain mais avec ces conneries mon area a planté
*je dosi tout refaire Neutral
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zranoff
Prétendant Cargoliste
avatar

Nombre de messages : 147
Age : 26
Localisation : Arles
Date d'inscription : 14/02/2009

MessageSujet: 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 Smile

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!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Hysoka64
Drizzt en Puissance


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

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zranoff
Prétendant Cargoliste
avatar

Nombre de messages : 147
Age : 26
Localisation : Arles
Date d'inscription : 14/02/2009

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Lodano
Vers l'Infinity Engine et Au-Delà !
avatar

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

MessageSujet: 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.


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Armand
Mexicanos Muy Bien
avatar

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

MessageSujet: 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.

_________________
J'ai oublié la rancoeur. Je ne connais plus que l'amour, le bonheur... Bordel je baisse ! C'est pas bon ça, pas bon.....

Armand dit :
*t'a vu bat est d'accord avec moi !
*àa prouve bien que...
*ça
*putain mais avec ces conneries mon area a planté
*je dosi tout refaire Neutral
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Hysoka64
Drizzt en Puissance


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

MessageSujet: 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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Lodano
Vers l'Infinity Engine et Au-Delà !
avatar

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

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Armand
Mexicanos Muy Bien
avatar

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

MessageSujet: 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.



_________________
J'ai oublié la rancoeur. Je ne connais plus que l'amour, le bonheur... Bordel je baisse ! C'est pas bon ça, pas bon.....

Armand dit :
*t'a vu bat est d'accord avec moi !
*àa prouve bien que...
*ça
*putain mais avec ces conneries mon area a planté
*je dosi tout refaire Neutral
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Hysoka64
Drizzt en Puissance


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

MessageSujet: 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)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Armand
Mexicanos Muy Bien
avatar

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

MessageSujet: 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.

_________________
J'ai oublié la rancoeur. Je ne connais plus que l'amour, le bonheur... Bordel je baisse ! C'est pas bon ça, pas bon.....

Armand dit :
*t'a vu bat est d'accord avec moi !
*àa prouve bien que...
*ça
*putain mais avec ces conneries mon area a planté
*je dosi tout refaire Neutral
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Hysoka64
Drizzt en Puissance


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

MessageSujet: Re: Script pour switch d'armes à 2 mains / bouclier   Ven 4 Mai 2012 - 15:52

il ne se passe rien
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Armand
Mexicanos Muy Bien
avatar

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

MessageSujet: 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 ?

_________________
J'ai oublié la rancoeur. Je ne connais plus que l'amour, le bonheur... Bordel je baisse ! C'est pas bon ça, pas bon.....

Armand dit :
*t'a vu bat est d'accord avec moi !
*àa prouve bien que...
*ça
*putain mais avec ces conneries mon area a planté
*je dosi tout refaire Neutral
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Script pour switch d'armes à 2 mains / bouclier   

Revenir en haut Aller en bas
 
Script pour switch d'armes à 2 mains / bouclier
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Petit script pour choisir entre deux mp3 à jouer:aidez moi!!
» Script pour changer le status Skype avec Mirror
» Aimants pour interchanger les armes et drones de marquage
» [Résolu] Tuto pour Acheter des armes / drogues
» [résolu] problème de script pour faceset géant

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LEGENDES :: LE MONDE DU MODDING :: Entraide :: Les scripts et le weidu : Zranoff-
Sauter vers: