Search the Community

Showing results for tags 'tutoriel / partage'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Register & Login
    • Register
    • Login
  • Espace Communautaire
    • Funky Emulation
    • Présentations
    • Discussions Générales
    • Bureau de la Communauté
    • Espace Gaming
    • Espace Premium
  • Emulation & Co
    • Rewrite a Release / Tutorial
    • Suggest a Release / Tutorial
    • The Ideas Box
  • Emulation de jeux
    • RaiderZ
    • Aura Kingdom
    • Metin2
    • Dofus
    • World of Warcraft
    • Minecraft
    • Aion
    • Habbo
    • Voir plus...
  • Espace Divers
  • Internationnal Forum
  • PassionDev's Forum
  • M2Project - M2SF / M2CF's M2SF
  • M2Project - M2SF / M2CF's Aide / Questions / Support
  • M2Project - M2SF / M2CF's Tutoriels & Partages
  • M2Project - M2SF / M2CF's Suggestions
  • M2Project - M2SF / M2CF's Report de Bugs

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Nationality


Sexe


Discord


Skype


Biographie


Site


Nombre

 
or  

Found 786 results

  1. Bonjour à tous! Je viens vous partager un kit de développement complet pour RaiderZ dont je me servirai dans mes tutoriels / partages dans la section. Le kit est séparé en deux parties: Une partie contenant le serveur, le client, la base de donnée et les redistribuables: Client Serveur Redist /!\ Pour la partie serveur, des membres m'ont signalé des problèmes, si le message suivant apparait: /!\ Téléchargez ces redistribuables et installez les: [Hidden Content] Et une autre partie contenant les sources et les SDK du jeu: Sources + SDK Le client est le dernier client américain en date (2015), et le serveur possède la majeure partie des tous derniers contenus du jeu, lors de sa fermeture. Dans la première archive sont inclus les redistribuables, dans le dossier Redist. Pour être sûr de pouvoir jouer sans soucis, installez les avant de lancer le client ! Les sources ont été légèrement retravaillées pour être compatibles avec Visual Studio 2017, et sont issues d'un Github public : (Lien ici) Mot de passe pour les archives: Funky-emu.net --------------------------------------------------------------- Changelog : Lien des mises à jour pour la version actuelle : Si le dossier est vide, c'est qu'il n'y a pas de mises à jour pour ma version actuelle, et que tout est déjà inclus dans le pack principal. [Hidden Content] --- Download
  2. Bonjour, Module Loader est un projet similaire à Adhons les principales différence sont les fonctions et les modules (qui sont plus difficile a trouvé que les addons). Module Loader entièrement gratuit et si vous voulez les sources je peut vous les envoyé Lien : [Hidden Content] Contenu de l'archive : Le dossier "dev" avec quelques fichiers expliquant les fonctions disponibles. Le dossier module avec un fichier loader.swf et un fichier de configuration modules.txt (les modules à charger sont dans ce fichier). Le fichier dofus.dll (pour le menu au clic droit). Le fichier Dofus.exe (j'ai juste oublié de le viré de l'archive). Le fichier loader.swf qui permet de charger modules/loader.swf. Merci, --- Download
  3. Bonsoir, Voici le fameux plugin Essentials ! Ce plugin permet d'instaurer les commandes essentielles a votre serveur. Comme remettre le jour, mettre le beau temps lorsque la pluie tombe et d'autre choses comme ceci. C'est LA BASE des plugins, sans lui, hum votre serveur sera bancale,j'estime que plus de 60% des commandes qu'on écrit sur un serveur provienne de Essentials. Sommaire : I- Installation II- Commandes de Essentials 1- Liste des commandes de triches 2- Liste des commandes d'économie 3- Liste des commandes générales 4- Liste des commandes de modération 5- Liste des commandes de spawn et téléportation Lors de la 2éme partie, les commandes seront triés par ordre alphabétique pour chaque Liste. En dessous de chaque commande et de sa description. J'ai mis la permission concernant la commande a mettre dans votre plugin Permission. I-Installation Télécharger Essentials ici en choisissant la version que vous voulez : Essentials Spigot / Bukkit Vous avez maintenant 4 fichiers jar : - EssentialsChat.jar - EssentialsAntiBuild.jar - EssentialsSpawn.jar - EssentialsProtect.jar - Essentials.jar Mettez ces 4 fichiers dans votre dossier "plugins" de vos FTP de votre serveur. (Vous pouvez ne pas mettre les 4 fichiers, aujourd'hui on va s'interessé seulement a Essentials.jar) Après ceci, redémarrer votre serveur. Normalement c'est bon ! II- Commandes 1- Liste des commandes de triches : /bigtree : Fait apparaître un énorme arbre. essentials.bigtree /break : Casse le bloc que vous regardez. essentials.break /enchant : Enchante l'item que vous tenez en main essentials.enchant /exp : Permet de se donner un certain niveau ou de se rajouter des niveaux. essentials.exp essentials.exp.set (Permet de se donner un niveau précis) essentials.exp.set.others (Donner un niveau précis à d'autres joueurs) essentials.exp.give (Se rajouter le nombre de niveau choisi) essentials.exp.give.others ( Faire de même mais sur d'autre joueurs) essentials.exp.others (Voir le nombre d'exp de d'autres joueurs) /feed : Rempli la barre de faim a 100% essentials.feed essentials.feed.others (Permet de nourrir d'autre joueur) /firework : Créer des feu d'artifices précis. Syntaxe entiére : color: fade:] shape: effect:[,] Exemples: /firework color:red /firework color:red shape:star effect:trail (Feu d'artifice rouge, forme d'étoile avec l'effet trainée) /firework color:red,blue,green fade:yellow (Rouge,bleu,vert, jaune en couleur "inférieur") essentials.firework essentials.firework.fire (Faire une copie des fusées de feu d'artifice dans a main) /fly : Autorise le joueur choisi à voler. essentials.fly essentials.fly.others (Permet de mettre le /fly à d'autre joueurs) /gamemode : Change le type de jeu du joueur choisie essentials.gamemode essentials.gamemode.others (Permet de changer le type du jeu à un autre joueur. /give : Permet de donner des objets à un joueur. essentials.give /god : Permet de se rendre invincible/immortel. essentials.god essentials.god.others (Permet de mettre le /god à d'autre joueurs.) /hat : Permet d'avoir un bloc comme chapeau. essentials.hat /heal : Permet de remettre son état de santé à 100%. essentials.heal essentials.heal.others (Permet de /heal les autres joueurs.) /i : Premet de se donner des objets à soi-même. essentials.item /kit : Fait apparaître un kit d'objet prédéfinit sur le sol. essentials.kit essentials.kit.* (Permet d'accéder a tout les kit) essentials.kit.others (Permet de mettre un kit à un autre joueur.) /more : Rempli au maximum l'item tenu en main. essentials.more /ptime : Change le temps du jeu pour un joueur. essentials.ptime essentials.ptime.others (Changer le temps de jeu pour d'autres joueurs) /repair : Répare l'objet en main, ou de tout les objets possédés. essentials.repair essentials.repair.armor (Permet de réparer les armures) essentials.repair.enchanted (Permet de réparer les objets enchantés) /speed : Augmenter sa vitesse de déplacement. essentials.speed essentials.speed.others (Changer la vitesse à d'autres joueurs) essentials.speed.bypass ( Dépasser la limite de vitesse marqué dans le config.yml) /time : Change le temps du serveurs pour tout les joueurs pour un monde ou tous. essentials.time essentials.time.set (Permet de changer le temps du monde) /tree : Permet de faire apparaître un arbre. essentials.tree /ul : Permet de placer un objet en illimité. essentials.unlimited essentials.unlimited.others (Permet de placer un objet en illimité à un autre personne.) /wb : Permet d'ouvrir la fenêtre d'un établi. (sans établi à proximité) essentials.workbench 2- Liste des commandes d'économie : /balance : Affiche l'argent actuellement possédé par un joueur. essentials.balance essentials.balance.others (Permet de voir l'argent possédé par les autres joueurs. /balancetop : Affiches les comptes possédant le plus d'argent. essentials.balancetop /eco : Modifie le montant total du compte d'un joueur. essentials.eco essentials.eco.loan (Donner de l'argent illimité à un joueur) /pay : Paye un joueur du montant souhaité. essentials.pay /sell : Vend un nombre d'objet souhaité. essentials.sell /setworth : Assigne un prix à un objet. essentials.setworth /worth : Affich le prix d'un objet. essentials.worth 3- Liste des commandes générale : /afk : Vous mets en statut "Away From Keyboard" (Pas devant son clavier) essentials.afk essentials.afk.kickexempt (Exempter de l'auto-Kick après le AFK) essentials.afk.others (Mettre les autres joueurs AFK) /book : Permet de changer le contenu d'un livre déjà signé. essentials.book essentials.book.author (Permet de changer l'auteur du livre) essentials.book.title (Permet de changer le titre du livre) /compass : Affiche la direction dans laquelle vous regardez en degrés et avec les points cardinaux. essentials.compass /depth : Affiche la hauteur du personnage par rapport au niveau de la mer. essentials.depth /getpos : Affiche les coordonnés X, Y, Z, Y, Yaw et Pitch. essentials.getpos essentials.getpos.others (Connaitre la position d'un autre joueur) /help : Affiche la liste des commandes disponibles essentials.help /helpop : Envoie une demande privée à tous les Opérateurs (op) essentials.helpop essentials.helpop.receive (Voir les message Helpop) /ignore : Ignore certains joueurs essentials.ignore /info : Attribue la fonction "info" à l'objet en main ; permet d'avoir des informations sur le bloc sélectionné. essentials.info /list : Permet d'avoir la liste des joueur(s) connecté(s) essentials.list /mail : Envoie un mail intra-joueurs , intra-serveur , même quand ceux-ci sont déconnectés essentials.mail essentials.mail.send (Envoyer un mail) /me : Décrit une action dans le contexte du joueur. (Exemple : /me veut du pain. Pseudo veut du pain.) essentials.me /motd : Affiche le Message Of The Day : message de connexion des joueurs. essentials.motd /msg : Permet d'écrire un message privé exemple : /msg [le nom de la personne] [votre message] essentials.msg /nick : Donne un pseudonyme à un joueur. essentials.nick essentials.nick.others (Permet de mettre un surnom à un autre joueur) /powertool : Assigne une commande à l'objet tenu dans la main. essentials.powertool /r : Permet de répondre à un mail. essentials.msg /realname : Permet de voir le nom original du joueur (sans le /nick). essentials.realname /recipe : Voir la recette pour fabriquer un objet. essentials.recipe /rules : Voir les régles du serveur. essentials.rules /seen : Voir des informations de connection d'un joueur. essentials.seen essentials.seen.banreason (Voir la raison du bannissement de ce joueur) essentials.seen.extra (Voir l'IP du joueur et le lieu de sa derniére connection) /spawner : Changer le type de monstre d'un générateur de monstre. essentials.spawner essentials.spawner.[mob] (Accés aux changements à certains monstres) essentials.spawner.* (Tout type de générateur de monstre autorisé) /suicide : Permet de ce "suicider". essentials.suicide /whois : Donne des informations sur le joueur (adresse IP, etc). essentials.whois 4- Liste des commandes de modération : /antioch : Place un bloc de TNT près de vous. essentials.antioch /backup : Met en route la fonction backup comme elle est défini dans le config.yml. essentials.backup /ban : Bannir un joueur. essentials.ban essentials.ban.notify (Permet de voir lorsque un joueur est banni) /banip : Bannir l'IP d'un joueur. essentials.banip /broadcast : Affiche le message spécifié a l'ensemble des joueurs. essentials.broadcast /burn : Met en feu le joueur spécifié. essentials.burn /ci : Vide l'inventaire d'un joueur. essentials.clearinventory essentials.clearinventory.others (Vider l'inventaire des autres) /deljail : Permet de libérer un joueur d'une prison. essentials.deljail /enderchest : Permet de voir le contenu d'un coffre de l'Ender. essentials.enderchest essentials.enderchest.others (Voir le contenu d'un coffre de l'Ender à un autre joueur) essentials.enderchest.modify (Modifier le coffre de l'Ender d'un autre joueur) /essentials : Permet de recharger Essentials. essentials.essentials /ext : Eteint le feu. essentials.ext /fireball : Lance une boule de feu mélangée avec de la neige. essentials.fireball /jail : Permet de mettre un joueur en prison. essentials.jail /kick : Permet d'expulser un joueur. essentials.kick essentials.kick.notify (Permet de voir lorsqu'un joueur est kické) /kickall : Permet d'expulser tout les joueurs du serveur sauf vous. essentials.kickall /kill : Permet de vous tuer ou de tuer un autre joueur. essentials.kill /butcher : Permet de tuer tout les monstres essentials.killall /lightning : Permet de lancer un éclair. essentials.lightning essentials.lightning.others (Permet de lancer un éclair sur un joueur) /mute : Permet de couper la parole à un joueur. essentials.mute /nuke : Fait apparaître de la TNT. Beaucoup. essentials.nuke /ping : Permet de savoir si Essentials fonctionne correctement en affichant "Pong !". essentials.ping /remove : Supprime les entités dans le rayon choisi. Exemple : /remove items|flèches|bateaux|minecarts|xp|tableaux rayon (Les | vous montrent juste les différentes options que vous pouvez prendre) essentials.remove /setjail : Positionner une prison à l'endroit où vous êtes. essentials.setjail /socialspy : Permet de voir les messages privés des joueurs (entre eux) et les mails. Voir toutes les discussions de tout le monde. essentials.socialspy /spawnmob [monstre] [nombre] : Fait apparaître des monstres. essentials.spawnmob essentials.spawnmob.mob (Autoriser le spawn d'un monstre spécifique) essentials.spawnmob.* (Autoriser le spawn de tout les monstres) /sudo : Forcer un joueur à faire une certaine commande. Exemple : /sudo Kraken pay Jean-Kevin 1000 ( Kraken enverra directement 1000 sous à Jean-Kevin) essentials.sudo essentials.sudo.exempt (Empêcher d'être sudo par certains joueurs) /tempban : Permet de bannir un joueur temporairement. essentials.tempban /unban : Permet de débannir un joueur. essentials.unban /unbanip : Permet de débannir une IP. essentials.unbanip /vanish : Vous rends totalement invisible. essentials.vanish essentials.vanish.see (Voir un joueur qui est invisible) essentials.list.hidden (Voir les joueurs dans les commandes genre /list, /whois) essentials.teleport.hidden (Vous permet la téléportation avec un joueur invisible) essentials.vanish.effect (Avoir le même effet que la potion d'invisibilité) /weather : Permet de mettre la pluie ou le beau temps (sun ou storm). essentials.weather 5- Liste des commandes de spawn et téléportation : /spawn : Vous téléporte au point de spawn. essentials.spawn /setspawn : Permet de définir un nouveau spawn. essentials.setspawn /back : Permet de se téléporter à l'endroit de sa mort. essentials.back essentials.back.ondeath (Pour revenir au lieu de sa mort) /delhome : Supprime sa maison. essentials.delhome essentials.delhome.others (Supprimer les home des autres joueurs.) /delwarp : Supprime un warp. essentials.delwarp /home : Permet de se téléporter a sa maison. essentials.home essentials.home.others (Se téléporter aux homes des autres joueurs) /j : Permet d'atteindre le plus haut bloc au dessus de vous. essentials.jump /sethome : Définir votre maison. essentials.sethome essentials.sethome.others (Changer les maisons des autres) essentials.sethome.multiple (Autoriser plusieurs maisons aux joueurs) essentials.sethome.multiple.unlimited (Autoriser une infinité de maison à chaque joueur) essentials.sethome.multiple.[set] (Mettre un nombre définie de home a chaque joueur) /setwarp : Permet de créer un point de téléportation. essentials.setwarp /tp [pseudo] : Permet de se téléporter à un joueur. essentials.tp essentials.tp.others (Téléporter un joueur à un autre joueur) /tphere [pseudo] : Permet de téléporter quelqu'un sur soi. essentials.tphere /tppos : Se téléporter a certaines coordonnées. essentials.tppos /warp : Permet de se téléporter à un warp. essentials.warp essentials.warp.list (Voir la liste des warp) essentials.warp.* (Pouvoir utiliser tout les warps) Voila, j'ai enfin fini après 1h30 pour écrire ceci. (Pleins de tableaux permette de voir toutes les commandes, mais jamais par une liste comme ici.) :tounge: Je vous souhaite une excellente journée/soirée a vous.
  4. Plop, Je vous partage l'item shop in game de shang dans sa dernière version v1.3.1 fonctionne parfaitement avec quelques petites retouches sur les files FE 2016 Dl : ICI FE Pour les problèmes et les bugs c'est dans l'A/Q/S Source : Shang
  5. Bonjour, aujourd'hui je vous partage le logiciel Flash Decompiller Trillix 5.3.1370. Ce programme sert à ouvrir les fichiers en .swf Vous pouvez vous en servir pour changer l'image du chargement de votre rétro par exemple ! Liens mega : ici Scan : ici Tutoriel : Il est déjà intégré dans l'archive, mais je l'explique quand même ici avec quelques screens ! Vous allez installer le programme qui se trouve dans Setup en prenant soins de décocher la case pour le lancer à la fin ! Je vous détaille l'installation même si je pense que vous savez faire... Sélectionnez votre langue puis, puis faite "OK" Faites suivants : Faites ensuite l'installation standard, c'est très important ! Après, faite attention à ne pas cocher cette case : SURTOUT PAS Allez ensuite dans sur votre bureau : Faites CLIQUES DROIT sur "Flash Decompiler Trillix.exe" (un menu déroulant s'affichera), et cliquez sur "Ouvrir l'emplacement du fichier". maintenant, vous avez les deux dossier "Program Files (x86)\Eltima Software\Flash Decompiler Trillix" & "Flash Decompiler Trillix 5.3.1370 cracked" Dans le dossier "Flash Decompiler Trillix 5.3.1370 cracked", glissez le programme "FlashDecompiler.exe" dans le dossier "Program Files (x86)\Eltima Software\Flash Decompiler Trillix" Et voilà c'est cracker. Bon jeu à vous Cordialement. --- Download
  6. Salut à tous, voici une petite API pour les votes sur RPG paradize. En gros elle fait : Récupère le captcha de la page de vote. Envoi le formulaire de vote. Regarde si le vote a été accepté et retourne true ou false. Donc au final plus besoin de faire une redirection vers RPG Paradize, et seul les bon votes seront comptés, et tout ça, très simplement ! RpgApi.php : ICI Exemple : ICI L'utilisation d'un tel système est relativement lourd, il est donc préférable de ne pas trop charger la page de vote. --- Download
  7. Ce tutoriel a pour but de vous expliquer comment mettre un effet visuel sur berserk. Tous les buffs en ont un, par exemple bénédiction entoure le joueur d'une aura bleutée, berserk est l'exception. 1 -- Pour commencer dépacker le pack root puis ouvrez le fichier playersettingmodule.py vers la ligne 300 vous aurez : chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+16, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ajoutez cette ligne là avant : chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+14, "Bip01", "d:/ymir work/pc/warrior/effect/berserk.mse") 2 -- Enregistrez, puis dépackez le pack pc. Il faut rajouter le fichier berserk.mse dans le dossier ymir work/pc/warrior/effect/ si vous n'en avez pas, voici le mien : 3 -- Repackez root et pc puis lancez berserk, vous devriez avoir ça: En espérant vous avoir aidé. Pour toutes questions, rendez-vous dans la catégorie Aide/Questions/Support
  8. Gestion des yangs : Aujourd'hui je vais vous partager une quête qui permet d'échanger ces yangs contre un lingot n'importe ou dans la map. quest yangs begin state start begin when 80001.use begin--Ajuster en fonction de l'item a utiliser say_title("Gestion des yangs") say("") say("Bonjour.") say("Ici, vous pouvez transformer vos yangs en lingots.") say("Combien de yangs voulez vous transformer ?") say("Vous avez un total de "..pc.gold.." yang(s).") local sy = select("50M","100M","250M","500M","1MM","Aucun")--Ajuster en fonction des yangs du lingots if sy==6 then return elseif sy==1 then if pc.gold > 50000000 then --Ajuster en fonction des yangs du lingots pc.change_gold(-50000000)--Ajuster en fonction des yangs du lingots pc.give_item2(80003, 1) else syschat("Vous n'avez pas assez de yangs !") end elseif sy==2 then if pc.gold > 100000000 then--Ajuster en fonction des yangs du lingots pc.change_gold(-100000000)--Ajuster en fonction des yangs du lingots pc.give_item2(80004, 1) else syschat("Vous n'avez pas assez de yangs !") end elseif sy==3 then if pc.gold > 250000000 then--Ajuster en fonction des yangs du lingots pc.change_gold(-2500000000)--Ajuster en fonction des yangs du lingots pc.give_item2(80005, 1) else syschat("Vous n'avez pas assez de yangs !") end elseif sy==4 then if pc.gold > 500000000 then--Ajuster en fonction des yangs du lingots pc.change_gold(-500000000)--Ajuster en fonction des yangs du lingots pc.give_item2(80006, 1) else syschat("Vous n'avez pas assez de yangs !") end elseif sy==5 then if pc.gold > 1000000000 then--Ajuster en fonction des yangs du lingots pc.change_gold(-1000000000)--Ajuster en fonction des yangs du lingots pc.give_item2(80006, 1) else syschat("Vous n'avez pas assez de yangs !") end end end end end Si vous ne savez pas implanter une quête, suivez ce tutoriel : ICI
  9. Bonjour, J'aimerais vous faire part de mon partage d'un très gros pack complet de serveur metin 2 ou j ai passer presque 6 mois a bosser dessus suite , a ma reprise de boulot dans la vie actif je n'est plus le temps de m'occuper de tout sa et je trouve sa dommage de faire dormir sa sur mon pc donc je laisse un lien de dl pour récupéré tout sa en espérant que vous ailler une bonne connexion car le dossier et très gros en espérant que vous me laisserez des bon coms et oublier pas un pouce bleu Merci. Source=moi Lien de dl=Cliquez ici pour télécharger Le fichier a dl comporte : Client Lib source Files Se sont des files 2014 toute debug , tout l interface et modifier le client et en qualité hd , ce qui de l implantation dans le client tout et implanter les magasin hors ligne , le switchbot, interface inédite en jeu et plein autre surprise je vous laisse découvrir, je vous laisse un gros partage prenez en par que c'est beaucoup de boulot et que je partage tout sa avec plaisir pour ma part! --- Download
  10. Bonjour, Bonsoir Je vous présente aujourd'hui, un petit partage, qui vous permettra d'ajouter des emplacements pour vos personnages. Ceci est mon premier partage, donc toutes critiques ou autres seront une source d'améliorations. Le tutoriel se base sur l'ordre suivant : Serveur/Client/MySQL Fini de parler, passons au tutoriel : /!\ Serveur /!\ Rendez-vous dans Common/length.h Cherchez : PLAYER_PER_ACCOUNT = 4, Remplacez par : PLAYER_PER_ACCOUNT = 8, Rendez-vous maintenant dans Game/src/locale_service.cpp Cherchez : static void __CheckPlayerSlot(const std::string& service_name) { if (PLAYER_PER_ACCOUNT != 4) { printf(" PLAYER_PER_ACCOUNT = %d\n", PLAYER_PER_ACCOUNT); exit(0); } } Remplacez par : static void __CheckPlayerSlot(const std::string& service_name) { if (PLAYER_PER_ACCOUNT != 8) { printf(" PLAYER_PER_ACCOUNT = %d\n", PLAYER_PER_ACCOUNT); exit(0); } } Maintenant, allez dans Game/src/char_change_empire.cpp Cherchez : snprintf(szQuery, sizeof(szQuery), "SELECT id, pid1, pid2, pid3, pid4 FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); std::auto_ptr msg(DBManager::instance().DirectQuery(szQuery)); Remplacez par : snprintf(szQuery, sizeof(szQuery), "SELECT id, pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8 FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u OR pid5=%u OR pid6=%u OR pid7=%u OR pid8=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); std::auto_ptr msg(DBManager::instance().DirectQuery(szQuery)); Toujours dans char_change_empire.cpp Cherchez : MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult); str_to_number(dwAID, row[0]); str_to_number(dwPID[0], row[1]); str_to_number(dwPID[1], row[2]); str_to_number(dwPID[2], row[3]); str_to_number(dwPID[3], row[4]); Remplacez par : MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult); str_to_number(dwAID, row[0]); str_to_number(dwPID[0], row[1]); str_to_number(dwPID[1], row[2]); str_to_number(dwPID[2], row[3]); str_to_number(dwPID[3], row[4]); str_to_number(dwPID[4], row[5]); str_to_number(dwPID[5], row[6]); str_to_number(dwPID[6], row[7]); str_to_number(dwPID[7], row[8]); cherchez ensuite : snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", get_table_postfix(), empire, GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); std::auto_ptr msg(DBManager::instance().DirectQuery(szQuery)); Remplacez par : snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u OR pid5=%u OR pid6=%u OR pid7=%u OR pid8=%u AND empire=%u", get_table_postfix(), empire, GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); std::auto_ptr msg(DBManager::instance().DirectQuery(szQuery)); Cherchez : DWORD CHARACTER::GetAID() const { char szQuery[1024+1]; DWORD dwAID = 0; snprintf(szQuery, sizeof(szQuery), "SELECT id FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); SQLMsg* pMsg = DBManager::instance().DirectQuery(szQuery); Remplacez par : DWORD CHARACTER::GetAID() const { char szQuery[1024+1]; DWORD dwAID = 0; snprintf(szQuery, sizeof(szQuery), "SELECT id FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u OR pid5=%u OR pid6=%u OR pid7=%u OR pid8=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); SQLMsg* pMsg = DBManager::instance().DirectQuery(szQuery); Maintenant, rendez-vous dans db/src/clientmanager.cpp Cherchez : void CClientManager::QUERY_EMPIRE_SELECT(CPeer * pkPeer, DWORD dwHandle, TEmpireSelectPacket * p) { char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE id=%u", GetTablePostfix(), p->bEmpire, p->dwAccountID); delete CDBManager::instance().DirectQuery(szQuery); sys_log(0, "EmpireSelect: %s", szQuery); { snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4 FROM player_index%s WHERE id=%u", GetTablePostfix(), p->dwAccountID); std::auto_ptr pmsg(CDBManager::instance().DirectQuery(szQuery)); SQLResult * pRes = pmsg->Get(); Remplacez par : void CClientManager::QUERY_EMPIRE_SELECT(CPeer * pkPeer, DWORD dwHandle, TEmpireSelectPacket * p) { char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE id=%u", GetTablePostfix(), p->bEmpire, p->dwAccountID); delete CDBManager::instance().DirectQuery(szQuery); sys_log(0, "EmpireSelect: %s", szQuery); { snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8 FROM player_index%s WHERE id=%u", GetTablePostfix(), p->dwAccountID); std::auto_ptr pmsg(CDBManager::instance().DirectQuery(szQuery)); SQLResult * pRes = pmsg->Get(); Cherchez : void CClientManager::ChangeMonarchLord(CPeer * peer, DWORD dwHandle, TPacketChangeMonarchLord* info) { char szQuery[1024]; snprintf(szQuery, sizeof(szQuery), "SELECT a.name, NOW() FROM player%s AS a, player_index%s AS b WHERE (a.account_id=b.id AND a.id=%u AND b.empire=%u) AND " "(b.pid1=%u OR b.pid2=%u OR b.pid3=%u OR b.pid4=%u)", GetTablePostfix(), GetTablePostfix(), info->dwPID, info->bEmpire, info->dwPID, info->dwPID, info->dwPID, info->dwPID); SQLMsg * pMsg = CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER); Remplacez par : void CClientManager::ChangeMonarchLord(CPeer * peer, DWORD dwHandle, TPacketChangeMonarchLord* info) { char szQuery[1024]; snprintf(szQuery, sizeof(szQuery), "SELECT a.name, NOW() FROM player%s AS a, player_index%s AS b WHERE (a.account_id=b.id AND a.id=%u AND b.empire=%u) AND " "(b.pid1=%u OR b.pid2=%u OR b.pid3=%u OR b.pid4=%u OR b.pid5=%u OR b.pid6=%u OR b.pid7=%u OR b.pid8=%u)", GetTablePostfix(), GetTablePostfix(), info->dwPID, info->bEmpire, info->dwPID, info->dwPID, info->dwPID, info->dwPID, info->dwPID, info->dwPID, info->dwPID, info->dwPID); SQLMsg * pMsg = CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER); Rendez-vous ensuite dans db/src/clientmanagerlogin.cpp Cherchez : void CClientManager::QUERY_LOGIN_BY_KEY(CPeer * pkPeer, DWORD dwHandle, TPacketGDLoginByKey * p) Ensuite, trouvez les lignes : sys_log(0, "LOGIN_BY_KEY success %s %lu %s", r.login, p->dwLoginKey, info->ip); char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), r.id); CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info); Remplacez par : sys_log(0, "LOGIN_BY_KEY success %s %lu %s", r.login, p->dwLoginKey, info->ip); char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), r.id); CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info); Cherchez ensuite : void CClientManager::RESULT_LOGIN_BY_KEY(CPeer * peer, SQLMsg * msg) Trouvez les lignes : if (msg->Get()->uiNumRows == 0) { DWORD account_id = info->pAccountTable->id; char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), account_id); std::auto_ptr pMsg(CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER)); Et remplacez par : if (msg->Get()->uiNumRows == 0) { DWORD account_id = info->pAccountTable->id; char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), account_id); std::auto_ptr pMsg(CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER)); Maintenant, cherchez : void CClientManager::RESULT_PLAYER_INDEX_CREATE(CPeer * pkPeer, SQLMsg * msg) Trouvez les lignes : char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), info->pAccountTable->id); CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info); Remplacez par : char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), info->pAccountTable->id); CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info); /!\ Client /!\ Rendez-vous dans Client/UserInterface/Packet.h Cherchez : PLAYER_PER_ACCOUNT3 = 3, PLAYER_PER_ACCOUNT4 = 4, Remplacez par : PLAYER_PER_ACCOUNT3 = 7, PLAYER_PER_ACCOUNT4 = 8, Rendez-vous maintenant dans Pack/root/introselect.py Cherchez : SLOT_COUNT = 4 Remplacez par : SLOT_COUNT = 8 Cherchez : SLOT_ROTATION = [135.0, 225.0, 315.0, 45.0] Remplacez par : SLOT_ROTATION = [135.0, 180.0, 225.0, 270.0, 315.0, 360.0, 45.0, 90.0] Cherchez : chr.DeleteInstance(0) chr.DeleteInstance(1) chr.DeleteInstance(2) chr.DeleteInstance(3) Remplacez par : chr.DeleteInstance(0) chr.DeleteInstance(1) chr.DeleteInstance(2) chr.DeleteInstance(3) chr.DeleteInstance(4) chr.DeleteInstance(5) chr.DeleteInstance(6) chr.DeleteInstance(7) Cherchez : indexArray = (3, 2, 1, 0) Remplacez par : indexArray = (8, 7, 6, 5, 4, 3, 2, 1, 0) Cherchez : def OnKeyDown(self, key): if 1 == key: self.ExitSelect() if 2 == key: self.SelectSlot(0) if 3 == key: self.SelectSlot(1) if 4 == key: self.SelectSlot(2) if 5 == key: self.SelectSlot(3) Remplacez par : def OnKeyDown(self, key): if 1 == key: self.ExitSelect() if 2 == key: self.SelectSlot(0) if 3 == key: self.SelectSlot(1) if 4 == key: self.SelectSlot(2) if 5 == key: self.SelectSlot(3) if 6 == key: self.SelectSlot(4) if 7 == key: self.SelectSlot(5) if 8 == key: self.SelectSlot(6) if 9 == key: self.SelectSlot(7) /!\ MySQL /!\ Rendez-vous dans Player/Player_index Modifiez : `id` int(11) NOT NULL DEFAULT '0', `pid1` int(11) NOT NULL DEFAULT '0', `pid2` int(11) NOT NULL DEFAULT '0', `pid3` int(11) NOT NULL DEFAULT '0', `pid4` int(11) NOT NULL DEFAULT '0', `empire` tinyint(4) NOT NULL DEFAULT '0', Par : `id` int(11) NOT NULL DEFAULT '0', `pid1` int(11) NOT NULL DEFAULT '0', `pid2` int(11) NOT NULL DEFAULT '0', `pid3` int(11) NOT NULL DEFAULT '0', `pid4` int(11) NOT NULL DEFAULT '0', `pid5` int(11) NOT NULL DEFAULT '0', `pid6` int(11) NOT NULL DEFAULT '0', `pid7` int(11) NOT NULL DEFAULT '0', `pid8` int(11) NOT NULL DEFAULT '0', `empire` tinyint(4) NOT NULL DEFAULT '0', Voilà, vous venez d'ajouter des emplacements supplémentaire sur vos comptes. Aperçu ? Le screen du système comporte les 8 emplacements. Je vous conseil de mettre 6 emplacements pour éviter une "surcharge" des personnages. Bien entendu, si quelqu'un souhaite modifier/corriger les codes, je suis d'accord car je ne suis pas trop calé niveau sources. Source : Turkmmo
  11. Bonjours, Je vous partage une partie d'un système pvp que j'utilise : Coté navicat : Player.player <== editer cette table en cliquand dessus avec le bouton droit et cliquer sur design table ou editer table Puis ajouter comme ici : Maintenant , niveau winscp/filezilla: Aller dans le dossier quest (metin2/share/locale/france/quest) puis crée un fichier pvpadd.quest et remplissez comme sa : quest killadd begin state start begin when kill with npc.is_pc() begin mysql_query("UPDATE player.player SET kills = kills+1 WHERE account_id ='"..pc.get_account_id()"';") end end end enregistrer la quête et maintenant allez éditer le local_list puis ajouter a la fin pvpadd.quest en ajoutant une entrée après votre deniere quête. Ensuite , allez sur putty/virtual box et faite un remake des quest : sh quest.sh ensuite allez ig et reload q Et voila votre système pvp coté server est fait ! Desolé pour les fautes d'orthographe!
  12. Niveau requis : Intermédiaire Temps estimé : 10 minutes Ré-écrit par @Gurgarath Bonjour, Grâce à ce tutoriel, vous pourrez, voir les PV et les PM de votre adversaire lors d'un duel. En contrepartie, il pourra voir les vôtres ! Plus de tricherie possible lors d'un duel grâce à ça Pré-Requis : L'accès au fichier root dépacké Un accès aux files serveur (quêtes) I. Installation (Partie client) II. Installation (Partie serveur -> quêtes) III. Potentielles remarques Source : ElitePvPers Cordialement,
  13. Bonjour à tous, Ayant reçu et vu plusieurs demandes d'aide sur l'installation d'une machine virtuelle permettant de compiler tout en lançant les files ainsi que des personnes qui souhaitaient des liens autres que MEGA pour le VDI actuelle. J'ai décidé de me lancer dans la création d'une nouvelle machine virtuelle sous la version 9.2 32bit de FreeBSD, je vais vous expliquer ci-dessous les raisons pour lesquelles j'ai choisi cette version ainsi que les fonctionnalités de la VM. Sommaire : Pourquoi avoir choisi cette version de FreeBSD? Quelles sont les fonctionnalités de cette VM? Listing des packages installées sur la VM. Choses à savoir Donc commençons Pourquoi avoir choisi cette version de FreeBSD? Ça va être assez simple, la version 9.2 de FreeBSD reste la plus compatible avec les files Metin2, la version 9.3 fait aussi l'affaire mais il s'avère qu'elle pose quelques problèmes au niveau des fetch (permettant de télécharger via un lien), donc j'ai préféré ne pas la choisir. Ensuite, les versions beaucoup plus supérieures, à la 10 et au-dessus, la version de gcc (compilateur du game/db) n'est plus installée par défaut, ce qui veut dire que la version 4.2 n'est plus accessible d'installation via les ports/pkg (à ma connaissance). De ce fait vous ne pourrez donc pas compiler avec une version supérieure de gcc au dessus de la "4.2". Autrement, vous ne pourrez pas compiler les sources sans faire des modifications au niveau des libs/makefile et une dizaine de fichier serveur. Vous pouvez toujours installer une version supérieure de gcc et supprimer celle installée par défaut, vous êtes libre de faire ce que vous voulez. Quelles sont les fonctionnalités de cette VM? Alors, cette machine virtuelle a été créée dans le but d'être la plus compréhensible possible afin de pouvoir être utilisée par tout type de personnes, quel que soit leur niveau dans ce domaine. Tout d'abord, l'heure sera mise à jour automatiquement par le réseau informatique FreeBSD, le protocole utilisé pour permettre ceci est "ntpd", il peut être désactivé par le biais du ficher rc.conf du répertoire etc. Par la suite, MySQL a été optimisé de sorte à ce qu'il se mette en cache automatiquement, permettant ainsi l'ouverture rapide de votre serveur et d'éviter au maximum les connexions refused. La machine virtuelle a été défragmenté et compactée de sorte à être beaucoup plus rapide et légère par les services proposés par "VMware". Les packages ont étés installés par l'utilitaire "pkg" et il vous permet donc de les supprimer afin d'augmenter leurs versions ou les rétrograder. Par exemple pour mettre mysql56 au lieu de la 55 vous tapez juste "pkg remove mysql55-server" et une fois la désinstallation finie vous tapez "pkg install mysql56-server". Listing des packages installés sur la VM Chose à savoir Les files installées sur cette machine virtuelle sont les 2016, les files ont été éteintes, quêtes rechargées et les logs nettoyés pour éviter une surcharge inutile du VDI. Pour les sources, ceux-ci sont compilables, je me suis permis de régler le TIME BOMB pour que les files puissent se lancer sans soucis et pour que vous puissiez lancer les files directement, le MakeFile a été modifié de sorte à ce que vous puissiez obtenir un game et un db strippé ainsi que la version originale optimisée. Cependant, les sources ont été archivées au format .tar.gz pour éviter par la même occasion une surcharge du VDI au niveau de la taille, il se situe dans /usr/src/ vous aurez juste à entrer la commande "cd /usr/src && tar -zxvf mainline.tar.gz". Si vous ne savez pas compiler vous pouvez suivre le tutoriel de Calypso. Liste des modifications apportés sur les files Pour toute demande d'aide, veuillez poster dans la section appropriée qui est celle-ci. Cette machine virtuelle pourra être mis à jour à la demande des membres. La machine virtuelle a été upload au format .VDI pour ceux utilisant virtualbox ainsi qu'au format .VMDK pour ceux qui comme moi utilise VMware. Ils possèdent une taille de 9GO6 non compressés et une taille de 2GO compressé. Amusez-vous bien ! Le client/source client etc seront disponible en téléchargement directement sur le sujet des Files 2016 après approbation de @Calypso @ASIKOO @Mei Liens VDI : Cliquez ici pour télécharger Mirror (1) Liens VMDK : Cliquez ici pour télécharger Mirror (1) Liens Files Mirrorace: MEGA Liens Sources Mirrorace: MEGA: Le mot de passe MYSQL/SSH est : funky-emu Voilà, j'espère que celles-ci vous auront aider. La vie ou la mort, faîtes votre choix. Cordialement, --- Download #Saw.
  14. Bonjour, Ce tutoriel-partage va vous aidez à fix le bug de pouvoir switch les bonus d'un équipement déjà équiper et du coup fix l'accumulation des bonus. Rendez vous dans dans le fichier char_item.cpp Cherchez : if (ITEM_COSTUME == item2->GetType()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ĽÓĽşŔ» şŻ°ćÇŇ Ľö ľř´Â ľĆŔĚĹŰŔÔ´Ď´Ů.")); return false; } if (item2->IsExchanging()) return false; Ajoutez en dessous : if (item2->IsEquipped()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("no.switch")); return false; } /!\ Attention à bien mettre les tabulations /!\ Dans le même fichier cherchez : case 71052 : // ÁøÀç°æ { // À¯·´, ½Ì°¡Æú, º£Æ®³² ÁøÀç°¡ »ç¿ë±ÝÁö //if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam()) //return false; LPITEM item2; if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell))) return false; if (item2->IsExchanging() == true) return false; if (item2->GetAttributeSetIndex() == -1) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù.")); return false; } if (item2->ChangeRareAttribute() == true) { char buf[21]; snprintf(buf, sizeof(buf), "%u", item2->GetID()); LogManager::instance().ItemLog(this, item, "CHANGE_RARE_ATTR", buf); item->SetCount(item->GetCount() - 1); } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("º¯°æ ½Ãų ¼Ó¼ºÀÌ ¾ø½À´Ï´Ù")); } } Entre "if (item2->GetAttributeSetIndex() == -1)" et "if (item2->ChangeRareAttribute() == true)" Ajoutez ceci : if (item2->IsEquipped()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("no.switch")); return false; } /!\ Attention à bien mettre les tabulations /!\ Partie source c'est fini ! Ensuite rendez vous ici => /usr/metin2/share/locale/france/locale_string.txt/ Et ajoutez à la fin du fichier : "no.switch"; "Vous ne pouvez pas switch les bonus d'un équipement équiper"; /!\ Attention à bien laisser une ligne vide à la fin du fichier /!\ Source : Just4Metin et moi
  15. Ouvrir Userinterface/instancebase.cpp : if (12010 <= vnum && vnum <= 12049) Ajouté : if (vnum >= 20760 && vnum <= 20959) { __AttachEffect(EFFECT_REFINED+YENI_YILDIRIM_EFEKTI _BLACK); } Ouvrir instancebase.h : EFFECT_BODYARMOR_SPECIAL2, Ajouté : YENI_YILDIRIM_EFEKTI_BLACK, Ouvrir root / playersettingsmodule.py : chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+20, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-4-2-2.mse") Ajouté : chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+22, "Bip01", "D:/ymir work/pc/common/effect/armor/armor-5-1.mse") Lien téléchargement : TELECHARGEMENT Ajouter à l' index : *black_new_armor_effects * Source : Turkmmo
  16. Salut tout le monde La quête d'aujourd'hui sert à : -Bloquer l'expérience -Débloquer l'expérience -Vider l'expérience Bloquer l'exp sert à quoi ? Simplement à ne pas gagner d'exp pour pouvoir drop Voilà la quête : quest gestion_exp begin state start begin when 20041.chat."Mon experience ..." begin say_title("Mon experience ...") say("") local z=select("Bloquer mon experience","Débloquer mon experience","Vider mon experience","Fermer") if z==4 then return end if z==1 then say_title("Bloquer mon experience :") if pc.getqf("lock_exp") == 1 then say_reward("Votre experience est déjà bloqué.") else say("Salut ! Si tu veux, je peux bloquer") say("ton experience, pour pouvoir dropper") say("tranquillement.") say("") local lock=select("Bloquer","Ne pas bloquer") say_title("Bloquer mon experience :") if lock==2 then say("Reviens plus tard si tu change d'avis.") end if lock==1 then say("Voilà, votre experience est bloquée !") wait() pc.setqf("lock_exp", 1) pc.setqf("exp_lock", pc.get_exp()) end end end if z==2 then say_title("Débloquer mon experience :") if pc.getqf("lock_exp") == 0 then say_reward("Votre experience n'est pas bloqué.") else say("Alors, tu veux que je débloque") say("ton experience ?") say("") local unlock=select("Oui","Non") if unlock==2 then return end if unlock==1 then say("Voilà, votre experience est débloquée.") wait() pc.setqf("lock_exp", 0) pc.setqf("exp_lock", 0) end end if z==3 then say_title("Vider mon experience :") say("") say("Est tu sûr de vouloir vider ton experience ?") say("Il n'y aura aucun retour possible !") local vider=select("Vider","Fermer") if vider==2 then return end if vider==1 then pc.give_exp2(-pc.get_exp()) end end end when kill begin if pc.getqf("lock_exp") == 1 then if pc.get_exp() > pc.getqf("exp_lock") then pc.give_exp2(-pc.get_exp()) pc.give_exp2(pc.getqf("exp_lock")) else pc.setqf("exp_lock", 0) end end end end end end Note : La quête est sur le passant ivre mais vous pouvez modifier Si vous ne savez pas implanter une quête, suivez ce tutoriel : ici Vous pouvez la partager sur d'autres forums en mettant la source!
  17. Bonjour à tous ! Je vous partage donc ce petit dump que j'ai compilé par mes soins ! Il peut donc prendre les querys suivants en compte : Querys du système d'étoles : Querys du Lycan (avec ajout du bonus saignement) : Lien de téléchargement : Cliquez ici Que cela puisse vous servir ! Source : Mei, --- Download
  18. ATTENTION Trojan détécté par Microsoft Security sur Windows 10 ! Bonjour, En effectuant des traveaux d'organisation et d'optimisations sur les sources metin2, je suis tombé sur ce travail déjà tout fait en ce qui concerne le lanceur du client. Reboot, l'auteur de ce travail admiratif m'a autorisé de vous le partager et en voici la preuve: Explications: Binary => Endroit où sont placé les exe après la compilation extern => Vous vous en rendrez compte seulement... source => Contient les sources (.cpp et .h) vs_files => Nécessaires à Visual Studio client.sln => Projet Visual Studio (pour compiler) Version Python: 2.2 ENABLE_COSTUME_SYSTEM ENABLE_ENERGY_SYSTEM ENABLE_DRAGON_SOUL_SYSTEM ENABLE_BELT_SYSTEM Cryptopp 5.6.2 boost 1.55 *Normalement, aucune erreur à la génération de la solution. Version de Visual Studio: 2012 ou 2013 Lien (original): sur Zippyshare Source: Metin2Dev Cordialement, Ioio --- Download
  19. Salut tout le monde ! Aujourd'hui je vais vous apprendre à créer un serveur Habbo avec l'émulateur PlusEMU en dernière version. L'émulateur est assez stable et ne comporte quasiment aucun bug. --- Download
  20. Bonjour, aujourd'hui je vous partage une API dont j'en suis l'auteur. Cette API sert pour tout ce qui est sur le client de jeu Dofus 1.29, c'est-à-dire : Les news RSS Inscription via le client de jeu Affichage du captcha qui peut-être regénéré Affichage des réponses de "Comment avez-vous connu Dofus ?" Les cadeaux (les Dofus sur la connexion sont des cadeaux d'abonnement à la base) Le statut des serveurs L'API gère aussi les différentes communautés du jeu, j'entends par la la gestion des langues (FR, EN, DE, ES, IT, PT, NL) qui sont présentes dans le client. Les news RSS Inscription via le client de jeu Les cadeaux Le statut des serveurs Pour utiliser cette API il vous faut avoir composer, composer est un gestionnaire de dépendances qui vous servira pour importer les bibliothèques nécessaire au fonctionnement de l'API. Il vous aussi posséder une base de données MySQL ou MariaBD, ces deux systèmes de base de données sont "identiques". Il vous faut activer la ré-écriture d'url sur votre serveur web. Une documentation est disponible sur le dépôt de l'API. L'API ainsi que les sources sont disponibles sur le dépôt github.com. --- Download
  21. Salut, Voici un Tuto pour changer les News ( Voir Pièce Jointe ).Dans un Premiers Temps, Télécharger ceci : News RSSEnsuite,Ouvrez le Dossier News RssOuvrez Ensuite Le Dossier RSSEnsuite Ouvrez config.phpFaites comme ceci : <?php define("DB_HOST","IP DE LA DB (PAR DÉFAUT 127.0.0.1)"); define("DB_LOGIN","root"); define("DB_PASS","MOT DE PASSE SI VOUS EN AVEZ UN"); define("DB_BDD","news");?> Enregistrez Puis fermezMaintenant Ouvrez RSS.PHPEt Remplissez Comme Ceci : <?php echo '<?xml version="1.0" encoding="utf-8"?>' ?>NOM DE VORE SERVEURURL DE VORE SERVEUR DESCRIPTION DE VORE SERVEUR<?php require "config.php"; mysql_connect(DB_HOST,DB_LOGIN,DB_PASS); mysql_select_db(DB_BDD); mysql_query("SET NAMES UTF8"); $sql="SELECT * FROM rss ORDER BY id DESC LIMIT 0, 6"; $req = mysql_query($sql) or die('Erreur SQL ! '.$sql.' '.mysql_error()); while($data=mysql_fetch_assoc($req)){ echo "\n"; echo "{$data["id"]}"; echo "{$data["title"]}\n"; echo "URL DE VORE SERVEUR\n"; echo "{$data["icon"]}\n"; echo "".date("D, d M Y H:i:s",strtotime($data["date"]))." +0200\n"; echo "\n"; }?> Enregistrez Puis FermezCopiez Rss.php et config.phpCollez-les dans votre dossier lang !- Ensuite, Ouvrez Sothink SWF QuickerAllez dans votre Dossier SWF et choisissez lang_fr_786Faites CTRL+F et dans la recherche tappez RSS_LINKVous devriez avoir une ligne ressemblant à ceci : Donc Replacez Comme Cela : Ensuite, Faites Export Et Fermer votre Sohtink SWF QuickerMaintenant, Retournez dans votre dossier de News RSS et ouvrez cette fois-ci le dossier News RSS ScriptOuvrez config.phpPuis Remplissez :<?php define("DB_HOST","IP DE LA DB (PAR DÉFAUT 127.0.0.1)"); define("DB_LOGIN","root"); define("DB_PASS","MOT DE PASSE SI VOUS EN AVEZ UN"); define("DB_BDD","news");?> Enregistrez Puis FermezEnsuite Copiez le dossier News RSS Script et collez-le dans votre dossier “www” De WampMaintenant Lancez Navicat, Créez une New Database Que vous appellerez "news"Une fois fait, executez le fichier sql "rss.sql" Qui se trouve dans le Dossier "RSS"Ajouter Une News :Ouvrez Navicat puis Double-clique sur NewsOuvrez la Table rsset Remplissez Comme ceci : Voici la liste des Icons : à écrire dans la colone Icon => Icon afficher Tuto By Icer Un Petit Merci ferai plaisir.
  22. Salut. Ce bouton, vous a jamais soûlé car il marche pas ? : Moi si. Je partage donc vite fait le debug que je fais je ne sais quand. Dans votre intrologin.py: Dans : class LoginWindow(ui.ScriptWindow): Trouvez : def __init__(self, stream): Ajoutez dans la fonction : self.HakConnexionStop = False Allez dans la fonction Close qui se trouve un petit peu plus bas et ajoutez : self.HakConnexionStop = None Cherchez ensuite : def OnConnectFailure(self): Vous aurez dans la fonction : if self.isNowCountDown: return Ajoutez en dessous : if self.HakConnexionStop: self.HakConnexionStop = False return Cherchez : def Connect(self, id, pwd): Vous trouverez : self.stream.popupWindow.Open(localeInfo.LOGIN_CONNETING, localeInfo.UI_CANCEL) Changez cette ligne en : self.stream.popupWindow.Open(localeInfo.LOGIN_CONNETING, self.HakOnConnexionSTOP, localeInfo.UI_CANCEL) Après la fonction, ajoutez : def HakOnConnexionSTOP(self): self.HakConnexionStop = True self.stream.popupWindow.Close() Vous n'avez plus qu'à repack et le bouton marchera. Quand on clique sur le bouton, je n'efface pas les inputs comme pouvait le faire l'erreur de connexion etc. Si c'est nécessaire je peux vous dire comment faire. Code original = Frozen, forum étrangé.
  23. Yoh ! Tout le monde ! Lors de ce tutoriel, vous allez apprendre à créer un serveur Aura Kingdom en LOCAL . Voici les notions importantes à assimiler avant de commencer le tutoriel. Avant tout de choses j'aimerai m'expliquer; et ayant essayer divers moyens de contourner le problème. Vous pourrez lancer le serveur que en Local ( 192.168.1.x ). Mais ceci ne serra pas un SandBox [/u] Nous allons devoir émuler le jeu. L'émulation consiste à substituer (remplacer) un élément de matériel informatique, tel un terminal informatique, un ordinateur ou une console de jeux par un logiciel. La définition du terme émuler est « chercher à imiter ». L'objectif de ce tutoriel est donc de créer un serveur différent à celui des serveurs officiels de Aura Kingdom où nous allons pouvoir se connecter. Nous pourrons ensuite modifier le jeu selon nos envies. Un serveur Aura Kingdom (et comme la plupart des jeux) est composé de fichier serveurs, ici représenté sous les noms : LoginServer , MissionServer , WorldServer et ZoneServer. C'est les cœurs même du serveur. Ces fichiers sont important car ils permettent l'execution du serveur en symbiose et la connection à la base de données. Il sontdonc indispensable pour le bon fonctionnement de Aura Kingdom. À ce jour, les sources de ces fichiers ne sont pas encore disponible, et sont encore encoder en Sha1. Le serveur est aussi composé d'une base de données qui permet de stocker une multitude d'informations. Dans le domaine d'Aura Kingdom, elle permet de stocker les personnages, les comptes des joueurs, les variables de quêtes, liste des GM, etc ... On utilise le langage SQL pour interagir avec celle-ci. Ainsi, le serveur est composé d'un serveur LoginServer. Le LoginServer est un fichier service réseau qui va permettre d'authentifier un utilisateur. Un joueur d'Aura Kingdom qui va inscrire son nom d'utilisateur et son mot de passe va être authentifié via le service. Il pourra ensuite accéder au jeu. Ces fichiers serveurs fonctionne sous le système d'exploitation CentOS (GNU/Linux - UNIX) bien qu'il soit tout à fait possible de l'adapter à un autre système d'exploitation. Nous n'allons pas installer CentOS sur notre PC, nous allons le virtualiser. La virtualisation va nous permettre d'installer CentOS comme un simple logiciel sous Windows. Afin de faciliter la procédure, nous allons télécharger un fichier .VDI (Virtual Disk Image) qui peut être utilisé sous Virtual Box. C'est un disque dur virtuel déjà préparé. Le VDI que vous allez télécharger ainsi que certains screens sont le fruit de mon travail. PostGreSQL ainsi que toutes les configurations nécessaires sont déjà installées. > J'expliquerai plus bas certaines informations plus spécifique à ces choix. --- Download
  24. Salut à tous voici le Système officiel d’extension d'inventaire [Hidden Content]
  25. Salut a tous, voici le Système d'information groupe [Hidden Content]