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

herostar34

Retraité
  • Compteur de contenus

    637
  • Inscription

  • Dernière visite

Tout ce qui a été posté par herostar34

  1. herostar34

    Fille 2013

    Tu as une erreure au lancement du serveur sur putty ou vpc ?
  2. herostar34

    Site web

    Bonjour, J'ai étudié les scripts du site web... Apparemment il faudrait une colonne web_aktiviert, si la valeure est inexistante ou la colonne absente, tu n'arriveras jamais à te connecter. Si tu veux, ce site web dit que si la valeure du web_aktiviert est à 1 , on autorise la connection donc ca fonctionne, mais pour pouvoir obtenir le web_aktiviert avec 1 comme valeure, il faut pouvoir s'inscrire. Je doute que tu arrive à t'inscrire par le site, y arrive tu ou ca te mets une erreure ?
  3. Bonjour, Ils sont tous comme toi Allostarz, en train d'attendre qu'il donnera des nouvelles. Et bien croyez moi, vous allez droit dans le mur avec lui ce n'est pas pour le dévaloriser, mais bon cette interface il l'a eu mais par le biais d'autres personnes. Il vous l'a gentiment partagé, c'est super de sa part, mais pour les bugs il ne pourra pas vous aider. Sinon, allostarz assure bien de ceci : - Edit le fichier index qui se trouve dans le dossier pack de ton client avec notepad++ et rajoute a la fin : yekta_work/ yekta_work [ligne vide] - Assure toi bien d'avoir mis les libs dans le dossier lib qui se trouve a la racine de ton client. Une fois fait, tu ne devrais pas avoir de problèmes, sauf si tu as re modifié derrière. Bien amicalement.
  4. Pourquoi me dis tu " Ou est ton travail " ? Je sais pas, je partage quelque chose voila comment tu me remercie bref j'ai tout traduit rassure toi
  5. Centre de Téléchargement Télécharger ( Interne ) Bonjour, Je viens de trouver un système sympathique sur epvp qui permet de transférer vos yangs a un autre personnage présent sur le même compte, et le banquier traditionnelle qui stock vos yangs bien évidemment, et tout ca, en passant par une gui qui sera ffichable n'importe ou sans avoir à cliquer sur un Pnj , simplement par un raccourci ! Oui les screens sont en allemand mais j'ai pris la peine de tout vous traduire -------------------------------------------- PARTIE : Tutoriel installation de la gui -------------------------------------------- - Ouvrez naviat, allez dans player et player. Faites un Ctrl + D et créez la colonne comme ceci : Name : bank Type : int Lenght : 255 Decimals : 0 Pensez à faire une sauvegarde au cas ou ! - Ensuite, munissez vous d'un depacker, et extrayez root . Allez dans le fichier constinfo.py et rajoutez ceci : load_bank_einzahlen = 0 load_bank_abheben = 0 load_bank_uberweisen = 0 load_bank_abfragen = 0 bank = 0 yang_input = 0 - Maintenant, allez dans le fichier game.py et cherchez : def __ServerCommand_Build(self): serverCommandList={ ( Conseil : Dans notepad ++ , faites CTRL + F => rechercher => tapez : def __ServerCommand_Build(self): en disant d'aller chercher cette ligne vers le bas ) Une fois trouvé, rajoutez ceci juste aprés : "bank_einzahlen" : self.__bank_einzahlen, "bank_abheben" : self.__bank_abheben, "bank_uberweisen" : self.__bank_uberweisen, "bank_abfragen" : self.__bank_abfragen, - Toujours par la même technique que je vous ai enseigné, recherchez cette ligne : onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7) Et rajoutez ceci : onPressKeyDict[app.DIK_U] = lambda : self.__money_in_bank() onPressKeyDict[app.DIK_F7] = lambda : self._open_bank_() /!\ app.DIK_U ----- [app.DIK_F7] ------ Ca veut dire que si vous appuyez soit sur U ou sur F7 la gui s'affichera. Vous pouvez modifier la lettre U par F8 par exemple et et F7 par F11 , vous faites ce que vous voulez tant que ces raccourcis ne sont pas utilisés sur le jeu. - Pour terminer, rajoutez a la fin de game.py ceci : def __bank_einzahlen(self, id): constInfo.load_bank_einzahlen = int(id) def __bank_abheben(self, id): constInfo.load_bank_abheben = int(id) def __bank_uberweisen(self, id): constInfo.load_bank_uberweisen = int(id) def __bank_abfragen(self, id): constInfo.load_bank_abfragen = int(id) def _open_bank_(self): if constInfo.bank == 0: self.__Bank() constInfo.bank = 1 return if constInfo.bank == 1: self.bank.Hide() constInfo.bank = 0 def __Bank(self): self.bank = ui.BoardWithTitleBar() self.bank.SetSize(180, 100) self.bank.SetCenterPosition() self.bank.AddFlag('movable') self.bank.AddFlag('float') self.bank.SetTitleName('Banque') self.bank.SetCloseEvent(self._bank_close) self.bank.Show() self.bank_Einzahlen = ui.Button() self.bank_Einzahlen.SetEvent(self._bank_einzahlen) self.bank_Einzahlen.SetParent(self.bank) self.bank_Einzahlen.SetPosition(20, 35) self.bank_Einzahlen.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub") self.bank_Einzahlen.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub") self.bank_Einzahlen.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub") self.bank_Einzahlen.SetText("Dépôt") self.bank_Einzahlen.SetToolTipText("Stocker les yangs dans la banque") self.bank_Einzahlen.Show() self.bank_Abheben = ui.Button() self.bank_Abheben.SetEvent(self._bank_abheben) self.bank_Abheben.SetParent(self.bank) self.bank_Abheben.SetPosition(100, 35) self.bank_Abheben.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub") self.bank_Abheben.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub") self.bank_Abheben.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub") self.bank_Abheben.SetText("Retirer") self.bank_Abheben.SetToolTipText("Retirer des yangs de votre banque") self.bank_Abheben.Show() self.bank_Abfragen = ui.Button() self.bank_Abfragen.SetEvent(self._bank_abfragen) self.bank_Abfragen.SetParent(self.bank) self.bank_Abfragen.SetPosition(20, 65) self.bank_Abfragen.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub") self.bank_Abfragen.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub") self.bank_Abfragen.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub") self.bank_Abfragen.SetText("Retirer") self.bank_Abfragen.SetToolTipText("Voir l'etat de votre compte") self.bank_Abfragen.Show() self.bank_uberweisen = ui.Button() self.bank_uberweisen.SetEvent(self._bank_uberweisen) self.bank_uberweisen.SetParent(self.bank) self.bank_uberweisen.SetPosition(100, 65) self.bank_uberweisen.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub") self.bank_uberweisen.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub") self.bank_uberweisen.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub") self.bank_uberweisen.SetText("Transférer") self.bank_uberweisen.SetToolTipText("Transférer des yangs a un autre joueur") self.bank_uberweisen.Show() def _bank_einzahlen(self): self.bank.SetTitleName('Dépôt') self.bank.SetSize(125, 100) self.bank_Einzahlen.Hide() self.bank_Abheben.Hide() self.bank_Abfragen.Hide() self.bank_uberweisen.Hide() self.bank_YangSlotBar = ui.SlotBar() self.bank_YangSlotBar.SetParent(self.bank) self.bank_YangSlotBar.SetSize(60, 15) self.bank_YangSlotBar.SetPosition(15, 35) self.bank_YangSlotBar.SetWindowHorizontalAlignCenter() self.bank_YangSlotBar.Show() self.bank_Yang = ui.EditLine() self.bank_Yang.SetParent(self.bank_YangSlotBar) self.bank_Yang.SetSize(60, 15) self.bank_Yang.SetPosition(4, 1) self.bank_Yang.SetMax(10) self.bank_Yang.SetNumberMode() self.bank_Yang.SetText(constInfo.yang_input) self.bank_Yang.SetFocus() self.bank_Yang.Show() self.bank_yang_text = ui.TextLine() self.bank_yang_text.SetParent(self.bank) self.bank_yang_text.SetDefaultFontName() self.bank_yang_text.SetPosition(15, 35) self.bank_yang_text.SetFeather() self.bank_yang_text.SetText("Yang: ") self.bank_yang_text.SetOutline() self.bank_yang_text.Show() self.bank_Annehmen = ui.Button() self.bank_Annehmen.SetParent(self.bank) self.bank_Annehmen.SetEvent(self.bank_annehmen) self.bank_Annehmen.SetPosition(15, 60) self.bank_Annehmen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub") self.bank_Annehmen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub") self.bank_Annehmen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub") self.bank_Annehmen.SetText("Déposer") self.bank_Annehmen.SetToolTipText("Mettez vos yangs ici") self.bank_Annehmen.Show() def _bank_abheben(self): self.bank.SetTitleName('Retirer') self.bank.SetSize(130, 100) self.bank_Einzahlen.Hide() self.bank_Abheben.Hide() self.bank_Abfragen.Hide() self.bank_uberweisen.Hide() self.bank_YangSlotBar = ui.SlotBar() self.bank_YangSlotBar.SetParent(self.bank) self.bank_YangSlotBar.SetSize(60, 15) self.bank_YangSlotBar.SetPosition(15, 35) self.bank_YangSlotBar.SetWindowHorizontalAlignCenter() self.bank_YangSlotBar.Show() self.bank_Yang = ui.EditLine() self.bank_Yang.SetParent(self.bank_YangSlotBar) self.bank_Yang.SetSize(60, 15) self.bank_Yang.SetPosition(4, 1) self.bank_Yang.SetMax(10) self.bank_Yang.SetNumberMode() self.bank_Yang.SetText(constInfo.yang_input) self.bank_Yang.SetFocus() self.bank_Yang.Show() self.bank_yang_text = ui.TextLine() self.bank_yang_text.SetParent(self.bank) self.bank_yang_text.SetDefaultFontName() self.bank_yang_text.SetPosition(15, 35) self.bank_yang_text.SetFeather() self.bank_yang_text.SetText("Yang: ") self.bank_yang_text.SetOutline() self.bank_yang_text.Show() self.bank_Annehmen = ui.Button() self.bank_Annehmen.SetParent(self.bank) self.bank_Annehmen.SetEvent(self.bank_annehmen_b) self.bank_Annehmen.SetPosition(15, 60) self.bank_Annehmen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub") self.bank_Annehmen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub") self.bank_Annehmen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub") self.bank_Annehmen.SetText("Déposer") self.bank_Annehmen.SetToolTipText("Selectionner le nombre de yangs") self.bank_Annehmen.Show() def _bank_abfragen(self): event.QuestButtonClick(constInfo.load_bank_abfragen) def _bank_uberweisen(self): self.bank.SetTitleName('Transférer) self.bank.SetSize(160, 145) self.bank_Einzahlen.Hide() self.bank_Abheben.Hide() self.bank_Abfragen.Hide() self.bank_uberweisen.Hide() self.bank_yang_text = ui.TextLine() self.bank_yang_text.SetParent(self.bank) self.bank_yang_text.SetDefaultFontName() self.bank_yang_text.SetPosition(15, 35) self.bank_yang_text.SetFeather() self.bank_yang_text.SetText("Yang: ") self.bank_yang_text.SetOutline() self.bank_yang_text.Show() self.bank_empfanger_text = ui.TextLine() self.bank_empfanger_text.SetParent(self.bank) self.bank_empfanger_text.SetDefaultFontName() self.bank_empfanger_text.SetPosition(15, 60) self.bank_empfanger_text.SetFeather() self.bank_empfanger_text.SetText("Empfänger: ") self.bank_empfanger_text.SetOutline() self.bank_empfanger_text.Show() self.bank_YangSlotBar = ui.SlotBar() self.bank_YangSlotBar.SetParent(self.bank) self.bank_YangSlotBar.SetSize(72, 15) self.bank_YangSlotBar.SetPosition(30, 35) self.bank_YangSlotBar.SetWindowHorizontalAlignCenter() self.bank_YangSlotBar.Show() self.bank_Yang = ui.EditLine() self.bank_Yang.SetParent(self.bank_YangSlotBar) self.bank_Yang.SetSize(72, 15) self.bank_Yang.SetPosition(4, 1) self.bank_Yang.SetMax(12) self.bank_Yang.SetNumberMode() self.bank_Yang.SetText(constInfo.yang_input) self.bank_Yang.SetFocus() self.bank_Yang.Show() self.bank_EmpfangerSlotBar = ui.SlotBar() self.bank_EmpfangerSlotBar.SetParent(self.bank) self.bank_EmpfangerSlotBar.SetSize(72, 15) self.bank_EmpfangerSlotBar.SetPosition(30, 60) self.bank_EmpfangerSlotBar.SetWindowHorizontalAlignCenter() self.bank_EmpfangerSlotBar.Show() self.bank_Empfanger = ui.EditLine() self.bank_Empfanger.SetParent(self.bank_EmpfangerSlotBar) self.bank_Empfanger.SetSize(72, 15) self.bank_Empfanger.SetPosition(4, 1) self.bank_Empfanger.SetMax(12) self.bank_Empfanger.Show() self.from_bank_pressed = ui.Button() self.from_bank_pressed.SetParent(self.bank) self.from_bank_pressed.SetPosition(15, 85) self.from_bank_pressed.SetUpVisual("d:/ymir work/ui/public/middle_button_03.sub") self.from_bank_pressed.SetOverVisual("d:/ymir work/ui/public/middle_button_03.sub") self.from_bank_pressed.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub") self.from_bank_pressed.SetEvent(self.from_bank) self.from_bank_pressed.SetToolTipText("Nimmt den angegebenen Betrag von der Bank") self.from_bank_pressed.SetText("Vers la banque") self.from_bank_pressed.Hide() self.from_inven_pressed = ui.Button() self.from_inven_pressed.SetParent(self.bank) self.from_inven_pressed.SetPosition(80, 85) self.from_inven_pressed.SetUpVisual("d:/ymir work/ui/public/middle_button_03.sub") self.from_inven_pressed.SetOverVisual("d:/ymir work/ui/public/middle_button_03.sub") self.from_inven_pressed.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub") self.from_inven_pressed.SetEvent(self.from_inven) self.from_inven_pressed.SetToolTipText("Nimmt den angegebenen Betrag aus deinem Inventar") self.from_inven_pressed.SetText("Vers l'inventaire") self.from_inven_pressed.Show() self.from_bank_not_pressed = ui.Button() self.from_bank_not_pressed.SetParent(self.bank) self.from_bank_not_pressed.SetPosition(15, 85) self.from_bank_not_pressed.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub") self.from_bank_not_pressed.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub") self.from_bank_not_pressed.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub") self.from_bank_not_pressed.SetEvent(self.from_bank) self.from_bank_not_pressed.SetToolTipText("Nimmt den angegebenen Betrag von der Bank") self.from_bank_not_pressed.SetText("Vers la banque") self.from_bank_not_pressed.Show() self.from_inven_not_pressed = ui.Button() self.from_inven_not_pressed.SetParent(self.bank) self.from_inven_not_pressed.SetPosition(80, 85) self.from_inven_not_pressed.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub") self.from_inven_not_pressed.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub") self.from_inven_not_pressed.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub") self.from_inven_not_pressed.SetEvent(self.from_inven) self.from_inven_not_pressed.SetToolTipText("Nimmt den angegebenen Betrag aus deinem Inventar") self.from_inven_not_pressed.SetText("Vers l'inventaire") self.from_inven_not_pressed.Hide() self.Themp = ui.EditLine() self.Themp.SetMax(1) self.Themp.SetText("0") self.Themp.Hide() self.bank_Annehmen = ui.Button() self.bank_Annehmen.SetParent(self.bank) self.bank_Annehmen.SetEvent(self.bank_annehmen_c) self.bank_Annehmen.SetPosition(15, 110) self.bank_Annehmen.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub") self.bank_Annehmen.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub") self.bank_Annehmen.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub") self.bank_Annehmen.SetText("Déposer") self.bank_Annehmen.SetToolTipText('Transférer le montant') self.bank_Annehmen.Show() def bank_annehmen(self): constInfo.yang_input = self.bank_Yang.GetText() event.QuestButtonClick(constInfo.load_bank_einzahlen) net.SendQuestInputStringPacket(self.bank_Yang.GetText()) def bank_annehmen_b(self): constInfo.yang_input = self.bank_Yang.GetText() event.QuestButtonClick(constInfo.load_bank_abheben) net.SendQuestInputStringPacket(self.bank_Yang.GetText()) def bank_annehmen_c(self): constInfo.yang_input = self.bank_Yang.GetText() event.QuestButtonClick(constInfo.load_bank_uberweisen) net.SendQuestInputStringPacket(self.bank_Yang.GetText()) net.SendQuestInputStringPacket(self.bank_Empfanger.GetText()) net.SendQuestInputStringPacket(self.Themp.GetText()) def from_bank(self): self.from_bank_pressed.Show() self.from_bank_not_pressed.Hide() self.from_inven_pressed.Hide() self.from_inven_not_pressed.Show() self.Themp.SetText("1") def from_inven(self): self.from_bank_pressed.Hide() self.from_bank_not_pressed.Show() self.from_inven_pressed.Show() self.from_inven_not_pressed.Hide() self.Themp.SetText("0") def _bank_close(self): self.bank.Hide() constInfo.bank = 0 - Non non non, ce n'est pas terminé , bande de fénéants Il vous reste ces quêtes que j'ai traduite à mettre sur votre serveur afin d'assurer le bon déroulement des transferts, c'est pas magique :mad: quest bank_af begin state start begin when login begin cmdchat("bank_abfragen "..q.getcurrentquestindex()) end when info or button begin chat("Vous avez "..mysql_query("SELECT bank FROM player.player WHERE name = '"..pc.get_name().."' LIMIT 1;").bank[1].." yangs dans votre banque.") end end end quest bank_az begin state start begin when login begin cmdchat("bank_abheben "..q.getcurrentquestindex()) end when info or button begin a = tonumber(getinput("getinput")) b = tonumber(mysql_query("SELECT bank FROM player.player WHERE name = '"..pc.get_name().."' LIMIT 1;").bank[1]) if (pc.get_gold() + a) >= 2000000000 then chat("Les yangs de l'inventaire sont pleins.") elseif b < a then chat("Pas assez de Yang dans la banque") else chat("Réalisée avec succès") pc.change_gold(a) mysql_query("UPDATE player.player SET bank = bank - "..a.." WHERE name = '"..pc.get_name().."' LIMIT 1;") end end end end quest bank_ez begin state start begin when login begin cmdchat("bank_einzahlen "..q.getcurrentquestindex()) end when info or button begin a = getinput("getinput") if pc.get_gold() >= tonumber(a) then mysql_query("UPDATE player.player SET bank = bank + "..a.." WHERE name = '"..pc.get_name().."' LIMIT 1;") chat("Réalisée avec succès") pc.change_gold(-a) else chat("Vous n'avez pas assez de Yang.") end end end end quest bank_uw begin state start begin when login begin cmdchat("bank_uberweisen "..q.getcurrentquestindex()) end when info or button begin local yang = tonumber(getinput("getinput")) local empfanger = tostring(getinput("getinput")) local way = tonumber(getinput("getinput")) if table.getn(mysql_query("SELECT name FROM player.player where name = '"..empfanger.."' LIMIT 1;").name) != 1 then chat("Le joueur spécifié est introuvable.") return elseif way == 0 then local myyang = pc.get_gold() if yang > myyang then chat("Vous n'avez pas assez de yangs.") return else pc.change_gold(-yang) mysql_query("UPDATE player.player SET bank = bank + "..yang.." WHERE name = '"..empfanger.."' LIMIT 1;") chat("Réalisée avec succès") return end elseif way == 1 then local myyang = tonumber(mysql_query("SELECT bank FROM player.player WHERE name = '"..pc.get_name().."' LIMIT 1;").bank[1]) local myyang = pc.get_gold() if yang > myyang then chat("Vous n'avez pas assez de yangs.") return else mysql_query("UPDATE player.player SET bank = bank - "..yang.." WHERE name = '"..pc.get_name().."' LIMIT 1;") mysql_query("UPDATE player.player SET bank = bank + "..yang.." WHERE name = '"..empfanger.."' LIMIT 1;") chat("Réalisée avec succès !") return end end end end end - Oh et puis j'allais oublier, pensez à reboot afin de prendre en compte la nouvelle colonne créé ! Vous pouvez maintenant vous amusez avec cette gui. Faites la découvrir à vos joueurs, ils seront séduits par son efficacité. Plus besoin de créer un autre compte pour transférer ces yangs. Plus besoin de retournez map 1 pour voir le pnj. Plus besoin d'utiliser d'anneau de banquier. Plus rapide, plus efficace, plus pratique, bonne émulation !
  6. herostar34

    [PVE] Chasse

    Bonne nouvelle pour moi Galet alors, puisque la quête fonctionne
  7. herostar34

    [PVE] Chasse

    Hum oui ...j admets que c est une bete erreure
  8. Centre de Téléchargement Télécharger ( Interne ) Bonjour à tous ! On m'a demandé une fois si il était possible à partir d'un anneau , lorsqu'on l'utilise, ça nous fait monter sur telle ou telle monture ? Bien évidemment , il suffira simplement de remplacer les éléments ci - dessous dans la quête : - pc.mount(20440, 600) => 20440 : ceci est l'id de la monture, modifiez par le votre => 600 : ceci est le temps en seconde sur lequel un joueur reste sur la monture, vous pouvez bien évidemment le modifier pour soit allonger ou raccourci le temps. --------------------------- Quete par herostar34 --------------------------- quest monture begin state start begin when 30201.use begin say_title("Les Montures") say("Bravo, vous venez d'acquérir un") say("superbe anneau qui va vous etre utile,") say("Choisissez votre monture pour l'aventure:") local s=select("Nom Monture", "Nom Monture", "Nom Monture", "Nom Monture, "Quitter") if s== 1 then pc.mount(20440, 600) end if s== 2 then pc.mount(20430, 600) end if s==3 then pc.mount(20420, 600) end if s== 4 then pc.mount(20450, 600) end if s == 5 then return end end end end Si vous ne savez pas implanter une quête, suivez ce tutoriel : Implanter une quête Amusez vous bien, herostar34
  9. herostar34

    [PVE] Chasse

    Centre de Téléchargement Télécharger ( Interne ) Hey, bonjour à tous. Ce matin je viens de retrouver une quête dans mes fichiers que j'avais faite pour une personne, je ne sais plus qui enfin bref. C'est une quête mission de chasse, avec compteur de monstres tués, et récompenses à la fin. Rien de bien impressionnant, mais si vous le souhaitez , prenez la quête, et modifiez à votre guise : ---------------------------------------------- Quete modifiée et corrigée par herostar34 ---------------------------------------------- quest herostar begin state start begin when login or levelup or enter with pc.get_level() >=100 and pc.get_level() <= 100 begin set_state( information ) end end state information begin when letter begin local v = find_npc_by_vnum(ID PNJ) if v != 0 then target.vid("__TARGET__", v, "§äĵ³Æ¶¤ªø") end send_letter("Nom de la mission") end when button begin say("") say("Le pnj veut vous voir.") say("Allez à sa rencontre, il a une bonne") say("nouvelle pour vous.") say("A tout de suite.") say("") end when info begin say("") say("Le pnj veut vous voir.") say("Allez à sa rencontre, il a une bonne") say("nouvelle pour vous.") say("A tout de suite.") say("") end when __TARGET__.target.click or idPNJ.chat."Les Neuf Queues" with pc.level >= 100 begin target.delete("__TARGET__") -- | say("NomDuPnj :") say("") say("Hey Aventurier,") say("J'ai une quete à vous confier") say("pour prouver votre bravoure.") say("Il faut tuer 20 nomDuMob") say("Te sens-tu capable ?") say("Tu seras bien evidemment") say("récompensé si tu y arrives") say("") local s=select("J'accepte","Je refuse") if 2==s then say("nomDuPnj :") say("") say("Tu refuses ?") local a=select("Oui","Non") if 2==a then say("nomDuPnj :") say("") say("Ah, tu as du courage") say("Reviens quand tu seras prêt") say("") return end say("nomDuPnj :") say("") say("Tu lâches l'affaire..") say("Tu ne gagneras rien du tout") say("") set_state(__GIVEUP__) return end say("nomDuPnj :") say("") say("Je compte sur toi") say("Tue 20 nomDuMob") say("Reconnecte toi pour que le compteur se lance") say("") pc.setqf("kill_count", 0) q.set_counter("Il te reste "..mob_name(idDuMob).." à tuer",0) set_state(goto_blackwinder) end end state goto_blackwinder begin when letter begin setskin(NOWINDOW) makequestbutton("Tuer nomDuMob") q.set_title("Tuer nomDuMob") q.start() end when info or button begin say(locale.NOTICE_COLOR.."Tuer 20 nomDuMob"..locale.NORMAL_COLOR) -- | say("") say("Pour gagner") say("et recevoir une recompense") say("Tu dois tuer nomDuMob") say("Au plus vite") say("") say("Ta perseverance sera recompensée") say("Bonne Chance") say("") say_reward("Vous en avez tué "..pc.getqf("kill_count").." "..mob_name(idDuMob).."") end when idDuMob.kill begin local count=pc.getqf("kill_count")+1 if count<=20 then pc.setqf("kill_count",count) q.set_counter("Reste "..mob_name(idDuMob).."",20-count) if count== 20 then set_state(go_back_to_bosser) end end end end state go_back_to_bosser begin when letter begin setskin(NOWINDOW) makequestbutton("Mission Accomplie") q.set_title("Mission Accomplie") q.start() local v = find_npc_by_vnum(idDuPnj) if v != 0 then target.vid("__TARGET__", v, "¥hĵ³Æ¶¤ªø¨º¸Ì") end end when info or button begin say(locale.NOTICE_COLOR.."Mission Accomplie"..locale.NORMAL_COLOR) say("") say("Tu as tué les 20 nomDuMob") say("Retourne voir le nomDuPnj") say("") end when __TARGET__.target.click or idDuPnj.chat."Mission Terminee" begin target.delete("__TARGET__") say("Forgeron :") say("") say("Felicitation") say("Tu as accomplie ta quête avec succès.") say("Voici comme promis") say("une récompense.") say("") say_reward("Vous recevez :") say_reward("25 000 000 Yangs.") say_reward("nomdel'item") pc.change_money(25000000) pc.give_item2(idDeLitem, nbre) set_state(COMPLETE) clear_letter() end end state __GIVEUP__ begin end state COMPLETE begin end end Si vous ne savez pas implanter une quête, suivez ce tutoriel : ici
  10. Tu peux me faire un screen du site que je me rappel ?
  11. Salut, Mets la balise en cours ca aidera les modérateurs
  12. herostar34

    file 2013 aide

    Bonjour, Une fois que vous avez déplacé l'archive metin2.tar.gz dans cd /usr , il faut faire la commande : cd /usr tar xvf metin2.tar.gz Oubliez la commande du cvf, c'est pas trés util je trouve, Cordialement.
  13. Bonjour, En fait c'est peu tiré par les cheveux . Dans la quête il suffit d'annoncer que le joueur doit retirer tous ces items tout simplement, quitte à mettre un say_reward pour que les joueurs le prennent en compte. Puis si aprés ils veulent échanger les items, dans ce cas là il suffit de faire une quête qui permet d'échanger son équipement Sura ( par exemple ) contre un équipement Guerrier . Aprés, je connais pas du tout la fonction qu'il faut attribuer à la quête pour que les items des joueurs aillent dans l'inventaire, mais ca doit être tout bête je pense ^^
  14. Salut Stayms, en fait $sess tel que tu l'as expliqué ici, correspond a une variable qui doit être déclaré dans un fichier. Regarde dans ton ancien site si il y a un include se rapportant à cette variable. Dans le pire des cas, refais la toi même comme par exemple, si je me souviens bien de ton site : $sess correspond a un login , donc ca donnerait un truc de ce style : mysql_query("UPDATE $db_account.account SET $db_account.account.gold_expire='$time' WHERE $db_account.account.login='$sess'"); $echo=mysql_query("SELECT $db_account.account.cash FROM $db_account.account WHERE $db_account.account.login='$sess'"); J'espère t'avoir aidé, Cordialement.
  15. Bonsoir, Ou tout simplement dans le flag tu mets 20 et tu fais un petit /reload . Cordialement.
  16. herostar34

    Aucun logs ?

    100% Correct, les files de Croko sont archis bug, que ce soit les 1.0 , 2.0 bref...je vais inventer les files 2020 moi
  17. herostar34

    Aide serveur svp

    Il ne demande pas à ce qu'on lui fasse un serveur, mais juste qu'on le guide... Que je sache, il n'y a pas de rubrique " Conseils " Sikoki, vous avez 3 types de serveurs : - Serveur No IP : ( héberger sur votre pc, et donc il faut avoir assez de rame pour éviter tous bugs ) . Principale qualité : Permet aux joueurs de pouvoir se connecter au serveur sans le réseau via Hamachi, et vous, si vous éteignez votre pc, votre serveur est éteint. GRATUIT - Serveur Hamachi : ( héberger sur votre pc, et donc il faut avoir assez de rame pour éviter tous bugs ) Principal défaut : Il faut que les joueurs téléchargent Hamachi pour ceux qui ne l'ont pas, et qu'ils rejoignent votre réseau créé, et vous, si vous éteignez votre pc, votre serveur est éteint. GRATUIT - Serveur dédié : Hébergeur en ligne, par une société qui propose ces services, tels que kimsufi / ovh , eternalhost, speedy hebergement, etc... Vous pouvez obtenir un dédié pour seulement ~ 12 € / mois . Principale qualité : Ne prend aucune rame de votre pc, aucunement besoin d'allumer son pc pour que le serveur soit en route a part pour les reboots etc... - Serveur local : ( héberger sur votre pc, et donc il faut avoir assez de rame pour éviter tous bugs ) et si vous éteignez votre pc, votre serveur est éteint automatiquement. Les principaux files conseillés sont les files 2012 que vous trouverez juste ici : /topic/10681-installer-les-server-files-2012/ Un tutoriel pour bien commencer à apprendre les bases d'un serveur pour un No Ip : /topic/53-résolu-problème-de-mise-en-ligne/91 Un tutoriel pour bien commencer à apprendre les bases d'un serveur pour un Hamachi : /topic/172-thread/3 Un tutoriel pour bien commencer à apprendre les bases d'un serveur pour un serveur en local : /topic/13-thread/1000 Vous trouverez la liste des autres tutoriels importants ici : /4 Cordialement, herostar34
  18. Premierement, c est incomprehensible. Deuxiemement, ce n est pas la bonne section. Ce n`est pas pour parraitre desagreable, mais tu devrais plutot filer dans aide question et support avant de te faire taper sur les doigts x)
  19. herostar34

    Monstre X1

    Ah oui beaucoup mieux ! Merci Cube herostar34
  20. herostar34

    Monstre X1

    Salut, J'en connais beaucoup, mais merci pour le partage, j'aurais plus à aller les chercher sur d'autres forums. En revanche, mets des spoiler s'il te plait
  21. herostar34

    [PVP] Grade de guerre

    Bonsoir, Pour ce systeme la, ne serait il pas préférable d'avoir le module mysql installé ? Cordialement, herostar34
  22. herostar34

    Familier Invoque

    Oui mais l'un est dans le mob_proto et l'autre dans l'item proto
  23. herostar34

    Inventorywindow.py

    Oui c'est exact, ouvrez votre fichier uiinventory.py et remplacez le contenu par ceci : import ui import player import mouseModule import net import app import snd import item import player import chat import grp import uiScriptLocale import uiRefine import uiAttachMetin import uiPickMoney import uiCommon import uiPrivateShopBuilder # °³ÀλóÁ¡ ¿­µ¿¾È ItemMove ¹æÁö import locale import constInfo import ime if locale.IsEUROPE()and app.GetLocalePath() != "locale/sg" or locale.IsYMIR() or locale.IsJAPAN(): ITEM_MALL_BUTTON_ENABLE = TRUE else: ITEM_MALL_BUTTON_ENABLE = FALSE ITEM_FLAG_APPLICABLE = 1 << 14 class InventoryWindow(ui.ScriptWindow): USE_TYPE_TUPLE = ("USE_CLEAN_SOCKET", "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ATTRIBUTE2", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET") def __init__(self): ui.ScriptWindow.__init__(self) self.questionDialog = None self.tooltipItem = None self.sellingSlotNumber = -1 self.isLoaded = 0 self.__LoadWindow() def __del__(self): ui.ScriptWindow.__del__(self) def Show(self): self.__LoadWindow() ui.ScriptWindow.Show(self) def __LoadWindow(self): if self.isLoaded == 1: return self.isLoaded = 1 try: pyScrLoader = ui.PythonScriptLoader() if ITEM_MALL_BUTTON_ENABLE: pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "InventoryWindow.py") else: pyScrLoader.LoadScriptFile(self, "UIScript/InventoryWindow.py") except: import exception exception.Abort("InventoryWindow.LoadWindow.LoadObject") try: wndItem = self.GetChild("ItemSlot") wndEquip = self.GetChild("EquipmentSlot") self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close)) self.wndMoney = self.GetChild("Money") self.wndMoneySlot = self.GetChild("Money_Slot") self.mallButton = self.GetChild2("MallButton") self.inventoryTab = [] self.inventoryTab.append(self.GetChild("Inventory_Tab_01")) self.inventoryTab.append(self.GetChild("Inventory_Tab_02")) self.equipmentTab = [] self.equipmentTab.append(self.GetChild("Equipment_Tab_01")) self.equipmentTab.append(self.GetChild("Equipment_Tab_02")) except: import exception exception.Abort("InventoryWindow.LoadWindow.BindObject") ## Item wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot)) wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot)) wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot)) wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot)) wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem)) wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem)) ## Equipment wndEquip.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot)) wndEquip.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot)) wndEquip.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot)) wndEquip.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot)) wndEquip.SetOverInItemEvent(ui.__mem_func__(self.OverInItem)) wndEquip.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem)) ## PickMoneyDialog dlgPickMoney = uiPickMoney.PickMoneyDialog() dlgPickMoney.LoadDialog() dlgPickMoney.Hide() ## RefineDialog self.refineDialog = uiRefine.RefineDialog() self.refineDialog.Hide() ## AttachMetinDialog self.attachMetinDialog = uiAttachMetin.AttachMetinDialog() self.attachMetinDialog.Hide() ## MoneySlot self.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog)) self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg)) self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg)) self.inventoryTab[0].Down() self.equipmentTab[0].SetEvent(lambda arg=0: self.SetEquipmentPage(arg)) self.equipmentTab[1].SetEvent(lambda arg=1: self.SetEquipmentPage(arg)) self.equipmentTab[0].Down() self.equipmentTab[0].Hide() self.equipmentTab[1].Hide() self.wndItem = wndItem self.wndEquip = wndEquip self.dlgPickMoney = dlgPickMoney # MallButton if self.mallButton: self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton)) ##### ## Refresh self.SetInventoryPage(0) self.SetEquipmentPage(0) self.RefreshItemSlot() self.RefreshStatus() def Destroy(self): self.ClearDictionary() self.dlgPickMoney.Destroy() self.dlgPickMoney = 0 self.refineDialog.Destroy() self.refineDialog = 0 self.attachMetinDialog.Destroy() self.attachMetinDialog = 0 self.tooltipItem = None self.wndItem = 0 self.wndEquip = 0 self.dlgPickMoney = 0 self.wndMoney = 0 self.wndMoneySlot = 0 self.questionDialog = None self.mallButton = None self.inventoryTab = [] self.equipmentTab = [] def Close(self): if None != self.tooltipItem: self.tooltipItem.HideToolTip() self.OnCloseQuestionDialog() self.dlgPickMoney.Close() self.Hide() def SetInventoryPage(self, page): self.inventoryPageIndex = page self.inventoryTab[1-page].SetUp() self.RefreshBagSlotWindow() def SetEquipmentPage(self, page): self.equipmentPageIndex = page self.equipmentTab[1-page].SetUp() self.RefreshEquipSlotWindow() def ClickMallButton(self): print "click_mall_button" net.SendChatPacket("/click_mall") def OpenPickMoneyDialog(self): if mouseModule.mouseController.isAttached(): attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() if player.SLOT_TYPE_SAFEBOX == mouseModule.mouseController.GetAttachedType(): if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex(): net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount()) snd.PlaySound("sound/ui/money.wav") mouseModule.mouseController.DeattachObject() else: curMoney = player.GetElk() if curMoney <= 0: return self.dlgPickMoney.SetTitleName(locale.PICK_MONEY_TITLE) self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney)) self.dlgPickMoney.Open(curMoney) self.dlgPickMoney.SetMax(7) # Àκ¥Å丮 990000 Á¦ÇÑ ¹ö±× ¼öÁ¤ def OnPickMoney(self, money): mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_INVENTORY, money) def OnPickItem(self, count): itemSlotIndex = self.dlgPickMoney.itemGlobalSlotIndex selectedItemVNum = player.GetItemIndex(itemSlotIndex) mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, count) def __InventoryLocalSlotPosToGlobalSlotPos(self, local): if player.IsEquipmentSlot(local): return local return self.inventoryPageIndex*player.INVENTORY_PAGE_SIZE + local def RefreshBagSlotWindow(self): getItemVNum=player.GetItemIndex getItemCount=player.GetItemCount setItemVNum=self.wndItem.SetItemSlot for i in xrange(player.INVENTORY_PAGE_SIZE): slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i) itemCount = getItemCount(slotNumber) if itemCount <= 1: itemCount = 0 itemVnum = getItemVNum(slotNumber) setItemVNum(i, itemVnum, itemCount) ## ÀÚµ¿¹°¾à (#72723, #72724) Ư¼öó¸® - ¾ÆÀÌÅÛÀε¥µµ ½½·Ô¿¡ È°¼ºÈ­/ºñÈ°¼ºÈ­ Ç¥½Ã¸¦ À§ÇÑ ÀÛ¾÷ÀÓ - [hyo] if 72723 == itemVnum or 72724 == itemVnum or 72725 == itemVnum or 72727 == itemVnum or 72728 == itemVnum or 72729 == itemVnum: # metinSocket - [0] : È°¼ºÈ­ ¿©ºÎ, [1] : »ç¿ëÇÑ ¾ç, [2] : ÃÖ´ë ¿ë·® metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)] if 0 != int(metinSocket[0]): self.wndItem.ActivateSlot(slotNumber) else: self.wndItem.DeactivateSlot(slotNumber) self.wndItem.RefreshSlot() def RefreshEquipSlotWindow(self): getItemVNum=player.GetItemIndex getItemCount=player.GetItemCount setItemVNum=self.wndEquip.SetItemSlot for i in xrange(player.EQUIPMENT_PAGE_COUNT): slotNumber = player.EQUIPMENT_SLOT_START + i itemCount = getItemCount(slotNumber) if itemCount <= 1: itemCount = 0 setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount) self.wndEquip.RefreshSlot() def RefreshItemSlot(self): self.RefreshBagSlotWindow() self.RefreshEquipSlotWindow() def RefreshStatus(self): money = player.GetElk() self.wndMoney.SetText(locale.NumberToMoneyString(money)) def SetItemToolTip(self, tooltipItem): self.tooltipItem = tooltipItem def SellItem(self): net.SendShopSellPacketNew(self.sellingSlotNumber, self.questionDialog.count) snd.PlaySound("sound/ui/money.wav") self.OnCloseQuestionDialog() def OnDetachMetinFromItem(self): if None == self.questionDialog: return #net.SendItemUseToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos) self.__SendUseItemToItemPacket(self.questionDialog.sourcePos, self.questionDialog.targetPos) self.OnCloseQuestionDialog() def OnCloseQuestionDialog(self): if self.questionDialog: self.questionDialog.Close() self.questionDialog = None ## Slot Event def SelectEmptySlot(self, selectedSlotPos): if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1: return selectedSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(selectedSlotPos) if mouseModule.mouseController.isAttached(): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedItemCount = mouseModule.mouseController.GetAttachedItemCount() attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex() if player.SLOT_TYPE_INVENTORY == attachedSlotType: itemCount = player.GetItemCount(attachedSlotPos) attachedCount = mouseModule.mouseController.GetAttachedItemCount() self.__SendMoveItemPacket(attachedSlotPos, selectedSlotPos, attachedCount) if item.IsRefineScroll(attachedItemIndex): self.wndItem.SetUseMode(FALSE) elif player.SLOT_TYPE_PRIVATE_SHOP == attachedSlotType: mouseModule.mouseController.RunCallBack("INVENTORY") elif player.SLOT_TYPE_SHOP == attachedSlotType: net.SendShopBuyPacket(attachedSlotPos) elif player.SLOT_TYPE_SAFEBOX == attachedSlotType: if player.ITEM_MONEY == attachedItemIndex: net.SendSafeboxWithdrawMoneyPacket(mouseModule.mouseController.GetAttachedItemCount()) snd.PlaySound("sound/ui/money.wav") else: net.SendSafeboxCheckoutPacket(attachedSlotPos, selectedSlotPos) elif player.SLOT_TYPE_MALL == attachedSlotType: net.SendMallCheckoutPacket(attachedSlotPos, selectedSlotPos) mouseModule.mouseController.DeattachObject() def SelectItemSlot(self, itemSlotIndex): if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1: return itemSlotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(itemSlotIndex) if mouseModule.mouseController.isAttached(): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedItemVID = mouseModule.mouseController.GetAttachedItemIndex() if player.SLOT_TYPE_INVENTORY == attachedSlotType: self.__DropSrcItemToDestItemInInventory(attachedItemVID, attachedSlotPos, itemSlotIndex) mouseModule.mouseController.DeattachObject() else: curCursorNum = app.GetCursor() if app.SELL == curCursorNum: self.__SellItem(itemSlotIndex) elif app.BUY == curCursorNum: chat.AppendChat(chat.CHAT_TYPE_INFO, locale.SHOP_BUY_INFO) elif app.IsPressed(app.DIK_LALT): link = player.GetItemLink(itemSlotIndex) ime.PasteString(link) elif app.IsPressed(app.DIK_LSHIFT): itemCount = player.GetItemCount(itemSlotIndex) if itemCount > 1: self.dlgPickMoney.SetTitleName(locale.PICK_ITEM_TITLE) self.dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickItem)) self.dlgPickMoney.Open(itemCount) self.dlgPickMoney.itemGlobalSlotIndex = itemSlotIndex #else: #selectedItemVNum = player.GetItemIndex(itemSlotIndex) #mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum) elif app.IsPressed(app.DIK_LCONTROL): itemIndex = player.GetItemIndex(itemSlotIndex) if TRUE == item.CanAddToQuickSlotItem(itemIndex): player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_INVENTORY, itemSlotIndex) else: chat.AppendChat(chat.CHAT_TYPE_INFO, locale.QUICKSLOT_REGISTER_DISABLE_ITEM) else: selectedItemVNum = player.GetItemIndex(itemSlotIndex) itemCount = player.GetItemCount(itemSlotIndex) mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_INVENTORY, itemSlotIndex, selectedItemVNum, itemCount) if self.__IsUsableItemToItem(selectedItemVNum, itemSlotIndex): self.wndItem.SetUseMode(TRUE) else: self.wndItem.SetUseMode(FALSE) snd.PlaySound("sound/ui/pick.wav") def __DropSrcItemToDestItemInInventory(self, srcItemVID, srcItemSlotPos, dstItemSlotPos): if srcItemSlotPos == dstItemSlotPos: return if item.IsRefineScroll(srcItemVID): self.RefineItem(srcItemSlotPos, dstItemSlotPos) self.wndItem.SetUseMode(FALSE) elif item.IsMetin(srcItemVID): self.AttachMetinToItem(srcItemSlotPos, dstItemSlotPos) elif item.IsDetachScroll(srcItemVID): self.DetachMetinFromItem(srcItemSlotPos, dstItemSlotPos) elif item.IsKey(srcItemVID): self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos) elif (player.GetItemFlags(srcItemSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE: self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos) elif item.GetUseType(srcItemVID) in self.USE_TYPE_TUPLE: self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos) else: #snd.PlaySound("sound/ui/drop.wav") ## À̵¿½ÃŲ °÷ÀÌ ÀåÂø ½½·ÔÀÏ °æ¿ì ¾ÆÀÌÅÛÀ» »ç¿ëÇؼ­ ÀåÂø ½ÃŲ´Ù - [levites] if player.IsEquipmentSlot(dstItemSlotPos): ## µé°í ÀÖ´Â ¾ÆÀÌÅÛÀÌ ÀåºñÀ϶§¸¸ if item.IsEquipmentVID(srcItemVID): self.__UseItem(srcItemSlotPos) else: self.__SendMoveItemPacket(srcItemSlotPos, dstItemSlotPos, 0) #net.SendItemMovePacket(srcItemSlotPos, dstItemSlotPos, 0) def __SellItem(self, itemSlotPos): if not player.IsEquipmentSlot(itemSlotPos): self.sellingSlotNumber = itemSlotPos itemIndex = player.GetItemIndex(itemSlotPos) itemCount = player.GetItemCount(itemSlotPos) item.SelectItem(itemIndex) itemPrice = item.GetISellItemPrice() if item.Is1GoldItem(): itemPrice = itemCount / itemPrice / 5 else: itemPrice = itemPrice * itemCount / 5 item.GetItemName(itemIndex) itemName = item.GetItemName() self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(locale.DO_YOU_SELL_ITEM(itemName, itemCount, itemPrice)) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.SellItem)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) self.questionDialog.Open() self.questionDialog.count = itemCount def RefineItem(self, scrollSlotPos, targetSlotPos): scrollIndex = player.GetItemIndex(scrollSlotPos) targetIndex = player.GetItemIndex(targetSlotPos) if player.REFINE_OK != player.CanRefine(scrollIndex, targetSlotPos): return ########################################################### self.__SendUseItemToItemPacket(scrollSlotPos, targetSlotPos) #net.SendItemUseToItemPacket(scrollSlotPos, targetSlotPos) return ########################################################### ########################################################### #net.SendRequestRefineInfoPacket(targetSlotPos) #return ########################################################### result = player.CanRefine(scrollIndex, targetSlotPos) if player.REFINE_ALREADY_MAX_SOCKET_COUNT == result: #snd.PlaySound("sound/ui/jaeryun_fail.wav") chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_MORE_SOCKET) elif player.REFINE_NEED_MORE_GOOD_SCROLL == result: #snd.PlaySound("sound/ui/jaeryun_fail.wav") chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NEED_BETTER_SCROLL) elif player.REFINE_CANT_MAKE_SOCKET_ITEM == result: #snd.PlaySound("sound/ui/jaeryun_fail.wav") chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_SOCKET_DISABLE_ITEM) elif player.REFINE_NOT_NEXT_GRADE_ITEM == result: #snd.PlaySound("sound/ui/jaeryun_fail.wav") chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_UPGRADE_DISABLE_ITEM) elif player.REFINE_CANT_REFINE_METIN_TO_EQUIPMENT == result: chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_EQUIP_ITEM) if player.REFINE_OK != result: return self.refineDialog.Open(scrollSlotPos, targetSlotPos) def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos): scrollIndex = player.GetItemIndex(scrollSlotPos) targetIndex = player.GetItemIndex(targetSlotPos) if not player.CanDetach(scrollIndex, targetSlotPos): chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_METIN_INSEPARABLE_ITEM) return self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(locale.REFINE_DO_YOU_SEPARATE_METIN) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) self.questionDialog.Open() self.questionDialog.sourcePos = scrollSlotPos self.questionDialog.targetPos = targetSlotPos def AttachMetinToItem(self, metinSlotPos, targetSlotPos): metinIndex = player.GetItemIndex(metinSlotPos) targetIndex = player.GetItemIndex(targetSlotPos) item.SelectItem(metinIndex) itemName = item.GetItemName() result = player.CanAttachMetin(metinIndex, targetSlotPos) if player.ATTACH_METIN_NOT_MATCHABLE_ITEM == result: chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_CAN_NOT_ATTACH(itemName)) if player.ATTACH_METIN_NO_MATCHABLE_SOCKET == result: chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_SOCKET(itemName)) elif player.ATTACH_METIN_NOT_EXIST_GOLD_SOCKET == result: chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_NO_GOLD_SOCKET(itemName)) elif player.ATTACH_METIN_CANT_ATTACH_TO_EQUIPMENT == result: chat.AppendChat(chat.CHAT_TYPE_INFO, locale.REFINE_FAILURE_EQUIP_ITEM) if player.ATTACH_METIN_OK != result: return self.attachMetinDialog.Open(metinSlotPos, targetSlotPos) def OverOutItem(self): self.wndItem.SetUsableItem(FALSE) if None != self.tooltipItem: self.tooltipItem.HideToolTip() def OverInItem(self, overSlotPos): overSlotPos = self.__InventoryLocalSlotPosToGlobalSlotPos(overSlotPos) self.wndItem.SetUsableItem(FALSE) if mouseModule.mouseController.isAttached(): attachedItemType = mouseModule.mouseController.GetAttachedType() if player.SLOT_TYPE_INVENTORY == attachedItemType: attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedItemVNum = mouseModule.mouseController.GetAttachedItemIndex() if self.__CanUseSrcItemToDstItem(attachedItemVNum, attachedSlotPos, overSlotPos): self.wndItem.SetUsableItem(TRUE) self.__ShowToolTip(overSlotPos) return self.__ShowToolTip(overSlotPos) def __IsUsableItemToItem(self, srcItemVNum, srcSlotPos): "´Ù¸¥ ¾ÆÀÌÅÛ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¾ÆÀÌÅÛÀΰ¡?" if item.IsRefineScroll(srcItemVNum): return TRUE elif item.IsMetin(srcItemVNum): return TRUE elif item.IsDetachScroll(srcItemVNum): return TRUE elif item.IsKey(srcItemVNum): return TRUE elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE: return TRUE else: if item.GetUseType(srcItemVNum) in self.USE_TYPE_TUPLE: return TRUE return FALSE def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos): "´ë»ó ¾ÆÀÌÅÛ¿¡ »ç¿ëÇÒ ¼ö Àִ°¡?" if srcSlotPos == dstSlotPos: return FALSE if item.IsRefineScroll(srcItemVNum): if player.REFINE_OK == player.CanRefine(srcItemVNum, dstSlotPos): return TRUE elif item.IsMetin(srcItemVNum): if player.ATTACH_METIN_OK == player.CanAttachMetin(srcItemVNum, dstSlotPos): return TRUE elif item.IsDetachScroll(srcItemVNum): if player.DETACH_METIN_OK == player.CanDetach(srcItemVNum, dstSlotPos): return TRUE elif item.IsKey(srcItemVNum): if player.CanUnlock(srcItemVNum, dstSlotPos): return TRUE elif (player.GetItemFlags(srcSlotPos) & ITEM_FLAG_APPLICABLE) == ITEM_FLAG_APPLICABLE: return TRUE else: useType=item.GetUseType(srcItemVNum) if "USE_CLEAN_SOCKET" == useType: if self.__CanCleanBrokenMetinStone(dstSlotPos): return TRUE elif "USE_CHANGE_ATTRIBUTE" == useType: if self.__CanChangeItemAttrList(dstSlotPos): return TRUE elif "USE_ADD_ATTRIBUTE" == useType: if self.__CanAddItemAttr(dstSlotPos): return TRUE elif "USE_ADD_ATTRIBUTE2" == useType: if self.__CanAddItemAttr(dstSlotPos): return TRUE elif "USE_ADD_ACCESSORY_SOCKET" == useType: if self.__CanAddAccessorySocket(dstSlotPos): return TRUE elif "USE_PUT_INTO_ACCESSORY_SOCKET" == useType: if self.__CanPutAccessorySocket(dstSlotPos, srcItemVNum): return TRUE; return FALSE def __CanCleanBrokenMetinStone(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if item.ITEM_TYPE_WEAPON != item.GetItemType(): return FALSE for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemMetinSocket(dstSlotPos, i) == constInfo.ERROR_METIN_STONE: return TRUE return FALSE def __CanChangeItemAttrList(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR): return FALSE for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemAttribute(dstSlotPos, i) != 0: return TRUE return FALSE def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if item.GetItemType() != item.ITEM_TYPE_ARMOR: return FALSE if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR): return FALSE curCount = player.GetItemMetinSocket(dstSlotPos, 0) maxCount = player.GetItemMetinSocket(dstSlotPos, 1) if mtrlVnum != constInfo.GET_ACCESSORY_MATERIAL_VNUM(dstItemVNum, item.GetItemSubType()): return FALSE if curCount>=maxCount: return FALSE return TRUE def __CanAddAccessorySocket(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if item.GetItemType() != item.ITEM_TYPE_ARMOR: return FALSE if not item.GetItemSubType() in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR): return FALSE curCount = player.GetItemMetinSocket(dstSlotPos, 0) maxCount = player.GetItemMetinSocket(dstSlotPos, 1) ACCESSORY_SOCKET_MAX_SIZE = 3 if maxCount >= ACCESSORY_SOCKET_MAX_SIZE: return FALSE return TRUE def __CanAddItemAttr(self, dstSlotPos): dstItemVNum = player.GetItemIndex(dstSlotPos) if dstItemVNum == 0: return FALSE item.SelectItem(dstItemVNum) if not item.GetItemType() in (item.ITEM_TYPE_WEAPON, item.ITEM_TYPE_ARMOR): return FALSE attrCount = 0 for i in xrange(player.METIN_SOCKET_MAX_NUM): if player.GetItemAttribute(dstSlotPos, i) != 0: attrCount += 1 if attrCount<4: return TRUE return FALSE def __ShowToolTip(self, slotIndex): if None != self.tooltipItem: self.tooltipItem.SetInventoryItem(slotIndex) def OnTop(self): if None != self.tooltipItem: self.tooltipItem.SetTop() def OnPressEscapeKey(self): self.Close() return TRUE def UseItemSlot(self, slotIndex): if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS(): return slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex) self.__UseItem(slotIndex) mouseModule.mouseController.DeattachObject() self.OverOutItem() def __UseItem(self, slotIndex): ItemVNum = player.GetItemIndex(slotIndex) item.SelectItem(ItemVNum) if item.IsFlag(item.ITEM_FLAG_CONFIRM_WHEN_USE): self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(locale.INVENTORY_REALLY_USE_ITEM) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnAccept)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.__UseItemQuestionDialog_OnCancel)) self.questionDialog.Open() self.questionDialog.slotIndex = slotIndex else: self.__SendUseItemPacket(slotIndex) #net.SendItemUsePacket(slotIndex) def __UseItemQuestionDialog_OnCancel(self): self.OnCloseQuestionDialog() def __UseItemQuestionDialog_OnAccept(self): self.__SendUseItemPacket(self.questionDialog.slotIndex) if self.questionDialog: self.questionDialog.Close() self.questionDialog = None def __SendUseItemToItemPacket(self, srcSlotPos, dstSlotPos): # °³ÀλóÁ¡ ¿­°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemUseToItemPacket(srcSlotPos, dstSlotPos) def __SendUseItemPacket(self, slotPos): # °³ÀλóÁ¡ ¿­°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, locale.USE_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemUsePacket(slotPos) def __SendMoveItemPacket(self, srcSlotPos, dstSlotPos, srcItemCount): # °³ÀλóÁ¡ ¿­°í ÀÖ´Â µ¿¾È ¾ÆÀÌÅÛ »ç¿ë ¹æÁö if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, locale.MOVE_ITEM_FAILURE_PRIVATE_SHOP) return net.SendItemMovePacket(srcSlotPos, dstSlotPos, srcItemCount)
  24. herostar34

    Familier Invoque

    Bonsoir, Au pire tu peux certainement faire la quête manuellement du style : quest pet begin state start begin when.ID_DU_SCEAU.use begin command(m IDDUPET) end end end C'est une quête d'exemple, je ne sais pas si elle fonctionne mais je pensais à ca
  25. herostar34

    Problème Lib

    Bonsoir, Placez les libs dans le dossier lib32. Amicalement.

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.