Beiträge von VegaS

    Bitte melden Sie sich an, um diesen Link zu sehen.



    Good news for p-servers and owners!
    In the last years, over one hundred people asked me if they can hire me to be their developer and I refused them because I was really busy, mostly with my university, full-time job, and other activities.
    Now, after over 10 years of activity in metin2 and over 4 years in companies as a Software Developer and recently advanced to Senior, I managed to organize my time and tasks really efficiently, and I'm pleased to announce that:


    Since today, I'll give the chance to owners to hire me!


    My defining characteristics:

    • Mainly focused on Python and C/C++ with years of real experience, but I can code in multiple languages.
    • Excellent communication skills and a good understanding of problems and requirements, with the ability to work as part of a diverse team.
    • Ability to manage and plan in a fast-paced, team-focused environment, ability to manage time effectively and prioritize tasks.
    • Flexible and resilient when it comes to stressful situations.
    • Detail-oriented, organized, meticulous, and able to work at a fact-pace with tight deadlines.
    • More information related to my educational and professional experience, Bitte melden Sie sich an, um diesen Link zu sehen..

    You must have (a few steps can be done together later):

    • good english skills for communicating with voice and text
    • an application for project management like Trello, Jira, Azure DevOps, YouTrack, that will boost productivity
    • minimum knowledge-based of talking technical, expressing with clear words what you need, describing the tasks with information like scenarios, attaching photos, drawing different things for structures when it's related to a complex thing, and more
    • GIT repository with your files
    • Microsoft Teams for team meetings, they will be scheduled inside that app, there you have a calendar, activities, and a lot of stuff for boosting productivity, everything will be scheduled based on our time, excluding the urgent situations
    • you must be a friendly, patient person and understand the principle of my personal life as well.



    Payment (the conditions are customizable for each person):

    • The owner must have its own budget because it will be a fixed monthly salary.
    • The payment will be done through my company, you'll receive an invoice for each payment, which means you've to be transparent with me related to your personal information or company ones.

    For more information, contact me: Bitte melden Sie sich an, um diesen Link zu sehen.

    Please don't contact me just for information if you're not sure what you want to do, and you're not prepared for this.

    Bitte melden Sie sich an, um dieses Medienelement zu sehen.

    Bitte melden Sie sich an, um diesen Link zu sehen.

    For more information: Bitte melden Sie sich an, um diesen Link zu sehen.

    Bitte melden Sie sich an, um diesen Link zu sehen.

    The website was closed for 2 months, I was absent in this period.

    Now is back with a new design, new features, and new products as well.


    Bitte melden Sie sich an, um diesen Link zu sehen.

    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • + other new systems which are mostly finished will be added ASAP
    C
    1. if (d && strcmp(d->GetAccountTable().status, "OK") != 0)
    2. {
    3. d->SetPhase(PHASE_CLOSE);
    4. return;
    5. }


    You can do it with the default code, without extra queries.

    The only thing is that you need to initialize it properly since it's missing some parts on (db.cpp, ClientManager.cpp, ClientManagerLogin.cpp, tables.h)


    Thanks for the release, but this is a totally bad solution and useless code.

    Already there's a function that checking if the application is active or not in Bitte melden Sie sich an, um diesen Link zu sehen.

    The variable m_isActive is set when WM_ACTIVATEAPP it's called, basically when a window belonging to a different application than the active window is about to be activated.

    If you read a little bit the documentation of Win32 Api, you can find those.

    WA_ACTIVE

    • Activated by some method other than a mouse click (for example, by a call to the SetActiveWindow function or by use of the keyboard interface to select the window)

    WA_CLICKACTIVE

    • Activated by a mouse click.

    So, all what you've to use, it's just 2 lines:

    C
    1. bool CPythonNetworkStream::SendAttackPacket(UINT uMotAttack, DWORD dwVIDVictim)
    2. {
    3. [...]
    4. if (!CPythonApplication::Instance().IsActive())
    5. return true;
    6. [...]
    7. }


    This method doesn't make sense for the metin2 gameplay anyway.

    Next time, do better research on metin2 source, nobody cares about those "HIGH" inventions of you that are totally ...great.



    Also, this is something that made my day:

    Eine richtige Lösung ist ein gutes Anticheat.

    *hust hust* z.b. Hawkeye *hust hust*

    Bitte melden Sie sich an, um dieses Bild zu sehen.

    As you allready mentioned you had costumers and people waiting months and even years and now you want to offer your services again?

    You got it wrong, I wanted to say that people have tried to buy my systems for years and some of them didn't get any reply from me, because my skype list was a mess.

    We were a regular costumer of your systems. They are fine but we had to review the code often and fix even some exploits. Well nobody is perfect.

    Random user 1: "You come after a lot of years when all of your systems are leaked, your code back to that time was shit!!!"

    • That's right, some of the systems now are leaked and the old ones have some shitty code, but in that time there weren't many sources for getting "inspiring/copy-paste code" like most of the developers doing now. Now metin2 forums have over 99999 threads with systems in C++, and Bitte melden Sie sich an, um diesen Link zu sehen..

    Everyone did mistakes in the past, so if you've any problems with me, I suggest you send me a private message and we can fix it friendly.



    Already I answered on this question before, please check it in the main thread.

    Also, about "exploits", seems you're talking about pvp advanced mostly (related about player itself), and already it's removed from the website since 2years because I discovered them after years, nobody reported anything to me, same happened with all old systems. (also we're talking about code from 4-5 years ago, people changed)

    Btw. they never came to me to ask about fixes for bugs and more, it's fine.

    As a Web- & Appdeveloper I can tell you many complex Websites use an architecture which is called Microservices. They consist mainly out of more then one programming Language and C++ often handels the most resource intensiv tasks. So its pretty common outside embedded systems to use c++.


    Anyway good luck with your future.

    That's right, I won't make a philosophy about C++ and web development together in a metin2 forum, I just said about the domain where I'm active and my free opinion.

    Thanks for your words.

    SYSTEMS


    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • [...] there're many systems/features that I started and didn't finish them, soon I'll update the topic, also the website and descriptions, because they're crap.

    PART-TIME DEVELOPER

    In the last years, over one hundred people asked me if they can hire me to be their developer and I refused them because I was really busy, mostly with my university, full-time job, and other activities.
    Now, after over 10 years of activity in metin2 and over 4 years in companies as a Software Developer and recently advanced to Senior, I managed to organize my time and tasks really efficiently, and I'm pleased to announce that:

    Since today, I'll give the chance to owners to hire me as a developer.

    My defining characteristics:

    • Mainly focused on Python and C/C++ with years of real experience, but I can code in multiple languages.
    • Excellent communication skills and a good understanding of problems and requirements, with the ability to work as part of a diverse team.
    • Ability to manage and plan in a fast-paced, team-focused environment, ability to manage time effectively and prioritize tasks.
    • Flexible and resilient when it comes to stressful situations.
    • Detail-oriented, organized, meticulous, and able to work at a fact-pace with tight deadlines.
    • For more information related to my educational and professional experience, Bitte melden Sie sich an, um diesen Link zu sehen..

    You must have (a few steps can be done together later):

    • good english skills for communicating with voice and text
    • an application for project management like Trello, Jira, Azure DevOps, YouTrack, that will boost productivity
    • minimum knowledge-based of talking technical, expressing with clear words what you need, describing the tasks with information like scenarios, attaching photos, drawing different things for structures when it's related to a complex thing, and more
    • GIT repository with your files
    • Microsoft Teams for team meetings, they will be scheduled inside that app, there you have a calendar, activities, and a lot of stuff for boosting productivity, everything will be scheduled based on our time, excluding the urgent situations
    • you must be a friendly, patient person and understand the principle of my personal life as well.

    Payment (the conditions are customizable for each person):

    • The owner must have its own budget because it will be a fixed monthly salary.
    • The payment will be done through my company, you'll receive an invoice for each payment, which means you've to be transparent with me related to your personal information or company ones.

    Please don't contact me just for information if you're not sure what you want to do, and you're not prepared for this.


    INFORMATION

    Website:

    • Bitte melden Sie sich an, um diesen Link zu sehen.

    Contact:

    • Skype: Bitte melden Sie sich an, um diesen Link zu sehen.
    • Discord: Bitte melden Sie sich an, um diesen Link zu sehen.
    • Telegram: Bitte melden Sie sich an, um diesen Link zu sehen.

    Payment methods:

    • Bank transfer, Money Gram, Western Union, PayPal.

    Everyone did mistakes in the past, so if you've any problems with me, I suggest you send me a private message, and we can fix it friendly, not by spamming the topic.

    You could check the method that I did for item award.

    Zitat

    2018-04-02 14:02:11 Monday Bitte melden Sie sich an, um diesen Link zu sehen.

    • Added a check for attr types and values min - max.
    • You can't insert wrong bonuses into a specific item.
    • Eg. Add 2000 MAX_HP on your Sword+9, was possible, now not.
    • Eg. Add +500 INT to your shield, now there's a check for min-max value of player.item_attr Lv.1 - Lv.5 and your 500 INT value will be replaced with max value from lvl5 of bonus, like 12 (lv5), that happen with all the bonuses, same thing with the values lower than lvl1, like 5 HP_REGEN on your neck, when the minimum (lv1) is 10, the value will be replaced with 10.
    • If the bonus type can't be added into a specific item, the bonus will be ignored > deleted. (example: critical pct to armor)
    • Refactorized all the code and moved all features into Bitte melden Sie sich an, um diesen Link zu sehen..
    • C++11 or higher is required for checking attributes.


    I just wanted to kindly ask why you don't use the name conventions given by ymir or just any convention for yourself. Is there any reason to call the variable m_EnterToken instead of m_bEnterToken for example? Or naming the vector multi_line instead of m_vecMultiLine?

    They're called hungarian notation (1972–1981), here you can find everything about it.

    Bitte melden Sie sich an, um diesen Link zu sehen.


    Bitte melden Sie sich an, um diesen Link zu sehen.

    No I don't recommend 'Hungarian'. I regard 'Hungarian' (embedding an abbreviated version of a type in a variable name) as a technique that can be useful in untyped languages, but is completely unsuitable for a language that supports generic programming and object-oriented programming — both of which emphasize selection of operations based on the type and arguments (known to the language or to the run-time support). In this case, 'building the type of an object into names' simply complicates and minimizes abstraction.


    Bitte melden Sie sich an, um diesen Link zu sehen.

    Encoding the type of a function into the name (so-called Hungarian notation) is brain damaged—the compiler knows the types anyway and can check those, and it only confuses the programmer.


    Bitte melden Sie sich an, um diesen Link zu sehen.

    ... nowadays HN and other forms of type encoding are simply impediments. They make it harder to change the name or type of a variable, function, member or class. They make it harder to read the code. And they create the possibility that the encoding system will mislead the reader.


    Bitte melden Sie sich an, um diesen Link zu sehen.

    Design Guidelines[14] discourage developers from using Systems Hungarian notation when they choose names for the elements in .NET class libraries, although it was common on prior Microsoft development platforms like Visual Basic 6 and earlier. These Design Guidelines are silent on the naming conventions for local variables inside functions.

    Thanks for the remark, but I never used this command in game as a player, this should be active just for debug as GM's, no sense for players.

    About the fix, could be done directly from here too:

    • cmd_general.cpp

    Search for: (do_hair too)

    C
    1. snprintf(buf, bufferSize, FN_point_string(attr.bType), attr.sValue);

    Replace it with:

    C
    1. const char * cPointString = FN_point_string(attr.bType);
    2. if (!*cPointString)
    3. continue;
    4. snprintf(buf, bufferSize, cPointString, attr.sValue);

    There's no sense for showing to a player 'UNK... 23%' since he don't know what it's..

    I think it's better just to ignore the type if doesn't exist and don't show it in the chat.

    If you really want to do something like this, you can add a sys_log as an error to see the bonus missing and add it into the function.

    Thanks for thread, here's a trick that you don't have specify the index, already can get it automatically.

    Instead of:

    Zitat
    Python
    1. self.categories = (["Ente 1", 0],["Ente 2", 1],["Ente 3", 2],["Ente 4", 3],["Ente 5", 4],["Ente 6", 5],["Ente 7", 6])
    2. for category in self.categories:
    3. comboBox.InsertItem(category[1], category[0])
    4. def OnSelectItem(self, id):
    5. category = self.categories[id]
    6.     # You know that you could use "id" instead of list[1]
    7. self.textLine.SetText('["%s",%d]' %(category[0], category[1]))

    You can do it as:

    Python
    1. self.categories = ("Ente 1", "Ente 2", "Ente 3", "Ente 4", "Ente 5", "Ente 6", "Ente 7")
    2. for categoryIndex, categoryName in enumerate(self.categories):
    3. comboBox.InsertItem(categoryIndex, categoryName)
    4. def OnSelectItem(self, categoryIndex):
    5. categoryName = self.categories[categoryIndex]
    6. self.textLine.SetText('["%s",%d]' % (categoryName, categoryIndex))
    Python3.0 because of the print statements.

    getopt exists since over 15 years ago, if i'm not mistake.

    If you code in Python, you should know that in each version of python you can use print (something). In Python3 you're forced to use it, but in the previous versions you're not, print is just a normal function, which calling the sys.stdout.write(string).

    Zitat

    You should read Bitte melden Sie sich an, um diesen Link zu sehen.:

    The print statement has been replaced with a print() function, with keyword arguments to replace most of the special syntax of the old print statement (Bitte melden Sie sich an, um diesen Link zu sehen.).


    Bitte melden Sie sich an, um diesen Link zu sehen.:

    The changes proposed in this PEP will render most of today's print statements invalid. Only those which incidentally feature parentheses around all of their arguments will continue to be valid Python syntax in version 3.0, and of those, only the ones printing a single parenthesized value will continue to do the same thing.

    Also in all of these years I didn't heard about this error, but instead of doing a tool to rename all of your file names into lower case, you could check your client source or the EterManager source (is public), and just convert the file name to lower name, in one line, no tools, no anything.

    But you guys always prefer the hardest method, it's fine.

    Version?

    Python >= 3.0

    That's wrong, you don't have any features from Python 3.

    Zitat

    When packing, the EterManager makes the file name small and then packs, the client cannot find the file, because upper and lower case was probably not found in Japan in 2004. (Strangely, it works if you write it down yourself before packing. And that's where my tool comes in.)

    I don't have this problem and I don't think that somebody have it, because metin2 reading file from pack or whatever, doesn't have case sensitivity for file names Bitte melden Sie sich an, um diesen Link zu sehen. Bitte melden Sie sich an, um diesen Link zu sehen., already they're readed in lower case. So, you don't need this "Pythonskript", everything works fine.


    Bitte melden Sie sich an, um dieses Bild zu sehen.

    Hello cowboys, since i was at job and i was bored while coding in other languages, i thought would be funny if i code something in Python, so an idea came in mind, doing a general text file loader for parsing different data, with different structs, normal variables, groups and lists, like ymir idea for parsing the files (.mse, .msa, .msm, .txt like mob_drop_item.txt, group.txt, etc)

    This tool can be used everywhere, for metin2 or else, i wrote this from scratch using ymir idea, also you can run it in any version of Python.

    If you use this for metin2, change USING_METIN2_CLIENT to True.


    • Bitte melden Sie sich an, um diesen Link zu sehen.
    • Bitte melden Sie sich an, um diesen Link zu sehen.


    Source repository:

    If someone want to use it in client too:

    Bitte melden Sie sich an, um diesen Link zu sehen.

    • root/localeInfo.py

    How-To-Use:

    your_script.py < import localeInfo

    • Bitte melden Sie sich an, um dieses Bild zu sehen.
    Python
    1. self.timeTextLine.SetText(localeInfo.GetCurrentServerTime12H())
    2. # 06:00:08 PM
    • Bitte melden Sie sich an, um dieses Bild zu sehen.
    Python
    1. self.timeTextLine.SetText(localeInfo.GetCurrentServerTime12H())
    2. # 04:30:56 AM
    • Bitte melden Sie sich an, um dieses Bild zu sehen.
    Python
    1. self.timeTextLine.SetText(localeInfo.GetCurrentServerTime24H())
    2. # 21:05:03

    Bitte melden Sie sich an, um diesen Link zu sehen.


    How-To-Use-Ex:


    Bitte melden Sie sich an, um dieses Bild zu sehen.