Skocz do zawartości
Opublikowano

Siemanko, banalny quest w sumie, lecz siedze ponad godzine z chatem gpt, i rozkminiamy dlaczego u mnie to nie dziala haha

image.png.7cedc1a5b278909b68108e92c43f437a.png

 

Probówalem naprawde na z 10 roznych sposób i to co sie dowiedzialem, czy moze inaczej, to co wydaje mi sie ze dziala to napewno notice_all bo juz mam uzytą te linijke w innym skrypcie z lvlup info, wiec ona chyba jest dobrze napisana, nastepnie zauwazylem ze piszac when kill na koncu musi byc with, nie dokonca jestem pewny ale z moich testów chyba wlasnie tak.

Jakby skrypt wyglada poprawnie chyba ze naprawde zrobilem gdzies glupote. nie wiem

Ktos cos?

Featured Replies

Opublikowano
Godzinę temu, Sevence napisał(a):

Akurat pełna zgoda z @Thorek do takich zastosowań quest jest idealny. Też nie rozumiem dlaczego wszystko robić w cpp.

A to nie jest przypadkiem tak ze ten quest bedzie sie odpalał za każdym razem gdy gracz zbije potwora i dopiero sprawdzal warunek? A w c++ jest to tylko sprawdzenie warunku. Omijamy całą mechanike questów. Nie wplywa to niesamowicie na wydajnosc serwera? Takie naduzywanie questów? Chyba, ze one są jakos zoptymalizowane a ja zle na nie patrze.

Opublikowano

widzę rok 2015 wjechał, bo po co zrobić komunikaty po rankach wtedy by nie trzeba było już nigdy dopisywać żadnych id, kwestia posprzątania proto i napisania krótkiego kodu xd

Edytowane przez Perserga

Opublikowano
  • Programista
Godzinę temu, eksyyy napisał(a):

 

@Thorek

 

Wgralem linijke w ten sposob do questlua_npc_cpp

 

image.png.0a512df8359c6a01317484e433d0948e.png

Nastepnie quest

 

 image.png.e99e1c0c2c2a9bab2e97d2b5d41b6b0e.png

 

Taki komunikat w konsoli

 

 image.png.e2a9161be3c53adb3729e4805c51b950.png

 

Matko jedyna, coś ty tu narobił, masz uzupełnić funkcję RegisterNPC o te nową, no i usuń jeden begin z whena

Edytowane przez Thorek

Opublikowano
Godzinę temu, eksyyy napisał(a):

 

@Thorek

 

Wgralem linijke w ten sposob do questlua_npc_cpp

 

image.png.0a512df8359c6a01317484e433d0948e.png

Nastepnie quest

 

 image.png.e99e1c0c2c2a9bab2e97d2b5d41b6b0e.png

 

Taki komunikat w konsoli

 

 image.png.e2a9161be3c53adb3729e4805c51b950.png

 


Ale to tak ma być:

b1.PNG.cc9d812eaf1dc4c2ec144fa6ad7dd0b9.PNG

b2.PNG.d59bd36c3e0fca650a0e72db60050a10.PNG

Opublikowano
  • Programista

Testował już to ktoś? Nie wiem czy działa xD

Opublikowano
2 godziny temu, Thorek napisał(a):

Testował już to ktoś? Nie wiem czy działa xD

Dej Pan spokój XD

Opublikowano
  • Programista
4 minuty temu, Krzysztof napisał(a):

Dej Pan spokój XD

W dwie godziny zdążyłbym Polskę objechać po okrężnej, a oni w dwie godziny nie potrafią dodać kodu z komentarza

ja przez to pomaganie sam się cofam w rozwoju

Edytowane przez Thorek

Opublikowano
7 godzin temu, mvstyk napisał(a):

jesli powyzej ci nie dziala to masz tutaj taki jaki ja uzywam:

wkle w char_battlej:

#ifdef ENABLE_BOSS_NOTIFICATIONS
		const auto BOSS_VNUMS =
		{   
			1304, 1901, 2091, 2206,
			591, 691, 2191, 792, 2306,
			2307, 2492, 3191, 3596, 3790
		};

		for (const auto& raceID : BOSS_VNUMS)
		{
			if (!CMobManager::instance().Get(raceID))
			{
				break;
			}

			if (GetRaceNum() == raceID)
			{
				char buf[256];
				if (SEX_MALE == GET_SEX(pkKiller))
					snprintf(buf, sizeof(buf), "[CH%d] %s pokonał bossa %s", g_bChannel, pkKiller->GetName(), this->GetMobTable().szLocaleName);
				else
					snprintf(buf, sizeof(buf), "[CH%d] %s pokonała bossa %s", g_bChannel, pkKiller->GetName(), this->GetMobTable().szLocaleName);
				SendNotice(buf);
				break;
			}
		}
#endif


nad: 

 

		// BOSS_KILL_LOG
		if (GetMobRank() >= MOB_RANK_BOSS && pkKiller && pkKiller->IsPC())
		{
			char buf[51]{};
			snprintf(buf, sizeof(buf), "%d %ld", g_bChannel, pkKiller->GetMapIndex());
			if (IsStone())
				LogManager::instance().CharLog(pkKiller, GetRaceNum(), "STONE_KILL", buf);
			else
				LogManager::instance().CharLog(pkKiller, GetRaceNum(), "BOSS_KILL", buf);
		}
		// END_OF_BOSS_KILL_LOG


