Skocz do zawartości

Tworzenie od podstaw item_proto i mob_proto


Rekomendowane odpowiedzi

Cześć,

Od niedawna wróciłem do bawienia się serwerem Metin2. Ostatni raz kiedy cokolwiek robiłem to byłem jeszcze gówniarzem i nie potrafiłem nawet rozpakować root'a, a maszynę uruchamiałem przez kilka dni. Teraz się trochę zmieniło. Zacząłem bawić się na Source i plikach Terenzo. Nie jest ciężko zauważyć, że jest mnóstwo bugów i niepotrzebnych śmieci. W mojej głowie ziścił się plan stworzenia prawie wszystkiego pod podstaw. Usunąłem cały drop ze szkatułek, z mobów itd. Ale wciąż nie potrafię się poruszać po item i mob proto.. Niektóre moby mają 0 hp przez co wywala serwer po ich uderzeniu, wiele itemów ma złe wartości.. Dlatego chciałem się Was zapytać czy usunięcie wszystkich danych z item_proto i mob_proto wpłynie na działanie serwera? Mam na myśli czy w Source są używane jakieś przedmioty po ID. Na przykład Fasolka Zen, Pierścień Doświadczenia itd. Albo moby? Chcę po prostu od nowa dodać wszystkie itemy i pozmieniać ich ID. 

Trochę chaotycznie to napisałem, ale mam nadzieję, że się połapiecie i dacie mi wyczerpującą odpowiedź.

Nie oceniaj mnie. Ja się dopiero uczę - każdy to kiedyś robił.

Odnośnik do komentarza

Tak, wpłynie.
W Source jest bardzo dużo itemów działających właśnie po ID - większość znajdziesz w char_item.

Jednak jeśli nowe itemy będa miały inny type i subtype to nie powinno to kolidować ze sobą, bo aby coś działało od strony source musi mieć odpowiedni typ.

 

Kontakt ze mną & moja strona domowa: http://xeer.tech

Odnośnik do komentarza

@Weles no i cały mój plan runął.. :(

Muszę to chyba inaczej rozgryźć, bo nie widzę sensu tworzenia nawet dla zabawy czegokolwiek na takiej podstawie.. Przeraża mnie ilość przedmiotów "NoName" czy mobów/npc "??? ???". Zmienianie wszystkich type, subtype i innych wartości w itemach to też tak kiepsko według mnie. 

Nie oceniaj mnie. Ja się dopiero uczę - każdy to kiedyś robił.

Odnośnik do komentarza

@BezProcentów, też prawda. Ale pewniej bym się czuł jakbym sam wszystko robił, bo tyle tego jest nawalone w plikach, że głowa mała. Oczywiście szanuję pracę jaką zrobił Terenzo, ale jednak no..

Przedmioty NoName nie używane, a co na przykład ze zdublowanymi AutoPotami? Albo sam system petów czy wierzchowców. Tak naprawdę nie wiem jak to działa na tych plikach, a moja wiedza jeszcze nie jest nie wiadomo jak duża aby się domyśleć jaka linijka kodu odpowiada za coś. Wolałbym wyrzucić wszystkie modele wierzchowców itd. i cały system sobie od nowa jakby napisać. Bo po co np. w Cliencie mieć 10 modeli, których i tak w grze by się nie używało, nie?

Nie oceniaj mnie. Ja się dopiero uczę - każdy to kiedyś robił.

Odnośnik do komentarza
1 minutę temu, patrycak89 napisał:

@BezProcentów, też prawda. Ale pewniej bym się czuł jakbym sam wszystko robił, bo tyle tego jest nawalone w plikach, że głowa mała. Oczywiście szanuję pracę jaką zrobił Terenzo, ale jednak no..

Przedmioty NoName nie używane, a co na przykład ze zdublowanymi AutoPotami? Albo sam system petów czy wierzchowców. Tak naprawdę nie wiem jak to działa na tych plikach, a moja wiedza jeszcze nie jest nie wiadomo jak duża aby się domyśleć jaka linijka kodu odpowiada za coś. Wolałbym wyrzucić wszystkie modele wierzchowców itd. i cały system sobie od nowa jakby napisać. Bo po co np. w Cliencie mieć 10 modeli, których i tak w grze by się nie używało, nie?

Petów i wierzchowców nie ma w oryginalnym source używanych po id.

A autopoty i inne itemy są zdublowane z różnych powodów, najprostszy z nich jest taki, że niektórymi da się handlować a drugim rodzajem nie.

Odnośnik do komentarza

@BezProcentów, oo! Czyli generalnie jakbym usunął wpisy dot. petów i wierzchowców z bazy i klienta to będzie śmigać?

Co do zdublowanych przedmiotów.. właśnie to mnie przeraża, że niektóre są w bazie ustawione tak że można nimi handlować, a w opisie przedmiotu w Cliencie jest że nie można i na odwrót. Dlatego w głowie miałem plan aby stworzyć to wszystko od nowa.

Nie oceniaj mnie. Ja się dopiero uczę - każdy to kiedyś robił.

Odnośnik do komentarza

Osobiście uważam że dodawanie tego wszystkiego od 0 jest bez sensu, samych mobów jest z 200 a itemów to już wgl, Jeśli koniecznie chcesz już mieć takie same item/mob_proto to jednak polecił bym:

1. Przerobić db pod tabelki z sql nie txt

2. Np. te 0hp mobów za pomocą query możesz bez problemu zastąpić czy też tylko wyświetlić i ręcznie uzupełnić

3. Następnie wyeksportować tabelki do pliku i przekonwertować do clienta :)

