JeuxOnLineForumsPlusConnectés : 351 (sites) | 669 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Répondre
Partager Outils Rechercher
Nonolevil
Roi
 
ah ben forcément si ils disent eux meme que ca marche pas .
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Il me semblait vraiment que cette commande avait été débuggée dans un patch il y a un petit moment, mais après moultes recherches, ben j'ai rien pu retrouver.

Enfin bon, un test ne devrait prendre plus de 5 minutes, mais malheureusement je suis atteint d'une très grave maladie : la glandouillose

Si une âme charitable pouvait s'en charger
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Je l'ai testé, et cette fonction renvoit un résultat cumulatif.

Tu peux l'utiliser dans ton script sans problème, mais alors tu ne pourras rien faire intervenir d'autre.

Par exemple:

Code PHP:
void main()
{
 
object oDying GetLastPlayerDying();
 
effect eSaigner EffectHitPointChangeWhenDying(-1.0);
 
ApplyEffectToObject(DURATION_TYPE_PERMANENTeSaigneroDying);

Ton perso va perdre 1 PV par round (6 secondes) et l'effet sera annulé si il reçoit un soin.
La seule chose que tu peux configurer, c'est le nombre de PV perdus (-0.2 voudrait dire 1PV toutes les 30 secondes par exemple).
Le reste, tu ne peux rien faire, à moins de pouvoir modifier la fonction elle-même, mais je ne sais pas où elle se trouve, et si même on peut la modifier....
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Merchi bien

En clair ça peut convenir lorsqu'on veut un script de mort simpliste, mais pour un script un peu plus complexe c'est pas plus compliqué de se charger de la baisse de points de vie soi-même.

Par contre je crois que ce genre de fonction est codé en dur dans l'exécutable, donc je doute que tu puisse modifier quoique ce soit
Les fonctions modifiables de Bioware sont celles qui se trouvent dans les fichiers d'include, par exemple nw_i0_generic.
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Oui j'ai eu beau cherché, celle là ne figurait dans aucun script nw_ , donc aucune chance de savoir réellement ce qu'elle fait (et de la modifier ce qui est bien dommage )
Lien direct vers le message - Vieux
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
j'ai juste une toute petite question avec ce super scrypt, voila quand les joueur sont stabilisé il reprenne pas des pv ??
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
En effet il manque une ligne (que j'ai corrigé sur mon module test mais pas ici, désolé de l'oubli)

Sous la ligne:
Code PHP:
effect eStabilise EffectHeal(nStabilise); 
Ajouter la ligne:
Code PHP:
ApplyEffectToObject(DURATION_TYPE_INSTANTeStabiliseoDying); 

PS: Je compte bien mettre tous mes scripts dans un "package" installable lorsque j'aurais terminé. Si vous avez la patience d'attendre début juin, vous pourrez bénéficier du système complet de règles testé et corrigé (car ce n'est jamais que des scripts de test pour le moment).
Lien direct vers le message - Vieux
Avatar de Zakyrel
Zakyrel
Roi
 
Avatar de Zakyrel
 
bah moi j'attend donc ^^
Lien direct vers le message - Vieux
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
bon désolé pour le temps de la réponse mais j'étais occupé bon pour moi meme avec cette nouvelle ligne sa marche toujours pas
Lien direct vers le message - Vieux
Avatar de Nek
Nek
Alpha & Oméga
 
Avatar de Nek
 
Le script marche très bien, mais il si ton personnage n'a pas été soigné alors qu'il s'est stabilisé, c'est du à ceci:
Si sa constitution a été décrue, et que son "bonus" de constitution soit égal ou inférieur à -2.
Le nombre de PV soigné est alors négatif, vu qu'il résulte de la somme de deux variables: nRecup et nBonusCon.

Exemple:

-Ton perso a 12 de constitution
-Il se prend un critique d'une araignée et rate son jet de vigueur contre le poison
-Sa constitution passe à 6, son "Bonus" de Constitution est donc un malus: -2
-Lorsqu'il se stabilise, le script le "soigne" de 1 - 2 = -1
Lien direct vers le message - Vieux
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
merci beaucoup sa marche très bien vous êtes une championne
Lien direct vers le message - Vieux
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
bon j'ai fais des essaie j'ai une constite de 16 donc un bonus de plus 3 je réussis bien les jets de vigueurs mais au lieu de gagné pv j'en pers



//Nombre de PV perdus par round
int nAgonie = 3;
//Nombre de PV gagnes par round en etant stabilise
int nRecup = 4;
//Delai en secondes entre la perte de PV (6.0 = 1 round)
float fDelai = 2.0;
//DC du Jet de Vigueur permettant de se stabiliser
int nDCFort = 13;
//% de chance d'etre stabilise (entre 1 et 6; 6=100%)
int nStab = 4;

void dying(object oDying, effect eSaigner)
{
int nPv = GetCurrentHitPoints(oDying);
if(nPv <= -15)
{
effect eMort = EffectDeath(FALSE, FALSE);
SpeakString("Vous etes mort.");
PlayVoiceChat(VOICE_CHAT_DEATH, oDying);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eMort, oDying);
return;
}
if (oDying != OBJECT_INVALID && nPv > 0)
{
SpeakString("Vous sortez de l'inconscience.");
PlayVoiceChat(VOICE_CHAT_LAUGH, oDying);
ClearAllActions();
return;
}
if (oDying != OBJECT_INVALID && nPv <= 0 && nPv > -15)
{
effect eAntiDmg = EffectDamageImmunityDecrease(DAMAGE_TYPE_MAGICAL, 100);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAntiDmg, oDying, 0.5);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eSaigner, oDying);
SendMessageToPC(oDying, "Vous sombrez dans l'inconscience.");
PlayVoiceChat(VOICE_CHAT_NEARDEATH, oDying);
int nStvig = FortitudeSave(oDying, nDCFort);
int nChanceStab;
switch(nStvig)
{
case 0:
nChanceStab = d10(1);
break;
case 1:
nChanceStab = d6(1);
break;
default:
nChanceStab = d10(1);
break;
}
if(nChanceStab <= nStab)
{
int nBonusCon = GetAbilityModifier(ABILITY_CONSTITUTION, oDying);
int nStabilise = (nBonusCon + nRecup);
SendMessageToPC(oDying, "Vous etes stabilise.");
effect eStabilise = EffectHeal(nStabilise);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eStabilise, oDying);
}
else
{
DelayCommand(fDelai, dying(oDying, eSaigner));
}
}
}

