GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Showroom SA:MP => Discussion démarrée par: S!m 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 (http://rapidshare.com/files/143747492/langues.rar.html)
Langues.inc sur pastebin (http://pastebin.gtaonline.fr/pastebin.php?show=481)
V1.1 :
Langues.inc sur pastebin (http://pastebin.gtaonline.fr/pastebin.php?show=518)
Langues.rar sur Savefile (http://www.savefile.com/files/1877189)
(http://solidfiles.com/info_imgs/k.jpg) (http://solidfiles.com/d/k)
V1.2 (PLUS RÉCENTE) :
PASTEBIN (http://pastebin.gtaonline.fr/pastebin.php?show=537)
(http://solidfiles.com/info_imgs/C48.jpg) (http://solidfiles.com/d/C48)
V En/Fr/De :
PASTEBIN (http://pastebin.gtaonline.fr/pastebin.php?show=541)
(http://solidfiles.com/info_imgs/pDi7.jpg) (http://solidfiles.com/d/pDi7)
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++
-
Sympa comme include, bravo à toi :P
++
R@f
-
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++
-
GG ;)
-
Lien pastebin stp. :happy
-
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++
-
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é.
-
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++
-
Lol fégnant n'abandonne pas moi je trouvais que c'étais une bonne idée les includes en fr.
-
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++
-
Pour ton serveur ne t'inquiète pas j'y réfléchis ^^ tout en réfléchissant pour le mien.
-
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.
@++
-
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++
-
Je le testerais ce week end car la semaine je suis à l'internat :happy
-
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 (http://www.gtaonline.fr/forums/index.php/topic,6066.0.html), 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++
-
Content que mon petit script ai pu t'aider a ameliorer ton include :)
-
Content que mon petit script ai pu t'aider a ameliorer ton include :)
Dommage que la seule chose que je puisse faire soit de te remercier.... sinon j'ai ajouter pour qu'il prenne les %.3f, %.2f si ça t'intéresse, prend-le, y aurait toujours les %2d ou trucs du genre mais je voit moins l'intérêt..
EDIT: je les ajouter également en corrigeant les deux-trois erreurs que j'ai malheureusement écrites.... (mauvais string)
++Sim++
-
A oui pourquoi pas si tu mi autorise j'vais ajouter et en meme temps j'vais ajouter les GameText :)
Merci :)
-
salut,
je viens signaler qu'une nouvelle version est disponnible,
seul ajout: une troisième langue: l'allemand
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 ^^)
++Sim++
-
A vrai dire, tu as choisi l'allemand mais il est possible de mettre de l'espagnol ou une autre langue simplement en changeant la commande /lang espagnol et en ne mettant pas les phrases en allemand mais en espagnol, enfin c'est une idée. Je pensais aussi qu'il serait plus pratique (c'est une idée) de faire un menu dès la connexion du joueur car s'il ne sélectionne pas de langue dès le démarrage, il ne verra pas certains texte. C'est une idée (que j'ai concrétisée sur mon serveur).
Sur ce, bonsoir
-
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 ^^)
C'est moi qui te remercie ;).
Cordialement, J0n.
-
Je pense que tu pourait renomer ton include en "Include multi lang" je pense que se nom lui conviendrai mieux ^^
++
Fred
-
salut,
a vrai dire, je suis presque d'accord avec toi mister-fred,
l'ennui c,est qu'il faut apporter des modification pour.....
et effectivement, on peut y mettre la langue que l'on désire, je vais lister les manipulations nécessaires sur le premier post...
++Sim++
-
Ah je vois que tu as fait un système pour mettre par exemple Francais et anglais ou Anglais espagnol ... mais, tu devrais essayer de faire un système ou l'on peut choisir entre plusieurs langue genre au lieu de n'avoir que Anglais francais, de pouvoir mettre (par exemple) Anglais, Francais, Espagnol, Allemand dans la même Phrase avec le meme principe.
-
Salut,
ce serait vraiment bien, mais là on parle d'un système vraiment complexe avec un nombre de paramètre variable... c possible, mais plus difficile, il faudrait j'ajoute des paramètres prédéfinis...
genre on met un string vide pour une langue inutilisée...
++Sim++
-
J'ai confiance en toi, tu peux y arriver :D