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 21:51:15
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 |
Klemmth Seigneur Messages: 176 Localisation: france |
Voila, j'ai mis dans mon module un script qui empeche de se reposer trop souvent.
Je l'ai ajouté au OnRest de mon module. Mais il ne marche pas, et je ne sais vraiment pas pourquoi. Je fait appel a votre savoir NWScript : #include "x2_inc_restsys" #include "x2_inc_switches" void main() { object oPC = GetLastPCRested(); if (GetModuleSwitchValue(MODULE_SWITCH_USE_XP2_RESTSYSTEM) == TRUE) { object oArea = GetArea (oPC); string sTable = GetLocalString(oArea,"X2_WM_ENCOUNTERTABLE") ; if (sTable != "" ) { int nDoors = GetLocalInt(oArea,"X2_WM_AREA_USEDOORS"); int nDC = GetLocalInt(oArea,"X2_WM_AREA_LISTENCHECK"); WMSetAreaTable(oArea,sTable,nDoors,nDC); //remove string to indicate we are set up DeleteLocalString(oArea,"X2_WM_ENCOUNTERTABLE"); } if (GetLocalInt(GetModule(), "X2_G_LOWLEVELSTART") == 10) { AssignCommand(oPC, ClearAllActions()); if (GetHitDice(oPC) >= 12) { ExecuteScript("bk_sleep", oPC); return; } else { FloatingTextStrRefOnCreature(84141 , oPC); return; } } if (GetLastRestEventType()==REST_EVENTTYPE_REST_STARTED) { if (!WMStartPlayerRest(oPC)) { // The resting system has objections against resting here and now // Probably because there is an ambush already in progress FloatingTextStrRefOnCreature(84142 ,oPC); AssignCommand(oPC,ClearAllActions()); } if (WMCheckForWanderingMonster(oPC)) { //This script MUST be run or the player won't be able to rest again ... ExecuteScript("x2_restsys_ambus",oPC); } //le script commence ici... int nIntervalleSansRepos = 8; int nLastRest = GetLocalInt( oPC, "LastRest" ); int nLastDay = GetLocalInt( oPC, "LastDay" ); int nHour = GetTimeHour(); int nDay = GetCalendarDay(); if ((( nLastRest == 0 ) && ( nLastDay == 0 )) || ( GetLocalInt( GetModule(), "DMRestOK" ) == 1 ) || ( GetLocalInt( oPC, "DMRestOK" ) == 1 ) ) { SetLocalInt( oPC, "LastRest", nHour ); SetLocalInt( oPC, "LastDay", nDay ); SetLocalInt( oPC, "DMRestOK", 0 ); } else if ( nDay == nLastDay ) { if (( nHour - nLastRest ) < nIntervalleSansRepos ) { AssignCommand( oPC, ClearAllActions() ); SendMessageToPC( oPC, "Tu ne peux pas encore te reposer." ); } } else if ((( nDay - nLastDay ) == 1 ) || (( nLastDay - nDay ) == 27 ) ) { if (( nLastRest - nHour ) > 24 - nIntervalleSansRepos ) { AssignCommand( oPC, ClearAllActions() ); SendMessageToPC( oPC, "Tu ne peux pas encore te reposer." ); } } else { SetLocalInt( oPC, "LastRest", nHour ); SetLocalInt( oPC, "LastDay", nDay ); SetLocalInt( oPC, "DMRestOK", 0 ); } //...et finit ici } else if (GetLastRestEventType()==REST_EVENTTYPE_REST_CANCELLED) { // No longer used but left in for the community // WMFinishPlayerRest(oPC,TRUE); // removes sleep effect, etc } else if (GetLastRestEventType()==REST_EVENTTYPE_REST_FINISHED) { // No longer used but left in for the community // WMFinishPlayerRest(oPC); // removes sleep effect, etc } } } |
Revenir en haut | |
Tuyen Demi-dieu Messages: 460 Localisation: Chez moi |
Je m'y connais pas trop en script mais est ce que t'es allé voir sur le bourg de NWN? ils proposent plein de scripts et je crois avoir vu un sur la limitation du repos :
ici |
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
En fait, je ne cherche pas a faire un script qui gere la fatigue ( pour l'instant ), mais un script qui empeche de se reposer avant un certain temps passé depuis le dernier repos.
|
Revenir en haut | |
Klemmth Seigneur Messages: 176 Localisation: france |
Svp, aidez-moi a résoudre cet infime probleme
_________________ ... |
Revenir en haut | |
KIMOUNET Héros Messages: 256 Localisation: Au pays des reves |
Je te file le script qui m'a permis de mettre un délais entre chaque repos
//:///////////////////////////////////////////// //:: Name: Zimero's Limited Resting v1.2 //:: FileName: z_mod_onrest //:///////////////////////////////////////////// /* Description du Script Il permet d'attendre un certain nombre de temps avant que le joueur puisse se reposer. Mais tout l'interet n'est pas là, ce script permet aussi de gérer le temps de repos, c'est à dire, si on se repose seulement la moitier tu temps d'un repos total, l'attente avant le prochain repos sera proportionnel au repos deja fournit. */ //:///////////////////////////////////////////// //:: Created By: Jonas Boberg aka. zimero //:: Created On: 20021212 //:: Modified On: 20030107 //:: Traduit en Français par Asuke (sasukezero@hotmail.com) //:: Traduit le: Vendredi 31 Janvier 2003 //:///////////////////////////////////////////// //VARIABLE MODIFIABLES //Le nombres d'heure durant lequelles le joueurs doit attendre //avant de pouvoir se reposer après un repos complet (defaut, 8 heures) int TIMEBETWEENRESTING=2; //Le nombre reel de minutes qui correspond a 1 heure dans le jeu int REALTIMEMINUTES=1; //FIN DES VARIABLES MODIFIABLES int CurrentTime(); void main() { //initiation des varibles object oPC = GetLastPCRested(); int iCurrentTime, iLastRestTime, iTimeSinceRest, iTimeUntilRest; float fTimePenalty; switch (GetLastRestEventType()) { case REST_EVENTTYPE_REST_STARTED: iCurrentTime = CurrentTime(); iLastRestTime = GetLocalInt(oPC,"REST_HOUR"); iTimeSinceRest = iCurrentTime-iLastRestTime; SetLocalInt(oPC, "REST_SECOND", GetTimeSecond()); if (iLastRestTime==0 || iTimeSinceRest >= TIMEBETWEENRESTING) { SetLocalInt(oPC, "REST_ALLOWED", TRUE); } else { SetLocalInt(oPC, "REST_ALLOWED", FALSE); iTimeUntilRest = TIMEBETWEENRESTING-iTimeSinceRest; if (REALTIMEMINUTES == 1) { iTimeUntilRest = FloatToInt(HoursToSeconds(iTimeUntilRest)/60); //Vous pouvez changer le message si le repos n'est pas encore //autoriser if (iTimeUntilRest == 1) { FloatingTextStringOnCreature("Vous devez attendre " + " minutes avant de pouvoir vous reposer", oPC); } else { FloatingTextStringOnCreature("Vous devez attendre "+ IntToString(iTimeUntilRest)+ " minutes avant de pouvoir vous reposer", oPC); } } else { if (iTimeUntilRest == 1) { FloatingTextStringOnCreature("Vous devez attendre " + " minutes avant de pouvoir vous reposer", oPC); } else { FloatingTextStringOnCreature("Vous devez attendre "+ IntToString(iTimeUntilRest)+ " minutes avant de pouvoir vous reposer", oPC); } } //Annuler le repos AssignCommand(oPC,ClearAllActions()); } break; case REST_EVENTTYPE_REST_CANCELLED: //variable sur le temps de repos if (GetLocalInt(oPC, "REST_ALLOWED") == TRUE) { iCurrentTime = GetTimeSecond(); iLastRestTime = GetLocalInt(oPC, "REST_SECOND"); iTimeSinceRest = iCurrentTime - iLastRestTime; if (iTimeSinceRest<0) iTimeSinceRest+= 60; fTimePenalty = TIMEBETWEENRESTING*(iTimeSinceRest/(0.5*GetHitDice(oPC)+10)); SetLocalInt(oPC,"REST_HOUR", CurrentTime()-(TIMEBETWEENRESTING-FloatToInt(fTimePenalty))); } break; case REST_EVENTTYPE_REST_FINISHED: SetLocalInt(oPC, "REST_HOUR", CurrentTime()); } } int CurrentTime() { return GetCalendarYear()*8064 + GetCalendarMonth()*672 + GetCalendarDay()*24 + GetTimeHour(); } _________________ Le savoir est comme un tresor il se partage |
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