Skocz do zawartości

EntryCore - stabilne source dla Twojego serwera - wersja v2.1.1

Featured Replies

Opublikowano

Ciekawe, pewnie sie przyda

Opublikowano

Pomyślałem, że tu napiszę post :P 

Zauważyłem, że nie ma zmienionego inteligentnego wskaźnika:

unique_ptr

no i wszystko byłoby fajnie, ale zauważyłem też brakujący include, to dość ważne(według mnie) w tym wypadku jeśli chodzi o unique_ptr :P

Wiem, że większość nie grzeszy używania VS w src db, game ale to potężne narzędzie do debugowania i kolizji game czy db jak i wycieku pamięci itp.,^^

Gdy ktoś otworzyłby projekcik, naszym oczom ukaże się takie coś(w każdym pliczku z sekcji db gdzie jest ta wartość z unique_ptr):

Spoiler

image.png.43387d9b32440d97ef5d6388dc97e9a2.png

braki zaobserwowałem w db, więc polecam:

w pliku stdafx.h na prawie samym końcu (przed ostatnim #endif) dopisz:

#include <memory>

To tyle. Jak coś jeszcze wykryje dość ważnego to najwyżej dam edita 😜 

 

Małe info, unique_ptr nie posiada kopiowania dzięki czemu (według mnie) jest dużo bezpieczniejszy niż w auto_ptr gdzie jest możliwość kopiowania zasobów dynamicznie przydzielonych, w naszym wypadku mogłoby działać na duplikowaniu tych samych zapytań jeśli napotkałby minimalny problem w wykonaniu np. sql ^^ w unique_ptr nie ma kopiowania, ma tylko prawa do właściwości wykonywania i przenoszenia dynamicznie przydzielonych danych ale to zapewne już wiecie :P

 

Żeby nie było hejtów czy coś, nie wymuszam czy nie wymagam stosowania tego rozwiązania, chcecie to użyjcie a komentarze typu "ale przecież się kompiluje" "głupoty gadasz, kompilator ma to w sobie" itd., to sobie odpuście ^^ 

Pliki na których obecnie to wykryłem to wersja:

entry-core-v1.6

Opublikowano
W dniu 19.08.2023 o 12:05, Sevence napisał(a):

image.png.f66cb18296f090510ec5e9cfa2c387f8.png

 

Uwaga

Pierwsze uruchomienie serwera wymaga rekompilacji crypto masz opcję w panelu zarządzania. 

Uruchamiając VM ustaw FreeBSD 64bit

 

 

🛠️ Dane techniczne:

  • System: FreeBSD 13.2
  • Kompilator: Clang++12
  • Wersja standardu: C++20

 

📝 Struktura projektu:

  • Entry-core: źródło gry i bazy danych
  • Entry-bin: źródło dla binarki
  • Entry-sf: pliki serwerowe
  • Entry-client: klient gry
  • Entry-vm: gotowa maszyna (źródło + pliki serwerowe)
  • Entry-sql: tabele do bazy
  • Entry-proto-packer: program do utworzenie item_proto i mob_proto ze sql (by martysama)

 

Dane do logowania SSH:

Login: root

Hasło: admin

 

Dane do bazy mysql

Login: root

Hasło: s5gKoF8PqC

 

Dane do konta testowego:

Login: entry

Hasło: test

 

Centrum pobierania:

Entry-vm

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

Entry-core

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

Entry-bin

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

Entry-client

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

Entry-sf

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

Entry-sql

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

Entry-proto-packer

 

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

Legenda:

+++ - oznaczenie punktów, które zostały dodane ostatniego dnia.

 

📈Śledź postęp projektu

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

 

 Wersja: v1.7 🚀 status: in progress  ostatnia aktualizacja: 18.02.2024 - 01:49

[FIX] Naprawa błędu w logice wysyłania komunikatu notice na dungeonie. [Zobacz rozwiązanie]

[FIX] Naprawa błędu wyszukiwania przedmiotów z polskimi znakami w 'item_proto' / 'mob_proto'. [Zobacz rozwiązanie] +++

[NEW] Wdrożyłem możliwość wyłączenia kolizji dla sklepów graczy (zwykłych). [Zobacz rozwiązanie] +++

[CodeReview] Aktualizacja InstanceBaseEffect.cpp duża refaktoryzacja. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

 

 

 Wersja: v1.6 🚀 status: wydana

  Pokaż ukrytą zawartość

Changelog

[UPDATE] Aktualizacja wszystkich komunikatów w źródle gry do klientowej wersji locale stringa. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[FIX] Naprawa błędu zadawania obrażeń w marmurku po 'odbugowywaniu' auto poty. [Zobacz rozwiązanie]

[FIX] Naprawa błędu używania przedmiotów questowych podczas handlu. [Zobacz rozwiązanie]

[FIX] Naprawa błędów w umiejętności Krycie Się. [Zobacz rozwiązanie]

[FIX] Naprawa błędu kolizji postaci po zniknięciu. [Zobacz rozwiązanie]

[FIX] Naprawa błędu zakładania przedmiotów na sloty unique, brak obsługi w nowym item.cpp - poprawka wewnętrzna. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[FIX] Naprawa błędu wyświetlania efektu zadawanych obrażeń dla przeciwnika gdy ninja jest otruty lub podpalony i włączy krycie - zdradzały pozycję.  [Zobacz rozwiązanie] 

[FIX] Naprawa błędu z atakowaniem gracza podczas trybu aktywnej ochrony. [Zobacz rozwiązanie]

[FIX] Naprawa błędu z wyzywaniem gracza na pojedynek podczas aktywnego trybu ochrony[Zobacz rozwiązanie]

[FIX] Naprawa błędu dezaktywacji trybu PVP po wylogowania. [Zobacz rozwiązanie]

[FIX] Naprawa błędu: zmiana płci postaci uniemożliwia zdjęcie kostiumu lub fryzury. [Zobacz rozwiązanie]

[FIX] Naprawa braku automatycznego wylogowania po zmianie płci. [Zobacz rozwiązanie]

[FIX] Naprawa atakowania gracza wydobywającego rude. [Zobacz rozwiązanie]

[FIX] Naprawa błędu z atakowaniem potworów podczas aktywnego Krycia się. [Zobacz rozwiązanie]

[FIX] Naprawa awarii klienta gry podczas zamykania. [Zobacz rozwiązanie]

[FIX] Naprawa błędu łączenia przedmiotów w grupie + nowa funkcja. [Zobacz rozwiązanie]

[FIX] Naprawa krytycznego błędu z dodawaniem gracza do grupy. [Zobacz rozwiązanie]

[FIX] Naprawa błędu utraty kontroli poruszania się postacią podczas otwartego okna ustawień klawiatury i aktywnego poruszania się. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[FIX] Naprawa błędu niepoprawnego koloru nazw graczy po dodaniu do grupy.

[FIX] Naprawa wyświetlania flag królestw podczas niewidzialności. [Zobacz rozwiązanie]

[FIX] Naprawa błędu w którym po zejściu z konia ten nie podążał za postacią poprawnie tylko zostawał w miejscu zejścia.

[FIX] Naprawa błędu niepoprawnej obsługi ubierania smokingu w którym nie aktualizował się widok założonego przedmiotu. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[NEW] Wdrożono obsługę Zwoju Redystrybucji. [Zobacz rozwiązanie]

[NEW] Obsługa wydobywania rud implementacja nowych metod. [Zobacz rozwiązanie]

[NEW] Nowe makro 'ENABLE_ATTACH_EMPIRE_EFFECT' wyłączające wyświetlanie flagi królestw. [Zobacz rozwiązanie]

[REMOVE] Usunięto system Monarchy. [Zobacz rozwiązanie]

[REMOVE] Usunięto system Auction. [Zobacz rozwiązanie]

[REMOVE] Usunięto system Castle. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany moduł 'vcard'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany moduł 'billing'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany moduł 'sms - mobile'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany moduł 'openid'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany moduł 'dev_log'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany moduł 'teen packet'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany moduł 'passpod'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany moduł 'matrix_card'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany event 'lotto'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany modułu 'highscore'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany modułu 'dbstring'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany modułu 'SpeedServer'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany modułu 'FileMonitor_FreeBSD'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany modułu 'BlockCountry'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany event 'threeway_war'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany modułu 'ip_ban'. [Zobacz rozwiązanie]

[REMOVE] Usunięto pliki ze źródła 'test.cpp', 'test_allocator.cpp', 'test_window.cpp', 'test_stacktrace.cpp', 'input_udp.cpp', 'malloc_allocator.h', 'merge_locale_string.py'.

[REMOVE] Usunięto nieużywany modułu 'sequence'. [Zobacz rozwiązanie]

[REMOVE] Usunięto moduł obsługujący wierzchowce, zmiana obsługi wierzchowców podążających za postacią. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[CodeReview] Wdrożenie smart pointerów do zarządzania pakietami, optymalizacja struktur. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 (eksperymentalne)

 

[CodeReview] Usunięto koreańskie komentarze, sformatowano wszystkie enumy, dodano wszystkim listom numerację w celu łatwiejszym zarządzaniu, dodano nazwy w brakujących. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[CodeReview] Dodano do wszystkich enum numerację, zaktualizowano różnice bin - game. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[CodeReview] Zaktualizowano strukturę i typy danych proto table, zaktualizowano packera proto. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[CodeReview] Refaktoryzacja GameType.h - UserInterface, dodano numerację do typów wyliczeniowych, nazwy, zaktualizowano typy danych, dodano obsługę brakujących bonusów. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

[UPDATE] Wycofano wcześniejszy nowy moduł systemu wierzchowców. Zaimplementowano nową obsługę wierzchowców rozbudowując system konny. 

🔐 Ukryta Treść 🔐

  • 💬 Skomentuj poniżej, aby odkryć ukrytą zawartość!
    👍 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę!
    ⚠️ Komentarze muszą zawierać minimum 3 litery, inaczej są uważane jako SPAM.

 

Wersja: v1.5 🚀 status: wydana

  Pokaż ukrytą zawartość

Changelog

[UPDATE] Zaktualizowano okno zadań zgodnie z oficjalnym serwerem. [Zobacz rozwiązanie]

[UPDATE] Kamienie duszy teraz będą mogły się łączyć. [Zobacz rozwiązanie]

[UPDATE] Tekst w zadaniach jest wyświetlany od razu bez animacji. [Zobacz rozwiązanie]

[UPDATE] Pieczęcie zwierzaków są teraz otoczone świecącą aurą po użyciu. [Zobacz rozwiązanie]

[UPDATE] Nowa opcja gry - ustawienia klawiatury.

[UPDATE] Stały atak ze strzał - wyłączenie zależności obrażeń od zasięgu przeciwnika. Nowa opcja konfiguracyjna ENABLE_ARROW_DISTANCE_DAMAGE. [Zobacz rozwiązanie]

[UPDATE] Aktualizacja mechaniki umiejętności Strzelający Smok. [Zobacz rozwiązanie]

[UPDATE] Pełne wsparcie dla systemu FreeBSD 13.2.

[UPDATE] Zaktualizowano cryptopp do wersji 8.9, nie ładujemy już lokalnie, instalowany z pkg, roziązanie problemów z kompatybinością.

[UPDATE] Zapewniono kompatybilność cipher z najnowszą wersją cryptoliba.

[UPDATE] Zaktualizowano bibliotekę boost do najnowszej wersji 1.84. 

[UPDATE] Zaktualizowano wszystkie potwory z m2 modele oraz pliki serwerowe. 

[FIX] Naprawa krytycznego błędu w funkcji 'MoveItem', zapobiegając duplikacji przedmiotów. [Zobacz rozwiązanie]

[FIX] Naprawa błędu dotyczącego użycia mikstury, gdy jej efekt jeszcze trwa. [Zobacz rozwiązanie]

[FIX] Naprawa polecenia 'reload q' powodującego awarię rdzenia gry. [Zobacz rozwiązanie]

[FIX] Naprawa błędu z umieszczaniem kamieni duszy w stacku. [Zobacz rozwiązanie]

[FIX] Naprawa krytycznego błędu w funkcji do przeładowywania questów - brak wyczyszczenia timerów serwerowych. [Zobacz rozwiązanie]

[FIX] Naprawa błędów w aktualizacji statystyk i ekwipunku podczas zmiany oraz wylogowania postaci. [Zobacz rozwiązanie]

[FIX] Naprawa błędu z zakładaniem całego stacku przedmiotów na slot. [Zobacz rozwiązanie]

[FIX] Naprawa niespójności w systemie znajomych. [Zobacz rozwiązanie]

[FIX] Naprawa wycieków pamięci w systemie wiadomości. [Zobacz rozwiązanie]

[FIX] Naprawa błędu w którym potwory wchodziły za graczem na strefę bezpieczeństwa. [Zobacz rozwiązanie]

[FIX] Naprawa błędu logicznego w poleceniu do ustawiania rangi dla gracza. [Zobacz rozwiązanie]

[FIX] Naprawa błędu dublowania bonusów z affectów po wielokrotnym użyciu przedmiotów. [Zobacz rozwiązanie]

[FIX] Naprawa ujemnego czasu odrodzenia podczas otwartego sklepu u NPC. [Zobacz rozwiązanie] 

[FIX] Naprawa błędu z czytaniem księgi umiejętności na maksymalnym poziomie. [Zobacz rozwiązanie]

[FIX] Naprawa błędu uniemożliwiającego przerwanie automatycznego ataku. [Zobacz rozwiązanie]

[FIX] Naprawa używania emocji podczas ogłuszenia postaci. [Zobacz rozwiązanie]

[FIX] Naprawa połączenia z serwerem podczas problemów sieciowych. [Zobacz rozwiązanie]

[FIX] Naprawa przycinania chmur w skyboxie podczas renderowania. [Zobacz rozwiązanie]

[FIX] Naprawa podnoszenia przedmiotu przez kliknięcie będąc na koniu lub wierzchowcu. [Zobacz rozwiązanie]

[FIX] Naprawa błędu powodującego upadek postaci przy użyciu umiejętności Silne Ciało. [Zobacz rozwiązanie]

[FIX] Naprawa błędu z pozycjonowaniem kursowa w interfejsie logowania. [Zobacz rozwiązanie]

[FIX] Naprawa funkcji aktualizacji złota przy ujemnych wartościach. [Zobacz rozwiązanie]

[FIX] Naprawa błędu konwersji typów w funkcji 'PyTuple_GetUnsignedLong'. [Zobacz rozwiązanie]

[FIX] Naprawa braku wpływu bonusu - szybkości zaklęcia na czas odnowienia w opisie umiejętności. [Zobacz rozwiązanie]

[FIX] Naprawa błędu przekroczenia zakresu przy ustawieniu kierunku. Zobacz rozwiązanie]

