JeuxOnLineForumsPlusConnectés : 623 (sites) | 1176 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Trouver sur quelle Area se situe le PJ RSS
   
Répondre
Partager Outils Rechercher
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 

Trouver sur quelle Area se situe le PJ

Voila je cherche si il n'existe pas une fonction qui me pemette de faire ca ou non.

Sinon y a t-il un moyen de faire une boucle pour faire cela.

Merci par avance.
Lien direct vers le message - Vieux
Mercius
Roi
 
Te suffit de mettre un
Code PHP:
GetAera(object oPC); 
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Moui donc il n'y a que ca que je puisse utiliser

Merci de la reponse
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
Citation:
Provient du message de Tyrion
Moui donc il n'y a que ca que je puisse utiliser

Merci de la reponse
Bein, c'est uand même le plus rapide, et le plus efficace.

Sachant qu'en plus, ca te rammene un objet, que tu peut donc expoiter en Sortant son Nom / tag / resref... etc...
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Ok merci eM et Mercius
Lien direct vers le message - Vieux
Zyzko
Roi
 
Je te propose Un Bassin de Prouesse Mentale



Pour l'utiliser Il faut être sorcier ou mago et être Clairvoyant (spell clairvoyance), pour que le bassin ne puisse pas te localiser il faut être protégé par le santuaire (spell sanctuary). héhé !


C'est un peu compliqué mais ça en vaut le cou.

Le script fonctionne à prioris sur tous les plaçables.

T'es prêt c'est partis :


Sur le OnUsed du bassin :

Code:
void main()
{
    object oPC = GetLastUsedBy();
    effect eSpell = GetFirstEffect(oPC);
    while (GetIsEffectValid(eSpell))
    {
        if (GetEffectSpellId(eSpell) == SPELL_CLAIRAUDIENCE_AND_CLAIRVOYANCE)
        {
            ActionStartConversation(oPC);
            return;
        }
        eSpell = GetNextEffect(oPC);
    }
}

ensuite il faut plusieurs autres scripts :


script 1 -

Code:
int StartingConditional()
{

    // Restriction sorcier et mago
    int iPassed = 0;
    if(GetLevelByClass(CLASS_TYPE_SORCERER, GetPCSpeaker()) >= 1)
        iPassed = 1;
    if((iPassed == 0) && (GetLevelByClass(CLASS_TYPE_WIZARD, GetPCSpeaker()) >= 1))
        iPassed = 1;
    if(iPassed == 0)
        return FALSE;

    return TRUE;
}
- script 2

Code:
void main()
{
    object oPC = GetPCSpeaker();
    object oChar = GetFirstPC();
    string sEffect = "plc_solgreen";
    int nAlign = GetAlignmentGoodEvil(oPC);
    if(nAlign == ALIGNMENT_EVIL)
    {
        sEffect = "plc_solred";
    }
    if(nAlign == ALIGNMENT_GOOD)
    {
        sEffect = "plc_solwhite";
    }
    CreateObject(OBJECT_TYPE_PLACEABLE,sEffect,GetLocation(OBJECT_SELF),FALSE);
    effect eVisual = EffectVisualEffect(VFX_DUR_PROT_PREMONITION);
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,eVisual,OBJECT_SELF,0.0);
    effect eEffect;
    string sCount;
    int nCount;
    int nEffect;
    int nSpell;
    int nTrue;
    int nSkill = GetSkillRank(SKILL_SPELLCRAFT,oPC);
    while (GetIsObjectValid(oChar))
    {
        eEffect = GetFirstEffect(oChar);
        while (GetIsEffectValid(eEffect))
        {
            nEffect = GetEffectType(eEffect);
            //Santuaire es tu là ?
            //Tu serais pas DM des fois ?
            if (nEffect == EFFECT_TYPE_SANCTUARY || oChar == oPC || GetIsDM(oChar))
            {
                nTrue = 1;
            }
            nSpell = GetEffectSpellId(eEffect);
            //Et tes dieux te protègent ou pas ?
            if (nSpell == SPELL_PROTECTION_FROM_GOOD && nAlign == ALIGNMENT_GOOD)
            {
                nTrue = 1;
            }
            if (nSpell == SPELL_MAGIC_CIRCLE_AGAINST_GOOD && nAlign == ALIGNMENT_GOOD)
            {
                nTrue = 1;
            }
            if (nSpell == SPELL_PROTECTION_FROM_EVIL && nAlign == ALIGNMENT_EVIL)
            {
                nTrue = 1;
            }
            if (nSpell == SPELL_MAGIC_CIRCLE_AGAINST_EVIL && nAlign == ALIGNMENT_EVIL)
            {
                nTrue = 1;
            }
            //Allez on jette les dés
            if (d20() + nSkill < 20)
            {
                nTrue = 1;
            }
            //Suivant !
            if (nTrue == 1)
            {
                oChar = GetNextPC();
                eEffect = GetFirstEffect(oChar);
            }
            else
            {
                eEffect = GetNextEffect(oChar);
            }
        }
        nCount = nCount + 1;
        //SetLocalInt(OBJECT_SELF,"Divin Count",nCount);
        sCount = IntToString(nCount);
        SetLocalObject(OBJECT_SELF,"Player_" + sCount,oChar);
        oChar = GetNextPC();
    }
    SetLocalInt(OBJECT_SELF,"Num_of_divin",nCount);
}
- script 3

