![](https://fr.metin2.dev/uploads/set_resources_42/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://fr.metin2.dev/uploads/set_resources_42/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
Hystos
-
Compteur de contenus
256 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Boutique
Calendrier
Messages posté(e)s par Hystos
-
-
Bonjour,
Pour plus t'aider, on aurait besoin de la page de configuration (probablement un truc du genre config.php) et de la page d'index (index.php).
-
Cela permet au serveur de communiquer avec la base de données, ce qui est absolument nécessaire.
Qu'est-ce que ça donne ? Le problème est-il résolu ?
-
Connexion base de donnée --> Navicat
Allez, c'est presque fini :embarrased: . Vous pouvez fermer Navicat, ou non, si vous avez la flemme de le relancer pour créer votre compte GM. Su WinSCP, allez dans le dossier metin2 qui se trouve dans le dossier usr. Les dossiers concerné, sont channel 1,2,3,4,5,game99,auth et db.
Dans les fichier CONFIG de channel 1, vous avez 3 lignes :
PLAYER_SQL: COMMON_SQL: LOG_SQL:
C'est ces lignes que vous devriez modifier. Modifiez comme ceci :
(Pour les fichiers CONFIG de channel et game99 )
PLAYER_SQL: **.**.***.** **** ********* playerCOMMON_SQL: **.**.***.** **** ********* common
LOG_SQL: **.**.***.** **** ********* log
Couleur: L'ip utiliser pour se connecter a Navicate
Couleur: Votre identifiant Navicate
Couleur: Votre mot de passe Navicate
Les mots player, common et player, ne sont pas là pour rien, il faut les laisser .
Pour le fichier Config de auth:
PLAYER_SQL: ***.**.***.** **** ********* accountCOMMON_SQL: ***.**.***.** **** ********* common
LOG_SQL: ***.**.***.** **** ********* log
Couleur: L'ip utiliser pour se connecter a Navicate
Couleur: Votre identifiant Navicate
Couleur: Votre mot de passe Navicate
Les mots account, common et log ne sont pas là pour rien, il faut les laisser.
Et enfin, pour le fichier config.txt de db:
SQL_ACCOUNT = "***.**.***.** account **** ********* 0"SQL_PLAYER = "***.**.***.** player **** ********* 0"
SQL_COMMON = "***.**.***.** common **** ********* 0"
SQL_HOTBACKUP = "***.**.***.** hotbackup **** ********* 0"
Couleur: L'ip utiliser pour se connecter a Navicate
Couleur: Votre identifiant Navicate
Couleur: Votre mot de passe Navicate
Les mots player, account, common et hotbackup ne sont pas là pour rien, il faut les laisser.
C'est juste les * qui faut changer, rien d'autre . Donc là c'est la même chose sauf que les mots se trouve au milieux et aussi l'apparition des 0 à la fin . Ne pas oublier les " .
Voila, votre serveur est maintenant en file 2012. Je ferais une partie un peu plus tard . Rebootez votre serveur puis voila les commandes à effectuer pour lancer votre serveur:
cd /usr/metin2;
Pour allumer votre serveur:
sh start.sh
Pour éteindre le serveur le serveur:
sh close.sh
Enfin, tapez le nombre de channel que vous voulez lancer. Ne jamais démarrer le serveur si le serveur est déjà démarré, il faut toujours l'éteindre avant toutes choses !
Elea
Tu as bien fait ça ?
-
As-tu renseigné le bon mot de passe de l'utilisateur metin2 ?
Vérifie la partie de connexion de ce tutoriel : https://fr.metin2.dev/topic/10681-installer-les-server-files-2012/
-
1
-
-
De toute évidence, le game n'arrive pas à se connecter à la base de données.
D'après le message d'erreur, il semblerait que ça soit un problème de mot de passe.
-
Oulah, je suis complètement dépassé avec ces nouvelles branches moi ! Qu'on est bien en files 2012 <3
Si quelqu'un pouvait me fournir les item_proto et mob_proto clients (.xml) et serveurs (.txt ET .sql) des nouveaux fichiers, ça serait cool.
-
OK.
Pour repasser, essaie ce tutoriel : https://fr.metin2.dev/topic/13668-thread/
Je vais voir pour écrire un petit tool qui fonctionne avec les nouveaux fichiers.
-
Texture Water
dans Metin2
Beau travail ! Continue comme ça.
-
Pour pleins de raisons dont celle-ci, il est préférable de traiter avec des bases de données. Je te conseille personnellement de revenir donc à l'ancien système.
Sinon, il faut que tu ailles directement dans ton fichier mob_proto.txt et que tu fasses l'opération à la main (il n'y a pas d'autre moyen à ma connaissance, mais je ne connais pas bien ces nouveaux fichiers donc quelqu'un pourra confirmer).
Au pire, tu peux de générer à nouveau ce fichier .txt à partir de ta table (avec l'aide de n'importe quel langage).
-
Tu peux très bien rajouter un simple *0.5, ce qui divisera par 2 la valeur du skill (par exemple).
-
Pour commencer, quel est le CMS que tu as tenté d'installer ?
-
A mon avis, tu as un soucis de .htaccess.
-
Je vais essayer d'être le plus clair possible.
Un timer déclaré avec timer() est lié au personnage qui le lance. Un timer se créé de la façon suivante :
timer("nom_du_timer", temps_en_secondes_avec_le_declenchement)
Au bout du temps spécifié lors de sa création, le game va vous lancer un event que vous allez pouvoir récupérer de la façon suivante :
when nom_du_timer.timer begin end
Vous pouvez alors faire les actions que vous voulez à l'intérieur, sachant que ces actions seront effectués sur le personnage avec lequel vous avez lancé le timer. Par exemple, voici une mini-quête qui téléportera un personnage 20 secondes après qu'il l'ait demandé :
quest tp begin state start begin when 9012.chat."Téléporte moi" begin timer("timer_tp", 20) say("Tu seras téléporté dans 20 secondes.") end when timer_tp.timer begin pc.warp(xxx, yyy) end end end
Uniquement le personnage ayant cliqué sur le PNJ sera téléporté.
Vous pouvez utiliser à la place de pc.warp() la fonction warp_all_to_village(), ce qui aura l'effet escompté.
ATTENTION :
- Le timer ci-dessus s'applique à un personnage. Si un autre personnage clique sur le PNJ, son timer personnel se lancera et celui de l'autre ne sera absolument pas modifié. Il ne faut donc qu'il n'y ait qu'un seul timer qui soit lancé dans ton cas. En effet, si 2 personnages le lançaient exactement en même temps, il y aurait 2 téléportations, ce qui pourrait occasionner des problèmes.
- Un timer lié à un personnage se désactive lorsque le personnage subit un logout / login. Contrairement à ce qu'on pourrait croire, une simple téléportation ou changement de personnage suffit pour déclencher ces événements. Dans le cas où 2 timers seraient lancés, si le premier a suffisamment d'avance sur le second, alors le second sera annulé (une seconde peut être suffisante selon la charge du serveur).
Il existe d'autres types de timer : les server_timer. Ces derniers sont liés non pas à un personnage mais au serveur entier. Ce faisant, l'utilisation de fonctions telles que pc.warp() est absolument impossible car aucun personnage n'est sélectionné. Il est également impossible de sélectionner un personnage avec un pc.select(). Cependant, la fonction warp_all_to_village() n'agit pas sur un personnage en particulier mais sur un ensemble. Elle est ainsi tout à fait utilisable avec un server_timer. Je vous conseille donc d'utiliser un server_timer dans votre cas. Les server_timer s'utilisent exactement comme les timer simple, en rajoutant le préfixe server_ lors de la création et dans l'événement. De plus, un server_timer ne s'annulera que dans le cas d'un reboot ou d'un crash du serveur.
J'espère avoir donné toutes les clés. Si vous avez des questions, n'hésitez pas.
-
Ce n'est pas une quête mais un event_flag - xmas(*_boom et compagnie) - que tu actives quand tu veux mettre la nuit.
Le meilleur moyen de s'en débarrasser, c'est d'utiliser l'event eclipse (files >= 2011) qui met la nuit également mais sans activer l'artificière.
-
Le seul et unique moyen de réaliser ça, c'est d'être dans un dungeon et d'utiliser un monstre unique.
Voici les fonctions qui te permettront de faire ça : d.spawn_unique() et d.kill_unique().
-
Exact, tout est dans le questlib.lua .
-
Si c'est le même code que tu as dans ton fichier, c'est normal. Comme l'a dit Galet, tu as oublié de modifier le X dans la ligne que j'ai mentionnée.
quest map_turko begin state start begin when 20014.chat."Map de farmage" begin -- A MODIFIER if get_time() >= pc.getqf("next_time") then say_title("Map de farmage") say("Cette Map renferme la tempête des Metin,") say("seul vous peu aller détruire c'est pierre") say("qui nous envahissent de jour en jour.") say("Le seul désinconvénient, c'est que vous pouvez") say("y rester que pendant 1h, ensuite, vous pourrez") say("y retourner dans 12h.") say("") say("Souhaitez-vous y aller ?") if select(locale.yes, locale.no) == 2 then return end pc.setqf("next_time", get_time()+12*60*60) -- A modifier pc.setqf("end_time", get_time()+60*60) -- A modifier pc.warp(911100, 911100) -- A MODIFIER else say_title("Map de farmage") say("Vous ne pouvez pas encore y aller,") say("Revenez plus tard !") end end when login with pc.get_map_index() == 202 begin -- A modifier if get_time() > pc.getqf("end_time") then warp_to_village(202, 10) -- A modifier else local remain = pc.getqf("end_time")-get_time() timer("time_out", remain) end end when time_out.timer begin notice("Fin, vous allez être téléporté dans 10 secondes.") notice("Prochaine ouverture dans 12 heures") warp_to_village(63, 10) -- A MODIFIER end end end
-
Tu as bien modifié la ligne when login with pc.get_map_index() == X begin -- A modifier ?
X doit être l'index de la map d'event.
Si c'est déjà fait, rajoute un notice("test") derrière pour vérifier que le timer se déclenche bien. Après, tu peux faire afficher la variable remain aussi, la variable qf end_time pour vérifier que tout est bon.
-
Dans le code que j'ai donné, je gère déjà ce problème.
-
quest x begin state start begin when ID_PNJ.chat."TITRE" begin -- A MODIFIER if get_time() >= pc.getqf("next_time") then say_title("X") say("t'veux entrer?") if select(locale.yes, locale.no) == 2 then return end pc.setqf("next_time", get_time()+12*60*60) -- A modifier pc.setqf("end_time", get_time()+60*60) -- A modifier pc.warp(xxx00, yyy00) -- A MODIFIER else say_title("X") say("Vous ne pouvez pas encore entrer") end end when login with pc.get_map_index() == X begin -- A modifier if get_time() > pc.getqf("end_time") then warp_to_village(X, 10) -- A modifier else local remain = pc.getqf("end_time")-get_time() timer("time_out", remain) end end when time_out.timer begin notice("Fin de l'event, vous allez être téléporté dans 10 secondes.") notice("Prochaine ouverture dans 12 heures") warp_to_village(X, 10) -- A MODIFIER end end end
Essaie plutôt ça. J'ai évidemment pas testé mais ça devrait mieux marcher normalement. Sauf erreur de ma part, les timers liés aux personnages se suppriment lors d'une téléportation ou d'une déconnexion.
-
Si tu préfères apprendre et comprendre ce que tu fais plutôt que d'utiliser bêtement un logiciel, tu pourras trouver toutes les explications que tu cherches (et bien plus encore) à cette adresse : http://metin2-emu.referata.com/wiki/SQL_item_proto
-
1
-
-
Bonjour,
Aurais-tu un exemple de quête qui ne fonctionne pas bien à nous montrer (le code) ?
-
-
Bonjour !
Comme vous pouvez le lire par vous même, le code que vous venez de nous transmettre est celui de la page de gestion des inscriptions et non celle sur laquelle les joueurs s'inscrivent.
Essayez de trouver une autre page dans vos répertoires portant un nom semblable avec à l'intérieur entre autre le texte qui s'affiche lorsque vous vous inscrivez.
Sinon, je vous conseille personnellement de vous rabattre faute de compétences sur un CMS gratuit, libre et sécurisé tel que MT2-CMS que vous pourrez customiser à souhait en suivant les nombreux tutoriels présents sur le forum.
baisser les degat d'un skill P
dans Questions & Réponses
Posté(e)
/setsk 78 59 Esprit de flamme
/setsk 79 59 Protection des tenebres
Attention : avec Protection, la réelle valeur est située dans le game.