Jump to content
×
×
  • Create New...

Search the Community

Showing results for tags 'metin2'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Funky Emulation
    • Announcements
    • Suggestions
    • Disputes
    • Pillory
  • Community
    • Off Topic
    • Games
    • Member Representations
    • Multimedia
  • Help Area
    • Questions & Answers
  • Releases - Games
    • Gaming
    • Metin2
    • Minecraft
    • Dofus
    • World of Warcraft
    • RaiderZ
    • Aura Kingdom
    • Aion
    • Habbo
    • Wakfu
    • Roblox
    • Grand Theft Auto
    • Miscellaneous
  • Releases - Computer Science
    • World Wide Web
    • Programming
    • Network & Systems
    • Arts
    • Softwares
    • Miscellaneous
  • Projects
    • Your Servers
    • Your Projects
  • Marketplace
    • Sales & Services
    • Research / Recruitment
  • Temporary
    • Temporary
  • PassionDev's Forum
  • The Tarkov Singleplayer Project's Liens importants
  • The Tarkov Singleplayer Project's Discussions

Blogs

There are no results to display.

There are no results to display.

Product Groups

  • Advertisements
  • Advertisements - Pack

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Discord


Site

  1. Rodnia.net - The Great Conqueror Two servers becoming one. Join the great adventure. PvM Medium. International. Registration link: https://rodnia.net/users/register PRESENTATION FR: https://rodnia.net/presentation/
  2. Bonjour à tous, c'est en ce 28 Juin 2021 que je me décide d'annoncer officiellement que mon serveur, Gurgarath, a repris un développement actif depuis quelques mois déjà, après une longue pause pendant laquelle j'experimentais des choses concernant une possible reprise du projet. Gurgarath, qu'est-ce que c'est ? Gurgarath est le nom de mon serveur, sorti en 2017 une première fois. C'est un serveur que l'on peut qualifier de New-School. Le maître mot du serveur est d'apporter une grande stabilité de jeu et de gameplay tout en revisitant et en améliorant plusieurs aspects du GamePlay classique et en améliorant énormément de petits détails ainsi que les performances, la qualité audio ou visuelle. Le GamePlay original est amélioré et enrichi par des quêtes inédites, plus de vie dans le jeu, une possibilité de personnalisation très grande ainsi que bien entendu, toute l'expérience de jeu original, des chiens errants au late game. Un court résumé du GamePlay ? Il y a de cela bien longtemps, l'empire autrefois unifié connut une scission, l'Empire Chunjo, à l'Ouest, connu pour sa magie, prit peur de l'influence grandissante de mystérieuses météorites et fût l'initiateur d'une rebellion visant à demettre l'empereur qui ignorait le pouvoir de ces pierres et les mises en gardes de l'Empereur. L'Empire de l'Ouest rentra en guerre ouverte avec les provinces du Sud, l'Empire Shinsoo, centre économique du continent, ainsi que l'Empire Jinno situé à l'Est, connu pour la qualité de ses enseignements militaires. Depuis lors, ces trois empires se déchirent inlassablement, tandis que l'influence néfaste des désormais nommées "Metin" infestent les végétaux, les animaux et les guerriers. Percez à jour le secret des Pierres Metins, suivez une ligne de quête par Empire visant à apporter la prospérité à votre Empire ou la démise aux empires adverses. Découvrez l'histoire des autres peuples désormais hostiles et prenez part à des combats de guildes ou d'empires grandeur nature avec vos armes ou votre magie. Détruisez des pierres Metins et faites pleuvoir le chaos dans les divers donjons du jeu. Vous pourrez peut-être bien devenir Empereur à votre tour et gérer les caisses de l'état. Profitez d'un GamePlay de groupe ou en solitaire et des nombreuses améliorations Graphiques et Audio ! Quelles améliorations graphiques ou audio ? Le jeu possède de nombreuses améliorations de stabilité, parfois même concernant de très vieux bugs désormais corrigés comme le client qui se fige, un usage mémoire très important, des bugs graphiques concernant le ciel ou le soleil, en bref, énormément de choses corrigées. Mais le jeu possède également de nombreuses améliorations internes, comme une mise à jour profonde du moteur du jeu vers une version plus moderne de DirectX (9 - 12) ou une refonte entière du système audio, avec désormais un son spatialisé natif en 7.1 96KhZ. Il y a bien d'autres nouveautés, activables ou désactivables à volonté comme : du Brouillard Volumétrique, du RayTracing, des Reflets sur les armures, armes, compétences et le soleil, de l'Occlusion Ambiante ou du Flou de profondeur et de nombreux autres améliorations graphiques qui seront proposées lors de futures mises à jour. Amélioration des textures : RayTracing : Le tout avec de nombreuses autres mises à jour graphiques vivant à améliorer la qualité visuelle de ceux le désirant sans impacter les configs de ceux souhaitant jouer avec juste les améliorations d'environnement. Quelles améliorations d'environnement ? Une nouveauté de Gurgarath, c'est la possibilité profonde de personnaliser son jeu. Vous aurez de nombreuses options à votre disponnibilité : Afficher votre statut dans discord, votre niveau, votre empire, votre guilde, votre rang, afficher des informations sur la minimap, sur l'atlas, afficher ou cacher des ombres, des effets, des noms ou des particules. Bref, vous aurez plein d'options, y compris la possibilité de modifier l'ambiance de l'environnement selon votre goût, là où à l'époque ce changement était tout autour de la journée. Aube, crépuscule, journée, nuit, nuit noire, l'ambiance à la carte : https://i.gyazo.com/942b37282261e5a3612287d9635a1d2c.mp4 Bien entendu, l'ambiance générale des empires est adaptée à la situation tendue de la guerre. Les empires se protègent de leur voisins. Les cartes sont revisitées pour donner plus de réalisme au scénario et plus de vie dans le jeu. Mais ce n'est bien sûr pas tout, les monstres vont désormais se mettre à marcher d'un point A à un point B plutôt que de courir dans tous les sens, pour avoir plus de réalisme et de variation dans le jeu. Mais ce n'est pas tout ! Des variations de taille Les monstres du jeu possèdent désormais une taille unique ! Chaque monstre n'est pas une copie carbonne de l'autre, au contraire ! Un ours pourra être deux fois plus grand qu'un autre, un orc deux fois plus imposant que son voisin, la même chose s'applique pour les boss. Attention, ces monstres sont plus fort et encaissent mieux les coups ! Mais le butin que vous pouvez en tirer est plus intéressant ! C'est une addition parfaite pour donner du réalisme et du challenge au jeu. Un ajustement PvE et PvP au milimètre près Petite partie interne au jeu mais très importante et suivant la logique vue plus haut. Le fonctionnement des fonctions internes de dégât, de compétences ou bien de drop ont été revues afin de permettre d'appliquer des modifications très précises, pouvant n'impliquer qu'un monstre, qu'une seule race, qu'un élément, uniquement les dégâts reçus ou donnés et ce avec plein de facteurs différents, pour plus de testing, les DPS sont aussi calculés en temps réel par le jeu afin d'apporter des statistiques et d'apporter dans le futur des ajustements ou des mises à jour très précises pour donner des combats plus haletants et des builds clairement PvE, PvP voire versatiles ! Les systèmes dans tout ça ? Bien entendu, les systèmes sont également de la partie ! Vous y retrouverez un système de familier identique à l'officiel, un magasin hors-ligne fonctionnant selon votre activité en jeu, le système d'aura, d'enchantement élémentaire, un agrandissement d'inventaire, des inventaires spéciaux, un wiki détaillé intégré au jeu, des classements détaillés, un système d'élection d'empereur, des guerres d'empire et de signaux, de biologiste à distance. Et tout un tas de systèmes qui seront dévoilés ici même très bientôt en même temps que les instances du jeu ! Énormément d'autres choses sont présentes dans le jeu et seront postées sous ce post ainsi que sur mon discord afin de ne pas surcharger ce sujet. Discord Officiel : https://discord.gg/jmnkzs2 Un petit visuel supplémentaire ? Voici un court trailer de présentation visuelle ! Cordialement, Gurgarath
  3. OFFICIAL SERVER !! Multilanguage 09/10/21 - 17: 00H Chile Languages: English, Turkish, Polish, Portuguese, Italian, Roman, Hungarian, Spanish 🅿Web: https://metin2sakai.online/ Discord: https://discord.gg/y7fpW5xQVN 🅿FB: https://www.facebook.com/Metin2-SAKAI-239294764661374/ OPENING DATE: Saturday 02.10.21- 21: 00H Chile Download: https://metin2sakai.online/download SERVER INFORMATION: »50% PVP 50% PVM »Without fifth race. »Initial level 1 »Maximum level 105 (expandable). »Everything achievable in the game. »OX Multilanguage Event »Outfit crafting system. »Weapon outfit crafting system. »New Dungeons »Surprise Barter Event »Automatic events. »Reset skills »Itemshop within the game. »Unique pet system. »Stone system +1 to +5 »Reset system »Sphaera system »Shaman Support System »Rates of 70% During the week »Weekends 150% ALL RATES
  4. Bonjour, J'aimerait savoir si quelqu'un sais où je peux modifier le temps de déconnexion IG [Hidden Content] Résolu Cordialement,
  5. Bonjour la populass ! J'ai encore besoin d'un coup de main, malheureusement. J'ai actuellement ces files que j'utilise en local. J'ai essayé d'installer ce "système" mais j'ai un soucis côté python. Le client crash à la connexion et j'ai cette erreur : networkModule.SetSelectCharacterPhase - <type 'exceptions.SyntaxError'>:invalid syntax (uiMiniMap.py, line 392) A cette ligne dans le uiMiniMap.py j'ai la fonction à rajouter dans le tuto : def online_cok_hojdir_ama_benane(self, black, sari, kirmizi, mavi): #blackdragonx61 self.mali.Show() self.sari.Show() self.kirmizi.Show() self.mavi.Show() self.mali.SetText(localeInfo.BLACK_ONLINE + str(black))#Toplam self.sari.SetText(localeInfo.BLACK_SARI + str(sari)) self.kirmizi.SetText(localeInfo.BLACK_KIRMIZI + str(kirmizi)) self.mavi.SetText("|cff00ccffJinno:|h|r" + str(mavi)) J'ai essayé de corriger par moi même mais mes connaissances ne le permet pas, a priori. Quelqu'un peut me donner un coup de main ? Ou un coup de pouce ? Merci d'avance ! EDIT : RESOLU. J'ai pas mal bidouiller là dedans et tout fonctionne maintenant.
  6. Bonjour, Bonsoir, J'aimerait savoir si quelqu'un sais comment régler le chat général, car je n'arrive pas du tout à discuter (Mettre un message) Vous comprendrais mieux avec cela [Hidden Content] J'ai aussi un soucis avec ça [Hidden Content] qui permet de mettre un MP quand je clique, Boum le client ce ferme... J'ai aussi le même soucis avec le "PM" pour MP un joueur ça coupe le client Quand je reçois un MP je tente de l'ouvrir, boum ça me ferme le client aussi. Je pense avoir un gros soucis avec les Message MP... Merci d'avance aux personnes qui m'aiderons à résoudre ce problème fortement gênant. Files utiliser : FE 2016
  7. Bien le bonjour jeunes gens de l'émulation. Je viens vers vous car j'ai l'envie de reprendre un peu l'univers de metin, mais des soucis se présentent à moi. Tout d'abord, j'ai téléchargé ces files : J'ai fait un serveur local avec le vdi, tout fonctionne à merveille, mais ... pour l'installation sur le dédié c'est une autre paire de manche.. Quand je démarre le serveur, j'ai ce message qui apparait : [Hidden Content] J'ai essayé de piquer le game et db du serveur local mais rien ne change j'ai toujours cette erreur. J'ai essayé aussi de changer les permissions mais j'ai tjrs la même erreur. Ensuite, j'ai peut-être fait une erreur en voulant aller trop vite au début, j'ai récupéré les tables de la base de données du local pour balancer sur celle du dédié mais j'ai eu pas mal d'erreurs. Suite à ça j'ai réfléchis et j'ai vu qu'il y avait l'archive mysql. J'ai tout mis (sans rien remplacer) là où il faut (normalement) et pourtant je n'ai toujours pas les tables manquantes, après moultes reboot. Dites-moi si vous avez besoin d'autres infos, si j'ai fait des bêtises ne me tapez pas dessus, je vous en prie ! Merci d'avance pour votre aide qui me sera précieuse, j'en suis sûr !
  8. Salut, Je souhaiterais reprendre un vieux projet et de partir cette fois sur un ultra fun, puisqu'on m'a dit que c'est ce qui marche le mieux en ce moment et qu'il y a moins de travail à faire dessus que sur un oldschool. De ce que je sais il n'y a pas besoin de 36k systèmes, mais je n'ai pas la moindre idée des quels sont réellement nécessaires pour faire un bon ultra fun. Je n'attends pas grand chose en posant ma question ici, juste un listing des systèmes indispensables sur un serveur ultra fun, je les chercherai et implanterai moi même. Si besoin d'informations supplémentaires je reste à votre disposition, bonne journée.
  9. Main Website : https://devilcore.eu/ Game: https://game.devilcore.eu/ Gallery: https://game.devilcore.eu/gallery/ Facebook: https://www.facebook.com/DevilCorEnh/ YouTube: https://www.youtube.com/channel/UCo7Xh6eS4tVcSqrpBEV7Gsw
  10. Bien le bonjour communauté francophone de l'émulation Metin2! Je viens aujourd'hui vous présenter mon projet (Version 1.1) commencé en 2018, laissé à l'abandon pour raison personnel, j'ai repris très activement l'émulation il y quelques mois maintenant et je viens donc vous montrer mon projet. Tout d'abord commençons par l'histoire de WoM2 (Je vous interdit de juger le nom c'était un délire puis après flemme de modifier) Maintenant, passons au déroulement du jeu : Voici quelques screen : Avancement du projet : Comme je l'ai dis dans un autre poste, je suis seul à travailler sur le projet, je suis ouvert à toutes demandes, questions ou autre! donc n'hésitez pas si vous souhaitez participer à un projet qui à du sens voici mon discord : Vinky#2587 La présentation n'est pas du tout, mais du tout finalisé. J'ai écris ça comme ça ce soir car j'avais envie de vous montrer. Mais ne vous inquiétez pas, je me répète mais je suis seul à travailler dessus et j'ai une vie à côté donc je prends mon temps mais ne vous inquiétez pas le projet avance FORT! Merci pour la lecture! Lien utile pour en savoir plus sur la création :
  11. Bonjour tous le monde! Pour commencer je vous présente : XXXXXXX --- NOM DE KEKE QUE LES GENS AIME ---- XXXXXXX (Désolé j'ai pas trouvé le nom encore). Bien que je sois re-nouveau de l'émulation j'ai de grand projet pour mon serveur! J'ai repris d'ancienne files que j'avais au préalable préparé il y a quelques années... Puis *moment ou je raconte ma vie* j'ai eu un enfant, ma vie à légèrement été modifié puis il y a quelques temps maintenant j'ai voulu reprendre l'émulation (après le changement de mon pc pour être précis) et me voilà pour de nouvelle aventure! J'ai absolument tout perdu sauf mes files coup de chance! J'ai perdu mon discord, mes accès sur les forums, bref tout ce refais dans la vie. Maintenant j'ai pas mal modifié mes files d'origine et le rendu me plaît donc ma motivation pour l'ouverture de mon projet est Fou! Petite présentation du serveur : Le serveur est du style Semi-Fun , en therme de d'expérience et de drop d'objets et de yang! Lors d'une bêta fermé organisé avec des amis et quelques heures de recherche j'ai trouvéla solution au problème rencontré : on arrive vite haut level et après des conversations une fois que tous le monde à finis 200 fois toutes les instances il faut leurs trouver quelques chose de nouveau, j'ai donc regardé les solutions possible et j'ai remarqué qu'aucun serveur francophone ne proposait le système de Renaissance. J'ai alors ajouté à mon Game Play le système de renaissance, une fois que vous êtes arrivé au level maximum vous avez la possibilité de recommencer l'aventure depuis le début. en vous offrant des bonus à temps illimité et l'accès à plus de contenue (à chaque renaissance de nouveau bonus & de contenue sera débloqué). Les Lycans on été ré-implanté, après plusieurs testes effectués j'ai fixé le problème du combo ainsi que réglé les compétences qui les rends maintenant jouable et équilibré! Suppression du Bonus Griffes et association avec le Bonus Dague. Bonus Saignement et Résistance Saignement ajusté et maintenant équilibré. Compétences en amélioration rapide, vous pourrez choisir, améliorer vos compétences via une interface visuel. Système du serveur : Le serveur dispose de plusieurs système pour vous simplifier le jeu. Certain système son amené à une amélioration donc les changements entre l'écriture et les images de ce poste et le jour ou vous allez jouer sera sûrement différent. Voici un exemple de système à votre disposition : Pour commencer, nous avons le shop à distance, depuis un raccourci de votre inventaire vous pouvez accéder à différents shop selon vos besoins, la marchand d'armure, d'arme, marchande... Il y a également le système de titre, pour vous imposez et vous différenciez des autres en fonction du temps que vous passer In-Game chaque titre est unique et représente le joueur que vous êtes. Système d'effet, depuis le l'interface "Panel de l'utilisateur" vous pouvez accéder à l'interface des effets, pour choisir la brillance de votre corps ou même retiré celle que vous avez. Plusieurs couleurs d'effet sont disponible et même cumulable. Alors personnalisé au maximum votre apparence! Magasin, J'ai également revu le commerce intégral du serveur! J'ai remarqué que beaucoup de joueurs vendent des objets pour pouvoir acheter d'autres objets, j'ai alors ajouté au système magasin une seconde devise pour vendre vos objets avec des objets que vous souhaitez. Par exemple, vous souhaitez vendre votre LP+9 contre 10 Won et 50 Capes de bravoure? Et bien c'est possible. De plus pour rendre l'information pratique et plus rapide, j'ai rajouté un raccourci dans le "panel de l'utilisateur" pour vous permettre d'accéder à la banque de votre magasin et de récupérer vos biens et votre or depuis n'importe quel position dans le jeu. Système de renaissance, Lors de ma bêta fermé j'ai remarqué que les joueurs upais plutôt rapidement et que le jeux prendrais extinction plus rapidement que je le pensais. Vous avez maintenant la possibilité de renaître vous donnant l'accès à du contenue inédit en fonction de votre niveau de renaissance, chaque niveau est représenté devant votre Pseudo RI, RII, RIII (Ex. : RII Lv 84 Amical Joueur1 ) vous avez la possibilité de cacher votre niveau de renaissance aux autres joueurs. A Chaque niveau renaissance vous débloquez de stuff inédit (équipable par tous les niveaux de renaissance même 0) mais dropable que si vous êtes RI, RII ou RIII. De plus vous avez l'accès à des donjons plus "difficile" à chaque niveau (Ex. : Labyrithe des Orcs RI) avec le donjons "Labyrithe des Orcs" mais avec des monstres et des drops pour des joueurs de RI (accessible que pour les RI et plus et en respectant la tranche de level). Pour le reste des systèmes je vous laisse venir nous rejoindre les découvrir par vous même et laissé un petit commentaire pour me dire ce que t'en pense. Pour ce qui est des maps, chaque map principal de chaque royaume est représenté par des bâtiments des couleurs de l'empire. (Ex. : Vous êtes map 1 jaune, les bâtiments sont donc jaune). Lors de votre première connexion, vous aurez tout un équipement offert pour débuter l'aventure, avec un coffre de débutant qui vous suivra sur plusieurs level, et surprise à chaque renaissance, un PNJ vous donnera un coffre de débutant? pour le niveau de renaissance que vous êtes! En plus de ses équipements vous vous verrez choisir un costume à durée limité pour modifier votre apparence dès vos premiers pas sur le serveur! Ainsi qu'une Monture et un animal de compagnie vous apportant un bonus complémentaire. Les quêtes vous accompagnerons tous le long de l'aventure, les récompenses, l'histoire est modifié n'hésitez pas à lire et me dire quoi modifier, ajouter pour rendre l'histoire de serveur encore plus accrochant! Chaque renaissance vous apporte une Histoire supplémentaire? Pourrait-on faire une série? L'équipe, je dispose d'une équipe plus grande que l'entreprise Apple! Non plus être plus sérieux, je n'es pas d'équipe et justement j'en suis à la recherche, j'ai besoin de personnes volontaire à participer à un grand projet , personne simple pas de prise de tête avec des bonnes connaissances sur les serveurs si possible. Je suis prêt à partager mon assiette donc mettez y du votre et faites les choses correctement! Donc si vous avez des compétences particulière n'hésitez pas à m'envoyer un message (design, codeur, gm, modérateur, etc..) je suis tout seul dans mon projet et la compagnie est toujours bonne à prendre, comme on dit 2 cerveaux valent mieux qu'un! Pour me contacter c'est simple je suis disponible par message privé sur le forum, sur discord en ajoutant : Vinky#2587 ou tout simplement en rejoignant mon discord : https://discord.gg/dgqycHUx Je peux vous présenter des screen ou même vous montrer si vous êtes intéressé via partage d'écran le projet mais je préfère ne mettre aucune image ici pour le moment, gardon encore un peu de mystère! Merci de m'avoir lu et j'espère que mon projet à du sens! A bientôt sur MON serveur
  12. Polikof

    VirtualBox

    Quand je fait ifconfig sa me donne pas l'ip 192.168 sa me met au nvieau de inet 0.0.0.0 et broadcast : 255.255.255.255 Dans réseau j'ai mis accée par pont à ma carte réseau " wifi " comment avoir son ipv4 pour finaliser la création de mon serveur local metin2 merci
  13. Pouvez-vous supprimer le post svp, le serveur et toujours d'actualité mais je voudrai faire une nouvelle présentation le moment venu.
  14. A propos d'Asiria : Après 2 ans d'absence, je suis heureux d'annoncer qu'External PvP sera bientôt rouvert sous le nom d'Asiria 2 ! Le serveur contient de nouveaux systèmes, événements, divertissements et il n'y a pas de Pay2Win! Qu'est-ce que tu attends ? Rejoignez-nous ! Gameplay : Une fois que vous avez rejoint le serveur, vous passerez au niveau 90 et vous recevrez une armure PvP de niveau 90 et une arme PvP 90. Vous devriez PvE afin de dropper les items nécessaires pour améliorer vos stuff PvP ..Le serveur est principalement basé sur le PvP. Vous devrez faire du PvP et tuer des joueurs pour Level up. Le niveau max est actuellement de 150. Le serveur contient tellement d'événements tels que des concours OX quotidiens, des événements 1v1 mensuels, des événements 4v4 hebdomadaires, des événements PvE tous les week-ends... Systèmes : Notre serveur contient certains des systèmes les plus étonnants qui vous offrent la meilleure expérience Metin : I)Étoles II)Magasins Hors-Ligne III)Magasin à distance IV)Inventaire Spécial V)Fast Equipe Avec 4 Slots VI)Système de Fortune VII)7éme Skill VIII)Cacher Son Costume / Étole / Coiffure... IX)Système [VIP]/[Miss] et [Mister] pour les top PvP en 1v1 X)Système de Monture cheval XI)Système de pet XII)Système de projection d'armes / Armures / Montures.. Et Encore à découvrir... Aperçu : https://imgur.com/nUEEdRD https://imgur.com/KthuwcN https://imgur.com/TK57Nga https://imgur.com/5UgM6HG https://imgur.com/w7xlXLL https://imgur.com/lpuPKxV https://imgur.com/GU5KPa8 Liens : Discord : http://discord.asiria2.eu/ Site : http://asiria2.eu/ Bienvenue ! ♥
  15. Bonjour, J'aurais aimé savoir comment créer une règle de vérification en lua ? Comme par exemple le pc.get_level qui permet de vérifier le level du joueurs! Par exemple, j'aimerais qu'avec la commande pc.get_prestige il vérifie le level du prestige qui ce trouve dans player => player (côté bdd, tous comme le level d'ailleurs) Exemple de quête de codage quête que j'aurais aimé avoir comme résultat : if pc.get_prestige() == 1 say: Woua Félicitation t'es prestige 1 end Merci pour votre aide! PS : je me doute qui va falloir créer la commande également dans quest_function (source et file) mais dans les sources il faut bien mettre quelques chose ..?
  16. Bonjour, Pour commencer je m'excuse si c'est pas le bon emplacement Après de longs moments d'inactivité dû à mon travail, ayant ENFIN sauté le pas pour me donner les moyens de m'investir dans la communauté, ma première action sera de partager mes connaissances en programmation Web, bien que je sois pour l'instant encore une brêle en php/js, je gère plutôt bien le html5 et le css3 étant donné que je travaille là dessus depuis plus de 10 ans Mon projet n'en est encore qu'à ses débuts mais je suis bien motivé pour sortir un cms propre, sans failles (c'est là que ça va être le plus compliqué vu que j'ai beaucoup à apprendre en php) le plus complet possible, facilement modifiable en connaissant un minimum le html/CSS Voici une liste non exhaustive car je vais sûrement oublier de mettre à jour ce poste... de ce qui est déjà fait Comme j'ai dit c'en est qu'au début, le design n'étant pas la priorité actuelle il n'y aura pas de screen de celui-ci mais j'ai hâte de passer à cette étape Par ailleurs, vu que je débute en php, je suis ouvert à tout conseils venant de personnes qualifiées pour m'aider dans mon apprentissage, parce que le but premier de ce cms est de développer mon php par passion pour la programmation Merci d'avance d'avoir lu jusqu'ici
  17. Bonjour, je suis sur le projet d'un petit serveur Ultra-Fun PvP, je suis à la recherche de volontaire pour m'aider au niveau du Gameplay IG (bonus, etc) Si tu es intéressé par la chose, n'hésite pas à me contacter sur discord : Barflyy#3629 C'est un projet, donc je prendrais le temps qu'il faut pour la mise en place du serveur. Merci!
  18. La communauté Nethara ouvre notre deuxième serveur de style Middleschool ! 70% PvM 30% PvP Ouverture du serveur : 13.06.2021 - 20:00 heure espagnole. Enregistrez votre compte en ligne sur le site Web Télécharger sur le site Web. Website Original Discord
  19. Boinsoir La Commu J'ai un problème sur mon serveur Qu'à chaque fois que j'applique une modification aux quêtes biolo après avoir compilé le code se réinitialise j'ai aussi enregistré une vidéo: [Hidden Content]
  20. Skill is not TOGGLE. Normal warrior skill does not cancel when killed by a creature. There is no problem when it dies with the /kill command. The effect of the skill disappears, but it still appears as an image. How can I solve this?
  21. Enfaite il explique comment depack mais pas comment repack du coup tuto pas trop utile Et aux niveau de l'ipv4 je met la quel cel de ma carte wifi ou cel de virutal box??
  22. Bonjour, J'ai recherché mais sans trouver de réponse. J'ai pris un serveur dédié Google Cloud pour me remettre dans le jus, mais apparemment ça date trop pour mes compétences J'ai suivi le tutoriel ci : Créer un serveur privé Metin2 Project en dédié - Création & Gestion de Serveur - Funky Emulation (funky-emu.net) Lorsque j'en suis à la compilation de QC (303 sur le shell manager) la console me renvoie ceci [ M2 PROJECT ] [ QC REQUEST ] [ COMPILING ] qc.cc qc.cc:304:6: error: use of undeclared identifier 'assert' assert(nested == 0); ^ qc.cc:313:6: error: use of undeclared identifier 'assert' assert(nested == 0); ^ qc.cc:325:5: error: use of undeclared identifier 'assert' assert(nested == 0); ^ qc.cc:328:6: error: use of undeclared identifier 'assert' assert(nested==0); ^ qc.cc:359:6: error: use of undeclared identifier 'assert' assert(nested==1); ^ qc.cc:377:6: error: use of undeclared identifier 'assert' assert(nested==1); ^ qc.cc:394:6: error: use of undeclared identifier 'assert' assert(nested==1); ^ qc.cc:410:6: error: use of undeclared identifier 'assert' assert(nested==2); ^ qc.cc:436:6: error: use of undeclared identifier 'assert' assert(nested==2); ^ qc.cc:517:6: error: use of undeclared identifier 'assert' assert(nested==2); ^ qc.cc:553:6: error: use of undeclared identifier 'assert' assert(nested==3); ^ qc.cc:663:6: error: use of undeclared identifier 'assert' assert(t.token == '('); ^ qc.cc:693:6: error: use of undeclared identifier 'assert' assert(nested == 3); ^ qc.cc:758:2: error: use of undeclared identifier 'assert' assert(nested==0); ^ 14 errors generated. gmake: *** [Makefile:39: qc.o] Error 1 [ QC ] [ QC REQUEST FAILED ] [ M2 PROJECT ] [ COMPLETED ] Et voici donc mon fichier qc.cc que je n'ai pas modifié #if !defined(_MSC_VER) && defined(__cplusplus) extern "C" { #endif #include <lua.h> #include <lauxlib.h> #include <lualib.h> #include "lzio.h" #include "llex.h" #include "lstring.h" #if !defined(_MSC_VER) && defined(__cplusplus) } #endif #include <algorithm> #include <iostream> #include <set> #include <map> #include <fstream> #include <string> #include <sstream> #include <utility> #include <vector> #ifndef __WIN32__ #include <unistd.h> #else #include <boost/__typeof/__typeof.hpp> #define __typeof(t) BOOST___typeof(t) #include <direct.h> #define mkdir(path, mode) _mkdir(path) #endif #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include "crc32.h" #define OUTPUT_FOLDER "object" using namespace std; lua_State* L; typedef struct LoadF { FILE *f; char buff[LUAL_BUFFERSIZE]; } LoadF; char * g_filename; unsigned int get_string_crc(const std::string & str) { const unsigned char * s = (const unsigned char*) str.c_str(); const unsigned char * end = s + str.size(); unsigned int h = 0; while (s < end) { h *= 16777619; h ^= (unsigned char) *(unsigned char *) (s++); } return h; } static const char *getF (lua_State *L, void *ud, size_t *size) { LoadF *lf = (LoadF *)ud; if (feof(lf->f)) return NULL; *size = fread(lf->buff, 1, LUAL_BUFFERSIZE, lf->f); return (*size > 0) ? lf->buff : NULL; } static void next (LexState * ls) { ls->lastline = ls->linenumber; if (ls->lookahead.token != TK_EOS) { /* is there a look-ahead token? */ ls->t = ls->lookahead; /* use this one */ ls->lookahead.token = TK_EOS; /* and discharge it */ } else ls->t.token = luaX_lex(ls, &ls->t.seminfo); /* read next token */ } static bool testnext (LexState * ls, int c) { if (ls->t.token == c) { next(ls); return true; } else return false; } static void lookahead (LexState * ls) { lua_assert(ls->lookahead.token == TK_EOS); ls->lookahead.token = luaX_lex(ls, &ls->lookahead.seminfo); } enum parse_state { ST_START, ST_QUEST, ST_QUEST_WITH_OR_BEGIN, ST_STATELIST, ST_STATE_NAME, ST_STATE_BEGIN, ST_WHENLIST_OR_FUNCTION, ST_WHEN_NAME, ST_WHEN_WITH_OR_BEGIN, ST_WHEN_BODY, ST_FUNCTION_NAME, ST_FUNCTION_ARG, ST_FUNCTION_BODY, }; struct LexState * pls = 0; void errorline(int line , const char * str) { cout.flush(); if (g_filename) cerr << g_filename <<":"; cerr << line<< ':'; cerr << str << endl; abort(); } void error(const char * str) { cout.flush(); if (g_filename) cout << g_filename <<":"; if (pls) { cout << pls->linenumber << ':'; } cerr << str << endl; abort(); } #define assert_msg(exp,msg) if (!(exp)) error(msg " : " #exp) ostream & operator << (ostream & ostr, const Token& tok) { if (tok.token == TK_NAME) ostr << getstr(tok.seminfo.ts); else if (tok.token == TK_NUMBER) ostr << tok.seminfo.r; else if (tok.token == TK_STRING) ostr << '"' << getstr(tok.seminfo.ts) <<'"'; else ostr << luaX_token2str(pls,tok.token); return ostr; } bool check_syntax(const string& str, const string& module) { int ret = luaL_loadbuffer(L, str.c_str(), str.size(), module.c_str()); if (ret) { cerr << str << endl; error((string("syntax error : ")+lua_tostring(L,-1) ).c_str()); return false; } lua_pop(L,1); return true; } int none_c_function(lua_State* L) { return 0; } set<string> function_defs; set<string> function_calls; void RegisterDefFunction(const string& fname) { function_defs.insert(fname); } void RegisterUsedFunction(const string& fname) { function_calls.insert(fname); } void CheckUsedFunction() { bool hasError = false; set<string> error_func; for (__typeof(function_calls.begin()) it = function_calls.begin(); it != function_calls.end(); ++it) { if (function_defs.find(*it) == function_defs.end()) { hasError = true; error_func.insert(*it); } } if (hasError) { cout << "Calls undeclared function! : " << endl; for (__typeof(error_func.begin()) it = error_func.begin(); it != error_func.end(); ++it) { cout << *it << endl; } abort(); } } void load_quest_function_list(const char* filename) { ifstream inf(filename); string s; while (!inf.eof()) { inf >> s; if (inf.fail()) break; RegisterDefFunction(s); } } struct AScript { string when_condition; string when_argument; string script; AScript(string a, string b, string c) : when_condition(a), when_argument(b), script(c) {} AScript() {} }; void parse(char * filename) { ifstream inf(filename); LoadF lf; lf.f = fopen(filename,"r"); ZIO z; luaZ_init(&z, getF,&lf,"quest"); Mbuffer b; struct LexState lexstate; pls = &lexstate; luaZ_initbuffer(L,&b); lexstate.buff = &b; luaX_setinput(L, &lexstate, &z, luaS_new(L, zname(&z))); parse_state ps = ST_START; int nested = 0; string quest_name; string start_condition; string current_state_name; string current_when_name; string current_when_condition; string current_when_argument; set<string> define_state_name_set; map<int,string> used_state_name_map; map<string, map<string, string> > state_script_map; map<string, map<string, vector<AScript> > > state_arg_script_map; vector<pair<string, string> > when_name_arg_vector; string current_function_name; string current_function_arg; string all_functions; load_quest_function_list("quest_functions"); while (1) { next(&lexstate); if (lexstate.t.token == TK_EOS) break; Token& t= lexstate.t; switch(ps) { case ST_START: { assert(nested==0); if (t.token == TK_QUEST) ps = ST_QUEST; else error("must start with 'quest'"); } break; case ST_QUEST: { assert(nested==0); if (t.token == TK_NAME || t.token == TK_STRING) { quest_name = getstr(lexstate.t.seminfo.ts); cout << "QUEST : " << quest_name << endl; ps = ST_QUEST_WITH_OR_BEGIN; } else error("quest name must be given"); } break; case ST_QUEST_WITH_OR_BEGIN: assert(nested==0); if (t.token == TK_WITH) { assert(nested==0); next(&lexstate); ostringstream os; os << (lexstate.t); next(&lexstate); while (lexstate.t.token!=TK_DO) { os << " " <<(lexstate.t); next(&lexstate); } start_condition = os.str(); check_syntax("if "+start_condition+" then end", quest_name); cout << "\twith "; cout << start_condition; cout << endl; t = lexstate.t; } if (t.token == TK_DO) { ps = ST_STATELIST; nested++; } else { ostringstream os; os << "quest doesn't have begin-end clause. (" << t << ")"; error(os.str().c_str()); } break; case ST_STATELIST: { assert(nested==1); if (t.token == TK_STATE) { ps = ST_STATE_NAME; } else if (t.token == TK_END) { nested --; ps = ST_START; } else { error("expecting 'state'"); } } break; case ST_STATE_NAME: { assert(nested==1); if (t.token == TK_NAME || t.token == TK_STRING) { current_state_name = getstr(t.seminfo.ts); define_state_name_set.insert(current_state_name); cout << "STATE : " << current_state_name << endl; ps = ST_STATE_BEGIN; } else { error("state name must be given"); } } break; case ST_STATE_BEGIN: { assert(nested==1); if (t.token == TK_DO) { nested ++; ps = ST_WHENLIST_OR_FUNCTION; } else { error("state doesn't have begin-end clause."); } } break; case ST_WHENLIST_OR_FUNCTION: { assert(nested==2); if (t.token == TK_WHEN) { ps = ST_WHEN_NAME; when_name_arg_vector.clear(); } else if (t.token == TK_END) { nested--; ps = ST_STATELIST; } else if (t.token == TK_FUNCTION) { ps = ST_FUNCTION_NAME; } else { error("expecting 'when' or 'function'"); } } break; case ST_WHEN_NAME: { assert(nested==2); if (t.token == TK_NAME || t.token == TK_STRING || t.token == TK_NUMBER) { if (t.token == TK_NUMBER) { ostringstream os; os << (unsigned int)t.seminfo.r; current_when_name = os.str(); lexstate.lookahead.token = '.'; } else { current_when_name = getstr(t.seminfo.ts); lookahead(&lexstate); } ps = ST_WHEN_WITH_OR_BEGIN; current_when_argument = ""; if (lexstate.lookahead.token == '.') { next(&lexstate); current_when_name += '.'; next(&lexstate); ostringstream os; t = lexstate.t; os << t; if (os.str() == "target") { current_when_argument = "." + current_when_name; current_when_argument.resize(current_when_argument.size()-1); current_when_name = "target"; } else { current_when_name += os.str(); } lookahead(&lexstate); } { // make when argument ostringstream os; while (lexstate.lookahead.token == '.') { next(&lexstate); os << '.'; next(&lexstate); t = lexstate.t; os << t; lookahead(&lexstate); } current_when_argument += os.str(); } cout << "WHEN : " << current_when_name ; if (!current_when_argument.empty()) { cout << " ("; cout << current_when_argument.substr(1); cout << ")"; } } else { error("when name must be given"); } if (lexstate.lookahead.token == TK_OR) { ps = ST_WHEN_NAME; when_name_arg_vector.push_back(make_pair(current_when_name, current_when_argument)); next(&lexstate); cout << " or" << endl; } else { cout <<endl; } } break; case ST_WHEN_WITH_OR_BEGIN: { assert(nested==2); current_when_condition = ""; if (t.token == TK_WITH) { next(&lexstate); ostringstream os; os << (lexstate.t); next(&lexstate); while (lexstate.t.token!=TK_DO) { os << " " <<(lexstate.t); next(&lexstate); } current_when_condition = os.str(); check_syntax("if "+current_when_condition+" then end", current_state_name+current_when_condition); cout << "\twith "; cout << current_when_condition; cout << endl; t = lexstate.t; } if (t.token == TK_DO) { ps = ST_WHEN_BODY; nested++; } else { ostringstream os; os << "when doesn't have begin-end clause. (" << t << ")"; error(os.str().c_str()); } } break; case ST_WHEN_BODY: { assert(nested==3); ostringstream os; int state_check = 0; __typeof(lexstate) prev = lexstate; string callname; bool registered = false; if (prev.t.token == '.') prev.t.token == TK_DO; while (1) { if (lexstate.t.token == TK_DO || lexstate.t.token == TK_IF || lexstate.t.token == TK_BEGIN || lexstate.t.token == TK_FUNCTION) { nested++; } else if (lexstate.t.token == TK_END) { nested--; } if (!callname.empty()) { lookahead(&lexstate); if (lexstate.lookahead.token == '(') { RegisterUsedFunction(callname); registered = true; } callname.clear(); } else if (lexstate.t.token == '(') { if (!registered && prev.t.token == TK_NAME) RegisterUsedFunction(getstr(prev.t.seminfo.ts)); registered = false; } if (lexstate.t.token == '.') { ostringstream fname; lookahead(&lexstate); fname << prev.t << '.' << lexstate.lookahead; callname = fname.str(); } if (state_check) { state_check--; if (!state_check) { if (lexstate.t.token == TK_NAME || lexstate.t.token == TK_STRING) { used_state_name_map[lexstate.linenumber] = (getstr(lexstate.t.seminfo.ts)); lexstate.t.token = TK_STRING; } } } if (lexstate.t.token == TK_NAME && ((strcmp(getstr(lexstate.t.seminfo.ts),"set_state")==0) || (strcmp(getstr(lexstate.t.seminfo.ts),"newstate")==0) || (strcmp(getstr(lexstate.t.seminfo.ts),"setstate")==0))) { state_check = 2; } if (nested==2) break; os << lexstate.t << ' '; prev = lexstate; next(&lexstate); if (lexstate.linenumber != lexstate.lastline) os << endl; } check_syntax(os.str(), current_state_name+current_when_condition); reverse(when_name_arg_vector.begin(), when_name_arg_vector.end()); while (1) { if (current_when_argument.empty()) { if (current_when_condition.empty()) state_script_map[current_when_name][current_state_name]+=os.str(); else state_script_map[current_when_name][current_state_name]+="if "+current_when_condition+" then "+os.str()+" return end "; } else { state_arg_script_map[current_when_name][current_state_name].push_back(AScript(current_when_condition, current_when_argument, os.str())); } if (!when_name_arg_vector.empty()) { current_when_name = when_name_arg_vector.back().first; current_when_argument = when_name_arg_vector.back().second; when_name_arg_vector.pop_back(); } else break; } ps = ST_WHENLIST_OR_FUNCTION; } break; case ST_FUNCTION_NAME: if (t.token == TK_NAME) { current_function_name = getstr(t.seminfo.ts); RegisterDefFunction(quest_name+"."+current_function_name); ps = ST_FUNCTION_ARG; } break; case ST_FUNCTION_ARG: { assert(t.token == '('); next(&lexstate); current_function_arg = '('; if (t.token != ')') { do { if (t.token == TK_NAME) { current_function_arg += getstr(t.seminfo.ts); next(&lexstate); if (t.token != ')') current_function_arg += ','; } else { ostringstream os; os << "invalud argument name " << getstr(t.seminfo.ts) << " for function " << current_function_name; error(os.str().c_str()); } } while (testnext(&lexstate, ',')); } current_function_arg += ')'; ps = ST_FUNCTION_BODY; nested ++; } break; case ST_FUNCTION_BODY: { assert(nested == 3); ostringstream os; __typeof(lexstate) prev = lexstate; bool registered = false; if (prev.t.token == '.') prev.t.token = TK_DO; string callname; while (nested >= 3) { if (lexstate.t.token == TK_DO || lexstate.t.token == TK_IF || lexstate.t.token == TK_BEGIN || lexstate.t.token == TK_FUNCTION) { nested++; } else if (lexstate.t.token == TK_END) { nested--; } if (!callname.empty()) { lookahead(&lexstate); if (lexstate.lookahead.token == '(') { RegisterUsedFunction(callname); registered = true; } callname.clear(); } else if (lexstate.t.token == '(') { if (!registered && prev.t.token == TK_NAME) RegisterUsedFunction(getstr(prev.t.seminfo.ts)); registered = false; } if (lexstate.t.token == '.') { ostringstream fname; lookahead(&lexstate); fname << prev.t << '.' << lexstate.lookahead; callname = fname.str(); } os << lexstate.t << ' '; if (nested == 2) break; prev = lexstate; next(&lexstate); if (lexstate.linenumber != lexstate.lastline) os << endl; } ps = ST_WHENLIST_OR_FUNCTION; all_functions += ','; all_functions += current_function_name; all_functions += "= function "; all_functions += current_function_arg; all_functions += os.str(); cout << "FUNCTION " << current_function_name << current_function_arg << endl; } break; } } assert(nested==0); for (map<int,string>::iterator it = used_state_name_map.begin();it!=used_state_name_map.end();++it) { if (define_state_name_set.find(it->second)==define_state_name_set.end()) { errorline(it->first,("state name not found : "+it->second).c_str()); } } if (!define_state_name_set.empty()) { if (0 != mkdir(OUTPUT_FOLDER "/state", S_IRWXU)) { if (errno != EEXIST) { perror("cannot create directory"); exit(1); } } ofstream ouf((string(OUTPUT_FOLDER "/state/")+quest_name).c_str()); ouf << quest_name << "={[\"start\"]=0"; set<string> :: iterator it; map<string, int> state_crc; set<int> crc_set; state_crc["start"] = 0; for (it = define_state_name_set.begin(); it != define_state_name_set.end(); ++it) { int crc = (int) CRC32((*it).c_str()); if (crc_set.find(crc) == crc_set.end()) { crc_set.insert(crc); } else { ++crc; while (crc_set.find(crc) != crc_set.end()) ++crc; printf("WARN: state CRC conflict occur! state index may differ in next compile time.\n"); crc_set.insert(crc); } state_crc.insert(make_pair(*it, crc)); } int idx = 1; for (it = define_state_name_set.begin(); it!=define_state_name_set.end(); ++it) { if (*it != "start") { ouf << ",[\"" << *it << "\"]=" <<state_crc[*it]; ++idx; } } ouf << all_functions; ouf << "}"; } if (!start_condition.empty()) { if (0 != mkdir(OUTPUT_FOLDER "/begin_condition", S_IRWXU)) { if (errno != EEXIST) { perror("cannot create directory"); exit(1); } } ofstream ouf((string(OUTPUT_FOLDER "/begin_condition/")+quest_name).c_str()); ouf << "return " <<start_condition; ouf.close(); } { map<string, map<string, vector<AScript> > >::iterator it; for (it = state_arg_script_map.begin(); it != state_arg_script_map.end(); ++it) { string second_name; string path; if (it->first.find('.')==it->first.npos) { string s(it->first); transform(s.begin(),s.end(),s.begin(),::tolower); mkdir(OUTPUT_FOLDER "/notarget",0755); mkdir((OUTPUT_FOLDER "/notarget/"+s).c_str(),0755); path = OUTPUT_FOLDER "/notarget/"+s+"/"; second_name = s; } else { string s = it->first; transform(s.begin(),s.end(),s.begin(),::tolower); int i = s.find('.'); mkdir((OUTPUT_FOLDER "/"+it->first.substr(0,i)).c_str(),0755); mkdir((OUTPUT_FOLDER "/"+it->first.substr(0,i)+"/"+s.substr(i+1,s.npos)).c_str(),0755); path = OUTPUT_FOLDER "/" + it->first.substr(0,i) + "/"+s.substr(i+1,s.npos)+"/"; second_name = s.substr(i+1,s.npos); } map<string,vector<AScript> >::iterator it2; for (it2 = it->second.begin(); it2 != it->second.end(); ++it2) { for (int i = 0; i < it2->second.size(); ++i) { ostringstream os; os << i; { ofstream ouf((path+quest_name+"."+it2->first+"."+os.str()+"."+"script").c_str()); copy(it2->second[i].script.begin(),it2->second[i].script.end(), ostreambuf_iterator<char>(ouf)); } { ofstream ouf((path+quest_name+"."+it2->first+"."+os.str()+"."+"when").c_str()); if (!it2->second[i].when_condition.empty()) { ouf << "return "; copy(it2->second[i].when_condition.begin(),it2->second[i].when_condition.end(), ostreambuf_iterator<char>(ouf)); } } { ofstream ouf((path+quest_name+"."+it2->first+"."+os.str()+"."+"arg").c_str()); copy(it2->second[i].when_argument.begin()+1,it2->second[i].when_argument.end(), ostreambuf_iterator<char>(ouf)); } } } } } { map<string,map<string,string> >::iterator it; for (it = state_script_map.begin();it!=state_script_map.end();++it) { string path; if (it->first.find('.')==it->first.npos) { // one string s = it->first; transform(s.begin(),s.end(),s.begin(),::tolower); mkdir(OUTPUT_FOLDER "/notarget",0755); mkdir((OUTPUT_FOLDER "/notarget/"+s).c_str(),0755); path = OUTPUT_FOLDER "/notarget/"+s+"/"; } else { string s = it->first; transform(s.begin(),s.end(),s.begin(),::tolower); int i = s.find('.'); mkdir((OUTPUT_FOLDER "/"+it->first.substr(0,i)).c_str(),0755); mkdir((OUTPUT_FOLDER "/"+it->first.substr(0,i)+"/"+s.substr(i+1,s.npos)).c_str(),0755); path = OUTPUT_FOLDER "/" + it->first.substr(0,i) + "/"+s.substr(i+1,s.npos)+"/"; } map<string,string>::iterator it2; for (it2 = it->second.begin();it2!=it->second.end();++it2) { ofstream ouf((path+quest_name+"."+it2->first).c_str()); copy(it2->second.begin(),it2->second.end(), ostreambuf_iterator<char>(ouf)); } } } CheckUsedFunction(); } int main(int argc, char* argv[]) { mkdir(OUTPUT_FOLDER, 0700); L = lua_open(); luaX_init(L); if (argc > 1) { for (int i = 1; i < argc; ++i) { g_filename = argv[i]; parse(argv[i]); } } lua_close(L); return 0; } Quelqu'un aurait une idée du problème ? Merci d'avance
  23. Bonjour j'aimerais énormement suivre ce tutoriel de Calypso " mais des que je veut cliquer sur un lien sa me dit : Hidden Link You must react to this topic by clicking on the little heart at the bottom right of this message while being connected to unlock the link. Pourtant je suis bien connécter
  24. Bonjour à tous je souhaiterais créer un serveur privée metin2 héberger sur un VPS OVH Serveur OVH : 2 vCore 4 Go 80 Go SSD NVMe 500 Mbit/s illimité* Suffit il pour un serveur privée? Ensuite comme je suis pas très bon j'aimerais payer quelqu'un pour juste me le configurais et me le rendre fonctionnel si possible biensure. Juste pour qu'il soit en route et je m'occuperais du reste modifier les bonus tout sa je mon occuperais j'aimerais juste quand me l'installe sur le vps en vous remerçions de vos réponce mon discord : Polikof#3802

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.