[FIX] Naprawa błędu ładowania dolnej części skybox'a. [Zobacz rozwiązanie]

[FIX] Naprawa luki bezpieczeństwa w systemie autoryzacji do ACP. [Zobacz rozwiązanie]

[FIX] Naprawa funkcji SetSkillGroup poprzez weryfikację dostępności obiektu. [Zobacz rozwiązanie]

[FIX] Naprawa błędu przepełnienia punktów miłosnych. [Zobacz rozwiązanie]

[FIX] Naprawa ostrzeżenia 'No Primary Key' w tabeli log. [Zobacz rozwiązanie]

[FIX] Naprawa wycieki pamięci w systemie magazynu: Funkcja 'ChangeSize'. [Zobacz rozwiązanie]

[FIX] Naprawa opóżnienia po użyciu Rozproszenia Magii i Leczenia. [Zobacz rozwiązanie]

[FIX] Naprawa błędów z bukietem ślubnym. [Zobacz rozwiązanie]

[FIX] Naprawa przechowywania cen w bazie danych 'myshop_pricelist' podczas dodawania przedmiotów przez Szpule Jedwabiu. [Zobacz rozwiązanie]

[FIX] Naprawa błędu w zapytaniu cache do 'myshop_pricelist' | Błąd 'AsyncSQL: Duplicate nick '16-0' for key 'list_id' (errno: 1062)'. [Zobacz rozwiązanie]

[FIX] Naprawa wyświetlania białych tekstur w dalekim dystansie z modeli LOD. [Zobacz rozwiązanie]

[FIX] Naprawa ruchu na koniu podczas ataku bez posiadania broni. [Zobacz rozwiązanie]

[FIX] Naprawa błędu niepoprawnej pozycji gracza - automatyczne przenoszenie na mapę startową. [Zobacz rozwiązanie]

[FIX] Naprawa błędu gubienia hitów podczas ataku z dzwona na wierzchowcu. [Zobacz rozwiązanie]

[FIX] Naprawa koloru potworów - 'mob_color', [Zobacz rozwiązanie]

[FIX] Naprawa przepełnienia tablicy 'Stones'. [Zobacz rozwiązanie]

[FIX] Naprawa funkcji 'SendScript' poprzez zarządzanie wskaźnikami dla większej stabilności gry. [Zobacz rozwiązanie]

[FIX] Naprawa błędu zamykania sesji gracza przy użyciu polecenia 'SCMD_QUIT'.  [Zobacz rozwiązanie]

[FIX] Naprawa błędu dostępu do nieistniejących indexów graczy. [Zobacz rozwiązanie]

[FIX] Naprawa błędu obliczania rozmiaru pakietu 'HEADER_GC_QUEST_INFO'. [Zobacz rozwiązanie]

[FIX] Naprawa błędu inicjalizacji liczby materiałów w 'InitializeRefineTable'. [Zobacz rozwiązanie]

[FIX] Naprawa awarii rdzenia gry przy braku wskaźnika właściciela w 'ClearMountAttributeAndAffect'. [Zobacz rozwiązanie]

[FIX] Naprawa błędu przenoszenia tekstu z czatu w okno protokołu wiadomości. [Zobacz rozwiązanie]

[FIX] Naprawa błędu aktywacji zakładki 'Wszystkie' w protokole wiadomości. [Zobacz rozwiązanie]

[FIX] Naprawa błędu opóźnionego wyświetlania obrażeń po śmierci potworów. [Zobacz rozwiązanie]

[FIX] Naprawa błędu wczytywania pliku etc_drop_item gdy name ma koreańskie nazwy.[Zobacz rozwiązanie]

[FIX] Naprawa błędu yang buga w systemie budowania terenu Gildii. [Zobacz rozwiązanie]

[FIX] Naprawa błędu z wyszukiwaniem gracza przez nazwę. [Zobacz rozwiązanie]

[FIX] Naprawa awarii rdzenia gry spowodowanego usuwaniem przedmiotu źródłowego w procesie ulepszania. [Zobacz rozwiązanie]

[FIX] Naprawa błędu opóźnionego efektu umiejętności berserk u Wojowniczki. [Zobacz rozwiązanie]

[FIX] Naprawa błędu związanego z interakcjami podczas otwierania prywatnego sklepu. [Zobacz rozwiązanie]

[FIX] Naprawa błędu graficznego w animacji czekania z wędką u Wojowniczki. [Zobacz rozwiązanie]

[FIX] Naprawa błędu powodującego crash clienta gry po oznaczeniu nowego targetu przyciskiem tab gdy w pobliżu nie było celów.

[FIX] Naprawa błędu w Alchemii Smoczych Kamieni - nieprawidłowe sprawdzanie wolnych slotów. [Zobacz rozwiązanie]

[FIX] Zabezpieczenie autoryzacji do listy znajomych przed flood exploitem. [Zobacz rozwiązanie]

[FIX] Naprawa błędu dodawania gracza do listy znajomych, gdy gracz jest już naszym znajomym. [Zobacz rozwiązanie]

[FIX] Zabezpieczenie funkcji dodawania komentarzy w Gildii przed nadużyciami. [Zobacz rozwiązanie]

[FIX] Naprawa błędu pustego zestawu tekstur. [Zobacz rozwiązanie]

[FIX] Naprawa błędu usuwania członka grupy przez wykluczenie na pasku targetu. [Zobacz rozwiązanie]

[FIX] Naprawa błędu ataku dystansowego z uwzględnieniem pozycji gracza na wierzchowcu. [Zobacz rozwiązanie]

[FIX] Naprawa błędu dodawania pustych komentarzy w systemie Gildii. [Zobacz rozwiązanie]

[FIX] Naprawa błędu umożliwiającego zabicie gracza w trybie obserwatora podczas wojny Gildii. [Zobacz rozwiązanie]

[FIX] Naprawa błędu, który uniemożliwiał włączenie klienta gry w trybie pełnoekranowym.

[FIX] Naprawa błędu wyłączania efektu toggle dla umiejętności po śmierci. [Zobacz rozwiązanie]

[FIX] Naprawa wycieku pamięci w 'CShopManager'. [Zobacz rozwiązanie]

[FIX] Naprawa błędu braku kontroli 'nullptr' dla 'pkItem' w funkcji 'item_destroy_event'. [Zobacz rozwiązanie]

[FIX] Naprawa błędu bezpieczeństwa w funkcji 'EncodeInsertPacket' wskaźnik 'ent' nie ma kontroli nullpr. [Zobacz rozwiązanie]

[FIX] Naprawa błędu niezgodności struktury dla pakietu 'TPacketGCItemGroundAdd'. [Zobacz rozwiązanie]

[FIX] Naprawa błędu w którym ilość yang na ziemi przekraczała bufor 255 i wyświetlało niepoprawną ilość.

[FIX] Naprawa błędu dereferencji nullowego wskaźnika w funkcji 'item_remove'. [Zobacz rozwiązanie]

[FIX] Naprawa błędu z ustawieniami klawiatury gdy używałeś ruchu i zacząłeś edytować przepisanie postać traciłeś kontrolę nad postacią.

[FIX] Naprawa krytycznego błędu powodującego cofkę i crash game podczas wyłączenia serwera.

[FIX] Naprawa wielu drobnych błędów popraw bezpieczeństwa których nie jestem tu wszystkich wypisać bo lista była bardzo długa.

[NEW] Dodano nową stałą konfiguracyjną do ograniczenia poziomu dla użycia efektu rozproszenia - leczenia usuwającego affecty. [Zobacz rozwiązanie] 

