JeuxOnLineForumsPlusCréer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > (Pb) Un Boss invoqué qui invoque lui-même d'autres créatures RSS
   
Répondre
Partager Outils Rechercher
Avatar de Damonya
Damonya
Dauphin
 
Avatar de Damonya
 

(Pb) Un Boss invoqué qui invoque lui-même d'autres créatures

Bonjour j'ai modifié un script initialement fait par jedaï, mais en le changant j'ai dut mal faire certaines choses.

Tout d'abord un petit script dans le On Used d'un levier :

Code PHP:
 void main()
{
  
effect eVis EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);

  
location lLoc GetLocation(GetNearestObjectByTag("Spawncr_invo_slaadfor" ));
  
object oMonstre CreateObject(OBJECT_TYPE_CREATURE,"cr_invo_slaadfor",lLoc,TRUE) ;

  
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD),lLoc);
  
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oMonstre);

Le monstre de Resref = cr_invo_slaadfor apparait sur le point de passage = Spawncr_invo_slaadfor lorsqu'on utilise le levier


Ensuite un script d'appel à ne placer nulle part :


Code PHP:
//Script de Jedai modifie par Damonya

//script "zdm_boss_guerr03"
void Summon(string sTaglocation coffin_loc);
int Random(int nMaxInteger);

void main()
{
    
object oMobb OBJECT_SELF;
    
location lLoc GetLocationGetWaypointByTag"Spawncr_invo_slaadfor" ) );
    if( 
GetIsInCombatoMobb ) )
    {

        
ClearAllActions();
        
ActionCastFakeSpellAtLocationSPELL_SUMMON_CREATURE_IXlLoc );
        
ActionDoCommand(Summon("creature_yamon"lLoc) );
        
//change le délai ici
        
DelayCommand12.0fExecuteScript"zdm_boss_guerr03"oMobb ) );
    }
}
void Summon(string sTaglocation lLoc)
{
        
CreateObject(OBJECT_TYPE_CREATUREsTaglLoc);

Normallement ça permet au boss invoqué, d'invoquer lui-même une créature de Resref creature_yamon toutes les 12 secondes.

Enfin rajouter la fonction execute script dans le On PhysicalAttacqued de la créature qui a pour Resref cr_invo_slaadfor . ce qui donne :

Code PHP:
//::///////////////////////////////////////////////
//:: Default On Attacked
//:: NW_C2_DEFAULT5
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    If already fighting then ignore, else determine
    combat round
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 16, 2001
//:://////////////////////////////////////////////

#include "NW_I0_GENERIC"

void main()
{
    if(!
GetFleeToExit())
    {
        if(!
GetSpawnInCondition(NW_FLAG_SET_WARNINGS))
        {
            if(!
GetIsObjectValid(GetAttemptedAttackTarget()) && !GetIsObjectValid(GetAttemptedSpellTarget()))
            {
                if(
GetIsObjectValid(GetLastAttacker()))
                {
                    if(
GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL))
                    {
                        
//AdjustReputation(GetLastAttacker(), OBJECT_SELF, -100);
                        
SetSummonHelpIfAttacked();
                        
DetermineSpecialBehavior(GetLastAttacker());
                    }
                    else
                    {
                        if(
GetArea(GetLastAttacker()) == GetArea(OBJECT_SELF))
                        {
                            
SetSummonHelpIfAttacked();
                            
DetermineCombatRound();
                        }
                    }
                    
//Shout Attack my target, only works with the On Spawn In setup
                    
SpeakString("NW_ATTACK_MY_TARGET"TALKVOLUME_SILENT_TALK);
                    
//Shout that I was attacked
                    
SpeakString("NW_I_WAS_ATTACKED"TALKVOLUME_SILENT_TALK);
                }
            }
        }
        else
        {
            
//Put a check in to see if this attacker was the last attacker
            //Possibly change the GetNPCWarning function to make the check
            
SetSpawnInCondition(NW_FLAG_SET_WARNINGSFALSE);
        }
    }
    else
    {
        
ActivateFleeToExit();
    }
    if(
GetSpawnInCondition(NW_FLAG_ATTACK_EVENT))
    {
        
SignalEvent(OBJECT_SELFEventUserDefined(1005));
    }


 
ExecuteScript"zdm_boss_guerr03"OBJECT_SELF);


A mon avis j'ai dut me tromper quelque part, dans les deux derniers scripts mais où ?
Lien direct vers le message - Vieux
Avatar de Caarheim/Mougeot
Caarheim/Mougeot [Epsi]
Alpha & Oméga
 
Avatar de Caarheim/Mougeot
 
C'est quoi le probleme
Lien direct vers le message - Vieux
Avatar de Damonya
Damonya
Dauphin
 
Avatar de Damonya
 