Code:
void main()
{
    int iDivintotal = GetLocalInt(OBJECT_SELF, "Num_of_divin");
    int iCurrentdivin = GetLocalInt(OBJECT_SELF, "PageStartPoint");
    if(iCurrentdivin < 1)
    {
        iCurrentdivin = 1;
    }
    SetLocalInt(OBJECT_SELF, "CeckLine", iCurrentdivin);
    SetLocalInt(OBJECT_SELF, "FirstLine", iCurrentdivin);
    int iSetTokenRange = 2000;
    //Ha Token quand tu nous tiens !
    int iGPCost = GetLocalInt(OBJECT_SELF, "GPResCost");
    SetCustomToken(iSetTokenRange, IntToString(iGPCost));
    object oDivin;
    int iCount = 1;
    while(iCount <= 5)
    {
        if(iCurrentdivin <= iDivintotal)
        {
            oDivin = GetLocalObject(OBJECT_SELF, "Player_" + IntToString(iCurrentdivin));
            SetCustomToken(iSetTokenRange + iCount, GetName(oDivin));
            iCount++; iCurrentdivin++;
        }
        else
        iCount = 6;
    }
    SetLocalInt(OBJECT_SELF, "PageStartPoint", iCurrentdivin);
}
- script 4

Code:
int StartingConditional()
{
    int iDivin = GetLocalInt(OBJECT_SELF, "CeckLine");
    int iDeadTotal = GetLocalInt(OBJECT_SELF, "Num_of_divin");
    if(iDivin <= iDeadTotal)
    {
        SetLocalInt(OBJECT_SELF, "CeckLine", iDivin + 1);
        return TRUE;
    }
    return FALSE;
}
- scripts 5 6 7 8 9

ce sont les même hors mis la 1er ligne que tu modifie légèrement à savoir pour le 5 :

Code:
void main()
{
    int iCurrentDivin = GetLocalInt(OBJECT_SELF, "FirstLine");
    object oPC = GetPCSpeaker();
    object oDivin = GetLocalObject(OBJECT_SELF, "Player_" + IntToString(iCurrentDivin));
    object oArea = GetArea(oDivin);
    string sName = GetName(oDivin);
    string sArea = GetName(oArea);
    effect eVisual;
    if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
    {
        eVisual = EffectVisualEffect(VFX_FNF_LOS_HOLY_30);
    }
    if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL)
    {
        eVisual = EffectVisualEffect(VFX_FNF_LOS_EVIL_30);
    }
    if (GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL)
    {
        eVisual = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
    }
    if (GetIsObjectValid(oDivin))
    {
        ApplyEffectToObject(DURATION_TYPE_INSTANT,eVisual,OBJECT_SELF,0.0);
        AssignCommand(OBJECT_SELF,SpeakString("*Vous voyez " + sName + " dans un endroit connu sous le nom de : " + sArea + "*"));
    }
}
pour le 6 idem sauf donc la 1er ligne qui donne :

Code:
 int iCurrentDivin = GetLocalInt(OBJECT_SELF, "FirstLine") + 1;
pour le 7 c'est donc "+2"
pour le 8 "+3"
pour le 9 "+4"




Maintenant tu fais un jolie dialogue que tu met sur les propriétés avancée de ton bassin, dialogue du genre :

---*Le bassin commence à luire*
(condition d'execution=script1 et action conséquente=script2)

-------J'aimerais localiser quelqu'un
(action conséquente=script3)

-----------Qui voulez vous voir ?

--------------------<CUSTOM2001>
--------------------<CUSTOM2002>
--------------------<CUSTOM2003>
--------------------<CUSTOM2004>
--------------------<CUSTOM2005>
(condition d'execution des 5 lignes précédente=script4 et action conséquente respectivement script 5 6 7 8 9)



ENJOY
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Héhé Sympathique se systeme.

Merci bien
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Ca c'est un joli script, bien foutu, original, efficace Bravo Zyzko

(non non, ce n'est pas du floude, c'est sincère)
Lien direct vers le message - Vieux
Avatar de Prince Nexus
Prince Nexus
Roi
 
Avatar de Prince Nexus
 
Zyzko a la solution, il a la solution contre le shout abusif pour des trucs genre t'es où, tu vas où...

Merci à toi Zyz.
Lien direct vers le message - Vieux
Dalfy De Cayley
Roi
 
Euh pour ça tu as aussi le Disallow Shouting=1 dans le cadre du fichier de configuration du serveur il me semble... méme si c'est sûrement un peu trop radical

Pour les scripts, ils sont vraiment tres interessants et instructif, bravo
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Trouver sur quelle Area se situe le PJ
   

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 22h18.
   

© 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