SharedEvent

N'en posez pas trop, spas ? C'est chez web3d-fr, la technique. Ici, c'est juste dépannage.

SharedEvent

Messagepar Taranis » Ven 04 Déc 2009 0:01

Quelqu'un aurait-il en tête des exemples de SharedEvent autres que la documentation Blaxxun sur Outside ?

Comment met-on en place un SharedEvent ? Par exemple pour qu'une animation soit vue de tous ?
Avatar de l’utilisateur
Taranis
Voyageur du mois
Voyageur du mois
 
Messages: 2390
Inscrit le: Mer 15 Sep 2004 11:19

Re: SharedEvent

Messagepar Arsène » Ven 04 Déc 2009 1:37

Taranis a écrit:Quelqu'un aurait-il en tête des exemples de SharedEvent autres que la documentation Blaxxun sur Outside ?

Comment met-on en place un SharedEvent ? Par exemple pour qu'une animation soit vue de tous ?

Je te montre la mienne, si tu me montres la tienne ! :)

Si tu pouvais nous mettre sur quelques lignes le VRML d'une animation qui soit déclenchée comme celle que tu es en train de faire, ce serait mieux ; il y a tellement de façons de faire...

Pas besoin d'un exemple très sophistiqué, juste l'essentiel qui tourne sur le même modèle que ton animation ; un exemple du genre "clic sur une Box et une autre Box qui tourne" serait bien suffisant pour y insérer un SharedEvent ; du moment que c'est déclenché de la même façon que ton animation ; comme ça, tout le monde pourrait en profiter.
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: SharedEvent

Messagepar Arsène » Ven 04 Déc 2009 7:15

Comme un SharedEvent ne marche que quand Ccpro, le plugin de chat, est connecté au serveur, tu pourrais même te faire un frameset avec cet exemple comme scène, pour tes essais ; tu dois déjà l'avoir fait, pour essayer l'exemple de la doc.
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: SharedEvent

Messagepar Taranis » Ven 04 Déc 2009 11:56

Ha, j'ai trouvé l'explication du principe chez Thyme : apparemment il suffirait de modifier les ROUTE.

Je vais donc faire un test avec une animation. Le truc c'est que plusieurs animations sont lancées par une action dans ma scène.
Avatar de l’utilisateur
Taranis
Voyageur du mois
Voyageur du mois
 
Messages: 2390
Inscrit le: Mer 15 Sep 2004 11:19

Re: SharedEvent

Messagepar Matthieu » Ven 04 Déc 2009 12:03

... il y a aussi le moyen (indiqué par Thyme) de partager un événement en passant par la fenêtre de tchatte.
Le tchatte, par définition, est un événement partagé (il passe par le serveur et il est renvoyé à tous).
Donc, si on commande un événement en écrivant un mot dans la fenêtre de tchatte, cet événement sera observé par tous ... (enge start ou enge stop, tout le monde connaît ça)

http://pagesperso-orange.fr/Matthieu/Seamless3d/commandes_par_tchatte.html
Matthieu
Avatar de l’utilisateur
Matthieu
 
Messages: 945
Inscrit le: Sam 11 Sep 2004 7:10
Localisation: France ouest

Re: SharedEvent

Messagepar Taranis » Ven 04 Déc 2009 12:26

Merci Matthieu, voilà qui serait fort utile et plaisant à essayer... si les ccpro étaient mis à jour avec le serveur revemonde...

Enfin bon, faut pas trop en demander non plus :)

Entre temps, j'ai fait un test ici : le cube vert sert à lancer l'anime en cliquant dessus. Le cube rouge a un mouvement de balancier. Le clic sur le cube vert fait que le cube rouge se déplace, tout en se balançant, puis arrête tout mouvement une fois déplacé.

ET ça marche du premier coup, je deviens meilleur :)

http://taranis.revemonde.net/test/contact.htm
Avatar de l’utilisateur
Taranis
Voyageur du mois
Voyageur du mois
 
Messages: 2390
Inscrit le: Mer 15 Sep 2004 11:19

Re: SharedEvent

Messagepar Arsène » Ven 04 Déc 2009 12:54

