Jump to content

Search the Community

Showing results for tags 'python'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • 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


There are no results to display.

There are no results to display.

Found 119 results

  1. Hello devs, I have discovered a thing that is a bit confusing for me. I don't have enough experience in client section, however I would like somebody to explain me how this things works. I'm talking here about connection between files in Root package and client binary. Let's move on to my question. Okay, let's take a function form IntroLogin.py: net.SetPhaseWindow(net.PHASE_WINDOW_LOGIN, self) I though that this function has it's definition in NetworkModule.py: def SetPhaseWindow(self, newPhaseWindow): if self.newPhaseWindow: print "Already changed to a new window, ", newPhaseWindow self.__ChangePhaseWindow() self.newPhaseWindow = newPhaseWindow if self.curPhaseWindow: print "Change when fade out." self.curtain.FadeOut(self.__ChangePhaseWindow) else: print "Current window does not exist." self.__ChangePhaseWindow() But here is a problem with arguments. Function in NetworkModule.py has two parameters, self and newPhaseWindow. So if this definition is from function in IntroLogin.py it would looks like: net.PHASE_WINDOW_LOGIN is a self argument and self (of SetPhaseWindow() function) is newPhaseWindow. I think there is not problem with second argument, but first could not be correct. So I've been looking for definition in client binary... Here we go, PythonNetworkStream.cpp: void CPythonNetworkStream::SetPhaseWindow(UINT ePhaseWnd, PyObject* poPhaseWnd) { if (ePhaseWnd >= PHASE_WINDOW_NUM) { return; } m_apoPhaseWnd[ePhaseWnd] = poPhaseWnd; } Yes, this probably could be that we are searching for, BUT! We have a bit similar function (by name) in PythonNetworkStreamModule.cpp: And we know that our function is called with net module. So could this be a definition? PyObject* netSetPhaseWindow(PyObject* poSelf, PyObject* poArgs) { int ePhaseWnd; if (!PyTuple_GetInteger(poArgs, 0, &ePhaseWnd)) return Py_BuildException(); PyObject* poPhaseWnd; if (!PyTuple_GetObject(poArgs, 1, &poPhaseWnd)) return Py_BuildException(); CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); rkNetStream.SetPhaseWindow(ePhaseWnd, poPhaseWnd); return Py_BuildNone(); } List of questions: What does net module do? Where can I find it? Can I compile it by myself? What definition is from function in IntroLogin.py? Why there are those two functions in binary? What does each of them do? Thanks for all replies, regards Chyu ^^.
  2. Python and it's struggles

    Hello developers, especially Python ones! Here am I to create a discussion about Python. I would like to hear your thoughts on this programming language. Why do you like it and why don't? Through working with M2 I spent the most time in C++, C# and LUA. Now I decided to do some stuffs in my client but I'm really disgusted with it's syntax. Why did Ymir choose this language? Are there any better scripting language alternatives? Here are a few examples that making me want to drive up a wall: no data types no semicolons import command does not distinguish python includes and my includes (like C do by "" and <>) Correct: if (ASSEMBLY and ARPA): return 1 Incorrect: if (ASSEMBLY && ARPA): return 1 Correct: JesusHere = { "WHY" : Locale.WHY, "SO" : Locale.SO, "SERIOUS" : Locale.SERIOUS, } Incorrect: JesusHere = { "WHY" : Locale.WHY, "SO" : Locale.SO, "SERIOUS" : Locale.SERIOUS, } Correct: def printme(str): "This prints a passed string into this function." print str return Incorrect: def printme(str) { "This prints a passed string into this function." print str return }
  3. Inventar sortieren

    Hello! Anyone can you send me this Sortieren system?
  4. Hi all! I followed the guide at that link about the connection between client and quest: https://metin2dev.org/board/index.php?/topic/1698-howtooldquest-client-communicationfor-any-version/ But when I press the button in game, nothing happens in the quest! If I do it only on a graphical point of view, the button reacts to the click, but it doesn't get the anti exp active. This is my code added for the quest: game.py: def OnClickBlockExp(self): event.QuestButtonClick(int(constInfo.BLOCK_EXP)) ---------------------------------------------------------------------------------------------------------------- def __ServerCommand_Build(self): serverCommandList={ "blocco_exp" : self.blocco_exp, ---------------------------------------------------------------------------------------------------------------- def blocco_exp(self,value): constInfo.BLOCK_EXP = int(value) quest: quest anti_exp begin state start begin when login begin cmdchat("blocco_exp "..q.getcurrentquestindex()) if pc.getqf("blocco_exp") == 1 then pc.setqf("exp_pc",pc.get_exp()) chat("[Blocco Esperienza] - Attivato!") elseif pc.getqf("blocco_exp") == 0 then chat("[Blocco Esperienza] - Disattivato!") end end when button or info begin if pc.getqf("blocco_exp") == 0 then pc.setqf("blocco_exp", 1) pc.setqf("exp_pc",pc.get_exp()) chat("[Blocco Esperienza] - Attivato!") elseif pc.getqf("blocco_exp") == 1 then pc.setqf("blocco_exp", 0) chat("[Blocco Esperienza] - Disattivato!") end end when kill with not npc.is_pc() begin if pc.getqf("blocco_exp") == 1 then pc.give_exp2(pc.getqf("exp_pc")-pc.get_exp()) end end end end Could someone tell me why it doesn't work please?
  5. Hello everybody! 1 ) How to DE I would like to move on my server items from the stock (warehouse) with RIGHT CLICK the mouse in my inventory . 2 ) Is it tolls. also possible to implement this reversed so that items are if you have the stock open transferred by right-clicking into the camp ? ( Which has not DE I know ) Would be great someone had ne instructions would need for changes in the source so that 1 ) and / or even including 2 ) works . Thanks!
  6. Hello, I am trying to put the name of the pet as the item title, something like in the official servers. This is the code that contains the uipetsystem.py file by default: class PetSystemMain(ui.ScriptWindow): def SetDefaultInfo(self): [...] self.petname.SetText("") [...] def SetName(self, name): if name != "": self.nutribtn.Enable() self.sviluppobtn.Enable() self.itemexp.Enable() else: self.nutribtn.Disable() self.sviluppobtn.Disable() self.itemexp.Disable() self.petname.SetText(name) uitooltip.py: This is the code that contains the uitooltip.py file by default: import uipetsystem def SetTitle(self, name): self.AppendTextLine(name, self.TITLE_COLOR) def __SetItemTitle(self, itemVnum, metinSlot, attrSlot): [...] # I added this within the definition if itemVnum >=55701 and itemVnum <= 55704: self.__SetPetItemTitle() [...] And I added two new definitions: def __SetPetName(self, name): uipetsystem.PetSystemMain().SetName(name) self.AppendTextLine(name) def __SetPetItemTitle(self): self.SetTitle(self.__SetPetName) But it is not displayed when the cursor is moved to the item. If I put a title manually, it does read it. def __SetPetItemTitle(self): self.SetTitle("HelloWorld") What am I doing wrong? Please, if someone can give me a clue or help me. Thanks in advance.
  7. python [Fix] Ghost GUI

    Hello. I was looking inside the official python files and I found a little fix for this: Let me explain a bit the problem. If you leave open the inventory/dragon soul inventory/expanded taskbar or the affected objects and then you are using quest for teleportation, the windows what you left open will be closed because of the quest and when the quest executed those windows what you left open before would be opened again, but the warp is killing this procedure and that happens what you can see in the video, the windows are there but you cannot see them. Btw you can close them with escape key. The fix is coming from webzen: Simple, just execute a .Hide() function before the Destroy function has been called on that object what is stuck on the main window after teleport and that's it. For example: interfaceModule.py -> Interface class -> Close function: if self.wndInventory: self.wndInventory.Hide()#fix self.wndInventory.Destroy() if self.wndDragonSoul: self.wndDragonSoul.Hide()#fix self.wndDragonSoul.Destroy()
  8. Anyone who can help me with this mistake would thank you. The client starts but when I leave and look at the syserr when I get this error. What's the problem? CLIENT SYSERR:: 0214 04:10:05823 :: ResourceManager::GetResourcePointer: NOT SUPPORT FILE human_m_h16_leg_mi 0214 04:10:05823 :: ResourceManager::GetResourcePointer: NOT SUPPORT FILE human_m_face05_mi 0214 04:10:05823 :: ResourceManager::GetResourcePointer: NOT SUPPORT FILE human_m_hair07_mi New problem.. 0214 04:33:37525 :: ResourceManager::GetResourcePointer: NOT SUPPORT FILE season1\npc\yejin\human_m_h16_leg_mi 0214 04:33:37525 :: ResourceManager::GetResourcePointer: NOT SUPPORT FILE season1\npc\yejin\human_m_face05_mi 0214 04:33:37525 :: ResourceManager::GetResourcePointer: NOT SUPPORT FILE season1\npc\yejin\human_m_hair07_mi
  9. python Sequence Generator

    I made a sequence generator script. You can find it in here: https://github.com/martysama0134/how-to-mt2-general/tree/master/sequence-generator This python script automatically generates the sequence table for `EterLib\NetStream.cpp` (in `s_bSequenceTable`) and `game\src\sequence.cpp` (in `gc_abSequence`). (the keys get changed every time you run the script) A sequence table is just a simple random generated array with 16x2048 bytes between 0x0 and 0xfe. Replacing the sequence table makes older/unwanted launchers unable to access the server.
  10. python Xtea Keys Generator

    Some years ago I created a (python2) script to generate xtea keys randomly, here it is: xtea-keys-generator.rar You can also find it in here: https://github.com/martysama0134/how-to-mt2-general/tree/master/xtea-keys-generator It generates the code for EterNexus, for EterPack.cpp, and also the hex string you see inside the compiled launcher.
  11. Find in locale/xx/ui/loadingwindow.py: { "name" : "FullGage", "type" : "expanded_image", "x" : 40, "y" : 25, "image" : uiScriptLocale.LOCALE_UISCRIPT_PATH + "loading/gauge_full.dds", }, Add this; { "name" : "LoadingName_Text", "type" : "text", "x" : 190, "y" : -8, "text" : "", "vertical_align" : "center", }, Add in constInfo.py; loadingname = "" Find in root/introloading.py: self.loadingGage=self.GetChild("FullGage") Add this; self.loadingName_txt=self.GetChild("LoadingName_Text") Find: def __SetProgress(self, p): Change like this; def GetChName(self, p): import constInfo text = constInfo.loadingname uzunluk = len(text) asd = uzunluk*p/100 return text[0:asd] def __SetProgress(self, p): if self.loadingGage: self.loadingGage.SetPercentage(2+98*p/100, 100) name = self.GetChName(2+98*p/100) self.loadingName_txt.SetText(name) Last one if you use the official pack introselect(unpacked 2015 & 2018 packs), use this: If you use the fake official introselect or old introselet, use this:
  12. Yo guys, here you have a script that i made to fix the annoying fact that epack32 craps out when you use for some reason uppercase extensions, this can happen with gr2's for example. Here you have a video showing how to use it properly, this is for an earlier version but you should get how it works. I'm also writing a py library that acts as manager for the query/msm/protos etc, the quality of the code is been improving since this script, stay tuned for the future. ## Author North - Fleon # Usage: python scriptname.py import os,fnmatch,shutil,re lenght = 3 # Set here the size of the extension, default 3 extension = None; class FileManager(): @staticmethod def Main(): print("\n\n#### Extension to lowercase V.01 ####\n\n") print("Renames recursively from a caps extension to lower.") print("USAGE: Place your content and script into C:\workdir") print("The script will recursively change the extension to lower.") input(">>>> Press ENTER to continue...") # In case you are using a python version that is equal or lower than 2.7 please use raw_input instead of input above. FileManager.GetExtension() FileManager.GetLogFile() FileManager.RenameFile() def GetExtension(): global extension global lenght while not extension or len(extension) > lenght: print("Tell me wich extension would you like to lower") print("/!\ The extension must not be left empty.") extension = str(input(">>>> Now type an extension: (Example: txt) \n")) return(extension) def GetLogFile(): path = os.getcwd() global extension Extension = "*." + str(extension) with open("rename_log", "w") as File_txt: for root, dirnames, filenames in os.walk(path): for gr2 in fnmatch.filter(filenames, Extension): write_txt = (os.path.join(root, gr2) +"\n") File_txt.write(write_txt) def RenameFile(): global extension with open("rename_log", "r") as file_directory: for element in file_directory: element = element[:-1] ren_element = element.replace(str.upper(extension), str.lower(extension)) os.rename(element, ren_element) print(">>>> This file has been renamed: " + element) total_elements = sum(1 for line in open('rename_log')) print("Total renamed files: {0}".format(str(total_elements))) FileManager.Main()
  13. 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
  14. I tried to put the Sash System by Lennt, but my Python doesn't work, here is the Syserr: Kind Regards .Dex
  15. EVIDENCE MEGA(TR) Dosya.co (EN) VürüsTotal [/QUOTE]
  16. https://i.imgur.com/TBOcLui.gifv uiCommon.py class ItemQuestionDialog(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.__CreateDialog() self.tooltipItem = uiToolTip.ItemToolTip() self.toolTip = uiToolTip.ToolTip() self.window_type = 0 self.count = 0 self.dropType = 0 self.dropCount = 0 self.dropNumber = 0 def __del__(self): ui.ScriptWindow.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "QuestionDialog.py") self.board = self.GetChild("board") self.textLine = self.GetChild("message") self.acceptButton = self.GetChild("accept") self.cancelButton = self.GetChild("cancel") self.titleBar = ui.TitleBar() self.titleBar.SetParent(self.board) self.titleBar.MakeTitleBar(244, "yellow") self.titleBar.SetPosition(8, 7) self.titleBar.Show() self.titleName = ui.TextLine() self.titleName.SetParent(self.titleBar) self.titleName.SetPosition(0, 4) self.titleName.SetWindowHorizontalAlignCenter() self.titleName.SetHorizontalAlignCenter() self.titleName.Show() self.slotList = [] for i in xrange(3): slot = ui.ImageBox() slot.LoadImage("d:/ymir work/ui/public/slot_base.sub") slot.SetParent(self) slot.SetWindowHorizontalAlignCenter() self.slotList.append(slot) def Open(self, vnum, slot = None, price = None): item.SelectItem(vnum) xSlotCount, ySlotCount = item.GetItemSize() try: if self.window_type == "inv": metinSlot = [player.GetItemMetinSocket(player.INVENTORY, slot, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)] elif self.window_type == "shop": metinSlot = [shop.GetItemMetinSocket(slot, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)] except: pass if vnum in (50300, 70037): self.titleName.SetText("%s %s" % (skill.GetSkillName(metinSlot[0]), item.GetItemName())) elif vnum == 70104: self.titleName.SetText("%s %s" % (nonplayer.GetMonsterName(metinSlot[0]), item.GetItemName())) else: self.titleName.SetText(item.GetItemName()) newHeight = 0 if price: newHeight = 20 itemPrice = ui.TextLine() itemPrice.SetPosition(0, 77 + 32*ySlotCount) itemPrice.SetWindowHorizontalAlignCenter() itemPrice.SetHorizontalAlignCenter() itemPrice.SetVerticalAlignCenter() itemPrice.SetParent(self.board) if str(price).isdigit(): itemPrice.SetText(localeInfo.NumberToMoneyString(price)) else: itemPrice.SetText(price) itemPrice.Show() self.itemPrice = itemPrice slotGrid = ui.SlotWindow() slotGrid.SetParent(self) slotGrid.SetPosition(-16, 62) slotGrid.SetWindowHorizontalAlignCenter() slotGrid.AppendSlot(0, 0, 0, 32*xSlotCount, 32*ySlotCount) slotGrid.AddFlag("not_pick") slotGrid.Show() self.slotGrid = slotGrid if self.count > 1 and vnum != 1: self.slotGrid.SetItemSlot(0, vnum, self.count) else: self.slotGrid.SetItemSlot(0, vnum) self.SetSize(260, 110 + 32*ySlotCount + newHeight) self.board.SetSize(260, 110 + 32*ySlotCount + newHeight) self.textLine.SetPosition(0, 44) for i in xrange(min(3, ySlotCount)): self.slotList[i].SetPosition(0, 30 + ySlotCount*32 - i*32) if vnum != 1: self.slotList[i].OnMouseOverIn = lambda arg = slot: self.OverInItem(arg) self.slotList[i].OnMouseOverOut = lambda arg = self.tooltipItem: self.OverOutItem(arg) else: self.slotList[i].OnMouseOverIn = lambda arg = localeInfo.MONETARY_UNIT0: self.OverInToolTip(arg) self.slotList[i].OnMouseOverOut = lambda: self.OverOutToolTip() self.slotList[i].Show() self.GetChild("accept").SetPosition(-40, 74 + 32*ySlotCount + newHeight) self.GetChild("cancel").SetPosition(40, 74 + 32*ySlotCount + newHeight) self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close)) self.SetCenterPosition() self.SetTop() self.Show() def SetCloseEvent(self, event): self.titleBar.SetCloseEvent(event) def SetMessage(self, text): self.textLine.SetText(text) def OverInToolTip(self, arg): self.toolTip.ClearToolTip() self.toolTip.AppendTextLine(arg, 0xffffff00) self.toolTip.Show() def OverOutToolTip(self): self.toolTip.Hide() def OverInItem(self, slot): if self.window_type == "shop": self.tooltipItem.SetShopItem(slot) elif self.window_type == "inv": self.tooltipItem.SetInventoryItem(slot) def OverOutItem(self, tooltipItem): if None != tooltipItem: self.tooltipItem.HideToolTip() self.tooltipItem.ClearToolTip() def Close(self): self.ClearDictionary() self.slotList = [] self.titleBar = None self.titleName = None self.itemPrice = None self.slotGrid = None self.toolTip = None self.tooltipItem = None self.Hide() constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0) 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 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 add imports import constInfo import skill import nonplayer This is just a class, now you just have to call it itemQuestionDialog = uiCommon.ItemQuestionDialog() itemQuestionDialog.window_type = "inv" #for inventory itemQuestionDialog.window_type = "shop" #for shops itemQuestionDialog.count = ... drop MONEY itemQuestionDialog.Open(1, "", attachedMoney) drop ITEM itemQuestionDialog.Open(itemVNum, slotNumber) buy&sell ITEM itemQuestionDialog.Open(itemVNum, slotNumber, price)
  17. Hey Guys i have a Problem. I would add new sash Item's with vnum 86001. to 86053 I can add me this Item but i dont see the model ingame i see the icon and when i equipd the item i dont see the model. when this item the vnum 85001 has can see the model. and i edit code in src client in InstanceBase.cpp and edit code in src svn in item.cpp and this in item list and this in item_proto all to 86058 like this and this is item_scale.txt
  18. open Yang limit

    Hallo Community, gibt es Moment an ein funktionierendes How to für das erhöhen für Yang? Ich habe ein paar versucht doch funktioniert hat es nicht wirklich.. Hello Community, is there a how to for changing the Limit of Yang? i tried some but it doesnt work
  19. python Metin2 Block Banword

    Open: root.eix & epk && uichat.py Find: Kod: if net.IsChatInsultIn(text): Change: Kod: if net.IsInsultIn(text): It extracts all known banwords from the file "insult.txt" in the "Locale_en" folder.
  20. [Looking] C++ & Pyhton Coder

    Lycosa2 - Behind the Worlds is looking for a: "CODER!" profile: Very good knowledge of C ++ / Python If you are interested to work for our project, feel free to contact me with a private message! Best regards Lycosa2-TEAM
  21. open Special storage

    Hello! Someone can fixed the system? Thanks!! https://www.freakgamers.org/threads/c-special-storage-metin2.12004/
  22. [MiniFix] PartyRemovePacket

    Hello, Today I'm gonna share with you a little fix from the official server. https://pastebin.com/15aqnrif
  23. System save account

    Extract root and open intrologin.py At the beginning add: import os from _winreg import * Search: self.loginExitButton = GetObject("LoginExitButton") Add: self.saveLoginButton = GetObject("SaveLoginButton") self.loadCredentialButton = GetObject("LoadCredentials") Finally at the end add: def ICDev_ECRYPT(self,data): Data = '' for l in data: Data = Data+str(int(ord(l) + 2) * 2)+' ' return Data def ICDev_DECRYPT(self,data): Data = '' data = data.split() for l in data: Data = Data+chr((int(l) / 2) - 2) return Data def __OnClickSaveLoginButton(self): id = self.idEditLine.GetText() pwd = self.pwdEditLine.GetText() if (len(id) != 0 and len(pwd) != 0): if not os.path.exists("SOFTWARE\ICDev"): key = CreateKey(HKEY_CURRENT_USER,"SOFTWARE\ICDev") SetValueEx(key, "UserID", 0, REG_SZ, self.ICDev_ECRYPT(id)) SetValueEx(key, "Passwd", 0, REG_SZ, self.ICDev_ECRYPT(pwd)) CloseKey(key) self.PopupNotifyMessage("Datele au fost salvate!",self.SetIDEditLineFocus) def __OnClickLoadInfoButton(self): try: key = OpenKey(HKEY_CURRENT_USER, "SOFTWARE\ICDev", 0, KEY_ALL_ACCESS) self.Connect(self.ICDev_DECRYPT(QueryValueEx(key, "UserID")[0]),self.ICDev_DECRYPT(QueryValueEx(key, "Passwd")[0])) except: self.PopupNotifyMessage("Nu exista nici un account salvat!",self.SetIDEditLineFocus) Extract locale_xx and open loginwindow.py Search: "text" : uiScriptLocale.LOGIN_CONNECT, }, ), }, Add: ## userDataBoard { "name" : "UserDataBoard", "type" : "thinboard", "x" : (SCREEN_WIDTH - 208) / 2, "y" : (SCREEN_HEIGHT - 355), "width" : 205, "height" : 55, "children" : ( { "name" : "SaveLoginButton", "type" : "button", "x" : 10, "y" : 0, "vertical_align" : "center", "default_image" : "d:/ymir work/ui/public/large_button_01.sub", "over_image" : "d:/ymir work/ui/public/large_button_02.sub", "down_image" : "d:/ymir work/ui/public/large_button_03.sub", "text" : uiScriptLocale.LOGIN_SAVE_BUTTON, }, { "name" : "LoadCredentials", "type" : "button", "x" : 105, "y" : 0, "vertical_align" : "center", "default_image" : "d:/ymir work/ui/public/large_button_01.sub", "over_image" : "d:/ymir work/ui/public/large_button_02.sub", "down_image" : "d:/ymir work/ui/public/large_button_03.sub", "text" : uiScriptLocale.LOGIN_LOAD_BUTTON, }, ), }, In local_interface.txt (local_xx) add: LOGIN_SAVE_BUTTON Save LOGIN_LOAD_BUTTON Load Now add in YourClient/lib: MEGA
  24. Hi, I have added a function to save user data in registry but now I realised that I haven't winreg lib. Can someone give me that compiled library or tell me how to compile it. Thanks #EDIT RESOLVED