Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Featured Replies

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

Kategorie usług w których specjalizuje się ten Twórca

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.

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

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.