Jump to content

PACI

Developer
  • Posts

    402
  • Joined

  • Days Won

    18
  • Feedback

    0%

Everything posted by PACI

  1. for the first question, the wiki post says the potion manufacturing is available since 17 july 2007. probably a normal warrior or ninja couldn't do much against a magic class, such as sura and shaman, but at that time we didn't know how to play properly with each class right? so i guess there were some fair 1v1 matches. not forgetting that metin2 is a game that at it's early stage hadn't the pvp system implemented, but players asked for it, so it came a couple of time later. correct me if i'm wrong. regarding the soul stones, i don't really remember, and can't answer that question precisely, but i guess there were able to obtain the same way it's already known, through metin stones from level 45+. third question, at first we had only the well known horse with all it's different stages (pony, armed horse, military horse, as well as them different skins for non guild members, guild members and guild leaders). the first mounts being added in the game were those 4 you said, the normal lion, boar, wolf and tiger. they were probably added at the same time the devils catacomb was, so somewhere around 2012, although i'm not sure, so i'd say between 2011 and 2012. the dragon lair was added in 2011 and probably yes, the blue steel armors came at the same time. the last stage for metin2 before the Dark Dragons update had every single thing you said on your post. dragon lair, devil's catacomb, spider dungeon 3, blue steel armors, pets, mounts, even costumes and the energy system. the max level was 99 though.
  2. char.cpp CHARACTER::PointChange(), case POINT_EXP
  3. @Hik, on questcategory.txt. Show me your client syserr entries.
  4. @Galet, yes it does. @AlexKenT, paste your syserr here. @xHope, as I said, I didn't do the scrollbar.
  5. There you go, uiCharacter.py and characterwindow.py for you to compare with yours. characterwindow.py uicharacter.py
  6. 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!
  7. Replace the last return with: if (m_data.level > 20) // in case you've increased the maximum guild's level & still want a max of 20 members return 20; return m_data.level;
  8. Not sure, but check out the CInstanceBase::__SetAffect (UserInterface/InstanceBaseEffect.cpp) function, in the switch-case (AFFECT_YMIR), you can try something like this: if (strstr(GetNameString(), "[GA]Leonardo")) eAffect += 100; // Then at your playerSettingModule.py, use this instead: chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+100, "Bip01", EmoticonStr+"leonardo_pma.mse")
  9. Is there any way you could find the quest and post it here? There should be a select(..., table.textEntry) - or maybe it is just simple text -, so it would be easier for us to find the location.
  10. I must say, that's a completely mess over there. You should move into the binary's source, look over the InstanceBase stuff, so you can easily add more game master logos depending on the character's name.
  11. Could you tell us the problem? @VegaS, that first condition at the OnUpdate function made no sense ahah
  12. The syserr entry says it doesn't exists the key 10 in your dictionary (self.textLoadingProgressDict).
  13. Well you can look at their official sites (Lua, Python, C++). But you can actually learn just by taking a look to some other quests, or python files from the game itself. Can't say the same for C++, although you can easily get the logic just by reading a couple of code lines. As you said, you only need a bit of english knowledge to start with it, and then you just keep going, and trying different things. Your mistakes will also increase your knowledge, so go for it.
  14. I'm not sure, I don't usually use this function on my quests, however, I think it still returns the same table type even if you provide a record limit at your query.
  15. Because the returning table has as key the selected column's name. tbl = { [columnName] = {values} }
  16. The local var items is outside a when/function, never seen such a thing like that, but since you can modify the quest compiler, who knows if that actually works.
  17. You can always cythonaze your root [, uiscript] files, so even if those kiddies unpack these files, they'll get nothing from it.
  18. CHARACTER::ReqSafeboxLoad() at your char.cpp, you can comment the distance check there.
  19. If you don't want to modify your source files, you can simply try the following code at your button function: import interfaceModule self.__int = interfaceModule.Interface() self.__int.MakeInterface() self.__int.AskSafeboxPassword() Through the game source code you must create a new command at your cmd_general (you can copy and paste the do_click_mall function, however instead of ShowMeMallPassword use ShowMeSafeboxPassword.
×
×
  • 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.