[NEW] Dodano nowe makro do określenia czy ma być wymagane zdjęcie zbroi podczas otwierania sklepu prywatnego. 

[NEW] Nowa funkcja do generowania unikalnego identyfikatora. [Zobacz rozwiązanie]

[NEW] Zaimplementowano mapę - Dolina Orków. 

[NEW] Dwa nowe powiadomienia o błędach w funkcji dodawania komentarzy do gildii dla pustych wiadomości i przekroczenia znaków.

[NEW] Dodano atlas dla map pierwszych, doliny orków i uporządkowano strukturę mini map.

[NEW] Zaimplementowano mapy miast drugich z mini mapami. 

[NEW] Zaimplementowano mapę - Góra Sohan.

[NEW] Zaimplementowano kostiumy imprezowe: Kostium Muszkietera i Kostium Pokojówki - Fryzura Muszkietera i Czepek Pokojówki. [Zobacz rozwiązanie]

[NEW] System wierzchowców podążających za postacią only c++ bez questa. 

[CodeReview] Refaktoryzacja funkcji 'CQuestManager::Reload()'. [Zobacz rozwiązanie] 

[CodeReview] Teraz zasoby będą ładowane asynchronicznie z wykorzystaniem wielowątkowości - szybsze ładowanie do gry.

[CodeReview] Pełna refaktoryzacja UserInterface.cpp zwiększenie performance ładowania zasobów.

[CodeReview] Refaktoryzacja funkcji 'CHARACTER::'Create' generowanie vid przez nową funkcję GenerateUniqueID. [Zobacz rozwiązanie]

[CodeReview] Drobne ulepszenia w liście inicjalizującej 'CItem' agregatna inicjalizacja dla 'm_alSockets' i 'm_aAttr'. 

[CodeReview] Zakończona pełna refaktoryzacja item.cpp / item.h poprawki bezpieczeństwa i optymalizacyjne. 

[REMOVE] Usunięto wszystkie kamienie duszy (+5 do +9) oraz kamień traumy, masakry, głupoty, trucizny.

[REMOVE] Usunięto obsługę przedmiotów 71051 i 71052 w char_item.cpp - zmianka/dodanie 6/7.

[REMOVE] Usunięto nieużywany kod modułu 'TrafficProfiler'. [Zobacz rozwiązanie]

Wersja: v1.4 🚀 status: wydania

  Pokaż ukrytą zawartość

Changelog

[UPDATE] Nowy interfejs tworzenia postaci (oficjalna wersja). [Zobacz rozwiązanie]

[UPDATE] Zaktualizowano `serverinfo.py` teraz adres IP zdefiniowano na początku pliku w celu łatwiejszej konfiguracji. [Zobacz rozwiązanie]

[UPDATE] Dodano kamienie Metin z oficjalnego patch'a 13.3. [Zobacz rozwiązanie]

[UPDATE] Zaktualizowano przyciski potwierdzające w oknach popup. [Zobacz rozwiązanie]

[UPDATE] Zaktualizowano pozycję startową po pierwszym zalogowaniu do gry dla wszystkich królestw. [Zobacz rozwiązanie] 

[UPDATE] Szybsze podnoszenie przedmiotów. [Zobacz rozwiązanie]

[UPDATE] Wyświetlenie ilości sztuk przy wydropionych lub wyrzuconych przedmiotach na ziemie. [Zobacz rozwiązanie]

[UPDATE] Nowy format wyświetlania ceny przedmiotu podczas sprzedaży. [Zobacz rozwiązanie]

[UPDATE] Zoptymalizowano wszystkie standardowe animacje emocji. [Zobacz rozwiązanie]

[UPDATE] Zaktualizowano Granny2 do wersji 2.11.8. [Zobacz rozwiązanie]

[UPDATE] Usunięto locale_string.txt z serwera teraz jest czytane tylko z klienta gry. [Zobacz rozwiązanie]

[UPDATE] Zaktualizowano 258 komunikatów chatu w źródle gry do locale_string.txt czytanego z klienta gry.  [Zobacz rozwiązanie]

[UPDATE] Zaktualizowano skrypt panel.sh do wersji v1.1 dodano dwie nowe opcje kompilacji questów oraz kompilacji źródła.

[UPDATE] Ulepszono ładowanie do gry, pasek ładowania ma teraz płynną animację i procent załadowania. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd z wydajnością gry spowodowaną przypisaniem partycji D do napędu DVD/CD-ROM. [Zobacz rozwiązanie]

[FIX] Naprawiono sprawdzania brakujących nagłówków podczas analizy w procesie logowania. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd pozostałych efektów umiejętności po zmianie profesji. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd użycia umiejętności Czarowane Ostrze lub Aura Miecza bez założonej broni. [Zobacz rozwiązanie]

[FIX] Naprawiono komendy 'level' które niepotrzebnie resetowała umiejętności zamiast zmieniać tylko poziom. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd bezpieczeństwa w funkcji związanej z zadaniami - 'pc_select_vid'. [Zobacz rozwiązanie]

[FIX] Naprawiono efektu aktywacji auto potów na dodatkowych stronach w ekwipunku. [Zobacz rozwiązanie]

[FIX] Naprawiono funkcji 'CheckMoving' która nie uwzględniała przedmiotów 3-slotowych podczas sprawdzania. [Zobacz rozwiązanie]

[FIX] Naprawiono krytycznego błędu z kopiowanie przedmiotów poprzez funkcję od zmiany nazwy gracza 'pc_change_name'. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd umożliwiającego atakowanie sklepów graczy. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd w tabeli 'player_deleted' podczas używania postfix w tabelach. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd zliczania potworów w funkcji 'd.count_monster'. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd powodujący opóźnienia, wywołany częstym wsiadaniem i zsiadaniem z konia. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd umożliwiający karmienie martwego konia. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd resetujący specular. [Zobacz rozwiązanie]

[FIX] Naprawiono krytyczny błąd umożliwiający wykonanie SQL inject w funkcjach do obsługi przyjaciół. [Zobacz rozwiązanie]

[FIX] Naprawiono krytyczny błąd umożliwiający wykonanie SQL inject w funkcji od tworzenia gildii. [Zobacz rozwiązanie]

[FIX] Naprawiono odświeżanie listy affectów po odwołaniu konia. [Zobacz rozwiązanie]

[NEW] Przenoszenie przedmiotów do magazynu i handlu poprzez PPM. [Zobacz rozwiązanie]

[NEW] Nowy typ dla przedmiotów - 'ITEM_GACHA'. [Zobacz rozwiązanie]

[NEW] Dodano nowe mikstury - Czerwona Mikstura (XXL) oraz Niebieska Mikstura (XXL). [Zobacz rozwiązanie]

[NEW] Wprowadzono bibliotekę 'libfmt' w celu optymalizacji i zwiększenia bezpieczeństwa procesu formatowania tekstu. [Zobacz rozwiązanie]

[NEW] Zapobieganie nałożeniu słabszego buffa. [Zobacz rozwiązanie]

[NEW] Dostosowanie koloru nazwy gracza w przedmiotach zdobytych przez wroga. [Zobacz rozwiązanie]

[NEW] Automatyczne oznaczanie potworów poprzez klawisz 'TAB'. [Zobacz rozwiązanie]

[NEW] Dodano nowy 6 taniec Gangsam style. [Zobacz rozwiązanie]

[NEW] Dodano handler obsługujący przywoływanie peta przez pieczęć model zwierzaka wczytywany z 'value0'. [Zobacz rozwiązanie]

[NEW] Dodano nowy typ przedmiotu do przywoływania zwierzaka - 'ITEM_PET'. [Zobacz rozwiązanie]

[NEW] Dodano wyświetlanie bonusów w pieczęciach petów wczytywanych z bazy danych. [Zobacz rozwiązanie]

[NEW] Wyświetlanie okna gry w centrum pulpitu. [Zobacz rozwiązanie]

[NEW] Wskazówki podczas ładowania do gry (like official). [Zobacz rozwiązanie]

[NEW] Wdrożono mechanizm ładowania zasobów z folderów 'npc_pet' i 'npc_mount'. [Zobacz rozwiązanie]

[NEW] Dodano efekt podczas przywoływania zwierzaka. [Zobacz rozwiązanie]

[NEW] Dodano modele standardowych zwierzaków. [Zobacz rozwiązanie]

Wersja: v1.3 🚀 status: wydana

  Pokaż ukrytą zawartość

Changelog

[FIX] Wprowadzono zabezpieczenie mechaniki wydobycia poprzez kontrolę mapy i dystansu. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd, w którym nad postaciami i potworami pojawiały się nazwy sklepów. [Zobacz rozwiązanie]

[FIX] Naprawiono 'ghost mode hack', który umożliwiał postaci powstanie w innym miejscu niż padła z powodu braku kontroli w funkcji ruchu. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd, który powodował awarię rdzenia gry podczas korzystania z 'cube r_list'. [Zobacz rozwiązanie]

[FIX] Poprawiono teksturę modelu Seon-Pyeong. [Zobacz rozwiązanie]

[FIX] Dodano zabezpieczenia 'db_port', 'p2p_port' oraz dostępu zdalnego do 'adminpage'. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd generujący się podczas ulepszania magicznym metalem związany z nierozpoznanym typem 'scrolla' do ulepszania. [Zobacz rozwiązanie]

[FIX] Naprawiono zakładanie pasów przez ustawienie typu pasów w 'item_proto'. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd związany z przenoszeniem niedozwolonych typów przedmiotów z magazynu do inwentarza pasa. [Zobacz rozwiązanie]

[FIX] Naprawiono brakujący efekt świecenia - specular dla przedmiotów na +7/8/9. [Zobacz rozwiązanie]

[FIX] Naprawiono awarię rdzenia gry, która była spowodowana dzieleniem wartości HP potwora przez zero w mob_proto. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd związany ze zmianą pasa na pas z mniejszą ilością odblokowanych slotów, który blokował dostęp do pozostałych przedmiotów w pasie. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd, który uniemożliwiał kliknięcie przycisku od kostiumów i itemshop w ekwipunku. [Zobacz rozwiązanie]

[UPDATE] Aktywowano atrybut TOGGLE dla umiejętności nakładających efekt. [Zobacz rozwiązanie]

[UPDATE] Dostosowano znikanie potworów po śmierci w celu poprawy wydajności. [Zobacz rozwiązanie]

[UPDATE] Nowy interfejs wyboru królestwa (oficjalna wersja). [Zobacz rozwiązanie]

[UPDATE] Nowy interfejs wyboru postaci (oficjalna wersja). [Zobacz rozwiązanie] 

[NEW] Rozszerzenie liczby stron w ekwipunku do 4. [Zobacz rozwiązanie] 

[NEW] Dodano 6 umiejętność dla klas Ninji i Wojownika. [Zobacz rozwiązanie]

[NEW] Dodano efekt po użyciu peleryny męstwa, zgodny z oficjalnym serwerem. [Zobacz rozwiązanie]

[NEW]Wyświetlono procent w oknie ulepszania przedmiotów. [Zobacz rozwiązanie]

[NEW] Dodano kolor efektu celu zgodny z kolorem królestwa. [Zobacz rozwiązanie]

[NEW] Rozszerzono ilość slotów na postać do 5. [Zobacz rozwiązanie] 

