La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 18/05/2024 08:37:29


  Page 1 sur 2 ¤ Aller à la page 1, 2  Suivante

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 20/03/2006 14:32:38 Sujet du message : condition sur niveau de blessure

Bonjour,

J'ai besoin de faire un script qui me permette d'avoir une action qui se déclenche pendant un combat en fonction du niveau de blessure des opposants :

pour faire simple, dès lors que le joueur ou son adversaire atteind le niveau de "mortellement blessé" ce dernier doit jetter un sort sur le joueur.

Malheureusement je n'ai aucune connaissance en script et je n'ai rien trouvé dans mes recherches (en même temps, je ne sais pas trop par quel bout, ou quel mots clés, m'y prendre..)

toute aide est bienvenue

Nemo

EDIT : si detecter le niveau de blessure n'est pas faisable, est ce qu'on pourrais imaginer faire un respawn immédiat au moement de la mort ("comme s'il était pas mort") et déclencher le sort à cet instant là ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 20/03/2006 18:46:34 Sujet du message :

Pour faire le script faudrai connaître la relation entre la vie maximum du joueur et le pourcentage de vie pour que son status soit en sérieusement blessé.
Je m'explique on va dire que le statue indemme soit StatutIndemme == VieMax(oPC); (c'est fictif) alors il faut trouver StatueSerieusementBlesse < VieMax(oPC)/8 && StatueSerieusementBlesse > VieMax(oPC)/7

Après une fois que tu as la relation tu met dans le OnHeartBeat un script si convient selon la vie des joueurs (tu stock les joueurs combattant dans un SetLocalObject pour pouvoir les retrouver.)

Au fait pour trouver la relation entre la vie maximum d'un joueur et la vie d'un joueur sérieusement tu crée un perso avec 100 de vie. Tu lui retire 1 de vie par 1 de vie, et tu note a quel points de vie le statue "sérieusement blessé" commence et quand il fini Wink.
Hop comme ca tu as une relation sur 100% Smile
Bon là j'ai pas le temps de le faire mais dès que je trouve un temps de libre, j'essayerais.
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 20/03/2006 18:59:48 Sujet du message :

oups, ne te donne pas cette peine, j'ai dit sérieusement blessé car je croyais que ce serait plus simple pour vous, en fait pour moi ce qui compte c'est que le combat touche presque à sa fin, donc si un pourcentage est plus simple à gérer disons 20% ou même 10%.

En fait ce dont j'ai besoin, c'est que le combat dure un peu, puis avant que l'un des deux ne meurent, le NPC va jetter un sort et le joueur doit tomber à terre et rester assomé.

Mais chaque chose en son temps pour l'instant le soucis c'est bien d'interrompre le combat avant que l'un des 2 tombe à 0 HP
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 20/03/2006 19:33:11 Sujet du message :

Ok je vais essayer de te faire ca tu veux me dire comment tu définie les deux personnages qui se combattent ? Par un dialogue, par un OnEnter, c'est a ton choix Wink
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 20/03/2006 21:05:49 Sujet du message :

Tien c'est cadeau (ouay, comme en ce moment je suis sur aucun développement de module j'ai le temps de faire des scripts pour les autres Smile)
Bon c'est assez sobre mais bon ca vaut ce que ca vaut :d !

Crée un PNJ met dans son dialogue.
EN BLEU, les paroles du PNJ
EN VERT, les paroles du joueur.
EN BLANC, les scripts a mettre sur la conversiation (tu trouve les scripts en bas de la page)

Tout d'abord mets "st_arene" sur le OnHeartBeat du PNJ Juge !

