Jump to content


  • Content count

  • Joined

  • Last visited

metin2-factory last won the day on December 5

metin2-factory had the most liked content!

Community Reputation

145 Excellent


About metin2-factory

  • Rank

Profile Information

  • Gender

Recent Profile Visitors

2,028 profile views
  1. open Programming automatec bot (client)

    The best tutorial you will find is by exploring the metin2 client source code yourself. My advice would be start from the main function in userinterface.cpp then dive in and see where it leads you. metin2 UI is coded in python that is embedded in c++. so on run time the python code is being converted into c++. so your best bet is to either be strong in c++ or python(preferably both). You can code the client directly in c++ without python although that'd be harder for beginners since python is way easier than c++ for beginners. nodeJS is a server side language, won't help you here.
  2. open Anti inject

  3. I'm interested! I need Help. I offer the following payment methods: paypal/wester Union/Paysafecard

  4. c++ check if all party members have the specified item

    @Syerldar I totally agree with you regarding the importance of code being readable, maintainable and etc. Yet, i do feel an urge to be a little pedant on such performance issues. because personally when developing systems you should always taking scalability factor into account. Right now it indeed has no impact but what if you had to iterate over 1000 or 1.000.000 or even 100.000.000 objects? metin2 is a real time action game and you always should aim for players to have the best performance possible. This case ofcours isn't included because we're iterating over a list of party members but i wrote it just as an example of why it is important to know how stuff works under the hood. and @Yiv i agree with what you said but again in my opinion using prefix incerement would always be preferable over postfix. because you always should expect for the worse. If you're using an old/crappy compiler it is not certain it will do the required optimizations. and, the best case scenerio for postfix incrementor would be to even out with prefix performance. There is a reason why the developers used prefix incerement for iterators and were very persistent and consistent about it in their entire code base.
  5. c++ check if all party members have the specified item

    @ProfDrBielefeld We're talking here about iterators increment not integers. for iterators, ++it will always have a better performance than it++. Here's a good read: https://stackoverflow.com/questions/1303899/performance-difference-between-iterator-and-iterator
  6. c++ check if all party members have the specified item

    @Distraught the reason it ran faster is most likely due to this part of his code: if (GetNearMemberCount() <= iCount) { for (; it != m_memberMap.end(); it++) { if (it->second.pCharacter && it->second.pCharacter->CountSpecifyItem(itemVnum)) it->second.pCharacter->RemoveSpecifyItem(itemVnum); } return true; } he didn't assign a starting object to iterate over in this part of the code. and therefore it doesn't execute the loop part of the code. and as consequence you get supposedly a better performance. this for loop condition will always fail.. take a look.
  7. c++ check if all party members have the specified item

    yeah you're just another child with bad attitude, i can see it by how you reply.. good night.
  8. c++ check if all party members have the specified item

    Well, unlike you and most of the other "Devs" here i actually have a degree in computer science and working in a real world programming job, i develop metin2 systems for fun. so unless you're a certified developer or have a real world programming experience you have no right to judge other code. especially because you barely understand how it works under the hood. Lennet was one of a few devs here that actually deserve credit because he understood how stuff works unlike you.
  9. c++ check if all party members have the specified item

    ??? your post does not make any sense. you should take my advices above as constructive criticism i am not trying to make fun of you. it's just common that people here replying to other posts without really understanding the code behind it, how it works under the hood.
  10. c++ check if all party members have the specified item

    @Tasho His code style is perfectly fine.your addition actually made it for the worse. it is actually recommended to use ++it instead of it++ for 2 reasons first, iterator is a container class and when you use a postfix ++ the compiler use the overloaded operator ++ method look at the code example below: Foo& Foo::operator++() // called for ++i { this->data += 1; return *this; } Foo Foo::operator++(int ignored_dummy_value) // called for i++ { Foo tmp(*this); // variable "tmp" cannot be optimized away by the compiler ++(*this); return tmp; } you can clearly see why prefix++ is better for perfomance for class objects. the postfix++ actually creates a temp object which obviously result in less performance. and second: in most of the code you'll see the iterators style is with prefix ++ operator. so it would be better to use it to match the original source style. and for next time, please, unless you have a deep knowledge of c++ and design patterns, do not call others "bad style" because right now his code performance is better than yours.
  11. Ninja texture face HD.

    Nice work, would be nice if you release HD models of the rest of the classes.
  12. [MiniFix] PartyRemovePacket

    Some details? what is it for/ what exactly it fixes?
  13. c++ [C++/Python]17.5 Element Image on target

    Thank you for showing me that, appreciate it. There are a few things i don't like with the official way of doing it, you may agree with me or not it's subjective to each own. First, they have hard-coded the element values. this means that it is very hard to maintain the code, you must be very cautions with every change you make(i made it with indexing instead so its easier to maintain). Second, Element values defined both in client and server..again, very hard to maintain because if you change something in client you need to remember to change also in server and that can lead to bugs. Third, adding new part, that means you need to add a DWORD field for the character packet( that is updated very often) DWORD weight 4 bytes for very often updates isnt really worth it. There are more reasons but i dont think its important to mention them here. I personally think it doesn't really matter much tbh.
  14. c++ [C++/Python]17.5 Element Image on target

    As i said one of the reasons i decided to do it server side is also to view if someone else wearing elemental new rings via server side code(with my update above). But again, it doesn't really matter, 1 byte addition to a packet wont do any harm.
  15. c++ [C++/Python]17.5 Element Image on target

    def OnElementImageOverIn(self): if not self.elementImageToolTip: self.elementImageToolTip = uiToolTip.ToolTip() self.elementImageToolTip.ClearToolTip() self.elementImageToolTip.AppendTextLine(ELEMENT_IMAGE_DIC[self.elementId] + " element") self.elementImageToolTip.SetToolTipPosition(self.GetLeft() - 40, self.GetTop() + 70) self.elementImageToolTip.Show() def OnElementImageOverOut(self): if self.elementImageToolTip: self.elementImageToolTip.Hide() Make sure the tabs there are correct, otherwise you will have problems. This system has been tested on different servers and it works fine so you need to figure where the issue is at your end.