Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Expienie zwierzaka (efekt)


Rekomendowane odpowiedzi

Opublikowano

Jak dodać efekt expa dla naszego zwierzaka.

 

W char_battle.cpp

 

pod tym

to->PointChange(POINT_EXP, iExp, true);
    from->CreateFly(FLY_EXP, to);

dodajemy to

* Poprawione 16:10 15-02-2015

for (CPetSystem::TPetActorMap::iterator iter = to->GetPetSystem()->m_petActorMap.begin();iter != to->GetPetSystem()->m_petActorMap.end(); ++iter)
            if(CPetActor* petActor = iter->second)
                if(petActor->IsSummoned())
                    from->CreateFly(FLY_SP_MEDIUM, petActor->GetCharacter());

W PetSystem.h

private:

    TPetActorMap    m_petActorMap;

zamieniamy na

public:
    TPetActorMap    m_petActorMap;
private:

*FLY_SP_MEDIUM - efekt expa który będzie wędrował do zwierzaka, możemy zmienić na dowolny

 

spis efektów:

    FLY_NONE,

    FLY_EXP,

    FLY_HP_MEDIUM,

    FLY_HP_BIG,

    FLY_SP_SMALL,

    FLY_SP_MEDIUM,

    FLY_SP_BIG,

    FLY_FIREWORK1,

    FLY_FIREWORK2,

    FLY_FIREWORK3,

    FLY_FIREWORK4,

    FLY_FIREWORK5,

    FLY_FIREWORK6,

    FLY_FIREWORK_CHRISTMAS,

    FLY_CHAIN_LIGHTNING,

    FLY_HP_SMALL,

    FLY_SKILL_MUYEONG,

Jak to wygląda w praktyce:

eb0df652d4cb2c2egen.png

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

Zastanawiałem się czy da się to zrobić przy pomocy pet.set_spawn_effect (piszę to z głowy), ale ta wersja jest dużo lepsza. Dzięki

Opublikowano

Zrobiłeś błąd oraz zapomniałeś czegoś dodać w poradniku.

 

Z tym kodem można wysadzić channel.

Wytłumaczysz nam na czym polega?

Opublikowano

Zrobiłeś błąd oraz zapomniałeś czegoś dodać w poradniku.

 

Z tym kodem można wysadzić channel.

 

Jeżeli chodzi o ilość obrotów pętli to wątpie, mamy rok 2015 a nie 2005 :)

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

Jeżeli chodzi o ilość obrotów pętli to wątpie, mamy rok 2015 a nie 2005 :)

Nie o to mi chodziło.

Ogarnięci sobie poprawią kod aby nie wywalało channela. :P

 

0LsM05U.png

Opublikowano

Jeżeli chodzi o ilość obrotów pętli to wątpie, mamy rok 2015 a nie 2005 :)

Zgaduje, że tu chodzi o coś albo z obecnością peta czy jego absencją (w sensie brak sprawdzania czy dany pet został w ogóle przywołany) albo coś z tym ifem (nie znam za dobrze c++ ale wydaje mi się, że redefinicja zmiennej nie jest dobrym pomysłem).

Opublikowano

Wops, faktycznie mój błąd, poprawiona wersja (crashowało, gdy przywołaliśmy i odwołaliśmy peta)

for (CPetSystem::TPetActorMap::iterator iter = to->GetPetSystem()->m_petActorMap.begin();iter != to->GetPetSystem()->m_petActorMap.end(); ++iter)
            if(CPetActor* petActor = iter->second)
                if(petActor->IsSummoned())
                    from->CreateFly(FLY_SP_MEDIUM, petActor->GetCharacter());

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

Wops, faktycznie mój błąd, poprawiona wersja (crashowało, gdy przywołaliśmy i odwołaliśmy peta)

for (CPetSystem::TPetActorMap::iterator iter = to->GetPetSystem()->m_petActorMap.begin();iter != to->GetPetSystem()->m_petActorMap.end(); ++iter)
		    if(CPetActor* petActor = iter->second)
			    if(petActor->IsSummoned())
				    from->CreateFly(FLY_SP_MEDIUM, petActor->GetCharacter());
Brawo, skapnąłeś się o co chodzi. :P

0LsM05U.png

Opublikowano

 

Wops, faktycznie mój błąd, poprawiona wersja (crashowało, gdy przywołaliśmy i odwołaliśmy peta)

for (CPetSystem::TPetActorMap::iterator iter = to->GetPetSystem()->m_petActorMap.begin();iter != to->GetPetSystem()->m_petActorMap.end(); ++iter)
            if(CPetActor* petActor = iter->second)
                if(petActor->IsSummoned())
                    from->CreateFly(FLY_SP_MEDIUM, petActor->GetCharacter());

Kreditsy dla mnie ;d

Opublikowano

Wops, faktycznie mój błąd, poprawiona wersja (crashowało, gdy przywołaliśmy i odwołaliśmy peta)

for (CPetSystem::TPetActorMap::iterator iter = to->GetPetSystem()->m_petActorMap.begin();iter != to->GetPetSystem()->m_petActorMap.end(); ++iter)
            if(CPetActor* petActor = iter->second)
                if(petActor->IsSummoned())
                    from->CreateFly(FLY_SP_MEDIUM, petActor->GetCharacter());

 

Jak już chciałbym się przyczepić, to czemu if sprawdzający czy jest zwierzak nie dałeś przed inicjacją pętli? Po co robić coś niepotrzebnie?