Bonjour.
-Je suis venu pour le duel.
--Il n'y a plus de place, désolé. (Conditions d'éxécution : st_if_1et2pret)
--Vous êtes le combattant 2, êtes-vous prêt ? (Conditions d'éxécution : st_if_com_1pret)
---Oui. (Action conséquente : st_compret2)
---Non.
--Vous êtes le combattant 1, êtes-vous prêt ?
---Oui. (Action conséquente : st_compret1)
---Non.

st_arene
NWScript :
void main()
{

object oCombattant1 = GetLocalObject(OBJECT_SELF, "COMBATTANT1");
object oCombattant2 = GetLocalObject(OBJECT_SELF, "COMBATTANT2");

int iVieMaxJ1 = GetMaxHitPoints(oCombattant1);
int iVieMaxJ2 = GetMaxHitPoints(oCombattant2);
int iVieJ1 = GetCurrentHitPoints(oCombattant1);
int iVieJ2 = GetCurrentHitPoints(oCombattant2);

    if(iVieJ1 < iVieMaxJ1/9)
    {
    ActionSpeakString("Hey, ce n'est pas un combat a mort, arretez !");
    ActionCastFakeSpellAtObject(SPELL_GREATER_EAGLE_SPLENDOR, oCombattant1, PROJECTILE_PATH_TYPE_DEFAULT);
    ActionCastFakeSpellAtObject(SPELL_GREATER_EAGLE_SPLENDOR, oCombattant2, PROJECTILE_PATH_TYPE_DEFAULT);
    AssignCommand(oCombattant1, ClearAllActions(TRUE));
    AssignCommand(oCombattant2, ClearAllActions(TRUE));
    DelayCommand(2.0, ActionSpeakString("Le combat est termine, le combattant 2 a gagne."));
    SetLocalInt(OBJECT_SELF, "COMBATTANT1_PRET", 0);
    SetLocalInt(OBJECT_SELF, "COMBATTANT2_PRET", 0);
    DeleteLocalObject(OBJECT_SELF, "COMBATTANT1");
    DeleteLocalObject(OBJECT_SELF, "COMBATTANT2");
    }

    if(iVieJ2 < iVieMaxJ2/9)
    {
    ActionSpeakString("Hey, ce n'est pas un combat a mort, arretez !");
    ActionCastFakeSpellAtObject(SPELL_GREATER_EAGLE_SPLENDOR, oCombattant1, PROJECTILE_PATH_TYPE_DEFAULT);
    ActionCastFakeSpellAtObject(SPELL_GREATER_EAGLE_SPLENDOR, oCombattant2, PROJECTILE_PATH_TYPE_DEFAULT);
    AssignCommand(oCombattant1, ClearAllActions(TRUE));
    AssignCommand(oCombattant2, ClearAllActions(TRUE));
    DelayCommand(2.0, ActionSpeakString("Le combat est termine, le combattant 1 a gagne."));
    SetLocalInt(OBJECT_SELF, "COMBATTANT1_PRET", 0);
    SetLocalInt(OBJECT_SELF, "COMBATTANT2_PRET", 0);
    DeleteLocalObject(OBJECT_SELF, "COMBATTANT1");
    DeleteLocalObject(OBJECT_SELF, "COMBATTANT2");
    }
}
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.


st_compret1
NWScript :
void main()
{
SetLocalInt(OBJECT_SELF, "COMBATTANT1_PRET", 1);
SetLocalObject(OBJECT_SELF, "COMBATTANT1", GetPCSpeaker());
}
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.


st_compret2
NWScript :
void main()
{
SetLocalInt(OBJECT_SELF, "COMBATTANT2_PRET", 1);
SetLocalObject(OBJECT_SELF, "COMBATTANT2", GetPCSpeaker());
}
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.


st_if_com_1pret
NWScript :
int StartingConditional()
{
    if(GetLocalInt(OBJECT_SELF, "COMBATTANT1_PRET") == 1)
        return TRUE;

return FALSE;
}
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.


st_if_1et2pret
NWScript :
int StartingConditional()
{
    if(GetLocalInt(OBJECT_SELF, "COMBATTANT1_PRET") == 1
    && GetLocalInt(OBJECT_SELF, "COMBATTANT2_PRET") == 1)
        return TRUE;

return FALSE;
}
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.


Voilà théoriquement ca devrait marcher Smile. J'ai pas tester mais si il y a un problème ou si tu ne comprend pas quelque chose, ou si tu veux une amélioration dis le. Moi même ou le forum seront prêts à t'aider Razz !
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 20/03/2006 21:27:59 Sujet du message :

Merci beaucoup pour ton aide !! Je testerai très bientôt et je te dirais si tout est ok.

En fait je suis en train de monter un mod (ou plutot une succession de scènes, un peu comme un recit interactif, c'est en fait le final d'un autre mod)

Le combat et ce script constituent quasiment le point culminant donc je me posais pas mal de questions à ce propos, mais je ne suis pas encore arrivé à ce stade, donc je dois encore un peu avancer dans la construction avant de mettre ton script en pratique.

Si tu veux en savoir plus sur l'ensemble de la scène dis le moi et je te raconterais mon project plus en détail Wink

PS : si tu es d'accord, je risque de te solliciter pour deux ou trois autres petits scripts mais juste des enchainements d'actions, rien de conditionnel.

encore merci

Nemo
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 20/03/2006 21:32:32 Sujet du message :

De toute façon ce que je vien de poster (théoriquement ca doit marcher).
Mais juste j'ai pas compris quelque chose, le module c'est un module 1 joueur solo ?
Ou un multijoueur parce que la le script solicite 2 joueurs PJ qui accepte de participer au combat éclenché par le dialogue avec le juge.
Ce n'est pas un joueur qui va combattre un PNJ. Enfin quoi qu'il en soit si tu as des choses a precisé dis le.
Et si tu as de nouveaux scripts non résolvés bah poste les Very Happy
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 21/03/2006 12:39:28 Sujet du message :

aie aie aie... effectivement c'est un mod solo et donc c'est un combat entre le joueur et un NPC, en gros pour simplifier disons que c'est le boss final et voici la séquence d'évenement que je souhaite produire :

le hench du joueur reste sur place et ne participe pas au combat

le joueur s'approche du "monstre" et engage le combat

quand le combat est presque terminé (l'un des deux est à moins de 10% de ses HP) le monstre lance un attaque spéciale (je pensais à un sort style cône de froid ou colonne de feu, voire à un souffle de dragon pour l'effet visuel) et le joueur se retrouve renversé par terre et est sonné : il est à la merci du monstre.

La je voudrais que son épée (une speciale acquise pendant la quête) disparaisse de son inventaire et qu'une à l'aspect identique (mais en réalité boostée à mort) apparaisse à côté de lui

Enfin le hench doit venir ramasser l'épée et attaquer le monstre (si j'ai bien calculé les HP du monstre et les bonus de l'épée : un coup devrait suffire à l'achever)


