La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 29/12/2024 19:07:33


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
LtSich
Acolyte
Inscrit le: 11 Mai 2003
Messages: 37
Répondre en citant
Posté le : 11/05/2003 16:36:55 Sujet du message : script pour se faire soigner par quelqu'un

Bonjour, je débute dans les codes, je n'en suis vraiment qu'a mes tout début... Je recherche un moyen de me faire soigner par un prêtre, ou qu'il me donne des bénédictions etc... J'ai un script, le début fonctionne mais le sort lui ne passe pas.. Si vous avez une idée je suis prenneur...

Code :
void main()
{
        SpeakString("test script de soins");
        ActionCastSpellAtObject ( SPELL_CURE_CRITICAL_WOUNDS, GetPCSpeaker());
}


le speakstring fonctionne, mais pas la suite... Je dois me planter quelque part.. Mais où ? Au passage j'ai remarqué qu'apparemment certains script de la campagne n'était pas éditable... Notamment ceux des mercenaires qui m'intérrèsse bcp.. Et aussi, est-il possible d'avoir une liste des "Get" ? Getobjet, getpcspeaker, etc etc... Désolé de vous poser ces questions qui vous sembles simple mais je débutte et j'ai un peu de mal à décoller... Merci à vous.

LtSich
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ak Darkster
Grand Maître Chanteur du Conseil
Inscrit le: 27 Sep 2002
Messages: 1354
Localisation: canada
Répondre en citant
Posté le : 11/05/2003 16:44:22 Sujet du message :

Euh, je m'y connais pas trop en NWScripts, mais l'espace avant SPELL, ça pourrait pas être ça, le problème?
_________________
On doit tous mourir un jour... mais pour moi, c'est pas demain la veille, alors sort tes armes sale dragon!!!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
LtSich
Acolyte
Inscrit le: 11 Mai 2003
Messages: 37
Répondre en citant
Posté le : 11/05/2003 18:51:16 Sujet du message : je comprend pas :(

Code :
void main()
{
    object oPC = GetPCSpeaker();
    ActionCastFakeSpellAtObject(SPELL_GREATER_RESTORATION, oPC);
}


si je mets ça (au dessus), ça ne marche pas... si je mets ça (en dessous), ça passe..

Code :
void main()
{
    object oPC = GetPCSpeaker();
    GiveGoldToCreature(oPC, 100);
}



Pourquoi ça passe pour l'argent et pas pour le spell ? Et evidemment j'ai pareil avec henchman... Je ne vois pas où peux être l'erreur dans mon code... help...

LtSich
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 11/05/2003 20:07:44 Sujet du message :

(Mets des balises [ code] et [ /code] quand tu mets du code Laughing c plus clair)

Si tu utilises ActionCastFakeSpell ça risque pas de fonctionner : comme son nom l'indique ActionCastFAKESpell lance un FAUX sort, juste l'effet visuel et sonore associé au sort.

Pour le script à proprement parler, il existe qque part dans le jeu, je sais plus comment il s'appelle, mais je te remets ça :

Code :
void FakeRestore(object oTarget);

void main()
{
// les déclarations ci dessous définissent les objets à soigner
        object oPC = GetPCSpeaker();
        object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oPC);
        object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oPC);
        object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oPC);
        object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED,oPC);
        object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oPC);
        ActionPauseConversation();
        ActionCastFakeSpellAtObject(SPELL_GREATER_RESTORATION, OBJECT_SELF);
        ActionDoCommand(FakeRestore(oPC));
        if(GetIsObjectValid(oHenchman))
        {
                ActionDoCommand(FakeRestore(oHenchman));
                // Vérifie s'il a une potion de restoration critique sur lui, sinon, le crée.
                if (!GetIsObjectValid(GetItemPossessedBy(oHenchman,"NW_IT_MPOTION003")))
                {
                        CreateItemOnObject("NW_IT_MPOTION003",oHenchman,3);
                }
        }
        if(GetIsObjectValid(oAnimal))
        {
                ActionDoCommand(FakeRestore(oAnimal));
        }
        if(GetIsObjectValid(oFamiliar))
        {
                ActionDoCommand(FakeRestore(oFamiliar));
        }
        if(GetIsObjectValid(oDominated))
        {
                ActionDoCommand(FakeRestore(oDominated));
        }
        if(GetIsObjectValid(oSummoned))
        {
                ActionDoCommand(FakeRestore(oSummoned));
        }
        ActionResumeConversation();
}

void FakeRestore(object oTarget)
{
//définition des effets négatifs à analyser
        effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION_GREATER);

        effect eBad = GetFirstEffect(oTarget);
        //Cherche les effets négatifs
        while(GetIsEffectValid(eBad))
        {
                if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
                GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
                GetEffectType(eBad) == EFFECT_TYPE_CURSE ||
                GetEffectType(eBad) == EFFECT_TYPE_DISEASE ||
                GetEffectType(eBad) == EFFECT_TYPE_POISON ||
                GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
                GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
                {
                        //Et annulation de ceux-ci.
                        RemoveEffect(oTarget, eBad);
                }
                eBad = GetNextEffect(oTarget);
        }
        if(GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD)
        {
                //Applique les effets
                int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
                effect eHeal = EffectHeal(nHeal);
                if (nHeal > 0)
                ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
        }
        ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget);
}


