Je n'ai pas testé ton include mais ce dont je suis sur c'est qu'il ne va pas marcher.
La raison est simple, tu n'as qu'un seul TextDraw.
Ainsi, lorsque le premier joueur arrive, tu vas appeler AB_DateHeure(playerid, Titre[]) et donc créer le TextDraw pour ce joueur.
Quand le deuxième joueur va arriver, tu vas "écraser" l'id de l'ancien TextDraw (celui du premier joueur) par celui du deuxième car tu vas créer un nouveau TextDraw (le premier sera donc perdu) mais en utilisant le même ID (Text:AB_Date).
Ceci ne se verra pas car le TextDraw (le deuxième) sera affiché correctement à tous les joueurs.
Le problème, c'est quand un des deux joueurs va se déconnecter et que tu vas appeler AB_Destruction(playerid) ...
Le TextDraw (le seul qui est affiché) sera détruit.
Par chance, comme le problème est le même avec le timer (il n'y en a qu'un pour tout les joueurs), et que ce timer sera arrêté à l'appel de AB_Destruction(playerid), le serveur ne plantera pas en essayant d'afficher un TextDraw qui n'existe plus.
Ce qui va se passer, c'est que le TextDraw va disparaître (on se figer, je suis pas sûr) pour les joueurs qui resteront sur le serveur.
Et il réapparaitra lorsque qu'un nouveau joueur se connectera ....
Bref, l'idée est très bonne mais il faut creuser un peu plus pour que ça marche.
Tu as donc 2 solutions (je donne la meilleure en premier) :
1 - Créer un seul TextDraw dans OnGameModeInit pour tous les joueurs (que tu affiches lorsque le joueur spawn) et un seul timer qui met à jour la chaîne de ce TextDraw. Le TextDraw et le timer devront être détruits dans OnGameModeExit.
L'avantage de cette solution c'est qu'elle ne consomme qu'un seul TextDraw et un seul timer.
2 - Créer un TextDraw et un timer par joueur à l'aide d'un tableau (new Text:AB_Date[MAX_PLAYERS];) pour que chaque joueur est sont TextDraw à lui, sans gêner les autres. L'avantage de cette solution c'est que ça ne fait pas trop modifier ton code.
++
Syg