void main()
{
object oDying = GetLastPlayerDying();
effect eSaigner = EffectDamage(nAgonie);
PlayVoiceChat(VOICE_CHAT_HEALME, oDying);
DelayCommand(fDelai, dying(oDying, eSaigner));
}
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
les balises stp ^^
Lien direct vers le message - Vieux
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
balises ??? c'est quoi???
Lien direct vers le message - Vieux
Avatar de Archamedes_Fr
Archamedes_Fr
Alpha & Oméga
 
Avatar de Archamedes_Fr
 
Code PHP:
//Nombre de PV perdus par round
int nAgonie 3;
//Nombre de PV gagnes par round en etant stabilise
int nRecup 4;
//Delai en secondes entre la perte de PV (6.0 = 1 round)
float fDelai 2.0;
//DC du Jet de Vigueur permettant de se stabiliser
int nDCFort 13;
//% de chance d'etre stabilise (entre 1 et 6; 6=100%)
int nStab 4;

void dying(object oDyingeffect eSaigner)
{
    
int nPv GetCurrentHitPoints(oDying);
    if(
nPv <= -15)
    {
        
effect eMort EffectDeath(FALSEFALSE);
        
SpeakString("Vous etes mort.");
        
PlayVoiceChat(VOICE_CHAT_DEATHoDying);
        
ApplyEffectToObject(DURATION_TYPE_INSTANTeMortoDying);
        return;
    }
    if (
oDying != OBJECT_INVALID && nPv 0)
    {
        
SpeakString("Vous sortez de l'inconscience.");
        
PlayVoiceChat(VOICE_CHAT_LAUGHoDying);
        
ClearAllActions();
        return;
    }
    if (
oDying != OBJECT_INVALID && nPv <= && nPv > -15)
    {
        
effect eAntiDmg EffectDamageImmunityDecrease(DAMAGE_TYPE_MAGICAL100);
        
ApplyEffectToObject(DURATION_TYPE_TEMPORARYeAntiDmgoDying0.5);
        
ApplyEffectToObject(DURATION_TYPE_INSTANTeSaigneroDying);
        
SendMessageToPC(oDying"Vous sombrez dans l'inconscience.");
        
PlayVoiceChat(VOICE_CHAT_NEARDEATHoDying);
        
int nStvig FortitudeSave(oDyingnDCFort);
        
int nChanceStab;
        switch(
nStvig)
        {
            case 
0:
                
nChanceStab d10(1);
                break;
            case 
1:
                
nChanceStab d6(1);
                break;
            default:
                
nChanceStab d10(1);
                break;
        }
        if(
nChanceStab <= nStab)
        {
            
int nBonusCon GetAbilityModifier(ABILITY_CONSTITUTIONoDying);
            
int nStabilise = (nBonusCon nRecup);
            
SendMessageToPC(oDying"Vous etes stabilise.");
            
effect eStabilise EffectHeal(nStabilise);
            
ApplyEffectToObject(DURATION_TYPE_INSTANTeStabiliseoDying);
        }
            else
        {
            
DelayCommand(fDelaidying(oDyingeSaigner));
        }
    }
}

void main()
{
    
object oDying GetLastPlayerDying();
    
effect eSaigner EffectDamage(nAgonie);
    
PlayVoiceChat(VOICE_CHAT_HEALMEoDying);
    
DelayCommand(fDelaidying(oDyingeSaigner));

le code est entre [*PHP] et [*/PHP] sans les *
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > OnPlayerDying
   

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

© 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