voilà toute la scene pour laquelle j'ai besoin d'aide... crois tu que ce soit faisable ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 21/03/2006 20:27:11 Sujet du message :

Bah je vais essayer de te faire ça. Ca m'a l'air d'être un bon entraînement Smile !
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 22/03/2006 08:11:07 Sujet du message :

Super !! merci beaucoup de ton aide, et bon courage pour ce script, je surveille ce thread avec impatience pour ta réponse car après ça le reste du mod devrait être bien plus simple en comparaison.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 08:47:34 Sujet du message :

Continue ton mod pendant ce temps. (Le script est pas dur à faire mais j'ai un petit problème sur un point Smile.)

J'ai une question au scripteur qui passerait par la. Quand une créature est en combat comment faire pour que la créateur s'arrête d'attaquer, le PJ aussi et ses créatures (familier par exemple). J'ai essayé pas mal de chose mais c'est sans effet.
les
ClearAllActions(TRUE);
ActionDoCommand puis ClearAllActions(TRUE);
ClearPersonalReputation(...)
ClearNearbyFriendActions(...); (Celui ci marche que pour le monstre devienne passif envers le joueur.)

Merci des éventuelles réponses sinon je continuerai à trouver une solution.
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Sith Vicious
Grand Sage du Conseil
Inscrit le: 19 Oct 2005
Messages: 693
Répondre en citant
Posté le : 22/03/2006 09:39:20 Sujet du message :

Essaye SurrenderToEnemies();
Sinon c'est ClearAllActions (mais aussi pour le PC et ses compagnons du coup) avec un AdjustReputation.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harmelyo
Chevalier
Inscrit le: 06 Oct 2005
Messages: 84
Répondre en citant
Posté le : 22/03/2006 11:52:23 Sujet du message :

si le clearallaction ne fonctionne pas essaye de le placer dans un delay ridicule, il me semble avoir déjà rencontrer un soucis de cet ordre là...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 13:11:30 Sujet du message :


Sith Vicious a écrit :
Essaye SurrenderToEnemies();
Sith ... Je t'aime Smile ca marche.
Par contre dans les commentaires de la command il y a marqué "NPC's enemies within this range to be neutral towards the NPC for roughly 3 minutes." Ca veut dire que le caractère neutre reste que 3 minutes ? (Enfin sur le script en l'occurence c'est pas grave puisque les 3 minutes ne s'écoule pas entre temps mais c'est histoire de curiosité Smile.

P.S: Comme j'ai la commande qui me manquait je terminerait le script dans l'après midi.
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
Dernière édition par -MeteZ- le 22/03/2006 13:13:54; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 13:12:34 Sujet du message :

(Si un modo passe, il peut supprimer ce message, #!q=) de firewall, va falloir que je le règle parce que ca peut plus continuer ^^)
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 22/03/2006 14:02:54 Sujet du message :

trop fort !! merci à toi et à ceux qui sont venus apporter leur concours.

Je n'ai plus qu'a attendre que tu postes le script pour l'essayer (et en plus ça devrait coincider avec mon retour à la maison Wink )

dès que je l'aurai testé je te tiendrais au courant
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 15:31:22 Sujet du message :

Tien le script marche ca rend assez bien au final (j'ai eu du mal Razz)(sauf que je suis désolé mais j'ai pas encore fait pour que le henchman n'attaque pas.)
Tout d'abord dans le henchman du PJ met les scripts :
x0_ch_hen_block
x0_ch_hen_combat
x0_ch_hen_conv
x0_ch_hen_damage
x0_ch_hen_death
x0_ch_hen_distrb
x0_ch_hen_heart
x0_ch_hen_percep
x0_ch_hen_attack
x0_ch_hen_rest
x0_ch_hen_spawn
x0_ch_hen_spell
x0_ch_hen_usrdef

Dans le dialogue du henchman pour qu'il soit engagé tu met dans le Action Conséquente :
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.


Ensuite met le boss en hostile.
Dans ses propriétés met ces deux scripts.
OnPerceveid :
NWScript :
//:Confused///////////////////////// ////////////////////
//:: Name Perception du boss
//:: Filename st_aboss_percept
//:: Created By: -MeteZ-
//
// Si vous desirez modifier/arranger, faire part  //
// de vos appreciations/remarques, n'hesitez pas, //
// a me le faire savoir.*/                      //
////////////////////////////// ////////////////////
/*
    BOSS A TUER :
    Script a mettre dans le OnPerceveid du boss !
    N'oubliez pas de mettre le script "st_aboss_combat"
    Dans le OnCombatRoundEnd du boss sinon ca ne sert a rien !
*/


void main()
{
object oJoueur = GetLastPerceived();
object oBoss = OBJECT_SELF;

if(GetIsPC(oJoueur) == TRUE) // Si on a bien apercu un PJ
{
SetLocalObject(OBJECT_SELF, "ENNEMI_DU_BOSS", oJoueur);

    if(GetLocalInt(OBJECT_SELF, "PERCEPTION") != 1)
    {

// Si le PJ a un henchman
object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oJoueur);
if(oHenchman != OBJECT_INVALID)
{
SetLocalInt(oJoueur, "HENCHMAN", 1);
string sNom = GetName(oHenchman);
FloatingTextStringOnCreature("Vous etes accompagne de " + sNom, oJoueur, FALSE);
SetLocalObject(oJoueur, "ASSOCIE", oHenchman);
// On stock l'objet associe au PJ dans "ASSOCIE" sur le PJ
RemoveHenchman(oJoueur, oHenchman);
// On enleve le henchman
}

    SetLocalInt(OBJECT_SELF, "PERCEPTION", 1); // la perception est faites, tout est bon !
    SetLocalInt(OBJECT_SELF, "COMBAT_TERMINE", 0); // Le combat est pas termine
    ActionSpeakString("Voila mon ennemi, vien te battre seul");
    ActionAttack(oJoueur, FALSE);
    // break : if(GetLocalInt(OBJECT_SELF, "PERCEPTION") != 1)
}
// break : if(GetIsPC(oJoueur) == TRUE

}
}
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.


OnCombatRoundEnd :
NWScript :
//:Confused///////////////////////// ////////////////////
//:: Name Fin de round du boss
//:: Filename st_aboss_combat
//:: Created By: -MeteZ-
//
// Si vous desirez modifier/arranger, faire part  //
// de vos appreciations/remarques, n'hesitez pas, //
// a me le faire savoir.*/                      //
////////////////////////////// ////////////////////
/*
    BOSS A TUER :
    Script a mettre dans le OnCombatRoundEnd du boss !
    N'oubliez pas de mettre le script "st_aboss_percept"
    Dans le OnPerceveid du boss sinon ca ne sert a rien !
*/


#include "nw_i0_plot"

void main()
{
object oJoueur = GetLocalObject(OBJECT_SELF, "ENNEMI_DU_BOSS");
object oHenchman = GetLocalObject(oJoueur, "ASSOCIE");
// D'apres l'ancien script, on a deja verifier si oJoueur est bien PJ
object oBoss = OBJECT_SELF;

if(GetIsDead(oJoueur) == TRUE)
{
// Si le joueur est mort, le boss reprend sa vie
SetLocalInt(OBJECT_SELF, "PERCEPTION", 0); // la perception de st_aboss_percept revien a zero au cas ou ...
RemoveEffects(oBoss);
ActionCastSpellAtObject(SPELL_RESTORATION, oBoss,METAMAGIC_ANY, FALSE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
}

if(GetIsDead(oHenchman) == TRUE)
{
SetLocalInt(OBJECT_SELF, "PERCEPTION", 0); // la perception de st_aboss_percept revien a zero au cas ou ...
}

    if(GetCurrentHitPoints(oBoss) < (GetMaxHitPoints(oBoss)*10)/100) // si le boss n'a plus que 10% de sa vie
    {
        if(GetLocalInt(OBJECT_SELF, "COMBAT_TERMINE") != 1)
        {
    SetLocalInt(OBJECT_SELF, "COMBAT_TERMINE", 1); // le combat est termine
    ActionDoCommand(ActionWait(1.0));
    SurrenderToEnemies();
    ActionDoCommand(ActionWait(1.0));
    ActionSpeakString("Tu est a ma merci, meurt !");
    ActionDoCommand(ActionWait(0.5));
    ActionCastFakeSpellAtObject(SPELL_FIRE_STORM, oJoueur, PROJECTILE_PATH_TYPE_DEFAULT); // Lance le sort
    DelayCommand(3.2, AssignCommand(oJoueur, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 0.0, 10.0))); // Le joueur se retrouve a terre

        // c'est a ce moment que le henchman revient pour sauver le PJ
        if(GetLocalInt(oJoueur, "HENCHMAN_PRESENT") != 1) // Si le henchman n'est pas encore revenu
        {
        DelayCommand(4.0, AddHenchman(oJoueur, oHenchman));
        DelayCommand(4.1, SetLocalInt(oJoueur, "HENCHMAN_PRESENT", 1));
        } // Break : if(GetLocalInt(oJoueur, "HENCHMAN_PRESENT") != 1)

    DelayCommand(4.5, AssignCommand(oHenchman, ActionCastFakeSpellAtObject(SPELL_NEGATIVE_ENERGY_BURST, oBoss, PROJECTILE_PATH_TYPE_DEFAULT))); // Le henchman attaque le boss
    DelayCommand(3.0, AssignCommand(oHenchman, ActionSpeakString("Non !")));
    effect eDamage = EffectDamage(5000, DAMAGE_TYPE_NEGATIVE, DAMAGE_POWER_NORMAL); // 5000 de degats au boss = mort du boss
    DelayCommand(6.5, ActionSpeakString("Aaaaaah !"));
    DelayCommand(6.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oBoss, 0.5)); // On inflige eDamage
        } // Break : if(GetLocalInt(OBJECT_SELF, "COMBAT_TERMINE") != 1)
    // Arret du combat : debut de la fin !
    } // Break : if(GetHitDice(oJoueur) &lt; GetMaxHitPoints(oJoueur)/2)
} // Break : void main()
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.

C'est lorsque le monstre a plus que 10% de ses pvs eh bien il jette un sort : le PJ tombe a terre. Le henchman crie "Non !" et tue le boss avec un sort maléfique.

EDIT :
Tu peux rajoute ce script dans le OnDeath du boss (facultatif) c'est pour supprimer les variables locals qui ont été crée. Comme ca tu limites les erreurs bêtes et les plus dures à trouver comme les conflits de noms.
NWScript :

// OnDeath du Boss

#include "x2_inc_compon"
#include "x0_i0_spawncond"

void main()
{
    int nClass = GetLevelByClass(CLASS_TYPE_COMMONER);
    int nAlign = GetAlignmentGoodEvil(OBJECT_SELF);
    object oKiller = GetLastKiller();

    DeleteLocalInt(OBJECT_SELF, "PERCEPTION");
    DeleteLocalInt(OBJECT_SELF, "ENNEMI_DU_BOSS");
    DeleteLocalInt(OBJECT_SELF, "PERCEPTION");
    DeleteLocalInt(OBJECT_SELF, "COMBAT_TERMINE");
    DeleteLocalObject(GetLastKiller(), "ASSOCIE");
    DeleteLocalInt(GetLastKiller(), "HENCHMAN");

    // If we're a good/neutral commoner,
    // adjust the killer's alignment evil
    if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL))
    {
        AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5);
    }

    // Call to allies to let them know we're dead
    SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK);


    //Shout Attack my target, only works with the On Spawn In setup
    SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);

    // NOTE: the OnDeath user-defined event does not
    // trigger reliably and should probably be removed
    if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
    {
        SignalEvent(OBJECT_SELF, EventUserDefined(1007));
    }
    craft_drop_items(oKiller);
}
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.