Bah le problème il est que ça marche pas. Le boss n'invoque pas d'autres créatures.
Le problème il vient sûrement du script d'appel à ne placer nulle part, car je l'ai fait un peu moi-même et j'en suis pas sûr du tout.
Ou bien il va dans le dernier script ou j'ai rajouté au script par défaut du OnPhysicalAttacqued la ligne :
Code PHP:
ExecuteScript"zdm_boss_guerr03"OBJECT_SELF); 
L'OBJECT_SELF me parait pas bon dedans je crois.

Enfin a dire vrais je sais pas trop où est le problème.
Pas sur le premier script en tout cas.
Lien direct vers le message - Vieux
Avatar de Drak Valer
Drak Valer
Alpha & Oméga
 
Avatar de Drak Valer
 
Code PHP:
ActionCastFakeSpellAtLocationSPELL_SUMMON_CREATURE_IXlLoc );
ActionDoCommand(Summon("creature_yamon"lLoc) ); 
J'essairai bien de mettre un AssignCommand(oMobb,
devant les actions pour voir...
sinon j'essairai aussi d'enlever le ActionDoCommand et de faire juste l'appel de Summon...

voila ...
Lien direct vers le message - Vieux
Avatar de Reyan
Reyan [L.D.D]
Roi / Reine
 
Avatar de Reyan
 
le "ActionDoComamnd" met l'appel "summon" dans la pile d'actions, autrement dit ca n'est pas fais quand le script arrive dessus, mais quand l'action précédente du streum est finie (le "fake spell" )

Et c'est là que le bas blesse, je crois, parce qu'il est occupé le boss, l'a d'autre chat à fouetter, des chats du genre armés et vindicatifs.
Donc moi j'essaireai (jess et ray ?) avec un

Code PHP:
ClearAllActions(1); 
là où il sert, parce que :

// - nClearCombatState: if true, this will immediately clear the combat state
// on a creature, which will stop the combat music and allow them to rest,
// engage in dialog, or other actions that they would normally have to wait for.

maintenant c'est p-e pas ca ^_^

Et le OBJECT_SELF est bon, tout du long on fais executer les scripts au Streum

Et il me semble que le "AssignCommand" ne sert qu'à assigner à des objets n'éxecutant pas le script une actions, donc si l'objets execute le script, pas besoin . . . je crois
Lien direct vers le message - Vieux
Avatar de Damonya
Damonya
Dauphin
 
Avatar de Damonya
 
Code PHP:

//Script de Jedai modifie par Damonya et Slay 
//script "zdm_boss_guerr03" 
void Summon(string sTaglocation coffin_loc); 
int Random(int nMaxInteger); 

void main() 

    
object oMobb OBJECT_SELF
    
location lLoc GetLocationGetWaypointByTag"Spawncr_invo_slaadfor" ) ); 
    if( 
GetIsInCombatoMobb ) ) 
    { 

        
ClearAllActions(); 
        
ActionCastFakeSpellAtLocationSPELL_SUMMON_CREATURE_IXlLoc ); 
         
AssignCommand(GetArea(oMobb), Summon("creature_yamon"lLoc) ); 
        
//change le délai ici 
        
AssignCommand(GetArea(oMobb), DelayCommand12.0fExecuteScript"zdm_boss_guerr03"oMobb )) ); 
    } 

void Summon(string sTaglocation lLoc

        
CreateObject(OBJECT_TYPE_CREATUREsTaglLoc); 

Voila c'était ça en fait qu'il fallait faire. merci Slay pour la correction
pour Drak Valer : c'etait pas loin du tout de ce que tu as proposé
pour Reyan : j'ai pas essayé avec le clearallaction(1). Tu crois que c'est encore mieux ? en effet le but c'est aussi que le boss de départ s'arette de se battre pour regarder sa créature invoqué combattre le Pj comme avec un mage.
Lien direct vers le message - Vieux
Avatar de Reyan
Reyan [L.D.D]
Roi / Reine
 
Avatar de Reyan
 
Il lance le sort tout de suite ? Parce qu'en théorie il devrait aoir du mal à arrêter d'attaquer . . . fin bon à ce que j'en sais

Et je vois pas l'interêt d'assigner le delaycommand à la zone . . . puisque executescript n'est pas une action entré dans la pile, donc pas de pb si il est en combat, et qu'il assign déjà le script au mob . . .

Et là il y a pas vraiment de raison sinon la chance que la création du monstre interviennent juste après le "FakeSpell", donc ba ca peut rendre bizarre nan ?

T'as essayé avec le ClearAllAction(TRUE) ?

rq : la déclaration de la fonction RandomTruc est inutil et ne renvoit à rien ^_^
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > (Pb) Un Boss invoqué qui invoque lui-même d'autres créatures
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 21h40.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite