Jump to content

VegaS™

Forum Moderator
  • Posts

    656
  • Joined

  • Last visited

  • Days Won

    187
  • Feedback

    100%

Everything posted by VegaS™

  1. The function PolymorphCharacter from CPolymorphUtils class is called just if you use 50322 item vnum and it's used just the type POMYMORPH_SPD_BONUS, rest of them are unused. If you want to do this change for polymorph itself with the item 70104, try to do this: Open file char_item.cpp and search for: AddAffect(AFFECT_POLYMORPH, POINT_ATT_BONUS, dwBonus, AFF_POLYMORPH, iDuration, 0, false); Replace with: (have careful when you do copy-paste of a code from code tag, if you get the error "expected a ;") - the code tag is shitty, for solve this copy the code into notepad and set the encoding to ANSI then copy to visual studio. [Hidden Content] Also you can take a look into int CHARACTER::GetPolymorphPoint(BYTE type) const, there're some calculations too, if you want to change them or remove.
  2. Check my reply again. Btw, instead of doing an array with values, you could do a simple formula for each level and play with it as you want. For default structure: value = 10 * bySkillLevel
  3. You've to do something like this: static const uint16_t POLYMORPH_BONUS_MONSTER[SKILL_MAX_LEVEL + 1] = { 0, // reserved 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, // 1-10 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, // 11-20 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, // 21-30 310, 320, 330, 340, 350, 360, 370, 380, 390, 400 // 31-40 }; pChar->AddAffect(AFFECT_POLYMORPH, POINT_ATTBONUS_MONSTER, POLYMORPH_BONUS_MONSTER[bySkillLevel], AFF_POLYMORPH, dwDuration - 1, 0, false);
  4. I don't need anything, you need to visit a psychiatrist, thanks.
  5. And you should be banned too (or not?), because of people like you these forums are going down. Do you think a 'developer' is your slave? I want to mention here for all the kids like you which have nothing related with metin2 development and don't know what this 'developer' thing means. Nobody from here is a real developer for metin2, this word means more than a tag on a forum. Developers for metin2 are just the guys which did this game and know the whole game, you can stay another 5-10 years to develop this source and you'll still don't know everything, the source is too big, hundreds of thousands of files, many languages and technologies ared used, some things are hard written and hard to read their 20 years ago structure. 'Metin2 developers', all what they've is just some knowledge in some parts of source and basic or good knowledge in specific languages (99% of them can't write an application from 0, outside of metin2, but it's fine), that's all. If they were good enough, they would at least get a job in programming (as many people have already done that), but most of them are just doing this for win some money and don't take programming as the first priority in their life, so.. i don't think they're 'developers' if they do that. Btw, for your information:
  6. Change open method with pack_open in LoadLocaleFile. (for those who've that problem)
  7. Stop using public leaked systems and everything will be fine. Nobody should help you with this.
  8. Default code for SecondToXXX: My extendable version: (I wrote that fast, so, if there's a problem with it, write me a pm, let's don't spam the topic.) [Hidden Content] Results: print sec2time(100000, "DHMS") >>> 1Days 3Hours 46Minutes 40Seconds print sec2time(10000, "HMS") >>> 2Hours 46Minutes 40Seconds print sec2time(1000, "MS") >>> 16Minutes 40Seconds print sec2time(1000, "M") >>> 16Minutes print sec2time(100, "S") >>> 40Seconds print sec2time(3600, "DHMS", True) >>> 0Days 1Hours 0Minutes 0Seconds print sec2time(3600, "DHMS") >>> 1Hours I still don't have the right time to update the module but i'll do it asap.
  9. 1. Srcs/Server/game/src/char.cpp static bool __party_can_join_by_level(LPCHARACTER leader, LPCHARACTER quest) { int level_limit = 30; return (abs(leader->GetLevel() - quest->GetLevel()) <= level_limit); } 2. root/uiExchange.py [Hidden Content]
  10. I know it's not about the C++ part in this topic, that's why i said, if you don't change anything in the structure of file there's no reason to do that (just keep the old string names), also this category is for Programming / Scripts, then should be moved to Guides & HowTo (basically i think that's the right category for posting a .txt with clean settings for dragon_soul) About code refactoring, we can do it later, if you've any questions you can send me a PM, i would like to contribute when i've time.
  11. I just talked about the terms "improved it to be readable", in my opinion readable and improved means a lot, not this: [Hidden Content] Have no sense to make comments for ymir functions which are over 15 years, i just said about the term itself, don't understand me wrong, let's skip this (maybe my terms are bad).
  12. Thanks for release, but i don't see what's the scope for change dragon_soul_table.cpp with your file. (if you didn't change anything in the structure why to change it? like: just to put ds_name instead of dragonsoulname to have shorter name?) I mean, all what you did is to remove some brackets, change variable names, declare them in one line, i don't think the term "improved to be readable" is good for 1000 lines in C++ with no documentation. If you want to be readable, you should comment all the functions with what they do and how. Tips for rewrite: //TMapApplyGroup::iterator it TMapApplyGroup::const_iterator it //CGroupTextParseTreeLoader* m_pLoader; //m_pLoader = new CGroupTextParseTreeLoader; //if (m_pLoader) //delete m_pLoader; std::shared_ptr<CGroupTextParseTreeLoader> m_pLoader; m_pLoader = std::make_shared<CGroupTextParseTreeLoader>(); bool DragonSoulTable::CheckWeightTables() { // Group WeightTables Reading. if (!m_pWeightTableNode) { sys_err ("dragon_soul_table.txt need WeightTables."); return false; } for (size_t i = 0; i < m_vecDragonSoulTypes.size(); ++i) { for (uint8_t j = 0; j < DRAGON_SOUL_GRADE_MAX; ++j) { for (uint8_t k = 0; k < DRAGON_SOUL_STEP_MAX; ++k) { for (uint8_t l = 0; l < DRAGON_SOUL_STRENGTH_MAX; ++l) { float fWeight; if (!GetWeight(m_vecDragonSoulTypes[i], j, k, l, fWeight)) { sys_err("In %s group of WeightTables, value(Grade(%s), Step(%s), Strength(%d) is invalid.", m_vecDragonSoulNames[i].c_str(), g_astGradeName[j].c_str(), g_astStepName[k].c_str(), l); return false; } } } } } return true; } Use smart pointers also you can make most of them constants Change the iterator with const_iterator Remove some else conditions with no sense Add return false inside of CheckWeightTables loops if the error has found why i should continue with iteration of 4 for loops and return true all times? ...not so much things left
  13. I don't know why people waste time for coding these things non-logical and call them "algorithm vs names fake" but it's fine, we're in 2020, everything is strange. You could do something better, stop doing anti-cheat things, you've no idea how they're working behind and even if you know something the checks are so bad and old things, maybe they was good back in 2010 in metin2, but for these times are 0. Don't take it bad, is just an advice.
  14. auto for variables specifies that the type of the variable that is being declared will be automatically deduced from its initializer, in your case, the variable type is a boolean, not char. static bool s_isInitializedCubeMaterialInformation = false; So, you should change it with bool instead of char or enable the c++11 mode when building (we're in 2020, everyone must have that). You can do that by adding -std=gnu++11 (to also get GCC extensions, which are on by default), or -std=c++11 (for only ISO C++) to your compiler flags, already there're some tutorials what other changes you've to do for achieve it.
  15. locale/xx/locale_interface.txt MINIMIZE Minimize
  16. @skizz Upload the file to mega, we're not remote magicians, the error told you what's the problem, have bad syntax, check your tabs with careful.
  17. I didn't mentioned anything about this. ? I said just you're wrong because you told me, "use this instead of adding new code in c++", and i told you that this function from module doesn't exist in source, but you edited the topic when i replied and you added a new function, it's fine. Let's chill, you take it too seriously.
  18. You're wrong, i don't know from where you copy-paste this function, this isn't by default in metin2 source. Could be done this very easily too, but here we talked about the poisoning, why i should do something general for affects, this is another subject. @xP3NG3Rx Already shared this but is implemented via CPythonPlayer, which means is just for your client instance, you've to implement it in CInstanceBase for each of player instance and will work fine or try to use IsAffect as well.
  19. You don't need server source for this, you can do it directly via source client. For being in real time you'll need to do a boolean variable inside of CInstanceBase class which is updated from RecvAffectAddPacket, RecvAffectRemovePacket for each instance. So with that you could do a function like chrmgr.IsPoisoned(self.GetTargetVID()) which will result the status of poison for specific vid and check it in OnUpdate. Btw, the implementation is very bad, if i would want to do this, i don't touch the hpGauge, just add a new gauge bar over the hpGauge and hide/show it, that's all, could be done just with few lines, without the python. [Hidden Content]
  20. @IGNEEL @martysama0134
  21. Can you f..... go away and stop spamming forum with your shits please? Nobody cares about your messages with no logic, you just searching for attention.
  22. I don't know how this 'petsystem' works, but i think the condition what he had is to check if the skill slot value isn't -1 or 0 like. You replace the condition for no reason, i think you didn't understand the boolean conditions. -1 to -2147483647 - True 1 to 2147483647 - True 0 - False 1 - True So, with your condition the loop will count the -1 skill slot value too.
  23. The idea is good, but the code is bugged and unreadable, here're the bugs: text = '1kks' ValueError: invalid literal for int() with base 10: '1000000s' text = '1kk500' 1000000500 text = '1abcd' '1abcd' If I'm the one who do this, i would do it more extendable and using a proficient way. [Hidden Content] At least, keep the copyright.
  24. Kimetsu no Yaiba ( Demon Slayer) Trailer: Ever since the death of his father, the burden of supporting the family has fallen upon Tanjirou Kamado's shoulders. Though living impoverished on a remote mountain, the Kamado family are able to enjoy a relatively peaceful and happy life. One day, Tanjirou decides to go down to the local village to make a little money selling charcoal. On his way back, night falls, forcing Tanjirou to take shelter in the house of a strange man, who warns him of the existence of flesh-eating demons that lurk in the woods at night. When he finally arrives back home the next day, he is met with a horrifying sight—his whole family has been slaughtered. Worse still, the sole survivor is his sister Nezuko, who has been turned into a bloodthirsty demon. Consumed by rage and hatred, Tanjirou swears to avenge his family and stay by his only remaining sibling. Alongside the mysterious group calling themselves the Demon Slayer Corps, Tanjirou will do whatever it takes to slay the demons and protect the remnants of his beloved sister's humanity.
×
×
  • 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.