_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 22/03/2006 15:49:26 Sujet du message :

c'est presque parfait Razz mais sauf pour la partie ou le hench tue le monstre avec un sort maléfique Crying or Very sad

par rapport à mon "histoire" il faudrait que le joueur perde son épée au moment ou il tombe et que le hench la ramasse pour tuer le monstre avec

j'avais pensé qu'il serait possible de faire disparaitre l'épée de l'inventaire du joueur au moment ou il tombe, et ensuite de faire apparaitre un clone de l'épée à cote de lui à ce moment là

et bien sur quand je vais gérer les propriétés la 2e épée, je m'arrangerai pour que le hench détruise le montre en un coup

est ce que ces modifs sont possibles s'il te plait ?

EDIT : j'ai réfléchi à un truc : le hench est déja au service du joueur au début de la scene, pourrais t'on le faire quitter l'équipe et rester neutre (aller s'occuper d'un blessé à terre par exemple) avant que le combat ne s'engage et ensuite lui faire re-joindre le groupe au moment ou le pc est envoyé par terre par le "boss" ?

eventuellement peux t'on ajouter un effet visuel au moment du sort qui fait tomber le joueur ?

je m'excuse car j'ai l'impression de t'en demander beaucoup... en même temps je sens qu'on est très pret du but Embarassed
Dernière édition par Nemo700 le 22/03/2006 15:59:11; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 15:52:22 Sujet du message :

