Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Le temps qui passe

Par Etienne le 6/10/2002 à 11:19:48 (#2288921)

Bonjour à tous

1- Comment faire pour que le temps passe plus vite dans une zone d'un module par rapport aux autres zones.

2- Comment créer une porte dans le vide.

3- comment faire un passage secret

Merci à tous, même à ceux qui n'ont pas de réponses à mes questions..

Par miriandel le 6/10/2002 à 12:25:07 (#2289103)

1. Utilise SetTime dans le OnHeartBeat de la zone (ou mieux, comme toujours, les userdefined events, mais je vais pas recommencer un prêchi-prêcha) pour faire avancer le temps artificiellement.
Chaque minute qui s'écoule, tu peux ajouter une autre minute, par xemple.

2. Impossible.

3. Deux-cent mille façons.
Tu peux placer une Area Transition par terre et la camoufler avec un tapis (destructible, évidemment...).
Tu peux utiliser la porte secrète publiée par Bioware (ce qui répond aussi à ta question 2), voir sur le site officiel les additions du mercredi, c'était en juillet ou en août.
Tu peux placer un trigger invisible par terre qui applique un ActionJumToLocation à qui le franchit.
Pffiou, y a tellement de moyens !

Par Jedaï le 6/10/2002 à 17:30:31 (#2290178)

3. Tu peux également faire un trigger qui déclenche une conversation du type :
Tu repère une imperfection dans le mur, que fais-tu ?
__Je pousse, tire, etc... Bref j'essaie de voir s'il s'agit d'un passage secret.
____La paroi s'ouvre alors que tu appuyais dessus. En te relevant tu te retrouve face à une araignée géante en colère !
______End Dialog
__J'attend d'avoir prévenu les autres pour essayer cette porte secrète.

Avec une téléportation de tous les PCs proches de l'autre côté du mur où un dispositif apparent (levier...) déclenche une conversation assez similaire pour le retour.

Par Etienne le 6/10/2002 à 18:06:25 (#2290308)

Provient du message de miriandel
1. Utilise SetTime dans le OnHeartBeat de la zone (ou mieux, comme toujours, les userdefined events, mais je vais pas recommencer un prêchi-prêcha) pour faire avancer le temps artificiellement.
Chaque minute qui s'écoule, tu peux ajouter une autre minute, par xemple.

/i]

Comment j'utilise le userdefined events et ou est-ce que je les definie dans le cas précis d'ajouter 2 minutes pour chaque minutes écoulé.

Faut-il que le userdefined events soit associé à un personnage.

Merci de ton aide.

Par miriandel le 6/10/2002 à 19:57:16 (#2290720)


void main() {// place ceci dans le userdefined event de la zone
int nUser = GetUserDefinedEventNumber();
if(nUser == 2000) {
int i = GetTimeMinute() + 2;
SetTime(GetTimeHour(), i, GetTimeSecond(), GetTimeMillisecond());
DelayCommand(60.0, SignalEvent(OBJECT_SELF, EventUserDefined(2000)));
}
}


Pour démarrer l'avancement accéléré du temps, tu dois amorcer (une et une seule fois !) la procédure.

Tu peux faire cela au démarrage du scénario, ou à l'entrée dans la zone (événement OnEnter) si cet avancement anormal ne doit être lancé que sporadiquement.

Admettons que tu le fasse depuis le OnEnter de la zone, voici le code:
void main() // placer ceci dans le OnEnter de la zone
{
if (GetIsPC(GetEnteringObject())) {
SetLocalInt(OBJECT_SELF, "feu", GetLocalInt(OBJECT_SELF, "feu")+1);
if (GetLocalInt(OBJECT_SELF, "feu") == 1) {
SignalEvent(OBJECT_SELF, EventUserDefined(2000));
}
}
}

et dans le OnExit de la zone:
void main()
{
if (GetIsPC(GetExitingObject())) {
SetLocalInt(OBJECT_SELF, "feu", GetLocalInt(OBJECT_SELF, "feu")-1);
if (GetLocalInt(OBJECT_SELF, "feu") == 0) ClearAllActions();
}
}

Par Etienne le 6/10/2002 à 20:22:55 (#2290867)

Merci beaucoup,

Je commence a comprendre avec votre aide.

sincerement votre

Par Etienne le 7/10/2002 à 19:03:17 (#2293196)

Bonjour à tous

J'ai bien utilisé ce script si dessus, mais à chaque fois que je reviens dans cette zone le temps s'accélére encore plus. Comme si quand je sortais de la zone, il ne remettais pas le temps en standart.

Avez-vous une idée.

Merci

Par miriandel le 7/10/2002 à 20:16:34 (#2293659)

Je vérifie, il est possible qu'une zone refuse d'effacer sa pile dévénements.
Je te tiens au courant.

Par Etienne le 7/10/2002 à 20:39:26 (#2293834)

Sinon, il faudra que je trouve une solution, comme par exemple ajouter 3 jours au calndrier des joueurs.

Je ne sais pas comment on gère ce calandrier. Il doit bien y avoir une astuce. PAs évident de retrouver toutes les fonctions et tous les noms.

Par miriandel le 7/10/2002 à 20:42:27 (#2293864)

Oui, le ClearAllActions() ne marche pas sur une zone, de la même manière qu'on ne peut lui faire exécuter d'effet spécial, etc

Pour palier à cela:

void main() {// place ceci dans le userdefined event de la zone
int nUser = GetUserDefinedEventNumber();
if (nUser == 2000) {
if (GetLocalInt(OBJECT_SELF, "feu")) {
int i = GetTimeMinute() + 2;
SetTime(GetTimeHour(), i, GetTimeSecond(), GetTimeMillisecond());
SignalEvent(OBJECT_SELF, EventUserDefined(2000));
}
}
}

void main() { //et ceci dans le onExit de la zone
if (GetIsPC(GetExitingObject()))
SetLocalInt(OBJECT_SELF, "feu", GetLocalInt(OBJECT_SELF, "feu")-1);
}

Par Etienne le 8/10/2002 à 8:14:41 (#2295832)

Je ne sais pas encore si ça marche.

Est-ce qu'il n'existe pas un autre moyen de modifier le calendrier du jeu ?

J'aimerais aussi savoir comment faire pour que les PJ (PC) ne soit pas mort à 0 points de vie mais seulement inconscient, la mort ayant lieu à -10, mais que par contre un jet au hasard puisse modifier l'une de leur caracteristique (jet de vieillissement comme dans le Jeu de rôle Pendragon).
on tire au hasard avec un D10
1) - 1 en force
2) - 1 en dexterité
3) - 1 en constitution
4) - 1 en sagesse
5) - 1 en inteligence
6) - 1 en sagesse
7) +1 en sagesse
8) +1 en inteligence
9) +1 en Charisme
10) rien
Par exemple

Merci pour ton aide et bravo pour ta maitrise.

Par miriandel le 8/10/2002 à 10:02:15 (#2296114)

Tun ne peux pas altérer les attributs des PJs autrement que par objets. Le jeu n'est pas prévu pour ça, je pousserais pas le sujet à ta place.

Pour implémenter l'inconscience, tu as le choix entre une usine à gaz genre HCR, à laquelle tu ne pigeras pas grand-chose, ou un ou deux petits scripts placés dans les ondying et on death du module.

Je me demande si je n'ai pas déjà publié un module de démo qui montre tout cela, mais chui au boulot là...

JOL Archives 1.0.1
@ JOL / JeuxOnLine