Voiulà une solution pour ta deuxième question :
Pour chaque test dans la fonction OnPlayerCommandeText tu rajoute un test sur ton tableau dm[MAX_PLAYERS] pour savoir si le joueur peut ou ne peut pas utiliser telle ou telle commande.
Exemple :
/* Téléport vers Los Santos */
/* Commande non autorisée en DM */
if(strcmp(cmdtext, "/ls", true) == 0 && dm[playerid]==0)
...
/* Sortie du DM */
/* Commande autorisée uniquement en DM */
if(strcmp(cmdtext, "/dm quit", true) == 0 && dm[playerid]==1)
...
/* Dire bonjour */
/* Commande autorisée dans tous les cas */
if(strcmp(cmdtext, "/Hello", true) == 0)
...
Cette solution est longue à mettre en place car il faut repasser sur toutes tes commandes pour décider celles qui sont autorisées en DM, celles qui ne le sont pas et celles qui sont autorisées tout le temps.
++
Syg