Ah ouay je vais essayer de te faire ca Smile mais là j'ai le cerveau en bouillie.
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 22/03/2006 16:05:08 Sujet du message :

vraiment merci de tes efforts, j'apprécie beaucoup

comme tu as du voir dans mon dernier "EDIT" j'essaye de simplifier et découper les étapes au maximum, mais comme je n'ai aucune connaissance en script je dis peut etre parfois des "boulettes" ou à l'inverse je n'explique pas un détail qui serait très important pour toi

si mes demandes son mal formulées ou si tu penses qu'un façon de procéder différente serait plus simple à appliquer, dis le moi

encore merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 17:58:48 Sujet du message :

Ok, mais tu m'as pas dit si le script marche déjà ?
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 22/03/2006 19:28:37 Sujet du message :

yes !! je viens de tester et ce que tu prévoyais ce passe exactement comme annoncé, c'est très impressionnant !!

J'espère que tu pourras tenir compte des modifications qui me sont necessaires (j'ai pas de smiley pour "je croise les doigts)

est ce qu'il serait possible de forcer le boss à reculer ou s'écarter un peu juste avant de mourrir ? C'est une très grande créature et.. il tombe sur le joueur (qui est déja allongé à terre)

sinon j'ai une autre petite demande mais très simple elle : je voudrais juste une commande pour un effet visuel : faire apparaitre des notes de musique indiquant qu'un personnage chante (comme quand un barde est en train chanter)

