Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Metin2 Source - Duży problem, dla tych co chcą sprobować


Rekomendowane odpowiedzi

Opublikowano

Witam.

Na wstępnie pragnę powiedzieć że nie jestem plackiem który używa czyjegoś sorsa typu vanilla,wip,mozhen2 czy inne gówno.

 

Normalnie jakbym trafił na takim problem to bym wrócił po swoich śladach i w końcu go znalazł. Jednak tym razem zanim go zauważyłem w plikach zaszło tyle zmian że właściwie nie ma takiej opcji żeby wracać do tyłu bo zejdzie mi do wakacji :P.

 

Więc tak używam mainline_sg...

 

We wtorek zacząłem robić dungeony i zauważyłem ten owy problem. Od tamtego czasu sprawdziłem już wszystko co przyszło mi do głowy. Koniec końców jedyne co udało mi się ustalić to tyle że to wina game/db - wziąłem db/game od kolegi i zaczęło działać.

 

Sam problem ciężko mi wyjaśnić więc postaram się pokazać go na przykładzie.

Gdy w quescie użyje np.

when kill with npc.get_race() == 101 begin 
chat("test")
chat("test")

To chat nie jest zwracany a do logów sypie :

SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0
SYSERR: Mar  7 22:30:35 :: Dead: QUEST no such pc id : 0

tak samo przy zwykłym 101.kill

 

Tutaj nasuwa się wniosek że game traktuje każdego moba jako id 0.

Jednak na 100% nie jestem pewien.

 

Więc proszę o każdą możliwą pomoc. Każda sugestia - nawet najgłupsza zawsze będzie krokiem do przodu.

 

Z góry dzięki dla każdego kto włoży swoje 2 grosze.

Opublikowano

W logach chodzi o to, że ma problem ze znalezieniem PC nie moba.

 

Sprawdzasz to jak już jesteś w dungeonie postacią? Trochę mało napisałeś. Zabijasz moba o vnum 101 (dziki pies)?

Spróbuj w ten sposób (bez dungeonu):

 

when kill  begin
syschat("test")

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

 

W logach chodzi o to, że ma problem ze znalezieniem PC nie moba.

 

Sprawdzasz to jak już jesteś w dungeonie postacią? Trochę mało napisałeś. Zabijasz moba o vnum 101 (dziki pies)?

Spróbuj w ten sposób (bez dungeonu):

when kill  begin
syschat("test")

 

Dungeon to tylko przykład jak robiłem dungeony to zauważyłem że np w dt jak miałem when kill with npc.get_race() == 8015 begin ble ble to nic się nie działo.

Potem testowalem na tym

quest zabij begin
    state start begin
        when kill with npc.get_race() == 101 begin
            chat("test")
        end
        when kill with npc.get_race() == 8022 begin
        chat("ll")
        chat("ll")
        chat("ll")
        chat("ll")
        chat("ll")
        chat("ll")
        chat("ll")
            end
        when 8015.kill begin
        chat("dlldld")
        chat("dlldld")
        chat("dlldld")
        end
    end
end

Przy zabiciu każdego z powyższych za każdym razem do logów leci :

SYSERR: Mar  8 01:11:23 :: Dead: QUEST no such pc id : 0

13 razy na jedno zabicie (stąd twierdzę że ma to coś do rzeczy).

 

PS. inne eventy z npc jak np 9006.click działają normalnie.

Opublikowano

Wrzuć ten kod i powiedz jaki wynik

 

 

quest zabij begin
    state start begin
        when kill begin
            syschat("test")
        end
    end
end

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

 

Wrzuć ten kod i powiedz jaki wynik

quest zabij begin
    state start begin
        when kill begin
            syschat("test")
        end
    end
end

 

To samo, nie zwróciło syschata a do syserru poleciało to co wyżej.

Opublikowano

Teraz pojawiła się jedna taka linijka, tak?

 

SYSERR: Mar  8 01:11:23 :: Dead: QUEST no such pc id : 0

 

 

Korzystasz z source? Bo nie wiem czy jest sens patrzeć w kod

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

Teraz pojawiła się jedna taka linijka, tak?

SYSERR: Mar  8 01:11:23 :: Dead: QUEST no such pc id : 0

Korzystasz z source? Bo nie wiem czy jest sens patrzeć w kod

 

