La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/09/2024 12:22:55


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
xelone
Acolyte
Inscrit le: 21 Aoû 2003
Messages: 39
Répondre en citant
Posté le : 19/11/2003 20:19:43 Sujet du message : [prob] help fusion de script

j'ai trois scripts a mettre dans le OnClientEnter, peut-on m'aider a fusionner tout ca? voici les script :

NWScript :

#include "fix_deco_reco"
void main()

{
   
    object oPC=GetEnteringObject();
    fix_deco_reco_enter(oPC);
}
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.


NWScript :

// Verifie si les joueurs n'ont pas trop d'ecart de lvl dans un groupe(ici 5lvl)

void FireAMember(object oAVirer, object oLeader)
{
    string report;

    if (GetIsPC(oAVirer))
        SendMessageToPC(oAVirer,"Votre niveau ne vous permet pas d'appartenir a ce groupe");
    SendMessageToPC(oLeader,GetName(oAVirer)+" doit quitter le groupe.");
    if (GetIsPC(oAVirer))
        {
        report="[PARTY] "+GetName(oAVirer)+ " a ete ejecte du groupe!";
        RemoveFromParty(oAVirer);
        effect eVisualEffect=EffectVisualEffect(VFX_FNF_NATURES_BALANCE);
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVisualEffect, oAVirer, 4.0);
        }
    else
        {
        effect eDeath=EffectDeath(TRUE, TRUE); // Mort spectaculaire
        report="[PARTY] "+GetName(oAVirer)+ " a donc ete desintegre !";
        ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oAVirer);
        }
    WriteTimestampedLogEntry(report);
    SendMessageToAllDMs(report);
}

void PCLoop()
{
        object oPC = OBJECT_SELF;
        object oLeader = GetFactionLeader(oPC);
        int iDelay;
        if (oPC == oLeader) // Desormais, traitement effectue seulement sur les leaders (evite de retraiter souvent les gros groupes)
            {
            object oMinFaction = GetFactionWeakestMember(oPC, FALSE);
            object oMaxFaction = GetFactionStrongestMember(oPC, FALSE);
            if (oMinFaction!=oMaxFaction && GetIsObjectValid(oMinFaction) && GetIsObjectValid(oMaxFaction)) // PJ seul ou erreur -> aucun traitement
                {
                int iLvMin = GetHitDice(oMinFaction);
                int iLvMax = GetHitDice(oMaxFaction);
                int iMinPCLevel = iLvMax-5; //lv5: lv 2 mini - lv10: 6 mini  - lv15: 10 mini - lv20: 13 mini
                int iMinNPCLevel = iLvMax-5-iLvMax/3; //lv5: lv 1 mini - lv10: 2 mini  - lv15: 5 mini  - lv20: 9 mini

                if (iLvMin < iMinPCLevel) // Il y a peut-etre des membres a exclure (sauf si animaux)
                    { // Il faut exclure le membre le plus faible
                    string report="[PARTY] Groupe illegal: "+GetName(oMinFaction)+ " est lv"+IntToString(iLvMin)+", "+GetName(oMaxFaction)+" est lv"+IntToString(iLvMax);
                    int bFound = FALSE;
                    if (GetHitDice(oLeader)<iMinPCLevel)
                            {
                            WriteTimestampedLogEntry(report);
                            FireAMember(oMaxFaction, oLeader);
                            bFound = TRUE;
//                          DelayCommand(2.0, PCLoop());    // Loop again
//                          return;
                            }
                    else
                        {
                        object oCurrentMember = GetFirstFactionMember(oLeader,FALSE);
                        while (GetIsObjectValid(oCurrentMember) && !bFound) // On en vire un seul a la fois au maximum
                                    {
                                    int iHD = GetHitDice(oCurrentMember);
                                    if (GetIsPC(oCurrentMember) && GetIsPlayableRacialType(oCurrentMember)) // PJ ( distinguer d'un familier, pour lequel GetIsPC est... TRUE !
                                        {
                                        if (iHD<iMinPCLevel)
                                            {
//                                            if (!bFound)
  //                                                  {
                                                    bFound = TRUE;
                                                    WriteTimestampedLogEntry(report);
    //                                                }
                                            FireAMember(oCurrentMember, oLeader);
                                            }
                                        }
                                    else // NPC
                                        {
                                        if (iHD<iMinNPCLevel)
                                            {
//                                            if (!bFound)
  //                                              {
                                                bFound = TRUE;
                                                WriteTimestampedLogEntry(report);
//                                                }
                                            FireAMember(oCurrentMember, oLeader);
                                            }
                                        }
                                    if (!bFound) oCurrentMember = GetNextFactionMember(oCurrentMember, FALSE); // Inutile si le membre est deja detruit
                                    }
                        }
                    if (bFound)
                        iDelay = 4; // Leader groupe en infraction -&gt; on recommence rapidement
                    else
                        iDelay = 12; // Leader groupe avec plus de 4 lv mais OK -&gt; groupe a surveiller
                    }
                else
                    iDelay = 20; // Leader groupe OK (4 lv au plus) -&gt; surveillance relachee
                }
            else // joueur seul ou erreur
                iDelay = 10; // Pas trop long, car convocation bestioles a surveiller
            }

    else // Pas un leader (membre d'un groupe non leader)
        iDelay = 60; // Surveillance tres relachee

  DelayCommand(iDelay/2.0+Random(iDelay),PCLoop()); // On boucle entre iDelay/2 et iDelay*3/2 secondes plus tard (limiter le lag + eviter d'etre trop previsible)
}