[NEW] Nowa funkcja, która ustawia wybór postaci według ostatniego wyboru. [Zobacz rozwiązanie]

[CodeReview] Refaktoryzacja kodu w PythonApplication, dodano nowe funkcje. [*ALFA TEST*]

[CodeReview] Zrefaktoryzowano funkcje 'Cube_request_result_list' i 'Cube_request_material_info' + 'FN_check_valid_npc'. [Zobacz rozwiązanie]

[CodeReview] Przeprowadzono refaktoryzację funkcji 'SetTargetName', 'SetSelfName', 'GetNameFromSelf' oraz 'GetNameFromTarget'. [Zobacz rozwiązanie]

[CodeReview] Zrefaktoryzowano funkcję 'mining' w celu poprawy czytelności, bezpieczeństwa i wydajności, oraz zaktualizowano typy danych. [Zobacz rozwiązanie]

Wersja: v1.2 🚀 status: wydana

  Pokaż ukrytą zawartość

Changelog

[FIX] Naprawiony błąd, w którym polecenie /war nazwa_gildii (z ujemną wartością) prowadziło do awarii serwera. [Zobacz rozwiązanie]

[FIX] Dodano zabezpieczenie funkcji whisper przed nadmiernym wysyłaniem wiadomości prywatnych oraz przed wyrzucaniem graczy przez 'kick hack'. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd, który umożliwiał podnoszenie przedmiotów innych graczy w grupie, gdy lider grupy był offline. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd umożliwiający obejście limitu znaków w nazwie postaci. [Zobacz rozwiązanie]

[FIX] Naprawiono mechanikę umiejętności 'Strach' zgodnie z jej działaniem na oficjalnym serwerze. [Zobacz rozwiązanie]

[FIX] Poprawiono mechanikę bonusów: obrażenia dodawane do PE/PŻ teraz uwzględniają wartość atrybutu. [Zobacz rozwiązanie]

[FIX] Zablokowano wykonywanie obrażeń w trybie obserwacji wojny. [Zobacz rozwiązanie]
[FIX] Dodano warunek w funkcji Damage, który sprawdza, czy pAttacker jest nullptr; w przypadku tego warunku funkcja zwraca false i kończy działanie. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd związany ze zmianą królestwa, który umożliwiał graczom dołączenie do gildii w poprzednim królestwie, mimo że już do niego nie należeli. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd z utrzymującym się bonusem punktów życia (HP) po rozwiązaniu grupy. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd w obliczeniach punktów życia podczas zmiany założonego przedmiotu. [Zobacz rozwiązanie]

[FIX] Naprawiono problem z ujemnymi punktami życia i energii, które powodowały przepełnienie (overflow). [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany kod w funkcji Damage, który obsługiwał Pirata Tanake. Pracuję nad nową wersję obsługi tego zdarzenia. [Zobacz rozwiązanie]

[UPDATE] Ulepszenia w wyświetlaniu poziomu i rangi oraz przedrostek dla Game Masterów. [Zobacz rozwiązanie]

[NEW] Wprowadzono nową funkcję "BlockBuffForGM", która umożliwia blokowanie rzucania buffa przez GM na gracza, a także odwrotnie. Funkcja zwraca wartość logiczną. [Zobacz rozwiązanie]

[NEW] Teraz po użyciu zielonej i fioletowej mikstury pojawi się dodatkowy efekt! [Zobacz rozwiązanie]

[NEW] Dodano zmienną 'maxLevelForStatPoints', co umożliwia dostosowanie w konfiguracji poziomu, do którego statystyki będą rozdawane. [Zobacz rozwiązanie]

[NEW] Dodano 'char_calc.cpp' z funkcją 'CalculateMagicDamage', obliczającą ostateczne obrażenia magiczne na podstawie 'initialDamage', 'magicAttBonusPer' i 'meleeMagicAttBonusPer'. [*ALFA TEST*]

[NEW] Dodano wyświetlanie poziomu postaci podczas handlu z graczem. [Zobacz rozwiązanie]

[NEW] Dodano nowe opcje systemowe umożliwiające dostosowywanie środowiska. [Zobacz rozwiązanie]

[NEW] Dodano nowy parametr konfiguracyjne określający możliwość włączenia/wyłączenia globalnego chatu dla graczy. [Zobacz rozwiązanie]

[CodeReview] Przeprowadzono refaktoryzację funkcji 'CInputLogin::CharacterCreate'. [Zobacz rozwiązanie]

Wersja: v1.1 🚀 status: wydana

  Pokaż ukrytą zawartość

Changelog

[FIX] Naprawiono odświeżanie poziomu postaci w czasie rzeczywistym przy nazwie gracza. [Zobacz rozwiązanie]

[FIX] Naprawiono problem związany z występowaniem ujemnych punktów życia po śmierci postaci. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd, który skutkował awarią rdzenia gry w przypadku braku nowej linii na końcu pliku "index". [Zobacz rozwiązanie]

[FIX] Naprawiono błąd w funkcji 'do_shutdown', który rozwiązuje problemy z bezpieczeństwem poprzez wprowadzenie autoryzacji. [Zobacz rozwiązanie]

[FIX] Naprawiono awarię rdzenia gry związaną z dodawaniem postaci do gildii, eliminując możliwość awarii podczas próby dodania potwora lub NPC. [Zobacz rozwiązanie]

[FIX] Poprawiono błąd w funkcji 'npc_get_leader_vid' - teraz sprawdzamy istnienie drużyny i obecność lidera przed wywołaniem funkcji, eliminując awarie gry. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd z bonusem "Odporność na omdlenia" - działa teraz poprawnie za każdym razem. [Zobacz rozwiązanie]

[NEW] Dostępna jest opcja konfiguracyjna do bazy danych! Ustaw MIRROR2DB = 0 i PROTO_FROM_DB = 1, aby łatwo przełączać się między odczytem proto w formacie SQL lub TXT. [Zobacz rozwiązanie]

[NEW] Teraz możesz kupować przedmioty ze sklepu za 0 yang, a opis przedmiotu automatycznie ustawiany jest jako "Przedmiot Darmowy". [Zobacz rozwiązanie]

Wersja: v1.0 🚀 status: wydana

  Pokaż ukrytą zawartość

Changelog

[FIX] Naprawiono błąd z czarowanym ostrzem. Teraz punkty życia są prawidłowo przywracana, zamiast być odejmowanymi. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd powodujący, że postać po zalogowaniu pozostawała niewidoczna. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd związany z użyciem całego stacku przedmiotów. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd powodujący awarię gry związany z nullpointerem w 'setQuestFlag' i 'getQuestFlag'. [Zobacz rozwiązanie]

[FIX] Naprawiono automatyczną wymianę przedmiotów w ekwipunku przy braku wolnych slotów. [Zobacz rozwiązanie]

[FIX] Zablokowano interakcję z przedmiotami aktualnie noszonymi przez postać. [Zobacz rozwiązanie]

[FIX] Naprawiono błąd, pozwalający utworzenie gildii bez wymaganego poziomu. [Zobacz rozwiązanie]

[FIX] Naprawiono startowanie procesu bazy danych poprzez problem z nieodpowiednim kodowaniem znaków. [Zobacz rozwiązanie]

[FIX] Naprawiono dwuznaczną kolumną 'name' podczas ładowania danych o monarchii. [Zobacz rozwiązanie]

[FIX] Naprawiono problem z zablokowanym kursorem myszy podczas obracania kamery i jednoczesnym minimalizowaniu okna gry. [Zobacz rozwiązanie]

[REMOVE] Usunięto kod odpowiadający za sprawdzanie licencji serwera, który uniemożliwiał uruchomienie procesu 'game'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany kod modułu 'hackshield'. [Zobacz rozwiązanie]

[REMOVE] Usunięto nieużywany kod modułu 'xtrap'. [Zobacz rozwiązanie]

[CodeReview] Przeprowadzono rewizję kodu w pliku: 'PythonApplicationProcedure.cpp'. [Zobacz rozwiązanie]

[CodeReview] Zoptymalizowano strukturę 'DynamicCharacterPtr' zgodnie z najnowszym standardem. [Zobacz rozwiązanie]

Jak oceniacie source?

Opublikowano
W dniu 17.09.2023 o 14:24, Bartosz napisał(a):

potrzebny

Jaka wersja VS kompilować binke?

Opublikowano

Ja poczekam na wersję finalną 🙂 oby nie trwało to kilka lat 😉

Opublikowano
  • Autor

Entry będzie cały czas rozwijane. Na co konkretnie czekasz? 🤔

Opublikowano
1 minutę temu, Sevence napisał(a):

Entry będzie cały czas rozwijane. Na co konkretnie czekasz? 🤔

Chciałem dodać kilka systemów np wikidropu panel dungów itp ale jak to dodam to i tak będę musiał później sam dodawać Twoje fixy a z tym już sobie nie poradzę tym bardziej że jak dodaje systemy to zawsze coś dodam żle;) i muszę zaczynać od nowa

Opublikowano

@Sevence trzy pytania

odpalam na dwóch urządzeniach czyli wina klienta (przy odpaleniu są lagi zawiesza sie na ok 5 sek ) coś wiadomo na ten temat ?

wiadomo kiedy wypuścisz 1.7 i czy będzie dodawany jakiś nowy typ ekwipunku ?

Opublikowano
  • Autor

@Roshi Nic mi na ten temat nie wiadomo mało osób testuje jeszcze to źródło. Mogę prosić o jakiś filmik z tych 'lagów'? O jaki nowy typ ekwipunku pytasz? Zasoby są ładowane asynchronicznie wielowątkowo to może powodować problemy na starszym sprzęcie. 

Opublikowano

w sensie czy coś będziesz edytować w panelu ekwipunku jakieś dodatkowe okna czy coś w tym stylu 😉 bo nwm jak wykorzystać domyślne niby do pasów to jest gdzies slyszalem, ale nwm ) image.png.fb4a88f9f4c4531ab6fa077f110aaa8f.png

co do zlagowania clienta to jak napotkam ponownie to dam znać bo zauważyłem, że klient po kilku uruchomieniach działa prawidłowo

 

no nic czekamy na następne aktualizacje 😉

Opublikowano
  • Autor

Będą systematycznie wdrażane i ciągle ulepszany. 

  • 3 tygodnie później...
Opublikowano

Gdy dodaje podgląd dropu wyskakuje mi błąd

 

Cytat

1>C:\Klient gry\001 klient src\source\UserInterface\PythonNetworkStreamPhaseGame.cpp(4595,9): error C3861: "SendSequence": identyfikatora nie odnaleziono
1>(kompilowanie pliku źródłowego „/source/UserInterface/PythonNetworkStreamPhaseGame.cpp”)

 

dobra poradziłem sobie a podląd dropu i tak nie działa 😄

EDIT jednak działa

 

1111.png.ee648830ffcb35f975a5e8c1c89ecd88.png

 

Czas dodać kilka innych rzeczy

 

 

Coś ten dump proto nie działa 😕

🙂

Edytowane przez Nietykalny

Opublikowano

Czy aktualna wersja plików może służyć już jako podstawka pod serwer? Widzę, że jest tu wiele przepisanych funkcji, które nigdy nie były testowane pod większą ilość ludzi online. 