Tak pojawiła się tylko jedna.

I tak jak napisałem używam sorsa  _sg na który już sporo zostało zmienione.

Przed chwilą wymieniałem char_battle i questmanager na czyste bo trochę w nich było zmieniane ale nic nie pomogło :P

Opublikowano

Hm, ja korzystam tylko z novaline.

 

No nic, szukamy dalej skoro nie chcesz wymieniać za dużo. Zrób backupa i podmień funkcje niżej, powiedz jaki wynik

 

 

PC * CQuestManager::GetPC(unsigned int pc)
    {
        PCMap::iterator it;
                
        LPCHARACTER pkChr = CHARACTER_MANAGER::instance().FindByPID(pc);
                sys_err("checkpoint 1");
        if (!pkChr)
                {
                        sys_err("checkpoint 2");
            return NULL;
                }
                sys_err("checkpoint 3");
        m_pCurrentPC = GetPCForce(pc);
        m_pCurrentCharacter = pkChr;
        m_pSelectedDungeon = NULL;
        return (m_pCurrentPC);
    }

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

 

Hm, ja korzystam tylko z novaline.

 

No nic, szukamy dalej skoro nie chcesz wymieniać za dużo. Zrób backupa i podmień funkcje niżej, powiedz jaki wynik

PC * CQuestManager::GetPC(unsigned int pc)
    {
        PCMap::iterator it;
                
        LPCHARACTER pkChr = CHARACTER_MANAGER::instance().FindByPID(pc);
                sys_err("checkpoint 1");
        if (!pkChr)
                {
                        sys_err("checkpoint 2");
            return NULL;
                }
                sys_err("checkpoint 3");
        m_pCurrentPC = GetPCForce(pc);
        m_pCurrentCharacter = pkChr;
        m_pSelectedDungeon = NULL;
        return (m_pCurrentPC);
    }

SYSERR: Mar  8 02:12:44 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:12:44 :: GetPC: checkpoint 3

SYSERR: Mar  8 02:12:45 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:12:45 :: GetPC: checkpoint 3

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 2

SYSERR: Mar  8 02:13:19 :: Dead: QUEST no such pc id : 0

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 3

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 3

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 3

Opublikowano

SYSERR: Mar  8 02:12:44 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:12:44 :: GetPC: checkpoint 3

SYSERR: Mar  8 02:12:45 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:12:45 :: GetPC: checkpoint 3

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 2

SYSERR: Mar  8 02:13:19 :: Dead: QUEST no such pc id : 0

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 3

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 3

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 1

SYSERR: Mar  8 02:13:19 :: GetPC: checkpoint 3

 

Hmm, pokaż syslog. Na czystym mainline_sg jest tak samo?

Daj char_battle.cpp i questmanager.cpp na jakąś wklejke

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

Hmm, pokaż syslog. Na czystym mainline_sg jest tak samo?

Daj char_battle.cpp i questmanager.cpp na jakąś wklejke

 

syslog : http://wklej.org/id/1657108/

char_battle : http://wklej.org/id/1657109/

questmanager.cpp : http://wklej.org/id/1657110/

 

Właśnie zaraz będę kompilować czystego _sg bo kolega uważa że to przez makefile (zje.. liby lub zle podpięte.)

 

Więc dam znać.

Opublikowano

syslog : http://wklej.org/id/1657108/

char_battle : http://wklej.org/id/1657109/

questmanager.cpp : http://wklej.org/id/1657110/

 

Właśnie zaraz będę kompilować czystego _sg bo kolega uważa że to przez makefile (zje.. liby lub zle podpięte.)

 

Więc dam znać.

 

Chodzi raczej o event dead, sam go dodawałeś (mam czystego mainline_sg i tam nie ma czegoś takiego)? Jeżeli tak to skopałeś sprawę w tym miejscu

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

Chodzi raczej o event dead, sam go dodawałeś (mam czystego mainline_sg i tam nie ma czegoś takiego)? Jeżeli tak to skopałeś sprawę w tym miejscu

 

Chyba masz racje. Wrzuciłem czyste char_battle.cpp i questmanager.cpp i działa ale jak 2h temu to zrobiłem to nie działało XDDD

 

Mimo wszystko wielkie dzięki, kiedyś się odwdzięczę :P

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...