[Script] Phase lunaire

Répondre
Partager Rechercher
Il paraît que ce script ne marche pas, mais je ne vois pas pourquoi, avez vous une idée ?

Il est censé simuler l'influence des phases lunaires sur les mages et les sorciers dans le monde de Krynn je crois...

Dans le OnClientEnter :
Code PHP:

void main()
{
    
object oMagikMan GetEnteringObject();
    
int nMagikClass GetLevelByClassCLASS_TYPE_SORCERERoMagikMan ) +
    
GetLevelByClassCLASS_TYPE_WIZARDoMagikMan );
    if( 
nMagikClass && GetIsPCoMagikMan ) )
    {
        
ExecuteScript"sc_moon"oMagikMan );
    }

Et le script "sc_moon" :
Code PHP:

//script "sc_moon" by Jedaï
void main()
{
    
int nDay GetCalendarDay();
    
object oSelf OBJECT_SELF;
    
int nAbility GetLevelByClassCLASS_TYPE_SORCERER ) > GetLevelByClassCLASS_TYPE_WIZARD ) ?
    
ABILITY_CHARISMA ABILITY_INTELLIGENCE;
    
int nAlign GetAlignmentGoodEviloSelf );
    
effect eShift;
    
// New moon modifications: -1 Saves
    
if( ( nAlign == ALIGNMENT_GOOD && ( 15 <= nDay && nDay 22 ) )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 11 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 15 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 19 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 23 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 27 )
        || ( 
nAlign == ALIGNMENT_EVIL && ( <= nDay && nDay 13 ) )
        || ( 
nAlign == ALIGNMENT_EVIL && ( 22 <= nDay && nDay 25 ) ) )
        
eShift EffectSavingThrowDecreaseSAVING_THROW_ALL);
    
// Moon waxing modifications: +2 Int
    
else if( ( nAlign == ALIGNMENT_GOOD && ( <= nDay && nDay 15 ) )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 10 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 14 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 18 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 22 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 26 )
        || ( 
nAlign == ALIGNMENT_EVIL && ( <= nDay && nDay ) )
        || ( 
nAlign == ALIGNMENT_EVIL && ( 19 <= nDay && nDay 22 ) ) )
        
eShift EffectAbilityIncreasenAbility);
    
// Full moon modifications: +1 Saves, +4 Int
    
else if( ( nAlign == ALIGNMENT_GOOD && ( <= nDay && nDay ) )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 13 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 17 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 21 )
        || ( 
nAlign == ALIGNMENT_NEUTRAL && nDay == 25 )
        || ( 
nAlign == ALIGNMENT_EVIL && ( <= nDay && nDay ) )
        || ( 
nAlign == ALIGNMENT_EVIL && ( 16 <= nDay && nDay 19 ) ) )
        
eShift EffectAbilityIncreasenAbility);

    
ApplyEffectToObjectDURATION_TYPE_TEMPORARYeShiftoSelf20.0 );
    
DelayCommand20.0ExecuteScript"sc_moon"oSelf ) );


Je ne comprend absolument pas pourquoi ça ne marche pas ??
Donc si quelqu'un voulait tester ??
heu... la je dois dire que bioware nous pond des trucs louches qd même........
J'm'explique : A première vu, ton script n'a aucune raison de ne pas marcher............ sauf qu'en faisant des tests, bah je me suis aperçu que le coup du
Code PHP:

if GetIsEffectValid (eShift
bah, il te retournais FALSE Du coup, si tu enlève ce p'tit test, bah y'a plus de problème.

Menfin me demande pas ce qu'attends la fonction "GetIsEffectValid" pour bien daigner retourner TRUE quand on lui met un effet en paramètre
Aaaaahhh...Merci, vraiment

Humm, je crois que ce GetIsEffectValid() a un vrai problème, je m'y étais déjà heurté mais je croyais que c'était limité aux effets visuels... apparemment non...

Bon bah j'édite ce script et je le met dans le persistant, les phases de la lune, c'est périodique, peut-être que quelqu'un d'autre l'utilisera un jour..
Evidemment...Je n'y avais pas pensé plus tôt mais GetIsEffectValid() n'accepte que les effets qui ont déjà été appliqués...

Impossible donc de vérifier que la "construction" d'un effet s'est bien passé, en espérant que ça ne plante pas la machine !
Je me disais bien qu'il existait des fonctions terribles pour les scripts... Et là, faut dire que c'en est une (enfin je trouve)
Quand tu vois pas un de tes super effets se produire, tu peux toujours mettre un script qui te dise : "Rien ne se passe" :mdr

Moratus => Ce script te permet d'affecter des effets aux mages/ensorceleur en fonction de la lune (plus simplement ici en fonction du jour)
En gros suivant la date, et ton alignement, tes abilités seront modifier (-1 en jet de sauvegarde, +2 en intelligence/charisme, ou +4 en intelligence/charisme)
En fait cette fonction sert pour quand on veut supprimer un effet en particulier sur un objet et qu'on boucle dans tous les effets présents sur cet objet.

@ Moratus > L'intérêt de ce script, c'est qu'il t'offre une structure facilement modifiable pour appliquer des effets sur tes joueurs en fonction de facteurs extérieurs (on pourrait même imaginer qu'il prennent en compte le temps qu'il fait....), le tout sans massacrer ton CPU.
Est-ce que ça peut prendre en compte les caractéristiques du PJ comme son alignement et son endurance, sa sagesse etc...?

Parce que si c'est le cas j'avais pensé à un sort/piège qui ressemblerait à peu près à ça:

le joueur traverse une zone définie ou prends un objet maudit et aussitôt est invoqué,créé un double maléfique du joueur, un PNJ qui reprend le nom du PJ, mais si le nom du PJ est "Bordrin Têtedefer" le nom du PNJ donnera" Bordrin Evil" ou quelque chose ressemblant. Le PNJ ainsi créé attaque automatiquement son double, après bien entendu avoir lancé une phrase type du style"Je suis ton double noir, tu vas périr de ta main!".

Si le PJ est Loyal Bon, le PNJ lui sera son opposé, probablement Mauvais Bon.

Je me demandais si s'était faisable sous NWN, donc si j'ai bien compris ce script pourrait être proche de ce que je recherche.
L'opposé de Loyal c'est Chaotique et l'opposé de Bon, c'est mauvais. L'opposé de Loyal Bon est donc Chaotique mauvais. Je crois (pas sur...) que l'opposé de Neutre, c'est Neutre !
Non, non, c'est pas du tout ce qu'il te faut, ce script est prévu pour avoir une influence tout au long du séjour du PJ sur le serveur, si tu veux il permet d'affiner le système de jeu, un peu comme mon script de fatigue.

Par contre je peux te dire que jusqu'ici, presque tous ceux qui ont eu l'idée "double maléfique" (et ils sont nombreux) ont renoncé, faute d'outils appropriés.
Cependant avec l'arrivée de la 1.28 et de la fonction CopyObject(), ça vaut le coup d'essayer... Certains ont-ils déjà essayé cette fonction sur un PJ (je crois pas que ça marche mais bon...). Même si ça marche pas, on pourra toujours copier l'équipement du PJ, à voir...hum..
Salut, moi je me demandai s'il était possible d'adapter ce script pour qu'en faite les PJs sous l'ethnie drow bénéficient de bonus ou malus selon le D&D (des bonus et malus que je ne connais pas d'ailleurs :P) mais seulement la nuit biensur.

Merci :-)
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés