Opublikowano 27 Marca27 Mar Dodatkowa szansa na resp bossa z bossachar_battle.cppSZUKAJ:void CHARACTER::Dead 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Edytowane Sobota o 08:074 dn przez Arta
Opublikowano Piątek o 07:155 dn Autor 3 godziny temu, luwiart napisał(a):Popraw link :)Faktycznie jak tylko będę na kompie przywróce link bo forum zgasło wieczorem i widocznie się nie zedytowalo. Dzięki
Opublikowano Niedziela o 15:333 dn Programista No tak.Po co użyć czegoś co jest już domyślnie zrobione w grze, skoro można jeszcze raz, gorzej.Poszerzamy mob_proto o nową kolumnę:Modyfikujemy strukturę TMobTable (common/tables.h) w poniższy sposób:typedef struct SMobTable : public SEntityTable { // </> DWORD dwSummonVnum; DWORD dwSummonChance; // </> } TMobTable;Modyfikujemy db/ClientManagerBoot.cpp w ten sposób:enum MProtoT { // </> summon, summon_chance, // </> }; bool CClientManager::InitializeMobTableFromDB() { // </> "dam_multiply, summon, summon_chance, drain_sp," // </> VERIFY_IFIELD(MProto::summon, mob_table->dwSummonVnum); VERIFY_IFIELD(MProto::summon_chance, mob_table->dwSummonChance); }Modyfikujemy game/char_battle.cpp w poniższy sposób:DWORD CHARACTER::GetSummonVnum() const { return m_pkMobData ? m_pkMobData->m_table.dwSummonVnum : 0; } DWORD CHARACTER::GetSummonChance() const { return m_pkMobData ? m_pkMobData->m_table.dwSummonChance : 0; } void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead) { // </> // killer check if (pkKiller && pkKiller->IsPC()) { // victim check if (!IsPC()) { auto vnum = GetSummonVnum(); if (vnum && number(1, 100) <= GetSummonChance()) { CHARACTER_MANAGER::instance().SpawnMob( vnum, GetMapIndex(), GetX(), GetY(), GetZ(), true); pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Spawn additional boss - success")); } } } }Modyfikujemy game/char.h w ten sposób:// </> DWORD GetSummonVnum() const; DWORD GetSummonChance() const; // </>Na sam koniec pozostała edycja locale_string: Edytowane Niedziela o 15:373 dn przez Thorek
Opublikowano Niedziela o 16:043 dn Autor 30 minut temu, Thorek napisał(a):No tak.Po co użyć czegoś co jest już domyślnie zrobione w grze, skoro można jeszcze raz, gorzej.Poszerzamy mob_proto o nową kolumnę:Modyfikujemy strukturę TMobTable (common/tables.h) w poniższy sposób:typedef struct SMobTable : public SEntityTable { // </> DWORD dwSummonVnum; DWORD dwSummonChance; // </> } TMobTable;Modyfikujemy db/ClientManagerBoot.cpp w ten sposób:enum MProtoT { // </> summon, summon_chance, // </> }; boolCClientManager::InitializeMobTableFromDB(){ // </>"dam_multiply, summon, summon_chance, drain_sp,"// </>VERIFY_IFIELD(MProto::summon, mob_table->dwSummonVnum); VERIFY_IFIELD(MProto::summon_chance, mob_table->dwSummonChance); }Modyfikujemy game/char_battle.cpp w poniższy sposób:DWORD CHARACTER::GetSummonVnum() const{ return m_pkMobData ? m_pkMobData->m_table.dwSummonVnum : 0; } DWORD CHARACTER::GetSummonChance() const{ return m_pkMobData ? m_pkMobData->m_table.dwSummonChance : 0; } voidCHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead){ // </>// killer checkif (pkKiller && pkKiller->IsPC()) { // victim check if (!IsPC()) { auto vnum = GetSummonVnum(); if (vnum && number(1, 100) <= GetSummonChance()) { CHARACTER_MANAGER::instance().SpawnMob( vnum, GetMapIndex(), GetX(), GetY(), GetZ(), true); pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Spawn additional boss - success")); } } } }Modyfikujemy game/char.h w ten sposób:// </>DWORD GetSummonVnum() const; DWORD GetSummonChance() const; // </>Na sam koniec pozostała edycja locale_string:Wolę zmienić jeden plik niż rozgrzebywać proto które i tak jest zjebane, każdy jest kowalem swojego losu.
Dodatkowa szansa na resp bossa z bossa
char_battle.cpp
SZUKAJ:
void CHARACTER::Dead
Edytowane przez Arta