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


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Ido
Acolyte
Inscrit le: 28 Juil 2003
Messages: 26
Localisation: France/Aisne(02)/ Picardie/ Saint Quentin
Répondre en citant
Posté le : 04/07/2004 12:10:35 Sujet du message : Brrrrr fait froid Grrrrr j'y suis presqueee.................

Bon alors voila je poste ces deux liens ici aussi svp je vous en supplie à l'aideeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee help meeeeeeeeeeeeeeeeeeeeeeeeee pleaaaaaaseeeeeeeeeeeeeeeeeeeee j'y suis presque..............
Confused Confused Confused

Le principe:

La règle que je voudrais adapter:
Par temps de froid (température inferieure à 5°c)*, un personnage non protégé doit réussir un jet de vigueur par heure (DD15, +1 par jet effectué au préalable) pour ne pas subir 1d6 de dégats non létaux*. Un aventurier possédant la compétances survie peut bénéficier d'un bonus, voir en faire profiter ses compagnons (voir Manuel du joueur, page 85).
extrait page 304 du Guide du maître livre de règles II v3.5 de D&D 3



froid important (-15°c): un jet de vigueur tout les 10 minutes avec +1 de difficulté a chaque jet ou perte de 1d6 pdv non létaux
froid extrème (-30°c): 1d6pdv létaux sans jet de sauvegarde puis un jet de vigueur tout les 10 minutes avec +1 a chaque jet ou perte de 1d4pdv non létaux*

non létaux*: ce qui veux dire que la créature récupère les pdv perdu au prochain changement de zone vers une zone plus chaude.


Tous ce qui est écrit ci dessus fonctionne actuellement avec le script écrit de cette manière (les détails m'en tap le principe est nikel pour le reste y a k adapter)

(script appliqué sur le OnEnter d'une zone)

Code :
void setAreaTemperature(object oPC, float fTemperature, float fRecheck = 600.0f, int bFirst = TRUE) {
//if(!GetIsPC(oPC)) return; Modification: Retirer les // pour rendre le script effectif uniquement sur un joueur
if(bFirst)
{
// On enregistre dans la variable locale fTemperature la temperature du
// joueur, au cas ou, pour une utilisation hors de cette fonction.
SetLocalFloat(oPC, "fTemperature", fTemperature);
SetLocalString(oPC, "sTemperatureArea", GetName(GetArea(oPC)));
// On fait effectuer au joueur le jet de vigueur contre le froid, avec
// pour DD 15 + nombre de fois que le joueur a fait un jet de vigueur
// pour des raisons de temperature.
}
// Si on est toujours dans la meme zone froide
if(GetName(GetArea(oPC)) == GetLocalString(oPC, "sTemperatureArea"))
{

float fRecheckMod = fRecheck;
int nDamage = 0;
if(fTemperature <= -30.0f)
{ // Si la temperature est inferieure ou egale a -30 degres
nDamage = d6(1); // 3D6 de dommage
fRecheckMod = fRecheck - 590;
}
else if(fTemperature <= -15.0f)
{ // Si la temperature est inferieure ou egale a -15 degres
nDamage = d6(1); // 2D6 de dommage
fRecheckMod = fRecheck - 500;
}
else if(fTemperature <= 5.0f)
{ // Si la temperature est inferieure ou egale a -5 degres
nDamage = d6(); // 1D6 de dommage
fRecheckMod = fRecheck;
}


int nSave = FortitudeSave(oPC, GetLocalInt(oPC, "nTemperatureShooted") + 15, SAVING_THROW_TYPE_COLD);
// On sauve que le joueur a fait un jet de vigueur pour les prochaines fois
SetLocalInt(oPC, "nTemperatureShooted", GetLocalInt(oPC, "nTemperatureShooted") + 1);
// On verifie si le joueur a reussi son jet (ou s'il est immunise aux degats
// de froid), dans ce cas on ne fait pas de dommages. Sinon...

if(!(nSave >= 1))
{
SendMessageToPC(oPC, "Vous êtes victime du froid, il fait " + FloatToString(fTemperature, 18, 0) + "°C." + FloatToString(fRecheckMod, 18, 0) + FloatToString(fRecheck, 18, 0));
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDamage, DAMAGE_TYPE_COLD), oPC);
SetLocalInt(oPC, "nTemperatureDamaged", nDamage + GetLocalInt(oPC, "nTemperatureDamaged"));
}

DelayCommand(fRecheckMod, setAreaTemperature(oPC, fTemperature, fRecheck, FALSE));
}
else
{
// Sinon on regenere les HP perdu de 1d6 HP par fRecheck seconde
int nRegen = d6();
float fRecheckMod = fRecheck;
fRecheckMod = fRecheck - 599;
// Au cas ou on aurai rendu tous ses HP au joueur, on stop le script
if(nRegen > GetLocalInt(oPC, "nTemperatureDamaged"))
{
nRegen = GetLocalInt(oPC, "nTemperatureDamaged");
}
SendMessageToPC(oPC, "De retour à une température normale, votre corps se réchauffe.");
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nRegen), oPC);
int nNewDamaged = GetLocalInt(oPC, "nTemperatureDamaged") - nRegen;
if(nNewDamaged > 0 && GetMaxHitPoints(oPC) > GetCurrentHitPoints(oPC))
{
SetLocalInt(oPC, "nTemperatureDamaged", nNewDamaged);
DelayCommand(fRecheckMod, setAreaTemperature(oPC, fTemperature, fRecheck, FALSE));
}
else
{
SendMessageToPC(oPC, "Votre corps a retrouvé une température normale.");
// On libere la memoire
DeleteLocalInt(oPC, "nTemperatureDamaged");
DeleteLocalInt(oPC, "nTemperatureShooted");
DeleteLocalString(oPC, "sTemperatureArea");
DeleteLocalFloat(oPC, "fTemperature");
}
}

}
void main()
{
// On recupere l'objet entrant
object oEntering = GetEnteringObject();
setAreaTemperature(oEntering, -30.0f, 600.0f);
}





