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 15:39:48


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Yan the salor
Seigneur
Inscrit le: 03 Oct 2004
Messages: 151
Répondre en citant
Posté le : 18/04/2005 15:50:38 Sujet du message : TEST de puissances de RAVENLOFT

Je ne trouve pas le moyen de modifier la probabilité que le test soit positif.
Je vois bien le test de d100, mais je ne vois pas sur quel résultat le test est positif.
Merci de bien vouloir m'aiguiller merci (par exemple doubler les chances).

Voici le script:

[ nwscript]
///////////////////////////////////////////////
//:: TEST DES PUISSANCES
//:: rav_puissance
//:Confused/////////////////////////////////////////////
/*
Gestion des tests des puissances.
Regles du monde de jeu Ravenloft
*/
//:Confused/////////////////////////////////////////////
//:: Cree par: Serge GANDOLPHE
//:: Cree le: 3 fevrier 2003
//:Confused/////////////////////////////////////////////

void PowerCheck(object pc, int pourcent);
int AppropriateLevel(object pc, int degre);
void Caresse(object pc);
void Incitation(object pc);
void Invitation(object pc);
void Etreinte(object pc);
void Creature(object pc);
void Seigneur(object pc);


/*
Effectue l'objet effectue un test des puissances
avec pourcent % de risques.
Tout acte malefique devrait provoquer un test des puissances
Toutefois, le degre maximum devrait etre de 10 (dans le cas
d'un meurtre d'innocent).
Le self defense ne provoque pas de test des puissances
*/
void PowerCheck(object pc, int pourcent){

if(!GetIsPC(pc))
return;

object innocence = GetLocalObject(pc,"innocence");
if(GetIsObjectValid(innocence)){
DestroyObject(innocence,0.5f);
SendMessageToPC(pc,"Vous avez perdu votre innocence.");
}

//On regarde si le joueur a deja echoue a des tests de puissance
int degre = GetLocalInt(pc,"RAV_DEGREPUISSANCE");

//On fait le test proprement dit et s'il echoue on envoie un avertissement
if(d100(1)>pourcent || degre == 6 /*|| GetLocalInt(pc,"RAV_TESTENCOURS")==1*/)
{
//Cas ou le personnage est deja au dernier stade
if(degre == 6){
SendMessageToPC(pc,"Vous continuez a perpetrer vos actions malefiques. Les puissances de Ravenloft sont satisfaites de vous.");
}
else SendMessageToPC(pc,"Vous attirez l'attention des puissances du mal.");
return;
}

//On regarde si le pj a le niveau approprie
if(!AppropriateLevel(pc,degre))
{
SendMessageToPC(pc,"Les puissances du mal vous ont remarque, mais vous n'etes pas encore assez puissant pour le stade suivant.");
return;
}

//On met un flag pour eviter les conflits
//SetLocalInt(pc,"RAV_TESTENCOURS",1);

//On lui enleve son precedent don.
object prevskin = GetItemInSlot(INVENTORY_SLOT_CARMOUR,pc);
if(GetIsObjectValid(prevskin))
DestroyObject(prevskin,0.5f);

//Selon le degre, on lui donne le don du degre superieur
switch(degre){
case 0: Caresse(pc);
break;
case 1: Incitation(pc);
break;
case 2: Invitation(pc);
break;
case 3: Etreinte(pc);
break;
case 4: Creature(pc);
break;
case 5: Seigneur(pc);
break;
default: break;
}

//Effet visuel
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_EVIL_HELP),GetLocation(pc));

//DelayCommand(4.0f,SetLocalInt(pc,"RAV_TESTENCOURS",0));
}