Opublikowano
8 minut temu, avertus napisał(a):

Czy aktualna wersja plików może służyć już jako podstawka pod serwer? Widzę, że jest tu wiele przepisanych funkcji, które nigdy nie były testowane pod większą ilość ludzi online. 

jeśli dobrze rozbudujesz, obecnie pliki są bardzo wyczyszczone, ciągle aktualizowane ulepszając podstawkę 

Edytowane przez Roshi

Opublikowano
  • Autor

Wkrótce zostanie wydana wersja v1.7 warto poczekać. 🙂

Opublikowano

Potrzeba w czymś pomocy?

Opublikowano
  • Autor

@bercik231 Szukam testerów, którzy są czujni na każdego rodzaju najmniejsze błędy i  będę je zgłaszać. Jeśli chcesz dołączyć napisz mi dane do konta na PW i z głównego tematu pobierz sobie live-server-demo to patcher z którego można pobrać aktualną wersję nad którą pracuje. Jak masz wiedzę techniczną to możesz przyłączyć się do rozwoju od wersji v1.7 będzie dostępna na githubie mile widziane pull requesty. 

  • Sevence zmienił(a) tytuł na Entry-core - stabilne source dla Twojego serwera - wersja v1.7
Opublikowano
  • Autor

Wersja EntryCore: v1.7 została właśnie wydana, enjoy. 😁

Opublikowano

Dzięki wielkie!

Opublikowano
  • Autor

Dzień dobry, 

 

Dziś chciałbym podzielić się z Wami ekscytującymi nowościami w najnowszej wersji EntryCore v1.7. Wprowadziłem wiele istotnych zmian w stosunku do poprzednich wersji, co szczegółowo przedstawia changelog.

 

Nowa konfiguracja plików MSM

Zawsze irytowały mnie dotychczasowe pliki konfiguracyjne do ładowania modeli, więc postanowiłem wprowadzić kilka kluczowych zmian, aby ułatwić ich organizację.

  • Usunąłem zbędne modele, zostawiający jedynie te bazowe.
  • Uporządkowałem grupy i indexy, aktualizując item_proto, co ułatwi dodawanie nowych przedmiotów zachowując kolejność indexów i nic nie zostanie przypadkowo nadpisane. 
  • Zastosowałem nowe formatowanie spacje zamiast tab. 

 

Nowa grupa CostumeData

W grupie ShapeData, nowe zbroje oraz kostiumy były dotychczas klasyfikowane w ten sam sposób. Postanowiłem wprowadzić nową grupę specjalnie dla kostiumów, aby lepiej je zorganizować i oddzielić od zbroi.

Nowa grupa, Group CostumeData, jest przeznaczona specjalnie dla kostiumów. Oto przykładowa struktura:

 

Spoiler
Group CostumeData
{
	PathName "d:/ymir work/pc2/assassin/"

	Group CostumeData00
	{
		CostumeIndex 5000
		Model "assassin_costume_tailcoat.gr2"
		SourceSkin "assassin_costume_tailcoat.dds"
		TargetSkin "assassin_costume_tailcoat.dds"
	}
}

 

 

Dynamiczne liczenie grup

Jak pewnie zauważyliście, nie ma już atrybutów takich jak HairDataCount, ShapeDataCount czy CostumeDataCount. Możecie zapomnieć o ręcznym aktualizowaniu ilości grup, ponieważ teraz są one liczone dynamicznie. Ważna uwaga: należy odpowiednio numerować grupy, aby były w właściwej kolejności. W przeciwnym razie grupa nie zostanie zaindeksowana.

 

Porównanie plików MSM

Przed aktualizacją (v1.6):

Spoiler
ScriptType            RaceDataScript

BaseModelFileName     "d:/ymir work/pc2/assassin/assassin_novice.GR2"


Group HairData
{
	PathName	"d:/ymir Work/pc2/assassin/"

	HairDataCount 			56
	Group HairData00
	{	
		HairIndex			0
		Model				"hair/hair_1_1.gr2"
		SourceSkin			"hair/hair_1_1.dds"
		TargetSkin			"assassin_hair_01.dds"
	}
	Group HairData01
	{	
		HairIndex			1
		Model				"hair/hair_1_1.gr2"
		SourceSkin			"hair/hair_1_1.dds"
		TargetSkin			"assassin_hair_01_white.dds"
	}
	Group HairData02
	{	
		HairIndex			2
		Model				"hair/hair_1_1.gr2"
		SourceSkin			"hair/hair_1_1.dds"
		TargetSkin			"assassin_hair_01_gold.dds"
	}
	Group HairData03
	{	
		HairIndex			3
		Model				"hair/hair_1_1.gr2"
		SourceSkin			"hair/hair_1_1.dds"
		TargetSkin			"assassin_hair_01_red.dds"
	}
	Group HairData04
	{	
		HairIndex			4
		Model				"hair/hair_1_1.gr2"
		SourceSkin			"hair/hair_1_1.dds"
		TargetSkin			"assassin_hair_01_brown.dds"
	}
	Group HairData05
	{	
		HairIndex			5
		Model				"hair/hair_1_1.gr2"
		SourceSkin			"hair/hair_1_1.dds"
		TargetSkin			"assassin_hair_01_black.dds"
	}
	Group HairData06
	{	
		HairIndex			2001
		Model				"hair/hair_2_1.gr2"
		SourceSkin			"hair/hair_2_1.dds"
		TargetSkin			"hair/hair_2_1.dds"
	}
	Group HairData07
	{	
		HairIndex			2002
		Model				"hair/hair_2_1.gr2"
		SourceSkin			"hair/hair_2_1.dds"
		TargetSkin			"hair/hair_2_2.dds"
	}
	Group HairData08
	{	
		HairIndex			2003
		Model				"hair/hair_2_1.gr2"
		SourceSkin			"hair/hair_2_1.dds"
		TargetSkin			"hair/hair_2_3.dds"
	}
	Group HairData09
	{	
		HairIndex			2004
		Model				"hair/hair_2_1.gr2"
		SourceSkin			"hair/hair_2_1.dds"
		TargetSkin			"hair/hair_2_4.dds"
	}
	Group HairData10
	{	
		HairIndex			2005
		Model				"hair/hair_3_1.gr2"
		SourceSkin			"hair/hair_3_1.dds"
		TargetSkin			"hair/hair_3_1.dds"
	}
	Group HairData11
	{	
		HairIndex			2006
		Model				"hair/hair_3_1.gr2"
		SourceSkin			"hair/hair_3_1.dds"
		TargetSkin			"hair/hair_3_2.dds"
	}
	Group HairData12
	{	
		HairIndex			2007
		Model				"hair/hair_3_1.gr2"
		SourceSkin			"hair/hair_3_1.dds"
		TargetSkin			"hair/hair_3_3.dds"
	}
	Group HairData13
	{	
		HairIndex			2008
		Model				"hair/hair_3_1.gr2"
		SourceSkin			"hair/hair_3_1.dds"
		TargetSkin			"hair/hair_3_4.dds"
	}
	Group HairData14
	{	
		HairIndex			2009
		Model				"hair/hair_4_1.gr2"
		SourceSkin			"hair/hair_4_1.dds"
		TargetSkin			"hair/hair_4_1.dds"
	}
	Group HairData15
	{	
		HairIndex			2010
		Model				"hair/hair_4_1.gr2"
		SourceSkin			"hair/hair_4_1.dds"
		TargetSkin			"hair/hair_4_2.dds"
	}
	Group HairData16
	{	
		HairIndex			2011
		Model				"hair/hair_4_1.gr2"
		SourceSkin			"hair/hair_4_1.dds"
		TargetSkin			"hair/hair_4_3.dds"
	}
	Group HairData17
	{	
		HairIndex			2012
		Model				"hair/hair_4_1.gr2"
		SourceSkin			"hair/hair_4_1.dds"
		TargetSkin			"hair/hair_4_4.dds"
	}

	Group HairData18
	{	
		HairIndex			2013
		Model				"hair/hair_6_1.gr2"
		SourceSkin			"hair/hair_6_1.dds"
		TargetSkin			"hair/hair_6_1.dds"
	}
	Group HairData19
	{	
		HairIndex			2014
		Model				"hair/hair_5_1.gr2"
		SourceSkin			"hair/hair_5_1.dds"
		TargetSkin			"hair/hair_5_1.dds"
	}	
	Group HairData20
	{	
		HairIndex			2015
		Model				"hair/hair_7_1.gr2"
		SourceSkin			"hair/hair_7_1.dds"
		TargetSkin			"hair/hair_7_1.dds"
	}
	Group HairData21
	{	
		HairIndex			2016
		Model				"hair/hair_8_1.gr2"
		SourceSkin			"hair/hair_8_1.dds"
		TargetSkin			"hair/hair_8_1.dds"
	}	
	Group HairData22
	{	
		HairIndex			2017
		Model				"hair/hair_9_1.gr2"
		SourceSkin			"hair/hair_9_1.dds"
		TargetSkin			"hair/hair_9_1.dds"
	}
	Group HairData23
	{	
		HairIndex			2018
		Model				"hair/hair_10_1.gr2"
		SourceSkin			"hair/hair_10_1.dds"
		TargetSkin			"hair/hair_10_1.dds"
	}
	Group HairData24
	{	
		HairIndex			5000
		Model				"hair/hair_costume_musketeer.gr2"
		SourceSkin			"hair/hair_costume_musketeer.dds"
		TargetSkin			"hair/hair_costume_musketeer.dds"
	}
	Group HairData25
	{	
		HairIndex			5002
		Model				"hair/hair_14_1.gr2"
		SourceSkin			"hair/hair_14_1.dds"
		TargetSkin			"hair/hair_14_1.dds"
	}
	Group HairData26
	{	
		HairIndex			5005
		Model				"hair/hair_15_1.gr2"
		SourceSkin			"hair/hair_15_1.dds"
		TargetSkin			"hair/hair_15_1.dds"
	}
	Group HairData27
	{	
		HairIndex			5003
		Model				"hair/hair_16_1.gr2"
		SourceSkin			"hair/hair_16_1.dds"
		TargetSkin			"hair/hair_16_1.dds"
	}
	Group HairData28
	{	
		HairIndex			5004
		Model				"hair/hair_17_1.gr2"
		SourceSkin			"hair/hair_17_1.dds"
		TargetSkin			"hair/hair_17_1.dds"
	}
	Group HairData29
	{	
		HairIndex			5027
		Model				"hair/hair_20_1.gr2"
		SourceSkin			"hair/hair_20_1.dds"
		TargetSkin			"hair/hair_20_1.dds"
	}
	Group HairData30
	{	
		HairIndex			5023
		Model				"hair/hair_13_1.gr2"
		SourceSkin			"hair/hair_13_1.dds"
		TargetSkin			"hair/hair_13_1.dds"
	}
	Group HairData31
	{	
		HairIndex			5024
		Model				"hair/hair_18_1.gr2"
		SourceSkin			"hair/hair_18_1.dds"
		TargetSkin			"hair/hair_18_1.dds"
	}
	Group HairData32
	{	
		HairIndex			5025
		Model				"hair/hair_19_1.gr2"
		SourceSkin			"hair/hair_19_1.dds"
		TargetSkin			"hair/hair_19_1.dds"
	}
	Group HairData33
	{	
		HairIndex			5028
		Model				"hair/hair_22_1.gr2"
		SourceSkin			"hair/hair_22_1.dds"
		TargetSkin			"hair/hair_22_3.dds"
	}
	Group HairData34
	{	
		HairIndex			5029
		Model				"hair/hair_22_1.gr2"
		SourceSkin			"hair/hair_22_1.dds"
		TargetSkin			"hair/hair_22_2.dds"
	}
	Group HairData35
	{	
		HairIndex			5030
		Model				"hair/hair_22_1.gr2"
		SourceSkin			"hair/hair_22_1.dds"
		TargetSkin			"hair/hair_22_1.dds"
	}
	Group HairData36
	{	
		HairIndex			5031
		Model				"hair/hair_23_1.gr2"
		SourceSkin			"hair/hair_23_1.dds"
		TargetSkin			"hair/hair_23_1.dds"
	}
	Group HairData37
	{	
		HairIndex			5033
		Model				"hair/hair_24_1.gr2"
		SourceSkin			"hair/hair_24_1.dds"
		TargetSkin			"hair/hair_24_1.dds"
	}
	Group HairData38
	{	
		HairIndex			5035
		Model				"hair/hair_24_1.gr2"
		SourceSkin			"hair/hair_24_1.dds"
		TargetSkin			"hair/hair_24_2.dds"
	}
	Group HairData39
	{	
		HairIndex			5037
		Model				"hair/hair_24_1.gr2"
		SourceSkin			"hair/hair_24_1.dds"
		TargetSkin			"hair/hair_24_3.dds"
	}
	Group HairData40
	{	
		HairIndex			5039
		Model				"hair/hair_24_1.gr2"
		SourceSkin			"hair/hair_24_1.dds"
		TargetSkin			"hair/hair_24_4.dds"
	}
	Group HairData41
	{	
		HairIndex			5041
		Model				"hair/hair_24_1.gr2"
		SourceSkin			"hair/hair_24_1.dds"
		TargetSkin			"hair/hair_24_5.dds"
	}
	Group HairData42
	{
		HairIndex			5026
		Model				"hair/hair_21_1.gr2"
		SourceSkin			"hair/hair_21_1.dds"
		TargetSkin			"hair/hair_21_1.dds"
	}
	Group HairData43
	{
		HairIndex			5045
		Model				"hair/hair_11_1.gr2"
		SourceSkin			"hair/hair_11_1.dds"
		TargetSkin			"hair/hair_11_2.dds"
	}
	Group HairData44
	{
		HairIndex			5046
		Model				"hair/hair_11_1.gr2"
		SourceSkin			"hair/hair_11_1.dds"
		TargetSkin			"hair/hair_11_3.dds"
	}
	Group HairData45
	{
		HairIndex			5047
		Model				"hair/hair_11_1.gr2"
		SourceSkin			"hair/hair_11_1.dds"
		TargetSkin			"hair/hair_11_4.dds"
	}
	Group HairData46
	{
		HairIndex			5048
		Model				"hair/hair_11_1.gr2"
		SourceSkin			"hair/hair_11_1.dds"
		TargetSkin			"hair/hair_11_5.dds"
	}
	Group HairData47
	{
		HairIndex			5049
		Model				"hair/hair_28_1.gr2"
		SourceSkin			"hair/hair_28_1.dds"
		TargetSkin			"hair/hair_28_1.dds"
	}
	Group HairData48
	{
		HairIndex			5050
		Model				"hair/hair_28_1.gr2"
		SourceSkin			"hair/hair_28_1.dds"
		TargetSkin			"hair/hair_28_1.dds"
	}
	Group HairData49
	{
		HairIndex			5051
		Model				"hair/hair_29_1.gr2"
		SourceSkin			"hair/hair_29_1.dds"
		TargetSkin			"hair/hair_29_1.dds"
	}
	Group HairData50
	{
		HairIndex			5052
		Model				"hair/hair_30_1.gr2"
		SourceSkin			"hair/hair_30_1.dds"
		TargetSkin			"hair/hair_30_1.dds"
	}
	Group HairData51
	{
		HairIndex			5053
		Model				"hair/hair_31_1.gr2"
		SourceSkin			"hair/hair_31_1.dds"
		TargetSkin			"hair/hair_31_1.dds"
	}
	Group HairData52
	{
		HairIndex			5054
		Model				"hair/hair_32_1.gr2"
		SourceSkin			"hair/hair_32_1.dds"
		TargetSkin			"hair/hair_32_1.dds"
	}
	Group HairData53
	{
		HairIndex			5055
		Model				"hair/hair_14_1.gr2"
		SourceSkin			"hair/hair_14_1.dds"
		TargetSkin			"hair/hair_14_2.dds"
	}
	Group HairData54
	{
		HairIndex			5057
		Model				"hair/hair_33_1.gr2"
		SourceSkin			"hair/hair_33_1.dds"
		TargetSkin			"hair/hair_33_1.dds"
	}
	Group HairData55
	{
		HairIndex			5059
		Model				"hair/hair_34_1.gr2"
		SourceSkin			"hair/hair_34_1.dds"
		TargetSkin			"hair/hair_34_1.dds"
	}
}