Ps. Ogólnie z kilkoma petami jest c*****o, więc pętle też sobie bym podarował.

 

Ymm, kolega na pewno ma pojęcie o programowaniu obiektowym?

Hahaha Wtf?!

Ps. A czy ja coś napisałem o klasach, czy o if'ie?

Opublikowano

Jak już chciałbym się przyczepić, to czemu if sprawdzający czy jest zwierzak nie dałeś przed inicjacją pętli? Po co robić coś niepotrzebnie?

Ps. Ogólnie z kilkoma petami jest c*****o, więc pętle też sobie bym podarował.

 

Ymm, kolega na pewno ma pojęcie o programowaniu obiektowym?

 

#edit

 

 Hahaha Wtf?!

Ps. A czy ja coś napisałem o klasach, czy o if'ie?

 

Obiektowe to nie tylko klasy, chodziło mi raczej o podstawowe założenia. Powiedz kolego, jak wyglądałby Twój kod - myślę, że w ten sposób szybciej zrozumiesz, bo nie chce mi się tłumaczyć dlaczego tak, a nie inaczej ^^ Albo jeszcze raz przeanalizuj kod powyżej, bo go nie zrozumiałeś.

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

A jesli np dodalem do src efekt zielony ten co noname udostepnil. i uzylem go jako efekt expienia peta. To co musze zrobic od strony klienta ;)

Opublikowano

A jesli np dodalem do src efekt zielony ten co noname udostepnil. i uzylem go jako efekt expienia peta. To co musze zrobic od strony klienta ;)

 

Dodać nazwę efektu do binki oraz do playersettingmodule

0LsM05U.png

Opublikowano

jakto od strony klienta by to musialo wygladac. W bince i player.. :)

O co Ci chodzi, jeśli dodałeś nowy efekt według tego: http://www.mpcforum.pl/topic/1360716-new-createfly-nowy-zielony-efekt/to nic nie robisz oprócz dodania co jest w tym temacie i zamiane w:

 

from->CreateFly(FLY_SP_MEDIUM, petActor->GetCharacter());

na:

 

from->CreateFly(FLY_GREEN_MEDIUM, petActor->GetCharacter());

 

Co ty jeszcze chcesz dodawać do klienta? Znając życie pytasz i trujesz d***, a nawet jeszcze nie dodałeś i nie sprawdziłeś. ;___;

Opublikowano

Efekt całkiem spoko.

Jak wrzucić własny efekt (inna animacja.. chyba dobrze wytłumaczyłem xD )? :v­

Opublikowano

Efekt całkiem spoko.

Jak wrzucić własny efekt (inna animacja.. chyba dobrze wytłumaczyłem xD )? :v­

 

Przecież wyżej masz odpowiedz :D

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

  • 1 miesiąc temu...
Opublikowano

Mam problem przy kompilacji.

In file included from char.cpp:4:
../../common/VnumHelper.h:59:32: warning: no newline at end of file
In file included from char.cpp:25:
shop_manager.h:40:7: warning: no newline at end of file
In file included from char.cpp:62:
PetSystem.h:164:31: warning: no newline at end of file
char.cpp:7208: warning: this decimal constant is unsigned only in ISO C90
char.cpp:7216:2: warning: no newline at end of file
In file included from char_battle.cpp:27:
shop_manager.h:40:7: warning: no newline at end of file
char_battle.cpp: In function 'void GiveExp(CHARACTER*, CHARACTER*, int)':
char_battle.cpp:2500: error: 'struct CPetSystem::TPetActorMap' has not been declared
char_battle.cpp:2500: error: expected `;' before 'iter'
char_battle.cpp:2500: error: 'iter' was not declared in this scope
char_battle.cpp:2500: error: invalid use of incomplete type 'struct CPetSystem'
char.h:18: error: forward declaration of 'struct CPetSystem'
char_battle.cpp:2501: error: 'CPetActor' was not declared in this scope
char_battle.cpp:2501: error: 'petActor' was not declared in this scope
char.cpp: In member function 'void CHARACTER::PointChange(BYTE, int, bool, bool)':
char.cpp:3088: warning: comparison between signed and unsigned integer expressions
In file included from char_horse.cpp:14:
../../common/VnumHelper.h:59:32: warning: no newline at end of file
gmake: *** [OBJDIR/char_battle.o] Error 1

A tak wyglada mój kod w char_battle.cpp

iExp = AdjustExpByLevel(to, iExp);


to->PointChange(POINT_EXP, iExp, true);
from->CreateFly(FLY_EXP, to);


for (CPetSystem::TPetActorMap::iterator iter = to->GetPetSystem()->m_petActorMap.begin();iter != to->GetPetSystem()->m_petActorMap.end(); ++iter)
if(CPetActor* petActor = iter->second)
if(petActor->IsSummoned())
from->CreateFly(FLY_GREEN_MEDIUM, petActor->GetCharacter());

Pet_system.h

public:
TPetActorMap m_petActorMap;
private:
LPCHARACTER m_pkOwner; ///< 펫 시스템의 Owner
DWORD m_dwUpdatePeriod; ///< 업데이트 주기 (ms단위)
DWORD m_dwLastUpdateTime;
LPEVENT m_pkPetSystemUpdateEvent;
};

 

Nie dodałem. Do góry 

#include "PetSystem.h"

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...