/*Renvoie true si le personnage a le niveau approprie*/
int AppropriateLevel(object pc, int degre){
int totallevel = GetHitDice(pc);
switch(degre){
case 0: if(totallevel>=1) return TRUE; else return FALSE;
break;
case 1: if(totallevel>=4) return TRUE; else return FALSE;
break;
case 2: if(totallevel>=Cool return TRUE; else return FALSE;
break;
case 3: if(totallevel>=10) return TRUE; else return FALSE;
break;
case 4: if(totallevel>=12) return TRUE; else return FALSE;
break;
case 5: if(totallevel>=14) return TRUE; else return FALSE;
break;
default: return FALSE;
break;
}
return FALSE;
}

/*Premier stade: La caresse*/
void Caresse(object pc){
//SendMessageToPC(pc, "CARESSE"); //Pour le debug
object recompense = CreateItemOnObject("lacaresse",pc);
if(GetIsObjectValid(recompense)){
AssignCommand(pc,ClearAllActions(TRUE));
AssignCommand(pc,ActionWait(3.0f));
AssignCommand(pc,ActionEquipItem(recompense,INVENTORY_SLOT_CARMOUR));
}
else SendMessageToPC(pc, "ERREUR:PAS DE CREATION DE LA RECOMPENSE");
SetLocalInt(pc,"RAV_DEGREPUISSANCE",1);
SendMessageToPC(pc,"Les puissances de Ravenloft vous ont recompense pour cet acte. En contrepartie, vous ne pourrez plus jamais avoir le benefice d'augmentations de caracteristiques autre que celles donnees par les puissances");
SendMessageToAllDMs(GetName(pc)+" a echoue son test de puissance. Il a ete caresse");
}

/*Deuxieme stade: L'incitation*/
void Incitation(object pc){
//SendMessageToPC(pc, "INCITATION"); //Pour le debug
object recompense = CreateItemOnObject("lincitation",pc);
if(GetIsObjectValid(recompense)){
AssignCommand(pc,ClearAllActions(TRUE));
AssignCommand(pc,ActionWait(3.0f));
AssignCommand(pc,ActionEquipItem(recompense,INVENTORY_SLOT_CARMOUR));
}
else SendMessageToPC(pc, "ERREUR:PAS DE CREATION DE LA RECOMPENSE");
SetLocalInt(pc,"RAV_DEGREPUISSANCE",2);
SendMessageToPC(pc,"Les puissances de Ravenloft vous ont recompense pour cet acte.");
SendMessageToAllDMs(GetName(pc)+" a echoue son test de puissance. Il a ete incite");
}

/*Troisieme stade: L'invitation*/
void Invitation(object pc){
//SendMessageToPC(pc, "INVITATION"); //Pour le debug
object recompense = CreateItemOnObject("linvitation",pc);
if(GetIsObjectValid(recompense)){
AssignCommand(pc,ClearAllActions(TRUE));
AssignCommand(pc,ActionWait(3.0f));
AssignCommand(pc,ActionEquipItem(recompense,INVENTORY_SLOT_CARMOUR));
}
else SendMessageToPC(pc, "ERREUR:PAS DE CREATION DE LA RECOMPENSE");
SetLocalInt(pc,"RAV_DEGREPUISSANCE",3);
SendMessageToPC(pc,"Les puissances de Ravenloft vous ont recompense pour cet acte.");
SendMessageToAllDMs(GetName(pc)+" a echoue son test de puissance. Il a ete invite");
}

/*Quatrieme stade: L'etreinte*/
void Etreinte(object pc){
//SendMessageToPC(pc, "ETREINTE"); //Pour le debug
object recompense = CreateItemOnObject("letreinte",pc);
if(GetIsObjectValid(recompense)){
AssignCommand(pc,ClearAllActions(TRUE));
AssignCommand(pc,ActionWait(3.0f));
AssignCommand(pc,ActionEquipItem(recompense,INVENTORY_SLOT_CARMOUR));
}
else SendMessageToPC(pc, "ERREUR:PAS DE CREATION DE LA RECOMPENSE");
SetLocalInt(pc,"RAV_DEGREPUISSANCE",4);
SendMessageToPC(pc,"Les puissances de Ravenloft vous ont recompense pour cet acte.");
SendMessageToAllDMs(GetName(pc)+" a echoue son test de puissance. Il a ete etreint");
}

/*Cinquieme stade: La creature*/
void Creature(object pc){
//SendMessageToPC(pc, "CREATURE"); //Pour le debug
object recompense = CreateItemOnObject("lacreature",pc);
if(GetIsObjectValid(recompense)){
AssignCommand(pc,ClearAllActions(TRUE));
AssignCommand(pc,ActionWait(3.0f));
AssignCommand(pc,ActionEquipItem(recompense,INVENTORY_SLOT_CARMOUR));
}
else SendMessageToPC(pc, "ERREUR:PAS DE CREATION DE LA RECOMPENSE");
SetLocalInt(pc,"RAV_DEGREPUISSANCE",5);
SendMessageToPC(pc,"Les puissances de Ravenloft vous ont recompense pour cet acte.");
SendMessageToAllDMs(GetName(pc)+" a echoue son test de puissance. Il est desormais une creature");
}

/*Dernier stade: Le seigneur des tenebres*/
void Seigneur(object pc){
//SendMessageToPC(pc, "SEIGNEUR"); //Pour le debug
object recompense = CreateItemOnObject("leseigneur",pc);
if(GetIsObjectValid(recompense)){
AssignCommand(pc,ClearAllActions(TRUE));
AssignCommand(pc,ActionWait(3.0f));
AssignCommand(pc,ActionEquipItem(recompense,INVENTORY_SLOT_CARMOUR));
}
else SendMessageToPC(pc, "ERREUR:PAS DE CREATION DE LA RECOMPENSE");
SetLocalInt(pc,"RAV_DEGREPUISSANCE",6);
SendMessageToPC(pc,"Vos actes malefiques ont paye. Vous etes desormais un seigneur des tenebres.");
SendMessageToAllDMs(GetName(pc)+" a echoue son test de puissance. Il est desormais un seigneur des tenbres");
}
[/nwscript]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 18/04/2005 16:00:52 Sujet du message :

En fait ici il n'y a pas de void main()

c'est simplement une sorte de bibliothèque de fonction qui sera utilisée par d'autres scripts.

Il n'est donc pas réellement question de pourcentage dans ce script.

Tu dois trouver les scripts qui ont des includes concernant ce script que tu viens de nous montrer.

Et les scripts qui utilisent une fonction nommée : PowerCheck

C'est elle, quand on l'utilise, on passe par paramètre le pourcentage.

Par exemple :

PowerCheck(oPC,60)

Si le dé 100 dépasse 60, alors l'action s'enclenche.


PS : je ne veux pas t'affoler mais ce genre de choses courent sur une sacrée quantité de script quand on voit qu'il récupère pleins de variables locale.

Par exemple il récupere l'innocence d'un joueur, qui doit lui être donnée dans le onenter du module.
 
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 26.581ms