JeuxOnLineForumsPlusConnectés : 300 (sites) | 502 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Ne pas avoir de double RSS
   
Répondre
Partager Outils Rechercher
Avatar de Ange Musicien
JOL Ange Musicien
Alpha & Oméga
 
Avatar de Ange Musicien
 
Je comprends pas... Tu donnes à ton moine qui commence à 20 PO, 5d4 PO.il devrait arriver entre 25 et 40. Puis tu lui enlèves les GetGold, et ça doit être là que ça coince, tu fais beaucoup d'opération en même temps. Finalement, si ça se trouve tu t'es contenté de lui enlevé 5d4, c'est à dire 5-20, les mêmes. On va procéder autrement.

Déjà isole.
fait :
int nGoldPC = GetGold(oPC);
int nGoldPCNeg = -nGoldPC;
int nGold = STARTING_GOLD + nGoldPCNeg;
GiveGoldToCreature(oPC, nGold);

Ca devrait être mieux. Si ça ne marche toujours pas, refait les étapes une par une. Et pis l'erreur ne vient pas forcément de là... Quand au give, je l'ai utilisé des tas de fois en négatif, et il marche très bien.
Lien direct vers le message - Vieux
Avatar de Fenrhyss
Fenrhyss
Roi
 
Avatar de Fenrhyss
 
Vi TakeGoldFromCreature ne fonctionne que si c'est une créature qui l'exécute. Mais on peut aussi l'exécuter directement en faisant un

Code PHP:
AssignCommand(oPCTakeGoldFromCreature(GetGold(oPC), oPCTRUE)); 
Attention si on veut donner une certaine somme d'or par derrière il faut mettre un petit DelayCommand (1.0 suffit) avec le GiveGoldToCreature sinon la somme en question partira en fumée avec l'or de départ viré par le TakeGoldFromCreature.
Lien direct vers le message - Vieux
Avatar de Asuke
Asuke
Roi
 
Avatar de Asuke
 
Merci pour vos nombreuses réponses mais j'ai toujours des soucis

Pour avoir mon personnage nu dès le départ j'ai utilisé le script d'Archamedes_Fr, marche très bien )
Donc mon problème avec la question 3 est résolu

Par contre là où sa coince beaucoup, c'est avec le script d'Ange Musicien pour la Question 1 (perdre l'objet si on le récupère en double). Car dès le départ, avec le script d'Archamedes_Fr on obtient justement cette objet, mais comme on l'obtiens on le reperd de suite +_+
J'ai aussi essayer de poser cette objet par terre et de le ramasser mais on le perd toujours ... en fait ce qu'il faudrai c'est que le script vérifie si on l'a en plusieurs exemplaire et en laisse 1, ou alors, dès qu'on récupère cette objet, il détruit tous les objets du même tag dans l'inventaire et une fois ceci fait il en redonne 1.

Citation:
Question 4
Soit plus précise... En théorie, si c'est une créature invoquée normale, tu dois modifier le fichier de convocation, ou bien utiliser ton OnHeartBeat (je ne te dis pas l'état de ton CPU à la sortie )... Si c 'est un cas spécial (famillier, ou même une créature issue d'un script autre), alors il faut modifier le script correspondant.
Si tu veux un coup de main la dessus, demande moi, c'est déjà plus compliqué.
C'est une créature invoqué normal, je pense qu'il vaut mieux modifier le fichier de convocation (je sais même pas lequel c'est ).

Voila, merci beaucoup pour vos réponses, j'espère qu'il y en aurai d'autre

Citation:
Voili voilou... Un dernière chose au risque de te faire la morale, essaye de demander un poil plus gentiment la prochaine fois, ça fait toujours plaisir aux personnes qui passent du temps à t'aider et qui ne sont pas obligées
Pourtant j'ai été poli, j'ai dit Salut, @+ j'ai tenté d'être clair et j'ai même utilisé des smileys souriant De plus je respect votre travail car vous aidez vraiment.

PS : Ah oui, je suis un homme
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Code PHP:
void main()
{
    
object oItem GetModuleItemAcquired();
    
string sTag "tag_de_ton_item";
    
    if( 
GetTagoItem ) == sTag )
    {
        
object oPC GetItemPossessoroItem );
        
object oItInv GetFirstItemInInventoryoPC );
        
int nCnt 0;
     
        while( 
GetIsObjectValidoItInv ) )
        {
            if( 
GetTagoItInv ) == sTag )
            {
                
nCnt++;
                
                if( 
nCnt DestroyObjectoItInv );
            }
            
