Beiträge von VegaS

    Thanks to Bitte melden Sie sich an, um diesen Link zu sehen. that he reminded me about bisection years. (i'll update the repository when i'll have a bit more free time)

    Leap Year

    • A normal year has 365 days.
    • A Leap Year has 366 days (the extra day is the 29th of February).
    Bitte melden Sie sich an, um dieses Bild zu sehen.Leap Years are any year that can be exactly divided by 4 (such as 2012, 2016, etc)
    Bitte melden Sie sich an, um dieses Bild zu sehen.except if it can be exactly divided by 100, then it isn't (such as 2100, 2200, etc)
    Bitte melden Sie sich an, um dieses Bild zu sehen.except if it can be exactly divided by 400, then it is (such as 2000, 2400)


    Python
    1. def GetRangeDaysMonth(calendarMonth):
    2. def GetBisectionYear(year):
    3. """ Provides support for maintaining a list in sorted order without having to sort the list after each insertion.
    4. Return True for leap years, False for non-leap years.
    5. """
    6. return year % 4 == 0 and (year % 100 <> 0 or year % 400 == 0)
    7. """ TODO-DONE: Fix the calendar range days-month if month is February and is a bisection year like 2016, 2020, 2024 ... """
    8. return Math.OFFSETS_MONTH_RANGE_TUPLE[calendarMonth - 1] + (calendarMonth == 2 and GetBisectionYear(Math.GetCurrentYear()))

    Output-test:

    Metin2 Color Formatter

    A simple class writted for Python and C++ which convert the param-values into an string by a specific color rgb as hexadecimals.

    • Color constants module:
      CSS
      1. https://www.webucator.com/blog/2015/03/python-color-constants-module/
      2. https://www.color-hex.com/color/ccffff
    • Python:
      Python
      1. from cff import CFF
      2. text = CFF.format('Metin2', 'green')
      3. text = CFF.format(8000, 'banana')
      4. text = CFF.format(412.55, 'red')
      5. text = CFF.format('Pending', '#113355')
      6. text = CFF.format('Item name:', 'springgreen', CFF.FLAG_NEW_TAB) + CFF.format(item.GetItemName(), 'chocolate')
      7. text = CFF.multi_format(('a', 'b', 'c'), 'red') # text[0], text[1], text[2]
    • C++:
      C
      1. #include "cff.h"
      2. std::string text = CFF::format("Metin2", "green");
      3. std::string text = CFF::format(std::to_string(8000), "banana");
      4. std::string text = CFF::format(std::to_string(412.55), "red");
      5. std::string text = CFF::format("Pending", "#113355");
      6. std::string text = CFF::format("Item name:", "springgreen", CFF::FLAG_NEW_TAB) + CFF::format(pItemData->GetName(), "chocolate");
      7. std::vector<string> text = CFF::multi_format({"a", "b", "c"}, "red"); // text[0], text[1], text[2]


    Github repository:


    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.: