-
Compteur de contenus
3576 -
Inscription
-
Dernière visite
-
Jours gagnés
580
Type de contenu
Profils
Forums
Boutique
Calendrier
Tout ce qui a été posté par Calypso
-
Dans ce cas, j'approuve
-
Bonjour tout le monde, Aujourd'hui je vous fais un petit tutoriel qui concerne la liaison Client / Quête. Je ne ferai pas la partie sur le cmdchat, car je ne me suis pas penché dessus, donc si quelqu'un veut s'occuper de cette partie, je pourrais m'occuper l'ajouter au tutoriel. Explication sur la liaison Pour éclaircir un peu le but de la liaison, je vais vous donner un exemple. Vous avez ajouter un bouton sur l'interface, qui permet de bloquer son exp. Bon, le mieux c'est faire ça via une quête. Si le joueur clique sur oui, ça bloque l'exp, et quand il débloque l'exp, et bien ça la débloque. Vous pouvez faire ça avec pas mal de quête, comme le biologiste qui peut être mise en gui Etape 1 ---> Coté client Bon bah rien de compliqué sur le côté client : Etape 2 ---> Côté quête Là aussi, dans ce cas là c'est pas bien compliqué. La quête doit se composer de : À vous de l'améliorer mais c'est un peu le principe. Tutoriel terminé mais comme j'ai dit, si vous souhaitez l'améliorer, n'hésitez pas.
-
Bonus 6/7 game 40k (files 2014)
Calypso a répondu à un(e) question de Skream dans Questions & Réponses
Tu remplaces la ligne de l'item 71051 et 71052 par: 71051 "òØ¡¤Àç°¡ºñ¼" "ITEM_USE" "USE_SPECIAL" 1 "ANTI_SELL | ANTI_PKDROP" "QUEST_USE | LOG" "NONE" "NONE" 0 0 0 0 0 "LIMIT_NONE" 0 "LIMIT_NONE" 0 "APPLY_NONE" 0 "APPLY_NONE" 0 "APPLY_NONE" 0 0 0 0 0 0 0 0 0 0 71052 "òØ¡¤Àç°æºñ¼" "ITEM_USE" "USE_SPECIAL" 1 "ANTI_SELL | ANTI_PKDROP" "LOG" "NONE" "NONE" 0 0 0 0 0 "LIMIT_NONE" 0 "LIMIT_NONE" 0 "APPLY_NONE" 0 "APPLY_NONE" 0 "APPLY_NONE" 0 0 0 0 0 0 0 0 0 0 -
Il n'y a aucune sécurité, juste que les SwitchBot actuels n'utilisent pas le python récent de metin2.
-
Problème de Safe Zone sur MAP
Calypso a répondu à un(e) question de Madamemisa dans Questions & Réponses
N'oublie pas de mettre la balise [En cours], ça facilite la modération -
Bonsoir ! Après une semaine à essayer de compiler le client de metin2, je vous fait un petit tutoriel. Tout d'abord, il vous faut les sources de metin : ICI Pour compiler le client, je vous conseille la branche novaline mais vous pouvez très bien utiliser la branche mainline. Ensuite, vous conseille Visual Studio 2013, car le 2008 est foireux et vous risquez d'avoir des erreurs dans votre compilation (je parle en connaissance de cause ) Vous pouvez le télécharger ici: [Hidden Content] Etape 1, préparez son environnement Une fois les sources et le logiciel téléchargé, ouvrez le. Cliquez sur l'icône ouvrir un fichier et choisissez ce sln: Metin2Client_VC90.sln Il se trouve dans Srcs\Client ----------------------------------------------------------------------- Maintenant, créez un dossier lib et include où vous voulez. Vous pouvez le faire à la racine de votre disque dur, sur le bureau, peu importe. On va dans chaque dossier, mettre les fichiers nécessaire au code source. DOSSIER LIB Srcs\Tools\WorldEditor\extern\lib Mettez le contenu de ce dossier, dans le dossier lib que vous avez créé. Srcs\Extern\lib Mettez le contenu de ce dossier, dans le dossier lib que vous avez créé. DOSSIER INCLUDE Srcs\Tools\WorldEditor\extern\include Mettez le contenu de ce dossier, dans le dossier include que vous avez créé. Srcs\Extern\include Mettez le contenu de ce dossier, dans le dossier include que vous avez créé. !/ N'hésitez surtout pas à remplacer /! ------------------------------------------------------------------------ Avant de lier vos dossier à votre code, je vous conseille de changer le mode de compilation. Personnellement, j'utilise le mod Release qui me permet d'avoir un lanceur d’environ 3200Ko Pour changer le mod de compilation, faites un clic droit sur votre solution (votre .sln) dans visual studio puis cliquez sur propriété. Allez dans Propriétés de configuration ---> Configuration. Cliquez sur Gestionnaire de Configuration et dans configuration de la solution active, vous choisissez Release. Vos projets vont se mettre en Release, il vous reste juste à fermer la fenêtre et cliquer sur OK. ------------------------------------------------------------------------ Maintenant, il faut lier chaque projet de votre solution à vos dossiers. Faites un clic droit sur UserInterface puis cliquez sur Propriété. Allez dans Configuration ---> Vc++ et dans répertoire include, vous choisissez votre dossier include, comme sur le screen. Dans Répertoires de bibliothèques, vous choisissez votre dossier lib. Vous faites exactement la même chose pour les 15 autres projets (EterPack, EterLib, etc ...) ------------------------------------------------------------------------ Maintenant il vous suffit juste d'appuyer sur ces touches pour compiler (en même temps): CTRL + SHIFT + B Pour recompiler le client, faites un clic droit sur la solution puis: Régénérer la solution Malheureusement, la compilation est assez longue. Le .exe final se trouvera dans le dossier /UserInterface/Release Les erreurs fréquentes Impossible d'ouvrir mon sln Votre sln n'utilise juste pas le bonne version. Vous pouvez résoudre ce problème tout simplement. Éditez avec NotePad votre SLN et à la place de: Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 Mettez(si vous utilisez Visual 2008): Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2008 Ca varie en fonction de la version de votre IDE, pensez à bien le retenir 16>.AffectFlagContainer.cpp(68 ) : error C2440: 'initializing' : cannot convert from 'CAffectFlagContainer::Element' to 'char &' 16>.\AffectFlagContainer.cpp(68 ) : error C2440: 'initializing' : cannot convert from 'CAffectFlagContainer::Element' to 'char &' Cliquez deux fois sur CAffectFlagContainer et cela va vous amener à un BYTE. Faites clic droit sur BYTE et cliquez sur Atteindre la définition Il suffit juste de remplacer char par unsigned char. 6>.PythonGraphic.cpp(294) : error C2664: 'CPythonGraphic::SaveJPEG' : cannot convert parameter 2 from 'char *' to 'LPBYTE' 6>.\PythonGraphic.cpp(294) : error C2664: 'CPythonGraphic::SaveJPEG' : cannot convert parameter 2 from 'char *' to 'LPBYTE' Double cliquez sur l'erreur et ça va vous amener sur la ligne de l'erreur. Effacez cette ligne et mettez: bool bSaved = SaveJPEG(c_pszFileName, (LPBYTE)pbyBuffer, uWidth, uHeight); Erreur Python Il arrive parfois, si vous utilisez Python-2.2, vous ayez une erreur. La même chose pour Python2.7. Trouvez donc dans un premier temps, l'erreur qui concerne cette ligne: PyAPI_FUNC(struct symtable *) PySymtable_Build(mod_ty, const char *, PyFutureFeatures *); Et commentez la. (Pour commenter: //commentaire) module' object has no attribute 'EQUIPMENT_RING1 Erreur Sysser 'module' object has no attribute 'EQUIPMENT_RING1' Dans le fichier: Locale_inc.h. Vous supprimez tout et vous mettez: #define LOCALE_SERVICE_SINGAPORE #define ENABLE_COSTUME_SYSTEM #define ENABLE_ENERGY_SYSTEM #define ENABLE_DRAGON_SOUL_SYSTEM #define ENABLE_NEW_EQUIPMENT_SYSTEM 16>cryptlib-5.6.1MTd.lib(iterhash.obj) : error LNK2001: unresolved external symbol \"void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ) 16>cryptlib-5.6.1MTd.lib(iterhash.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ) Si vous avez des erreurs avec la lib Cryptlib-5.6.1MT, il faut recompiler cette lib. Pour se faire, avec Visual Studio, ouvrez le fichier cryptlib.2008.sln qui se trouve dans le dossier: Srcs\Extern\cryptopp Vous importez la solution, vous compilez avec CTRL + SHIFT + B et une fois terminé, la lib se trouvera dans Srcs\Extern\lib. Sous le nom de: cryptlib-5.6.1MTd.lib Attention ! Il faut compiler la lib en MT et sur le même toolset que le client ! Dans tous les cas, vous pouvez très simplement trouver cette lib avec la date du fichier. 5>mss32.lib(mss32.dll) : error LNK2026: module unsafe pour l'image SAFESEH. 5>mss32.lib(mss32.dll) : error LNK2026: module unsafe pour l'image SAFESEH. Il suffit de désactiver / SAFESEH. Pour cela, clique droit sur UserInterface, propriétés puis cliquez sur éditeur de liens, allez dans avancé puis sur la ligne Image avec gestionnaire d'exceptions sécurisés, vous mettez non. Vous régénérez la solution, et le tour est joué TraceBack - Error: Bad magic number in lib libtraceback.pyc L'erreur dans la fenêtre LOG: TraceBack - Error: Bad magic number in lib lib\traceback.pyc Le soucis vient du fait que votre lanceur est dans une certaine version de python alors que vos libs (Dans client, le dossier lib) utilisent une autre version de Python. En fait, on peut appeler le magic number, une clé pong mais avec un contexte bien différent. Vos libs, quand vous les éditez en HEXA, contiennent le nombre magique correspondant à votre python.dll python27.dll a son propre magic number tout comme python22. C'est une sorte de laison. Pour résoudre ce problème, vous avez deux choix: Passez vos libs client à la version python de votre lanceur ou alors compiler votre lanceur avec la version Python correspondant à votre client. TraceBack Hé oui, vous pouvez aussi avoir une fenêtre d'erreur mais juste avec l'erreur TraceBack. Cela signifie qu'un de votre dossier pack n'est pas apte à prendre en compte ce lanceur compilé (je simplifie, sinon j'écris un topic sur cette erreur). En gros c'est que vos fichiers n'utilisent pas les bonnes fonctions. Dans ce cas, je vous conseille de télécharger ce client: ICI Vous essayez de prendre les fichiers root et voir si votre client se lance sans cette erreur. (vous faites vos modif après) Si root ne fonctionne pas, essayé locale_* ou alors essayez uiscript. Il y en a bien un qui va résoudre votre soucis. La plus part du temps, c'est root. LoginWindow.__LoadScript.LoadObject - :Python int too large to convert to C long À l'entête du fichier: PythonUtils.cpp, ajoutez: #define PyLong_AsLong PyLong_AsLongLong #define PyLong_AsUnsignedLong PyLong_AsUnsignedLongLong Vous pouvez apprendre à passer de Python 2.2 à Python 2.7 grâce à ce tutoriel : ICI Source: Moi et en m'aidant de m2d pour la correction de certaines erreurs
- 65 réponses
-
- 129
-
-
-
-
-
C++ - Upgrade Python de 2.2 en 2.7
Calypso a posté un sujet dans Programmation & Développement / Codes
Centre de Téléchargement Télécharger ( Interne ) Introduction Dans ce tutoriel, je vais vous apprendre à changer la version de Python sur votre client Metin2, Python 2.2 à Python 2.7. Pour cela vous aurez besoin de vos sources clients et de pouvoir les compiler. Cette amélioration permet d'augmenter légèrement la vitesse du client pour peu de modifications internes. Pré-requis Savoir compiler le client binary... Eternexus pour depack le root... Vos sources client, sinon les Sources de Metin2... Téléchargement : ICI... I. Migration II. Adaptation Succès ! Votre client est maintenant prêt pour Python 2.7 ! Pour continuer Si vous avez un problème n'hésitez pas à poster votre demande d'aide dans l'AQS Source : MT2Dev / Kijaru- 14 réponses
-
- 31
-
-
-
-
Good ! Merci
-
Problème de mapping, autorisé une zone accessible sur une map existante
Calypso a répondu à un(e) question de Arioky dans Questions & Réponses
Regarde sur mon tutoriel, la partie sur l'attribute: /topic/13699-obsolète-mapping-créer-une-map/ Ou sinon tu peux utiliser WorldEditor. -
Tu converti ta map en image, tout simplement
-
Mince, excuse moi, je suis allé un peu vite Présentation acceptée Bienvenue parmi nous
-
Présentation refusé. Double compte interdit.
-
Transférer ses fichiers d'un serveur Freebsd à un autre
Calypso a répondu à un(e) sujet de Calypso dans Inclassable
Merci En effet, j'étais pas normal quand j'avais fait le tutoriel J'ajoute ta commande -
Centre de Téléchargement Télécharger ( Interne ) Bonjour tout le monde ! Aujourd'hui, j'ai voulu mettre les alchimistes de guildes comme sur le FR. Voilà ce que l'on peut pas faire avec la quête actuel: - Posséder des 60% de réussite même chez un alchimiste voisin - Pouvoir raffiner avec 30% de réussite sur un alchimiste qui n'est pas dans la bonne spécialisation - Pouvoir raffiner les items de la map 90+ Il faut savoir qu'aucun alchimiste map HL existe sur le FR. Pour raffiner, il suffit de faire glisser le minerai sur n'importe quel alchimiste afin de posséder de 30% de réussite. Voici donc une quête. Je suis parti d'une quête polonaise je l'ai traduite et corrigé. quest guild_building_melt begin state start begin function GetOreRefineCost(cost) if pc.empire != npc.empire then return 3 * cost end if pc.get_guild() == npc.get_guild() then return cost * 0.9 end return cost end function GetOreRefineGoodPct() return 60 end function GetOreRefineBadPct() return 30 end function GetMyRefineNum(race) return({ [20060] = 50601, [20061] = 50602, [20062] = 50603, [20063] = 50604, [20064] = 50605, [20065] = 50606, [20066] = 50607, [20067] = 50608, [20068] = 50609, [20069] = 50610, [20070] = 50611, [20071] = 50612, [20072] = 50613, [33009] = 50614, [33010] = 50615, [33011] = 50616, [33012] = 50617, [33013] = 50618 })[race] --return race - 20060 + 50601 or race - 33009 + 50614 end function IsRefinableRawOre(vnum) return vnum >= 50601 and vnum <= 50618 end function DoRefineDiamond(pct) local from_postfix local from_name = item_name(item.vnum) local to_vnum = item.vnum + 20 local to_name = item_name(to_vnum) local to_postfix if under_han(from_name) then from_postfix = "something" else from_postfix = "something" end if under_han(to_name) then to_postfix = "after" else to_postfix = "with" end say_title("Alchimiste:") say("") say("Il me faut 100 " .. from_name .." pour que j'essaie") say("de produire "..to_name .. ".") say("") if item.count >= 100 then say("Le taux de réussite est de "..pct.."% et vous avez besoin de "..guild_building_melt.GetOreRefineCost(10000).." Yang.") say("") say("Tu veux que j'essaie ?") say("") local s = select("Oui", "Non") if s == 1 then if pc.get_gold() < guild_building_melt.GetOreRefineCost(10000) then say_title("Alchimiste:") say("") say("Vous n'avez pas assez de yang. Ce n'est pas gratuit.") say("") return end if pc.diamond_refine(10000, pct) then say_title("Alchimiste:") say("") say("Félicitations ! Ca a fonctionné !") say("") say("Vous avez reçu:") say("") say_item(to_name, to_vnum, "") say("") else say_title("Alchimiste:") say("") say("Ca n'a pas fontionné, désolé ...") say("") end end else say("Il me faut 100 minérais") end end function DoRefine(pct) local from_postfix local from_name = item_name(item.vnum) local to_vnum = item.vnum + 20 local to_name = item_name(to_vnum) local to_postfix if under_han(from_name) then from_postfix = "Object" else from_postfix = "Object" end if under_han(to_name) then to_postfix = "After" else to_postfix = "With" end say_title("Alchimiste:") say("") say("Il me faut " .. from_name .." ainsi qu'une") say("pierre d'esprit +0, +1 ou +2 pour produire "..to_name..".") say("") if item.count >= 100 then say("Le taux de réussite est de "..pct.."% et vous avez") say("besoin de "..guild_building_melt.GetOreRefineCost(3000).." Yang.") say("") say("Tu veux que j'essaie ?") say("") local s = select("Oui", "Non") if s == 1 then if pc.get_gold() < guild_building_melt.GetOreRefineCost(3000) then say_title("Alchimiste:") say("") say("Désolé, tu n'a pas assez de yang.") say("") return end local selected_item_cell = select_item() if selected_item_cell == 0 then say_title("Alchimiste:") say("") say("Reviens me voir quand tu auras les matériaux !") say("") return end local old_item = item.get_id() if not item.select_cell(selected_item_cell) then say_title("Alchimiste:") say("") say("C'est un item inutile pour moi") say("") return end -- check whether the material is if item.vnum < 28000 or item.vnum >= 28300 then say_title("Alchimiste:") say("") say("C'est le mauvais item.") say("") return end item.select(old_item) if pc.ore_refine(3000, pct, selected_item_cell) then ----"123456789012345678901234567890123456789012345678901234567890"| say_title("Alchimiste:") say("") say("Félicitation ! Ca a fonctionne !") say("") say("Vous avez reçu:") say("") say_item(to_name, to_vnum, "") say("") return else say_title("Alchimiste:") say("") say("Ca n'a pas fonctionné, désolé.!") say("") return end end else wait() say_title("Alchimiste:") say("") say_reward("Il me faut le matériel nécessaire.") say("") return end end when 20060.take or 20061.take or 20062.take or 20063.take or 20064.take or 20065.take or 20066.take or 20067.take or 20068.take or 20069.take or 20070.take or 20071.take or 20072.take or 33009.take or 33010.take or 33011.take or 33012.take or 33013.take with guild_building_melt.IsRefinableRawOre(item.vnum) begin --Good if guild_building_melt.GetMyRefineNum(npc.race) == item.vnum then if item.vnum == 50601 then guild_building_melt.DoRefineDiamond(guild_building_melt.GetOreRefineGoodPct()) else guild_building_melt.DoRefine(guild_building_melt.GetOreRefineGoodPct()) end else--Bad if item.vnum == 50601 then guild_building_melt.DoRefineDiamond(guild_building_melt.GetOreRefineBadPct()) else guild_building_melt.DoRefine(guild_building_melt.GetOreRefineBadPct()) end end end when 20060.click or 20061.click or 20062.click or 20063.click or 20064.click or 20065.click or 20066.click or 20067.click or 20068.click or 20069.click or 20070.click or 20071.click or 20072.click or 33009.click or 33010.click or 33011.click or 33012.click or 33013.click begin if npc.get_guild() == pc.get_guild() and pc.isguildmaster() then say_title("Alchimiste:") say("") say("Pour 3.000.000 Yang, je peux remplacer votre ") say("alchimiste acutel par un autre.") say("") wait() if pc.get_gold() < 3000000 then say_title("Alchimiste:") say("") say_reward("Il me faut 3.000.000 Yang.") say("") return end local sel = 0 local timetable1 = {"Diamands", "Bois fossiles", "Cuivres", "Argents", "Ors", "Jades", "Suivant", "Fermer"} local valuetable1 = {14043, 14045, 14046, 14047, 14048, 14049, 1, 3} local timetable2 = {"Ebènes", "Perles", "Ors blancs", "Cristal", "Améthyste", "Suivant", "Précédent", "Fermer"} local valuetable2 = {14050, 10451, 14052, 14053, 14054, 2, 0, 3} local timetable3 = {"Larmes célestes", "Cristal d'âme", "Rubis", "Grenats", "Emeraudes", "Saphirs", "Précédent", "Fermer"} local valuetable3 = {14055, 26992, 26993, 26994, 26995, 26996, 1, 3} repeat say_size(300, 350) say_title("Système:") say("Quel alchimiste voulez vous mettre ?") if sel == 0 then local s = select_table(timetable1) sel = valuetable1[s] elseif sel == 1 then local s = select_table(timetable2) sel = valuetable2[s] elseif sel == 2 then local s = select_table(timetable3) sel = valuetable3[s] end until sel > 2 if sel != 3 then npc_num = sel + 20060 - 14043 --chat("#debug#sel:"..sel.."#npc_num:"..npc_num) if npc_num == npc.get_race() then say("Vous avez déjà cet alchimiste") else pc.changegold(-3000000) building.reconstruct(sel) end end else say_title("Alchimiste:") say("") ----"12345678901234567890123456789012345678901234567890"| say("Bonjour, je suis alchimiste de guilde. Pour 100") say("minérais et une pierre d'esprit +0, +1 ou +2") say("Je peux essayer des les raffiner..") say("") say("Les minérais rafinés peuvent vous permettre") say("d'améliorer certains de vos items.") say("") say("Pour améliorer votre item, j'ai besoin") say("d'un diamand raffiné") say("") say("A bientôt !") say("") end end end end Si vous ne savez pas implanter une quête, suivez ce tutoriel : ici
-
Non, je veux supprimés les effets des gens qui ont déjà fait cette quête ...
-
Bonsoir Version des files : 2014 Domaine (Base de données, Core, etc.) : BDD Description du problème : J'aimerais tout simplement supprimé la récompenses des quêtes biolos 90. Je sais pas du tout comment supprimer un effet mais si je pense que ça se passe dans la table affect ... Comment savoir si c'est les récompenses du 90 ? J'avoue que là je sèche En postant ma demande d'aide, j'affirme avoir lu et accepté le règlement des demandes d'aides.
-
Une solution peut être, lors de la réouverture de metin2dev.
-
Dis bien que toi tu peux te co mais pas les autres.. Après ça vient du launcher sûr. Yavait un poste sur metin2dev mais c'est down pour le moment
-
Oui enfin bon. Pour utiliser les files de Metin2, on a demandé la permission à personne.
-
Mon ancienne erreur a été résolu, juste un problème de fonction pas compatible avec python27 ... Ça ne marche toujours pas Ant0k x) Il n'y a aucune différence
-
Transférer ses fichiers d'un serveur Freebsd à un autre
Calypso a répondu à un(e) sujet de Calypso dans Inclassable
Dans ce cas, j'accepte. Je déplace -
Tu mets tout ça dans lib32
-
Bah il faut que tu créé une ligne dans le refine proto ou tu ajoutes le up de l'amure (de +0 a +1) Tu peux facilement t'aider des autres items
-
Recherche d'une liste des applytypes (Bonus de base)
Calypso a répondu à un(e) question de Arioky dans Questions & Réponses
Non ça existe pas. Après faut voir dans le game si tu es en 2014 -
[UP] Virtualbox/ Navicat erreur 1045
Calypso a répondu à un(e) question de Jonidas dans Questions & Réponses
Tu rentre de mauvais information. La connexion échoue car l'user mysql ne correspond pas
