JeuxOnLineForumsPlusConnectés : 643 (sites) | 1219 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > script:l'ethnie vampire RSS
   
Répondre
Partager Outils Rechercher
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
J'ai corrigé le "petit" problème du GetEnteringObject() sur le OnExit, mais je ne comprend pas Miragul : Les effets disparaissent toujours après un repos ?
Si oui, essaie de remplacer "ExtraordinaryEffect" par "SupernaturalEffect" dans le premier script, si ça ne marche toujours pas, c'est assez simple à corriger, mais un peu plus lourd.
Lien direct vers le message - Vieux
Compte #2611
Invité
 
Et non, c'était une chouette idée mais les effets ne restent pas aprés le repos.

De plus, les vampires subissent également des degats la nuit. Je ne vois pas la modification que je peux apporter...

Quelqu'un aurait une idée ?
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Citation:
De plus, les vampires subissent également des degats la nuit. Je ne vois pas la modification que je peux apporter...
Ca c'est impossible, ou alors trois possibilités :
- Tu n'utilises pas mon script, mais quel script utilises-tu ?
- Tu as modifié le script, mais comment ?
- La fonction GetIsDay() a un bug, surprenant que personne ne l'ait rapporté avant dans ce cas....

Pour le problème des effets c'est assez facile à corriger en modifiant le script sur le OnRest, mais j'aimerais bien comprendre cet autre problème d'abord.
Lien direct vers le message - Vieux
Compte #2611
Invité
 
Citation:
- Tu n'utilises pas mon script, mais quel script utilises-tu ?
J'utilise bien ton script, j'en ai d'autre dans le même esprit mais ils ne mélangent pas les vampires et les humains en ce qui concerne les dégats du soleil. C'est pour cela que l'idée "ethnie Vampire" convient parfaitement à mon module.


Citation:
- Tu as modifié le script, mais comment ?
Non, aucune modification, j'ai bien cherché ce qui pouvait cloché mais ce script me semble trés bien. Pourtant je met en test 2 zones, une en Nuit totale, l'autre en jour, en mettant les scripts OnEnter et OnExit, le resultat est le même sur les deux zones, le PJ vampire Grille.

Citation:
- La fonction GetIsDay() a un bug, surprenant que personne ne l'ait rapporté avant dans ce cas....
Oui, j'ai eu beaucoup de mal à faire disparaitre des PNJ de nuit avec cette fonction, on se demande si elle marche vraiment de temps à autre, mais je suis assez novice en programmation, alors...

Citation:
Pour le problème des effets c'est assez facile à corriger en modifiant le script sur le OnRest, mais j'aimerais bien comprendre cet autre problème d'abord.
Oui, si on pouvait passer par le OnRest, ce serai vraiment une solution car tous repose pratiquement là dessus pour le PJ Vampire mais il faut bien penser que juste l'Ethnie "Vampire" est concernée... Il est peut-être possible de prendre la gestion des subrace par le HCR comme exemple, je vais chercher ça.
Lien direct vers le message - Vieux
Avatar de BigBang
BigBang [EverL]
Roi
 
Avatar de BigBang
 