Group ShapeData
{
	PathName	"d:/ymir Work/pc2/assassin/"

	ShapeDataCount				112

	Group ShapeData00
	{
		ShapeIndex			0

		Model				"assassin_novice.GR2"
		SourceSkin			"assassin_novice_red.dds"
		TargetSkin			"assassin_novice_red.dds"
	}
	Group ShapeData01
	{
		ShapeIndex			1

		Model				"assassin_novice.GR2"
		SourceSkin			"assassin_novice_red.dds"
		TargetSkin			"assassin_novice_green.dds"
	}
	Group ShapeData02
	{
		ShapeIndex			3
		Model				"assassin_tanma.GR2"
		SourceSkin			"assassin_tanma.DDS"
		TargetSkin			"assassin_tanma.dds"
	}
	Group ShapeData03
	{
		ShapeIndex			4
		Model				"assassin_tanma.GR2"
		SourceSkin			"assassin_tanma.DDS"
		TargetSkin			"assassin_geukseom.dds"
	}
	Group ShapeData04
	{
		ShapeIndex			5
		Model				"assassin_tanma.GR2"
		SourceSkin			"assassin_tanma.DDS"
		TargetSkin			"assassin_dahong.dds"
	}
	Group ShapeData05
	{
		ShapeIndex			6
		Model				"assassin_biyeong.GR2"
		SourceSkin			"assassin_biyeong.DDS"
		TargetSkin			"assassin_biyeong.DDS"
	}
	Group ShapeData06
	{
		ShapeIndex			7
		Model				"assassin_biyeong.GR2"
		SourceSkin			"assassin_biyeong.DDS"
		TargetSkin			"assassin_yeongrin.DDS"
	}
	Group ShapeData07
	{
		ShapeIndex			8
		Model				"assassin_biyeong.GR2"
		SourceSkin			"assassin_biyeong.DDS"
		TargetSkin			"assassin_jeoksal.DDS"
	}
	Group ShapeData08
	{
		ShapeIndex			9
		Model				"assassin_yonga.GR2"
		SourceSkin			"assassin_yonga.DDS"
		TargetSkin			"assassin_yonga.DDS"
	}
	Group ShapeData09
	{
		ShapeIndex			10
		Model				"assassin_yonga.GR2"
		SourceSkin			"assassin_yonga.DDS"
		TargetSkin			"assassin_salpung.DDS"
	}
	Group ShapeData10
	{
		ShapeIndex			11
		Model				"assassin_bihyeon.GR2"
		SourceSkin			"assassin_bihyeon.DDS"
		TargetSkin			"assassin_bihyeon.DDS"
	}
	Group ShapeData11
	{
		SpecialPath			"d:/ymir work/monster/wolf/"

		ShapeIndex			100
		Model				"wolf.gr2"
		SourceSkin			"wolf.dds"
	}
	Group ShapeData12
	{
		SpecialPath			"d:/ymir work/monster/wild_boar/"

		ShapeIndex			101
		Model				"wild_boar.gr2"
		SourceSkin			"wild_boar.dds"
	}
	Group ShapeData13
	{
		SpecialPath			"d:/ymir work/monster/bear/"

		ShapeIndex			102
		Model				"bear.gr2"
		SourceSkin			"bear.dds"
	}
	Group ShapeData14
	{
		SpecialPath			"d:/ymir work/monster/tiger/"

		ShapeIndex			103
		Model				"tiger.gr2"
		SourceSkin			"tiger.dds"
	}
	Group ShapeData15
	{
		SpecialPath			"d:/ymir work/pc2/assassin/"

		ShapeIndex			201
		Model				"assassin_marry_01.GR2"
		SourceSkin			"assassin_marry_01.dds"
		TargetSkin			"assassin_marry_01.dds"
	}	
	Group ShapeData16
	{
		ShapeIndex			12
		Model				"assassin_4-1.gr2"
		SourceSkin			"assassin_4-1.dds"
		TargetSkin			"assassin_4-1.dds"

	}
	Group ShapeData17
	{	
		ShapeIndex			24			
		Model				"assassin_lord.GR2"
		SourceSkin			"assassin_queen01.dds"
		TargetSkin			"assassin_queen01.dds"
	}
	Group ShapeData18
	{
		ShapeIndex			14
		Model				"assassin_tanma.GR2"	
		SourceSkin			"assassin_tanma.DDS"
		TargetSkin			"assassin_1-1_tanma_a.DDS"
	}
	Group ShapeData19
	{
		ShapeIndex			15
		Model				"assassin_tanma.GR2"	
		SourceSkin			"assassin_tanma.DDS"
		TargetSkin			"assassin_1-2_geukseom_a.DDS"
	}
	Group ShapeData20
	{
		ShapeIndex			16
		Model				"assassin_tanma.GR2"	
		SourceSkin			"assassin_tanma.DDS"
		TargetSkin			"assassin_1-3_dahong_a.DDS"
	}
	Group ShapeData21
	{
		ShapeIndex			17
		Model				"assassin_biyeong.GR2"	
		SourceSkin			"assassin_biyeong.DDS"
		TargetSkin			"assassin_2-1_biyeong_a.DDS"
	}
	Group ShapeData22
	{
		ShapeIndex			18
		Model				"assassin_biyeong.GR2"		
		SourceSkin			"assassin_biyeong.DDS"
		TargetSkin			"assassin_2-2_yeongrin_a.DDS"
	}
	Group ShapeData23
	{
		ShapeIndex			19
		Model				"assassin_biyeong.GR2"	
		SourceSkin			"assassin_biyeong.DDS"
		TargetSkin			"assassin_2-3_jeoksal_a.DDS"
	}
	Group ShapeData24
	{
		ShapeIndex			20
		Model				"assassin_yonga.GR2"	
		SourceSkin			"assassin_yonga.DDS"
		TargetSkin			"assassin_3-1_yonga_a.DDS"
	}
	Group ShapeData25
	{
		ShapeIndex			21
		Model				"assassin_yonga.GR2"	
		SourceSkin	"assassin_yonga.DDS"
		TargetSkin	"assassin_salpung_a.dds"
	}
	Group ShapeData26
	{	
		ShapeIndex			25			
		Model				"assassin_lord.GR2"
		SourceSkin			"assassin_queen01.dds"
		TargetSkin			"assassin_queen02.dds"
	}
	Group ShapeData27
	{
		SpecialPath			"d:/ymir Work/pc2/assassin/"

		ShapeIndex			26	
		Model				"assassin_4-1.GR2"
		SourceSkin			"assassin_4-1.dds"
		TargetSkin			"assassin_4-2.dds"
	}
	Group ShapeData28
	{

		ShapeIndex			27	
		Model				"assassin_event1.GR2"
		SourceSkin			"assassin_event1_yellow.dds"
		TargetSkin			"assassin_event1_red.dds"
	}
	Group ShapeData29
	{

		ShapeIndex			28	
		Model				"assassin_event1.GR2"
		SourceSkin			"assassin_event1_yellow.dds"
		TargetSkin			"assassin_event1_yellow.dds"
	}
	Group ShapeData30
	{

		ShapeIndex			29	
		Model				"assassin_event1.GR2"
		SourceSkin			"assassin_event1_yellow.dds"
		TargetSkin			"assassin_event1_blue.dds"
	}
	Group ShapeData31
	{
		ShapeIndex			30
		Model				"assassin_tanma.gr2"
		SourceSkin			"assassin_tanma.dds"
		TargetSkin			"assassin_costume1.dds"	
	}
	Group ShapeData32
	{
		ShapeIndex			1000
		Model				"assassin_costume_tailcoat.gr2"
		SourceSkin			"assassin_costume_tailcoat.dds"
		TargetSkin			"assassin_costume_tailcoat.dds"	
	}
	Group ShapeData33
	{

		ShapeIndex			40033
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assassin_fencing1_London.dds"	
	}
	Group ShapeData34
	{
		ShapeIndex			40034
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assasin_fencing1_Germany.dds"		
	}
	Group ShapeData35
	{
		ShapeIndex			40035
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assassin_fencing1_Turkey.dds"	
	}
	Group ShapeData36
	{
		ShapeIndex			40036
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assassin_fencing1_Brazil.dds"	
	}
	Group ShapeData37
	{
		ShapeIndex			40037
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_soccer1_London.dds"	
	}
	Group ShapeData38
	{
		ShapeIndex			40038
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assasin_soccer1_Germany.dds"	
	}
	Group ShapeData39
	{
		ShapeIndex			40039
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_soccer1_Turkey.dds"	
	}
	Group ShapeData40
	{
		ShapeIndex			40040
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_soccer1_Brazil.dds"	
	}
	Group ShapeData41
	{
		ShapeIndex			40041
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_London.dds"	
	}
	Group ShapeData42
	{
		ShapeIndex			40042
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_Germany.dds"	
	}
	Group ShapeData43
	{
		ShapeIndex			40043
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_Turkey.dds"	
	}
	Group ShapeData44
	{
		ShapeIndex			40044
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_Brazil.dds"	
	}
	Group ShapeData45
	{
		ShapeIndex			40032
		Model				"assassin_assasin1.GR2"
		SourceSkin			"assassin_assasin1.dds"
		TargetSkin			"assassin_assasin1.dds"	
	}
	Group ShapeData46
	{
		ShapeIndex			40045
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assassin_fencing1_France.dds"	
	}
	Group ShapeData47
	{
		ShapeIndex			40046
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assassin_fencing1_Italy.dds"		
	}
	Group ShapeData48
	{
		ShapeIndex			40047
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assassin_fencing1_Poland.dds"	
	}
	Group ShapeData49
	{
		ShapeIndex			40048
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assassin_fencing1_Romania.dds"	
	}
	Group ShapeData50
	{
		ShapeIndex			40049
		Model				"assassin_fencing1_Germany.GR2"
		SourceSkin			"assasin_fencing1_Germany.dds"
		TargetSkin			"assassin_fencing1_Spain.dds"	
	}
	Group ShapeData51
	{
		ShapeIndex			40050
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_soccer1_France.dds"	
	}
	Group ShapeData52
	{
		ShapeIndex			40051
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_soccer1_Italy.dds"
	}
	Group ShapeData53
	{
		ShapeIndex			40052
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_soccer1_Poland.dds"	
	}
	Group ShapeData54
	{
		ShapeIndex			40053
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_soccer1_Romania.dds"	
	}
	Group ShapeData55
	{
		ShapeIndex			40054
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_soccer1_Spain.dds"	
	}
	Group ShapeData56
	{
		ShapeIndex			40055
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_France.dds"	
	}
	Group ShapeData57
	{
		ShapeIndex			40056
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_Italy.dds"	
	}
	Group ShapeData58
	{
		ShapeIndex			40057
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_Poland.dds"	
	}
	Group ShapeData59
	{
		ShapeIndex			40058
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_Romania.dds"	
	}
	Group ShapeData60
	{
		ShapeIndex			40059
		Model				"assassin_boxing1_Germany.GR2"
		SourceSkin			"assassin_boxing1_Germany.dds"
		TargetSkin			"assassin_boxing1_Spain.dds"	
	}
	Group ShapeData61
	{
		ShapeIndex			40065
		Model				"assassin_halloween1.GR2"
		SourceSkin			"assassin_halloween1.dds"
		TargetSkin			"assassin_halloween1.dds"	
	}
	Group ShapeData62
	{
		ShapeIndex			13
		Model				"assassin_5_1.gr2"
		SourceSkin			"assassin_5_1.dds"
		TargetSkin			"assassin_5_1.dds"
	}
	Group ShapeData63
	{
		ShapeIndex			40062
		Model				"assassin_salsa1.GR2"
		SourceSkin			"assassin_salsa1.dds"
		TargetSkin			"assassin_salsa1.dds"
	}
	Group ShapeData64
	{
		ShapeIndex			40063
		Model				"assassin_Springwear1.GR2"
		SourceSkin			"assassin_Springwear1.dds"
		TargetSkin			"assassin_Springwear1.dds"
	}
	Group ShapeData65
	{
		ShapeIndex			40061
		Model				"assassin_tailcoat1.gr2"
		SourceSkin			"assassin_tailcoat1.dds"
		TargetSkin			"assassin_tailcoat1.dds"
	}
	Group ShapeData66
	{
		ShapeIndex			40069
		Model				"assassin_deer1.gr2"
		SourceSkin			"assassin_deer1.dds"
		TargetSkin			"assassin_deer1.dds"
	}
	Group ShapeData67
	{
		ShapeIndex			40066
		Model				"assassin_santa1_black.gr2"
		SourceSkin			"assassin_santa1_black.dds"
		TargetSkin			"assassin_santa1_red.dds"
	}
	Group ShapeData68
	{
		ShapeIndex			40067
		Model				"assassin_santa1_black.gr2"
		SourceSkin			"assassin_santa1_black.dds"
		TargetSkin			"assassin_santa1_green.dds"
	}
	Group ShapeData69
	{
		ShapeIndex			40068
		Model				"assassin_santa1_black.gr2"
		SourceSkin			"assassin_santa1_black.dds"
		TargetSkin			"assassin_santa1_black.dds"
	}
	Group ShapeData70
	{
		ShapeIndex			40070
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA01.dds"	
	}
	Group ShapeData71
	{
		ShapeIndex			40071
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA02.dds"	
	}
	Group ShapeData72
	{
		ShapeIndex			40072
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA03.dds"	
	}
	Group ShapeData73
	{
		ShapeIndex			40073
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA04.dds"	
	}
	Group ShapeData74
	{
		ShapeIndex			40074
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA05.dds"	
	}
	Group ShapeData75
	{
		ShapeIndex			40075
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA06.dds"	
	}
	Group ShapeData76
	{
		ShapeIndex			40076
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA07.dds"	
	}
	Group ShapeData77
	{
		ShapeIndex			40077
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA08.dds"	
	}
	Group ShapeData78
	{
		ShapeIndex			40078
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA09.dds"	
	}
	Group ShapeData79
	{
		ShapeIndex			40079
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA10.dds"	
	}
	Group ShapeData80
	{
		ShapeIndex			40080
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA11.dds"	
	}
	Group ShapeData81
	{
		ShapeIndex			40081
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA12.dds"	
	}
	Group ShapeData82
	{
		ShapeIndex			40082
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA13.dds"	
	}
	Group ShapeData83
	{
		ShapeIndex			40083
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA14.dds"	
	}
	Group ShapeData84
	{
		ShapeIndex			40084
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA15.dds"	
	}
	Group ShapeData85
	{
		ShapeIndex			40085
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA16.dds"	
	}
	Group ShapeData86
	{
		ShapeIndex			40086
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA17.dds"	
	}
	Group ShapeData87
	{
		ShapeIndex			40087
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA18.dds"	
	}
	Group ShapeData88
	{
		ShapeIndex			40088
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA19.dds"	
	}
	Group ShapeData89
	{
		ShapeIndex			40089
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA20.dds"	
	}
	Group ShapeData90
	{
		ShapeIndex			40090
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA21.dds"	
	}
	Group ShapeData91
	{
		ShapeIndex			40091
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA22.dds"	
	}
	Group ShapeData92
	{
		ShapeIndex			40092
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA23.dds"	
	}
	Group ShapeData93
	{
		ShapeIndex			40093
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA24.dds"	
	}
	Group ShapeData94
	{
		ShapeIndex			40094
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA25.dds"	
	}
	Group ShapeData95
	{
		ShapeIndex			40095
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA26.dds"	
	}
	Group ShapeData96
	{
		ShapeIndex			40096
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA27.dds"	
	}
	Group ShapeData97
	{
		ShapeIndex			40097
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA28.dds"	
	}
	Group ShapeData98
	{
		ShapeIndex			40098
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA29.dds"	
	}
	Group ShapeData99
	{
		ShapeIndex			40099
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA30.dds"	
	}
	Group ShapeData100
	{
		ShapeIndex			40100
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA31.dds"	
	}
	Group ShapeData101
	{
		ShapeIndex			40101
		Model				"assasin_soccer1_Germany.GR2"
		SourceSkin			"assasin_soccer1_Germany.dds"
		TargetSkin			"assassin_UEFA32.dds"	
	}
	Group ShapeData102
	{
		ShapeIndex			40064
		Model				"assassin_samurai1.GR2"
		SourceSkin			"assassin_samurai1.dds"
		TargetSkin			"assassin_samurai1.dds"	
	}
	Group ShapeData103
	{
		ShapeIndex			40106
		Model				"assassin_rabbit1.GR2"
		SourceSkin			"assassin_rabbit1.dds"
		TargetSkin			"assassin_rabbit1_black.dds"	
	}
	Group ShapeData104
	{
		ShapeIndex			40107
		Model				"assassin_rabbit1.GR2"
		SourceSkin			"assassin_rabbit1.dds"
		TargetSkin			"assassin_rabbit1_blue.dds"	
	}
	Group ShapeData105
	{
		ShapeIndex			40108
		Model				"assassin_rabbit1.GR2"
		SourceSkin			"assassin_rabbit1.dds"
		TargetSkin			"assassin_rabbit1_green.dds"	
	}
	Group ShapeData106
	{
		ShapeIndex			40109
		Model				"assassin_rabbit1.GR2"
		SourceSkin			"assassin_rabbit1.dds"
		TargetSkin			"assassin_rabbit1_pink.dds"	
	}
	Group ShapeData107
	{
		ShapeIndex			40110
		Model				"assassin_BlackSnake1.GR2"
		SourceSkin			"assassin_BlackSnake1.dds"
		TargetSkin			"assassin_BlackSnake1.dds"	
	}
	Group ShapeData108
	{
		ShapeIndex			40111
		Model				"assassin_BlackSnake1.GR2"
		SourceSkin			"assassin_BlackSnake1.dds"
		TargetSkin			"assassin_BlackSnake1.dds"	
	}
	Group ShapeData109
	{
		ShapeIndex			40112
		Model				"assassin_assasin1.GR2"
		SourceSkin			"assassin_assasin1.dds"
		TargetSkin			"assassin_assasin2.dds"	
	}
	Group ShapeData110
	{
		ShapeIndex			40114
		Model				"assassin_pwahuang1.GR2"
		SourceSkin			"assassin_pwahuang1.dds"
		TargetSkin			"assassin_pwahuang1.dds"	
	}
	Group ShapeData111
	{
		ShapeIndex			40116
		Model				"assassin_halloween2.GR2"
		SourceSkin			"assassin_halloween2.dds"
		TargetSkin			"assassin_halloween2.dds"	
	}
}