Taranis a écrit:Ha, j'ai trouvé l'explication du principe chez Thyme : apparemment il suffirait de modifier les ROUTE.

Je vais donc faire un test avec une animation. Le truc c'est que plusieurs animations sont lancées par une action dans ma scène.

S'il n'y a qu'une seule action pour déclencher, c'est elle qu'il faut distribuer à tout le monde ; c'est ce que fait le SharedEvent, il distribue un event à tout le monde via le serveur.
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: SharedEvent

Messagepar Taranis » Ven 04 Déc 2009 12:56

Voici donc le code :


Code: Tout sélectionner
 #VRML V2.0 utf8

PROTO BlaxxunZone [
eventIn         MFNode   addEvents
eventIn         MFNode   removeEvents
exposedField    MFNode   events []
exposedField    MFNode   avatars []
eventOut        MFNode   events_added
eventOut        MFNode   events_removed

eventIn         SFInt32  set_myAvatarGesture
eventIn         SFInt32  myAvatarGestureFromServer
eventOut        SFInt32  myAvatarGesture_changed
eventOut        SFInt32  myAvatarGestureToServer
 

exposedField    MFString sendToChat ""
exposedField    SFFloat  beamToDistance 3
exposedField    MFString groupChatName ""
exposedField    MFString groupChat ""
exposedField    SFString myAvatarName ""
exposedField    MFNode   avatarLOD []
exposedField    MFFloat  avatarRange []
eventIn         MFNode   addAvatars
eventOut  MFNode   avatars_added
eventIn   MFNode   removeAvatars
eventOut  MFNode   avatars_removed
]

{
DEF S Script {
  eventOut MFNode avatars_added IS avatars_added
  eventOut MFNode avatars_removed IS avatars_removed
  eventIn SFInt32  set_myAvatarGesture IS set_myAvatarGesture
  eventIn SFInt32  myAvatarGestureFromServer IS myAvatarGestureFromServer
  eventOut SFInt32  myAvatarGesture_changed IS myAvatarGesture_changed
  eventOut SFInt32  myAvatarGestureToServer IS myAvatarGestureToServer
  eventIn MFNode addAvatars IS addAvatars
  eventIn MFNode removeAvatars IS removeAvatars

  url "vrmlscript:
  function addAvatars(value, time) { avatars_added = value; }
  function removeAvatars(value, time) { avatars_removed = value; }
  function set_myAvatarGesture(value, time) { myAvatarGestureToServer = value; }
  function myAvatarGestureFromServer(value, time) { myAvatarGesture_changed = value; }

  "
}
}