Lightbulb
En ce qui concerne la création d'une nouvelle race par script...
Ayant moi même luté pour tenter celle des Garous, je peu te dire ceci :
Les effects c'est nul... aucune permanence. A la place il vaut mieux passer par des objets de créatures et la tu as encore un problème : la limitation liée au niveau du personnage, à cela tu a 2 solutions (enfin les 2 les plus simples):
-1- Faire une évolution de l'objet en question en fonction du niveau du personnage.
-2- Enlever la limite de niveau, mais attention je ne conseille de faire ceci que si ton module est vraiment très bien équilibré (pas d'objets +5 à tout les coins de rues)
-3- (vi je sais j'avais dit 2 solutions, la 3éme c'est tout simplement d'abandonner l'idée de scripter, de créer une nouvelle race et de ne plus utiliser ethnie) Vas falloir maitriser les Hack ! ! !
Lien direct vers le message - Vieux
Compte #2611
Invité
 
Bon, aprés maintes manipulations du script de Jedaï, j'ai réussis à avoir quelque chose de satisfaisant mais il reste néanmoins un problème majeur.

Voici le nouveau ohb_vampire

Code PHP:
void main(){

    {

        
object oSelf OBJECT_SELF;
        if (
GetIsPC(oSelf) && ((GetIsDawn() == TRUE) || (GetIsDay() == TRUE)) && (GetLocalInt(oSelf ,"bInterieur")==1))
 {
            
ApplyEffectToObject (DURATION_TYPE_INSTANT,EffectDamage1,DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_NORMAL),OBJECT_SELF,1.0);
            
ApplyEffectToObject (DURATION_TYPE_INSTANT,EffectVisualEffect (VFX_FNF_SMOKE_PUFF),OBJECT_SELF,1.0);
        }

    }

    
//Change ici le délai entre chaque exécution du script
    
DelayCommand1.0fExecuteScript"ohb_vampire"OBJECT_SELF )); 
Le problème persiste dans le fait que le GetIsDay se référe au compteur de minute, c'est à dire qu'il peut faire jour au fin fond d'un donjon et bien sûr, le vampire crame dans une area night only. Pour le detail, j'ai aussi modifié l'aspect des brûlures du vampire et le rythme des pertes HP, je trouve cela plus réaliste...

Il ne me reste plus grand chose pour arriver à quelque chose de correct, si quelqu'un pouvait m'aider à faire appliquer les degâts du soleil quand le PJ est au jour et non forcement pendant les heures de journée, je serais vraiment ravis.

Merci beaucoup.
Lien direct vers le message - Vieux
Faelar
Roi
 
Merci beaucoup a tous et j'ai trouvé une solution pour que les effet ne disparaisse pas il suffit de les faire s'exécuter en boucle en mettant ceci:
Code PHP:
DelayCommand5.0fExecuteScript"ethnievampire"OBJECT_SELF)); 
dans le premier script en dessous de:
Code PHP:
ExecuteScript"ohb_vampire"oPC ); 
Lien direct vers le message - Vieux
Faelar
Roi
 
oui c'est encore moi,j'aimerai faire un peu près la même chose pour les loup garou j'ai donc tenté d'adapter le script de vampire au loup garou en le mettant a la suite du script pour vampire mais les effet ne s'applique jamais la nuit et je ne sais pas pourquoi voila le script

Code PHP:
void LoupGarouobject oPC);

void LoupGarouobject oPC){


        if( 
GetStringLowerCaseGetSubRace(oPC) ) == "Loup Garou" && GetIsNight() && !GetLocalIntoPC"night" ) ){


            
ApplyEffectToObjectDURATION_TYPE_PERMANENT,EffectPolymorph(POLYMORPH_TYPE_WEREWOLF),oPC  );
            
ApplyEffectToObjectDURATION_TYPE_PERMANENT,EffectMovementSpeedIncrease(10),oPC);
            
effect eForce ExtraordinaryEffectEffectAbilityIncreaseABILITY_STRENGTH13 ) );
            
effect eDex ExtraordinaryEffectEffectAbilityIncreaseABILITY_DEXTERITY15 ) );
            
effect eInt ExtraordinaryEffectEffectAbilityIncreaseABILITY_INTELLIGENCE10 ) );
            
effect eSag ExtraordinaryEffectEffectAbilityIncreaseABILITY_WISDOM10 ) );
            
effect eChar ExtraordinaryEffectEffectAbilityIncreaseABILITY_CHARISMA10 ) );
            
effect eCon ExtraordinaryEffectEffectAbilityIncreaseABILITY_CONSTITUTION15 ) );
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeForceoPC );
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeDexoPC );
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeIntoPC );
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeSagoPC );
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeCharoPC );
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeConoPC );

            
DelayCommand5.0fExecuteScript"ethnie"OBJECT_SELF));

    }
        if( 
GetStringLowerCaseGetSubRace(oPC) ) == "Loup Garou" && GetIsDay() && !GetLocalIntoPC"Day" ) )
        {
            
effect eForce ExtraordinaryEffectEffectAbilityIncreaseABILITY_STRENGTH13 ) );
            
