Beiträge von VegaS


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




    • root/uiRefine.py


    • root/constInfo.py
    Python
    1. # Showing description of item in refine window.
    2. ENABLE_REFINE_ITEM_DESCRIPTION = 1

    Another idea: (you don't have to use this, is just a example, can add in tooltip where you can drop items which you need, you can add a listbox+scrollbar and send drops from server and cache it in dictionary.)

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


    OFF: Hello, can anyone tell me a way to get a LAMBORGHINI VENENO?
    ON: Try Bitte melden Sie sich an, um diesen Link zu sehen., even if they are bad, the owner of svside is lalaker1, so this 'cheat' not will work anymore.

    Bitte melden Sie sich an, um diesen Link zu sehen. The fix is apply just for new items inserted, these items which already you have in window was inserted in player.item with socket as 0 and in player.item_award have status 'taken_time & item_id' as taken, so this fix is apply just for future items, old items which you was had in MALL before fix remaining 'bugged'.


    SQL
    1. INSERT INTO `player`.`item_award`(`pid`, `login`, `vnum`, `count`, `given_time`, `taken_time`, `item_id`, `why`, `mall`) VALUES (YOUR_PID, 'YOUR_NAME_ACCOUNT', 71011, 1, '2018-03-25 05:53:17', NULL, NULL, 'ITEM_SHOP', 1);

    EDIT:

    • I noticed now in 2st screen you already insert new item-query and still have 0 time, be sure you re-compiled the db core good, i did some tests and was work perfectly as you see in GIF, leave me in PM the ClientManager.cpp and i will check tonight.

    The timed items in item_award if u put timed item like emotion mask Id:(71011) the item time is set to 0 not 30days 15days and etc.

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


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


    Check repository for last updates.

    If you use item_award you don't have to do these checks, if MALL window is full, rest of items will be 'unmarked for cache', so you have to take the current items first one and then rest of items which was added will be loaded too.


    How-To-Test:

    • Insert 60 query's with itemVnum 27001 in item.award.
    • Take 45 items from MALL window into inventory.
    • Re-open window mall and you will see the rest of items 15.

    So you can add unlimited query-items, they will be loaded by cache after you pickup the existent items and exist enough space.

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

    • Fixed problem with save bonus after reload <cache> items.
    • Fixed problem with unknown values.
    • Fixed unknown average/skill damage > that's for items which have addon type (-1) and you added them in item shop and don't add them with bonuses like skill damage or hit damage value x, y as default, so they will be without bonuses and get 'bugged', you need to change some bonuses for get hit/skill damage.Now when item will be inserted will check if item doesn't have these bonuses (from query) and add them as random value.

    Check repository for last updates.
    Thanks Bitte melden Sie sich an, um diesen Link zu sehen., Bitte melden Sie sich an, um diesen Link zu sehen. for reporting.

    Metin2 Extended Item Award

    You can store all bonuses and stones for items.

    I wrote that as request from Bitte melden Sie sich an, um diesen Link zu sehen., more informations at repository.

    2018-04-02 14:02:11 Monday

    • Fixed problem with save bonus after reload items.
    • Fixed problem with unknown values.
    • Correction for socket real time and more.
    • Fixed unknown average/skill damage bonus value. player.item_proto.addon_type = -1 (Eg. 189, 199, 299, 1139, 1179, 2159, 2179, 3169, 3219, 5119, 5129, 6019, 6069, 6079, 7169)[+0 - +9] That's for the items which have addon type (-1) and you added them in item shop without bonuses like skill damage or hit damage, value x, y as default, so they'll will be without bonuses and get bugged. Now when the item will be inserted there'll be a check if item doesn't have those bonuses (from query) add a random average/skill damage bonus value.
    SQL
    1. INSERT INTO player.item_award(`login`, `vnum`, `count`, `mall`) VALUES ('account', 189, 1, 1);

    2019-04-12 02:31:18 Friday

    • Fixed unique items based on the real time.
    • Fixed unstackable items.
    • Fixed if item count overflow occured, then set it to maximum.
    • Added support for books. (check skill types, unknown skill), skill vnum need to be saved into socket0, (4=Aura of the Sword < player.skill_proto), if the skill vnum is unknown, there will be a random book based on pc races, excluded skills PASSIVE, GUILD, SUPPORT.
    • Added a to-do for ITEM_BLEND, check if apply_type exists in bonuses, check if apply_value/apply_duration is equal with grades (1/2/3/4/5) from settings, blend.txt
    • Added auto query.
    SQL
    1. # Random book
    2. INSERT INTO player.item_award(`login`, `vnum`, `count`, `mall`) VALUES ('account', 50300, 1, 1); # Specific book by skill vnum
    3. INSERT INTO player.item_award(`login`, `vnum`, `count`, `socket0`, `mall`) VALUES ('account', 50300, 1, 4, 1);

    2019-04-16 14:54:48 Tuesday 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 INTvalue 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.

    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.

    Sockets & attrs

    For those who use Bitte melden Sie sich an, um diesen Link zu sehen. source:

    C
    1. //@Srcs/Server/db/src/ClientManager.cpp
    2. #define ENABLE_ITEMAWARD_REFRESH // Should be enabled

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

    The current method which i did send the packets to auth core aswell and get a result if connection was set with succes or not and then save (user-pw) on a output list.
    There's nothing really complicated, actually the reason why it lasts like this, is for do connect with the brute-force algorithm which i split it on two parts, one is trying to decrypt the md5 (small chances), and the another is generate the passwords and trying all combinations, that is impossible to do a hard brute-force attacks and find password on 2-3 seconds, even if you do a extra algorithm, again, that is impossible, there are a lot a type of passwords with some characters specials, uppercase etc, and durating a lot until the brute-force do the job, doesn't importantly what language you use or method.
    Most of the brute-force methods are written on Python, because it's a flexible language for stuffs like that, even if C++ is a beast, i
    did that just for a new challenge from someone just 4 fun.
    Didn't spend too much time for that shit to do it perfectly and full optimizated/fastest execution and also i'm not a hacker to get accounts on metin2 servers.
    Thanks for reply.


    I know my english sucks.

    First one, thanks for contribution Bitte melden Sie sich an, um diesen Link zu sehen., looks good, maybe exist methods more good without do these things and rewrite the whole affect structure, but if working fine, is ok. << metin2 is already a shit anyway.
    Here are some advices which could help you on future maybe.

    C
    1. typedef unsigned int DWORD;


    You really don't have to use DWORD for affect values.

    • DWORD[0 - 4,294,967,295] - 32 bits (4 bytes)
    • uint16_t | unsigned short [0 - 65535] - 16 bits (2 bytes)

    Exactly what i had in my mind :)
    Now just use an "iterator" of this vector and not the index. Then it is like i would like to do it


    C
    1. std::vector<DWORD> vGoodAffects = {1, 5, 10, 25};
    2. std::vector<DWORD>::iterator it = vGoodAffects.begin();
    3. while (it != vGoodAffects.end())
    4. {
    5. RemoveAffect(*it++, false);
    6. }


    That's a very bad practice Bitte melden Sie sich an, um diesen Link zu sehen. for C++11 >, you don't have to use a another iterator of vector, already we have 'Range-based for loop'.

    • Executes a for loop over a range.
    • Used as a more readable equivalent to the traditional Bitte melden Sie sich an, um diesen Link zu sehen. operating over a range of values, such as all elements in a container.

    That's like how should be.

    C
    1. const std::vector<uint16_t> m_vec_AffectStack = {1, 5, 10, 25};
    2. for (auto it : m_vec_AffectStack) // Access of value, the type of it is uint16_t.
    3. RemoveAffect(it, false);
    • I would preffer to check if affect exist first one, and after that to remove it, and use the function wich send the pointer directly of found affect, not the one with type of it.
    • The function RemoveAffect(type), first one have a loop while and search affect and after that re-send to remove it on RemoveAffect(pointerFound). - Bitte melden Sie sich an, um diesen Link zu sehen.

    So the better one is that one, which send directly to remove it, because already we do the FindAffect which return a pointer from a class method.

    C
    1. const CAffect * pkAff = FindAffect(it);
    2. if (pkAff)
    3. RemoveAffect(const_cast<CAffect *>(pkAff)); // const_cast isn't necessary.


    Zitat von Sanii

    Everytime i see a fixed sized array, i see also the crying skids with errors because of this sizes. (extending array and/or the iteration of it).

    Just do that and they will stop to cry next time.

    C
    1. // Initialize array
    2. const int32_t array[] = {10, 20};
    3. // Loop
    4. for (int32_t i=0; i<sizeof(array)/sizeof(array[0]); ++i) // _countof(array)



    #killing#english#succes

    Zitat von Xtreme Games

    it only sells the system. I am looking for a complete server with everything installed.

    Who gives you these false informations?

    • You're wrong, the last updates wich i did have a special tool tool wich gives you chance to install and convert all automatically.
    • Also i'm offer default translations for some languages full (client-server) - excluded oxevent, and i install everything aswell.

    Kein Problem.Aber denke er wusste es selber nicht jeder der des System benutzt hat denn Bug auch die neuste Vision 2.1 glaube ich hat denn bug

    The latest version is 0.3.2 not '2.1'.


    This 'bug' is fixed since a lot a time and another ones aswell, not all people received it.
    That topic should be closed aswell, have no sense.