| Aide sur script | |
|
|
Auteur | Message |
---|
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Aide sur script Mar 11 Jan à 14:42 | |
| Salut J'ai un script qui me permet d'avoir des rencontres différentes le jour et la nuit. Script de créatures jour/nuit void main() { object oNuit = GetObjectByTag("TAG_NUIT"); object oJour = GetObjectByTag("TAG_JOUR"); if ((GetLocalInt(oNuit,"nuit_active")==FALSE) && (GetLocalInt(oJour,"jour_actif")==FALSE)) { SetLocalInt(oNuit,"nuit_active",1); SetLocalInt(oJour,"jour_actif",1); } if (GetIsNight()==TRUE && GetLocalInt(oNuit,"nuit_active")<3) { SetLocalInt(oNuit,"nuit_active",2); SetLocalInt(oJour,"jour_actif",1); } else if ((GetIsDay()==TRUE) && (GetLocalInt(oJour,"jour_actif")<3)) { SetLocalInt(oNuit,"nuit_active",1); SetLocalInt(oJour,"jour_actif",2); }
if (GetLocalInt(oNuit,"nuit_active")==2) { SetEncounterActive(TRUE,oNuit); SetEncounterActive(FALSE,oJour); SetLocalInt(oNuit,"nuit_active",3); SetLocalInt(oJour,"jour_actif",1); } else if (GetLocalInt(oJour,"jour_actif")==2) { SetEncounterActive(FALSE,oNuit); SetEncounterActive(TRUE,oJour); SetLocalInt(oNuit,"nuit_active",1); SetLocalInt(oJour,"jour_actif",3); } }
je place ce sript dans le OnHeartBeat de la zone aprés avoir décocher la case Active de la rencontre (comme me le dis le message que j'ai récupérer avant) Message : OBJECTIF / Commentaire : Changer de créature selon le temps Voici un petit script qui permettra d'activer un type d'encounter la nuit et un autre type le jour. Par exemple, avoir un cimetierre hantée par des undeads la nuit et rien la journée. Ou encore avoir des bats la journée et des vampires la nuit. En premier lieu, vous devez donner le meme tag à tous les encounters de nuit, pour notre exemple ça sera : Tag_nuit Et le tag pour les encounters de la journée : Tag_jour Les encounters qui n'ont aucun de ces deux tags, marcheront comme d'habitude nuit et jour. Mettez ce script dans "OnHeatBeat" dans les propriétés de l'area. NOTE IMPORTANTE : Vos encounters Day et Night ne doivent pas avoir la case ACTIVE coché dans les propriétés. Mais voilà il ne fonctionne pas. Si quelqu'un peu me dire si je fais une erreure quelque par, je lui serai grés de me répondre. Le script se compile sans aucune erreure. Si je laisse la case active cochée, seul la rencontre de jour se déclenche. Je vous en prie aidez moi. | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Mar 11 Jan à 22:48 | |
| J'aurai plus fait comme ça, 2 scripts, un dans le OnEnter de la zone : - Code:
-
/* ------------> Ce script va dans le OnEnter de la ZONE ou tu as tes rencontres */
void main() {
//Tag des rencontres de jour object oJour = GetObjectByTag("TAG_JOUR");
//Tag des rencontres de nuit object oNuit = GetObjectByTag("TAG_NUIT");
//La zone object oZone = OBJECT_SELF;
//Le PJ object oPC = GetEnteringObject();
if(GetIsPC(oPC)==TRUE) { SetLocalInt(oZone,"PJ_DANS_ZONE",TRUE); }
//Si c'est l'aube if (GetIsDawn()==TRUE)
{ SetEncounterActive(TRUE,oJour); SetEncounterActive(FALSE,oNuit); }
//Si c'est le jour if (GetIsDay()==TRUE)
{ SetEncounterActive(TRUE,oJour); SetEncounterActive(FALSE,oNuit); }
//Si c'est le crepuscule if (GetIsDusk()==TRUE)
{ SetEncounterActive(FALSE,oJour); SetEncounterActive(TRUE,oNuit); }
//Si c'est la nuit if (GetIsNight()==TRUE)
{ SetEncounterActive(FALSE,oJour); SetEncounterActive(TRUE,oNuit); }
} Et un autre dans le OhB de la zone pour detruire les creatures encore spawnés si elles ne devraient pas l'être : - Code:
-
//------------> Ce script va dans le OhB de la zone. //Tu dois placer au prealable une variable dans l'editeur sur tes creature. // type int nom "JOUR" == 1 pour les creature du jour // type int nom "NUIT" == 1 pour les creature de la nuit
void main() {
object oZone = OBJECT_SELF;
//Si un joueur est dans la zone on lance le script if(GetLocalInt(oZone,"PJ_DANS_ZONE")!=TRUE) { return; }
//Si c'est l'aube if (GetIsDawn()==TRUE)
{ //On debute le scan de la zone object oCreature = GetFirstObjectInArea(oZone); //Si l'objet est valide while(GetIsObjectValid(oCreature)) { //Si l'objet scanne est bien une creature venant d'une encounter if (GetIsEncounterCreature(oCreature) == TRUE) { //Si c'est une creature de la nuit if(GetLocalInt(oCreature, "NUIT") == 1) { //On la detruit et on passe a la suivante DestroyObject(oCreature,1.0); object oCreature = GetNextObjectInArea(oZone); } } }
}
//Si c'est le jour if (GetIsDay()==TRUE)
{ //On debute le scan de la zone object oCreature = GetFirstObjectInArea(oZone); //Si l'objet est valide while(GetIsObjectValid(oCreature)) { //Si l'objet scanne est bien une creature venant d'une encounter if (GetIsEncounterCreature(oCreature) == TRUE) { //Si c'est une creature de la nuit if(GetLocalInt(oCreature, "NUIT") == 1) { //On la detruit et on passe a la suivante DestroyObject(oCreature,1.0); object oCreature = GetNextObjectInArea(oZone); } } } }
//Si c'est le crepuscule if (GetIsDusk()==TRUE)
{ //On debute le scan de la zone object oCreature = GetFirstObjectInArea(oZone); //Si l'objet est valide while(GetIsObjectValid(oCreature)) { //Si l'objet scanne est bien une creature venant d'une encounter if (GetIsEncounterCreature(oCreature) == TRUE) { //Si c'est une creature du jour if(GetLocalInt(oCreature, "JOUR") == 1) { //On la detruit et on passe a la suivante DestroyObject(oCreature,1.0); object oCreature = GetNextObjectInArea(oZone); } } } }
//Si c'est la nuit if (GetIsNight()==TRUE)
{ //On debute le scan de la zone object oCreature = GetFirstObjectInArea(oZone); //Si l'objet est valide while(GetIsObjectValid(oCreature)) { //Si l'objet scanne est bien une creature venant d'une encounter if (GetIsEncounterCreature(oCreature) == TRUE) { //Si c'est une creature du jour if(GetLocalInt(oCreature, "JOUR") == 1) { //On la detruit et on passe a la suivante DestroyObject(oCreature,1.0); object oCreature = GetNextObjectInArea(oZone); } } } }
}
Important : Les triggers des rencontres ne doivent pas couvrir les pts d'arrivées du ou des PJ(s) sinon ça marchera pas. Un nouveau script dans le OnExit de la Zone : - Code:
-
void main() {
object oZone = OBJECT_SELF;
object oPC = GetFirstObjectInArea(oZone);
//On scan la zone pour voir si ya un joueur while(GetIsObjectValid(oPC)) { //Si ya un PJ... if (GetIsPC(oPC) == TRUE) { //... on arrete le script return; } //On continue la boucle au cas ou l'objet scanné n'était pas un joueur object oPC = GetNextObjectInArea(oZone);
} //Si le script continue ici, c'est que la boucle est fini donc : // pas de joueurs dans la zone, donc on efface la variable. DeleteLocalInt(oZone,"PJ_DANS_ZONE");
}
Dsl pour l'indentation du script du OnExit je l'ai tapé direct sur le fofo. Normalement ça devrait marcher je pense.[/code]
Dernière édition par le Mer 12 Jan à 23:09, édité 1 fois | |
|
| |
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Mer 12 Jan à 0:39 | |
| n'étant pas scripteur j'ai un peu de mal à savoir ou je dois placer les variables pour mes créatures, si tu peux m'apporter ton aide la dessus, ça serait vraiment simpa. | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Mer 12 Jan à 0:50 | |
| Dans ta palette, tu edites ta creature, tu vas dans l'onglet avancé, tu cliques sur variables, et tu y mets ta variables. | |
|
| |
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Mer 12 Jan à 21:08 | |
| Yahhooooo !! ça marche ... Grand merci à toi, es-ce ton vrai pseudo de NWN ou en as tu un autre ? je demande ça parce que je voudrai t'inscrire dans les remerciement pour les aides à la conception du module. | |
|
| |
Audoucet puissance mineure du flood
Nombre de messages : 787 Localisation : bon, dans celui de quelqu'un d'autre alors... Date d'inscription : 04/01/2005
| Sujet: Re: Aide sur script Mer 12 Jan à 21:25 | |
| OHB, uniquement si ce n'est pas un module persistant, sinon bonjour le lag. | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Mer 12 Jan à 21:56 | |
| @Cékuriel : Kétil Dimzad sur maskado. Mébon, c'est gentil mais c'est pas grand chose ^^ Pis m'en servirai ptet de ce script @Audoucet : Le OHB est injustement mal aimé C'est pas quelques boucles qui vont mettre à genoux un serveur... | |
|
| |
Audoucet puissance mineure du flood
Nombre de messages : 787 Localisation : bon, dans celui de quelqu'un d'autre alors... Date d'inscription : 04/01/2005
| Sujet: Re: Aide sur script Mer 12 Jan à 22:30 | |
| Sauf que l'on parle d'un script de rencontre, donc dans le OnEnter de chaque zone, à savoir une bonne soixantaine de zone pour un petit serveur persistant... soixante script tout de même plutôt complexe, déclenchés simultanément toutes les six secondes, ça doit faire mal | |
|
| |
Audoucet puissance mineure du flood
Nombre de messages : 787 Localisation : bon, dans celui de quelqu'un d'autre alors... Date d'inscription : 04/01/2005
| Sujet: Re: Aide sur script Mer 12 Jan à 22:33 | |
| Au passage : vous pouvez très bien améliorer le script pour le mettre directement dans la configuration d'une rencontre, j'utilise cela pour ma part ^^ je vous donne pas le script car je n'en suis pas le concepteur, ce dernier étant Aethis (ElfeTyrannique). Cela prend beaucoup moins de ressource... | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Mer 12 Jan à 22:47 | |
| Bah doit y avoir moyen d'optimiser le script pour que l' Ohb ne se déclenche que lorsqu'un PJ entre dans la zone par exemple.
La ça réduira vraiment la conso de ressource. | |
|
| |
Bjorn Gobelin servile
Nombre de messages : 28 Localisation : Pays du pruneau levant Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Mer 12 Jan à 22:51 | |
| Ben il me semble que le ON hearthbeat est justement un truc qui se declanche toute les 10 seconde environ (meme moin ) , c'est justement le principe du Onhearthbeat (hein sur un battement de coeur ^^) Alors en effet faire le systeme pour qu'il se declenche au declenchement du declecheur est tres bien ets moin gourmand en ressource | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Mer 12 Jan à 23:10 | |
| Vala, j'ai édité le post avec les scripts.
Ca devrait marcher.
Le probleme de mettre des scripts direct dans les rencontres c'est qu'ils marchent très mal, genre si on avait mis le script du onenter de la zone en l'adaptant dans le OnEnter des rencontres ça marcherait pas. | |
|
| |
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Jeu 13 Jan à 11:40 | |
| ce genre de rencontre ne se fait pas sur toute les zones (heureusement) Pour ma par je ne l'applique que dans les cimetière ( populace la journée et mort-vivant la nuit ) Et comme les cimetières sont réservé à des personnage en cour de deuxième carrière ( pour mon module les lvl compte moins que les carrières ^^. Soit 1ère carière de lvl1 à lvl 5, 2ème carrière de lvl 6 à lvl 10, etc ... sauf pour les lanceur des orts qui eux ont une évolution plus complexe) autement dit si un pauvre personnage dans sa première carrière vient dans les cimetières il risque fort de mourrir définitivement. ( Et oui, on respawn pas comme on veut dans mon module ) Enfin, tout ça pour dire qu'il n'y a pas grand risque de lag au vu du nombre de cimetières hantés. | |
|
| |
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Jeu 13 Jan à 11:41 | |
| oups erreure de frappe, lisez de sorts et non des orts ^^ | |
|
| |
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Jeu 13 Jan à 15:18 | |
| et zut! Aprés réessayage, le script bug, en effet il fait apparaitre les deux types de créature et ce en pleine journée ou en pleine nuit ! | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Jeu 13 Jan à 16:57 | |
| vérifié les tags de tes rencontres, sinon il est IMPERATIFS que tes triggers d'encounters ne couvrent pas les points d'arrivée de te zone pour tes PJs. | |
|
| |
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Sam 15 Jan à 13:51 | |
| bon, j'ai vérifier mes tag (CHAT_JOUR pour la rencontre de jour et PANT_NUIT pour la rencotre de nuit), et aucun triggers d'encounter ne couvrent les points d'arrivés des pj. Mais les deux rencontre continuent d'apparaitre à chaque fois. La case Actif des rencontres doit-elle être cochée ? La case déclenchement par un pj doit-elle être cochée ? (c'est d'une galère quand on y connait que dalle en script ^^) | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Sam 15 Jan à 16:23 | |
| pour les cases a cocher j'ai vraiment trop la flemme d'ouvir le mod ( c'est un peu long maintenant ) et je sais plus, c'est le genre de truc que j'oublie lol. En tout cas je suis CERTAIN que la case actif ne doit pas être cochée. Pour la case activation par joueur je crois pas non plus mais chuis pas sur donc... Essaye les différentes possibilités | |
|
| |
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Lun 17 Jan à 15:10 | |
| j'ai fait divers essais .... et rien ! Soit je mis prend comme un manche, soit y a un prob dans les scripts (ce dont je doute) | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Mar 18 Jan à 22:37 | |
| ah je sais C'est un probleme dans mon script. Si tu avais qu'une seule encounter de tag NUIT et qu'une autre de tag JOUR dans ton module ça devrait marcher. Si tu en as plusieurs le script prend la première qu'il trouve. De + il cherche sur tout le module. Donc il prend la première qu'il toruve sur le module. Donc pas forcément dans la zone où tu testes. Désolé pour ce script foireux mais la base est là. Il te faut trouver une solution pour identifier la zone sur laquelle faire appliquer ton script et surtout quelles encounter de quelle zone. Dsl mais j'ai vraiment pas le temps de m'y coller. En mettant dans le tag de tes encounters le tag de la zone ( donc pas les memes tag pour toutes les encounters ) du style "ZONE001_JOUR" tu devrais pouvoir indentifier à quelle zone appartient telle ou telle encounter. Vala, dsl. | |
|
| |
Cékuriel Kobold trouillard
Nombre de messages : 11 Date d'inscription : 10/01/2005
| Sujet: Re: Aide sur script Mer 19 Jan à 14:44 | |
| bien, je te remercie. Mais il semble que je sois pas le premier qui essaie de faire ceci. En effet j'ai vu sur un autre forum, que ce script ne fonctionne jamais comme on le veut (la cause en est les "rencontres" apparemment) Mais si on met une créature (avec "tag_jour") positionnée sur la zone, et que l'on créer une créature (avec " Tag_nuit") je dois pouvoir faire en sorte que la créture de jour se transforme en créature de nuit lorsque la nuit est tonbée (et oui, sinon se serait plus une créature de nuit^^). Je vais regarder si je peux modifier mon script que j'ai (une créature se transforme en une autre) pour obtenir le résulta voulu. En mon cas, un gentils petit chat le jour, et la nuit une panthère. Je vous remercie tout de même pour les idées de scripts qui sont trés bonnes ! | |
|
| |
Marco Dragon vert empoisonné
Nombre de messages : 189 Date d'inscription : 25/10/2004
| Sujet: Re: Aide sur script Mer 19 Jan à 15:04 | |
| Je t'assure que si tu as qu'un seul tag nuit et qu'un seul tag jour ça marche !!!
Je l'ai fait plusieurs fois !!!
Les rencontres marchent très bien mais j'avais zappé l'histoire de la multiplicité de tags identique. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Aide sur script | |
| |
|
| |
| Aide sur script | |
|