Skocz do zawartości

Featured Replies

Opublikowano

mocne xD

Opublikowano

Popraw link :)

Opublikowano
  • 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
  • Autor

 temat edytowany:

Edytowane przez Arta

Opublikowano
  • Programista

d63edd9af879f866baea5e3c5b506959.jpg

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ę:

wtf.png

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:

wtf2.png

Edytowane przez Thorek

Opublikowano
  • Autor
30 minut temu, Thorek napisał(a):

d63edd9af879f866baea5e3c5b506959.jpg

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ę:

wtf.png

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:

wtf2.png

Wolę zmienić jeden plik niż rozgrzebywać proto które i tak jest zjebane, każdy jest kowalem swojego losu.

Opublikowano

Użyłem i działa, dzięki!

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...