Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] [Problem] Licznik wizyt na serwerze


Najlepsza odpowiedź mordoryjacz, 31.01.2023 19:34

#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);
}

usun zapis czasu

Przejdź do postu


  • Zamknięty Temat jest zamknięty
4 odpowiedzi w tym temacie

#1 Aramis

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:28
  • Imię:Patryk
  • Lokalizacja:Polska
Offline

Napisano 31.01.2023 16:42

Mam plugin, który zlicza liczbę wizyt na serwerze i pokazuje je na życzenie. Problem w tym, że po wejściu na serwer komunikat pokazuje poprawną liczbę, np. "To Twoja 3 wizyta" - i to się zgadza. Natomiast po wpisaniu "/visits" pokazuje liczbę wizyt, która niestety wynosi 49 lub 50 (zależnie od gracza), i nie ulega ona zmianie. Próbowałem usuwać cały plik "visitcounter_db" z nvault, ale wtedy znowu zlicza w pierwszym komunikacie poprawnie od pierwszej wizyty, a po użyciu komendy bez zmian - 49/50. Pewnie drobnostka, proszę o zerknięcie :)

 

Oto kod:

#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <colorchat>

#define PLUGIN "VisitCounter"
#define VERSION "1.1"
#define AUTHOR "Sebxx"

new c_tmp1, c_tmp2, c_tmp3, c_str1, c_str2, g_vault, visits, last_visit
new stamp[11], prefix[33], web_addr[33], szSteam[35], temp[19], tmp[7]

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	g_vault = nvault_open("visitcounter_db")

	register_clcmd("say /visits", "show_visits")			// komenda do sprawdzania liczby wizyt
	c_str1 = register_cvar("visitcounter_prefix", "[CIACH]")	// prefix przed komunikatami
	c_str2 = register_cvar("visitcounter_webaddr", "www.CIACH.pl")	// adres sieci w komunikacie
	c_tmp1 = register_cvar("visitcounter_adson", "0")		// wlacz komunikat z liczba wizyt
	c_tmp2 = register_cvar("visitcounter_adstime", "0.0")		// co ile sekund wyswietlac komunikat?
	c_tmp3 = register_cvar("visitcounter_interval", "1800")		// po jakim czasie naliczyc nowe wejscie?
}

public client_authorized( id, const authid[] )
{
	if( !is_user_bot( id ) && !is_user_hltv( id ) )
	{
		set_task(10.0, "counter", id, _, _, "a", 1)
		if ( get_pcvar_num(c_tmp1) == 1 )
		{
			set_task(get_pcvar_float(c_tmp2), "show_visits", id, _, _, "b")
		}
	}
}

public counter(id)
{
	if ( is_user_connected( id ) )
	{
		get_user_authid( id, szSteam, charsmax( szSteam ) )
		get_pcvar_string( c_str1, prefix, charsmax(prefix) )
		get_pcvar_string( c_str2, web_addr, charsmax(web_addr) )

		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, "%s^x01 To Twoja %d wizyta na naszym serwerze.", prefix, visits )
				ColorChat( id, TEAM_COLOR, "%s^x01 Zarejestruj sie na ^x03%s^x01!", prefix, web_addr )
			}
			else
			{	
				return PLUGIN_CONTINUE
			}
		}
		else
		{	
			visits = 1
			ColorChat( id, TEAM_COLOR, "%s^x01 To Twoja pierwsza wizyta na naszym serwerze!", prefix )
			ColorChat( id, TEAM_COLOR, "%s^x01 Zarejestruj sie na ^x03%s^x01!", prefix, web_addr )
		}

		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 ) )
		get_pcvar_string( c_str1, prefix, charsmax(prefix) )
		get_pcvar_string( c_str2, web_addr, charsmax(web_addr) )

		nvault_get( g_vault , szSteam , temp , charsmax( temp ) )
		
		strtok(temp, tmp, charsmax( tmp ), stamp, charsmax( stamp ), ';');

		ColorChat( id, TEAM_COLOR, "%s^x01 To Twoja %d wizyta na naszym serwerze.", prefix, tmp )
		ColorChat( id, TEAM_COLOR, "%s^x01 Zarejestruj sie na ^x03%s^x01!", prefix, web_addr )
	}
}

public client_disconnected(id)
{
	if( task_exists(id) )
	{
		remove_task(id)
	}
}

public plugin_end()
{
	if( g_vault != INVALID_HANDLE )
	{
		nvault_close(g_vault)
	}
}

  • +
  • -
  • 0

#2 mordoryjacz

    Profesjonalista

  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:171
Offline

Napisano 31.01.2023 19:34   Najlepsza odpowiedź

#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);
}

usun zapis czasu


  • +
  • -
  • 1

#3 Deus Vult

    Nowy

  • Użytkownik

Reputacja: 109
Zaawansowany

  • Postów:213
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Rzeszow
Offline

Napisano 31.01.2023 19:56

Nie możesz wyświetlać stringa jako typ Integer. Popraw linijke na tą:

ColorChat( id, TEAM_COLOR, "%s^x01 To Twoja %d wizyta na naszym serwerze.", prefix, str_to_num(tmp) )

i tak jak wyżej kolega napisał usuń czas bo i tak z niego nie korzystasz


Użytkownik Devastator edytował ten post 31.01.2023 19:57

  • +
  • -
  • 1

#4 Aramis

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:28
  • Imię:Patryk
  • Lokalizacja:Polska
Offline

Napisano 31.01.2023 22:24


usun zapis czasu

 

Usunąłem, skompilowałem - działa. Bardzo dziękuję :)


  • +
  • -
  • 0

#5 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 01.02.2023 07:54

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych