|
|
| |
| ZASOBY |
| |
| |
|
|
|
| |
|
| NASZ BUTTON |
|
|
| |
|
|
| |
|
| |
|
TUTORIALE - CODING
|
[ Dodaj ]
|
|
Jak dodać nową komendę konsoli
| [ 2005-07-23 18:48:55 Dodał:
mefi Wyświetleń: 2360 Komentarzy: 1 ]
|
|
W tym tutorialu dowiemy się jak stworzyć własną komendę konsoli. Nowa komenda będzie miała za zadanie wyświelać aktualny czas spędzony na mapie.
Aby to zrobić należy otworzyć projekt serwera, w nim plik PLAYER.CPP. Teraz szukamy funkcji CBasePlayer::GetViewModel i pod nią wklejamy poniższy kod. Oczywiście jak chcesz możesz wkleić ten kod w dowolnym miejscu pliku, też będzie działać.
CON_COMMAND( game_time, "Pokazuje ile czasu jest juz wlaczona mapa" )
{
int time = gpGlobals->curtime;
int seconds = (time % 60);
int minutes = (time / 60);
if ( engine->Cmd_Argc()>1 )
{
char text[256];
Q_snprintf( text, sizeof(text), "Czas gry: %02d:%02d\n", minutes, seconds );
if ( FStrEq( engine->Cmd_Argv(1), "1" ) )
UTIL_ClientPrintAll( HUD_PRINTCENTER, text );
else
if ( FStrEq( engine->Cmd_Argv(1), "2" ) )
UTIL_ClientPrintAll( HUD_PRINTCONSOLE, text );
}
else
UTIL_ClientPrintAll( HUD_PRINTCONSOLE, "Sposob uzycia: game_time (1 lub 0)\n1 - Wyswietlanie na srodku ekranu\n2 - Wyświetalnie w konsoli\n" );
} |
Teraz krótkie objaśnienie. Jak widać za dodanie nowej komendy odpowiada funkcja CON_COMMAND. Jej pierwszy parametr to nazwa nowej komendy w tym przypadku game_time, a drugi to opis, który jest zupełnie nieistotny. Dalej zmiennej time przypisywany jest aktualny czas gry. W linii: if ( engine->Cmd_Argc()>1 ) sprawdzane jest czy podaliśmy przynajmniej jeden parametr do naszej komendy. Jeżeli nie to wyświetlany jest tekst jakie parametry mamy dostępne. Dalej funkcją Q_snprintf formatujemy tekst tak, aby wyświetlić go w postaci minut i sekund. Funkcja FStrEq porónuje dwa stringi, u nas pierwszy string to pierwszy argument jaki podaliśmy i drugi string to "1". Jeżeli są sobie równe następuje wyświetlenie czasu gry na środku ekranu. Do wyświetlenia tekstu wykorzystaliśmy funkcję UTIL_ClientPrintAll, w której modyfikując pierwszy parametr możemy zmieniać sposób wyświetlania tekstu. Oto dostępne parametry dla tej funkcji:
- HUD_PRINTNOTIFY
- HUD_PRINTCONSOLE
- HUD_PRINTTALK
- HUD_PRINTCENTER
Po skompilowaniu kodu i wczytaniu mapy wpiszcie GAME_TIME 1, aby wyświetlić czas gry na środku ekranu lub GAME_TIME 2 co spowoduje wyświetlenie czasu w konsoli. Jeżeli niechce wam się co chwile tego wpisywać możecie zrobić skrót klawiszowy. Przypisanie komendy do klawisza wykonuje polecenie BIND. Konstrukcja wygląda następująco: BIND . Powiedzmy, że chcemy podpiąć to pod klawisz F11, piszemy więc BIND F11 "GAME_TIME 1".
|
|
|
| |
| KOMENTARZE |
|
| [ 2010-10-25 21:07:16 Dodał:
Wolf480 ]
|
|
|
|
Jeśli robi się moda do source 2007, to należy użyć args.ArgC() zamiast engine->Cmd_Argc() oraz args.Arg() zamiast engine->Cmd_Argv() |
|
|
|
|
|
| |
|
|
| |
| 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. |
|
| |
|
|
|