Affichage des résultats 1 à 20 sur 20

Discussion: [SCRIPT] - Créature tuée donne objet au kit précis.

  1. #1
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274

    [SCRIPT] - Créature tuée donne objet au kit précis.

    Bonjour,

    Encore une question de script aujourd'hui .

    Je souhaiterais qu'à la mort d'une créature (dans le cas présent de chaque Dragon dans BG2) le personnage bénéficiant du Kit obtienne immédiatement un objet.

    J'ai plusieurs morceaux de script mais j'ai ne sais pas trop comment les assembler pour donner le résultat désiré.

    Dois-je ajouter le script au monstre qui vérifiera les paramètres et les appliquera à sa mort?

    IF
    Die() // Firkraag meurt
    Kit(Player1,ELRIN_DRAGOSH)
    Global("Elrin_DragoshIsPlayer1","AR1203",0)
    THEN
    RESPONSE #100
    ActionOverride(Player1,CreateItem("el[h]lm1.itm",1,0,0)) // casque
    ActionOverride(Player1,FillSlot(SLOT_HELMET))
    SetGlobal("Elrin_DragoshIsPlayer1","AR1203",1)
    DestroySelf()

    END

    ou

    Dois-je appliquer le script au fichier AREA où la créature réside, celui-ci pouvant vérifier que la créature est morte et donc donner l'item au personnage?

    IF
    ? // script détectant la mort de Firkraag, est ce que ça a un rapport avec la DeathVariable? (Ici FIRKRA02)
    Kit(Player1,ELRIN_DRAGOSH)
    Global("Elrin_DragoshIsPlayer1","AR1203",0)
    THEN
    RESPONSE #100
    ActionOverride(Player1,CreateItem("el[h]lm1.itm",1,0,0)) // casque
    ActionOverride(Player1,FillSlot(SLOT_HELMET))
    SetGlobal("Elrin_DragoshIsPlayer1","AR1203",1)
    END

    Est-ce nécessaire de créer une variable dans ce cas? Chaque Dragon n'est présent qu'une fois dans le jeu.

    Merci à vous!

    EDIT:

    Le script Dead("FIRKRA02") est censé détécté la mort de Firkrag, mais rien ne se passe lorsque je l'utilise en script sur AREA1203.BCS

    IF
    Dead("FIRKRA02") // script détectant la mort de Firkraag,
    Kit(Player1,ELRIN_DRAGOSH)
    Global("Elrin_DragoshIsPlayer1","AR1203",0)
    THEN
    RESPONSE #100
    Wait(1)
    ActionOverride(Player1,CreateItem("el[h]lm1.itm",1,0,0)) // casque
    ActionOverride(Player1,FillSlot(SLOT_HELMET))
    SetGlobal("Elrin_DragoshIsPlayer1","AR1203",1)
    END

    EDIT 2:

    Ca fonctionne comme je veux avec le SCRIPT suivant appliqué directement à la créature:

    IF
    Die()
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[S]1")
    THEN
    RESPONSE #100
    TakePartyItem("el[h]lmA") // No such index
    DestroyItem("el[h]lmA") // No such index
    ActionOverride(Player1,CreateItem("el[f]sc",1,0,0)) // casque
    ActionOverride(Player1,FillSlot(SLOT_HELMET))
    END

    En revanche le SCRIPT ActionOverride(Player1,FillSlot(SLOT_HELMET)) ne fonctionne pas parfaitement, si un objet est déjà dans l'emplacement pour les casques, l'objet créer avec le SCRIPT ActionOverride(Player1,CreateItem("el[f]sc",1,0,0)) restera dans une case de l'inventaire.

    Le second problème que j'ai rencontré a été avec le SCRIPT ActionOverride(Player1,CreateItem("el[f]sc",1,0,0)), lors de mes tentatives, celui-ci n'a pas fonctionné avec mon épée ni avec mon bouclier. Il ce peut aussi que ce soit comme m'avait dit Freddy_Gwendo, à cause du nom de mes objets composés de [].

    Je n'ai pas non plus réussi à faire fonctionner Le script lié au fichier AREA détectant la mort d'une créature: Dead("FIRKRA02").


    Concernant le Script il a fallut que je l'ajoute tout en haut du Script de comportement des Dragons pour qu'il soit pris en compte lorsque les Dragons attaquent, sinon ceux-ci n'ont même pas le temps d'arriver jusqu'à la partie du script désiré.

    Existe t'il un moyen de faire passer en priorité un script sans avoir à le mettre en premier dans le fichier de Script?
    Dernière modification par Faust ; 31/07/2017 à 08h38.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  2. #2
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274

    Triste

    Bon je laisse tomber ça pour le moment, je n'arrive pas à faire fonctionner le script sur les AREA, le script qui est censé vérifier la mort d'une créature ne fonctionne pas chez moi, et le script que j'ai assigné à la créature lors de sa mort est trop long, du coup ça ne fonctionne pas (la créature doit supprimer un objet de l'inventaire du personnage ayant le kit ciblé, puis remettre un objet à la place, mais donne directement l'objet sans rien remplacer.)

    Si quelqu'un à une idée.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  3. #3
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Citation Envoyé par Faust Voir le message
    Bon je laisse tomber ça pour le moment, je n'arrive pas à faire fonctionner le script sur les AREA, le script qui est censé vérifier la mort d'une créature ne fonctionne pas chez moi, et le script que j'ai assigné à la créature lors de sa mort est trop long, du coup ça ne fonctionne pas (la créature doit supprimer un objet de l'inventaire du personnage ayant le kit ciblé, puis remettre un objet à la place, mais donne directement l'objet sans rien remplacer.)

    Si quelqu'un à une idée.
    Je n'avais pas vu ton message. Je te réponds demain car là il est vraiment tard et je suis braindead.
    Mais en gros: il existe une action pour remplacer un item par un autre: TakeItemReplace
    De mémoire il fonctionne comme ça TakeItemReplace("NomDuNouvelObjet","NomDeLobjetADétruire","MecQuiVaRecupérerl'Objet")
    Je l'ai testé et ça fonctionne.

    Sinon, je te conseille de décomposer ton script

    IF
    Dead("Firkraag") // ou Dead(myself) si c'est son script
    Global("FirkraagCreve","GLOBAL",0)
    THEN
    RESPONSE #100
    SetGlobal("FirkraagCreve","GLOBAL",1)
    Continue()
    END

    IF
    Global("FirkraagCreve","GLOBAL",1)
    AreaCheck("AR1203")
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("TonItem")
    THEN
    RESPONSE #100
    TakeItemReplace("X","Y",player1)
    DisplayStringHead(Player1,~Vous avez reçu un objet~) //évidemment tu mets le string que tu veux ici
    END

    Par contre, à vérifier mais je pense que l'objet remplacé sera bien détruit.

    Sinon, tu peux aussi jouer avec IF HasItemSlot("NomduMec",numéro du slot)





    Bon, je reviens demain, voir si j'ai pas raconté trop de conneries XD Je répondrai aux autres questions.

    EDIT: Bonjour! Alors, j'ai relu un peu plus attentivement
    Si le script que j'ai proposé plus haut ne fonctionne pas avec Dead(myself), essaie avec Die(), mais dans ce cas n'oublie pas le continue(), sans quoi le deuxième bloc sera ignoré.

    Le problème de FillSlot, c'est que le script prendra n'importe quel objet dans l'inventaire qui puisse être équipé dans ce slot. Tu as essayé ActionOverride(Player1,EquipItem("TonItem")? Je ne sais pas si ça marche, je n'ai jamais testé.

    Le script Dead("FIRKRA02") est censé détécté la mort de Firkrag, mais rien ne se passe lorsque je l'utilise en script sur AREA1203.BCS

    Bon, je ne suis pas du tout une pro en script de zone, mais je pense qu'il vaut mieux réserver les modifs de scripts de zone aux créations de creatures. J'utilise un trigger Dead dans un script de zone dans mon mod et ça fonctionne, mais c'est pour faire apparaitre une créature (après la mort de Mulahey). Donc oui, je pense qu'il vaut mieux affecter les scripts d'actions de creatures aux créatures.



    Dernière modification par Pélagie ; 31/07/2017 à 09h59.
    Demi-elfe aquatique

    Groupie de Bioware

  4. #4
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Je n'avais pas vu ton message. Je te réponds demain car là il est vraiment tard et je suis braindead.
    Mais en gros: il existe une action pour remplacer un item par un autre: TakeItemReplace
    De mémoire il fonctionne comme ça TakeItemReplace("NomDuNouvelObjet","NomDeLobjetADétruire","MecQuiVaRecupérerl'Objet")
    Je l'ai testé et ça fonctionne.

    Sinon, je te conseille de décomposer ton script

    IF
    Dead("Firkraag") // ou Dead(myself) si c'est son script
    Global("FirkraagCreve","GLOBAL",0)
    THEN
    RESPONSE #100
    SetGlobal("FirkraagCreve","GLOBAL",1)
    END

    IF
    Global("FirkraagCreve","GLOBAL",1)
    AreaCheck("AR1203")
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("TonItem")
    THEN
    RESPONSE #100
    TakeItemReplace("X","Y",player1)
    DisplayStringHead(Player1,~Vous avez reçu un objet~) //évidemment tu mets le string que tu veux ici
    END

    Par contre, à vérifier mais je pense que l'objet remplacé sera bien détruit.

    Sinon, tu peux aussi jouer avec IF HasItemSlot("NomduMec",numéro du slot)





    Bon, je reviens demain, voir si j'ai pas raconté trop de conneries XD Je répondrai aux autres questions.

    EDIT: Bonjour! Alors, j'ai relu un peu plus attentivement

    Le problème de FillSlot, c'est que le script prendra n'importe quel objet dans l'inventaire qui puisse être équipé dans ce slot. Tu as essayé ActionOverride(Player1,EquipItem("TonItem")? Je ne sais pas si ça marche, je n'ai jamais testé.


    Bon, je ne suis pas du tout une pro en script de zone, mais je pense qu'il vaut mieux réserver les modifs de scripts de zone aux créations de creatures. J'utilise un trigger Dead dans un script de zone dans mon mod et ça fonctionne, mais c'est pour faire apparaitre une créature (après la mort de Mulahey). Donc oui, je pense qu'il vaut mieux affecter les scripts d'actions de creature aux créatures.



    [/COLOR]
    Merci pour ton intervention Pélagie, j'essaye ça de suite

    EDIT:
    IF
    Dead("SHADRA01")
    PartyHasItem("EL[S]F")
    Global("DragOmbreCreve","GLOBAL",0)
    THEN
    RESPONSE #100
    SetGlobal("DragOmbreCreve","GLOBAL",1)
    END

    IF
    Global("DragOmbreCreve","GLOBAL",1)
    AreaCheck("AR1402")
    Kit(Player1,ELRIN_DRAGOSH)
    THEN
    RESPONSE #100
    TakeItemReplace("EL[SH]S2","EL[F]SC",player1)
    SetGlobal("DragOmbreCreve","GLOBAL",0)
    END


    Ca marche parfaitement une fois appliqué à l'AREA, je vais voir si je peux l'appliquer à la créature.

    Un grand merci à toi Pélagie

    EDIT 2: Je confirme qu'à moins de pouvoir donner la priorité à un script dans un fichier BCS, je suis obligé de mettre le script au début du fichier BCS. Ce n'est pas grave, je vais passer par les fichiers AREA.BCS pour faire ce que je veux.

    J'ai juste besoin de trouver la commande WEIDU pour ajouter un script à une AREA n'en ayant pas.
    Dernière modification par Faust ; 31/07/2017 à 09h30.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  5. #5
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Contente d'avoir pu t'aider.

    Pourquoi ça te pose problème de mettre le script en début de fichier en fait? Ça bloque quelque-chose?
    Sinon, tu as une commande pour ça, à mettre dans le Tp2:
    EXTEND_top~LeScriptExistantEnJeu.bcs~ ~TonMod\CheminduFichier\TonScriptàRajouter.baf~

    Sinon, pour l'AREA, tu es sûr qu'elle n'a pas de script??? Ça me semble étrange, une map sans script. Elle en a forcément une s'il y a des créature dessus, non? Attends, je vais vérifier.

    EDIT: tu parles bien de l'area1402? Elle a bien un script. Ou de quelle area parles-tu?

    Par contre, simple curiosité, pourquoi refixes-tu la variable "DragOmbreCreve" à 0 à la fin du script? J'ai peur que ça fasse retourner le premier bloc dans le vide (celui justement du switch de variable) quand tu te trouves sur la zone
    Dernière modification par Pélagie ; 31/07/2017 à 10h06.
    Demi-elfe aquatique

    Groupie de Bioware

  6. #6
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Contente d'avoir pu t'aider.

    Pourquoi ça te pose problème de mettre le script en début de fichier en fait? Ça bloque quelque-chose?
    Sinon, tu as une commande pour ça, à mettre dans le Tp2:
    EXTEND_top~LeScriptExistantEnJeu.bcs~ ~TonMod\CheminduFichier\TonScriptàRajouter.baf~

    Sinon, pour l'AREA, tu es sûr qu'elle n'a pas de script??? Ça me semble étrange, une map sans script. Elle en a forcément une s'il y a des créature dessus, non? Attends, je vais vérifier.
    Ajouter un script en début de fichier ne me dérange pas, je vais essayer de modifier le script que tu m'as donné pour l'appliquer aux créatures, mais si ça ne fonctionne pas correctement car trop long, je veux ajouter le script à l'AREA concernée (AR1203 n'a pas de fichier BCS lié -> General, sur la droite SCRIPT NAME est vide, et je n'ai aucun fichier nommé AR1203.BCS).
    Dernière modification par Faust ; 31/07/2017 à 10h00.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  7. #7
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Citation Envoyé par Faust Voir le message
    Ajouter un script en début de fichier ne me dérange pas, je vais essayer de modifier le script que tu m'as donné pour l'appliquer aux créatures, mais si ça ne fonctionne pas correctement car trop long, je veux ajouter le script à l'AREA concernée (AR1203 n'a pas de fichier BCS lié -> General, sur la droite SCRIPT NAME est vide, et je n'ai aucun fichier nommé AR1203.BCS).
    AR1203 a bien un script AR1203.bcs chez moi (mais je suis sur BG2EE, il y a peut-être des différences avec ta version???):

    IF
    Dead("firkra02")
    TriggerOverride("firkra02", NumTimesTalkedToGT(0))
    Global("CloseFirkraagHimself","AR1203",0)
    THEN
    RESPONSE #100
    EraseJournalEntry(15724)
    AddJournalEntry(22917,QUEST_DONE)
    SetGlobal("CloseFirkraagHimself","AR1203",1)
    END

    J'ai édité mon post précédent avec une autre question, tu n'as pas dû la voir, je te demandais pourquoi tu refixais ta variable à 0 à la fin de ton script
    Demi-elfe aquatique

    Groupie de Bioware

  8. #8
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Sinon, pour affecter un script à une zone, tu fais comme ça dans le tp2:

    Compile ~cheminDeTonScript~

    puis,

    COPY_EXISTING ~AR1203.are~ ~override~
    WRITE_ASCII 0x248 ~TonScript~ #8

    Mais vérifie vien que la zone en question n'a pas déjà de script, sinon le script de base ne tournera plus et ça risque de créer des complications.

    Le problème aussi de cette commande (merci Freddy, si tu passes par là ) c'est que cela rendra ton mod incompatible avec les autres mods qui auront eux aussi affectés un script à cette zone.
    Dernière modification par Pélagie ; 31/07/2017 à 10h26.
    Demi-elfe aquatique

    Groupie de Bioware

  9. #9
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Contente d'avoir pu t'aider.

    Pourquoi ça te pose problème de mettre le script en début de fichier en fait? Ça bloque quelque-chose?
    Sinon, tu as une commande pour ça, à mettre dans le Tp2:
    EXTEND_top~LeScriptExistantEnJeu.bcs~ ~TonMod\CheminduFichier\TonScriptàRajouter.baf~

    Sinon, pour l'AREA, tu es sûr qu'elle n'a pas de script??? Ça me semble étrange, une map sans script. Elle en a forcément une s'il y a des créature dessus, non? Attends, je vais vérifier.

    EDIT: tu parles bien de l'area1402? Elle a bien un script. Ou de quelle area parles-tu?

    Par contre, simple curiosité, pourquoi refixes-tu la variable "DragOmbreCreve" à 0 à la fin du script? J'ai peur que ça fasse retourner le premier bloc dans le vide (celui justement du switch de variable) quand tu te trouves sur la zone
    Citation Envoyé par Pélagie Voir le message
    AR1203 a bien un script AR1203.bcs chez moi (mais je suis sur BG2EE, il y a peut-être des différences avec ta version???):

    IF
    Dead("firkra02")
    TriggerOverride("firkra02", NumTimesTalkedToGT(0))
    Global("CloseFirkraagHimself","AR1203",0)
    THEN
    RESPONSE #100
    EraseJournalEntry(15724)
    AddJournalEntry(22917,QUEST_DONE)
    SetGlobal("CloseFirkraagHimself","AR1203",1)
    END

    J'ai édité mon post précédent avec une autre question, tu n'as pas dû la voir, je te demandais pourquoi tu refixais ta variable à 0 à la fin de ton script
    Ah, je suis sur BG2 Vanilla, c'est pour ça.

    "DragOmbreCreve" à 0 à la fin du script car je continuais à recevoir l'objet sans fin dans l'inventaire.

    Ce n'est pas vraiment un script de créature, actuellement je veux que le personnage ayant mon kit reçoive l'arme et les dons que lui procure la mort du Dragon.

    Je viens d'essayer ce script sur dans le fichier BCS de Firkraag (DRAGRED.BCS):

    IF
    Die()
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("el[h]lmA")
    THEN
    RESPONSE #100
    TakeItemReplace("el[f]sc","el[h]lmA",Player1)
    END

    Mais rien ne se produit, en revanche avec:

    IF
    Die()
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[S]1")
    THEN
    RESPONSE #100
    TakePartyItem("el[h]lmA") // No such index
    DestroyItem("el[h]lmA") // No such index
    ActionOverride(Player1,CreateItem("el[f]sc",1,0,0)) // casque
    ActionOverride(Player1,FillSlot(SLOT_HELMET))
    END

    Ca fonctionne. Le problème c'est que je veux que le monstre applique le script à tout les personnages, et qu'il y a un autre script avec d'autres conditions que je dois appliquer. Après avoir tout mis ça ne fonctionne pas correctement.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  10. #10
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Sinon, pour affecter un script à une zone, tu fais comme ça dans le tp2:

    Compile ~cheminDeTonScript~

    puis,

    COPY_EXISTING ~AR1203.are~ ~override~
    WRITE_ASCII 0x248 ~TonScript~ #8

    Mais vérifie vien que la zone en question n'a pas déjà de script, sinon le script de base ne tournera plus et ça risque de créer des complications.

    Le problème aussi de cette commande (merci Freddy, si tu passes par là ) c'est que cela rendra ton mod incompatible avec les autres mods qui auront eux aussi affectés un script à cette zone.
    Oui c'est justement ce que je veux éviter de faire, dans l'ideal je touche pas au Fichier AREA, mais je lance le script EXTEND_BOTTOM si le script existe ou j'associe celui présent dans mon répertoire s'il n'existe pas dans le dossier BG2, mais je ne suis pas certains que ce soit possible.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  11. #11
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Citation Envoyé par Faust Voir le message
    Ah, je suis sur BG2 Vanilla, c'est pour ça.

    "DragOmbreCreve" à 0 à la fin du script car je continuais à recevoir l'objet sans fin dans l'inventaire.
    Je te conseille alors de passer la variable à 3, pour éviter que faire tourner le premier bloc dans le vide.

    Le problème c'est que je veux que le monstre applique le script à tout les personnages


    Kit([ANYONE],ELRIN_DRAGOSH), par contre du coup ça ne marchera qu'avec TakeItemReplace en action ensuite

    Et pour rajouter un script à une zone qui n'en aurait pas, regarde mon post précédent, nos réponses se sont croisées

    EDIT:
    ou j'associe celui présent dans mon répertoire s'il n'existe pas dans le dossier BG2, mais je ne suis pas certains que ce soit possible.
    C'est justement ce que fait cette commande, elle associe un script à un fichier ARE, sans modifier l'are en question. Cependant, si un moddeur a la même idée (appliquer un script à la zone), le script du dernier mod des deux a avoir été installé prédominera sur l'autre.

    'il y a un autre script avec d'autres conditions que je dois appliquer.

    quel script supplémentaire veux-tu rajouter?
    Dernière modification par Pélagie ; 31/07/2017 à 10h53.
    Demi-elfe aquatique

    Groupie de Bioware

  12. #12
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Sinon, pour affecter un script à une zone, tu fais comme ça dans le tp2:

    Compile ~cheminDeTonScript~

    puis,

    COPY_EXISTING ~AR1203.are~ ~override~
    WRITE_ASCII 0x248 ~TonScript~ #8

    Mais vérifie vien que la zone en question n'a pas déjà de script, sinon le script de base ne tournera plus et ça risque de créer des complications.

    Le problème aussi de cette commande (merci Freddy, si tu passes par là ) c'est que cela rendra ton mod incompatible avec les autres mods qui auront eux aussi affectés un script à cette zone.
    Citation Envoyé par Pélagie Voir le message
    Je te conseille alors de passer la variable à 3, pour éviter que faire tourner le premier bloc dans le vide.



    Kit([ANYONE],ELRIN_DRAGOSH), par contre du coup ça ne marchera qu'avec TakeItemReplace en action ensuite

    Et pour rajouter un script à une zone qui n'en aurait pas, regarde mon post précédent, nos réponses se sont croisées

    EDIT:

    C'est justement ce que fait cette commande, elle associe un script à un fichier ARE, sans modifier l'are en question. Cependant, si un moddeur a la même idée (appliquer un script à la zone), le script du dernier mod des deux a avoir été installé prédominera sur l'autre.


    quel script supplémentaire veux-tu rajouter?

    Voici le script complet pour Firkraag:

     Cliquer ici pour révéler le texte


    Dans BG2 il n'y a pas d'ordre pour tuer le Dragon D'ombre ou Firkraag, du coup il a fallu que je prenne ça en compte. En fonction de l'objet que possède le personnage ayant le kit, l'un des deux objets sera donné. Ca appliqué à tout les membres de l'équipe rend le script long.

    Ah d'accord. Il doit bien exister une commande WEIDU qui permet d'appliquer une action en fonction de la présence d'un fichier.

    Après Comme tu dis, le problème viendra alors du mod installé après le mien qui ne vérifie pas le présence d'un fichier
    Dernière modification par Faust ; 31/07/2017 à 11h16.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  13. #13
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Pour ne pas ralentir le script, tu as essayé de jouer avec les variables, en décomposant ton script?

    IF
    Dead("SHADRA01")
    Global("DragOmbreCreve","GLOBAL",0)
    PartyHasItem("TonItem1")
    THEN
    RESPONSE #100
    SetGlobal("DragOmbreCreve","GLOBAL",1)
    END

    IF
    Global("DragOmbreCreve","GLOBAL",1)
    THEN
    RESPONSE #100
    Tes Actions pour remplacer l'objet 1

    Puis tu refais pour les autres objets

    IF
    Dead("SHADRA01")
    Global("DragOmbreCreve","GLOBAL",0)
    PartyHasItem("TonItem2")
    THEN
    RESPONSE #100
    SetGlobal("DragOmbreCreve","GLOBAL",2)
    END

    IF
    Global("DragOmbreCreve","GLOBAL",2)
    THEN
    RESPONSE #100
    Tes Actions pour remplacer l'objet 2

    Sinon pour vérifier l'existence d'un fichier en jeu, dans le tp2:


    ACTION_IF FILE_EXISTS_IN_GAME ~AR1203.bcs~ THEN BEGIN
    tes actions... extend bottom et tout ça
    BUT_ONLY_IF_IT_CHANGES


    ou bien au contraire

    ACTION_IF NOT FILE_EXISTS_IN_GAME ~AR1203.bcs~ THEN BEGIN
    COPY_EXISTING ~AR1203.bcs~ ~override~
    WRITE_ASCII 0x248 ~TonScript~ #8

    Par contre, je ne suis pas DU TOUT une pro en fichier TP2, sur le sujet Freddy pourra t'aider beaucoup mieux que moi







    Dernière modification par Pélagie ; 31/07/2017 à 12h11.
    Demi-elfe aquatique

    Groupie de Bioware

  14. #14
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Pour ne pas ralentir le script, tu as essayé de jouer avec les variables, en décomposant ton script?

    IF
    Dead("SHADRA01")
    Global("DragOmbreCreve","GLOBAL",0)
    PartyHasItem("TonItem1")
    THEN
    RESPONSE #100
    SetGlobal("DragOmbreCreve","GLOBAL",1)
    END

    IF
    Global("DragOmbreCreve","GLOBAL",1)
    THEN
    RESPONSE #100
    Tes Actions pour remplacer l'objet 1

    Puis tu refais pour les autres objets

    IF
    Dead("SHADRA01")
    Global("DragOmbreCreve","GLOBAL",0)
    PartyHasItem("TonItem2")
    THEN
    RESPONSE #100
    SetGlobal("DragOmbreCreve","GLOBAL",2)
    END

    IF
    Global("DragOmbreCreve","GLOBAL",2)
    THEN
    RESPONSE #100
    Tes Actions pour remplacer l'objet 2

    Sinon pour vérifier l'existence d'un fichier en jeu, dans le tp2:


    ACTION_IF FILE_EXISTS_IN_GAME ~AR1203.bcs~ THEN BEGIN
    tes actions... extend bottom et tout ça
    BUT_ONLY_IF_IT_CHANGES


    ou bien au contraire

    ACTION_IF NOT FILE_EXISTS_IN_GAME ~AR1203.bcs~ THEN BEGIN
    COPY_EXISTING ~AR1203.bcs~ ~override~
    WRITE_ASCII 0x248 ~TonScript~ #8

    Par contre, je ne suis pas DU TOUT une pro en fichier TP2, sur le sujet Freddy pourra t'aider beaucoup mieux que moi







    Merci pour le mal que tu te donnes

    Je vais faire comme tu dis pour alléger le script.

    Concernant l'application du script sur le fichier AR1203.ARE, même après avoir fait ce que tu m'as dit, DLTCEP indique toujours qu'aucun script n'est lié à la carte.

    Est-il possible d'utiliser une Global Variable qui se déclenche à l'AREA précédente qui permet d'appliquer un script dans l'AREA suivante?

    J'ai essayé en vain avec le script suivant à l'AR1202 à appliquer à l'AR1203:

    IF
    Global("Firkraagdead","GLOBAL",0)
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[S]1")
    THEN
    RESPONSE #100
    SetGlobal("Firkraagdead","GLOBAL",1)
    END

    IF
    Global("Firkraagdead","GLOBAL",1)
    AreaCheck("AR1203")
    Dead("DRAGRED")
    THEN
    RESPONSE #100
    TakeItemReplace("EL[F]SC","EL[H]LMA",Player1) // Ecailles rayonnantes du Dragon Rouge
    SetGlobal("Firkraagdead","GLOBAL",3)
    END


    IF
    Global("Firkraagdead","GLOBAL",0)
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[S]D")
    THEN
    RESPONSE #100
    SetGlobal("Firkraagdead","GLOBAL",1)
    END
    IF

    Global("Firkraagdead","GLOBAL",1)
    AreaCheck("AR1203")
    Dead("DRAGRED")
    THEN
    RESPONSE #100
    TakeItemReplace("EL[F]SC2","EL[SH]S",Player1) // Ecailles rayonnantes du Dragon Rouge
    SetGlobal("Firkraagdead","GLOBAL",3)
    END
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  15. #15
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Ok, c'est normal que le script que je t'ai filé pour rajouter un script à la zone ne fonctionne pas, je t'ai donné un mauvais code.
    0x248 c'est pour filer un override script à une créature

    Essaie plutôt ça dans le Tp2:

    COMPILE ~CheMinDeTonFichier\AR1203.baf~
    COPY_EXISTING ~AR1203.are~ ~override\AR1203.are~
    WRITE_ASCII 0x94 ~AR1203~

    Et n'oublie pas de mettre ton préfixe avant les noms de ton script
    Dernière modification par Pélagie ; 01/08/2017 à 11h05.
    Demi-elfe aquatique

    Groupie de Bioware

  16. #16
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Ok, c'est normal que le script que je t'ai filé pour rajouter un script à la zone ne fonctionne pas, je t'ai donné un mauvais offset.
    0x248 c'est pour filer un override script à une créature

    Essaie plutôt ça dans le Tp2:

    COMPILE ~CheMinDeTonFichier\AR1203.baf~
    COPY_EXISTING ~AR1203.are~ ~override\AR1203.are~
    WRITE_ASCII 0x94 ~AR1203~

    Et n'oublie pas de mettre ton préfixe avant les noms de ton script
    Ca à l'air de marcher pour Near Infinity, le script est lié à l'AREA:

    -ok-near-infinity.jpg

    Merci beaucoup Pélagie!
    Miniatures attachées Miniatures attachées -pb-1203.png  
    Dernière modification par Faust ; 31/07/2017 à 20h40.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  17. #17
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Super

    Bon, essaie d'intégrer le script pour échanger l'item, teste-le, et dis-moi si ça marche
    Demi-elfe aquatique

    Groupie de Bioware

  18. #18
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Super

    Bon, essaie d'intégrer le script pour échanger l'item, teste-le, et dis-moi si ça marche
    De nouveau le même problème, pour la 2ème partie du script, l'objet est créé dans l'inventaire sans être mis au bon emplacement. L'objet devrait être placé dans le slot Helmet mais est mis dans la case la plus à gauche de l'inventaire.


    IF
    Global("SHDWDRG[die]","GLOBAL",0)
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[S]1") // Arme liée magique d'Elrin
    THEN
    RESPONSE #100
    SetGlobal("SHDWDRG[die]","GLOBAL",1)
    END


    IF
    Global("SHDWDRG[die]","GLOBAL",1)
    AreaCheck("AR1402")
    Dead("SHADRA01") // Thaxll'ssillyia
    THEN
    RESPONSE #100
    TakeItemReplace("EL[SH]S","EL[H]LMA",Player1) // Ecailles rayonnantes du Dragon d'Ombre
    SetGlobal("SHDWDRG[die]","GLOBAL",3)
    END


    IF
    Global("SHDWDRG[die]","GLOBAL",0)
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[F]SC") // Arme liée magique d'Elrin
    THEN
    RESPONSE #100
    SetGlobal("SHDWDRG[die]","GLOBAL",1)
    END


    IF
    Global("SHDWDRG[die]","GLOBAL",1)
    AreaCheck("AR1402")
    Dead("SHADRA01") // Thaxll'ssillyia
    THEN
    RESPONSE #100
    TakeItemReplace("EL[SH]S2","EL[F]SC",Player1) // Ecailles rayonnantes du Dragon d'Ombre
    SetGlobal("SHDWDRG[die]","GLOBAL",3)
    END


    Peut importe quelle est la créature qui donne l'objet placé en deuxième partie du script, la même chose se passe:

    IF
    Global("FIRKRAAG[die]","GLOBAL",0)
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[S]1") // Arme liée magique d'Elrin
    THEN
    RESPONSE #100
    SetGlobal("FIRKRAAG[die]","GLOBAL",1)
    END


    IF
    Global("FIRKRAAG[die]","GLOBAL",1)
    AreaCheck("AR1203")
    Dead("FIRKRA02") // Dragon rouge
    THEN
    RESPONSE #100
    TakeItemReplace("EL[F]SC","EL[H]LMA",Player1) // Ecailles rayonnantes du Dragon Rouge
    SetGlobal("FIRKRAAG[die]","GLOBAL",3)
    END


    IF
    Global("FIRKRAAG[die]","GLOBAL",0)
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[S]D") // Arme liée magique d'Elrin
    THEN
    RESPONSE #100
    SetGlobal("FIRKRAAG[die]","GLOBAL",1)
    END


    IF
    Global("FIRKRAAG[die]","GLOBAL",1)
    AreaCheck("AR1203")
    Dead("FIRKRA02") // Dragon rouge
    THEN
    RESPONSE #100
    TakeItemReplace("EL[F]SC2","EL[SH]S",Player1) // Ecailles rayonnantes du Dragon Rouge
    SetGlobal("FIRKRAAG[die]","GLOBAL",3)
    END


    Je vais réduire le nombre de caractère sur le nom des armes, peut-être ce à cause de ça. Il m'arrivait la même chose avec les sorts composés de 8 lettres, le sort restait dans ma barre de magie.

    EDIT: Non, pas ça non plus.
    Dernière modification par Faust ; 31/07/2017 à 22h40.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

  19. #19
    Date d'inscription
    juillet 2004
    Localisation
    In my wonderland
    Messages 
    209
    Essaie peut-être

    TakeItemReplace("EL[SH]S","EL[H]LMA",Player1)
    ActionOverride(Player1,EquipItem("
    EL[SH]S")
    Demi-elfe aquatique

    Groupie de Bioware

  20. #20
    Date d'inscription
    avril 2009
    Localisation
    Wherever I may roam
    Messages 
    274
    Citation Envoyé par Pélagie Voir le message
    Essaie peut-être

    TakeItemReplace("EL[SH]S","EL[H]LMA",Player1)
    ActionOverride(Player1,EquipItem("
    EL[SH]S")

    Non plus

    EDIT: Trouvé!

    Il faut changer le nom de la variable à chaque variable différente, malgré des objets différents, je gardais le même nom de variable. Par exemple pour avoir x objet il me fallait x + y et pour y objet il me fallait y + x, mais les deux variables différentes avaient le même nom. En changeant de nom pour ces deux différentes situations on remédie au conflit!



    IF
    Global("SHDWDRG[die]","GLOBAL",0)
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[S]1") // Arme liée magique d'Elrin
    THEN
    RESPONSE #100
    SetGlobal("SHDWDRG[die]","GLOBAL",1)
    END


    IF
    Global("SHDWDRG[die]","GLOBAL",1)
    AreaCheck("AR1402")
    Dead("SHADRA01") // Thaxll'ssillyia
    THEN
    RESPONSE #100
    TakeItemReplace("EL[SH]S","EL[H]LMA",Player1) // Ecailles rayonnantes du Dragon d'Ombre
    SetGlobal("SHDWDRG[die]","GLOBAL",3)
    END



    IF
    Global("SHDWDRG[die]","GLOBAL",0)
    Kit(Player1,ELRIN_DRAGOSH)
    PartyHasItem("EL[F]SC") // Arme liée magique d'Elrin
    THEN
    RESPONSE #100
    SetGlobal("SHDWDRG[die]","GLOBAL",1)
    END


    IF
    Global("SHDWDRG[die]","GLOBAL",1)
    AreaCheck("AR1402")
    Dead("SHADRA01") // Thaxll'ssillyia
    THEN
    RESPONSE #100
    TakeItemReplace("EL[SH]S2","EL[F]SC",Player1) // Ecailles rayonnantes du Dragon d'Ombre
    SetGlobal("SHDWDRG[die]","GLOBAL",3)
    END

    Voilà ce que ça donne après changement:
     Cliquer ici pour révéler le texte


    Merci encore Pélagie!
    Dernière modification par Faust ; 01/08/2017 à 20h40.
    "Wrath is the burden of those who haven't faith in humanity but there's no mean to avoid it. I guess it's my choice, just try to stand it."

    Wherever I May Roam.

Discussions similaires

  1. [SCRIPT] Créature donne un objet si non possédé
    Par Faust dans le forum Scripts
    Réponses: 4
    Dernier message: 28/07/2017, 19h27
  2. Réponses: 0
    Dernier message: 23/06/2017, 21h48
  3. Réponses: 19
    Dernier message: 20/05/2017, 19h47
  4. [CRE] Créature tuée et gain d'XP
    Par Cocrane dans le forum Créatures, Monstres et NPC
    Réponses: 3
    Dernier message: 25/06/2016, 10h39
  5. Réponses: 13
    Dernier message: 02/04/2016, 22h06

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 245 246 247 248 249 250 251 252 253 254 255 256 257