effect eDex ExtraordinaryEffectEffectAbilityIncreaseABILITY_DEXTERITY15 ) );
            
effect eInt ExtraordinaryEffectEffectAbilityIncreaseABILITY_INTELLIGENCE10 ) );
            
effect eSag ExtraordinaryEffectEffectAbilityIncreaseABILITY_WISDOM10 ) );
            
effect eChar ExtraordinaryEffectEffectAbilityIncreaseABILITY_CHARISMA10 ) );
            
effect eCon ExtraordinaryEffectEffectAbilityIncreaseABILITY_CONSTITUTION15 ) );
            
RemoveEffect(oPC,eForce);
            
RemoveEffect(oPC,eDex);
            
RemoveEffect(oPC,eInt);
            
RemoveEffect(oPC,eSag);
            
RemoveEffect(oPC,eChar);
            
RemoveEffect(oPC,eCon);
            
RemoveEffect(oPC,EffectMovementSpeedIncrease(10));
            
RemoveEffect(oPC,EffectPolymorph(POLYMORPH_TYPE_WEREWOLF));

            
DelayCommand5.0fExecuteScript"ohb_loup"OBJECT_SELF));
  }


j'ai également rajouté ceci dans le script qui vérifiais que c'était un vampire et un joueur qui entrai sur le module

Code PHP:
void main(){

    
//On récupère le PJ qui entre dans le module
    
object oPJ GetEnteringObject();

    if( 
GetIsPCoPJ ) ){

        
//Si c'est un vampire, on lui applique les effets
        
Vampire(oPJ);
        
LoupGarou(oPJ);

    }
//Tu peux mettre ton code "normal" ici :-)

Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
@ Miragul > C'est simple, il suffit que tu fasse la même chose pour les zones nuit permanente que pour les zones intérieures, c'est à dire les scripts OnEnter et OnExit, autre chose, le test GetIsPC() que tu as rajouté est inutile.
Est-ce que tu as toujours ton problème avec les effets ?
Si oui, je te ferais un script pour ton OnRest.

Mark, j'ai l'impression que tu n'as pas très bien compris le principe....
Lien direct vers le message - Vieux
Compte #2611
Invité
 
Merci de ton aide Jedaï, oui, j'ai toujours le problèmes des effets.

Je vais retoucher mon script . En revanche, j'applique les scripts OnEnter et OnExit sur toutes mes zones quelles soit Extérieur Jour/nuit ou Interieur Nuit. C'est ce que tu voulais dire ?
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
T'as vraiment fait des trucs bizarres avec mon script....
Avec mon script originel, tu aurais du mettre les script OnEnter et OnExit sur les zones d'intérieur et de nuit éternelle, mais avec le script que t'as modifié, tu devrais les mettre sur les zones exterieur jour/nuit et c'est tout....

Mais franchement dire qu'on est à l'extérieur quand bInterieur est à TRUE, c'est pas le top....
Je te propose donc les modifs suivantes :
Code PHP:
//Ceci est à mettre dans le OnClientEnter de ton module :

//Une fonction qui vérifie la nature de oPC et lui applique
//des effets spéciaux s'il est un vampire
void Vampireobject oPC );

void Vampireobject oPC ){
    
    if ( 
GetIsPCoPC ) && GetStringLowerCaseGetSubRaceoPC ) ) == "vampire" ){
        
        
effect eCa ExtraordinaryEffectEffectACIncrease(6) );
        
effect eForce ExtraordinaryEffectEffectAbilityIncreaseABILITY_STRENGTH) );
        
effect eDex ExtraordinaryEffectEffectAbilityIncreaseABILITY_DEXTERITY) );
        
effect eInt ExtraordinaryEffectEffectAbilityIncreaseABILITY_INTELLIGENCE) );
        
effect eSag ExtraordinaryEffectEffectAbilityIncreaseABILITY_WISDOM) );
        
effect eChar ExtraordinaryEffectEffectAbilityIncreaseABILITY_CHARISMA) );
        
effect eCon ExtraordinaryEffectEffectAbilityIncreaseABILITY_CONSTITUTION) );
        
