Hystos

Member
  • Content Count

    285
  • Joined

  • Last visited

  • Points

    155 [ Donate ]

Community Reputation

27 Apprenti

About Hystos

  • Rank
    Enseirbien

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. 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 : [Hidden Content] ? 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. Bon tutoriel ! Cependant, il y a une petite correction à faire : l'ordre des conditions/vérifications lors de l'inscription n'est pas le bon ! En effet, si quelqu'un s'amuse à spammer ton formulaire d'inscription, il enverra à chaque tentative d'inscription une requête SQL vers ta db (pour vérifier que le login est pas déjà utilisé). Ainsi, certes tu n'auras pas de compte créé, mais tu auras quand même des requêtes envoyées pour rien vers la db et en cas de spam un risque de surcharge. Il faut donc que tu mettes ta condition sur la captcha avant le test sur l'existence du pseudo
  6. 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.
  7. 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.
  8. 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.
  9. C'est possible avec de nombreux logiciels tels que [Hidden Content] par exemple.
  10. D'accord. J'ai seulement modifié les extensions après, pas les fichiers en soit... J'avais mal lu ton premier message
  11. 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.
  12. 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.
  13. 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.
  14. 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.