Group AttachingData
{
    AttachingDataCount       2
    
    Group AttachingData00
    {
        AttachingDataType    1
        
        isAttaching          0
        AttachingModelIndex  0
        AttachingBoneName    "Bip01"
        
        CollisionType        1
        
        SphereDataCount      1
        Group SphereData00
        {
            Radius           40.000000
            Position         0.000000 0.000000 90.000000
        }
    }
    
    Group AttachingData01
    {
        AttachingDataType    1
        
        isAttaching          0
        AttachingModelIndex  0
        AttachingBoneName    "Bip01"
        
        CollisionType        3
        
        SphereDataCount      1
        Group SphereData00
        {
            Radius           70.000000
            Position         0.000000 0.000000 90.000000
        }
    }
}

 

Po aktualizacji (v1.7):

Spoiler
ScriptType RaceDataScript
BaseModelFileName "d:/ymir work/pc2/assassin/assassin_novice.gr2"

Group ShapeData
{
	PathName "d:/ymir work/pc2/assassin/"

	Group ShapeData00
	{
		ShapeIndex 0
		Model "assassin_novice.gr2"
		SourceSkin "assassin_novice_red.dds"
		TargetSkin "assassin_novice_red.dds"
	}

	Group ShapeData01
	{
		ShapeIndex 1
		Model "assassin_novice.gr2"
		SourceSkin "assassin_novice_red.dds"
		TargetSkin "assassin_novice_green.dds"
	}

	Group ShapeData02
	{
		ShapeIndex 2
		Model "assassin_tanma.gr2"
		SourceSkin "assassin_tanma.dds"
		TargetSkin "assassin_tanma.dds"
	}

	Group ShapeData03
	{
		ShapeIndex 3
		Model "assassin_tanma.gr2"
		SourceSkin "assassin_tanma.dds"
		TargetSkin "assassin_geukseom.dds"
	}

	Group ShapeData04
	{
		ShapeIndex 4
		Model "assassin_tanma.gr2"
		SourceSkin "assassin_tanma.dds"
		TargetSkin "assassin_dahong.dds"
	}
	Group ShapeData05
	{
		ShapeIndex 5
		Model "assassin_biyeong.gr2"
		SourceSkin "assassin_biyeong.dds"
		TargetSkin "assassin_biyeong.dds"
	}

	Group ShapeData06
	{
		ShapeIndex 6
		Model "assassin_biyeong.gr2"
		SourceSkin "assassin_biyeong.dds"
		TargetSkin "assassin_yeongrin.dds"
	}

	Group ShapeData07
	{
		ShapeIndex 7
		Model "assassin_biyeong.gr2"
		SourceSkin "assassin_biyeong.dds"
		TargetSkin "assassin_jeoksal.dds"
	}

	Group ShapeData08
	{
		ShapeIndex 8
		Model "assassin_yonga.gr2"
		SourceSkin "assassin_yonga.dds"
		TargetSkin "assassin_yonga.dds"
	}

	Group ShapeData09
	{
		ShapeIndex 9
		Model "assassin_yonga.gr2"
		SourceSkin "assassin_yonga.dds"
		TargetSkin "assassin_salpung.dds"
	}

	Group ShapeData10
	{
		ShapeIndex 10
		Model "assassin_bihyeon.gr2"
		SourceSkin "assassin_bihyeon.dds"
		TargetSkin "assassin_bihyeon.dds"
	}

	Group ShapeData11
	{
		ShapeIndex 11
		Model "assassin_4-1.gr2"
		SourceSkin "assassin_4-1.dds"
		TargetSkin "assassin_4-1.dds"

	}

	Group ShapeData12
	{
		ShapeIndex 12
		Model "assassin_4-1.gr2"
		SourceSkin "assassin_4-1.dds"
		TargetSkin "assassin_4-2.dds"
	}
}