PROTO SharedEvent [
exposedField SFString    name "event"
exposedField SFString    type      "SFTime"
exposedField SFString    toNickname     ""
exposedField SFString    toGroup   ""
eventIn   SFBool    boolFromServer
eventIn   SFColor   colorFromServer
eventIn   SFFloat   floatFromServer
eventIn   SFInt32   int32FromServer
eventIn   SFRotation     rotationFromServer
eventIn   SFString  stringFromServer
eventIn   SFTime    timeFromServer
eventIn   SFVec2f   vec2fFromServer
eventIn   SFVec3f   vec3fFromServer
eventOut  SFBool    boolToServer
eventOut  SFColor   colorToServer
eventOut  SFFloat   floatToServer
eventOut  SFInt32   int32ToServer
eventOut  SFRotation     rotationToServer
eventOut  SFString  stringToServer
eventOut  SFTime    timeToServer
eventOut  SFVec2f   vec2fToServer
eventOut  SFVec3f   vec3fToServer
eventIn   SFBool    set_bool
eventIn   SFColor   set_color
eventIn   SFFloat   set_float
eventIn   SFInt32   set_int32
eventIn   SFRotation     set_rotation
eventIn   SFString  set_string
eventIn   SFTime    set_time
eventIn   SFVec2f   set_vec2f
eventIn   SFVec3f   set_vec3f
eventOut  SFBool    bool_changed
eventOut  SFColor   color_changed
eventOut  SFFloat   float_changed
eventOut  SFInt32   int32_changed
eventOut  SFRotation     rotation_changed
eventOut  SFString  string_changed
eventOut  SFTime    time_changed
eventOut  SFVec2f   vec2f_changed
eventOut  SFVec3f   vec3f_changed
eventOut  SFBool    initialized
]
{
Script {
  eventIn   SFBool    boolFromServer IS   boolFromServer
  eventIn   SFColor   colorFromServer     IS   colorFromServer
  eventIn   SFFloat   floatFromServer     IS   floatFromServer
  eventIn   SFInt32   int32FromServer     IS   int32FromServer
  eventIn   SFRotation     rotationFromServer  IS   rotationFromServer
  eventIn   SFString  stringFromServer    IS   stringFromServer
  eventIn   SFTime    timeFromServer      IS   timeFromServer
  eventIn   SFVec2f   vec2fFromServer     IS   vec2fFromServer
  eventIn   SFVec3f   vec3fFromServer     IS   vec3fFromServer
  eventOut  SFBool    boolToServer   IS   boolToServer
  eventOut  SFColor   colorToServer  IS   colorToServer
  eventOut  SFFloat   floatToServer  IS   floatToServer
  eventOut  SFInt32   int32ToServer  IS   int32ToServer
  eventOut  SFRotation     rotationToServer    IS   rotationToServer
  eventOut  SFString  stringToServer      IS   stringToServer
  eventOut  SFTime    timeToServer   IS   timeToServer
  eventOut  SFVec2f   vec2fToServer  IS   vec2fToServer
  eventOut  SFVec3f   vec3fToServer  IS   vec3fToServer
  eventIn   SFBool    set_bool  IS   set_bool
  eventIn   SFColor   set_color      IS   set_color
  eventIn   SFFloat   set_float      IS   set_float
  eventIn   SFInt32   set_int32      IS   set_int32
  eventIn   SFRotation     set_rotation   IS   set_rotation
  eventIn   SFString  set_string     IS   set_string
  eventIn   SFTime    set_time  IS   set_time
  eventIn   SFVec2f   set_vec2f      IS   set_vec2f
  eventIn   SFVec3f   set_vec3f      IS   set_vec3f
  eventOut  SFBool    bool_changed   IS   bool_changed
  eventOut  SFColor   color_changed  IS   color_changed
  eventOut  SFFloat   float_changed  IS   float_changed
  eventOut  SFInt32   int32_changed  IS   int32_changed
  eventOut  SFRotation     rotation_changed    IS   rotation_changed
  eventOut  SFString  string_changed      IS   string_changed
  eventOut  SFTime    time_changed   IS   time_changed
  eventOut  SFVec2f   vec2f_changed  IS   vec2f_changed
  eventOut  SFVec3f   vec3f_changed  IS   vec3f_changed
  eventOut  SFBool    initialized    IS   initialized
  url "vrmlscript:
  function initialize( time ) { initialized = TRUE;}
  function boolFromServer (value, time) { bool_changed = value; }
  function colorFromServer (value, time) { color_changed = value; }
  function floatFromServer (value, time) { float_changed = value; }
  function int32FromServer (value, time) { int32_changed = value; }
  function rotationFromServer (value, time) {rotation_changed = value; }
  function stringFromServer (value, time) { string_changed = value; }
  function timeFromServer (value, time) { time_changed = time; }
  function vec2fFromServer (value, time) { vec2f_changed = value; }
  function vec3fFromServer (value, time) { vec3f_changed = value; }
  function set_bool (value, time) { boolToServer = value; }
  function set_color (value, time) { colorToServer = value; }
  function set_float (value, time) { floatToServer = value; }
  function set_int32 (value, time) { int32ToServer = value; }
  function set_rotation (value, time) { rotationToServer = value; }
  function set_string (value, time) { stringToServer = value; }
  function set_time (value, time) { timeToServer = value; }
  function set_vec2f (value, time) { vec2fToServer = value; }
  function set_vec3f (value, time) { vec3fToServer = value; }
  "
}
}

DEF SharedZone BlaxxunZone {
    events [
        DEF sharedAnim1 SharedEvent{ }
    ]
}





