Search the Community

Showing results for tags 'python'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community
    • Announcements
    • Feedback
  • Metin2
    • General
    • Questions and Answers
    • Guides & HowTo
    • Design
    • Private Servers
    • Services
    • Videos
  • Releases
    • General
    • Tools
    • Programming / Scripts
    • Quests
    • Binaries & Clients/Serverfiles
    • 3D Models
    • 2D Graphics
    • Operating Systems
  • Safe Zone
    • Offtopic
    • Games Talk
    • Music/Videos/Art
  • D:\YMIR WORK\'s Topics

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Discord


Skype


ICQ


Yahoo


Location

Found 155 results

  1. Someone wondered if I could do this script for him, i don't know the reason (maybe 4 find and extract some things), enjoy. Full repository: https://github.com/Vegas007/Metin2-Unknown-Tool #! /usr/bin/env python ''' MIT License Copyright (c) 2018 VegaS LINK PREVIEW : http://i.epvpimg.com/2gvyeab.png http://i.epvpimg.com/i0XIdab.png http://i.epvpimg.com/hKK8cab.png Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' __author__ = "VegaS" __date__ = "2018-11-30" __consignee__ = '#Mithras' __version__ = "0.1.6" import os import sys import re import time import shutil import operator import string import functools from datetime import datetime as dt ''' How-To-use: cd ../main.py location_file_name.msm ''' class ReadMSM_SourceSkin: BACKUP_FOLDER_NAME = 'backup' OUTPUT_FILE_NAME = 'result.txt' PATTERN_STRING_WHITESPACE = string.whitespace[1] GROUP_MEMBER_MAX_NUM = 5 PATH_STRING_NAME = 'PathName' SOURCE_SKIN_STRING_NAME = 'SourceSkin' SPECIAL_PATH_STRING_NAME = 'SpecialPath' def __init__(self): self.outputList = [] # Contains the command-line arguments passed to the script. self.srcReadFileName = sys.argv[1] def __GetDateTime(self): return dt.now().strftime('%d-%m-%Y %H-%M-%S_{file_name}').format(file_name = self.srcReadFileName) # Return a string representing the date, controlled by an explicit format string. def __GetDirectoryName(self): return os.path.dirname('{:s}/{:s}/{:s}'.format(os.getcwd(), self.BACKUP_FOLDER_NAME, self.OUTPUT_FILE_NAME)) # Return the directory name of pathname path. def __FindStringByPattern(self, string, pattern='''(?<=")\s*[^']+?\s*(?=")'''): # A regular expression (or RE) specifies a set of strings that matches it; the functions in this module let you check if a particular string # matches a given regular expression (or if a given regular expression matches a particular string, which comes down to the same thing). strResult = re.search(pattern, string) if strResult: return strResult.group().strip().lower() return str() def __FindStringByLine(self, lines, string, pattern=r'(^|[^\w]){}([^\w]|$)', msmGroupDict={}): tokens = [] for index, value in enumerate(lines): value = functools.reduce(lambda k, v: k.replace(v, '\0'), self.PATTERN_STRING_WHITESPACE, value) # Recompile the lines and search by unique strings. if bool(re.search(re.compile(pattern.format(string), re.IGNORECASE), value)): if string is self.PATH_STRING_NAME: return value elif string is self.SOURCE_SKIN_STRING_NAME: strExceptLine = lines.__getitem__(operator.isub(index, self.GROUP_MEMBER_MAX_NUM - 2)).strip(self.PATTERN_STRING_WHITESPACE) tokens.append((value, strExceptLine if self.SPECIAL_PATH_STRING_NAME in strExceptLine else None)) return tuple(tokens) def __OnResult(self): textLineTuple = ( '[*] Filename: {:s}\n'.format(self.srcReadFileName), '[*] {:s} count: [{:d}]'.format(self.SOURCE_SKIN_STRING_NAME, len(self.outputList)) ) if self.outputList: if os.path.exists(self.OUTPUT_FILE_NAME): # Recursive directory creation function. Like mkdir(), but makes all intermediate-level directories needed to contain the leaf directory. if not os.path.exists(self.BACKUP_FOLDER_NAME): os.makedirs(self.BACKUP_FOLDER_NAME) # Recursively move a file or directory (src) to another location (dst). destFileName = '{:s}/{:s}'.format(self.__GetDirectoryName(), self.__GetDateTime()) shutil.move('{:s}/{:s}'.format(os.getcwd(), self.OUTPUT_FILE_NAME), destFileName) textLineTuple += tuple('\n[*] Generated a backup for old {:s} in {:s}.'.format(self.OUTPUT_FILE_NAME, destFileName)) with open(self.OUTPUT_FILE_NAME, 'a+') as fp: fp.write(self.PATTERN_STRING_WHITESPACE.join(self.outputList)) # Returns a string in which the string elements of sequence have been joined by str separator. print functools.reduce(lambda k, v: operator.iadd(k, v), textLineTuple) # Same as join method. def Initialize(self): try: lines = open(self.srcReadFileName, "r").readlines() except IOError: print ("Can't load file: {:s}".format(self.srcReadFileName)) return for sourceSkin, specialPath in self.__FindStringByLine(lines, self.SOURCE_SKIN_STRING_NAME): strPathName = self.__FindStringByPattern(self.__FindStringByLine(lines, self.PATH_STRING_NAME)) strSourceSkin = self.__FindStringByPattern(sourceSkin) if specialPath: strPathName = self.__FindStringByPattern(specialPath) self.outputList.append(operator.iadd(strPathName, strSourceSkin)) self.__OnResult() Instance = ReadMSM_SourceSkin() Instance.Initialize()
  2. Hello, im looking for someone who can 1.fix country and empire flag by Vegas 2.pvp icons  3.AUCTION HOUSE *if item time expired item going to mailbox if item boughted item going to mailbox if item canceled item going to mailbox...... for more informations msg me Thanks
  3. How can I get a character's PID from their VID in python? (uiTarget)
  4. FreeWar_official

    [SYSTEM] Controller Mode

    Premise:The system in question is integrated into the client through the use of existing libraries! it was enough to enable it through some modifications of the source and to define the various commands, make the installation very simple and intuitive I assure you! What can i do?It is expected that by the end of the realization of this system you can fully use the client "PG, game windows and maybe even chat", at the moment you can use the PG. Have you a release date?At the moment no, the work still requires the care of many details.Have a video about this system?This V 0.1 Alpha "DirectInput" This V 0.2 Alpha "XInput" This V 0.3 Alpha "New Functions" FEATURES: * Migration to XInput and abandonment of DirectInput support * Adding vibration vibration & low life "PS and Xbox Controller" * QuickSlot that can be recalled by pressing the O (PSX) or B (X360) button * Defined DeadZone "Analog" * Added Settings window "Under construction" * Added virtual keyboard to write in chat and more; * Added character selection via controller; * Addition of Auto-Select NPC / MOB / PG and with the pressure of X (PS) A (XBOX) its relative function; * Added quest and selection navigation; System out now! Contact me! WebSite
  5. Metin2 Color Formatter A simple class which convert the values into a string by a specific color name. Python Color Constants Module: https://www.webucator.com/blog/2015/03/python-color-constants-module/ https://www.color-hex.com/color/ccffff Ex-How-To-Use: text = CFF.format('Metin2', 'green') text = CFF.format(8000, 'banana') text = CFF.format(412.55, 'red') text = CFF.format('Pending', '#113355') text = CFF.format('Item name:', 'springgreen', CFF.FLAG_NEW_TAB) + CFF.format(item.GetItemName(), 'chocolate') text = CFF.multi_format(('a', 'b', 'c'), 'red') # text[0], text[1], text[2] Github repository: https://github.com/Vegas007/Metin2-Colour-Formatter
  6. Abel(Tiger)

    python [Py] Root 02.02.2018

    I think they forgot to cythonize =)) I don't recommend to use that code, is ugly ... https://mega.nz/#!Ixl0nLZa!61VOx87EA9zBUiNAHD-poUZnaIx3VZr6RVgqUT3LZu4
  7. MrMuniez

    open [Python]Auto Trade

    Hi. I want create simple python script to autotrade withother character. On this moment i finding player with nickname and starting trade. But i cant add all items to trade window. Heres my simple code: import ui,app,chat,chr,net,player,item,skill,time,game,shop,chrmgr,thread,event,exchange SWITCH_RARE_VNUM = 30270 start = 0 end = 2000000 SzamVID = 0 exslot = 0 for vid in range(start, end): if chr.GetInstanceType(vid) != 6: continue if chr.GetNameByVID(vid) == "DajSeNaLuz": SzamVID = vid break net.SendExchangeStartPacket(SzamVID) for i in range(0,90*2): if player.GetItemIndex(i) == SWITCH_RARE_VNUM: chat.AppendChat(chat.CHAT_TYPE_INFO, "Odłamek znaleziony") net.SendExchangeItemAddPacket(i, exslot) exslot += 1 net.SendExchangeAcceptPacket() I think problem is that i dont understant how to use net.SendExchangeItemAddPacket function. Somebody can explain what is wrong here?
  8. Hello, today I will give you this login interface, which is very similar to WoM2. It's coded by me, good luck Original interface(WoM2): My interface: Photo1: Photo2: Download: 1. https://1drv.ms/u/s!AhOzstvwiFbCa_hZFTG57aD_mTU 2. https://www111.zippyshare.com/v/rIWjrge8/file.html btw: configuration in root/intrologin.py: SERVER_IP = "192.168.1.5" CH1_PORT = 21000 CH2_PORT = 22000 CH3_PORT = 23000 CH4_PORT = 24000 PORT_AUTH = 31009 NUME_SERVER = "Andy"
  9. alexghinet

    open Transport Box (Pet)

    Any Idea about this bug? is taking down bonuses from new_pet_sistem table from mysql #New_PetSistem.cpp - https://pastebin.com/Y4iiHSHF #New_PetSistem.h https://pastebin.com/J1YJt1en #Char_Item (newpetpart) https://pastebin.com/fCDUXmgX
  10. masodikbela

    [PyLUA++]Tradehouse

    Hi there Devs, I would like to share my "little" system. If you aren't interested in the introduction/preview etc. and you just want to download it and put in to your server, just scroll down until the "[How-To] Set up" subtitle. The story Firstly let me tell this system's story. I've got an idea one year before, that it would be good if the players would be able to put their items into a "global" system where they could see the other player's items, and they could buy it for DC or gold (that time I worked with the latest vanilla core (not with the source)). Then in the following 8 days I made it (it took about 80-90 working hours). Originally the system was created for one of my friend's server. but this server has never started, and nobody used this system. After some mounts I've decided to publish it on the Hungarian forum, because it won't worth to work on it for long hours if nobody uses it and its just collecting dust on my computer. Then I've published it on the 2nd of December, 2014. After some time I've decided to translate it into English and I've got a new idea for a new feature. This feature was: the trade system (I will explain its working later). This idea inspired by one of the players (from a server where this system was able to use). He told me that it would be better if they could set the gold price via an item (what's value is very high). Then with more than 180 working hours (totally) behind my back I'm here. Overview [How-To] Set up Customizing the tradehouse Questions and Answers Notes changelog: 19th of August, 2015: I publicated the tradehouse here. my toDo list: add logging for the system (the released version don't log the actions in the tradehouse) Thanks for reading the topic, if you have any problem/remark feel free to ask it here or write me a PM. Have a good day!
  11. You have the option of trying on items to see how they are, even though you do not have them. How To: 1. unpack root 2.open open uitooltip.py 2. search for "def AddItemData" 3. add this above ## Noa ItemPreview def CanEquipPreview(self): race = player.GetRace() job = chr.RaceToJob(race) if not self.ANTI_FLAG_DICT.has_key(job): return FALSE if item.IsAntiFlag(self.ANTI_FLAG_DICT[job]): return FALSE sex = chr.RaceToSex(race) MALE = 1 FEMALE = 0 if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE) and sex == MALE: return FALSE if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE) and sex == FEMALE: return FALSE return TRUE def AddItemPreview(self, itemVnum): item.SelectItem(itemVnum) itemType = item.GetItemType() itemSubType = item.GetItemSubType() if itemType == item.ITEM_TYPE_WEAPON or item.ITEM_TYPE_ARMOR == itemType and itemSubType in [0]: ROOT_PATH = "d:/ymir work/ui/game/windows/" PreviewBtn = ui.Button() PreviewBtn.SetParent(self) PreviewBtn.SetUpVisual(ROOT_PATH+"btn_plus_up.sub") PreviewBtn.SetOverVisual(ROOT_PATH+"btn_plus_over.sub") PreviewBtn.SetDownVisual(ROOT_PATH+"btn_plus_down.sub") PreviewBtn.SetToolTipText("Anprobieren") PreviewBtn.SetPosition(2,2) PreviewBtn.Show() PreviewBtn.SetEvent(self.EquipPreview, itemType, itemVnum) self.childrenList.append(PreviewBtn) def EquipPreview(self, itemType,itemVnum): if itemType == 1: chr.SetWeapon(itemVnum) if 2 == itemType: chr.SetArmor(itemVnum) player.SetSingleDIKKeyState(app.DIK_UP, TRUE) player.SetSingleDIKKeyState(app.DIK_UP, FALSE) 4.Edit def AddItemData(self, itemVnum, metinSlot, attrSlot = 0): to def AddItemData(self, itemVnum, metinSlot, attrSlot = 0, hyper = None): 5.Search def AddItemData(self, itemVnum, metinSlot, attrSlot = 0, hyper = None): add this above ### Noa ItemPreview if hyper and self.CanEquipPreview(): self.AddItemPreview(itemVnum) 6.Search this ItemToolTip.OnUpdate(self) and add this above ## Noa self.AddItemData(itemVnum, metinSlot, attrSlot, hyper = 1) Have fun with this shit
  12. Hello devs. Here is my fix of lua color string. Look at screens. Here is the problem: And here is fixed screen: How to fix? Open uitip.py and find self.__AppendText(curTime, text) (must by Class TipBoard, not BigBoard) Repleace to: After go to last line of Class TipBoard and paste: Its all. Nothing hard. Fix by Blend.
  13. Hi everyone, I'am currently try to change taskbar button position. The problem is when i change button coordinates (x, y) from taskbar.py file, i cant click the button. This is the original position of taskbar button. When i change position of taskbar button, i cant click with mouse. It doesn't work anymore. This is my taskbar.py file. I changed X and Y coordinates { "name" : "button_horse", "type" : "button", "x" : SCREEN_WIDTH - 900, "y" : -40 + Y_ADD_POSITION, "tooltip_text" : "Ge�it Portal�", "default_image" : "icon/item/71158.tga", "over_image" : "icon/item/71158.tga", "down_image" : "icon/item/71158.tga", }, my uitaskbar.py file BUTTON_CHARACTER = 0 BUTTON_INVENTORY = 1 BUTTON_MESSENGER = 2 BUTTON_SYSTEM = 3 BUTTON_CHAT = 4 BUTTON_HORSEQUICK = 5 toggleButtonDict = {} toggleButtonDict[TaskBar.BUTTON_CHARACTER] = self.GetChild("CharacterButton") toggleButtonDict[TaskBar.BUTTON_INVENTORY] = self.GetChild("InventoryButton") toggleButtonDict[TaskBar.BUTTON_MESSENGER] = self.GetChild("MessengerButton") toggleButtonDict[TaskBar.BUTTON_SYSTEM] = self.GetChild("SystemButton") toggleButtonDict[TaskBar.BUTTON_HORSEQUICK] = self.GetChild("button_horse") interfacemodule.py wndTaskBar = uiTaskBar.TaskBar() wndTaskBar.LoadWindow() self.wndTaskBar = wndTaskBar self.wndTaskBar.SetToggleButtonEvent(uiTaskBar.TaskBar.BUTTON_HORSEQUICK, ui.__mem_func__(self.horse_button)) def horse_button(self): import constInfo qid = constInfo.LOAD_QUEST_HORSE_BUTTON event.QuestButtonClick(qid) Can anyone help me where i am doing mistake? Why i cant click the button when i change button coordinates top of the task bar? Thanks.
  14. Hello, i maked a simple script for get initial lang... the proposite is automate the choice of the languaje (for servers internationals). Unknown if there will be something similar Source: import requests class CurrentPositionForLang: # Code langs __LANGS_AVAILABLES = ("ES", "EN", "FR", "TR",) # County with lang __COUNTRY_CODES_WITH_LANG = ( ("MX", __LANGS_AVAILABLES[0]), ("US", __LANGS_AVAILABLES[1]), ("FR", __LANGS_AVAILABLES[2]), ("ES", __LANGS_AVAILABLES[0]), ("TR", __LANGS_AVAILABLES[3]) ) @staticmethod def get_lang(): lang = "US" # Default lang for errors try: r = requests.get("http://ip-api.com/json/") if r.status_code != 200: return lang countryCode = r.json()["countryCode"] for country, langCountry in CurrentPositionForLang.__COUNTRY_CODES_WITH_LANG: if countryCode == country: return langCountry # If not finded return default return lang except requests.exceptions.ConnectionError: return lang For utilicy this class only call this method: CurrentPositionForLang.get_lang() this return only String "US, ES..." If you need add more langs, in this fields add the country and the code. __LANGS_AVAILABLES = ("ES", "EN", "FR", "TR",) # County with lang __COUNTRY_CODES_WITH_LANG = ( ("MX", __LANGS_AVAILABLES[0]), ("US", __LANGS_AVAILABLES[1]), ("FR", __LANGS_AVAILABLES[2]), ("ES", __LANGS_AVAILABLES[0]), ("TR", __LANGS_AVAILABLES[3]) ) This is the standar for code countrys: https://www.ncbi.nlm.nih.gov/books/NBK7249/ current_position.py
  15. Metin2 Web Page (Mt2Web.py) + Admin Panel + deploy with Docker. Today I bring this post the page that I have been working on, and use in my servers for production. This page is made in python and the code is available in github, this to be able to track and have a centralized way to get the update of it. In addition to this this page has a Dockerfile to deploy it and so people who have no knowledge in installing servers can make use of it easily. Features: paymentwall for donations. account activation email google captcha to give security to the forms password recovery by mail administration panel ORM to analyze the different types of databases. Top of players by crontab. -> Available from the dockerfile multi language, currently only has English and Spanish implemented Advantage: Easy installation, you just have to configure a file. Easy administration Page with security implemented Open Source, has an MIT license and because of this anyone can send improvements to the page through pull request on github It can be deployed in any unix operating system including FreeBSD thanks to the Dockerized page. Disadvantages If it is going to be mounted separately it requires a VPS of minimum 512 Megabytes of ram to be able to deploy it. At the moment it only has one appearance, the new skin for this website is in development. Download links only available from github. Deploy Links https://hub.docker.com/r/luisito666/mt2web https://github.com/luisito666/Mt2Web.py-docker Web Page https://github.com/luisito666/Mt2Web.py How To deploy. You can run the Mt2Web.py project after cloning it and being inside the directory where all the source code is. docker run -d -p 80:80 --name mt2web -v $PWD:/var/www/html/Mt2Web.py/ luisito666/mt2web With this we finalize the process of deployment of the application. Execute migrations To execute the migrations we first enter the container and execute this command. python3 manage.py migrate Execute commands inside of Docker docker exec -it mt2web bash Some screnshots
  16. Hello devs. I don't want to talk a lot about nothing, but I have to say what is this. With this little modification the party and the friend requests are cancelled automatically in seconds what you can change in the Open method. ( pyObj.Open(sec) ) Preview video: Make a backup before you are implementing it! And if you found a bug, please explain it. 0.) Open your uiCommon.py file and import chat module. 1.) Replace the whole QuestionDialogWithTimeLimit class in the uiCommon.py file with this: class QuestionDialogWithTimeLimit(QuestionDialog2): def __init__(self): ui.ScriptWindow.__init__(self) self.__CreateDialog() self.endTime = 0 self.timeOverMsg = 0 self.timeOverEvent = None self.timeOverEventArgs = None def __del__(self): QuestionDialog2.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog2.py") self.board = self.GetChild("board") self.textLine1 = self.GetChild("message1") self.textLine2 = self.GetChild("message2") self.acceptButton = self.GetChild("accept") self.cancelButton = self.GetChild("cancel") def Open(self, timeout): self.SetCenterPosition() self.SetTop() self.Show() self.endTime = app.GetTime() + timeout def SetTimeOverEvent(self, event, *args): self.timeOverEvent = event self.timeOverEventArgs = args def SetTimeOverMsg(self, msg): self.timeOverMsg = msg def OnTimeOver(self): if self.timeOverEvent: apply(self.timeOverEvent, self.timeOverEventArgs) if self.timeOverMsg: chat.AppendChat(chat.CHAT_TYPE_INFO, self.timeOverMsg) def OnUpdate(self): leftTime = max(0, self.endTime - app.GetTime()) self.SetText2(localeInfo.UI_LEFT_TIME % (leftTime)) if leftTime <= 0: self.OnTimeOver() 2.) Open your game.py file and replace each of these three methods to these: def OnMessengerAddFriendQuestion(self, name): messengerAddFriendQuestion = uiCommon.QuestionDialogWithTimeLimit() messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND % (name)) messengerAddFriendQuestion.SetTimeOverMsg(localeInfo.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER) messengerAddFriendQuestion.SetTimeOverEvent(self.OnDenyAddFriend) messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend)) messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend)) messengerAddFriendQuestion.Open(10) messengerAddFriendQuestion.name = name self.messengerAddFriendQuestion = messengerAddFriendQuestion def RecvPartyInviteQuestion(self, leaderVID, leaderName): partyInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit() partyInviteQuestionDialog.SetText1(leaderName + localeInfo.PARTY_DO_YOU_JOIN) partyInviteQuestionDialog.SetTimeOverMsg(localeInfo.PARTY_ANSWER_TIMEOVER) partyInviteQuestionDialog.SetTimeOverEvent(self.AnswerPartyInvite, False) partyInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.Open(10) partyInviteQuestionDialog.partyLeaderVID = leaderVID self.partyInviteQuestionDialog = partyInviteQuestionDialog def BINARY_OnQuestConfirm(self, msg, timeout, pid): confirmDialog = uiCommon.QuestionDialogWithTimeLimit() confirmDialog.SetText1(msg) confirmDialog.Open(timeout) confirmDialog.SetAcceptEvent(lambda answer=True, pid=pid: m2net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide()) confirmDialog.SetCancelEvent(lambda answer=False, pid=pid: m2net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide()) self.confirmDialog = confirmDialog 3.) Open your locale/xy/locale_game.txt and add these if these aren't exists: MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER Friend request was cancelled. PARTY_ANSWER_TIMEOVER Party invite was cancelled. Remove MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_2 line and change MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_1 with this: MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND %s added you as a friend, accept? At last take a look at your files and correct the net module calls and the True-False syntax. net <--> m2net, True <--> TRUE
  17. Hi there everyone, I'd like to share a small function which will give you a random name whilst creating a new character. This will only include the function and a list of names, so you will have to set the event on your own. Preview: The function which will most likely be put in introCreate.py import os import app #import the above lines if you don't have them already def __randomizeName(self): dir = os.path.dirname(os.path.abspath("introCreate.py")) list = open("%s\\names.list" % dir, "r").read().split("\n") rng = app.GetRandom(0, len(list)-1) randomName = list[rng] self.heroName.SetText("%s" % randomName) ## change variable 'heroName' with your editline's name Also place the attached file to this thread in the main directory of the client. (i.e: where the launcher is) names.list contains 150 names, if you ever need more names let me know so I can up the number or you can add more yourself, but do note you need to put each name as a new line so you won't mess up the function. That's all for now, hope you all have a great day! Cheers. names.list
  18. Hi devs, I'd like to share a script I developed the other night whilst working on a project, this script is meant to improve the quality of life of Metin2 as often players find it hard to accurately tell the cooldown of skills and end up spamming their keyboards like many of us have. Preview: Without any further ado, let's dig right into coding this bad boy. We start with locale: Now we shall move onto root part: version 1.0 version 2.0 If you encounter any bugs or you have suggestions please let me know! Changes:
  19. Hello devs, I found this tutorial today and I found it pretty interesting, so I tried to follow it. I am wasting over 6 hours over a so small patch I cannot believe it. The topic is this: I did everything right only to find myself stuck at the python part. My syserr hits on this exact line: networkModule.SetSelectCharacterPhase - <type 'exceptions.SyntaxError'>:invalid syntax (uiChat.py, line 1059) and it makes me mad because I can't find anything wrong! Tabulations are correct, so as source functions and so as python code. I do not understand what is so wrong with self.btnAll.Down() anw... My complete uiChat.py is this: Please let me know if you have any ideas I really appreciate that
  20. Hello everyone. It's a good day to share an old code with you. First of all you need to know: I don't help to install it. Don't even take the contact with me about it. The whole code is written by me, and reversed from official binaries. At the beginning do a backup for your files(srcs+pys) and READ CAREFULLY the readme. W/o brain.exe please close this tab, or your browser, thank you for your understanding. Preview: Download.exe Enjoy & #h4v3fun, pngr
  21. root/uiRefine.py root/constInfo.py Another idea: (you don't have to use this, is just a example, can add in tooltip where you can drop items which you need, you can add a listbox+scrollbar and send drops from server and cache it in dictionary.)
  22. about: Random video with bug : https://youtu.be/zILVyU0YGHU?t=7479 look at the highlight effect of WP sura skills (taskbar) Problem: RefreshQuickSlot spam "ActivateSlot" find: self.selectSkillButtonList = [] under add: self.Jeaktivni = [] find: self.curSkillButton = 0 under add: self.Jeaktivni = 0 find: if constInfo.IS_AUTO_POTION(itemIndex): # metinSocket - [0] : 활성화 여부, [1] : 사용한 양, [2] : 최대 용량 metinSocket = [player.GetItemMetinSocket(window, Position, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)] if 0 != int(metinSocket[0]): slot.ActivateSlot(slotNumber) else: slot.DeactivateSlot(slotNumber) edit to: if constInfo.IS_AUTO_POTION(itemIndex): # metinSocket - [0] : 활성화 여부, [1] : 사용한 양, [2] : 최대 용량 metinSocket = [player.GetItemMetinSocket(window, Position, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)] if 0 != int(metinSocket[0]): if not slotNumber in self.Jeaktivni: slot.ActivateSlot(slotNumber) self.Jeaktivni.append(slotNumber) else: slot.DeactivateSlot(slotNumber) if slotNumber in self.Jeaktivni: self.Jeaktivni.remove(slotNumber) else: if slotNumber in self.Jeaktivni: self.Jeaktivni.remove(slotNumber) find: if player.IsSkillActive(Position): slot.ActivateSlot(slotNumber) edit to: if player.IsSkillActive(Position): if not slotNumber in self.Jeaktivni: slot.ActivateSlot(slotNumber) self.Jeaktivni.append(slotNumber) else: if slotNumber in self.Jeaktivni: slot.DeactivateSlot(slotNumber) self.Jeaktivni.remove(slotNumber)
  23. Hi fellas, Here are the official version of these classes: CMoveTextLine - Used in Yutnori CMoveImageBox - Used in MonsterCard, Rumi and CatchKing CMoveScaleImageBox - Used in Yutnori I already reversed them months ago except the CMoveScaleImageBox but yesterday I finished them coz they had a little problem, but now seems working well. What you must know, this release isn't stable, I just reversed them, and tested with the scripts what you will see, so I couldn't stress them, they may have problems. And I don't recommend to use the SetScalePivotCenter function, I don't know why but works a bit strange than the official, it needs something more during the texture load in. Video of them: PS: If I missed something just write a comment below.
  24. Auto refine option when you upgrade the item with SCROLL or on NPC. I did all checks like example : When you have just one scroll in inventory, refine window will be close. When the item is already maximum upgrade. (+8 to +9 just in case will be succes) and more .. Preview: https://gyazo.com/63959d63b9acc7d4337e16de061ea747 Download : https://mega.nz/#!SZpDWBKB!EbBTPAThBjFZBuFCdvttRz5Yia4oYrAj5m4r0pNFe6U