void main()
{
  if (GetIsDM(OBJECT_SELF))
    { // Rien  faire dans le cas d'un DM
/*    if (GetLocalObject(GetModule(), "No_Sanction")==1) // Sanctions actives

    if (GetLocalObject(GetModule(), "No_Sanction")!=1) // Sanctions actives
        {
        object item = GetObjectByTag("bm_nosanc tion",0);
        if (GetIsObjectValid(item))
            {
            SetLocalObject(GetModule(), "No_Sanction_Item", item);
            SetLocalObject(GetModule(), "No_Sanction", 1);
            }
        }*/

    }
else
  // Player Loop - introduction delai variable - execute seulement la premire fois
  if (GetIsPC(OBJECT_SELF))
        DelayCommand(10.0+Random(300)/10.0,PCLoop());

}

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.


NWScript :

void main()

{

object oPC = GetEnteringObject();

if !GetIsPC(oPC)

{

    return();

}

if HasItem(oPC, "anneau1")

{

   

    AdjustReputation(oPC,GetObjectByTag("tagpnjbon "), 100);

    //Les PNJ de l'autre camp sont ses ennemis.

    AdjustReputation(oPC,GetObjectByTag("tagpnjmauvais"),-100);

    object oPJ = GetFirstPC();

    {

        if HasItem(oPJ, "anneau2")

        {

            SetPCDislike(oPC,oPJ);

        }

        oPJ = GetNextPC();

    }

}

if HasItem(oPC, "anneau2")

{

   

    AdjustReputation(oPC,GetObjectByTag("tagpnjmauvais"), 100);

    //Les PNJ de l'autre camp sont ses ennemis.

    AdjustReputation(oPC,GetObjectByTag("tagpnjbon"),-100);

    object oPJ = GetFirstPC();

    {

        if HasItem(oPJ, "anneau1")

        {

            SetPCDislike(oPC,oPJ);

        }

        oPJ = GetNextPC();

    }

}



/* warning: 1 unclosed block {} */
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.


et meme chose avec le OnAcquireItem :

NWScript :

void main()
{

if !GetIsPC(oAcquirer)
{
    return();
}
if GetTag(oItem) = "anneau1"
{
   
    AdjustReputation(oAcquirer,GetObjectByTag("tagpnjbon "), 100);
    //Les PNJ de l'autre camp sont ses ennemis.
    AdjustReputation(oAcquirer,GetObjectByTag("tagpnjmauvais"),-100);
    object oPJ = GetFirstPC();
    {
        if HasItem(oPJ, "anneau2")
        {
            SetPCDislike(oAcquirer,oPJ);
            SetPCDislike(oPJ,oAcquirer);
        }
        oPJ = GetNextPC();
    }
    return();
}
if GetTag(oItem) = "anneau2"
{
   
    AdjustReputation(oAcquirer,GetObjectByTag("tagpnjmauvais "), 100);
    //Les PNJ de l'autre camp sont ses ennemis.
    AdjustReputation(oAcquirer,GetObjectByTag("tagpnjbon"),-100);
    object oPJ = GetFirstPC();
    {
        if HasItem(oPJ, "anneau1")
        {
            SetPCDislike(oAcquirer,oPJ);
            SetPCDislike(oPJ,oAcquirer);
        }
        oPJ = GetNextPC();
    }
    return();
}
}
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.


et
NWScript :


#include "i_tagtests"

void main()
{

object oItem = GetModuleItemAcquired();
object oAcquirer = GetItemPossessor(oItem);

if (GetIsNoDrop(oItem))
ExecuteScript("s_nodrop_pickup", oAcquirer);

if (GetIsLore(oItem))
ExecuteScript("s_lore_pickup", oAcquirer);
}

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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Gorkk
Site Admin
Inscrit le: 12 Sep 2002
Messages: 1768
Localisation: Ici et ailleurs
Répondre en citant
Posté le : 20/11/2003 13:09:25 Sujet du message :

Normalement c'est pas bien compliqué :

1/ Renommer les variables utilisées dans plusieurs des scripts pour éviter les conflits
2/ mettre tous les include au début
3/ copier dans le void main du premier script les informations contenues dans le void main des deux autres.

A priori ça devrait marcher nickel
_________________
Sacred - FR - La Bibliothèque de Neverwinter - Titan Quest - FR Cool
Bloqué dans SoU ? La solution n'est pas loin...
HotU vous pose des problèmes ? Une seule solution Wink
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Numéro ICQ 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 63.701ms