Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 10/17/20 in all areas

  1. Images: Dungeon info: Video:
    5 points
  2. M2 Download Center Download Here ( Internal )
    1 point
  3. [Hidden Content] Download -> M2DL (Update 2023-02-03) (IPS sometimes adds invisible characters when copying and pasting with IPS Code...) 24/08/2017: Polished up other functions. Added party_get_member_count, Added party_get_member_pids, Added clear_dungeon, Added table_get_keyword_index, Added table_is_any_subarray_containing_keyword, Added table_get_subarray_keyword_index 26/08/2017: Added table_shuffle. 12/12/2017: Added open_shop (Opens a shop without needing to use 2 lines of code); 30/04/2018: Reworked table_shuffle, since it was not working properly. Added InDungeon() [bool]. Added ToDungeonIndex(map_index) [int]. 01/06/2018: Added factorial (factorial(5) returns 120); 14/11/2019: (Did you miss me?) Updated the whole list, better code and even more functions! 25/12/2021: Added is_valid_number, is_integer_number. (safe funcs you should be using on numerical inputs) table_shuffle now creates a copy of the table and works on it instead of changing the table itself. The end result is the same, but the table passed as argument remains untouched. Reworked get_time_format. Renamed IsOdd to is_odd. 25/6/2022: Added get_gold_format Added BuildSkillListOfLevel Minor fixes. 25/10/2022: Fixed IntToRomanStr typo 29/01/2023: Rewritten. Added some new stuff. Provided more examples and data for each func. 20/03/2023: Added get_random_number_within_except(range_min, range_max, except_table). 25/04/2023: Added table_get_count(table). Added is_valid_num_field(num). Added is_valid_table_field(table). Added is_valid_func_field(func). Added time_remaining_until(os.date("%H:%M")). 11/05/2023: Added color_str(color, text). Updated some global calls for the latest globals.lua update. 26/09/2023: Added num_to_char(num). Added char_to_num(string). Added string_to_ascii_array(string). Added ascii_array_to_string(table). Added skill_level_to_id(num). Added skill_id_to_level(string). Added time_to_sec(num, string). (Kept the old separated functions for backwards compatibility) Little get_time_format improvement, it's still backwards-compatible. 01/24/2024 (last update): The func 'is_valid_number' now has an "allow_zero" arg. and default values. Added 'count_digits(num)'. Added 'get_nth_digit(num, index)'. Added 'generate_num_array(limit)'. Added 'get_time_after_seconds(sec)'. Added 'mirror_shuffle(original_table, shuffled_table, target_table)' Renamed BuildSkillList to BuildSkillList2 in order to avoid conflicts with the default func from ymir.
    1 point
  4. M2 Download Center Download Here ( Internal ) [Hidden Content]
    1 point
  5. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) I have added some necessary visual stuff, although some are just visual. I don't provide basic support for implementation, If you notice that something is missing you can let me know and I will add it. GIF visual: [Hidden Content] [Hidden Content] [Hidden Content]
    1 point
  6. Metin2 Download Center 3.0.0 Archive Backup Status Operating Systems 2D Graphics Quests Maps Programming & Scripts / Systems Tools Guides & HowTo Binaries & Clients / ServerFiles 3D Models / Objects 3D Models / NPC 3D Models / Sashs 3D Models / Weapons 3D Models / Armors 3D Models / Costumes 3D Models / Monsters 3D Models / Pets 3D Models / Mounts 3D Models / Effects 3D Models / Hairstyles 3D Models / Metinstones 3D Models / Others 3D Models / Packages Others Screenshot Saving Status Operating Systems 2D Graphics Quests Maps Programming & Scripts / Systems Tools Guides & HowTo Binaries & Clients / ServerFiles 3D Models / Objects 3D Models / NPC 3D Models / Sashs 3D Models / Weapons 3D Models / Armors 3D Models / Costumes 3D Models / Monsters 3D Models / Pets 3D Models / Mounts 3D Models / Effects 3D Models / Hairstyles 3D Models / Metinstones 3D Models / Others 3D Models / Packages Others Rewrite Status Operating Systems 2D Graphics Quests Maps Programming & Scripts / Systems Tools Guides & HowTo Binaries & Clients / ServerFiles 3D Models / Objects 3D Models / NPC 3D Models / Sashs 3D Models / Weapons 3D Models / Armors 3D Models / Costumes 3D Models / Monsters 3D Models / Pets 3D Models / Mounts 3D Models / Effects 3D Models / Hairstyles 3D Models / Metinstones 3D Models / Others 3D Models / Packages Others
    1 point
  7. I need members to help us save screenshots on our hosting platform! #WeNeedYou
    1 point
  8. M2 Download Center Download Here ( Internal ) Download: [Hidden Content]
    1 point
  9. Due the loss of backup or whatever is happened, here are the last patches: GF v20.4.9 Whole client (Metin2 Download) GF v20.4.9 Metadata (Metin2 Download) GF v20.4.10 Patch (Metin2 Download)
    1 point
  10. https://martysama0134.com/Source_files the best serverfiles x)
    1 point
  11. Btw, instead of adding a .SetDelay() to all objects, you could do do a simple change. for all visual ani_image from screen. root/ui.py Search for: if True == value.has_key("delay"): window.SetDelay(value["delay"]) Replace with: [Hidden Content] So, you don't have to any part of python from tutorial, just this.
    1 point
  12. The idea isn't so bad, but the code has too many useless lines, here's what you can do to improve it. def RefreshPickupFilter(self): #Weapon if systemSetting.IsPickUpFilterWeapon(): self.PickUpFilterList[0].Down() else: self.PickUpFilterList[0].SetUp() #Armor if systemSetting.IsPickUpFilterArmor(): self.PickUpFilterList[1].Down() else: self.PickUpFilterList[1].SetUp() #Ear if systemSetting.IsPickUpFilterEar(): self.PickUpFilterList[2].Down() else: self.PickUpFilterList[2].SetUp() #Neck if systemSetting.IsPickUpFilterNeck(): self.PickUpFilterList[3].Down() else: self.PickUpFilterList[3].SetUp() #Foots if systemSetting.IsPickUpFilterFoots(): self.PickUpFilterList[4].Down() else: self.PickUpFilterList[4].SetUp() #Shield if systemSetting.IsPickUpFilterShield(): self.PickUpFilterList[5].Down() else: self.PickUpFilterList[5].SetUp() #Book if systemSetting.IsPickUpFilterBook(): self.PickUpFilterList[6].Down() else: self.PickUpFilterList[6].SetUp() #Stone if systemSetting.IsPickUpFilterStone(): self.PickUpFilterList[7].Down() else: self.PickUpFilterList[7].SetUp() #Etc if systemSetting.IsPickUpFilterEtc(): self.PickUpFilterList[8].Down() else: self.PickUpFilterList[8].SetUp() To: def RefreshPickupFilter(self): checkFilterList = ( systemSetting.IsPickUpFilterWeapon(), systemSetting.IsPickUpFilterArmor(), systemSetting.IsPickUpFilterEar(), systemSetting.IsPickUpFilterNeck(), systemSetting.IsPickUpFilterFoots(), systemSetting.IsPickUpFilterShield(), systemSetting.IsPickUpFilterBook(), systemSetting.IsPickUpFilterStone(), systemSetting.IsPickUpFilterEtc() ) for child, flag in zip(self.PickUpFilterList, checkFilterList): if flag: child.Down() else: child.SetUp() self.PickUpFilterList.append(GetObject("Pick_Up_FilterWeapon")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterArmor")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterEar")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterNeck")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterFoots")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterShield")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterBook")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterStone")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterEtc")) To: for name in ('Weapon','Armor','Ear','Neck','Foots','Shield','Book','Stone','Etc'): self.PickUpFilterList.append(GetObject("Pick_Up_Filter{}".format(name))) self.PickUpFilterList[0].SetToggleUpEvent(self.__OnClickPickupFilterButtonWeapon) # Weapon self.PickUpFilterList[0].SetToggleDownEvent(self.__OnClickPickupFilterButtonWeapon) # Weapon self.PickUpFilterList[1].SetToggleUpEvent(self.__OnClickPickupFilterButtonArmor) # Armor self.PickUpFilterList[1].SetToggleDownEvent(self.__OnClickPickupFilterButtonArmor) # Armor self.PickUpFilterList[2].SetToggleUpEvent(self.__OnClickPickupFilterButtonEar) # Ear self.PickUpFilterList[2].SetToggleDownEvent(self.__OnClickPickupFilterButtonEar) # Ear self.PickUpFilterList[3].SetToggleUpEvent(self.__OnClickPickupFilterButtonNeck) # Neck self.PickUpFilterList[3].SetToggleDownEvent(self.__OnClickPickupFilterButtonNeck) # Neck self.PickUpFilterList[4].SetToggleUpEvent(self.__OnClickPickupFilterButtonFoots) # Foots self.PickUpFilterList[4].SetToggleDownEvent(self.__OnClickPickupFilterButtonFoots) # Foots self.PickUpFilterList[5].SetToggleUpEvent(self.__OnClickPickupFilterButtonShield) # Shield self.PickUpFilterList[5].SetToggleDownEvent(self.__OnClickPickupFilterButtonShield) # Shield self.PickUpFilterList[6].SetToggleUpEvent(self.__OnClickPickupFilterButtonBook) # Books self.PickUpFilterList[6].SetToggleDownEvent(self.__OnClickPickupFilterButtonBook) # Books self.PickUpFilterList[7].SetToggleUpEvent(self.__OnClickPickupFilterButtonStone) # Stone self.PickUpFilterList[7].SetToggleDownEvent(self.__OnClickPickupFilterButtonStone) # Stone self.PickUpFilterList[8].SetToggleUpEvent(self.__OnClickPickupFilterButtonEtc) # Etc self.PickUpFilterList[8].SetToggleDownEvent(self.__OnClickPickupFilterButtonEtc) # Etc To: eventFuncList = ( self.__OnClickPickupFilterButtonWeapon, self.__OnClickPickupFilterButtonArmor, self.__OnClickPickupFilterButtonEar, self.__OnClickPickupFilterButtonNeck, self.__OnClickPickupFilterButtonFoots, self.__OnClickPickupFilterButtonShield, self.__OnClickPickupFilterButtonBook, self.__OnClickPickupFilterButtonStone, self.__OnClickPickupFilterButtonEtc ) for child, event in zip(self.PickUpFilterList, eventFuncList): child.SetToggleUpEvent(event) child.SetToggleDownEvent(event)
    1 point
  13. M2 Download Center Download Here ( Internal ) Hello guys Today i'm gonna release new design for wedding costumes. i know its not my best but i'm tried with many style but i think white design is good. i will share more soon for diffrent design for wedding and more so wait me i hope you like them :) Download: Click here if you like it just say thanks. if you found any problem just reply me. i will try to fix it. regards, Dane
    1 point
  14. Hello everyone! Many people really love my mushroom dungeon and many people asked me for next dungeons. So i've started work on next dungeon - Water dungeon! My work is on the beggining. I just finished 90% of models and effects and now i can start to make very dungeon. I will improve the dungeon with new ambience sounds and better ingame feeling. This is entry of dungeon and first floor.
    1 point
  15. You can do it using python, but it is the mapname : background.GetCurrentMapName()
    1 point
  16. M2 Download Center Download Here ( Internal ) Hi there. While cleaning out "my closet", I found this thing I developed between 2014-2015 - maybe(?) - for my, at that moment, server. Since it's now closed, and I won't use it, I'm sharing it with you guys. Note: Didn't do the scrollbar, wasn't needed for me, so yeah. Now, let's start with opening your locale_game.txt and adding these lines: QUESTCATEGORY_0 Main Quests QUESTCATEGORY_1 Sub Quests QUESTCATEGORY_2 Collect Quests QUESTCATEGORY_3 Levelup Quests QUESTCATEGORY_4 Scroll Quests QUESTCATEGORY_5 System Quests Alright, now find your characterwindow.py (uiscript?) and you can either comment Quest_Page children or simply remove them all. Moving on to your interfaceModule.py find this line self.BINARY_RecvQuest(index, name, "file", localeInfo.GetLetterImageName()) and replace it with self.wndCharacter.questCategory.RecvQuest(self.BINARY_RecvQuest, index, name) Ok, then we are at the most, let's say, difficult part of this. Open your uiCharacter.py and just as you did in your characterwindow.py, remove or simply comment any single line related to quests. You can just search for these vars: self.questShowingStartIndex self.questScrollBar self.questSlot self.questNameList self.questLastTimeList self.questLastCountList Once you did that, you just: # Find these lines self.soloEmotionSlot = self.GetChild("SoloEmotionSlot") self.dualEmotionSlot = self.GetChild("DualEmotionSlot") self.__SetEmotionSlot() # And add the following import uiQuestCategory self.questCategory = uiQuestCategory.QuestCategoryWindow(self.pageDict["QUEST"]) # Find this def OnUpdate(self): self.__UpdateQuestClock() # Replace it with def OnUpdate(self): self.questCategory.OnUpdate() And we're done with the client-side. I attached some extra elements needed (such as the main python file (uiQuestCategory.py) and some image resources). Remember to edit the path linked to these images in that file. For the server-side... Well, screw it, uploaded it too. Too lazy to write. It has only a new quest function (q.getcurrentquestname()) and a few things to add in your questlib.lua. Btw, not sure if you have it, but if not, just add this extra function in ui.Button() (ui.py - class Button). def SetTextAlignLeft(self, text, height = 4): if not self.ButtonText: textLine = TextLine() textLine.SetParent(self) textLine.SetPosition(27, self.GetHeight()/2) textLine.SetVerticalAlignCenter() textLine.SetHorizontalAlignLeft() textLine.Show() self.ButtonText = textLine #Äù½ºÆ® ¸®½ºÆ® UI¿¡ ¸ÂÃç À§Ä¡ ÀâÀ½ self.ButtonText.SetText(text) self.ButtonText.SetPosition(27, self.GetHeight()/2) self.ButtonText.SetVerticalAlignCenter() self.ButtonText.SetHorizontalAlignLeft() Forgot the source part, fml, here it is. Add it to your questlua_quest.cpp. int quest_get_current_quest_name(lua_State* L) { CQuestManager& q = CQuestManager::instance(); PC* pPC = q.GetCurrentPC(); lua_pushstring(L, pPC->GetCurrentQuestName().c_str()); return 1; } void RegisterQuestFunctionTable() { luaL_reg quest_functions[] = { { "getcurrentquestname", quest_get_current_quest_name}, { NULL, NULL } }; CQuestManager::instance().AddLuaFunctionTable("q", quest_functions); } Now, finally, have fun and bye!
    0 points
  17. Host the images of the topics (in releases category) on our image host to avoid dead image links and replace old links with new ones! So, you just have to save the existing screenshots on your computer and upload them to our image host.
    0 points
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.