//Attention mettre la même périodicité pour les effets que pour le
        //script "ohb_vampire"
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeCaoPC1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeForceoPC1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeDexoPC1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeIntoPC1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeSagoPC1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeCharoPC1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeConoPC1.0f );
        
        
//On lance l'exécution du script qui grillera les vampires imprudents
        //Change ici le délai entre chaque exécution du script
        
DelayCommand1.0fExecuteScript"ohb_vampire" );
        
    }
    
}

void main(){
    
    
//On récupère le PJ qui entre dans le module
    
object oPJ GetEnteringObject();
    
    
//Si c'est un vampire, on lui applique les effets
    
VampireoPJ );

    
    
//Tu peux mettre ton code "normal" ici :-)
    
}


//Script "ohb_vampire"

void main(){
    
    {
        
        
object oSelf OBJECT_SELF;
        
effect eCa ExtraordinaryEffectEffectACIncrease(6) );
        
effect eForce ExtraordinaryEffectEffectAbilityIncreaseABILITY_STRENGTH) );
        
effect eDex ExtraordinaryEffectEffectAbilityIncreaseABILITY_DEXTERITY) );
        
effect eInt ExtraordinaryEffectEffectAbilityIncreaseABILITY_INTELLIGENCE) );
        
effect eSag ExtraordinaryEffectEffectAbilityIncreaseABILITY_WISDOM) );
        
effect eChar ExtraordinaryEffectEffectAbilityIncreaseABILITY_CHARISMA) );
        
effect eCon ExtraordinaryEffectEffectAbilityIncreaseABILITY_CONSTITUTION) );
        
//Attention mettre la même périodicité pour les effets que pour le
        //script "ohb_vampire"
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeCaoSelf1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeForceoSelf1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeDexoSelf1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeIntoSelf1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeSagoSelf1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeCharoSelf1.0f );
        
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeConoSelf1.0f );
        
        if( (
GetIsDawn() || GetIsDay()) && !GetLocalIntoSelf"bInterieur" ) ){
                       
            
ApplyEffectToObject (DURATION_TYPE_INSTANTEffectDamage1DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_NORMAL), oSelf);

            
ApplyEffectToObject (DURATION_TYPE_INSTANT,EffectVisualEffect (VFX_FNF_SMOKE_PUFF), oSelf);
            
            
//Tu peux rajouter des effets spéciaux ou un avertissement si tu veux
            
        
}
        
    }
    
    
//Change ici le délai entre chaque exécution du script
    
DelayCommand1.0fExecuteScript"ohb_vampire" );
    
}


//OnEnter sur une zone d'intérieur ou de nuit éternelle :

void main(){
    
    
object oPJ GetEnteringObject();
    
    if( 
GetIsPCoPJ ) ){
        
        
SetLocalIntoPJ"bInterieur"TRUE );
        
    }
    
    
//Tu peux mettre le reste de ton code ici
    
}

//OnExit sur une zone d'intérieur ou de nuit éternelle :

void main(){
    
    
object oPJ GetExitingObject();
    
    if( 
GetIsPCoPJ ) ){
        
        
DeleteLocalIntoPJ"bInterieur" );
        
    }
    
    
//Tu peux mettre le reste de ton code ici
    

Remplace tous les scripts, j'ai corrigé plusieurs petits trucs.
Ca intègre toutes tes modifications, et je t'assure que si tu fais tous bien comme c'est indiqué, ça marchera !
Lien direct vers le message - Vieux
Compte #2611
Invité
 
Arf, excuse moi Jedaï, il suffit juste de ne pas appliquer les scripts OnEnter et OnExit sur les zones "Safe" pour le vampire, tu as mille fois raison...Désolé du dérangement

J'ai tellement bucher sur ce truc que j'en vient à oublier les évidences...

En tous cas, merci de m'avoir tous mis au propre.

Reste le problème du OnRest maintenant, je vais essayer de repiquer les scripts Subrace des HCR, je crois que la vérité est par là.

EDIT//:Je viens de résoudre le problèmes des effets permanents, ca roule. Merci encore à tous de votre aide.
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > script:l'ethnie vampire
   

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 15h51.
   

© 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