Voilà, ça correspond à peu près au script d'Aribeth dans la campagne officielle du jeu.

Bye !
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
LtSich
Acolyte
Inscrit le: 11 Mai 2003
Messages: 37
Répondre en citant
Posté le : 11/05/2003 21:14:42 Sujet du message : merci

ça fonctionne en effet. Il est juste dommage que je ne sache pas pourquoi mon script ne fonctionnait pas... Pis que ce n'est pas moi qui est écrit le code ce qui fait que je ne sais pas trop pourquoi ça marche, mais je vais chercher. Merci bcp en tout cas, ça va bien me dépanner.

LtSich
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 11/05/2003 22:34:22 Sujet du message :

Ak Darkster> l'espace est ignoré.

pour la liste des fonctions ainsi que ce qu'elles font tu as en anglais le Lexicon (qui doit sûrement être traduit pas quelqu'un ...) http://www.reapers.org/nwn/reference/

sinon, une question bête, est ce que le prêtre avait le sort ?
car avec les varaibles par défaut de ta fonction, il faut que le prêtre puisse lancer le sort pour qu'il le fasse !

si tu veux absolument qu'il ne fasse que lancer un sort, essaye ça :

Code :

void main()
{
  object oPC = GetPCSpeaker();
  ActionCastSpellAtObject(SPELL_GREATER_RESTORATION, oPC, METAMAGIC_ANY, TRUE);
}
Dernière édition par Wololo le 11/05/2003 23:38:21; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 11/05/2003 22:43:53 Sujet du message :

Là n'est pas la question LtSich : ce script est dans son ensemble assez complexe, donc regarde le et de proche en proche et par imitation tu pigeras comment il fonctionne.

Pour en revenir au CastFakeSpell, je redis ce que j'ai déjà dit : cette commande permet d'assigner un FAUX effet magique : seuls les éléments visuels et sonores sont présents et pas les effets correspondants au sort. Donc je crois que le pnj ait ou n'ait pas sort ne change rien à l'affaire. Le PJ a l'impression que le pnj lance un sort (il incante, il lève les bras etc.) mais il n'y a aucun effet, juste du visuel. C'est pour faire joli Smile
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Wololo
Légende vivante
Inscrit le: 13 Déc 2002
Messages: 385
Répondre en citant
Posté le : 11/05/2003 23:39:40 Sujet du message :

tu as raison, j'ai corrigé le code !
Mais la premier code posté par LtSich n'avait pas de Fake !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Cassin
Papa-poule(t) & poissard intemporel
Inscrit le: 16 Sep 2002
Messages: 7471
Localisation: 6 bis rue de la Couveuse, Poulailler 39b
Répondre en citant
Posté le : 12/05/2003 08:05:45 Sujet du message : Re: script pour se faire soigner par quelqu'un


LtSich a écrit :
Et aussi, est-il possible d'avoir une liste des "Get" ? Getobjet, getpcspeaker, etc etc...
Pour ça rien de plus facile : dans l'éditeur de script, tape "Get" dans la zone de texte en haut à droite et il va te sortir toutes les commandes contenant "get" (c'est très pratique pour trouver ce qui nous intéresse). Wink

A part ça, pour ton premier script qui ne se lançait pas, ça doit être un problème de syntaxe, tu n'as pas mis tous les paramètres dans la ligne de commande. Bon, normalement on y est pas obligés (c'est sensé se faire tout seul Wink ), mais je te conseille de mettre les paramètres par défaut plutôt que de les zapper, ça n'en marchera que mieux...
(pour voir les paramètres possibles pour une commande, tape la commande dans la ligne de texte en haut et/ou sélectionne la commande dans la liste, il t'indiquera tout ce que tu peux faire avec en bas)


Bienvenu dans le monde merveilleux des scripts Wink



EDIT : et pour ta question concernant les henchmen, j'avais fait il y a pas mal de temps un sujet récapitulant les scripts à mettre sur le PNJ, il est si ça peut t'aider Wink
_________________
Aventure ! Camaraderie ! Et acier sur acier ! Les ingrédients légendaires ! Hein Bouh ?

http://cassin1306.spaces.live.com
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
LtSich
Acolyte
Inscrit le: 11 Mai 2003
Messages: 37
Répondre en citant
Posté le : 12/05/2003 20:08:55 Sujet du message : merciiiiii

merci merci merci Smile C'est vraiment sympas Smile c'est super Smile Vraiment merci Smile ça marche, c tt beau, tt joli, tt magnifique Smile Encore merci Smile

LtSich
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 12/05/2003 21:06:18 Sujet du message :

Hahaha ! Cassin t'as fait un heureux là Wink
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur 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 35.172ms