
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 01/05/2025 12:48:54
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Le Blaireau Chevalier Messages: 71 |
Je cherche quelqu'un qui pourrait concevoir un script pour empêcher la duplication d'arme et d'armure. J'aimerais que ce script fonctionne de la façon suivante si c'est faisable bien sur!!
Si un joueur tente une duplication,(Duplication qui se produit la majorité du temps lors d'un déco-reco après une modification d'arme ou d'armure) il meurt sur le coup sans que personne, autre qu'un MD puisse le ressusciter. |
Revenir en haut | ![]() ![]() ![]() |
Seth de Sombrelune Seigneur Messages: 156 |
Je suis confronté aussi a ce problème, de plus, cela n'agit pas que sur la duplication des objet mais une personne n'ayant pas investit de point dans la competence artisanat peu crafter un item sans depenser d'or et sans savoir le faire.
![]() Mon module utilise le CEP, je vais donc me servir du dialogue d'artisanat. J'utilise aussi une base de donnée qui fixe une variable locale de campagne au personnage lors de sa connexion qui me permet de savoir si c'est un nouveau joueur ou non. Voici comment je vais proceder. Dans le menu Artisanat, a chaque fois qu'un joueur vas activer une branche de dialogue qui modifie un item (armure, robe, bouclier, arme ou casque) un script dans le action consequente vas fixer une variable d'artisanat activé. Lorsque le joueur vas annuler les modifications ou valider les modification, la variable sera effacée. Ensuite je vais modifier mon script de OnClientEnter du module et verifier le statut du personnage, si la variable est vierge (0) le reste du script se poursuit, sinon, il meurt avec une phrase qui explique la situation (eventuellement je le teleporterais a un endrit spécifique pour eviter que d'autre joueurs le rez). Je modifierais aussi mon script de Respawn pour l'empecher de ressussiter si sa variable est activée. Ainsi seul un DM pourra le ressuciter. Je placerais ici les morceau de scripts à integrer dans ceux deja existant. ![]() |
Revenir en haut | ![]() ![]() ![]() |
Le Blaireau Chevalier Messages: 71 |
Hé hé!
Je ne sais pas ce qui m'arrive ce matin, mais j'ai compris ce que tu veux faire... Je trouve que c'est une excellente idée, de plus j'ai déjà une zone prévue où j'enverrai les joueurs indésirables réfléchir sans porte ni moyen de sortir. Le but de cette salle est de pouvoir y emmener un joueur pour qu'un MD puisse discuter avec lui sans qu'il puisse en sortir.. avant d'avoir entendu raison.. |
Revenir en haut | ![]() ![]() ![]() |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
Des methodes d'espionages pour MD via fichiers log sont déja au point pour choper les " duplicateurs " , ça permet de pouvoir choper les tricheurs même 2 semaines aprés qu'ils aient triché , et ça marche trés bien.
Il suffit de compter le nombre d'objets Y sur un joueur a la déconexion , et de comparer le nombre d'objets X qu'il posséde a la reconnexion. Si X = Y , alors tout va bien , par contre , si X = Y +1 ou plus largement si X =! Y , ça veut dire qu'il a dupliqué , et donc qu'il a triché........ J'ai l'intuition qu'il va prochainement apparaitre une methode pour detecter , mettre en tôle , et bannir de maniére automatisé les tricheurs qui pratiquent la duplication. Ils vont être dégoutés .... ! J'aimerais déja voir ça ! ![]() j'ai un peu de temps ce soir , je vais tenter de mettre ce script au point , je pense même savoir comment essayer de faire...! Voiçi l'idée : A chaque fois qu'un pj rajoute ou enlêve un objet a son inventaire , on compte le nombre d'objets qu'il posséde grace au script : NWScript :
int nombre_objets_PJ; object objet = GetFirstItemInInventory(oPC); while(GetIsObjectValid(objet)) { nombre_objets_PJ =nombre_objets_PJ + 1 ; objet = GetNextItemInInventory(oPC); } et on mémorise le nombre d'objets qu'il posséde en "permanent" dans la database. Ensuite a la reco on fait pareil et on compare avec le nombre d'objets a la sortie , et si il n'a pas le même nombre d'objets , il y a un pb. Reste a voir si ça marche ..... tout dépends de quand sont comptés les objets et quand est rajouté l'objet dans l'inventaire , lors de la reco ou de la déco , avant ou aprés les lancements du script ? _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | ![]() ![]() ![]() |
Seth de Sombrelune Seigneur Messages: 156 |
Bon pour moi cela avance a grand pas.
Je modifie le dialogue du menu artisanat. JE demande si on veux activer le menu artisanat. Oui => je fixe ma variable (dans le action consequente) Non => je ferme le dialogue Je signale que toute fermeture du dialogue sans desactiver le menu entrainera une mort avec comme seul rez une action MD Dans le Dialogue, je repasse ma variable a 0 quand on ferme le dialogue en choisisant l'option fermer le dialogue. Dans le onclient enter, je teste ma variable, si elle = 0 je poursuit mon script, sinon il meur et est teleporter. Dans le respawn, je teste ma variable, si =1 le pj reste mort, sinon je poursuit mon script normalement. Au final je n'ai que 2 script a créer (2 action consequente pour l'ouverture et la fermeture du dialogue d'artisanat) et d'ajouter une petite ligne de commande à mes script de onenter et de resp. actuelement j'ai deja les script des action consequente. mais pour parfaire mon system, je doit tester le resp. Comme j'en ai profiter pour finir de traduire completement le dialogue du cep, j'ai du faire une pettie erreur car mon dial s'interomp prematurement. JE pense pouvoir fournir les script d'ici la fin de ce we. L'incovegnent de cette methode est que si le serveur plante quand tu fait du craft, ben t'est mort a la reco, mais faut vraiment pas avoir de bol. ![]() La methode proposer par Semcatala impose par contre de verifier l'inventaire de chaque personage qui deco, de verifier celui de chaque perso qui se conecte et de comparer aux valeurs memorisé dans la BDD. De plus je ne sait pas si le craft ne crée pas une copie de l'item modifié dans l'inventaire en le randant invisible. Il faudra que je teste pour voir, c'est aussi une option valide |
Revenir en haut | ![]() ![]() ![]() |
Le Blaireau Chevalier Messages: 71 |
COOL..
Je vous remercie de vous donner tout ce mal... ![]() |
Revenir en haut | ![]() ![]() ![]() |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
voici mes solutions pour avoir des " infos " , c'est pas encore aussi élaboré que ce que je voudrais faire a l'avenir , mais ce sera un début bien utilise pour " contrôler " un pj sur lequel on a un doute.
Le but de ces scripts suivants est de pouvoir avoir un maximum d'informations dans le fichier log , sur chaque joueur , non pas pour les espionner et les pister , on a autre chose a faire de notre journée , mais tout simplement pour avoir les outils et la possibilité de pouvoir mener une enquête pour déterminer si il y a eu triche ou duplication d'objets , même longtemps aprés les faits. Par exemple , si un joueur déco avec 6 objets et qu'il se reco avec 7 objets , il y a donc eu un soucis. Si un joueur a gagné 20 levels entre 03h25 et matin et 03H30 du matin , c'est manifestement qu'il y a eu triche pour gagner 20 levels en 5 minutes. le script suivant est a mettre dans le " onacquireritem" , il sert a t'informer quand un pj gagne un objet , pour savoir de quel objet il sagit et quelle est sa valeur en Po: NWScript :
void main() { object objet = GetModuleItemAcquired(); string str_objet = GetTag(objet); object oPC = GetItemPossessor(objet); ////////////////////////////// ////////////////////////////// /////////// /////////// Script pour informer du gain d'un objet et de sa valeur ////////////////////////////// ////////////////////////////// /////////// string nom_joueur = GetName(oPC); int valeur_objet = GetGoldPieceValue(objet); string nom_objet = GetName(objet); string str_valeur_objet = IntToString(valeur_objet); if(GetIsPC(oPC)) { WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry("===== "+nom_joueur+""+ nom_objet +" *** qui vaut "+str_valeur_objet+" Po ====="); WriteTimestampedLogEntry(" "); } ////////////////////////////// ////////////////////////////// /////////// } script suivant a mettre dans le " oncliententer " , ce script sert a te dire a propos du pj qui se connecte combien il posséde de Po , d'XP , et combien il à d'objets dans son inventaire : NWScript :
void main() { object oPC = GetEnteringObject(); string sCDKey = GetPCPublicCDKey(oPC); string sPlayerName = GetPCPlayerName(oPC); ////////////////////////////// ////////////////////////////// ////////////// ////////////////////// Infos Joueur a la conection /////////////////////// ////////////////////////////// ////////////////////////////// ////////////// if(!GetIsDM(oPC)) { int nombre_objets_PJ; object objet = GetFirstItemInInventory(oPC); while(GetIsObjectValid(objet)) { nombre_objets_PJ = nombre_objets_PJ + 1 ; objet = GetNextItemInInventory(oPC); } int or = GetGold(oPC); int xp = GetXP(oPC); string or_str = IntToString(or); string xp_str = IntToString(xp); string nombre_objets_pj_str = IntToString(nombre_objets_PJ); string nom = GetName(oPC); WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry("******************************************************************************************************************************************"); WriteTimestampedLogEntry("Infos sur " + nom + " : "+"OR = " + or_str + " Po "+"XP = " + xp_str+" xp"); WriteTimestampedLogEntry(nom + " a " + nombre_objets_pj_str + " objets sur lui a la connexion ENTREE DE : "+nom); WriteTimestampedLogEntry("******************************************************************************************************************************************"); WriteTimestampedLogEntry(" "); } } ////////////////////////////// ////////////////////////////// ////////////// le script suivant est le même que le précédant , sauf que c'est pour la déconexion , a mettre dans le " onclientleave " NWScript :
void main() { object oPC = GetExitingObject(); ////////////////////////////// ////////////////////////////// //////////////////// // Script anti triche // // ////////////////////////////// ////////////////////////////// //////////////////// if(!GetIsDM(oPC)) { int nombre_objets_PJ; object objet = GetFirstItemInInventory(oPC); while(GetIsObjectValid(objet)) { nombre_objets_PJ =nombre_objets_PJ + 1 ; objet = GetNextItemInInventory(oPC); } int or = GetGold(oPC); int xp = GetXP(oPC); string or_str = IntToString(or); string xp_str = IntToString(xp); string nombre_objets_pj_str = IntToString(nombre_objets_PJ); string nom = GetName(oPC); WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry("####################################################################################################################################"); WriteTimestampedLogEntry("Infos sur " + nom + ": "+"OR = " + or_str + " Po "+"XP = " + xp_str +" xp"); WriteTimestampedLogEntry(nom + " a " + nombre_objets_pj_str + " objets sur lui a la deconnexion SORTIE DE : "+nom); WriteTimestampedLogEntry("####################################################################################################################################"); WriteTimestampedLogEntry(" "); ////////////////////////////// ////////////////////////////// //////////////////// } } et le dernier script a mettre dans le " onplayerlevelup" NWScript : void main() { object oPC = GetPCLevellingUp(); string sPC = GetName (oPC); int iLevel = GetHitDice(oPC); string sLevel = IntToString(iLevel); string sAreaName = GetName(GetArea(oPC)); SendMessageToAllDMs (sPC+" a atteint le niveau "+sLevel+" dans "+sAreaName); WriteTimestampedLogEntry(" "); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(sPC+" vient d'atteindre le Niveau "+ sLevel); WriteTimestampedLogEntry("_______________________________________________"); WriteTimestampedLogEntry(" "); } _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | ![]() ![]() ![]() |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
Bon , mon systéme de " mouchard " fonctionne a merveille pour fliquer les tricheurs via les fichiers logs , mais il reste pénible de se retaper a lire les fichiers log , et mon systéme ne permet pas de pouvoir automatiser les sanctions et le contrôle.
C'est chose faite grace a la methode se Seth de Sombrelune qui consiste a utiliser le dial du craft. Seth de Sombrelune postera probablement sa solution , quand a moi je posterais la mienne d'ici peu. En gros , si un mec triche en se déconectant pour dupliquer , lorsqu'il revient sur le mod , il sera transféré en tôle pendant quelques minutes ( ou 30 secondes ) avant d'être kiké du mod comme un malpropre , et ce , de maniére automatique. J'ai hâte que cette solution soit fonctionelle , les tricheurs ça commence a me saouler ..... !!! _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | ![]() ![]() ![]() |
Seth de Sombrelune Seigneur Messages: 156 |
Bon voici ce que je vous propose, je l'ai tester sur mon dodule, ça marche assez bien.
Cela necessite de revisiter le dialogue de crafting, créer 2 nouveaux scripts et de modifier 2 scripts importants de votre module. 1 :Créer le script d'ouverture du dialogue. Ce script place sur le pj une balise qui signal que dialogue d'artisanat a été ouvert. NWScript :
//::////////////////////////// ///////////////////// //:: Name ac_openartisanat //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////// //////////////////// /* Balise d'ouverture du dialogue Artisanat */ //::////////////////////////// //////////////////// ///:: Created By: Seth de Sombrelune //:: Created On: 08/07/2005 //::////////////////////////// //////////////////// void main() { object oPC=GetLastSpeaker(); // on definit le joueur SetCampaignInt("BDDModule", "menu_artisanat", 1, oPC);// on affecte la valeur 1 dans la BDD } (BDDModule est un nom de base de donnée, choisisez le votre). 2 :Créer le script de fermeture du dialogue NWScript :
//::////////////////////////// ///////////////////// //:: Name ac_closartisanat //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////// //////////////////// /* */ //::////////////////////////// //////////////////// ///:: Created By: Seth de Sombrelune //:: Created On: 08/07/2005 //::////////////////////////// //////////////////// void main() { object oPC=GetLastSpeaker(); // on definit le joueur SetCampaignInt("BDDModule", "menu_artisanat", 0, oPC);// on affecte la valeur 0 dans la BDD } 3 :Modifier le fichier de dialogue d'artisanat : x0_skill_ctrap Mon dialogue signale que l'ouverture du menu artisanat impose qu'il soit refermer en utilisant la branche de dialogue "fermer le menu artisanat" Code : Racine | |__ Prop :Impossible d'utiliser vos compétences Artisanat en ce moment. | ---> Condition d'Execution :x2_im_polymorphd | ---> Action Conséquente : | |__ Prop :Ouverture du Menu Artisanat <StartAction>[Atention, si vous choisissez d'activer le menu Artisana, vous devez absolument quiter ce menu par la fonction "Fermer le menu Artisanat" sinon votre personnage sera bloqué jusqu'a l'intervention d'un MD !]</Start> | --->CE : | --->AC : * Ouvrir le menu Artisanat | | --->CE: | | --->AC:ac_openartisanat | | | |_Prop :Menu compétences Artisanat | | --->CE: | | --->AC: | | | * (ici se place le menu normal : modifier armure, casque, robe, arme et | bouclier) | * Quiter le menu Artisanat [Fin du Dialogue] --->CE: --->AC: ac_closartisanat Atention ! Chaque branche de dialogue qui normalement termine le dialogue doit avoir comme action conséquente le script ac_closartisanat. Vous serez sans doute amener a modifier legerement la structure du dialogue pour que cela soi possible (j'ai personnellement fait en sorte que toute fin d'action reviene à la seconde branche de ma racine). Lors de la modification de votre fichier dialogue, faite tres atention, certaine branche qui existait en tant que "copie en tant que lien" risque de disparaitre. Conservez toujour une copie du dialogue original ! 4 : je modifie le script de l'evenement module OnClientEnter (ce code ne possede pas de fonction void main car ce n'est qu'une partie a ajouter à votre propre code. C'est la premiere condition qu'il regardera, votre script vient ensuite, pensez à refermer avec un } ! ). NWScript :
////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// /// Bloquage des tricheurs avec le menu Artisanat /// ////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// int iArtisanat = GetCampaignInt("BDDModule", "menu_artisanat", oPC); if(iArtisanat == 1) { DelayCommand(15.0,AssignCommand(oPC, JumpToLocation(GetLocation(GetWaypointByTag("WP_TRICHEUR"))))); DelayCommand(17.0,PlayVoiceChat(VOICE_CHAT_DEATH, oPC)); DelayCommand(17.5,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), oPC)); DelayCommand(17.5,ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(FALSE, FALSE), oPC)); DelayCommand(18.0,SendMessageToPC(oPC,"")); SendMessageToAllDMs(""); } else { ////////////////////////////// ////////////////////////////// ///////// ////////////////////////////// ////////////////////////////// ///////// /* warning: 1 unclosed block {} */ 5 : je modifie le script de l'evenement module OnPlayerRespawn (ce code ne possede pas de fonction void main car ce n'est qu'une partie a ajouter à votre propre code de respawn juste apres la declaration de la fonction void main et du pj ayant cliquer sur respawn. C'est la premiere condition qu'il regardera, votre script vient ensuite, pensez à refermer avec un } ! ). NWScript :
////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// /// Bloquage des tricheurs avec le menu Artisanat /// ////////////////////////////// ////////////////////////////// //////// ////////////////////////////// ////////////////////////////// //////// int iArtisanat = GetCampaignInt("BDDModule", "menu_artisanat", oPC); if(iArtisanat == 1) { DelayCommand( 6.0,SendMessageToPC(oPC,"")); SendMessageToAllDMs(""); } else { ////////////////////////////// ////////////////////////////// ///////// ////////////////////////////// ////////////////////////////// ///////// /* warning: 1 unclosed block {} */ J'espère être assez clair dans mes explication. voilà ! |
Revenir en haut | ![]() ![]() ![]() |
Le Blaireau Chevalier Messages: 71 |
Merci,.
Je suis convaincu que tu as été asser clair... beau travail... Mais j'en suis pas a ce niveau... J'ai rien compris.. ou presque je vais tacher de pas tout foirer LOL Merci encore:lol |
Revenir en haut | ![]() ![]() ![]() |
tsubasafr Voyageur Messages: 3 |
Hello all
![]() Dabord merci d'avoir reflechi a ce probleme qui moi aussi me pose soucis, et ca fait plaisir de voir des gens qui ont deja des solutions. Enfin j'ai une petite question comment on edite le dialogue x0_skill_ctrap ? Il faut en recreer un ? comment ouvrir les dialogue des ressources originel du jeu ? Merci a tous ![]() |
Revenir en haut | ![]() ![]() ![]() |
Ailesnoires Grand Chevalier Messages: 110 Localisation: Vendée |
Salut, tout d'abord tu parles de dialogue mais je suppose que tu veux dire script.
Pour ouvrir les script originel du module tu dois cocher la case toutes les ressources (à peu prêt j'ai pas aurora là) dans la fenêtre de dialogue ouvrant les scripts. |
Revenir en haut | ![]() ![]() ![]() |
tsubasafr Voyageur Messages: 3 |
Nonon je parle bien du dialogue:
Celui qu'il modifie ici: Citation : 3 :Modifier le fichier de dialogue d'artisanat : x0_skill_ctrap
Si c'est un dialogue de jeu, comment y avoir accés ? ou faut-il en recreer un ?Mon dialogue signale que l'ouverture du menu artisanat impose qu'il soit refermer en utilisant la branche de dialogue "fermer le menu artisanat" Code : Racine | |__ Prop :Impossible d'utiliser vos compétences Artisanat en ce moment. | ---> Condition d'Execution :x2_im_polymorphd | ---> Action Conséquente : | |__ Prop :Ouverture du Menu Artisanat <StartAction>[Atention, si vous choisissez d'activer le menu Artisana, vous devez absolument quiter ce menu par la fonction "Fermer le menu Artisanat" sinon votre personnage sera bloqué jusqu'a l'intervention d'un MD !]</Start> | --->CE : | --->AC : * Ouvrir le menu Artisanat | | --->CE: | | --->AC:ac_openartisanat | | | |_Prop :Menu compétences Artisanat | | --->CE: | | --->AC: | | | * (ici se place le menu normal : modifier armure, casque, robe, arme et | bouclier) | * Quiter le menu Artisanat [Fin du Dialogue] --->CE: --->AC: ac_closartisanat |
Revenir en haut | ![]() ![]() ![]() |
Elandil2 Chevalier Messages: 97 Localisation: sur mon ordi loir-et-cher |
Il faut que tu récréé ce dialogue ^^
ou que tu demande un erf si ce dialogue existe ... _________________ Rejoignez nous sur notre forum Aelor, module en construction Vive Gimli ![]() |
Revenir en haut | ![]() ![]() ![]() ![]() |
Seth de Sombrelune Seigneur Messages: 156 |
en fait il faut aller dans la partie diallogue et rechercher le dialogue x0 ect... un double clic suffit a l'ouvrir et l'editer
Par contre lorsque j'ai modifier mon dialogue, j'ai remarquer que la conversion en français ne se fait pas bien du tout, et que des liens collé ne fonctionnait plus. j'ai du reprendre le fichier dial completement, en plus j'en ai profiter por le traquire un peu. Je peu eventuellement envoyer l'erf par email a ceux qui m'en font la demande par mp LE système que je propose a un petit inconvegnent, en cas de plantage lors d'une modification sous artisanat, le pj se retrouve coincé jussqu'a ce qu'un md soit present. Mais depuis, il n'y a plus de duplication sur mon serveur ! ![]() |
Revenir en haut | ![]() ![]() ![]() |
Semcatala Grand Sage du Conseil ![]() Messages: 951 |
Ca marche trop bien !
![]() En plus , j'ai mis en ligne en même temps que mon mod , un mod " prison " sur lequel les tricheurs sont envoyés par paserelle IP , et les tricheurs sont téléportés dans cette prison , seuls , abandonnés ....... C'est plus élégant que d'ejecter le tricheur , et ça libére une place sur le mod ! ![]() Trop bien ce systéme antiduplication ! Sinon , une truc qui serais sympa pour nwn2 sur le forum des scripts ce serais de répertorier les bugs connus et possibles a corriger comme la duplication , et qu'on cherche un moyen de les corriger le plus rapidement possible par les scripts , avant que les tricheurs ne polluent trop les mods ! ![]() _________________ " La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG " La véritable école du Commandement est la culture générale. " CdG " Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F " La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG " La fin de l'espoir est le commencement de la mort. " CdG |
Revenir en haut | ![]() ![]() ![]() |


Page 1 sur 1 ¤
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum