Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

Hystos

Membre
  • Compteur de contenus

    256
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Hystos

  1. Hystos

    Reset_char.php

    Salut ! Le problème vient probablement de la connexion SQL. En effet, le script que tu nous présentes utilise mysqli avec une variable de connexion nommée $sqlServ . Tu ne vois probablement pas d'erreur car ton serveur apache est configuré de façon à ce que ce type d'erreur n’apparaisse pas. Quoi qu'il en soit, tu peux essayer de modifier les requêtes SQL pour utiliser simplement mysql. Il faudra enlever tous les "i" dans les fonctions mysqli (=> mysql) et l'argument $sqlServ qui devient inutile. Je me dois de te mettre en garde. Metin2CMS est codé proprement. Certes il n'utilise pas les dernières modes et technologies (mysql, programmation impérative) mais il applique tout de même le modèle MVC en faisant tourner un moteur de templates. Toute modification de Metin2CMS devrait utiliser les outils déjà en place pour gagner en efficacité (mise en cache des fichiers de templates compilés) et en lisibilité. Ainsi, si tu as des bases en PHP/Html, je te conseille de réécrire cette fonctionnalité en utilisant le cadre fourni par le CMS.
  2. Je reviens juste sur quelques points cités plus haut, mais je réponds pas au problème posé, désolé Selon moi, la meilleure façon d'implémenter un nouveau système est atteinte quand on peut difficilement voir la différence entre ce dernier et les systèmes déjà présents de base. En gros, ça veut dire utiliser les outils qu'utilise le jeu de base sans chercher à bidouiller pour rien. Dans l'exemple de ton tableau de personnages, Sparks, c'est simplement de la duplication d'information. Tous tes personnages sont déjà stockés dans une table SQL facilement accessible, et n'étant pas forcément coûteuse si on passe par les sources (et surtout pas par un pseudo module implanté pour jouer avec des requêtes dans les .quest). Ce n'est pas logique de créer un nouveau tableau avec les noms de tous les personnages du jeu (en se faisant chier avec des trucs pas évidents à gérer : plusieurs login => pas de duplication, le logout pas forcément envoyé comme on le veut...). De plus, beaucoup de gens sous estiment la puissance du langage SQL. Les requêtes "basiques" que vous trouvez un peu partout avec un SELECT, un WHERE, un ORDER BY, etc... c'est que la partie immergée de l'iceberg ! Toute sa puissance repose dans ses groupements, ses jointures, ses sous-requêtes, ... En utilisant au mieux de ses capacités le SQL, on peut vraiment faire des miracles qui auraient nécessité plusieurs requêtes "basiques" avec des boucles imbriquées (cf empires). Ainsi, selon moi, la meilleure façon d'écrire ce genre de système est de passer intégralement par les sources, et de transmettre quelques fonctions aux quêtes pour l'affichage. A l'intérieur des fonctions codées en C++, il faudra utiliser les éléments de base mis à disposition (les tables SQL, les contenus pré-chargés lors du lancement du serveur, les tableaux dynamiques présents et remplis en cours de fonctionnement). C'est comme ça que fonctionnent le reste des éléments du jeu (guildes, batiments de guilde, shops, ...). En plus, il y a de nombreuses alternatives possibles qui deviennent faciles à faire. Les joueurs actuellement connectés sont par exemple déjà stockés dans un "tableau" en C++ qu'il suffit d'utiliser au besoin. PS : C'est un peu ironique pour moi de dire ça car il y a quelques années j'étais "Monsieur qui fait tout avec les quêtes" ! Je gérais les drops, les kills, les events, les systèmes de ce genre et énormément d'autres uniquement avec des quêtes. J'avais pas le choix, mais ça montre que c'est possible. Avec plus de recul et d'expérience, et surtout la publication des sources, on se rend bien compte qu'on peut faire beaucoup mieux !
  3. Il y a 2 ans de ça j'avais écris précisément ce système. Je pense pas pouvoir te le retrouver, j'ai fais un nettoyage de printemps il y a quelques mois, mais ça te prouve que c'est largement faisable. En plus, à l'époque, je pouvais pas toucher aux sources donc ça se faisait à coup de requêtes SQL relativement coûteuses ! Dans une quête de ce type, il y a deux parties principales : la gestion des kills et la gestion de la temporalité. Tu peux déjà commencer par réfléchir à la manière dont sont gérés les kills en PvP sur ton serveur (module intégré au game serveur, quête, rien du tout ?). La plupart des systèmes téléchargeables directement sur des sites comme epvp étaient il y a quelques mois des quêtes bourrées de requêtes SQL dégueulasses (désolé du terme). Si tu manipules un peu les sources, utilises les et code le système proprement. Tu gagneras ENORMEMENT en rapidité, en stabilité et en fonctionnalités. Une fois que tu auras ton implémentation, ça ne devient plus très difficile. Il faut générer la liste des cibles potentielles, avec quelques restrictions. Globalement, cette fonctionnalité ci passera parfaitement dans une fonction que tu pourras écrire en C++ facilement et qui correspond simplement à l'application d'une requête SQL avec quelques paramètres (level, dernière connexion récente, empire particulier ?). Ensuite, pour l'aspect "Journalier", moi je l'avais écris dans une quête avec les fonctions en lua qui permettent de gérer la temporalité. Tu peux certainement là encore faire mieux en passant par les sources. Si tu as la motivation et quelques connaissances basiques, je te conseille vraiment d'essayer de le faire par toi même en passant par les sources. Tu pourras ainsi approfondir la gestion des kills dans les sources (ce qui est crois moi très enrichissant et peut te permettre de vraiment différencier ton serveur des autres) et raisonner comme un vrai développeur sur metin2 (et pas bidouiller une quête qui te fera la même chose en moins bien et beaucoup plus coûteux).
  4. Salut, En ce qui concerne le vote, tu as utilisé ce tutoriel : /topic/11822-mt2cms-votes-rémunérés/ ? Dans ce cas, les fichiers donnés sont fonctionnels. Tu as du faire une erreur lors de l'installation (base de données en particulier), la configuration ou l'adaptation de ton design aux fichiers du template. Commence par nous donner les fichiers modifiés du script de vote et le contenu des tables installées (history_vote, liens_vote...) en vérifiant qu'elles sont bien dans la base site. Ensuite, pour l'impossibilité de connexion, ça peut être beaucoup de choses. Si tu veux qu'on puisse t'aider, on a besoin d'avoir tous les fichiers auxquels tu as touché.
  5. Hystos

    "Hack attack"

    Dans les lignes que je t'ai dis, tu as ceci : if (test_server) { sys_log(0, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d", ch->GetName(), current_time - ch->m_kAttackLog.dwTime, GET_ATTACK_SPEED(ch), ch->m_speed_hack_count); ch->ChatPacket(CHAT_TYPE_INFO, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d", ch->GetName(), current_time - ch->m_kAttackLog.dwTime, GET_ATTACK_SPEED(ch), ch->m_speed_hack_count); } Rajoute /* au début et */ à la fin. /*if (test_server) { sys_log(0, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d", ch->GetName(), current_time - ch->m_kAttackLog.dwTime, GET_ATTACK_SPEED(ch), ch->m_speed_hack_count); ch->ChatPacket(CHAT_TYPE_INFO, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d", ch->GetName(), current_time - ch->m_kAttackLog.dwTime, GET_ATTACK_SPEED(ch), ch->m_speed_hack_count); }*/ Le compilateur "ignorera" ces lignes de code.
  6. Hystos

    "Hack attack"

    Etrange ! Essaye de rajouter à la fin : TEST_SERVER:0 Tu peux vérifier simplement la présence du mode test en lançant ton serveur et en regardant attentivement ce qui est écrit. Si c'est en mode test, tu devrais voir pour chaque core un truc de ce genre : ----------------------------------------------- TEST_SERVER ----------------------------------------------- Sinon, il y a un moyen assez simple de l'enlever si tu as accès aux sources. Tu vas dans battle.cpp (game serveur) et tu commentes de la ligne 784 à 797.
  7. Hystos

    "Hack attack"

    Salut ! Tu obtiens ce message suite à une détection de speed hack par le serveur. En gros, selon lui, tu tapes plus vite que tu le devrais. C'est peut être du à un problème de latences. Dans tous les cas, cet avertissement apparaît uniquement parce que ton serveur est en mode test. Tu peux changer cette configuration dans le CONFIG de chaque core et mettre TEST_SERVER:0 à la place de 1.
  8. Hystos

    Renommé 9000 icones

    C'est possible avec de nombreux logiciels tels que [Hidden Content] par exemple.
  9. Hystos

    Renommé 9000 icones

    D'accord. J'ai seulement modifié les extensions après, pas les fichiers en soit... J'avais mal lu ton premier message
  10. Hystos

    Renommé 9000 icones

    Salut, J'ai eu besoin de faire un renommage de masse il y a quelque temps et je me suis écris un petit script pour ça. Je te passe le code : @echo off setlocal enableDelayedExpansion title Modification d'extension tga vers jpeg color 0F set /a total=0 set folder=%~dp0 echo. echo Repertoire de modification : echo %folder% echo. echo Fichiers presents : echo. for %%X in (*.tga) do ( set /a total+=1 echo %%X ) echo. echo Renommer les %total% fichiers en jpeg ? (rentrer OK si oui, autre chose si non) : set /p testv=^>^> echo. if /i %testv% == OK ( set /a total = 0 for %%X in (*.tga) do ( set /a total+=1 ren "%folder%%%X" "%%~nX.jpeg" ) echo Action effectuee avec succes ) else ( echo Modification annulee ) echo. pause exit Il suffit de créer un fichier .bat avec ce code dans le répertoire des fichiers à modifier puis de l'executer.
  11. Hystos

    Serveur metin 2 .

    Salut, Sur Virtual Box, va dans les configurations de ta machine virtuelle, puis dans Réseau, choisi "Accès par Pont" dans le champ "Mode d'accès réseau" et en dessous le nom de ta carte réseau qui devrait s'afficher automatiquement.
  12. Salut, Les fichiers dont on parle se trouvent dans le game client. Pour pouvoir les modifier, il faut que tu télécharges les sources du client et que tu les compiles toi même pour obtenir ton propre game. Sinon, il doit exister une dif pour résoudre le problème mais c'est vraiment archaïque comme procédé désormais.
  13. Le game est le programme qui gère le jeu. Si tu l'as modifié et que tu as fais une erreur, il est possible que le fonctionnement du serveur soit perturbé. Cependant, en ce qui concerne tes personnages, tu ne risques rien car les données du serveur ne dépend pas du game mais uniquement de ta base de données. Tu as fais probablement une bêtise dans une modification mais tes personnages restent intacts. Pense à inspecter les fichiers de log du serveur et du client.
  14. C'est ça Si tu réfléchies à ce que tu as fais, c'est tout à fait logique. Le nouveau game que tu vois correspond à la compilation de tes fichiers sources. Il suffit maintenant de remplacer l'ancien par le nouveau afin d'appliquer tes modifications.
  15. Je suis plus très présent sur Skype Il n'y a rien de compliqué ! Imagine que tu travailles sur un système comme windows. Toi, ce que tu veux faire, c'est EXTRAIRE les données contenu dans une archive ( *.tar.gz). Sur Windows, tu pourras utiliser winrar par exemple. Sur FreeBSD, il te suffit d'utiliser l'instruction en ligne de commande "tar -xvf nomdufichier". Cependant, pour que l'instruction fonctionne correctement, il faut que le fichier existe et que le système arrive à le trouver Ici, quand tu fais ta commande, tu demandes au système de décompresser le fichier funkyemu.tar.gz situé dans le répertoire courant (/usr) alors qu'il n'existe pas, d'où l'erreur En voyant les fichiers en ta possession dans ta fenêtre WinSCP, j'ai précisé que ton archive s'appelle peut être "metin2.tar.gz" et que dans ce cas là il te suffit de l'envoyer sur ta machine virtuelle dans le répertoire /usr et d'effectuer l'instruction "tar -xvf metin2.tar.gz" pour extraire cette dernière
  16. Salut, L'instruction tar -xvf funkyemu.tar.gz permet l'extraction de l'archive funkyemu.tar.gz dans le répertoire courant. En fait, elle contient le dossier metin2 qui correspond à tous tes fichiers côté serveur. Ici, on le voit bien sur ton screen, tu n'as pas l'archive funkyemu.tar.gz dans le répertoire /usr, d'où l'erreur "No such file or directory". A en voir ton répertoire /usr/metin2, tu as déjà du extraire les fichiers. Sinon, ils pourraient être contenus dans l'archive metin2.tar.gz située dans ta fenêtre locale. Il te suffira alors d'envoyer cette archive sur ton serveur et d'exécuter l'instruction tar -xvf metin2.tar.gz. PS : Tu t'es embêté pour rien à masquer l'adresse IP de ton serveur sur ton screen de shell alors qu'elle est présente sur la fenêtre WinSCP De plus, ton serveur étant en local, cette adresse constitue simplement l'adresse de ta machine virtuelle dans ton réseau local. Elle est parfaitement inutilisable depuis l'extérieur
  17. Maintenant, j'imagine que tu as eu droit à la compilation de ton game. Tu peux le retrouver dans /usr/src/mainline/Srcs/Server/game/ Il te suffit ensuite de remplacer le game existant (dans /usr/metin2/share) par celui-ci (d'où le mv).
  18. Rentres exactement : cd /usr/src/mainline/Srcs/Server/game/src gmake Pense à ce que j'ai dis avec WinSCP. Une interface graphique t'aidera à mieux comprendre ce que tu fais. Tu peux également apprendre à utiliser les instructions de base des systèmes UNIX dont cd fait parti par exemple ici : [Hidden Content]
  19. Je n'ai pas bien compris ton message " /usr/src/Mainline/Srcs/Server/game/src " n'est qu'un chemin, pas une commande. En gros, c'est le dossier ou fichier "src" situé dans le dossier "game" situé dans le dossier "Server" etc...
  20. Premièrement, pense à utiliser la fonction "Editer" du forum Ensuite, pour ton problème, il suffit de lire les erreurs que te renvoient la console. Lors de tes essais, tu as d'abord un peu galéré à trouver le chemin avec des "No such file or directory" sur ton cd. Finalement, tu es allé dans /usr/src/mainline/Srcs/Server/game . Ce répertoire existe, mais ce n'est pas celui dans lequel se trouve le makefile qui permet d'exécuter gmake, d'où l'erreur "No targets specified and no makefile found". Il faut que tu ailles dans /usr/src/mainline/Srcs/Server/game/src . La dernière commande est inutile tant que le game n'est pas compilé. Elle permet simplement de remplacer ton game actuel par le game nouvellement compilé. De plus, je crois que j'ai fais une petite erreur dans le nom du game compilé (mais tu le verras toi même). Je sais que tout cela peut sembler un peu obscure, surtout si tu débutes. Tu as probablement installé le logiciel WinSCP. Je te conseille de naviguer un peu "graphiquement" dans les répertoires mentionnés pour bien comprendre pourquoi ce que tu fais ne marches pas.
  21. C'est exact Je ne sais pas exactement comment tu as fais ton installation, mais en gros, tu devrais être amené à faire les actions suivantes sur la machine : cd /usr/src/mainline/game/src/ gmake mv /usr/src/mainline/game/game_r40250_striped /usr/metin2/share/game (tu devras probablement modifier les chemins)
  22. Salut, C'est très simple, tout est déjà fait ! Pour compiler le game, il te suffit d'aller dans le répertoire où tu as mis les sources (souvent /usr/src), puis dans le répertoire des sources du game (game/src/) et de rentrer la commande "gmake". Deux versions du game te seront proposées dans le répertoire parent game. L'une est le game original et l'autre est le game "strippé". La deuxième version a pour avantage que la place mémoire qu'elle occupe est très réduite. Le principe est le même pour compiler db.
  23. Hystos

    Serveur Pvp

    Salut ! J'ai travaillé pendant plusieurs années sur un serveur PvP. A ce titre, j'aimerais te partager mon expérience en la matière. Pour commencer, techniquement, c'est possible, et même très facile à faire dans la pratique. Le serveur PvP, c'est la facilité ! Cependant, et c'est là que les problèmes commencent : un jeu de ce type n'a aucune durée de vie. En effet, un joueur de MMO a un but, un objectif. Par exemple, en début d'aventure, la majorité des gens souhaitent atteindre le niveau maximum du jeu, puis ensuite perfectionner leur équipement, etc... C'est comme ça que fonctionnent la plupart des MMOs. Il apparaît qu'à partir du moment où le joueur a accompli ces objectifs et a ainsi fait le tour du jeu, il se lasse et fini par arrêter. Ainsi, le jeu a une certaine durée de vie qui dépend de la difficulté de son leveling, de son optimisation de stuff ou de ses autres systèmes. Le point important ici est que le jeu est limité dans le temps car les objectifs qu'il propose peuvent s'accomplir dans un temps fini. A contrario, si un jeu ne donne aux joueurs que des objectifs impossibles à atteindre, il ne sera considéré que comme une perte de temps. Il faut ainsi comprendre qu'un joueur de MMO lambda ne joue pas pour s'amuser mais pour triompher de ses propres défis à travers le jeu. Et donc, si tu proposes un serveur où tout le monde a déjà tout, c'est à dire un niveau maximal, un équipement optimal... Où est le jeu ? Quel est l'intérêt de jouer ? Quel objectif donnerais-tu aux joueurs ? C'est ici qu'est le grand défis des serveurs PvP et c'est ce qui en fait toute la complexité. Un serveur PvE se concentre souvent simplement sur le leveling en ajoutant quelques systèmes PvP à la fin. Le but premier est de monter niveau maximum puis d'améliorer son stuff afin de pouvoir être compétitif en PvP. Un serveur PvP qui ne proposerait que du PvP et rien que du PvP sans récompense ni but n'a pas d'intérêt. Il n'y a aucun moyen de s'améliorer, de devenir meilleur. Il n'y a aucune perspective. Je ne parle même pas ici de la différence de gameplay entre deux individus qui est dérisoire sur metin. On arrive, on joue 5 minutes et on part parce que ça n'est qu'une perte de temps pour un joueur de MMO. Il devient alors nécessaire de réfléchir à des objectifs pour occuper les joueurs. Un serveur PvP étant fait pour le PvP, le seul objectif viable sera de devenir plus puissant que le copain à côté. Ainsi si tu veux donner de la durée de vie à ton jeu PvP, tu dois nécessairement introduire des avantages, relativement conséquents, en faveur des joueurs qui s'investissent dans le jeu afin de les garder. Et nous voici arrivés à l'obstacle final : la place du nouveau joueur. En effet, si les anciens joueurs sont avantagés (bonus, meilleurs équipements, ...), un nouveau joueur n'aura aucune chance face à eux. Il n'aura alors aucun plaisir à PvP et il considérera l'objectif de s'améliorer comme impossible à atteindre (celui-ci ne passant que par le PvP) et donc le jeu comme une perte de temps. Sans nouvelles têtes, le jeu finira par mourir de lui même. Ce n'est qu'un aperçu des problèmes que rencontrent les créateurs de serveurs PvP. Il y en a beaucoup d'autres, comme par exemple l'équilibre entre les classes.
  24. Hystos

    Une seule et unique map

    Ou alors, très simple mais moins esthétique, tu gardes les maps 1 de base mais tu écris une quête qui téléporte directement un joueur qui se connecte sur une de ces maps sur la tienne aux coordonnées de son empire.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.