Source Modification Centre - LOGO
Gość: ( Logowanie | Rejestracja )

 
MENU
 
ZASOBY
 
 
LEGENDA
 
REKLAMA
tani fotograf ślubny Gorzów Wlkp.

tanio pokój Gorzów Wlkp.

Suknie ślubne gorzów wlkp


fotografia studniówkowa Warszawa

wynajem samochodów osobowych gorzów wielkopolski

Encyklopedia wiedzy o grach Valve

ślub gorzów wlkp

tworzenie stron internetowych gorzów wlkp

NASZ BUTTON
SMC
 
NA FORUM
 
 
TUTORIALE - CODING [ Dodaj ]
Automatyczna regeneracja zdrowia
[ 2011-06-04 18:26:36  Dodał:  pulka103   Wyświetleń: 1639   Komentarzy: 2  ]
UWAGA!!!NA OBRAZKACH WIDAĆ m_flLastDamageTime ALE KONIECZNIE NALEŻY UŻYWAĆ m_fTimeLastHurt INACZEJ PRAWDOPODOBNIE MOGĄ POJAWIĆ SIĘ BŁĘDY PRZY KOMPILACJI

Cześć!
Kiedyś tam miałem problem z automatyczną regeneracją zdrowia.Dyskusja była żywa i dotyczyła...trudności programowania.Rozwiązanie mojego problemu było NIESAMOWICIE banalne ale niezawarte w tym poradniku.Dzisiaj ja przetłumaczę wam na Polski i wyjaśnię co nieco.

TUTEK TEN SŁUŻY I DO MODA MP I DO MODA SP!!!

                                                                            Wklejamy!

1.Wpierw otwieramy plik server/player.cpp.
Wklejamy do niego te wartości ConVar"s

ConVar sv_regeneration ("sv_regeneration", "0", FCVAR_REPLICATED );
ConVar sv_regeneration_wait_time ("sv_regeneration_wait_time", "1.0", FCVAR_REPLICATED );
ConVar sv_regeneration_rate ("sv_regeneration_rate", "0.5", FCVAR_REPLICATED );
Wszystko powinno wyglądać tak jak na zdjęciu poniżej:

Source Modification Centre

Nie zwracajcie uwagi na wartości inne niż tutaj opisane.Będziemy je dostosowywać potem...

2.Pod
int      gEvilImpulse101;

Dopisujemy
float     m_fRegenRemander;

Wygląda to tak:

Source Modification Centre

3.Teraz w pliku server/player.h około lini 860 dodajemy
   float                 m_fTimeLastHurt ;

Wygląda to w ten sposób:

Source Modification Centre

4.W pliku player.cpp wklejamy
DEFINE_FIELD( m_fTimeLastHurt, FIELD_TIME ),
dokładnie pod
DEFINE_FIELD( m_tbdPrev, FIELD_TIME ),
który znajduje się w około linii 301.

5.W metodzie CBasePlayer::OnTakeDamage (najlepiej na końcu) dopisujemy ten kawałeczek kodu
if ( GetHealth() < 100 )
{
    m_fTimeLastHurt = gpGlobals->curtime;
}

Oczywiście obrazek pomocniczy:

Source Modification Centre

5.Teraz już ostatni kawałek kodu, ustalający cały przebieg regeneracji.Dodajemy go do metody CBasePlayer::PostThink na samiusieńki koniec:


// Regeneracja zdrowia
    if ( IsAlive() && GetHealth() < GetMaxHealth() && (sv_regeneration.GetInt() == 1) )
    {
          // Color to overlay on the screen while the player is taking damage
          color32 hurtScreenOverlay = {80,0,0,64};

          if ( gpGlobals->curtime > m_fTimeLastHurt + sv_regeneration_wait_time.GetFloat() )
          {
                   //Regenerate based on rate, and scale it by the frametime
                 m_fRegenRemander += sv_regeneration_rate.GetFloat() * gpGlobals->frametime;

                 if(m_fRegenRemander >= 1)
                 {
                        TakeHealth( m_fRegenRemander, DMG_GENERIC );
                        m_fRegenRemander = 0;
                 }
          }
          else
          {
                 UTIL_ScreenFade( this, hurtScreenOverlay, 1.0f, 0.1f, FFADE_IN|FFADE_PURGE );
          }   
    }


Zgadnij co pod tym tekstem wstawię XD

Source Modification Centre

Zgadłeś/łaś ^.^

                                                                      Konfigurujemy!

Zapewne pamiętacie te nasze ConVar"y użyte na początku, otóż teraz dostosujemy je do naszych potrzeb.(chyba nie muszę tłumaczyć iż 0 po nazwie "konwara" to właśnie cele naszych zmian)

- sv_regeneration przestawiamy na 1 tak aby mieć włączoną regeneracje zdrowia gracza od początku gry.

- sv_regeneration_wait_time oznacza jak długo będziemy (w sekundach) czekali na regenerację od chwili zadania obrażenia.Sugeruję ustawić 0 na 5.0

- sv_regeneration_rate oznacza ile procent HP na sekundę będzie odnawiane. Sugeruję ustawić również na 5.0

Oczywiste jest iż każdy może, a nawet powinien, dostosować to do swoich potrzeb jednak jest to (moim zdaniem) jedna z lepszych konfiguracji.
                                                               
PS: Jeśli chcesz aby konvarów nie mozna było zmieniać po skompilowaniu kodu (to jest nie mozna zmieniac z poziomu konsoli) to wystarczy iż przed nazwą ConVara dopiszemy static.Np.
static ConVar sv_regeneration ("sv_regeneration", "1", FCVAR_REPLICATED );


Wszystko powinno działać jak należy.Miłej zabawy życzy pulka103

Autor: pulka103
Komentarze ( 2 ) / Dodaj komentarz
 
KOMENTARZE  
[ 2011-06-05 17:29:49  Dodał:  Dabu  ]
 
SUPER! Działa! Nareeeszcieee.
 
[ 2011-06-05 21:32:39  Dodał:  pulka103  ]
 
Cieszę się razem z tobą ^.^
 
INFO
 
NAJNOWSZE
 
SHOUTBOX
MoonBlaze: ciasto is a lie
zwieracz: Przyłącz się do mnie, mam ciasto
Jodla: <kontemplujac stwierdza iz obecna rzeczywistosc jest do bani>
MoonBlaze: sm_ban @Dabu 1
Dabu: Ta strona umarła, zapraszam lepiej na heacrab.pl :D [/koniec reklamy]
Jodla: open beta nowego gmoda a tu 0 info na stronie ...może czas to zmienic zwłaszcza iż screeny z GM13 wygladaja apetycznie
Dabu: web 3.0
Elektryk: Link
Tracha: Ruski gracz!
zwieracz: Za moich czasów, to się bawilismy przy takiej gierce, gdzie zając łapaj kury za jaja. A moze to był wilk.
 
ANKIETA

[ Czas generowania strony: 0.097 secs. ]

Copyright (c) 2002-2005 by Mefi & .raven
Wszelkie prawa zastrzeżone

Fotograf studniówka
Salon sukien ślubnych gorzów



38.107.179.22038.107.179.220

Polecamy:

mpblawcenterNapiszemyUstka wakacjeTanie upominkiwww.newsy.ksiazki.podhale.plzestawy do monitoringu GotLink.pl Konie odżywki ogłoszenia praca Konstancin Palarnie