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

Rozwiązanie błędu w systemie ALIGN_RENEWAL reset bonusów po śmierci

Nieaktywny

Featured Replies

Opublikowano

Cześć, prosto tłumacząc mam błąd przy bonusach za punkty rangi mianowicie:

Przykład: mam rangę Legenda nadaje mi ona powiedzmy 30k HP moja postać ma 100k HP gdy ktoś mnie zabije moja wartość HP podczas smierci spada o 30K HP i po wstaniu już nie wraca do 100k HP 

niżej daję kod w którym próbuję się pozbyć tego:

#ifdef __ENABLE_ALIGN_RENEWAL__
void CHARACTER::OnAlignUpdate(int lOldAlignment)
{
    if (GetRealAlignment() >= 11000000)
    {
        if (lOldAlignment < 11000000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 35000, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 24, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 24, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 24, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 10, 0, 60*60*60*365, 0, true);
    }
    else if (GetRealAlignment() >= 9000000)
    {
        if (lOldAlignment < 9000000 && lOldAlignment >= 11000000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 30000, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 21, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 21, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 21, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 8, 0, 60*60*60*365, 0, true);
    }
    else if (GetRealAlignment() >= 8000000)
    {
        if (lOldAlignment < 8000000 && lOldAlignment >= 9000000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 25000, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 18, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 18, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 18, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 7, 0, 60*60*60*365, 0, true);
    }
    else if (GetRealAlignment() >= 6000000)
    {
        if (lOldAlignment < 6000000 && lOldAlignment >= 8000000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 20000, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 15, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 15, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 15, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 6, 0, 60*60*60*365, 0, true);
    }
    else if (GetRealAlignment() >= 4000000)
    {
        if (lOldAlignment < 4000000 && lOldAlignment >= 6000000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 15000, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 12, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 12, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 12, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 5, 0, 60*60*60*365, 0, true);
    }
    else if (GetRealAlignment() >= 2000000)
    {
        if (lOldAlignment < 2000000 && lOldAlignment >= 4000000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 10000, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 8, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 8, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 8, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 4, 0, 60 * 60 * 60 * 365, 0, true);
    }
    else if (GetRealAlignment() >= 1000000)
    {
        if (lOldAlignment < 1000000 && lOldAlignment >= 2000000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 5000, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 5, 0, 60*60*60*365, 0, true);        
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 5, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 5, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 3, 0, 60 * 60 * 60 * 365, 0, true);
    }
    else if (GetRealAlignment() >= 500000)
    {
        if (lOldAlignment < 500000 && lOldAlignment >= 1000000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 3000, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 3, 0, 60*60*60*365, 0, true);        
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 3, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 3, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 2, 0, 60 * 60 * 60 * 365, 0, true);
    }
    else if (GetRealAlignment() >= 100000)
    {
        if (lOldAlignment < 100000 && lOldAlignment >= 500000)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        AddAffect(AFFECT_ALIGN_BONUS1, POINT_MAX_HP, 1500, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS2, POINT_ATTBONUS_MONSTER, 1, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS3, POINT_ATTBONUS_STONE, 1, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS4, POINT_ATTBONUS_BOSS, 1, 0, 60*60*60*365, 0, true);
        AddAffect(AFFECT_ALIGN_BONUS5, POINT_ATTBONUS_HUMAN, 1, 0, 60 * 60 * 60 * 365, 0, true);
        
    }
    else
    {
        if (lOldAlignment >= 100000 && GetRealAlignment() >= 0)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
        else if (lOldAlignment >= 0 && GetRealAlignment() < 0)
        {
            RemoveAffect(AFFECT_ALIGN_BONUS1);
            RemoveAffect(AFFECT_ALIGN_BONUS2);
            RemoveAffect(AFFECT_ALIGN_BONUS3);
            RemoveAffect(AFFECT_ALIGN_BONUS4);
            RemoveAffect(AFFECT_ALIGN_BONUS5);
        }
    }
}
#endif

 Dodawałem tutaj już dodać już warunek Ale bez rekacji

#ifdef __ENABLE_ALIGN_RENEWAL__ void CHARACTER::OnAlignUpdate(int lOldAlignment) 
{
// Sprawdzenie, czy postać jest martwa 
if (IsDead()) return;

 

Rozwiązane przez Denis

Przejdź do rozwiązania
Opublikowano
  • Autor
20 minut temu, Sevence napisał(a):

Wydaje się że już mieliśmy podobny temat z tym systemem i raczej nie działa on dobrze. 

 

Wydaje mi się że problemem jest z przydzielaniem bonusu hp przez affecty, czy inne bonusy dla tej rangi też znikają czy problem dotyczy tylko hp?

niestety każdy bonus który nadaje aktualna ranga

Opublikowano
  • Autor
  • Rozwiązanie

Rozwiązanie 🙂

char_affect.cpp

szukaj:

 

 

if (IsPC()) { SendAffectRemovePacket(GetDesc(), GetPlayerID(), pkAff->dwType, pkAff->bApplyOn); }

dodaj nad

#ifdef __ENABLE_ALIGN_RENEWAL__
            int derece_bonus[] = {AFFECT_ALIGN_BONUS1, AFFECT_ALIGN_BONUS2, AFFECT_ALIGN_BONUS3};
          
            if ((pkAff->dwType == derece_bonus[0]) || (pkAff->dwType == derece_bonus[1]) || (pkAff->dwType == derece_bonus[2]))
            {
                ++it;
                continue;
            }
#endif

 

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

Konto

Nawigacja

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.