DEF Camera01 Viewpoint {
  position -251.5 144.7 253.6
  orientation 0.3109 0.9399 0.1413 -0.9006
  fieldOfView 0.6024
  description "Camera01"
}
DEF Box01 Transform {
  translation -23.87 0 -14.92
  children [
      Transform {
        translation 0 12.41 0
        children [
          Shape {
            appearance Appearance {
              material Material {
                diffuseColor 0.3451 0.6941 0.102
              }
            }
            geometry Box { size 19.67 24.81 21.58 }
          }
    ] }
DEF TouchSensor01-SENSOR TouchSensor { enabled TRUE }
  ]
}
DEF Dummy01 Transform {
  translation 44.16 0 96.08
  children [
  DEF Dummy01-TIMER TimeSensor { loop FALSE cycleInterval 3.333 },
  DEF Dummy01-POS-INTERP PositionInterpolator {
    key [0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.3,
        0.33, 0.36, 0.39, 0.42, 0.45, 0.48, 0.51, 0.54, 0.57, 0.6,
        0.63, 0.66, 0.69, 0.72, 0.75, 0.78, 0.81, 0.84, 0.87, 0.9,
        0.93, 0.96, 0.99, 1, ]
    keyValue [44.16 0 96.08, 44.88 0 95.17, 46.97 0 92.52, 50.34 0 88.24,
      54.92 0 82.43, 60.6 0 75.22, 67.31 0 66.71, 74.96 0 57.01,
      83.45 0 46.24, 92.7 0 34.5, 102.6 0 21.91, 113.1 0 8.576,
      124.1 0 -5.387, 135.6 0 -19.87, 147.3 0 -34.76, 159.3 0 -49.95,
      171.4 0 -65.32, 183.6 0 -80.76, 195.7 0 -96.17, 207.7 0 -111.4,
      219.6 0 -126.4, 231.1 0 -141.1, 242.3 0 -155.2, 252.9 0 -168.8,
      263.1 0 -181.6, 272.6 0 -193.7, 281.3 0 -204.8, 289.3 0 -214.8,
      296.3 0 -223.8, 302.3 0 -231.4, 307.3 0 -237.7, 311.1 0 -242.5,
      313.6 0 -245.7, 314.8 0 -247.2, 314.9 0 -247.3, ] },
    DEF Box02 Transform {
      translation -9.954 0 -78.99
      children [
  DEF Box02-TIMER TimeSensor { loop TRUE cycleInterval 3.333 },

      DEF Box02-POS-INTERP PositionInterpolator {
        key [0, 0.72, 0.75, 0.78, 0.81, 0.84, 0.87, 0.93, 0.96, 0.99,
            ]
        keyValue [-9.954 0 -78.99, -9.954 0 -78.99, -9.954 0 -78.99,
          -9.954 0 -78.99, -9.954 0 -78.99, -9.954 0 -78.99,
          -9.954 0 -78.99, -9.954 0 -78.99, -9.954 0 -78.99,
          -9.954 0 -78.99, ] },
      DEF Box02-ROT-INTERP OrientationInterpolator {
        key [0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27,
            0.3, 0.33, 0.36, 0.39, 0.42, 0.45, 0.48, 0.51, 0.54, 0.57,
            0.6, 0.63, 0.66, 0.69, 0.72, 0.75, 0.78, 0.81, 0.84, 0.87,
            0.9, 0.93, 0.96, 0.99, 1, ]
        keyValue [1 0 0 0, 0 0 1 -0.05789, 0 0 1 -0.1238, 0 0 1 -0.1933,
          0 0 1 -0.2617, 0 0 1 -0.3246, 0 0 1 -0.3775,
          0 0 1 -0.4158, 0 0 1 -0.435, 0 0 1 -0.431, 0 0 1 -0.4049,
          0 0 1 -0.3613, 0 0 1 -0.3046, 0 0 1 -0.2393,
          0 0 1 -0.17, 0 0 1 -0.1012, 0 0 1 -0.03748, 0 0 -1 -0.01812,
          0 0 -1 -0.0792, 0 0 -1 -0.1468, 0 0 -1 -0.2164,
          0 0 -1 -0.2835, 0 0 -1 -0.3436, 0 0 -1 -0.3921,
          0 0 -1 -0.4245, 0 0 -1 -0.4363, 0 0 -1 -0.4245,
          0 0 -1 -0.3921, 0 0 -1 -0.3436, 0 0 -1 -0.2835,
          0 0 -1 -0.2164, 0 0 -1 -0.1468, 0 0 -1 -0.0792,
          0 0 -1 -0.01812, 1 0 0 0, ] },
          Transform {
            translation 0 21.29 0
            children [
              Shape {
                appearance Appearance {
                  material Material {
                    diffuseColor 0.8784 0.3373 0.3373
                  }
                }
                geometry Box { size 38.25 42.58 40.84 }
              }
        ] }
      ]
    }
  ]
ROUTE Dummy01-TIMER.fraction_changed TO Dummy01-POS-INTERP.set_fraction
ROUTE Dummy01-POS-INTERP.value_changed TO Dummy01.set_translation
ROUTE Dummy01-TIMER.fraction_changed TO Box02-POS-INTERP.set_fraction
ROUTE Box02-POS-INTERP.value_changed TO Box02.set_translation
ROUTE Dummy01-TIMER.fraction_changed TO Box02-ROT-INTERP.set_fraction
ROUTE Box02-TIMER.fraction_changed TO Box02-ROT-INTERP.set_fraction
ROUTE Box02-ROT-INTERP.value_changed TO Box02.set_rotation
}

