Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > [Script] Afficher l'echec d'une prière dans les HCR
[Script] Afficher l'echec d'une prière dans les HCR
Par Tyn' le 14/10/2002 Ã 15:40:54 (#2333744)
Voici un script d'un autel pour le GFugue Plane des HCR qui fonctionne. Merci mille fois à Kemay et Amaranthe!
J'ai juste ajouté une phrase pour quand la prière échoue (sinon l'autel ne réagissait pas de manière visible quand la prière n'était pas entendue).
Quand la prière est entendue, le PC est envoyé en lieu sûr (WayPoint de tag "wp_resurect") pour éviter qu'il se refasse tuer, avec son équipement et une pénalité XP+gold.// Script pour un autel qui ressuscite les PCs dans le plan de la fugue et les transporte au waypoint "wp_resurect"
// Par Kemay, Amaranthe et Mariane (pour un ajout )
// Compatible avec les HCR 1.6.8+
#include "hc_inc_rezpen"
//A placer dans l'event onUsed de l'autel
void main()
{
//la phrase dire lorsqu'un personnage n'ayant pas de divinite definie essaie de prier
string sNoDeity = "Vous n'avez foi en aucun dieu, vous ne pouvez pas prier !";
//la phrase dire lorsqu'un personnage essaie de prier sans attendre une heure
string sAlreadyPrayed = "Vous ne pouvez prier votre dieu qu'une seule fois par 30 minutes.";
// la phrase à dire quand la prière a été inefficace
string sNoRez = "Votre prière n'a pas été entendue.";
//la duree en minutes reelles d'une heure dans le jeu
int nMinutes = 5;
//le pourcentage de chance que la priere soit entendue et le que la resurection soit effectuee
int nChance = 15;
object oMod = GetModule();
object oPC = GetLastUsedBy();
string sName = GetName(oPC);
string sCDK = GetPCPublicCDKey(oPC);
string sID = sName + sCDK;
string sDeity = GetDeity(oPC);
int bUsed = GetLocalInt(oPC,"AlreadyPrayed");
// le délai entre deux prières
float fDelay = 30.0*nMinutes;
location lDiedHere = GetLocation(GetWaypointByTag("wp_resurect"));
if( sDeity == " )
{
SendMessageToPC(oPC,sNoDeity);
return;
}
if( bUsed == TRUE )
{
SendMessageToPC(oPC,sAlreadyPrayed);
return;
}
if( bUsed == 0 )
{
SetLocalInt(oPC,"AlreadyPrayed",TRUE);
DelayCommand(fDelay,DeleteLocalInt(oPC,"AlreadyPrayed"));
int nRoll = d100();
if( nRoll <= nChance )
{
object oDeathCorpse = GetLocalObject(oMod,"DeathCorpse"+sID);
if(GetIsObjectValid(oDeathCorpse)) DestroyObject(oDeathCorpse);
if(GetLocalInt(oMod,"REZPENALTY"))
{
hcRezPenalty(oPC);
// Charge em and raise the dead man
int iPCGold = GetGold(oPC);
int iRezCost = 1500;
if (iRezCost < iPCGold) iRezCost = iPCGold;
TakeGoldFromCreature(iRezCost, oPC, TRUE);
}
AssignCommand(oPC,JumpToLocation(lDiedHere)) ;
}
else
{
SendMessageToPC(oPC,sNoRez);
}
}
}
JOL Archives 1.0.1
@ JOL / JeuxOnLine