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 20:19:32
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 |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Bonjour a tous d'abord ^^
Ensuite je vous explique mon probleme, j'ai sur mon serveur un theatre, j'aimerai pouvoir a l'aide d'un dialogue sur une statue derriere la scene allumer ou eteindre tous les brasero de la salle. NWScript :
void main() { if (GetLocalInt(OBJECT_SELF,"NW_L_AMION") == 0) { object oSelf = OBJECT_SELF; PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); //DelayCommand(0.4,SetPlaceabl eIllumination(oSelf, TRUE)); SetLocalInt(OBJECT_SELF,"NW_L_AMION",1); //DelayCommand(0.5,RecomputeSt aticLighting(GetArea(oSelf))); effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf); } else { object oSelf = OBJECT_SELF; PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); //DelayCommand(0.4,SetPlaceabl eIllumination(oSelf, FALSE)); SetLocalInt(OBJECT_SELF,"NW_L_AMION",0); //DelayCommand(0.9,RecomputeSt aticLighting(GetArea(oSelf))); effect eEffect = GetFirstEffect(oSelf); while (GetIsEffectValid(eEffect) == TRUE) { if (GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT) RemoveEffect(oSelf, eEffect); eEffect = GetNextEffect(oSelf); } } } Voici le code d'un brasero de base, en l'utilisant il s'allume et s'eteint, j'ai donc penser me servir de ca. En gros : Une statue avec dialogue : -Que souhaitez vous faire ? ? Allumer (tous les brasero s'allume) Eteindre (tous les brasero s'eteigne) 10 brasero allumer de base Merci d'avance de votre aide _________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Un ptit up pour amener un script que j'ai tester sans succes, il compile mais ne marche pas, une idée ?
C'est le script de base on off du brasero avec des modif. NWScript : void main() { object oPC = GetPCSpeaker(); object oTarget; oTarget = GetObjectByTag("brasero"); //le tag de la porte if (GetLocalInt(OBJECT_SELF,"NW_L_AMION") == 0) { object oSelf = OBJECT_SELF; PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); //DelayCommand(0.4,SetPlaceabl eIllumination(oSelf, TRUE)); SetLocalInt(OBJECT_SELF,"NW_L_AMION",1); //DelayCommand(0.5,RecomputeSt aticLighting(GetArea(oSelf))); effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf); } else { object oSelf = OBJECT_SELF; PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); //DelayCommand(0.4,SetPlaceabl eIllumination(oSelf, FALSE)); SetLocalInt(OBJECT_SELF,"NW_L_AMION",0); //DelayCommand(0.9,RecomputeSt aticLighting(GetArea(oSelf))); effect eEffect = GetFirstEffect(oSelf); while (GetIsEffectValid(eEffect) == TRUE) { if (GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT) RemoveEffect(oSelf, eEffect); eEffect = GetNextEffect(oSelf); } } } _________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Eh bien si tu inclus ce script dans une boucle sur les objets de la zone, ça devrait fonctionner. Renomme tous les tags de tes braséros en un tag unique, par exemple "BRASERO_ONOFF", et ça donnerait quelque chose dans ce genre-là :
NWScript :
void main() { object oPlacable = GetFirstObjectInArea(); while(GetIsObjectValid(oPlacable)) { if(GetTag(oPlacable) == "BRASERO_ONOFF") { if(GetLocalInt(oPlacable,"NW_L_AMION") == 0) { PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); SetLocalInt(oPlacable,"NW_L_AMION",1); effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oPlacable); } else { PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); SetLocalInt(oPlacable,"NW_L_AMION",0); effect eEffect = GetFirstEffect(oPlacable); while (GetIsEffectValid(eEffect) == TRUE) { if(GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT) RemoveEffect(oPlacable, eEffect); eEffect = GetNextEffect(oPlacable); } } } oPlacable = GetNextObjectInArea(); } } Voilà, de mémoire et non testé, mais sur le principe c'est ça Tu pourrais améliorer un peu en utilisant un compteur : comme c'est un script assez gourmand en ressources, si tu sais combien tu as de braseros dans ta zone, tu ajoutes un compteur après le GetNextObjectInArea() qui s'incrémente à chaque boucle. Et si ton compteur atteint le nombre de braséros présents dans ta zone, tu stoppes la boucles pour éviter que le script continue inutilement. C'est surtout utile si tu as beaucoup beaucoup de plaçables dans ta zone. _________________ » 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 | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
J'ai testé, mais malheuresement, aucun resultat.
(J'ai mis BRASERO_ONOFF comme tag de tous mes brasero) C'est con parce que je vois pas d'ou ca peux venir _________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
AZAZEL11 Seigneur Messages: 156 |
question tout bête (tappez pas j'ai pas eut le coeur de tout lire) mais....est-ce que tes placeables sont statiques??? si oui te demande plus pourquoi^^
_________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Non bien sur ils ne sont pas statiques
_________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Eh bien si ça ne marche pas, faut trouver d'où vient le problème et corriger, ça te tombera pas tout cuit dans le bec
Essaye déjà de savoir à quel moment du script (boucle, condition, etc.) le script ne fonctionne pas. En utilisant la fonction SendMessageToPC() par exemple, tu peux avoir des indications, comme ceci : NWScript :
void main() { object oPlacable = GetFirstObjectInArea(); object oPC = GetFirstPC(); while(GetIsObjectValid(oPlacable)) { SendMessageToPC(oPC, "Phase 1"); //... if(GetTag(oPlacable) == "BRASERO_ONOFF") { SendMessageToPC(oPC, "Phase 2"); //... if(GetLocalInt(oPlacable,"NW_L_AMION") == 0) { SendMessageToPC(oPC, "Phase 2 ON"); //... PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); SetLocalInt(oPlacable,"NW_L_AMION",1); effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oPlacable); } else { SendMessageToPC(oPC, "Phase 2 OFF"); //... PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); SetLocalInt(oPlacable,"NW_L_AMION",0); effect eEffect = GetFirstEffect(oPlacable); while (GetIsEffectValid(eEffect) == TRUE) { SendMessageToPC(oPC, "Phase 2 OFF effet"); //... if(GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT) RemoveEffect(oPlacable, eEffect); eEffect = GetNextEffect(oPlacable); } } } oPlacable = GetNextObjectInArea(); } } Voilà, comme ça tu lances ton script dans une zone avec juste 2 ou 3 braséros pour éviter d'avoir une cascade de messages, tu regardes les messages que tu obtiens, et tu sais quelles parties du script se sont bien exécutées, et tu corriges en fonction. _________________ » 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 | |
AZAZEL11 Seigneur Messages: 156 |
ah bien tients dont!!! voila un truc intelligent pour savoir où notre script foire!!! merci à toi finipe^^ Je vais m'en servir très souvent de ce truc je le sens!
_________________ L'imagination est plus importante que le savoir. (Albert Einstein) |
Revenir en haut | |
darkheaven Acolyte Messages: 35 Localisation: nevers |
Je test et je vous tiens au courant
_________________ La vie n'est qu'une plume que le destin balade au grés du vent... |
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