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 27/11/2024 08:12:50
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 |
galhaed Novice Messages: 5 |
bon voila j'ai deja un script qui me donne un effet de ronflement et de noir pendant le repos et qui est rendu possible seulement si l'on mange quelque chose
je voudrai avoir un script ou lignes de script a ajouter pour que je puisse empecher les joueurs de se reposer tout de suite apres le precedent repos est ce possible? merci d'avance |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
La fonction "rechercher" est ton amie, il y a déjà eu plein de sujets sur la question.
_________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
galhaed Novice Messages: 5 |
ben justement plein mais rien^^
et le seul lien de la bibliothéque ayant trait a ça est dead voila le pourquoi de ma demande dsl |
Revenir en haut | |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
regarde donc ici
|
Revenir en haut | |
galhaed Novice Messages: 5 |
voici en fin de compte ce que j'ai fait avec l'aide de plusieurs scripts
le pj dort av"ec un zzzzzzz et un ecran noir il doit avoir de la nourriture on peut regler le temps entre deux repos NWScript :
// modification du dodo par nono3 #include "com_constantes" #include "com_include" #include "rest_include" ////////////////////////// ///////////////////// //:: Nom s3_MDL_dodo1 //:: Module Mer de Lune (Lunerousse) ////////////////////////// //////////////////// ////////////////////////// //////////////////// //:: Created By: Jouby //:: Created On: 2004 ////////////////////////// //////////////////// void ClearDarkness(object oOwner)//effacer l'effet du noir de l'ecran { effect eTemp=GetFirstEffect(oOwner); effect eEcranNoir = EffectVisualEffect(VFX_DUR_BLACKOUT); while(GetIsEffectValid(eTemp)) { if(GetEffectType(eTemp)==GetEffectType(eEcranNoir)) { RemoveEffect(oOwner, eTemp); } eTemp=GetNextEffect(oOwner); } } /////////////////////////// /////////////////// //Pas de repos sans nourriture////////////////// //script du Troubadour//////////////////// ///// ////////////////////////////// ////////////////// //Mode d'emploi : placer ce script dans le "OnRest" du module"// //Creer un ou plusieurs objets non stackable portant le tag "BOUFFE"// //Ce qui suit est une nouvelle fonction, elle n'est pas de moi// //Elle cherche un item donne dans l'inventaire du PJ// object CheckInventoryForItem(object oPC, string sItemTag) { object oItem = GetFirstItemInInventory (oPC); while (oItem != OBJECT_INVALID) { if (GetTag(oItem) == sItemTag) return oItem; oItem = GetNextItemInInventory (oPC); } return OBJECT_INVALID; } //VARIABLE MODIFIABLES //Le nombres d'heure durant lequelles le joueurs doit attendre int TIMEBETWEENRESTING=6; //Le nombre reel de minutes qui correspond a 1 heure dans le jeu int REALTIMEMINUTES=2; //FIN DES VARIABLES MODIFIABLES int CurrentTime(); void main()//fonction principale { string sItemTag = "BOUFFE"; object oPC = GetLastPCRested(); object oItemRequis = CheckInventoryForItem(oPC, sItemTag); object oTarget = oPC; object oZone5 = GetArea(oPC); object oPlaceable = GetFirstObjectInArea(oZone5); string sTag = GetTag(oPlaceable); string sReposInterdit = "s3_repos_interdi"; string sRepos_Interdit_animation = "A cause d'une animation en cours, le repos est interdit dans la zone pour raison de RP"; 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); //Lorsque le joueur click sur "se reposer" le script verifie la presence de l'item "bouffe"// //S'il n'y en a pas le repos est annule et un message envoye au joueur// if (GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED) { if (GetItemPossessedBy(oPC,"BOUFFE") == OBJECT_INVALID) { SendMessageToPC (oPC, "Impossible de vous reposer avec cette faim qui vous tenaille..."); AssignCommand (oPC,ClearAllActions()); } //si l'item "bouffe" est present le repos est lance et un seul item de ce type detruit// else { DestroyObject(oItemRequis, 0.0); while (GetIsObjectValid(oPlaceable)) { if (sReposInterdit == sTag) { SendMessageToPC(oPC,sRepos_Interdit_animation); AssignCommand(oPC, ClearAllActions()); return; } oPlaceable = GetNextObjectInArea(oZone5); } if (GetLastRestEventType()== REST_EVENTTYPE_REST_STARTED) { PlayVoiceChat(VOICE_CHAT_REST, oPC); ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_BLACKOUT), oTarget); ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_IMP_SLEEP), oTarget); } if (GetLastRestEventType()== REST_EVENTTYPE_REST_CANCELLED) { ClearDarkness(oTarget); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSlow(), oTarget, 30.0f); SendMessageToPC(oPC, "Le reveil suite a un repos interrompu est toujours tres difficile"); } if (GetLastRestEventType()== REST_EVENTTYPE_REST_FINISHED) { ClearDarkness(oTarget); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSlow(), oTarget, 10.0f); SendMessageToPC(oPC, "S'arracher des bras de Sylune vous demande encore quelques instants"); } } } } 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 " + "1 heure avant de pouvoir vous reposer", oPC); } else { FloatingTextStringOnCreature("Vous devez attendre "+ IntToString(iTimeUntilRest)+ " heures avant de pouvoir vous reposer", oPC); } } else { if (iTimeUntilRest == 1) { FloatingTextStringOnCreature("Vous devez attendre " + "1 heure avant de pouvoir vous reposer", oPC); } else { FloatingTextStringOnCreature("Vous devez attendre "+ IntToString(iTimeUntilRest)+ " heures 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(); } et encore merci de vos reponses |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Ce que tu peut faire c'est lors du DODO tu met une variable local INT. Apres tu met un truc DelayCommand 30 sec pour que la variable se detruise. Tu a juste ensuite a dire si :
La variable est a 0 : donc le pnj peut dormir ou La variable est a 1 : donc il lui sera impossible de dormir |
Revenir en haut | |
AZAZEL11 Seigneur Messages: 156 |
comment on pourrait faire en sorte que l'interval de repos soit en fonction du lvl du PJ?
genre lvl 1-5 = 1 heure 6-10= 2 heures 11-15= 3 heures 16et++= 4 heures je dois avoué que j'ai bien tenté mais j'ai du mal a saisir entre autre le pourquoi d'autres (void) avant le void main()pour y insérer des variables... hé oui, je suis un noob (j'aurais pas du arreter nwn un bout!!! lol) _________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Avec des IFs
NWScript :
float i; int iLvl = GetHitDice(oPC); if(iLvl > 0 && iLvl < 6){i = 3.0;} if(iLvl > 5 && iLvl < 11){i = 6.0;} if(iLvl > 10 && iLvl < 16){i = 9.0;} if(iLvl > 15){i = 12.0;} SetLocalInt(oPC, "DODO", 1) DelayCommand(i, SetLocalInt(oPC, "DODO", 0)); //etc... Voila _________________ [http] |
Revenir en haut | |
AZAZEL11 Seigneur Messages: 156 |
ah bien oui regardez ca! lol c'est si simple une fois qu'on vous l'explique^^
merci! bien que je n'ai aucunes idées comment mettre ca dans ce script lol _________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
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