#ROUTE d'origine
#ROUTE TouchSensor01-SENSOR.touchTime TO Dummy01-TIMER.startTime
#ROUTE TouchSensor01-SENSOR.touchTime TO Box02-TIMER.stopTime
#ROUTE TouchSensor01-SENSOR.isActive TO TouchSensor01-SENSOR.enabled

#ROUTE modifiées pour SharedEvent

ROUTE TouchSensor01-SENSOR.touchTime TO sharedAnim1.set_time
ROUTE sharedAnim1.time_changed TO Dummy01-TIMER.startTime

ROUTE TouchSensor01-SENSOR.touchTime TO sharedAnim1.set_time
ROUTE sharedAnim1.time_changed TO Box02-TIMER.stopTime

ROUTE TouchSensor01-SENSOR.isActive TO TouchSensor01-SENSOR.enabled




La dernière ligne "ROUTE TouchSensor01-SENSOR.isActive TO TouchSensor01-SENSOR.enabled" permet de ne plus pouvoir cliquer et donc jouer l'animation, pour celui qui l'a déjà lancé une fois.
Cependant j'aimerais que cet "état" ( l'animation a été jouée une fois, on ne peut plus la rejouer) soit partagé par tous.
Comment faire ?
Avatar de l’utilisateur
Taranis
Voyageur du mois
Voyageur du mois
 
Messages: 2390
Inscrit le: Mer 15 Sep 2004 11:19

Re: SharedEvent

Messagepar Arsène » Ven 04 Déc 2009 13:05

Taranis a écrit:La dernière ligne "ROUTE TouchSensor01-SENSOR.isActive TO TouchSensor01-SENSOR.enabled" permet de ne plus pouvoir cliquer et donc jouer l'animation, pour celui qui l'a déjà lancé une fois.
Cependant j'aimerais que cet "état" ( l'animation a été jouée une fois, on ne peut plus la rejouer) soit partagé par tous.
Comment faire ?

Je disais donc... il n'y a pas ça dans les options du SharedEvent ?
Seul le dernier arrivé pourra déclencher l'animation ?
Ou alors, est-ce que tu ne veux qu'une seule fois à chaque visite ?

<mieux ! :)>
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: SharedEvent

Messagepar Taranis » Ven 04 Déc 2009 13:08

Arsène a écrit:Ou alors, est-ce que tu ne veux qu'une seule fois à chaque visite ?


Voilà, c'est cela que je veux.
Avatar de l’utilisateur
Taranis
Voyageur du mois
Voyageur du mois
 
Messages: 2390
Inscrit le: Mer 15 Sep 2004 11:19

Re: SharedEvent

Messagepar Arsène » Ven 04 Déc 2009 13:11

Taranis a écrit:
Arsène a écrit:Ou alors, est-ce que tu ne veux qu'une seule fois à chaque visite ?


Voilà, c'est cela que je veux.

Un petit script devrait permettre de mémoriser si l'event a déjà été envoyé et le bloquer si c'est le cas.
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: SharedEvent

