Jump to content


Popular Content

Showing content with the highest reputation since 10/15/2018 in Posts

  1. 24 points
    Hello everyone. I reversed something new from the official binary what I would like to share with you. Download PS.: Let me know if you found any mistake in the guide.
  2. 17 points
    Official v18.4 patch The missing texture files are included. All locales So on. Download Br client: Download
  3. 13 points
    Hi ppl. Today is an another day, another reversed small stuff from the official game. Any problem? Feedback? Just write a comment below.
  4. 12 points
  5. 12 points
    Today I'm going to explain how to add and modify the different sounds that exist in the game. First of all we have the soundtrack; the music that is played in each map or when we choose it from the music menu. This is pretty straightforward as we just have to copy mp3 files to the bgm folder and they will be read automatically. In order to add the mp3 file as default sound on a map, you would edit locale/whatever/settings.lua and find lines looking like this add_bgm_info(125, "chasing_dragon.mp3", 0.5) Where the first value is the map index, second the filename and third the volume. Pretty straightforward. The next option the game offers us in the accoustic department is adding a sound to a motion, such as a skill or an emotion. In order to do this, we just need to find the msa file which we want to add a sound to. We will go to the folder of the mob, npc or character in question, find the motion we want through the motlist (if it's not a character), and then; create the respective folder under sound if it doesn't exist. For example, for adding a sound to the motion npc/bakchon/01.msa we would make the folder sound/npc/backchon/ and in it a text file name 01.mss with this format: ScriptType CharacterSoundInformation SoundDataCount 2 SoundData00 0.396000 "sound/monster/ice_snow_golem/drop_1.wav" SoundData01 0.000000 "sound/monster/ice_snow_golem/fall_1.wav" SoundDataCount: number of sounds SoundData00 etc is just used to list the sounds in order and finally the number represents the time, in seconds, that the sound will wait to be played once the motion starts. Of course if the time is higher than the motion duration, the sound is never going to work. The third option for adding sounds is doing it in the msa files themselves through MOTION_EVENT_TYPE_SOUND. I'm not going to comment this because it's never used by YMir and the mss methos is just easier. Finally, we can add sounds to an specific place in a map, such as water running under a bridge. To do this, we have to create a .pra file in the property folder/pack with the following information: YPRT 778119171 ambiencesoundvector "sound/ambience/water_underbridge.wav" propertyname "water_underbridge" propertytype "Ambience" maxvolumeareapercentage "0.300000" playinterval "0.000000" playintervalvariation "0.000000" playtype "LOOP" YPRT: just an identifier so the game knows its a property file (Ymir PRoperTy) The number is supposed to be the CRC of the file, but you can use whatever you want as long as it's unique. If you change this number later, the asset will disappear from the maps where you used it so be careful. ambiencesoundvector: filename of a WAV or MP3 file propertyname: just a name to identify it, can be anything. propertytype: in this case Ambience and be careful with case, it's an uppercase A at the start! maxvolumeareapercentage: which percentage (0 to 1) of the radius around the placement of the sound is played at 100% volume. I would set this to 1 for non-looping sounds as they only play once when you enter the defined area and won't play again till you leave and re-enter it. playinterval: how frequently a sound of type STEP plays playintervalvariation: random variation on the previous interval. playtype: ONCE, STEP or LOOP Once in World Editor, we can add our sounds as any other object; except we will set their Size, or the radius around the placement where it will be played, with the AreaAmbienceSize control in WE. If maxvolumeareasize is less than 1, the sound will get quieter from that % of the radius and end up being totally silent at the edge of the total radius. As I mentioned, all the sounds in the game can be either MP3 or WAV. A comment about WAV files. Most WAV files we can find on the internet will not work with Metin2 straight away. We can use MP3 instead, but we are adding unnecessary overhead to the game, so if you want to use WAV files in Metin here's how. - Download and install the free Audacity Sample Editor. https://www.audacityteam.org/download/windows/ - Open the original WAV file with it. You may need to press CTRL+A to select the whole sample. - Metin2 doesn't play stereo WAVs so if your WAV is stereo head to the Track menu and choose > Mix > Mix stereo down to mono. - Choose Resample... in the same menu and then 22050 - In the top left select "Project Rate" and change it to 22050 - Finally go to the File menu and click on Export and then WAV. Choose 16 bit PCM as format and done.
  6. 10 points
    Hi everyone. Here are some functions what I reversed from official binary about the PythonEventManager. 1.) event.SetVisibleLineCount(descIndex, iCount) - This limits the visible count of the lines in the 'textbox'. Used in battlefield and minigames. 2.) event.GetLineHeight(descIndex) - Gives back the height of the textline. Used in battlefield and minigames. 3.) event.SetYPosition(descIndex, iY) - Sets the Y position of the texts. Used for nothing yet. 4.) event.GetProcessedLineCount(descIndex) - Gives back the number of the processed text lines count. Used in battlefield and minigames. 5.) event.AllProcessEventSet(descIndex) - Instantly shows every text lines under a second. Used in battlefield and minigames. Faster than the zero delay 6.) event.GetTotalLineCount(descIndex) - Gives back the total line of the textbox. Used for new char- select and create, battlefield and minigames. If you have any problem, just write a comment below.
  7. 6 points
    I am live: https://www.youtube.com/watch?v=575cYoBZaC4 Github repository: https://github.com/FilippoLeone/metin2-python-api
  8. 6 points
    Hey, I would like to share a small function for fish event. You can find this function in uiMiniGameFishEvent.py (The uncythonized root files) too. Best Regards Ken
  9. 5 points
    I and the other servers' author are having a strange problem which crashes the game file. I solved the problem in a few days. I won't tell you how to do it because most people will try to do it. The problem is starting with accessing invalid address in the memory. It might cause lag or something else. The game file can't access m_stCurQuest (because it's invalid). The problem only happens when the quest contains select at least I have that problem. I just added a string variable in QuestState called quest_name. If quest_name is not empty, the game file will use quest_name of QuestState instead of GetCurrentQuestName(). Open "quest.h" file, search "int st;" and under; std::string quest_name; Open "questlua.cpp" file, search "qs.suspend_state = SUSPEND_STATE_SELECT; and under; qs.quest_name = GetCurrentPC() ? GetCurrentPC()->GetCurrentQuestName() : "no_quest"; Open "questlua_quest.cpp" file, search "QuestState* pQS = pPC->GetRunningQuestState();" and under; std::string stQuestName = pPC->GetCurrentQuestName(); if (pQS->quest_name.length() != 0) stQuestName = pQS->quest_name;
  10. 4 points
  11. 4 points
    Do you mean like this? Official timer_gauge.sub Probably if I solved the trouble with the subimages I'm gonna release it. Mine is working with images only at the moment like asdr.tga
  12. 3 points
    Hey guys, I am going to probably stream the creation of a python API with flask restful on the 28 Oct (next weekend) in order to fix the problem that almost every server have, a straight external mysql connection. The idea is to make something that will let you communicate from game server to website and vice versa. I am no API experienced programmer but since this will be streamed and open source (we will also go through git and gitflow in the stream) you can contribute in the stream/repo as much as you'd like. Hopefully, it will be fun to watch and interact in this whole process, looking forward to see you there. The channel where the stream is going to happen is the following: https://www.youtube.com/channel/UCpy0v3grh49cuEW0YtdoBAg Language will be english so everybody can understand and mind the fact that I am no native speaker. Please keep the chat in english. Fleon - North
  13. 3 points
    Hey guys, the stream will start around 2:00 pm UTC (DUB time) I will also send a message here when I will go live.
  14. 3 points
    "c++11" code, a little bit optimised maybe someone will be interested; void CPythonPlayer::PickCloseItemVector() { CInstanceBase * pkInstMain = NEW_GetMainActorPtr(); if (!pkInstMain) return; TPixelPosition kPPosMain; pkInstMain->NEW_GetPixelPosition(&kPPosMain); CPythonItem& rkItem = CPythonItem::Instance(); std::vector<DWORD> itemlist{ rkItem.GetCloseItemVector(pkInstMain->GetNameString(), kPPosMain)}; if (itemlist.empty()) return; for (auto &i : itemlist) SendClickItemVectorPacket(i); } std::vector<DWORD> CPythonItem::GetCloseItemVector(const std::string & myName, const TPixelPosition & c_rPixelPosition) { DWORD dwCloseItemDistance = 1000 * 1000; std::vector<DWORD> itemlist; for (auto &i : m_GroundItemInstanceMap) { TGroundItemInstance * pInstance = i.second; DWORD dwxDistance = DWORD(c_rPixelPosition.x - pInstance->v3EndPosition.x); DWORD dwyDistance = DWORD(c_rPixelPosition.y - (-pInstance->v3EndPosition.y)); DWORD dwDistance = DWORD(dwxDistance*dwxDistance + dwyDistance * dwyDistance); if (dwDistance < dwCloseItemDistance && (pInstance->stOwnership == "" || pInstance->stOwnership == myName)) { itemlist.push_back(i.first); } } return itemlist; // moving vector not explicit } void CPythonPlayer::SendClickItemVectorPacket(DWORD dwIID) { if (IsObserverMode()) return; CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance(); rkNetStream.SendItemPickUpPacket(dwIID); }
  15. 3 points
    Hi, Halloween is almost here and i've finished halloween stuff for this year. As always i release something for free, for this time the halloween broom mount. If you are interesthing on more halloween stuff, click to spoiler Download link is in description of the broom mount. Download link: http://plechito.eu/?get=cat&id=2&sub=13[/CODE]
  16. 3 points
    WTF, you show how to change bonus on a belt?
  17. 3 points
    Guys, are you developing game or circus in past three years?
  18. 2 points
  19. 2 points
    AttackProcess(); MovementProcess(); m_GraphicThingInstance.MotionProcess(IsPC()); // Hide weapon: GetCurrentMotionIndex public version of the __GetCurrentMotionIndex in gamelib\\ActorInstance.h if (m_GraphicThingInstance.GetCurrentMotionIndex() < CRaceMotionData::NAME_CLAP || m_GraphicThingInstance.GetCurrentMotionIndex() == CRaceMotionData::NAME_DIG) { if (m_GraphicThingInstance.GetPartItemID(CRaceData::PART_WEAPON) != m_adwPart[CRaceData::PART_WEAPON]) { m_GraphicThingInstance.AttachWeapon(m_adwPart[CRaceData::PART_WEAPON]); CItemData* pItemData; if (CItemManager::Instance().GetItemDataPointer(m_adwPart[CRaceData::PART_WEAPON], &pItemData)) __GetRefinedEffect(pItemData); } } else if (m_GraphicThingInstance.GetPartItemID(CRaceData::PART_WEAPON)) { m_GraphicThingInstance.AttachWeapon(0); __ClearWeaponRefineEffect(); } // EOF Hide weapon if (IsMountingHorse()) { m_kHorse.m_pkActor->HORSE_MotionProcess(FALSE); } Give a try with this, just put in the CInstanceBase::Update make it fit over there, and don't forget to make a public function for the GetCurrentMotionIndex.
  20. 2 points
    Baseball cap for ninja. The cap have red color, but I added a save PSD to the package, so you can change everything as you wish. PS: the cap would look nice with the youtube logo Download: https://mega.nz/#!mxUUjIIA!2KmmRq-XEwbmg9w1d7Q5KUI0OY8ks3X-HpGHsXIJs7E
  21. 2 points
    Huge Update Please don't forget to SHARE, LIKE and SUBSCRIBE on my YouTube channel. Every bit helps towards the completion of the project
  22. 2 points
    I do not like it... For Metin is this armor ugly.
  23. 2 points
    He wrote me privately on Skype so I will help him...
  24. 2 points
    What would I say to him, thank you? He used the bonus system of the costumes in the belts and passed it off for "new release" I've been laughing since I wrote the comment. In 2018 there are still people like this ç_ç
  25. 2 points