|
|
| |
| ZASOBY |
| |
| |
|
|
|
| |
|
| NASZ BUTTON |
|
|
| |
|
|
| |
|
| |
|
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:
Nie zwracajcie uwagi na wartości inne niż tutaj opisane.Będziemy je dostosowywać potem...
2.Pod
Dopisujemy
Wygląda to tak:
3.Teraz w pliku server/player.h około lini 860 dodajemy
Wygląda to w ten sposób:
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:
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
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
|
|
|
| |
| KOMENTARZE |
|
| [ 2011-06-05 17:29:49 Dodał:
Dabu ]
|
|
|
|
SUPER! Działa! Nareeeszcieee. |
| |
|
|
|
Cieszę się razem z tobą ^.^ |
|
|
|
|
|
| |
|
|
| |
| 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. |
|
| |
|
|
|