Runes of Magic – d303Fix

Patch 3.0.3 do Runes of Magic przyniósł wiele dobrego, ale także wiele złego. Mianowicie przycięto nieco implementacje Lua. Brak w nowej wersji obiektu os, odpowiadającego między innymi za pobieranie i formatowanie daty i czasu, przez co duża część dodatków przestała poprawnie działać.

Postanowiłem działać i naprawić problem, zarówno z dodatkiem dAFK jak i pozostałymi. Od wczoraj (2010-08-11) siedzę i pocę się nad tym ale są już rezultaty. Prezentowany tu dodatek jest re-implementacją tego obiektu z pewnymi ograniczeniami (patrz Known Issues). jeżeli ktoś posiada wiedzę na ten temat proszę o komentarz.

Zmiany

v1.0 – (Planowana)

  • Pozbycie się pliku XML i ograniczenie biblioteki do jednego pliku.
  • Dodatkowe sugestie dodajcie w komentarzach.

v0.9

  • Sugestie z komentarzy na Curse i tutaj.
    • Elementy tablicy z datą i czasem nie są obowiązkowe.
    • Automatyczne wykonanie screen’a po logowaniu (domyślnie wyłączone).
    • Automatyczny screenshot, gdy nie powiedzie się próbkowanie Item Shop’a.
    • Drugi parametr w funkcji date pozwala na przekazanie czasu do formatowania.
    • Dwa nowe parametry do polecenia /dtss.
    • Kilka innych drobnych sugestii.
  • Poprawki pozwalające niekiedy znacznie skrócić kod.
  • Poszerzone o nowe opcje okno konfiguracji.
  • Rosyjskie tłumaczenie, bez konfiguracji. (Dzięki tasquer)

v0.8

  • Naprawiono problem nie zapisywania się ustawień.
  • Kilka innych drobnych poprawek.
  • Nowe polecenie otwierające i chowające okno konfiguracji.
  • Integracja z AddonManager.

v0.7

  • Poprawiona kompatybilność z innymi dodatkami.
  • Poprawione czytanie ujemnego czasu z promocji.

v0.6

  • Poprawki związane z pobieraniem przesuniętego czasu z Item Shop’a
  • Dodano polecenia pozwalające zmienić zachowanie dodatku
  • Informacja na chacie jeżeli jest już zdefiniowany obiekt os. Obiekt jest deklarowany ponownie
  • Nowe przydatne funkcje
  • Wyciągnięte do tabeli stringi, aby ułatwić tłumaczenie.

v0.5

W tej wersji sporo zmian. Najpierw chciałbym podziękować nieznajomemu, który podzielił się swoją wiedzą w komentarzu pod tym tekstem oraz jednej z osób na anglojęzycznym forum, która powiedziała mi o pewnej bardzo ciekawej funkcji w API, dzięki której pozbyłem się permanentnie mam nadzieje pliku wykonywalnego. Nie może też zabraknąć podziękowań dla twórców dodatków: FunctionWatch i InGameScripts, dzięki którym zgłębiłem tajniki Item Shop’a z którego data jest pobierana.

  • Prawidłowa data i czas wyciągana z gry bez ingerencji użytkownika.
  • Nie potrzebny jest już plik wykonywalny.
  • Obiekt os jako nakładka na obiekt d303Fix, a nie kompletna implementacja.
  • Nowa implementacja wyliczania czasu, dokładniejsza niż wyliczanie na podstawie wartości uśrednionych.
  • Nowy dział dla programistów dodatków.

v0.4

  • Prawidłowa data i czas wyciągana z gry podczas robienia screen’a.
  • Posprzątany kod.
  • Wersja Lite specjalnie na potrzeby serwisu Curse. Nie zawiera ona pliku wykonywalnego.