Par contre je n'ai pas de pot ma connexion adsl me joue des tour ce soir et je poste cette réponse depuis ma connexion bas débit payante (snif)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 21:00:58 Sujet du message :


Nemo700 a écrit :
sinon j'ai une autre petite demande mais très simple elle : je voudrais juste une commande pour un effet visuel : faire apparaitre des notes de musique indiquant qu'un personnage chante (comme quand un barde est en train chanter)
Oui, on peut précise quand on le met.

Sinon pour la nouvelle version du script du boss chaque chose en son temps je termine déjà les anciennes modifications qui sont terminés mais j'ai un problème mineur Smile. Rien d'inquiètant.
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Nemo700
Chevalier
Inscrit le: 18 Mar 2006
Messages: 90
Répondre en citant
Posté le : 22/03/2006 21:50:48 Sujet du message :

je te fais confiance pour le script, prend le temps qu'il te faut, de toutes façons vu mes soucis d'adsl je vais aller me coucher et je reviendrais regarder ta réponse demain Wink

Je repense à un truc : quand le hench quitte le joueur pour aller s'occuper d'un blessé, j'ai placé le personnage en question dans la zone et j'ai créé un waypoint a côté de lui qui s'appelle "healnash". Peut etre cela te sera utile pour le script ?

Juste une précision concernant le truc sur l'effet visuel de "chant" : je ne sais pas si je l'ai bien exprimé, mais ce n'a aucun rapport avec le script du "boss", c'est juste un truc que j'ai besoin d'ajouter à un tout autre moment du mod, une hench doit chanter (commencer à la fin d'un dialogue et arrêter au moment ou on change de zone)

bon courage et merci à nouveau
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
-MeteZ-
Seigneur
Inscrit le: 19 Mar 2006
Messages: 205
Localisation: Région Parisienne (95)
Répondre en citant
Posté le : 22/03/2006 22:05:53 Sujet du message :


Nemo700 a écrit :
Juste une précision concernant le truc sur l'effet visuel de "chant" : je ne sais pas si je l'ai bien exprimé, mais ce n'a aucun rapport avec le script du "boss", c'est juste un truc que j'ai besoin d'ajouter à un tout autre moment du mod, une hench doit chanter (commencer à la fin d'un dialogue et arrêter au moment ou on change de zone)
Oui, tu veux dire un effet comme lorsque les bardes font les chants dans le jeu ? Mais il faut que tu me précise quand ce script ce déclenche. Par exemple lors d'un dialogue. (p.s: pour le chant du barde faudrait que tu fasse un nouveau sujet sur le forum parce que après ca devient cafardnahomme (je sais pas comme on l'écrit ^^)).
_________________
"Ne dit pas affronter les ténèbres celui qui n'a jamais connu la tombée de la nuit."
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 2 ¤ Aller à la page 1, 2  Suivante


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 58.858ms