Group HairData
{
	PathName "d:/ymir Work/pc2/assassin/"

	Group HairData00
	{	
		HairIndex 0
		Model "hair/hair_1_1.gr2"
		SourceSkin "hair/hair_1_1.dds"
		TargetSkin "hair/assassin_hair_01.dds"
	}

	Group HairData01
	{	
		HairIndex 1
		Model "hair/hair_costume_musketeer.gr2"
		SourceSkin "hair/hair_costume_musketeer.dds"
		TargetSkin "hair/hair_costume_musketeer.dds"
	}
}

Group CostumeData
{
	PathName "d:/ymir work/pc2/assassin/"
	
	Group CostumeData00
	{
		CostumeIndex 5000
		Model "assassin_marry_01.GR2"
		SourceSkin "assassin_marry_01.dds"
		TargetSkin "assassin_marry_01.dds"
	}

	Group CostumeData01
	{
		CostumeIndex 5001
		Model "assassin_costume_tailcoat.gr2"
		SourceSkin "assassin_costume_tailcoat.dds"
		TargetSkin "assassin_costume_tailcoat.dds"
	}
}

Group AttachingData
{
    AttachingDataCount 2

    Group AttachingData00
    {
        AttachingDataType 1
        isAttaching 0
        AttachingModelIndex 0
        AttachingBoneName "Bip01"
        CollisionType 1
        SphereDataCount 1

        Group SphereData00
        {
            Radius 40.000000
            Position 0.000000 0.000000 90.000000
        }
    }

    Group AttachingData01
    {
        AttachingDataType 1

        isAttaching 0
        AttachingModelIndex 0
        AttachingBoneName "Bip01"
        CollisionType 3
        SphereDataCount 1

        Group SphereData00
        {
            Radius 70.000000
            Position 0.000000 0.000000 90.000000
        }
    }
}

 

 

Poprawki błędów

Wersja 1.7 zawiera aż 71 nowych poprawek błędów, w tym wiele krytycznych, które znacząco poprawiają stabilność i wydajność.

 

Zredukowana waga klienta gry

Jednym z moich kluczowych celów było zmniejszenie wagi klienta gry przy jednoczesnym zachowaniu niezbędnych plików. Dokonałem gruntownej przebudowy klienta, opierając się na najnowszej wersji z oficjalnego serwera. Dzięki temu usunąłem wiele powielonych plików, poprawiłem modele, zoptymalizowałem tekstury oraz usunąłem wszystkie zbędne elementy.

 

Skupiłem się głównie na folderach: property, zone, interface, code, monster, npc, environment, textureset oraz terrain. Wszystkie te patche dokładnie przejrzałem i zmodyfikowałem, dostosowując je do nowej struktury. Bazowa wersja klienta gry (v1.6) ważyła po spakowaniu 883 MB, natomiast nowa (v1.7), oczyszczona wersja waży jedynie 554 MB, co stanowi redukcję o około 37%

 

Obsługa livdevil w wersji 1.8!

Postanowiłem zaktualizować libdevil do najnowszej wersji 1.8. Wiele osób próbowało tego dokonać, jednak często napotykały problemy z ładowaniem i dodawaniem ikon. Udało mi się rozwiązać wszystkie błędy spowodowane aktualizacją biblioteki, dzięki czemu klient gry korzysta teraz z najnowszej wersji devil.dll 1.8 z obsługą plików JPEG, PNG i TGA. Wymagało to dostosowania kodu do zmian w najnowszej bibliotece.

 

Zmiany w plikach property

Kolejna duża zmiana to nowe formatowanie plików property. Każdy plik został zmodyfikowany do nowego formatu, w którym najpierw określany jest propertytype, następnie propertyname, potem lokalizacja obiektu (buildingfile), a także dodany został nowy atrybut isattributedata. Ta konwersja jest bardziej logiczna i uporządkowana. Oczywiście, wszystkie właściwości, które się nadpisywały, zostały poprawione.

 

Teraz po krótce o nowym atrybucie isattributedata: możesz określić w każdym properties, czy dla danego modelu będzie ładowany plik kolizji obiektu (.mdatr). Domyślnie plik jest ładowany, ale możesz go z łatwością wyłączyć. Nie wszystkie obiekty posiadają taki plik i nie ma potrzeby jego ładowania, jeśli go nie ma.

 

Na zakończenie

To po krótce ważniejsze zmiany, choć było ich znacznie więcej. Wszystkie możesz zobaczyć w changelogu. Teraz robię kilka dni przerwy, a następnie zaczynam pracę nad nową wersją v1.8. Wprowadzam zmiany w taki sposób, że każda modyfikacja będzie commitem na GitHubie. Wszystkie poprawki w plikach serwerowych i strukturach bazy danych będą miały podlinkowane paczki z instrukcją do pobrania.

 

Wersja v1.7 jest stabilną wersją i możesz na niej opierać swój projekt. Oferuję pełne wsparcie w razie problemów i wspieram osoby, które zdecydują się użyć tego źródła. Wszystkie błędy, które mi zgłaszacie, analizuję i staram się na bieżąco poprawiać. Przed wydaniem v1.7 zostały rozwiązane wszystkie zgłoszone problemy. Każdy bez problemu będzie mógł patchować źródło w ramach nowej wersji v1.8, ponieważ każda zmiana będzie miała szczegółowy opis i instrukcje.

 

To wszystko na dziś. Mam nadzieję, że doceniasz moją pracę i przyczynisz się do rozwoju projektu. 😉

Opublikowano

Jest możliwość pograć na tych plikach? Tzn ma ktoś odpalony serwer na vps/dedyku i udostępni aby wejść pograć?

Opublikowano
35 minut temu, TomSul napisał(a):

Jest możliwość pograć na tych plikach? Tzn ma ktoś odpalony serwer na vps/dedyku i udostępni aby wejść pograć?

Jest możliwość zagrania na live test serwerze, pisz bezpośrednio do @Sevence to założy ci konto oraz prześle clienta.

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...