Des zones de ce type peuvent aussi etre adjacente a la première les créatures ne doivent pas pouvoir récupérer de pdv dans ces zones mais au contraire les jets et degats seront plus grave.


voila ce qui m'a permi d'écrire ce script
[http]


voila ou j'en suis
[http]


voila mon prob actuel (c la que se situe ma question svp les dieux du scripts, aider moi a finir Sad Confused):
je voudrais que ce script fonctionne sur plusieurs zones, lorsque le perso (ou monstre) change de zone, le script ne se lance pas une deuxieme fois, en faisant attention aussi a ce que les perso ne regagnent pas de pdv dans les zones désirées mais que o contraire les degats s'accumulent de facon (comme ils sont mémorisés)a ce que les victimes du froid regagnent leur points de vie plus tard une fois en zone saine ou devrais-je dire chaude.


Mad grr de script

je n'en demande pas trop? Surprised Bah je sais qu'il y des betes parmis vous (enfin j'espere).



NB: c normal ce script doit s'appliquer à tous y compris le nounours qui poursuit votre personnage depuis 4 zones seulement a la fin je verrais pour faire en sorte que nounours polaire ne soit pas trop gené par le froid enfin suivant l'importance du froid mais la non plus ce n'est pas ce qui m'interresse. L'important est en rouge et en vert.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Adresse AIM Numéro ICQ Ignorer l'utilisateur
 
BenGorre
Légende vivante
Inscrit le: 12 Fév 2004
Messages: 301
Répondre en citant
Posté le : 04/07/2004 23:26:55 Sujet du message :

Sipposition parseque la je suis crevé, je fais que passer et jai lu en diagonale ton script.

Et si tu le mettai dans le OnClientEnter du module plutot (en modifiant un peu peut etre)
Voila jai dit ce que javai a dire et desole si cest pas la bonne reponse et bonne nuit.
_________________
La mort n'est rien seul le fait de mourir est terrible
Henry Fielding 1745

Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé 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 42.349ms