Messagepar Taranis » Ven 04 Déc 2009 13:17

Il faudrait quelquechose du genre :

Code: Tout sélectionner
ROUTE TouchSensor01-SENSOR.isActive TO sharedAnim1.set_time
ROUTE sharedAnim1.time_changed TO TouchSensor01-SENSOR.enabled


Mais avec autre chose que "set_time" et "enabled" , qui sont des arguments (?) qui ne fonctionnent pas dans ce cas précis.
Avatar de l’utilisateur
Taranis
Voyageur du mois
Voyageur du mois
 
Messages: 2390
Inscrit le: Mer 15 Sep 2004 11:19

Re: SharedEvent

Messagepar Arsène » Ven 04 Déc 2009 13:47

Tu n'as pas besoin de mettre deux fois
Code: Tout sélectionner
ROUTE TouchSensor01-SENSOR.touchTime TO sharedAnim1.set_time

le touchTime est envoyé au serveur avec le premier ROUTE.

Ce qui donne
Code: Tout sélectionner
#...

#ROUTE TouchSensor01-SENSOR.touchTime TO Dummy01-TIMER.startTime
#ROUTE TouchSensor01-SENSOR.touchTime TO Box02-TIMER.stopTime

# le touchTime est envoyé au serveur via le set_time du SharedEvent
ROUTE TouchSensor01-SENSOR.touchTime TO sharedAnim1.set_time
# le retour du serveur arrive sur le time_changed du SharedEvent et est envoyé aus destinations
ROUTE sharedAnim1.time_changed TO Dummy01-TIMER.startTime
ROUTE sharedAnim1.time_changed TO Box02-TIMER.stopTime

#...


Maintenant, le petit script... afin de bloquer le retour du serveur pour ceux qui l'ont déjà eu...

Comment ça marche, déjà, le Script ? :)
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Re: SharedEvent

Messagepar Taranis » Ven 04 Déc 2009 13:57

Ok pour la modif, je teste de suite... Ok, ça marche pareil :) Merci.

Pour les Script, je ne sais pas.
Avatar de l’utilisateur
Taranis
Voyageur du mois
Voyageur du mois
 
Messages: 2390
Inscrit le: Mer 15 Sep 2004 11:19

Re: SharedEvent

Messagepar Arsène » Ven 04 Déc 2009 14:17

Code: Tout sélectionner
DEF OneShot Script {
eventIn SFTime touchTime_in
eventIn SFTime set_time
eventOut SFTime touchTime_out
eventOut SFTime time_changed
field SFBool touched FALSE
field SFBool done FALSE
url "javascript:
function touchTime_in(value, time) {
if (!touched) {
touched = true; // bloque le touchTime
touchTime_out = time;
}
}
function set_time(value, time) {
if (!done) {
done = touched = true; // bloque le touchTime et le shared event
time_changed = time;
}
}
"
}

# bloque le touchTime vers le serveur si l'anim a été jouée
ROUTE TouchSensor01-SENSOR.touchTime TO OneShot.touchTime_in
ROUTE OneShot.touchTime_out TO sharedAnim1.set_time

# bloque la réponse du serveur et le touchTime si l'anim a été jouée
ROUTE sharedAnim1.time_changed TO OneShot.set_time
ROUTE OneShot.time_changed TO Dummy01-TIMER.startTime
ROUTE OneShot.time_changed TO Box02-TIMER.stopTime

#...


Tu remplaces le code qui précède par celui-ci et ça devrait le faire... je vérifie mon code, au jugé... :)

Il faut aussi bloquer le touchTime pour empêcher ceux qui ont déjà vue l'animation de la déclencher pour les autres ; sans, ils pourraient la déclencher sans pouvoir la voir.

Ça devrait le faire, à vue de nez. :)

Quand je dis "ce qui précède", je parle du code que j'ai mis plus haut.
Dernière édition par Arsène le Ven 04 Déc 2009 14:21, édité 2 fois au total.
Raison: changé eventIn time_changed en eventOut time_changed
Avatar de l’utilisateur
Arsène
 
Messages: 4201
Inscrit le: Mer 08 Sep 2004 22:35
Localisation: Paris

Suivant

Retour vers Questions techniques

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron