Czas spedzony na serwerze i która to wizyta
MrStrajker
10.12.2022
Witam
Szukam pluginu który wyświetla na chacie po wejściu na serwer ile łącznie czasu spędziłem na serwerze i która to wizyta:
Na serwerze spedziles 6m 21s. Jest to twoja 3 wizyta.
Jedyne co znalazłem to licznik wizyt na serwerze: https://amxx.pl/topi...yt-na-serwerze/
Natomiast zależy mi również na czasie przegranym na serwerze.
Pozdrawiam
DonPedro
14.12.2022
Kto pyta nie bladzi, google nie boli https://amxx.pl/topi...serwerze/page-2
MrStrajker
15.12.2022
Kto pyta nie bladzi, google nie boli https://amxx.pl/topi...serwerze/page-2
Przeczytaj jeszcze raz treść mojego posta a potem temat który wkleiłeś.
Chciałas zablysnać docinając mi, ale nie do końca Ci wyszło
mordoryjacz
16.12.2022
#include <amxmodx> #include <amxmisc> #include <nvault> #include <colorchat> #define PLUGIN "VisitCounter" #define VERSION "1.1" #define AUTHOR "Sebxx" new c_tmp3, g_vault, visits, last_visit new stamp[11], szSteam[35], temp[19], tmp[7] new czas_gry[33]; new g_vault_cz; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); g_vault = nvault_open("Wizyty"); g_vault_cz = nvault_open("Czas"); register_clcmd("say /visits", "show_visits"); c_tmp3 = register_cvar("visitcounter_interval", "1800") // po jakim czasie naliczyc nowe wejscie? } public client_connect(id) { wczytaj_czas_gry(id); } public client_authorized( id, const authid[] ) { if(!is_user_bot(id) && !is_user_hltv(id)) { set_task(10.0, "counter", id, _, _, "a", 1) } } public counter(id) { if(is_user_connected(id)) { get_user_authid( id, szSteam, charsmax( szSteam ) ) new sekundy = (czas_gry[id] + get_user_time(id, 1)), minuty, godziny; while(sekundy >= 60) { sekundy -= 60; minuty++; } while(minuty >= 60) { minuty -= 60; godziny++; } if ( nvault_get( g_vault , szSteam , temp , charsmax( temp ) ) ) { strtok(temp, tmp, charsmax( tmp ), stamp, charsmax( stamp ), ';'); last_visit = str_to_num( stamp ) if ( last_visit + get_pcvar_num( c_tmp3 ) <= get_systime() ) { visits = str_to_num( tmp ) + 1 ColorChat(id, TEAM_COLOR, "^1Na serwerze spedziles^4 %ih %imin %is.^1 Jest to twoja^4 %d^1 wizyta.", godziny, minuty, sekundy, visits) } else { return PLUGIN_CONTINUE } } else { visits = 1 ColorChat(id, TEAM_COLOR, "^1To Twoja ^3pierwsza^1 wizyta na naszym serwerze") } num_to_str( visits, tmp, charsmax(tmp) ) num_to_str( get_systime(), stamp, charsmax(stamp) ) new iLen = 0, iMax = sizeof( temp ) - 1; iLen += formatex( temp[iLen], iMax - iLen, tmp ) iLen += formatex( temp[iLen], iMax - iLen, ";" ) iLen += formatex( temp[iLen], iMax - iLen, stamp ) nvault_set( g_vault, szSteam, temp ) } return PLUGIN_CONTINUE } public show_visits(id) { if(is_user_connected(id)) { get_user_authid( id, szSteam, charsmax( szSteam ) ) nvault_get( g_vault , szSteam , temp , charsmax( temp ) ) strtok(temp, tmp, charsmax( tmp ), stamp, charsmax( stamp ), ';'); ColorChat(id, TEAM_COLOR, "^1To juz Twoja^4 %s^1 wizyta na naszym serwerze", tmp) } } public wczytaj_czas_gry(id) { new name[35],vaultkey[64],vaultdata[256]; get_user_name(id,name,34); format(vaultkey,63,"%s-gametime",name); nvault_get(g_vault_cz,vaultkey,vaultdata,255); czas_gry[id] = str_to_num(vaultdata); return PLUGIN_CONTINUE; } public zapisz_czas_gry(id) { new name[35],vaultkey[64],vaultdata[256]; get_user_name(id,name,34); czas_gry[id] += get_user_time(id, 1); format(vaultkey,63,"%s-gametime",name); format(vaultdata, 255, "%d", czas_gry[id]); nvault_set(g_vault_cz,vaultkey,vaultdata) czas_gry[id] = str_to_num(vaultdata); return PLUGIN_CONTINUE; } public client_disconnected(id) { zapisz_czas_gry(id); czas_gry[id] = 0; if(task_exists(id)) remove_task(id) } public plugin_end() { nvault_close(g_vault) nvault_close(g_vault_cz); }
genialny kod nie jest ale dziala tak jak chciales (a raczej ja nie mialem zadnych bledow z nim)
Załączone pliki
MrStrajker
18.12.2022
Dziękuje bardzo za zainteresowanie natomiast podczas kompilacji wyrzuca mi taki błąd:
wizyty_czas.sma(27) : error 025: function heading differs from prototype
MrStrajker
18.12.2022
ja kompilowalem na 1.9
Rzeczywiście udalo się skompilować na tej wersji.
Niestety nie działa do końca poprawnie, ponieważ przy pierwszym wejściu pojawiła się wiadomość:
To Twoja pierwsza wizyta.
Natomiast przy każdym kolejnym wejściu nie ma informacji o tym która to już wizyta i ile czasu zostało przegrane na serwerze.
A po wpisaniu /visits pojawia się:
To Twoja 2 wizyta na serwerze.
mordoryjacz
18.12.2022
if ( nvault_get( g_vault , szSteam , temp , charsmax( temp ) ) ) { strtok(temp, tmp, charsmax( tmp ), stamp, charsmax( stamp ), ';'); last_visit = str_to_num( stamp ) if ( last_visit + get_pcvar_num( c_tmp3 ) <= get_systime() ) { visits = str_to_num( tmp ) + 1 ColorChat(id, TEAM_COLOR, "^1Na serwerze spedziles^4 %ih %imin %is.^1 Jest to twoja^4 %d^1 wizyta.", godziny, minuty, sekundy, visits) } else { return PLUGIN_CONTINUE } } else { visits = 1 ColorChat(id, TEAM_COLOR, "^1To Twoja ^3pierwsza^1 wizyta na naszym serwerze") }
Jesli gracz wszedl na serwer pierwszy raz to zawsze pokaze ta informacje lecz jesli wejdzie juz drugi raz to bedzie mu juz pokazywac ile ma wizyt i ile godzin.
MrStrajker
18.12.2022
sprawdz to
Nadal nie pojawia się ta informacja:
Na serwerze spedziłes ... To twoja 3 wizyta.
mordoryjacz
18.12.2022
nie mozliwe sam sprawdzalem na czystym serwerze i bylo normalnie wgraj plugin dopisz go do plugins.ini zrestartuj serwer wejdzie i zmien mape i zobacz czy bedzie
MrStrajker
18.12.2022
nie mozliwe sam sprawdzalem na czystym serwerze i bylo normalnie wgraj plugin dopisz go do plugins.ini zrestartuj serwer wejdzie i zmien mape i zobacz czy bedzie
Plugin działa, bo po wpisaniu /visits wyświetla się komunikat.
Natomiast informacja: "spędziłeś na serwerze .." pojawiła się tylko raz a za każdym kolejnym wejście na serwer/zmianie mapy/restarcie csa juz nie mam tego komunikatu.
mordoryjacz
21.12.2022
Dziękuje bardzo, już ogarnąłem i działa
Do zamknięcia.
co bylo przyczyna ze wczesniej sie nie wyswietlało?
Użytkownik mordoryjacz edytował ten post 21.12.2022 21:27
MrStrajker
23.12.2022
Dziękuje bardzo, już ogarnąłem i działa
Do zamknięcia.
co bylo przyczyna ze wczesniej sie nie wyswietlało?
Zrobiłem reinstall serwera i wrzuciłem plugin na nowo. Zaczął poprawnie działać.
A przy okazji mam pytanie - jak zresetować każdemu ilość spędzonego czasu i wizyt?