• 23 Avril 2025, 15:11:37


Auteur Sujet: [INC] Système MultiLangue  (Lu 9244 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
[INC] Système MultiLangue
« le: 08 Septembre 2008, 02:48:35 »
Salut à tous,

alors je suis ici afin de vous présenté ma première participation au showroom :P... mon nouveau, et premier...

Include de langues

Fonctionnalités:

  • GetLang(playerid) : fonction qui permet de déterminer la langue d'un joueur
  • SendRndMsg : un SendClientMessage avec un random sur les couleurs (pas besoin de se casser la tête à en mettre, surtout utile lorsque l'intérêt d'une couleur spécifique est restreins)
  • SendMsg : un SendClientMessage où l'on choisi la couleur
  • SendRedMsg : un SendClientMessage spécialement pour les messages d'erreur: rouge
  • GameTextToPlayer : un GameTextForPlayer normal sauf pour les langues
  • GameTextToAll : un GameTextForAll
  • dcmd_lang : la commande que le joueur tape pour choisir sa langue
  • ChoisiTaLangue : Fonction à placer dans la callback de votre choix ( je recommande OnPlayerConnect ou OnPlayerSpawn), elle envoie un message au joueur de choisir une langue s'il ne l'a pas fait
  • SendMsgToAdmins(Couleur,MessageAnglais[],MessageFrançais[]); envoie le message de la langue correspondante à chaque admin logué en rcon
  • SendMsgToAllExcept(playerid,Couleur,MessageAnglais[],MessageFrançais[]); envoie le message à tous les joueurs excepté un seul, le playerid
  • GameTextToAllExcept(playerid,Couleur,MessageAnglais[],MessageFrançais[],time,type); envoie le GameText à tous les joueurs excepté un seul
  • SendFormatMsg(playerid,Couleur,MessageAnglais[],MessageFrançais[], {Float,_}:...); envoie le message formaté à un seul joueur
  • SendFormatMsgToAll(Couleur,MessageAnglais[],MessageFrançais[], {Float,_}:...); envoie le message formaté à tous les joueur
  • FormatGameTextToPlayer(playerid,MessageAnglais[],MessageFrançais[],temp,style, {Float,_}:...); envoie le GameText formaté à un joueur
  • FormatGameTextToAll(MessageAnglais[],MessageFrançais[],temp,style, {Float,_}:...); envoie le GameText formaté à tous les joueurs

P.S. Je tien à remercier MISTER-FRED pour son format qui m'a permit d'ajouter les 4 dernières fonctions, MERCI BEAUCOUP

Comment s'en servir?

C'est très simple, chacune de ces fonctions à deux paramètre de message, le premier est pour le message en anglais et le second pour celui en français,

Exemple:
SendRndMsg(playerid,/*pas de couleur*/"Welcome to the server *** and have fun","Bienvenu sur le serveur *** et amuse toi bien");
ce message remplacerait:
SendClientMessage(playerid,COLOR_YELLOW,"Bienvenu sur le serveur *** et amuse toi bien");
alors je crois cet exemple plus qu'explicite, par contre, si vous voulez plus d'exemple le fichier .rar contient un script d'exemple

Pour inclure cet include à votre script, tout comme n'importe quel autre, il vous faut placer "#include langues" en haut de votre gamemode,
 vous pouvez également enlever a_samp, il est chargé dans l'include

et finalement je voudrais ajouter de ne pas oublier le dcmd(lang,4,cmdtext); dans OnPlayerCommandeText et de placer ChoisiTaLangue(playerid) dans une callback

Téléchargement:

V 1.0 :
Langues.rar sur rapidshare
Langues.inc sur pastebin

V1.1 :
Langues.inc sur pastebin
Langues.rar sur Savefile


V1.2 (PLUS RÉCENTE) :
PASTEBIN


V En/Fr/De :
PASTEBIN


Si vous trouvé des bugs où fonction manquante, s'il vous plait, signalé le sur ce topic!

Points importants :

Vous devez ABSOLUMENT placé les éléments suivants pour le bon fonctionnement de l'include:

 - GetPlayerCount() Dans OnGameModeInit, cette fonction retourne le nombre maximum de joueurs que votre serveur peut acceuillir, il s'agit d'une façon simple d'optimiser légèrement les for lopp utilisées dans
 lescript, par contre, si vous oubliez de le placer, les fonctions qui envoi des messages à tous ne fonctionneront plus...
 - ChoisiTaLangue(playerid) dans la calback OnPlayerSpawn afin d'informer vos joueurs de faire un choix de langue, aucun message s'ils ont déjà choisi
 - dcmd_lang(playerid,4,cmdtext); dans la callback OnPlayerCommandText

De plus, il est grandement recommandé d'ouvrir l'include et de mettre le nombre de joueur maximum que votre serveur peut accueillir à la ligne 46 à la suite du #define maxp ...., remplacez le 200 par la valeur que vous avez besoin, ainsi les variables pourront être réduites en taille

Une nouvelle version vien tout juste de sortir, elle contient certaines amélioration (niveau variables) mais très peu, son avantage est le suivant: trois langues au lieu de seulement 2.
Je tien a remercier jonjon (aussi connu sous le nom de metrakit) pour l'idée et l'aide qu'il m'a apporter (à vrai dire il avait commencé et je ne l'ai aidé que très peu ^^). Les langues par défauts sont: francais, anglais et allemand

Avis aux connaisseurs :
ceux qui serait intéressé, pourriez vous s'il -vous-plait regarder le code et m'expliquer ce qui pourrait être améliorer, je ne suis toujours pas un expert en PAWN après tout.... :closedeyes

Have fun :cheers

Modifier une langue :

Afin de remplacer une langue existante sur l'include par une autre, il faut effectuer les étapes suivantes:
  • 1. remplacer le #define en haut du script (ligne 60 environ) par la langue désirée
  • 2 remplacer la langue désirée dans le enum suivant (ligne 120):
enum langues
{
bool:isset,
bool:eng,
bool:fr,//ex: bool:esp pour espagnol
}
  • 3. modifié la valeur modifié dans l'énumération à la même expression dans la fonction GetLang
  • 4. si désiré, changer les native afin de voir la bonne langue dans la liste des fonctions dans pawno comme ceci:
native SendMsgToAll(color,msgENG[],msgFR[]);
DEVIENT:
native SendMsgToAll(color,msgENG[],msgESP[]);//pour l'espagnol

merci de postez vos commentaire et de respecter les crédits (pour mister-fred, Jonjon et moi (désolé jonjon, j'ai oublié de l'écrire dans le fichier :'( :'( :closedeyes)

++Sim++
« Modifié: 30 Décembre 2008, 03:09:58 par Sim »





Hors ligne R@f

  • *
  • GTAOnline Addict
  • Messages: 4655
    • Voir le profil
Re : Include Français - Anglais
« Réponse #1 le: 08 Septembre 2008, 16:46:10 »
Sympa comme include, bravo à toi :P

++
R@f

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Include Français - Anglais
« Réponse #2 le: 10 Septembre 2008, 00:55:58 »
salut,

alors j'ai travaillé encore légèrement sur l'include et voici ce que j'ai changé :

  • SendFormattedMsg(playerid,color,MsgENG[],MsgFR[],{Float,_}:...); -- un message formaté en anglais ou français, noté bien que les variables utilisés pour l'un des messages sont les mêmes que pour l'autre
  • SendFormattedMsgToAll(color,MsgENG[],MsgFR[],{Float,_}:...); -- comme le SendFormattedMsg mais envoie le message à tous les joueurs
  • plus besoin d'ajouter les #pragma unused au gamemode, sauf pour les deux fonctions cités si-dessus, erreurs fatales dans ces deux cas-là

Ces changements n'ont pas été testé, c'est pourquoi le update se fera légèrement attendre en plus que j'aimerais bien faire un vrai update, pas seulement ajouter 2 -3 trois fonctions.

merci à tous :D

++Sim++





Hors ligne [viruz]rider_77

  • *
  • Mafioso
  • C/C++ programming
  • Messages: 2154
    • Voir le profil
Re : Include Français - Anglais
« Réponse #3 le: 10 Septembre 2008, 01:06:55 »
GG ;)

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Include Français - Anglais
« Réponse #4 le: 12 Septembre 2008, 18:15:58 »
Lien pastebin stp. :happy

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Include Français - Anglais
« Réponse #5 le: 08 Novembre 2008, 15:09:38 »
Salut à tous,

alors j'ai quelque peu retravaillé mon include (il en avait besoin), en lien avec les nouvelles choses que j'ai appris depuis ce temps,

j'ai dû annulé les SendFormattedMsg, trop complexe, et je ne veut pas scripter une fonction de 300 à 400 lignes juste pour cela, vous n,aurez qu'a faire des format dans votre script

- les fonctions sont en stock (donc si elles ne sont pas utilisées, elle ne seront pas compilées)

fonctions ajoutés:
  • SendMsgToAdmins(Couleur,MessageAnglais[],MessageFrançais[]); envoie le message de la langue correspondante à chaque admin logué en rcon
  • SendMsgToAllExcept(playerid,Couleur,MessageAnglais[],MessageFrançais[]); envoie le message à tous les joueurs excepté un seul, le playerid
  • GameTextToAllExcept(playerid,Couleur,MessageAnglais[],MessageFrançais[],time,type); envoie le GameText à tous les joueurs excepté un seul

et voilà en espérant que certains en soient fort aise...
premier post édité!

++Sim++





Hors ligne angelrider

  • Scripteur
  • *
  • Bandit
  • Messages: 299
    • Voir le profil
Re : Include Français - Anglais
« Réponse #6 le: 08 Novembre 2008, 15:29:49 »
Je trouve ça super SIM mais la seule chose qui me dérange c'est de refaire tout mon GM >< sinon pourquoi pas en refaire un avec ces includes j'y suis bien tenté.
Nouveau Site de Mods San Andreas:
http://lcdacreation.fr

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Include Français - Anglais
« Réponse #7 le: 08 Novembre 2008, 20:51:32 »
Salut,

si tu veut, tu n,est pas forcé de refaire tout le gm, t'en fait un bout une fois de temps en temps, même s'il n,est pas entièrement traduit, c'est déjà un bon début..et puis avec la fonction remplacer, tu remplace les messages qui reviennent très souvent.... pour mon script de... 9 000 lignes ça a bien été, le truc le plus long c'est de composer les messages.....

EDIT: je vais regarder pour faire certains truc pour que les fonctions ressemblent plus aux SendClientMessage et donc soient plus facile à réécrire...
EDIT2: il y a une erreur dans le script que g posté...je fais un update, et finalement, je crois que les fonctions sont bien comme elles sont..

++Sim++
« Modifié: 08 Novembre 2008, 20:58:47 par Sim »





Hors ligne angelrider

  • Scripteur
  • *
  • Bandit
  • Messages: 299
    • Voir le profil
Re : Include Français - Anglais
« Réponse #8 le: 08 Novembre 2008, 21:12:10 »
Lol fégnant n'abandonne pas moi je trouvais que c'étais une bonne idée les includes en fr.
Nouveau Site de Mods San Andreas:
http://lcdacreation.fr

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Include Français - Anglais
« Réponse #9 le: 08 Novembre 2008, 21:14:10 »
Salut,

dit moi ce que tu veut que je change/améliore et je le ferai... mais la je sais pas quoi changé, même chose sur mon serveur...

++Sim++





Hors ligne angelrider

  • Scripteur
  • *
  • Bandit
  • Messages: 299
    • Voir le profil
Re : Include Français - Anglais
« Réponse #10 le: 08 Novembre 2008, 21:44:56 »
Pour ton serveur ne t'inquiète pas j'y réfléchis ^^ tout en réfléchissant pour le mien.
Nouveau Site de Mods San Andreas:
http://lcdacreation.fr

Hors ligne iPod_Touch

  • M.
  • *
  • Criminel
  • Messages: 40
    • Voir le profil
Re : Include Français - Anglais
« Réponse #11 le: 26 Novembre 2008, 16:19:41 »
C'est un superbe include qui va enormément servir ! Vraiment bravo, surtout pour permettre d'eviter d'envoyer 2 fois le même message, en Anglais et en Français ! Moi je dit vraiment chapeau !

Continue comme ça.

@++


Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Include Français - Anglais
« Réponse #12 le: 27 Novembre 2008, 01:44:35 »
C'est un superbe include qui va enormément servir ! Vraiment bravo, surtout pour permettre d'eviter d'envoyer 2 fois le même message, en Anglais et en Français ! Moi je dit vraiment chapeau !

Continue comme ça.

@++

Merci de ton support touch, n'oublie pas, si tu t'en sert et que tu trouve un bug ou a une suggestion, poste le ici s'il te plait :D

++Sim++





Hors ligne iPod_Touch

  • M.
  • *
  • Criminel
  • Messages: 40
    • Voir le profil
Re : Include Français - Anglais
« Réponse #13 le: 27 Novembre 2008, 15:55:29 »
Je le testerais ce week end car la semaine je suis à l'internat  :happy


Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Include Français - Anglais
« Réponse #14 le: 20 Décembre 2008, 21:30:37 »
Salut à tous,

je viens vous annoncer un nouveau update (et oui, il y a encore des choses que l'on peut améliorer/ajouter, surement encore plein d'autres)

après une publication que je croyais inespérée, ICI, par mister-fred, j'ai vu l'opportunité d'ajouter enfin les messages formatés,

ALORS CETTE FOIS ILS Y SONT!!!!

Les nouvelles fonctions:

  • SendFormatMsg(playerid,color, const msgENG[],const msgFR[], {Float,_}:...)
  • SendFormatMsgToAll(color, const msgENG[],const msgFR[], {Float,_}:...)
  • FormatGameTextToPlayer(playerid, const msgENG[],const msgFR[],time,style, {Float,_}:...)
  • FormatGameTextToAll(const msgENG[],const msgFR[],time,style, {Float,_}:...)

ainsi vous pourrez envoyer des GameText, ClientMessage avec des paramètres à ajouter au texte...en français et en anglais de plus, mais les paramètres doivent être dans le même ordre, portez-y une attention toute particulière,

je ne crois pas que vous risquez vraiment de crasher votre serveur, mais en cas d'ennui, ouvrez l'include et à la ligne :
#define FORMAT_LEN 256 augmenter la valeur

pour l'instant, le format ne prend pas les longueurs des float (ex: %.3f) mais je vais voir afin de l'ajouter...

EDIT:

les longueurs des float ont été ajoutés, et pour cette nouvelle version, j'ajoute un script d'exemple dans le .rar
je vous souhaite à tous une bonne journée

++Sim++
« Modifié: 20 Décembre 2008, 22:20:32 par Sim »