oItInv GetNextItemInInventoryoPC );
        }
    }

Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
de memoire (je n'ai pas acces a nwn, la), le OnDeath des creature invoquées est le fichier nw_ch_ace.nss, je crois.


Ceci etant, c'est assez simple de retourver : tu ouvre le fichier .bif avec le nwn viewer, et tu recherche les familiers ou les invocations dans le fichier template, et tyu aura tout pleins d'info, dont els scripts utilisés par chacunes.
Lien direct vers le message - Vieux
Avatar de Asuke
Asuke
Roi
 
Avatar de Asuke
 
Je pense avoir trouvé mais j'ai un doute après test :/
nw_ch_ace.nss c'est quelque chose pour des portes apparemment. Mais il y a nw_ch_ac7.nss qui concerne la mort, mais le mort des familier et des henchman, je ne sais pas si ils font la différence entre henchman et créatures invoqué, j'ai fait un petit test car j'ai vu le script qui donne des dégâts au PJ lors de la mort d'un familier et je l'ai mis aussi pour le henchman mais aucun effet.
Donc soit c'est pas le bon script, soit je me suis planté

Si ça peut aider voici le contenu du fichier nw_ch_ac7.nss
Code PHP:
//::///////////////////////////////////////////////
//:: Henchman Death Script
//::
//:: NW_CH_AC7.nss
//::
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
//:: <description>
//:://////////////////////////////////////////////
//::
//:: Created By:
//:: Modified by:   Brent, April 3 2002
//::                Removed delay in respawning
//::                the henchman - caused bugs
//:://////////////////////////////////////////////

//::///////////////////////////////////////////////
//:: Greater Restoration
//:: NW_S0_GrRestore.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Removes all negative effects of a temporary nature
    and all permanent effects of a supernatural nature
    from the character. Does not remove the effects
    relating to Mind-Affecting spells or movement alteration.
    Heals target for 5d8 + 1 point per caster level.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Jan 7, 2002
//:://////////////////////////////////////////////
//:: VFX Pass By: Preston W, On: June 20, 2001
#include "nw_i0_generic"
#include "nw_i0_plot"

/*
// * June 1: use RemoveEffects from plot include instead
void GreaterRestore(object oHench)
{
    //Declare major variables
    object oTarget = oHench;
    effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION_GREATER);

    effect eBad = GetFirstEffect(oTarget);
    //Search for negative effects
    while(GetIsEffectValid(eBad))
    {
        if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
            GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
            GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
            GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
            GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
            GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
            GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
            GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
            GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
            GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
            GetEffectType(eBad) == EFFECT_TYPE_CURSE ||
            GetEffectType(eBad) == EFFECT_TYPE_DISEASE ||
            GetEffectType(eBad) == EFFECT_TYPE_POISON ||
            GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
            GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
        {
            //Remove effect if it is negative.
            RemoveEffect(oTarget, eBad);
        }
        eBad = GetNextEffect(oTarget);
    }
   // ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget);
}     */


void BringBack()
{
    
SetLocalObject(OBJECT_SELF,"NW_L_FORMERMASTER"GetMaster());
    
// : REMINDER: The delay is here   for a reason
    
DelayCommand(0.1RemoveEffects(OBJECT_SELF));
    
DelayCommand(0.2ApplyEffectToObject(DURATION_TYPE_PERMANENTEffectResurrection(), OBJECT_SELF));
    
DelayCommand(0.3ApplyEffectToObject(DURATION_TYPE_PERMANENTEffectHeal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF));
    
DelayCommand(5.1SetIsDestroyable(TRUETRUETRUE));
    
object oWay GetObjectByTag("NW_DEATH_TEMPLE");
    if (
GetIsObjectValid(oWay) == TRUE)
    {
        
// * if in Source stone area, respawn at opening to area
        
if (GetTag(GetArea(OBJECT_SELF)) == "M4Q1D2")
        {
            
DelayCommand(0.2JumpToObject(GetObjectByTag("M4QD07_ENTER"), FALSE));
        }
        else
            
DelayCommand(0.2JumpToObject(oWayFALSE));
    }
    else
        
DelayCommand(0.3ActionSpeakString("UT: No place to go"));


}
void main()
{
    
// * This is used by the advanced henchmen
    // * Let Brent know if it interferes with animal
    // * companions et cetera
    
if (GetIsObjectValid(GetMaster()) == TRUE)
    {
        
object oMe GetAssociate(ASSOCIATE_TYPE_HENCHMANGetMaster());
        if (
oMe == OBJECT_SELF
            
// * this is to prevent 'double hits' from stopping
            // * the henchmen from moving to the temple of tyr
            // * I.e., henchmen dies 'twice', once after leaving  your party
            
|| GetLocalInt(OBJECT_SELF"NW_L_HEN_I_DIED") == TRUE)
        {
           
SetPlotFlag(oMeTRUE);
           
SetAssociateState(NW_ASC_IS_BUSYTRUE);
           
AddJournalQuestEntry("Henchman"99GetMaster(), FALSEFALSEFALSE);
           
SetIsDestroyable(FALSETRUETRUE);
           
SetLocalInt(OBJECT_SELF"NW_L_HEN_I_DIED"TRUE);
       
//     RemoveHenchman(GetMaster());
           // effect eRaise = EffectResurrection();
            
ClearAllActions();
            
DelayCommand(0.5ActionDoCommand(SetCommandable(TRUE)));
            
DelayCommand(5.0ActionDoCommand(SetAssociateState(NW_ASC_IS_BUSYFALSE)));

            
DelayCommand(5.0SetPlotFlag(oMeFALSE));

            
BringBack();
            
SetCommandable(FALSE);


        }
        else
        
// * I am a familiar, give 1d6 damage to my master
        
if (GetAssociate(ASSOCIATE_TYPE_FAMILIARGetMaster()) == OBJECT_SELF)
        {
            
// April 2002: Made it so that familiar death can never kill the player
            // only wound them.
            
int nDam =d6();
            if (
nDam >= GetCurrentHitPoints(GetMaster()))
            {
                
nDam GetCurrentHitPoints(GetMaster()) - 1;
            }
            
effect eDam EffectDamage(nDam);
            
FloatingTextStrRefOnCreature(63489GetMaster(), FALSE);
            
ApplyEffectToObject(DURATION_TYPE_PERMANENTeDamGetMaster());
        }
    }

Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Ne pas avoir de double
   

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 03h44.
   

© 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