La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 22:57:59
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Yan the salor Seigneur Messages: 151 |
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 //:///////////////////////////////////////////// /* Gestion des tests des puissances. Regles du monde de jeu Ravenloft */ //:///////////////////////////////////////////// //:: Cree par: Serge GANDOLPHE //:: Cree le: 3 fevrier 2003 //:///////////////////////////////////////////// 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>= 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 | |
Stan Grand Chevalier Messages: 126 |
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 | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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