La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 01/05/2025 07:29:06


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 07/07/2005 09:31:56 Sujet du message : Script pour Doppelganger

Bonjour à tous.
Mon problème du jour est assez complexe. Je souhaite créer pour mon module un Doppelganger, c'est une créature qui a la possibilité de changer d'apparence et de prendre celle de celui qui est en face d'elle.
Pour cela j'avais penser à recuperer le script du Miroir dans le donjon de HOU. Le script crée une copie du joueur qui a déclanché le script.

Pour mon module je prend une créature quelconque, et dans le "OnPerception" j'y ai placer mon script (qui ne fonctionne pas tout a fait comme je le voudrais), en voici le code :
NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

Voici ce qui se passe :
Dés qu'un PJ arrive ma créature disparais mais c'est Deux copie du personnage au lieu d'une seule qui apparait, je ne comprend pas pourquoi.

Autre problème : La créature qui apparait a un panel de script par defaut. comment faire pour que je puisse assigner à ma copie un panel de script de mon choix ?

Merci de votre aide.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ailesnoires
Grand Chevalier
Inscrit le: 21 Oct 2004
Messages: 110
Localisation: Vendée
Répondre en citant
Posté le : 08/07/2005 11:50:09 Sujet du message :

C'est pas une histoire de perception :
Visuel et auditive?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Elandil2
Chevalier
Inscrit le: 14 Fév 2005
Messages: 97
Localisation: sur mon ordi loir-et-cher
Répondre en citant
Posté le : 09/07/2005 16:45:38 Sujet du message :

Exacte, il faut rejouter ceci :

NWScript :

void main()
{

object oPC = GetLastPerceived();
object oDoppel=OBJECT_SELF;
location lDoppel =GetLocation(oDoppel);
if(GetLastPerceptionSeen(oPC))
    {
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(471),lDoppel);
    DestroyObject(oDoppel);
    object oCopie =CopyObject(oPC, lDoppel,OBJECT_INVALID,"COPIE");
    ChangeToStandardFaction(oCopie, STANDARD_FACTION_HOSTILE);
    AssignCommand(oCopie, ClearAllActions());
    AssignCommand(oCopie, ActionEquipMostDamagingMelee());
    DelayCommand(1.5, AssignCommand(oCopie, ActionAttack(oPC)));
    }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

Logiqument, celui la devrai ne créer qu'une copie ...
_________________
Rejoignez nous sur notre forum
Aelor, module en construction
Vive Gimli

 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 15/07/2005 10:23:49 Sujet du message :

merci mais en fait ton script ne fonctiopnne pas, le getlasperceptionseen renvoit en fait un integer, donc dans la condition il fauv verifier que cet integer est bien egal à 1.

Voici une version modifié du script que j'avais proposer

NWScript :
//:Confused///////////////////////// /////////////////////
//:: Name  Doppelganger
//:: Copyright (c) 2001 Bioware Corp.
//:Confused///////////////////////// ////////////////////
/*
    Script a placer dans le onperception d'une crature
    Copie l'apparence d'une crature.
    Le script detruit tout les items et l'or de la copie afin de ne pas devenir une mine d'or pour les aventuriers...
*/

//:Confused///////////////////////// ////////////////////
//:: Created By: Seth de Sombrelune
//:: Created On: 15/07/05
//:Confused///////////////////////// ////////////////////
void main()
{

object oPC = GetLastPerceived(); //recherche du model
object oDoppel=OBJECT_SELF; // le Doppelganger
location lDoppel =GetLocation(oDoppel);

if(GetLastPerceptionSeen()==1) // des qu'il appercois un pJ ou une autre crature
    {
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(471),lDoppel);//le changement de forme
    DestroyObject(oDoppel);
    object oCopie =CopyObject(oPC, lDoppel,OBJECT_INVALID,"COPIE");
    ChangeToStandardFaction(oCopie, STANDARD_FACTION_HOSTILE);
    AssignCommand(oCopie, ClearAllActions());
    ////////////////////////////// ////////////////////////////// //////////////////
    // Partie du script que j'aurais aimer placer dans le ondeath de la crature //
    ////////////////////////////// ////////////////////////////// //////////////////
    object oItem = GetFirstItemInInventory(oCopie); // destruction des items de la copie
    while (GetIsObjectValid(oItem) == TRUE)
        {
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oCopie);
        }
    int iGold = GetGold(oCopie); // destruction de l'or de la copie
    TakeGoldFromCreature(iGold, oCopie, TRUE);
    ////////////////////////////// ////////////////////////////// /////////////////
    ////////////////////////////// ////////////////////////////// /////////////////
    AssignCommand(oCopie, ActionAttack(oPC));
    }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Ici la créature dupliqué attaque la première créature apperçus en prenant sa forme.
Je prend soins de vider l'inventaire de la créature.
J'aurais aimer pouvoir asigner un autre script dans le on death de la créature dupliquée, afin de lui detruire tout les items dont elle est équipée et eventuellement lui refiler un script particulier dans le onspawn. si quelqun a une idée....
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 21/07/2005 13:38:19 Sujet du message :

Tu enleve les items de l'inventaire, il reste ceux dans les emplacements tu peus dire par script de pas les dropper, j'ai vu une fonction SetDropable je crois.je vais me pencher la dessus. autre chose essaie de rendre sa forme initial a la créature a sa mort et un certain temps apres avoir finis le combat.
_________________
La mort n'est rien seul le fait de mourir est terrible
Henry Fielding 1745

Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 21/07/2005 18:13:29 Sujet du message :


BenGorre a écrit :
autre chose essaie de rendre sa forme initial a la créature a sa mort et un certain temps apres avoir finis le combat.
En fait, c'est mon deuxième problème. POur faire cela c'est tres facile, a condition de pouvoir designer les scripts de la créature copiée. Hors, j'ai chercher et je n'ai pas trouver comment assigner un script dans le OnDeath de la créature. Si je peu pallier au script OnSpawn de la copie en bidouillant celui du OnPerception de la créature original, je suis coincé pour le reste...Sad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ailesnoires
Grand Chevalier
Inscrit le: 21 Oct 2004
Messages: 110
Localisation: Vendée
Répondre en citant
Posté le : 21/07/2005 18:24:02 Sujet du message :

pourquoi ne pas envoyer la créature originale dans une map "fermé" aux joueurs et la faire revenir par la suite, morte si necessaire
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Seth de Sombrelune
Seigneur
Inscrit le: 10 Jan 2005
Messages: 156
Répondre en citant
Posté le : 21/07/2005 21:06:10 Sujet du message :

simplement parce que les evenements qui se produisent à la mort de la copie doivent être specifier dans le script OnDeath de la copie. La question est :"comment choisir les scripts des evenements de la copie lors de sa création ?"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ailesnoires
Grand Chevalier
Inscrit le: 21 Oct 2004
Messages: 110
Localisation: Vendée
Répondre en citant
Posté le : 22/07/2005 00:24:27 Sujet du message :

il s'agit donc d'un script générique puisque c'est la copie d'un joueur (ni'connais rien les copies).
Tu créés une variable et tu la met en condition dans le script générique, reste à savoir lequel.
Il faut évidement voir à créer un variable localiser avec le tag de la créature.



C'est qu'une idée qui me vient comme ça, je ne sais pas si... enfin voilà je la sort brute de décoffrage.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 42.195ms