Guild Event Manager (GEM) - Version 3
by Kiki from European "Conseil des Ombres" (Horde)
Home Page : http://www.wowgem.fr/
----------------------------------------
  --- FRENCH
  ChangeLog :
  ----------------
 04/09/08:
  - Erreur de localization des instances en frFR (inversion de BT et hyjal)
  - Fixe de 2 erreurs importantes dans le custom channel, pb d'UTF8 et d'ordre des messages split
  - Fixe dans la modification d'inscription qui peut perdre dans certains cas le "forced by leader"
 02/09/08:
  - Ajout d'un parametre au CB "OnSubscribed": String Source (l'un de GEM3_SUB_SOURCE_xx)
  - Ajout du champ "source" (string) aux structs GEM3_Player et GEM3_Subscriber
  - Ajout du Chevalier de la mort
 01/09/08:
  - Fixe du plugin de sorting avec minima, en cas de limite globale depasse
 25/08/08:
  - Ajout de l'initialisation des slash commandes pour les canaux custom
  - Gestion des items link dans les canaux custom (uniquement avec un slash command)
  - Fix lib CustomChatComm pour initialiser le password si seul dans le canal
 24/07/08:
  - Correction d'un bug dans la liste des membres, qui peut provoquer la perte du leader du canal guilde (si un canal custom est actif en meme temps que le canal guilde)
 21/07/08:
  - Ajout de la localization deDE (merci dad405)
 03/07/08:
  - Les fonctions GEM3_EVT_CreateNewEvent et GEM3_EVT_ModifyEvent verifient maintenant que les classes et roles passs sont valides, et duplique les tableaux passs
 02/07/08:
  - Ajout du champ "others_deleted_events" a la struct GEM3_QA_Events
  - Un event qui a ete delete, ne reapparait plus chez les autres quand un joueur qui n'a pas vu la notif de destruction se log
 01/07/08:
  - Le mode debug n'est activ par defaut, que pour les gens de "Conseil des Ombres"-EU
 30/06/08:
  - Changement mineur dans le GEM3_DBG_CheckTypes(), afin de mieux detecter les erreurs d'utilisation de l'API
 24/06/08:
  - Modification dans l'API de changement de leader
  - Ajout du CB "OnNewLeader"(event,new_leader)
  - Changement de l'api de la fonction GEM3_DBG_SetDebugMode(mode)
  - L'init du core wipe la struct GEM3_DebugLog ( = {} )
 20/06/08:
  - On n'affiche le warning "Tag not found" plus qu'une seule fois par session, par instance
 19/06/08:
  - Ajout du support des custom channels (BETA !!)
  - Ajout de 2 nouveaux CB "OnChannelJoined"(channel) et "OnChannelLeft"(channel)
 17/06/08:
  - Ajout d'un champ ev_subtype a la struct event (de type "number")
  - Le nom du canal guilde est maintenant toujours le meme quelque soit la locale() du jeu
  - Ajout de la structure GEM3_Banned
  - Ajout de la fonction GEM3_EVT_GetBannedPlayers(ev_id)
 16/06/08:
  - Ajout de la fonction GEM3_PLAY_IsOfficer(), qui retourne true si je suis officier, false sinon
  - Un officier est un joueur qui peut "editer" les notes d'officier
  - Ajout de la fonction GEM3_CHAN_IsChannelConfiguredForAnyReroll
  - Ajout de la fonction GEM3_COM_Disable(disabled,reason)
  - Ajout de la fonction GEM3_EVT_KickFromEvent(ev_id,pl_name,reason)
  - Ajout du CB "OnKickedFromEvent"(ev_id,pl_name,from,reason)
  - Ajout de la fonction GEM3_EVT_BanFromEvent(ev_id,pl_name,reason)
  - Ajout du CB "OnBannedFromEvent"(ev_id,pl_name,from,reason)
  - Ajout de la fonction GEM3_EVT_UnBanFromEvent(ev_id,pl_name)
  - Ajout du CB "OnUnBannedFromEvent"(ev_id,pl_name,from)
  - La fonction GEM3_SUB_ForceQueueForPlayer verifie maintenant correctement qu'on est leader d'un event
  - Ajout de la structure GEM3_InstanceTag. Attention, il faut utiliser les constantes GEM3_ACCESS_INST_TAG_xx pour acceder aux champs de la structure
  - Ajout du champ 'tags' dans la structure GEM3_ChannelPlayer
  - Version du core -> 3.06
 13/06/08:
  - Ajout des fonctions GEM3_COM_RegisterCustomMessage, GEM3_COM_RegisterCustomCommand, GEM3_COM_SendCustomMessage et GEM3_COM_SendCustomCommand
  - Ajout du CB "OnIncompatibleVersion"(channel,from,protocol) -> Quand un joueur sur le canal possede une version incompatible de gem
  - Ajout dans la struct GEM3_Player : main_time (INT), a utiliser pour les tris a la place de update_time
  - Ajout dans la struct GEM3_Player : alt_role (INT), permet a un joueur de definir un role secondaire (genre druide feral peut tank/dps, ou pour respec temporaire)
  - Ajout dans la struct GEM3_Subscription : main_time (INT), stocke pour etre utilise lors d'une inscription/reinscription
  - Ajout dans la struct GEM3_Subscription : alt_role (INT), permet a un joueur de definir un role secondaire (genre druide feral peut tank/dps, ou pour respec temporaire)
  - Ajout dans la struct GEM3_NonAckedSubscription : main_time (INT), stocke pour etre utilise lors d'une inscription/reinscription
  - Ajout dans la struct GEM3_NonAckedSubscription : alt_role (INT), permet a un joueur de definir un role secondaire (genre druide feral peut tank/dps, ou pour respec temporaire)
  - Ajout dans la struct GEM3_Event : ev_duration (INT), permet de definir une duree pour un event
  - Ajout d'un parametre 'alt_role' aux fonctions d'API suivantes : GEM3_SUB_Subscribe, GEM3_SUB_SubscribeUpdate et GEM3_SUB_SubscribeExternal
  - Ajout d'un parametre 'ev_duration' aux fonctions d'API suivantes : GEM3_EVT_CreateNewEvent et GEM3_EVT_ModifyEvent
  - Modification du protocol Subscription : Differenciation entre un subscribe update mineur (changement dans le commentaire) et majeur (changement de file ou de role)
  - Changement dans la commande "Subscribe" du module de synchro
  - Mise a jour du plugin de sorting pour utiliser le nouveau parametre main_time, plutot que update_time
  - Le leader ne force plus de queue a un joueur qui a choisi de ne plus venir
 12/06/08:
  - Evite a GEM3_QUE_ScheduleCommand, de scheduler 2 fois la meme commande
 11/06/08:
  - Changement d'un champ de la struct GEM3_NonAckedSubscription, stamp devient update_time pour mieux correspondre a la struct GEM3_Player
  - La fonction GEM3_CMD_GetNonAckedSubscriptions retourne maintenant les GEM3_NonAckedSubscription tries par ordre d'inscription
  - Changement des params du CB "OnUpdatedEvent" : "OnUpdatedEvent"(event,isModified,isDateChanged) <- isModified est a true si la revision de l'event a change ; isDateChanged est a true, si la date de l'event a change
  - Un joueur peut maintenant choisir NOT_COMING, meme si le lead le force dans une queue
 10/06/08:
  - Fix d'un petit bug dans le module de synchro web
 9/06/08:
  - Ajout du champ "revision" dans la struct d'un event
  - Ajout de GEM3_RegisterCallback(name,func) et GEM3_UnregisterCallback(name,func)
  - Ajout de la fonction GEM3_GetVersion(), qui retourne la version courante du core de GEM3
  - Ajout de la fonction GEM3_COM_IsDisabled(), qui retourne true, si GEM est desactive pour la session en cours, a cause d'un conflit d'heure. Retourne egalement la raison en 2e parametre
  - Fix de la fonction de sorting ne respectant pas les min/max de roles
  - Ajout du CB "OnSortingInconsistency"(event), qui se declenche si le plugin de sorting detecte une incoherence dans le respect des minimas/maximas
  - Un joueur qui recoit une notification d'assistant, se definit maintenant correctement assistant
 8/06/08:
  - Ajout du CB "OnUserWithIncorrectTimeSettings"(channel,pl_name,offset), pour quand un TimeRef detecte qu'un user a un mauvais reglage de son PC
 7/06/08:
  - Ajout d'un champ "ev_type" de type "number" dans la struct event, ce champ est pass sur le reseau.
  - Modification des fonctions GEM3_EVT_CreateNewEvent() et GEM3_EVT_ModifyEvent()
 6/06/08:
  - Ajout du checking des types passs pour les fonctions de l'api (en grosse partie)
 4/06/08:
  - Correction des fonctions de recover pour gerer au mieux les events qu'on ignore
 3/06/08:
  - Les fonctions de souscriptions verifient maintenant qu'on est connect sur le canal de l'event, sinon erreur
  - Ajout de la fonction GEM3_EVT_AmIAssistant(ev_id)
  - La fonction d'ajout External (ainsi que SYNC web) verifient que le joueur est un assistant de l'event
 2/06/08:
  - La fonction GEM3_EVT_ArchiveEvent accepte maintenant soit un event, soit un ev_id, et retourne maintenant true en cas de succes, false sinon
  - Ajout de la fonction GEM3_EVT_DeleteArchivedEvent(ev_id)
  - Ajout de la fonction expiration_time,expiration_time_self = GEM3_EVT_GetExpirationTimes()
  - La fonction GEM3_SUB_ForceQueueForPlayer prends maintenant un "ev_id" au lieu d'un "event"
  - La fonction GEM3_EVT_ModifyEvent prends maintenant un "ev_id" au lieu d'un "event"
  - Fix de la fonction GEM3_SUB_SubscribeUpdate, qui autorise une inscription apres la deadline
  - Quand on appelle GEM3_SUB_SubscribeUpdate (avec succes), l'etat d'inscription (GEM3_Subscription.state) repasse a GEM3_SUB_STATE_NOT_ACKED)
 30/05/08:
  - Ajout d'un nouveau flag de debug: GEM3_DEBUG_SYNC (0x0400) (a ajouter dans la table de conversion des couleurs depuis un code d'erreur dans l'UI)
  - Ajout de la possibilite de modifier (hors jeu) le fichier des SV, en creeant une variable speciale GEM3_ExternalCommands (voir doc), qui permet d'importer des inscriptions hors jeu
  - Ajout de la fonction d'API GEM3_SYNC_CheckForExternalCommands() (et sa doc)
  - Ajout de la fonction GEM3_SUB_SubscribeExternal(ev_id,pl_name,guild,level,class,role,comment,force_queue) et de sa doc
  - Ajout du code de la fonction GEM3_SUB_CheckPlayersLevel(). Quand on edite un event, tous les joueurs qui n'ont pas le bon level sont automatiquement ejects
  - Ajout de la fonction GEM3_EVT_ArchiveEvent(ev_id)
 29/05/08:
  - Fix de la lib chronos (plus de ref a sea)
  - Ajout d'un nouveau parametre au CB "OnDebugInfos"(bcast,cmd_que_count,evt_que_count)
  - Fix du plugin de sort par defaut, et gestion des minimas dans celui ci
  - Ajout d'une fonction de debug qui affiche le contenu complet (recursif) d'un tableau : function GEM3_PrintTable(tab)
 28/05/08:
  - Ajout de la fonction GEM3_EVT_SetExpirationTimes(expiration_time,expiration_time_self), qui permet de modifier les delais avant expiration (effacement auto) des events, suivant qu'on est leader (self) ou non (delai en secondes)
  - Modification du CB "OnUpdatedEvent": Ajout d'un 2e parametre, qui indique si une update est majeure ou non (pour l'instant, majeure si changement dans la date)
  - Fix ParseChannelMessage, en cas de changement de guilde sans deco/reco
  - Fix GEM3_CMD_GetNonAckedSubscriptions
  - Changement de protocol comm pour forcer un upgrade
 27/05/08:
  - Ajout du CB "OnIncorrectTimeSettings"(channel,from,offset) -> Se declenche qd un TimeRef m'informe que j'ai un time settings incorrect (ou si je suis un timeRef, des qu'un joueur a un time settings incorrect) -> Desactive automatiquement toute communication jusqu'a la deco/reco (si je suis le joueur incorrect)
  - Ajout du CB "OnTimeRefConflict"(channel,from,offset) -> Se declenche qd on detecte un conflit entre 2 TimeRef (ecart trop grand entre 2 joueurs declares en time ref) -> Desactive automatiquement chez les 2 joueurs le flag TimeRef -> Desactive automatiquement toute communication jusqu'a la deco/reco
  - Ajout de la fonction GEM3_STAMP_IsTimeRef() -> Retourne un boolean disant si on est un timeref ou non
  - Ajout de la fonction GEM3_STAMP_SetTimeRef(isTimeRef)
  - Ajout d'un appel au CB "OnPlayerInfosUpdate" qd un joueur quitte le canal, avec ses infos a jour (lastlog et connected)
  - On ignore maintenant les EventUpdate dont le leader est ignor
  - Quand on ignore un joueur, ca efface completement les events qu'il avait. Si on le unignore, il faut un petit delay (prochain bcast d'event) pour les recuperer a nouveau
 26/05/08:
  - Ajout de la fonction GEM3_CMD_GetNonAckedSubscriptions (et de sa doc)
  - Nouveau CB: "OnEventAssistant"(ev_id,pl_name) -> Appel quand je suis promu assistant d'un event
  - Fix des fonctions GEM3_EVT_SetAssistant et GEM3_EVT_IsAssistant, et ajout de leur documentation
  - Ajout du champ isTimeRef dans la struct GEM3_ChannelPlayer (accessible pour tous les joueurs connects)
  - Ajout d'un garde-fou a la fonction GEM3_SUB_SubscribeUpdate, si on l'appelle avec un perso qui n'a jamais subscribe
  - Ajout d'un garde-fou pour empecher un leader d'ignorer un de ses propre events
 22/05/08:
  - Fixe pour le GEM3_SUB_SubscribeUpdate() du leader (CB correctement appels, et plus d'envoi reseau)
  - Le champ "lead_force_queue" de la struct GEM3_Player est maintenant envoye sur le reseau
  - Les clients recoivent maintenant un OnDeletedEvent(event) quand le leader efface un event
  - Lors du callback OnDeletedEvent, l'event en question est maintenant toujours correctement retir de la liste des events, avant l'appel au CB
 19/05/08:
  - Nouveau parametre au CB "OnVariablesLoaded"
  - Nouveau CB : "OnUpdatedRecoveredEvent"
  - Nouveau choix d'appel pour un CrashedEvent : GEM3_EVT_DeleteLostEvent(event,reason)
  - Bcp de fix internes
  - Nouvelle fonction d'api pour forcer un reset de la config au prochain reload ui : "GEM3_ForceConfigReset()"
  - Nouveau CB de debug : "OnDebugInfos" (a actuellement 2 parametres)
