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

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 04/07/21 dans toutes les zones

  1. F Download Center Télécharger ( All ine One ) ( Lien Externe ) Télécharger Présentation PSD Collection d'images GCC42 Pas de warning server/client Peu de syserr Pas de .core à ma connaissance Auto restart des core Les files sont fonctionnel, mais y'a beaucoup de travail à faire sur le gameplay/drop/quête. M'envoyez pas de message, j'offre pas de support gratuitement, je ne peux pas répondre aux demande de tout le monde..
    3 points
  2. Centre de Téléchargement Télécharger ( Interne ) Sup bois and grils I'm sharing my metin2 patcher made with Electron. You can find a tutorial in English on my GitHub: [Hidden Content] Hope anyone finds it useful.
    3 points
  3. Centre de Téléchargement Télécharger ( VDI Serveur 2014 ) Télécharger ( Client 2014 ) HelloW, Metin2 - Server Files 2014 Cordialement, ASIKOO
    1 point
  4. Required Level : Beginner Estimated Time : Between 15 & 30 minutes Disclaimer : This guide is only a translation of the following tutorial made by Emulateur and then renewed by Calypso. The screenshots are still in French as for now and the tutorial may be aged but still works like charm. [.To be continued.] Hey there! You want to create a metin2 private server? You want to play with your friends? Create a community or create one just as a hobby? Then follow this guide! I will explain you how to create a private server! You will then be able to do whatever you want on it? Ain't it cool? /emoticons/cool.png Buuut... This tutorial will work only in localhost, implying that you will be the only one able to connect and play on it. It's some kind of a test server. Ready? Go! I. Downloads VirtualBox - HERE Navicat - HERE WinSCP - HERE The server (VDI file) - HERE The client- HERE II. Virtual Machine III. Start your server IV. Connection to the client ! V. Gain access to the files VI. Gain access to the database Success! You just created a local private server! VII. End of the Tutorial Now, everything is alright, you can connect to the database, browse your files and edit your client ! You can now modifiy everything as you want /emoticons/smile.png FAQ - Must Read for beginners - (Still in French ATM) : HERE If you need some help, don't hesitate and lead to Questions & Answer. The community will be there to help you. Good luck!
    1 point
  5. F Download Center Télécharger ( Interne ) Bonjour, Je viens vous partager le nouveau set d'armes de Metin2 (dragon obscur) mais avec une modification de la brillance, en effet, sur les originales le specular n'est pas très fort et toute l'arme brille (y compris les zones très sombres) Désolée de l'aperçu des griffes, je n'avais pas le lycan donc j'ai mis les griffes sur un Ninja L'archive contient : Les icons La textures Les modèles Avant : Après :
    1 point
  6. Niveau requis : Débutant Temps estimé : 30 minutes Salut à toi ! Tu n'as jamais fait de serveur Metin2 ? Ce tutoriel est fait pour toi ! Je vais t'expliquer comment créer un serveur de A à Z ! Tu pourras ensuite le modifier à ta guise et le mettre à ton image. Ce tutoriel utilisera Hamachi. N'étant plus trop utiliser, je vous conseille de l'utiliser qu'en dernier recours (voir encadré bleu ci dessous). Information. Lors de ce tutoriel, vous allez apprendre à créer un serveur avec Hamachi. Vos amis pourront donc rejoindre le serveur pour jouer avec vous ! Cependant, ils devront tous télécharger Hamachi pour pouvoir rejoindre le réseau ainsi que votre serveur. Si vous souhaitez un serveur juste en local, utilisez ce tutoriel. Si vous souhaitez que vos amis puissent vous rejoindre mais ne pas utiliser Hamachi, dirigez vous vers ce tutoriel. Attention ! Les files utilisés pendant ce tutoriel sont les 2014. Cependant, sur les 2014+, un bug survient à la sélection du personnage quand un ami souhaite se connecter quand le serveur est sur une machine virtuelle. Il faudra appliquer ce patch pour corriger ce problème. Pré-requis : Virtual Box, qui nous permettra de virtualiser un système d'exploitation. En effet, un serveur Metin2 fonctionne sous FreeBSD, il sera plus simple pour vous de virtualiser ce système sur votre Windows que de faire une deuxième installation sur votre ordinateur. Navicat, un client Mysql. Il vous permettra de vous connecter à la base de données de votre serveur Metin2. On y retrouveras toutes les informations liées aux joueurs, aux items, aux comptes des utilisateurs, etc ... WinSCP, un client SFTP. Similaire au FTP, il vous permettra de naviguer sur les différents fichiers de votre serveur (maps, configurations, etc ..) Le serveur VDI tout prêt pour vous qui possède déjà tous les fichiers du serveur avec FreeBSD d'installé. Il ne nous manquera plus qu'à le lancer avec Virtual Box. Le client metin2 qui vous permettra de vous connecter en jeu à votre serveur. Hamachi qui permet de créer un réseau virtuel privé. C'est sur ce réseau et non le votre que l'on mettra votre serveur Metin2. Portmap (Fichier #138), qui va vous permettre d'ouvrir les ports pour que vos joueurs puissent se connecter au réseau. I. La machine virtuelle II. Configuration de la machine virtuelle III. Configuration de Portmap IV. Lancement du serveur Metin2 V. Créer le réseau Hamachi VI. Se connecter In Game VII. Accéder aux fichiers du serveur VIII. Accéder à la base de données Pour continuer : Vous trouverez de nombreux partages et de tutoriels sur Funky-Emu dans la section Metin2. Cette FAQ pourra répondre à la plupart de vos questions. Vous pouvez créer un compte GM en suivant ce tutoriel Une catégorie support est disponible. Si vous avez un problème ou une question, n'hésitez pas à poster une demande !
    1 point
  7. F Download Center Télécharger ( Interne ) Bonjour, J'ai décidé de refaire ce tutoriel Aujourd'hui je vais vous expliquer comment ajouté l'option "détruire" lorsque vous voulez jeter un item. Ca va être assez long, mais facile si vous suivez bien le tutoriel. Commençons ______________________________________________________________________ PRÉREQUIS ______________________________________________________________________ 1.Des source Serveur 2.Des sources Client 3.Un client ______________________________________________________________________ 1.SOURCE SERVEUR ______________________________________________________________________ Ouvrez votre "packet.h" et recherchez: HEADER_CG_ITEM_DROP2 = 20, Ajoutez ceci juste en dessous: HEADER_CG_ITEM_DESTROY = 21, Recherchez maintenant: typedef struct command_item_drop2 { BYTE header; TItemPos Cell; DWORD gold; BYTE count; } TPacketCGItemDrop2; Ajoutez ceci juste en dessous: typedef struct command_item_destroy { BYTE header; TItemPos Cell; } TPacketCGItemDestroy; Ouvrez maintenant le fichier packet_info.cpp et recherchez: Set(HEADER_CG_ITEM_DROP2, sizeof(TPacketCGItemDrop2), "ItemDrop2", true); Ajoutez ceci juste en dessous: Set(HEADER_CG_ITEM_DESTROY, sizeof(TPacketCGItemDestroy), "ItemDestroy", true); Ouvrez maintenant le fichier input_main.cpp et recherchez la fonction: void CInputMain::ItemDrop2(LPCHARACTER ch, const char * data) Ajoutez cette fonction juste après: void CInputMain::ItemDestroy(LPCHARACTER ch, const char * data) { struct command_item_destroy * pinfo = (struct command_item_destroy *) data; if (ch) ch->DestroyItem(pinfo->Cell); } Cherchez maintenant ceci: case HEADER_CG_ITEM_DROP2: if (!ch->IsObserverMode()) ItemDrop2(ch, c_pData); break; Et ajoutez: case HEADER_CG_ITEM_DESTROY: if (!ch->IsObserverMode()) ItemDestroy(ch, c_pData); break; Ouvrez maintenant le fichier char_item.cpp et recherchez la fonction: bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount) Ajoutez cette fonction juste au-dessus: bool CHARACTER::DestroyItem(TItemPos Cell) { LPITEM item = NULL; if (!CanHandleItem()) { if (NULL != DragonSoul_RefineWindow_GetOpener()) ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°*È*âÀ» ¿¬ »óÅ¿¡¼*´Â ¾ÆÀÌÅÛÀ» ¿Å±æ ¼ö ¾ø½À´Ï´Ù.")); return false; } if (IsDead()) return false; if (!IsValidItemPosition(Cell) || !(item = GetItem(Cell))) return false; if (item->IsExchanging()) return false; if (true == item->isLocked()) return false; if (quest::CQuestManager::instance().GetPCForce(GetPlayerID())->IsRunning() == true) return false; if (item->GetCount() <= 0) return false; SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255); ITEM_MANAGER::instance().RemoveItem(item); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("L'item %s est desormais detruit."), item->GetName()); return true; } Ouvrez maintenant le fichier char.h et recherchez: bool DropItem(TItemPos Cell, BYTE bCount=0); Ajoutez ceci juste au-dessus: bool DestroyItem(TItemPos Cell); Ouvrez maintenant le fichier input.h et recherchez: void ItemDrop2(LPCHARACTER ch, const char * data); Ajoutez ceci juste en dessous: void ItemDestroy(LPCHARACTER ch, const char * data); ______________________________________________________________________ 2. SOURCE CLIENT ______________________________________________________________________ Ouvrez le fichier packet.h et recherchez: HEADER_CG_ITEM_DROP2 = 20, Ajoutez ceci juste en dessous: HEADER_CG_ITEM_DESTROY = 21, Recherchez maintenant: typedef struct command_item_drop2 { BYTE header; TItemPos pos; DWORD gold; BYTE count; } TPacketCGItemDrop2; Ajoutez ceci juste en dessous: typedef struct command_item_destroy { BYTE header; TItemPos pos; }TPacketCGItemDestroy; Ouvrez maintenant le fichier PythonNetworkStreamPhaseGameItem.cpp et recherchez la fonction: bool CPythonNetworkStream::SendItemDropPacketNew(TItemPos pos, DWORD elk, DWORD count) Ajoutez cette fonction juste en dessous: bool CPythonNetworkStream::SendItemDestroyPacket(TItemPos pos) { if (!__CanActMainInstance()) return true; TPacketCGItemDestroy itemDestroyPacket; itemDestroyPacket.header = HEADER_CG_ITEM_DESTROY; itemDestroyPacket.pos = pos; if (!Send(sizeof(itemDestroyPacket), &itemDestroyPacket)) { Tracen("SendItemDestroyPacket Error"); return false; } return SendSequence(); } Ouvrez maintenant le fichier PythonNetworkStreamModule.cpp et recherchez la fonction: PyObject* netSendItemDropPacket(PyObject* poSelf, PyObject* poArgs) Ajoutez cette fonction juste en dessous: PyObject* netSendItemDestroyPacket(PyObject* poSelf, PyObject* poArgs) { TItemPos Cell; if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell)) return Py_BuildException(); CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance(); rkNetStream.SendItemDestroyPacket(Cell); return Py_BuildNone(); } Recherchez maintenant: { "SendItemDropPacketNew", netSendItemDropPacketNew, METH_VARARGS }, Ajoutez ceci juste après: { "SendItemDestroyPacket", netSendItemDestroyPacket, METH_VARARGS }, Ouvrez maintenant le fichier PythonNetworkStream.h et recherchez la fonction: bool SendItemDropPacketNew(TItemPos pos, DWORD elk, DWORD count); Ajoutez ceci juste après: bool SendItemDestroyPacket(TItemPos pos); ______________________________________________________________________ 3. PYTHON CLIENT ______________________________________________________________________ Ouvrez le fichier uicommon.py du pack root et recherchez la class: class QuestionDialog(ui.ScriptWindow): Juste après celle class, ajoutez la class suivante: class QuestionDialogItem(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.__CreateDialog() def __del__(self): ui.ScriptWindow.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialogitem.py") self.board = self.GetChild("board") self.textLine = self.GetChild("message") self.acceptButton = self.GetChild("accept") self.destroyButton = self.GetChild("destroy") self.cancelButton = self.GetChild("cancel") def Open(self): self.SetCenterPosition() self.SetTop() self.Show() def Close(self): self.Hide() def SetWidth(self, width): height = self.GetHeight() self.SetSize(width, height) self.board.SetSize(width, height) self.SetCenterPosition() self.UpdateRect() def SAFE_SetAcceptEvent(self, event): self.acceptButton.SAFE_SetEvent(event) def SAFE_SetCancelEvent(self, event): self.cancelButton.SAFE_SetEvent(event) def SetAcceptEvent(self, event): self.acceptButton.SetEvent(event) def SetDestroyEvent(self, event): self.destroyButton.SetEvent(event) def SetCancelEvent(self, event): self.cancelButton.SetEvent(event) def SetText(self, text): self.textLine.SetText(text) def SetAcceptText(self, text): self.acceptButton.SetText(text) def SetCancelText(self, text): self.cancelButton.SetText(text) def OnPressEscapeKey(self): self.Close() return True Ouvrez maintenant le fichier game.py et cherchez la def suivante: def __DropItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount): Recherchez ce bout de code dans la fonction (2x): itemDropQuestionDialog = uiCommon.QuestionDialog() Remplacez par: itemDropQuestionDialog = uiCommon.QuestionDialogItem() Toujours dans la même fonction, recherchez: itemDropQuestionDialog.SetAcceptEvent(lambda arg=True: self.RequestDropItem(arg)) Ajoutez ceci juste après: itemDropQuestionDialog.SetDestroyEvent(lambda arg=True: self.RequestDestroyItem(arg)) Recherchez maintenant la fonction: def RequestDropItem(self, answer): Ajoutez cette fonction juste après: def RequestDestroyItem(self, answer): if not self.itemDropQuestionDialog: return if answer: dropType = self.itemDropQuestionDialog.dropType dropNumber = self.itemDropQuestionDialog.dropNumber if player.SLOT_TYPE_INVENTORY == dropType: if dropNumber == player.ITEM_MONEY: return else: self.__SendDestroyItemPacket(dropNumber) self.itemDropQuestionDialog.Close() self.itemDropQuestionDialog = None constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0) Recherchez ensuite la fonction: def __SendDropItemPacket(self, itemVNum, itemCount, itemInvenType = player.INVENTORY): Et ajoutez celle-ci juste après: def __SendDestroyItemPacket(self, itemVNum, itemInvenType = player.INVENTORY): if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemDestroyPacket(itemVNum) Ouvrez maintenant le fichier locale_interface.txt et ajoutez ceci: DESTROY Destroy Placez le fichier questiondialogitem.py dans votre pack uiscript ! Screen du système: [Hidden Content] Voilà c'est fini ! Source du totoriel : .Avenue™ de Metin2Dev Traduction: moi Cordialement, #Saw.
    1 point
  8. F Download Center Télécharger ( Interne ) Bonjour, Je viens vous partager la correction des brillances des armes Kyanites & Zodiaques. L'archive contient : Item list Icon Modèles Textures Avant : Après :
    1 point
  9. Centre de Téléchargement Télécharger ( Interne ) Bonjour, Je partage vite fait cette guiEditor car je croyais que tout le monde l'avait mais en fait personne l'a... : [Hidden Content] Voici les sources du code : [Hidden Content] Court, mais bon y'a l'essentiel.
    1 point
  10. Centre de Téléchargement Télécharger ( Interne ) Bonjour, Je viens vous présentez ma première quête, c'est un regroupement de quête déjà existante que j'ai légèrement modifier... Elle se nomme Anneau Magique et regroupe les fonctions suivantes : - Gestion Expérience - Gestion des Skills - Gestion des Skills secondaires - Gestion du Grade - Gestion des Téléportation - Gestion de la Banque - Gestion Entrepôt - Gestion Annonce - Gestion Trailer - Gestion Règlement Cette Anneau est destiné au joueurs et convient plutôt au serveur Fun et plus... Détails sur l'installation : - Tout d’abord depacker icon.eix/epk, locale.eix/epk. - Mettez l'icon nommer 2202.tga dans votre dossier icon: [Hidden Content];-- Ne prenez pas cette image, c'est juste pour vous montrez, la bonne icon se trouve dans l'archive suivante: cliquez ici! - Ouvrer votre item_list et coller cette ligne a la fin, en pensant a laisser une ligne vide a la fin du fichier : 2202 ETC icon/item/2202.tga - Ouvrer votre item_proto client et coller cette ligne - Vous pouvez repacker icon et locale en pensant a bien actualiser et enregistrer les nouvelles données. - Dans navicat, allez sur player ensuite Query puis New Query et copier ceci: INSERT INTO `item_proto` VALUES ('2202', 'Anneau Magique', 'Anneau Magique', '18', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '-1', '-1', '-1', '0', '0', '0'); Et enfin faite " Run " et ensuite " save " - Dans WinSCP allez dans le répertoire de vos quête c'est a dire : /usr/metin2/share/locale/france/quest - Crée un nouveau fichier que vous nommer: anneau_magique.quest - Ensuite copier cette quête dedans : ------------------------------------- -- Quete cree par Wiizko -- -- Information Pour Source-Online -- ------------------------------------- quest anneau_magique begin state start begin when 2202.use begin say_title("Anneau Magique") say("Veuillez choisir une fonction :") local a=select("Gestion dexp", "Skill", "Skill divers", "Grade", "Téléporteur", "Banque", "Continuer") if a== 7 then say_title("Anneau Magique") say("Veuillez choisir une fonction :") a=select ( "Entrepôt", "Annonce" , "Trailer", "Règlement", "Fermer" ) + 6 if 12==a then return end end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion de lexperience -- ---------------------------------------------------------------------------------------------------------------------------------------- if a == 1 then say_title("Gestion Exp") say("Veuillez choisir une fonction :") local e=select("Bloquer Exp", "Débloquer Exp", "Vider Exp", "Quitter") if e == 1 then say_title("Gestion Exp") say("Voulez-vous bloquer votre expérience,") say("pour pouvoir dropper tranquillement ?") say("") local q=select("Bloquer", "Ne pas bloquer") if q == 1 then say_title("Gestion Exp") say("Votre expérience est désormais bloquée !") wait() pc.setqf("lock_exp", 1) pc.setqf("exp_lock", pc.get_exp()) else say_title("Gestion Exp") say("Votre expérience n'a pas été bloquée.") end elseif e==2 then say_title("Gestion Exp") say("Voulez-vous débloquer votre expérience?") say("") local w=select("Débloquer","Ne rien changer") if w==1 then say_title("Gestion Exp") say("Votre expérience est désormais débloquée.") wait() pc.setqf("lock_exp", 0) pc.setqf("exp_lock", 0) else return end elseif e == 3 then say_title("Gestion Exp") say("Voulez-vous vider votre expérience?") say_reward("Attention, Il ny aura aucun retour possible !") local qs=select("Vider","Ne rien faire") if qs==2 then return else pc.give_exp2(-pc.get_exp()) end 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 else return end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion des skills -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a == 2 then say_title("Skills") say("Veuillez choisir une fonction :") local s=select("Skills pour Guerrier", "Skills pour Sura", "Skills pour Ninja", "Skills pour Shaman", "Fermer" ) if 5==s then return -------------------------------------------------- -- Skills Guerrier -- -------------------------------------------------- elseif 1==s then say_title("Skills pour Guerrier") say("Veuillez choisir votre classe : ") local m=select("Guerrier CaC","Guerrier Mental","Fermer") if 3==m then return -- Skills Guerrier CaC -- elseif 1==m then pc.set_skill_level() pc.set_skill_level(1, 59) pc.set_skill_level(2, 59) pc.set_skill_level(3, 59) pc.set_skill_level(4, 59) pc.set_skill_level(5, 59) pc.set_skill_level(6, 59) say("Voila vos skills sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") -- Skills Guerrier Mental -- else pc.set_skill_level(16, 59) pc.set_skill_level(17, 59) pc.set_skill_level(18, 59) pc.set_skill_level(19, 59) pc.set_skill_level(20, 59) pc.set_skill_level(21, 59) say("Voila vos skills sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") end -------------------------------------------------- -- Skills Sura -- -------------------------------------------------- elseif 2==s then say_title("Skills pour Sura") say("Veuillez choisir votre classe : ") local n=select("Sura AM","Sura MN","Fermer") if 3==n then return -- Skills Sura AM -- elseif 1==n then pc.set_skill_level(61, 59) pc.set_skill_level(62, 59) pc.set_skill_level(63, 59) pc.set_skill_level(64, 59) pc.set_skill_level(65, 59) pc.set_skill_level(66, 59) say("Voila vos skills sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") -- Skills Sura MN -- else pc.set_skill_level(76, 59) pc.set_skill_level(77, 59) pc.set_skill_level(78, 59) pc.set_skill_level(79, 59) pc.set_skill_level(80, 59) pc.set_skill_level(81, 59) say("Voila vos skills sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") end -------------------------------------------------- -- Skills Ninja -- -------------------------------------------------- elseif 3==s then say_title("Skills pour Ninja") say("Veuillez choisir votre classe :") local r=select("Ninja Archer","Ninja Assassin","Fermer") if 3==r then return -- Skills Ninja Archer -- elseif 1==r then pc.set_skill_level(46, 59) pc.set_skill_level(47, 59) pc.set_skill_level(48, 59) pc.set_skill_level(49, 59) pc.set_skill_level(50, 59) pc.set_skill_level(51, 59) say("Voila vos skills sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") -- Skills Ninja Assassin -- else pc.set_skill_level(31, 59) pc.set_skill_level(32, 59) pc.set_skill_level(33, 59) pc.set_skill_level(34, 59) pc.set_skill_level(35, 59) pc.set_skill_level(36, 59) say("Voila vos skills sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") end -------------------------------------------------- -- Skills Shaman -- -------------------------------------------------- else say_title("Skills pour Shaman") say("Veuillez choisir votre classe :") local p=select("Shaman Dragon","Shaman Soin","Fermer") if 3==p then return -- Skills Shaman Dragon -- elseif 1==p then pc.set_skill_level(91, 59) pc.set_skill_level(92, 59) pc.set_skill_level(93, 59) pc.set_skill_level(94, 59) pc.set_skill_level(95, 59) pc.set_skill_level(96, 59) say("Voila vos skills sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") -- Skills Shaman Soin -- else pc.set_skill_level(106, 59) pc.set_skill_level(107, 59) pc.set_skill_level(108, 59) pc.set_skill_level(109, 59) pc.set_skill_level(110, 59) pc.set_skill_level(111, 59) say("Voila vos skills sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") end end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion des skills secondaires -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a == 3 then say_title("Skills Secondaires") say("Veuillez choisir une fonction :") local az=select("Raffineur", "Montures", "Commandement", "Polymorphie", "Languages", "Fermer" ) -- Raffineur -- if 1==az then say_title("Raffineur") say("Voulez-vous améliorer vos compétences de pioche ?") local aze=select("Oui", "Non") if 1==aze then pc.set_skill_level() pc.set_skill_level(124, 50) say("Vos skills secondaire sont désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") else return end -- Montures -- elseif 2==az then say_title("Montures") say("Voulez-vous améliorer vos compétences de cheval ?") local azer=select("Oui", "Non") if 1==azer then pc.set_skill_level(131, 50) say("Votre skill secondaire est désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") else return end -- Commandements -- elseif 3==az then say_title("Commandements") say("Voulez-vous améliorer vos compétences de commandement") say("") local azert=select("Oui", "Non") if 1==azert then pc.set_skill_level(121, 50) say("Votre skill secondaire est désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") else return end -- Polymorphie -- elseif 4==az then say_title("Polymorphie") say("Voulez-vous améliorer vos compétences en polymorphie ?") say("") local azerty=select("Oui", "Non") if 1==azerty then pc.set_skill_level(129, 50) say("Votre skill secondaire est désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") else return end -- Language -- elseif 5==az then say_title("Language") say("Veuillez choisir le language que vous voulez apprendre:") say("") local lang=select("Parler Jaune","Parler Rouge","Parler Bleu") -- Parler Jaune -- if 1==lang then say_title("Parler le Jaune") say("Voulez-vous améliorer votre language jaune ?") local d=select("Oui", "Non") if 1==d then pc.set_skill_level(127, 50) say("Votre skill secondaire est désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") else return end -- Parler Rouge -- elseif 2==lang then say_title("Parler le Rouge") say("Voulez-vous améliorer votre language rouge ?") local h=select("Oui", "Non") if 1==h then pc.set_skill_level(126, 50) say("Votre skill secondaire est désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") else return end else say_title("Parler le Bleu") say("Voulez-vous améliorer votre language bleu ?") local g=select("Oui", "Non") if 1==g then pc.set_skill_level(128, 50) say("Votre skill secondaire est désormais en P !") say_reward("Veuillez deco reco pour valider les changements.") else return end end else return end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion du Grade -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==4 then say_title("Grade") say("Voulez-vous avoir votre grade au maximum ?") local b=select ( "Oui" , "Non" ) if 1==b then pc.change_alignment(200000) say("Votre grade est désormais au maximum. ") else return end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Teleporteur -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==5 then say_title("Téléporteur") say("Voulez-vous être téléporter ?") local main_set = select("Oui","Non") if main_set == 2 then return else say_title("Téléporteur :") say("Veuillez choisir une map :") sub_set = select ( "Map 1 Rouge" , "Map 2 Rouge" , "Map 1 Jaune" , "Map 2 Jaune" , "Map 1 Bleu" , "Map 2 Bleu" ,"Continuer") if sub_set == 7 then say_title("Téléporteur :") say("Veuillez choisir une map :") sub_set = select ( "Vallée de Seungryoung", "Désert de Yongbi" , "Mont Sohan", "Terre de feu" , "Tour du demon" , "Forêt" , "Bois Rouge" ,"Continuer" ) + 6 if sub_set == 14 then say_title("Téléporteur :") say("Veuillez choisir une map :") sub_set = select ( "Temple", "Cave 1", "Cave 2", "Geant", "Grotte de lExil" , "Fermer" ) + 13 if sub_set == 19 then return end end end local warp = { -- Map 1 Rouge -- { { 474300 , 954800 }, { 474300 , 954800 }, { 474300 , 954800 }, }, -- Map 2 Rouge -- { { 353100 , 882900 }, { 353100 , 882900 }, { 353100 , 882900 }, }, -- Map 1 Jaune -- { { 63800 , 166400 }, { 63800 , 166400 }, { 63800 , 166400 }, }, -- Map 2 Jaune -- { { 145500 , 240000 }, { 145500 , 240000 }, { 145500 , 240000 }, }, -- Map 1 Bleu -- { { 959900 , 269200 }, { 959900 , 269200 }, { 959900 , 269200 }, }, -- Map 2 Bleu -- { { 863900 , 246000 }, { 863900 , 246000 }, { 863900 , 246000 }, }, -- Map Orc -- { { 402100, 673900 }, { 270400, 739900 }, { 321300, 808000 }, }, -- Map Désert -- { { 217800, 627200 }, { 221900, 502700 }, { 344000, 502500 }, }, -- Mont Sohan -- { { 434200, 290600 }, { 375200, 174900 }, { 491800, 173600 }, }, -- Map Volcan -- { { 599400, 756300 }, { 597800, 622200 }, { 730700, 689800 }, }, -- Tour du demon -- { { 590500, 110500 }, { 590500, 110500 }, { 590500, 110500 }, }, -- Map Foret -- { { 288700 , 5700 }, { 288700 , 5700 }, { 288700 , 5700 }, }, -- Map Bois rouge -- { { 1119500 , 701 }, { 1119500 , 701 }, { 1119500 , 701 }, }, -- Map Temple -- { { 553600 , 144100 }, { 553600 , 144100 }, { 553600 , 144100 }, }, -- Cave 1 -- { { 60000 , 496000 }, { 60000 , 496000 }, { 60000 , 496000 }, }, -- Cave 2 -- { { 704100 , 464200 }, { 704100 , 464200 }, { 704100 , 464200 }, }, -- Geant -- { { 828300 , 763500 }, { 828300 , 763500 }, { 828300 , 763500 }, }, -- Grotte de lExil -- { { 10000 , 1207800 }, { 10000 , 1207800 }, { 10000 , 1207800 }, }, } local old_vid = pc.select(u_vid) local empire = pc . get_empire ( ) test_chat ( warp [ sub_set ] [ empire ] [ 1 ] .. warp [ sub_set ] [ empire ] [ 2 ] ) pc . warp ( warp [ sub_set ] [ empire ] [ 1 ] , warp [ sub_set ] [ empire ] [ 2 ] ) pc.select(old_vid) say("Téléportation éffectuée avec succès ! ") end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Banque -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==6 then say_title("Banque") say("Veuillez choisir une fonction :") local s = select("Stocker des yangs", "Retirer des yangs", "Voir létat de mon compte", "Fermer") -- Stock yangs -- if s == 1 then say_title("Banque") say("Combien de yangs voulez-vous stocker ?") say_reward("Vous avez : "..pc.gold.." yangs.") say("") i = tonumber(input()) if i <= 0 or i == "" then return end if i > pc.gold then i = pc.gold end j = i + pc.getqf("nb_yang") while j >= 1000000000 do pc.setqf("nb_milliard", pc.getqf("nb_milliard")+1) j = j - 1000000000 end pc.setqf("nb_yang", j) pc.change_gold(-i) syschat(i.." yangs stockés.") -- Retire et voir le compte -- elseif s == 2 or s == 3 then say_title("Banque") say("") say("Yangs sur votre compte :") a = "" c = "" if pc.getqf("nb_milliard") > 0 then a = pc.getqf("nb_milliard") b = 100000000 while b > pc.getqf("nb_yang") and b != 1 do c = c.."0" b = b/10 end end say_reward(a..""..c..""..pc.getqf("nb_yang")) say("") if s == 3 then return end say("Combien de yangs voulez-vous retirer ?") say("") i = tonumber(input()) if i <= 0 or i == "" then return end if i > pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang") then i = pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang") end if pc.gold + i > 1999999999 then syschat("Action impossible vous allez dépasser les 2 milliards.") return end pc.change_gold(i) if i >= 1000000000 then pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1) i = i - 1000000000 end pc.setqf("nb_yang", pc.getqf("nb_yang")-i) if pc.getqf("nb_yang") < 0 then pc.setqf("nb_yang", pc.getqf("nb_yang")+1000000000) pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1) end end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Entrepot -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==7 then say_title("Entrepôt") say("") say("Si cest la première fois que vous ouvrez") say("votre entrepot, rappeler vous que votre") say("code par default est 000000.") say("Voulez-vous ouvrir votre entrepôt ?") local v = select ( "Oui" , "Non", "Activer lentrepôt" ) -- Ouvrir Entrepot -- if 1 == v then game.open_safebox() return -- Quitter -- elseif 2 == v then return -- Activer Entrepot -- else say_title("Entrepôt") say("Voulez-vous activer votre entrepôt ?") local t = select ("Oui", "Non") if 1 == t then say_title("Entrepôt") say("Votre entrepôt à été activer avec succès !") --stash.setlevel(1) game.set_safebox_level(1) say(locale.stash.first_open) else return end end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Annonce -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==8 then if get_time() > pc.getqf("duration") then --- l say_title("Annonce") say("Voulez-vous passer une annonce a travers tout") say("les royaumes, et ainsi pouvoir vendre ou acheter") say("tout type d'objet, d'items ou autres?") local a = select("Passer une annonce", "Comment utiliser le système d'annonce?", "Fermer") if a == 3 then return -- Passer Annonce -- elseif a == 1 then --- l say_title("Annonce") say("Ecrivez votre annonce maintenant:") notice_all(pc.get_name(), ": ", input(), input()) pc.setqf("duration",get_time()+60*15*1) return -- Regles -- else --- l say_title("Annonce") say_reward("Pour passer une annonce vous avez en tout") say_reward("deux champs pour écrire votre texte,") say_reward("qui défileront après avoir fini de remplir") say_reward("un champ. Si vous avez finit de taper") say_reward("l'annonce est qui reste des champs vide") say_reward("ne mettez rien et apuyez sur 'OK'.") end -- Anti Flood -- else --- l say_title("Annonce") say("Pour éviter le flood et les annonces répétitives") say("Un système de temps a été mise en place.") say_reward("Veuillez attendre une quinzaine de minutes.") say_reward("Avant de pouvoir passer une autres annonces.") end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Trailer -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==9 then cmdchat("showtrailer [Hidden Content]") setskin(NOWINDOW) ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Reglement -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==10 then say_title("Règlement du jeu") say("Vous allez avoir accès au règlement du jeu.") say("Prenez le temps de le lire!") say("Voulez-vous voir le règlement?") local vbn = select("Oui","Non") if vbn== 1 then say_title("Règlement du jeu:") say_reward("Conditions Générales") say("Veuillez vous respecter les uns les autres.") say("Tout harcèlement et insulte sont interdit.") say("Le harcèlement se définit comme le fait :") say("De gêner un joueur dans sa progression.") say("Le don ou échange de compte est autorisée.") say("mais ceci est à vos risques et périls.") say("Toutes plaintes concernant :") say("La récupération de compte ne sera pas accepté.") say("Le staff ne s'en tiendra en aucun cas responsable") local page=select("Page suivante","Quitter") if page==2 then return else say_title("Règlement du jeu:") say_reward("Mode de jeu") say("Le Chain kill est autorisé,vous pouvez toujours :") say("Vous reco-citer ou mettre le mode fantôme.") say("Il est interdit de frapper d'autres joueurs si :") say("Ils sont en train de parler ou proche d'un PNJ.") say("Tout pseudo comportant des propos :") say("Raciste, pornographique sont interdits.") say("Le staff est reconnaissable grâce à leur préfixe :") say("[CoMa] [GA] [sGM] [GM] ou [bGM].") say("L'usurpation d'identité est interdits.") local pag=select("Page suivante","Quitter") if pag==2 then return else say_title("Règlement du jeu:") say_reward("Conversation") say("La langue de Source-Online est le Français.") say("Le langage SMS est toléré mais est interdit lors :") say("De la communication avec un membre du staff.") say("Le flood est interdit.") say("Les phrases en majuscules sont interdites.") say("Toute publicité envers un autre serveur sera :") say("Puni d'un bannissement définitif.") local bu=select("Page suivante","Quitter") if bu==2 then return else say_title("Règlement du jeu:") say_reward("Le client") say("Toute modification du client est interdite.") say("L'utilisation de bot, cheat ou autres sera :") say("Puni d'un bannissement définitif.") say("L'exploitation de bug ou usebug est interdite.") local cu=select("Page suivante","Quitter") if cu==2 then return else say_title("Règlement du jeu:") say_reward("Gestion magasin") say("Tout magasin proche d'un PNJ est interdit.") say("Sauf ceux se trouvant sur la place.") say("Les nom de magasins vulgaires sont interdits.") say_reward("Le staff vous souhaites :") say_reward("Bon jeu") select("Fermer") end end end end else return end else return end end end end - Mettez les droits 0777 sur la quête - Et enfin allez dans locale_list et rajoutez ceci a la fin, en pensant a laisser une ligne vide a la fin : anneau_magique.quest - Compiler la quête, ensuite un reboot ou un /reload q InGame et sa devrai être bon ! Pour ceux qui ne veulent pas implanter cet item, vous pouvez toujours mettre la quête sur " l'anneau de levi " qui de base n'est pas utiliser il me semble. Pour se faire vous avez juste a changé la ligne 8 de la quête : when 2202.use begin par when 40002.use begin Dernière chose, pour faire fonctionner la partie " Trailer ", il faut faire les modifications suivantes : Étape 1 : Télécharger les fichiers python : Lien du téléchargement : Cliquez ici. Étape 2 : Intégration des fichiers téléchargés : Vous verrez en faisant l'extraction de l'archive que vous aurez un dossier "root" et un autre "uiscript". Vous allez donc devoir dépacker le root et le uiscript de votre client afin de mettre les fichiers a l'intérieur. En clair, vous mettez "uitrailer.py" dans votre dossier root et le fichier "trailerwindow.py" dans le dossier uiscript. Étape 3 : Intégration du module dans le game.py : Maintenant que vos fichiers sont placés au bonne endroit, profitez en pour vous rendre dans le root et cherchez le fichier "game.py"! Éditez ce fichier avec notepad++ et cherchez la ligne (CTRL+F) "mall" : self.__InGameShop_Show, Ensuite, mettez cette ligne à la suite de celle cité ci dessus : "showtrailer" : self.Trailer_Show, Bien! Ce n'est pas terminé, il reste à annoncer le module. Pour cela, allez tout en bas du game.py (descendez avec la roulette). Vous devez ajouter ceci : def Trailer_Show(self, url): import uitrailer self.wndtrailer = uitrailer.WebWindow() self.wndtrailer.LoadWindow() self.wndtrailer.Hide() self.wndtrailer.Open(url) EXEMPLE avec client 2012 vierge : Pour modifier l'url de la video, cela se passe dans la quete ligne 660: cmdchat("showtrailer [Hidden Content]") Enfin repacker root et uiscript. Source pour le tuto concernant le trailer: Emulation-bay Source pour le tuto concernant la quete: Wiizko Je remercie toutes les personnes qui ont crée les quête, dont je me suis servi ! Je remercie aussi Prindo99 pour m'avoir ""aider""! Voila j'espere que cette quete vous conviendras, je précise qu'elle est fonctionnelle ( je l'ai actuellement sur mon serveur ) Cordialement, Wiizko
    1 point

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.