Myślę że to chyba najszybszy sposób, bo po pierwszym zdaniu w temacie wnioskuję że nie zdajesz sobie sprawy ile jest roboty z takim 1 przedmiotem, i zapewne zniechęcił byś się po 50 (max) a nie wykluczone że po 20 :D Oczywiście to tylko moja sugestia, zrobisz jak uważasz.

Odnośnik do komentarza

@Intern, tak też zrobiłem. Przerobiłem z txt na sql, query na 0hp sobie zrobiłem, wrzuciłem do clienta. 

Rzeczywiście po głębszej analizie zdałem sobie sprawę, że to jednak za dużo roboty. 

Teraz mam problem z posegregowaniem plików w pack.. chciałem osobno trzymać wierzchowce, pety i npc/moby, ale mam problem, że nie czyta mi tych wierzchowców/petów z pack/mounts/ymir work/npc2/NAZWA.. 

Nie oceniaj mnie. Ja się dopiero uczę - każdy to kiedyś robił.

Odnośnik do komentarza

@Intern

0723 20:10:25229 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 4464
0723 20:10:25229 :: CPythonCharacterManager::CreateInstance VID[19381] Race[4464]

Wierzchowce/pety dodaje póki co jako zwykłe NPC. Treść Syserra jest pusta dopóki nie przywołam wierzchowca

Nie oceniaj mnie. Ja się dopiero uczę - każdy to kiedyś robił.

Odnośnik do komentarza
8 minut temu, Intern napisał:

Jak dla mnie to ID jest zbyt niskie aby model mógł być w npc2 bo wydaje mi się że NPC o ID 9000 są w NPC

No nawet nie mów >.< Da się to jakoś zmodyfikować? Bo chciałbym mieć wierzchowce ID: od 6000 do 6999, a pety od 7000 do 7999, a wyżej znowu zwykłe NPC.

Zaraz sobie sprawdzę czy to rzeczywiście wina ID.

W source binki mam coś takiego:

oid __GetRaceResourcePathes(unsigned race, std::vector <std::string>& vec_stPathes)
{
        if (__IsGuildRace(race))
        {
                vec_stPathes.push_back ("d:/ymir work/guild/");
                vec_stPathes.push_back ("d:/ymir work/npc/");
                vec_stPathes.push_back ("d:/ymir work/npc2/");
                vec_stPathes.push_back ("d:/ymir work/monster/");
                vec_stPathes.push_back ("d:/ymir work/monster2/");
        }
        else if (__IsNPCRace(race))
        {
                if (race >= 30000)
                {
                        vec_stPathes.push_back ("d:/ymir work/npc2/");
                        vec_stPathes.push_back ("d:/ymir work/npc/");
                        vec_stPathes.push_back ("d:/ymir work/monster/");
                        vec_stPathes.push_back ("d:/ymir work/monster2/");
                        vec_stPathes.push_back ("d:/ymir work/guild/");
                }
                else
                {
                        vec_stPathes.push_back ("d:/ymir work/npc/");
                        vec_stPathes.push_back ("d:/ymir work/npc2/");
                        vec_stPathes.push_back ("d:/ymir work/monster/");
                        vec_stPathes.push_back ("d:/ymir work/monster2/");
                        vec_stPathes.push_back ("d:/ymir work/guild/");
                }
        }
        // ¸¸żěŔý ŔĚşĄĆ®żë żążÜ ¸ó˝şĹÍ
        else if (8507 == race || 8510 == race)
        {
                vec_stPathes.push_back ("d:/ymir work/monster2/");
                vec_stPathes.push_back ("d:/ymir work/monster/");
                vec_stPathes.push_back ("d:/ymir work/npc/");
                vec_stPathes.push_back ("d:/ymir work/npc2/");
                vec_stPathes.push_back ("d:/ymir work/guild/");
        }
        else if (race > 8000)
        {
                vec_stPathes.push_back ("d:/ymir work/monster/");
                vec_stPathes.push_back ("d:/ymir work/monster2/");
                vec_stPathes.push_back ("d:/ymir work/npc/");
                vec_stPathes.push_back ("d:/ymir work/npc2/");
                vec_stPathes.push_back ("d:/ymir work/guild/");
        }
        else if (race > 2000)
        {
                vec_stPathes.push_back ("d:/ymir work/monster2/");
                vec_stPathes.push_back ("d:/ymir work/monster/");
                vec_stPathes.push_back ("d:/ymir work/npc/");
                vec_stPathes.push_back ("d:/ymir work/npc2/");
                vec_stPathes.push_back ("d:/ymir work/guild/");
        }
        else if (race>=1400 && race<=1700)
        {
                vec_stPathes.push_back ("d:/ymir work/monster2/");
                vec_stPathes.push_back ("d:/ymir work/monster/");
                vec_stPathes.push_back ("d:/ymir work/npc/");
                vec_stPathes.push_back ("d:/ymir work/npc2/");
                vec_stPathes.push_back ("d:/ymir work/guild/");
        }
        else
        {
                vec_stPathes.push_back ("d:/ymir work/monster/");
                vec_stPathes.push_back ("d:/ymir work/monster2/");
                vec_stPathes.push_back ("d:/ymir work/npc/");
                vec_stPathes.push_back ("d:/ymir work/npc2/");
                vec_stPathes.push_back ("d:/ymir work/guild/");
        }
        return;
}

Może coś z tym?

Nie oceniaj mnie. Ja się dopiero uczę - każdy to kiedyś robił.

Odnośnik do komentarza

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający forum Tworzenie od podstaw item_proto i mob_proto   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...