v0.3

  • Prawidłowa data i czas. (Patrz instalacja)
  • Wersje językowe (PL/EN).
  • Poprawny dzień tygodnia.
  • v0.2

    • Skrócona i normalna nazwa dni tygodnia i miesięcy
    • Znaki %% są zastępowane przez %
    • Znak ! w os.date() poprawnie formatuje czas z gry.
    • Wywołanie os.date(„!*t”) zwraca tabele z czasem gry.
    • Nieco rozszerzone testy.

    v0.1

    • Pierwsza wersja całkowicie pozbywająca się błędów w dodatkach.
    • Kompletna lista funkcji z obiektu os.
    • Podstawowe testy.
    • Dostępny również na Curse.

    Instalacja

    Najpierw należy odinstalować wersje starsze od v0.7, następnie przeprowadzamy instalacje jak każdego innego dodatku, poprzez rozpakowanie go do katalogu %ROM%\Interface\AddOns\ pamiętając o tym aby nie zmieniać nazwy katalogu samego dodatku.

    Korzystanie

    Dodatek posiada dwa polecenia pozwalające na manipulowanie jego zachowaniem (zmienione wartości są zapamiętywane):

    • /dt (/os) – Polecenie związane z oknem konfiguracji
      • /dt – Pokazuje okno konfiguracji.
      • /dt hide – Chowa okno konfiguracji.
    • /dtis (/osis) – Polecenie związane z interakcją z Item Shop’em.
      • /dtis help – Wyświetla krótką pomoc.
      • /dtis off – Wyłącza pobieranie daty z Item Shop’a.
      • /dtis on – Włącza pobieranie daty z Item Shop’a.
      • /dtis [godziny] – Ustawia wartość przesunięcie zegara i resetuje wszystkie zmienne potrzebne do ponownego pobrania informacji z Item Shop’a.
      • /dtis – Resetuje wszystkie zmienne potrzebne do ponownego pobrania informacji z Item Shop’a.
    • /dtss (/osss) – Polecenie związane wyciąganiem daty i czasu z nazwy screenshot’a
      • /dtss help – Wyświetla krótką pomoc.
      • /dtss off – Wyłącza pobieranie daty z nazwy screenshot’a.
      • /dtss on – Włącza pobieranie daty z nazwy screenshot’a.
      • /dtss auto – Włącza/Wyłącza tworzenie screen’a podczas logowania..
      • /dtss fail – Włącza/Wyłącza tworzenie screen’a, gdy próbkowanie Item Shop’a zawiedzie.
      • /dtss – Wykonuje zrzut ekranu niezależnie od ustawień.

    Znane problemy

    • Niedogodności związane z dodatkową aplikacją. (Patrz instalacja)
    • Brak poprawnej flagi z czasem zimowym.

    Development

    Uwaga

    Proszę wszystkich twórców dodatków o uprzednie sprawdzenie czy aby na pewno nie ma obiektu os i jego funkcji przed ich nadpisaniem.

    Sprawdzanie

    Chciałbyś skorzystać z dodatku d303Fix w swoim dodatku, możesz go dodać jako część swojego dodatku lub skorzystać z istniejącej już instalacji? Aby sprawdzić czy obiekt os jest już zadeklarowany w systemie wystarczy sprawdzić czy nie jest null’em:

    if os then
        -- Obiekt os istnieje
    end
    

    Aby natomiast sprawdzić czy jest to konkretnie implementacja d303Fix należy sprawdzić to poniższym kodem:

    if os and d303Fix then
        -- To d303Fix
    end
    

    Funkcjonalność

    Dodatek udostępnia kilka przydatnych funkcji. Jest oczywiście implementacja wszystkich funkcji z obiektu os związanych z czasem do których można się odwoływać zarówno przez obiekt os jak i obiekt d303Fix. Poniżej funkcje i pola dostępne tylko przez obiekt d303Fix

    • IsAnyNil(param) – Sprawdza czy parametr lub jakikolwiek element tablicy jest nil’em, jeżeli tak to zwraca true i nazwę klucza w tabeli (lub nil jeżeli nie ma nazwy albo nie jest to tabela), w przeciwnym razie zwraca false i nil
    • IsLeapYear(year) – Sprawdza czy rok jest przestępny. Jeżeli tak zwraca true, jeżeli nie false.
    • print(string) – Wyświetla przekazany string w oknie czatu. Jest to wyjątek i jest zdefiniowany w obiekcie os.
    • SafeLoadFile(filename) – Bezpiecznie ładuje plik lua. Gdy wystąpi błąd wyświetla komunikat w oknie chat’u oraz zwraca false, gdy ładowanie powiedzie się zwraca true.
    • SetTime(param) – Funkcja jako parametr przyjmuje trzy typy wartości:
      • number – Czas w sekundach liczonych od 1970-01-01.
      • string – Czas w formacie yyyy-MM-dd HH:mm:ss
      • table – Standardowa struktura daty i czasu.
    • Reset() – Resetuje zegar do daty 1970-01-01 oraz wymusza ponowne ustawienie czasu za pomocą Item Shop’a
    • Version – Numer wersji d303Fix
    • Dodatkowo tabela czasu zwracana przez funkcje date(„*t”) zwraca dodatkowo pole isLeap typu bool, zawierające informacje o tym czy rok jest przestępny.

    Galeria

    v0.8

    v0.6

    Pobieranie

    Repozytorium

  • avatar
    #1 written by Edgar  4 years ago

    Działa fajnie, chociaż ten czas z gry by się przydał.

    Kiedy można się spodziewać nowej wersji?

    • avatar
      #2 written by dr4cul4  4 years ago

      Jeszcze nie do końca rozgryzłem jak działa ten licznik, ale jestem w trakcie. Postaram się dziś wieczorem coś zrobić, jak nie to jutro mam cały weekend :)

  • avatar
    #3 written by John Doe  4 years ago

    It seams that Curse is not accepting your addon, because of its content (executable file).

    • avatar
      #4 written by dr4cul4 4 years ago

      I did my best to fix the issue, one way or the other. I was left with the „other” way. I hope they will accept the patch, if not, it will still be available here.

  • avatar
    #5 written by dr4cul4 4 years ago

    Zastąpiłem plik C poprawnym, plik wykonywalny jest i był ok.
    I replaced C file with correct one, executable file was correct.

  • avatar
    #6 written by Anonymous  4 years ago

    http://www.mediafire.com/?ms867aayd357a7l

    Changes:

    os.date()
    Changed how epoch time is converted to take into account leap years and the varying number of days in the months.

    os.time()
    Changed how date/time is converted to epoch time to take into account leap years and the varying number of days in the months.

    NOTE: If you are using this version (.i) of _d303Fix do not use _d303Fix.prepare.exe as it converts to epoch using averages for year and month. Use the makeluavbs script.

    os.date(„%I”)
    Fixed 24hr to 12hr conversion. Was outputing 00 for midnight and noon.

    was> t.hour % 12

    to> ((t.hour == 0) and (t.hour+12) or ((t.hour>12) and (t.hour-12) or (t.hour)))

    os.date(„%p”)
    Was returning pm for every hour other than 00.

    was> (((t.hour / 12) > 0) and „pm” or „am”)

    to> (((t.hour / 12) >= 1) and „pm” or „am”)

    ——————————————————————-

    makeluavbs.txt (rename to .vbs to run)
    Creates os.baseTime from an accurate epoch time.

    _d303Fix.prepare.c uses average values for years and months, so the epoch time generated is incorrect.

    • avatar
      #7 written by dr4cul4  4 years ago

      Thanks for suggestions. I will include those in my fix if you don’t mind. Currently I’m trying to figure out how to use CIMF_GetItemInfo, and to be more precise, from where to get guid parameter.

  • avatar
    #8 written by OddBoy  4 years ago

    Jesteś wielki… a w sumie to nie wiem, może i nie jesteś za wysoi/szeroki.

    W każdym razie fix jest super, działa pięknie, jak na razie nie widzę błędów, faktycznie pbInfo 0.49 działa prawidłowo, oraz kilka innych dodatków również. Musiałem się jedynie cofnąć z wersją InGameScripts, bo daty i godzina się przestawiały i dostawałem jakieś dziwne błędy.

    • avatar
      #9 written by Jaco  4 years ago

      Też to zauważyłem. Autor ów dodatku nadpisuje funkcje bez sprawdzania czy istnieją.

  • avatar
    #10 written by Name (required)  4 years ago

    Hi

    First of all great addon/fix. It works fine, except for a few things.

    First of all slash commands. Time offset is saved, but turning off retrieval methods doesn’t get saved. There’s one more thing. When probing item shop without promotions or if it hangs (it happens from time to time) retrieving fails, but that’s not the issue. The issue is that when you display retries counter it gets to -1.

    Now a bit of suggestions. It would be nice if you design some sort of GUI configuration that would nicely integrate with addon config and addon manager.

    You might also provide simple clock frame to put on a screen.

    Can’t wait next version, I hope that you will find new method to set correct time. (It is a shame that you discarded method with external tool. I think that that was most reliable and precise.)

    Keep up the good work.

    Cheers.

  • avatar
    #11 written by dr4cul4 4 years ago

    Do repozytorium rozwojowego właśnie trafiła nowa wersja głównego pliku dodatku. Pozostałe elementy są w przygotowaniu.

    * Zawiera poprawki przygotowane przez użytkownika 0v3rlord z curse.com
    * Zawiera zmienną pozwalającą zmniejszyć ilość wiadomości wyświetlanych przez dodatek (szczegóły w kodzie i komentarzu w repozytorium)

  • avatar
    #12 written by Oswald Rasenflöte  3 years ago

    Hi,

    could you change the project-state of d303fix at curse to „mature”? Otherwise it gets deleted soon and I would miss it a lot. ;-)

    Thanks in Advance
    Oswald

    • avatar
      #13 written by dr4cul4  3 years ago

      Thanks for info I will change status as soon as possible. I stopped playing ROM for various reasons so I’m not maintaining it any more, but who knows, maybe I will do some update.

  • avatar
    #14 written by bo  2 years ago

    Kiedy można się spodziewać wersji 1.0?

    • avatar
      #15 written by dr4cul4  2 years ago

      Niestety na chwile obecną nie gram w ROM’a i nie mam nawet klienta zainstalowanego. Jak będę miał chwilę to zainstaluje grę i postaram się zarżeć do kodu i wydać kolejną wersje.

  • avatar
    #16 written by bo  2 years ago

    Byłoby super… :)

  • avatar
    You may use these HTML tags: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <strike> <strong>

  • Comment Feed for this Post
Go to Top