image.png.e013201772a7efe2613eb2f735587e2e.png

ten sposób chyba jest bardziej przychylny dla oka 

Opublikowano

@eksyyy a więc na jakim etapie się zatrzymałeś, bo straciłem tu wątek. 

Opublikowano
  • Programista
21 godzin temu, ouiai napisał(a):

A to nie jest przypadkiem tak ze ten quest bedzie sie odpalał za każdym razem gdy gracz zbije potwora i dopiero sprawdzal warunek? A w c++ jest to tylko sprawdzenie warunku. Omijamy całą mechanike questów. Nie wplywa to niesamowicie na wydajnosc serwera? Takie naduzywanie questów? Chyba, ze one są jakos zoptymalizowane a ja zle na nie patrze.

No dosłownie za każdym razem z serwera wysyłany jest call do quest managera, o tym, że potwór został zabity XD

image.png.7b7acb599bb653a1f08e2589d4eb9c73.png

Połowa tego forum ubzdurała sobie coś, że wszystko jest lepiej robić po stronie źródła, kur**, najlepiej to w ogóle całe Lua wywalić z gry.

 

Zrozumcie, że ten język powstał po to, aby w szybki sposób dodać, albo przerobić coś na serwerze, questy powstały z myślą o twórcach rozgrywki.

Jeśli myślicie, że głupi komunikat napisany w Lua jest bee, ale już w C++ jest dobry, to się puknijcie w czoło, bo w obu przypadkach i tak jest to pakiet, tylko z Lua wychodzi callback do C++, który nadal jest szybszy, niż mrugnięcie oka (szybszy nawet w porównaniu do Pythona, ale kto się podejmie napisania okna w C++?).

 

Dlatego ten język używa się na przykład do skryptowania gier, bo jest po prostu szybki.

Edytowane przez Thorek

Opublikowano
W dniu 10.02.2025 o 14:50, Delta napisał(a):

To lepiej w C++

w common -> service.h / commonDefines.h

dodaj:
 

#define ENABLE_KILL_NOTICE


Wejdz w game -> char_battle.cpp

Znajdź:

        pkAttacker->SetQuestNPCID(GetVID());
        quest::CQuestManager::instance().Kill(pkAttacker->GetPlayerID(), GetRaceNum());
        CHARACTER_MANAGER::instance().KillLog(GetRaceNum());


Dodaj pod:

#ifdef ENABLE_KILL_NOTICE
    const int bossVnumMAP[27] = {
        2492, 2495, 2307, 2306,
        2597, 2598, 1093, 691,
        1304, 1192, 1901, 2091,
        2206, 2191, 2291, 2092,
        792, 4091, 4092, 4095,
        3690, 3691, 3590, 3591,
        3490, 3491, 5002
    };

    for (int i = 0; i < _countof(bossVnumMAP); i++)
    {
        if (GetRaceNum() == bossVnumMAP[i])
        {
            const CMob * pkMob = CMobManager::instance().Get(bossVnumMAP[i]);

            if (pkMob)
            {
                char szNotice[512+1];
                if (SEX_MALE == GET_SEX(pkAttacker))
                    snprintf(szNotice, sizeof(szNotice), "%s zabił %s na CH%d",  pkAttacker->GetName(), pkMob->m_table.szLocaleName, g_bChannel);
                else
                    snprintf(szNotice, sizeof(szNotice), "%s zabiła %s na CH%d",  pkAttacker->GetName(), pkMob->m_table.szLocaleName, g_bChannel);
                BroadcastNotice(szNotice);
            }
        }
    }
#endif

 

imo to lepsze (nawiązując troche do wypowiedzi Thorina)

 

Screenshot_1.jpg.81218dfd85a277b759dc44fd8c770c39.jpg

Opublikowano
W dniu 10.02.2025 o 21:02, Thorek napisał(a):

W dwie godziny zdążyłbym Polskę objechać po okrężnej, a oni w dwie godziny nie potrafią dodać kodu z komentarza

ja przez to pomaganie sam się cofam w rozwoju

XDDD

Opublikowano
17 godzin temu, Thorek napisał(a):

No dosłownie za każdym razem z serwera wysyłany jest call do quest managera, o tym, że potwór został zabity XD

image.png.7b7acb599bb653a1f08e2589d4eb9c73.png

Połowa tego forum ubzdurała sobie coś, że wszystko jest lepiej robić po stronie źródła, kur**, najlepiej to w ogóle całe Lua wywalić z gry.

 

Zrozumcie, że ten język powstał po to, aby w szybki sposób dodać, albo przerobić coś na serwerze, questy powstały z myślą o twórcach rozgrywki.

Jeśli myślicie, że głupi komunikat napisany w Lua jest bee, ale już w C++ jest dobry, to się puknijcie w czoło, bo w obu przypadkach i tak jest to pakiet, tylko z Lua wychodzi callback do C++, który nadal jest szybszy, niż mrugnięcie oka (szybszy nawet w porównaniu do Pythona, ale kto się podejmie napisania okna w C++?).

 

Dlatego ten język używa się na przykład do skryptowania gier, bo jest po prostu szybki.

Ja wyjebałem wszystkie questy z serwera, z clienta, wszystko co się da, zostawiłem tylko dungi po stronie lua xD. Chociaż mam jeden serwer, który nawet dungów nie ma, więc można teoretycznie powiedzieć, że questy tam nie istnieją xD.

Edytowane przez Krzysztof

  • Sevence zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.