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

Menu Broni - Jak zrobić aby zapamiętać bron przy ponownym odrodzeniu?


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 Skull.

    Wszechpomocny

  • Użytkownik

Reputacja: 70
Pomocny

  • Postów:314
  • Steam:steam
  • Imię:Tajemnica
  • Lokalizacja:Woj. Wielkopolskie
Offline

Napisano 14.05.2015 19:16

Witam. Jak w temacie, otóż mam problem z zrobieniem aby przy odrodzeniu były te same bronie co zostały wybrane po pierwszym odrodzeniu.

 

Mój plugin na menu broni wygląda tak: http://amxx.pl/paste...epi7g/type/cpp/

A chciałbym aby to wyglądało tak: http://amxx.pl/pastebin/up1n7xgymlmw/

 

Mam nadzieje że ktoś wie jak to zrobić i że mi tutaj pomoże ponieważ próbowałem już nawet wyciągnąć to z CSDM lecz nie udało mi się :(


  • +
  • -
  • 0

#2 Kowalsky

    master of disaster

  • Użytkownik

Reputacja: 136
Zaawansowany

  • Postów:424
  • Lokalizacja:San José
Offline

Napisano 14.05.2015 20:12

Zrób na przykładzie Knife Moda: http://amxx.pl/topic...noży-do-wyboru/Zobacz jak tutaj jest zrobiony handler knifemenu oraz funkcja SetKnife, zwróć także uwagę na tablicę knife_model[33]


  • +
  • -
  • 1

#3 Petpat

    Wszechwidzący

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 14.05.2015 20:16

http://amxx.pl/pastebin/1sxx2maztxyve/Łap troszkę skróciłem kod, można jeszcze bardziej, powinno działać. Sprawdź :)
  • +
  • -
  • 1

#4 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 14.05.2015 20:34

Spoiler

mozna lepiej ale za darmo powinno sie szanowac kazda pomoc


  • +
  • -
  • 1

#5 Skull.

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 70
Pomocny

  • Postów:314
  • Steam:steam
  • Imię:Tajemnica
  • Lokalizacja:Woj. Wielkopolskie
Offline

Napisano 17.05.2015 13:47

Dziękuje wam wszystkim za wszelką pomoc lecz największe podziękowania za pomoc należą się użytkownikowi: Asiap

Asiap - Oraz poprawiłem troszkę twój plugin pod kontem krótszy kod (usunięte nie potrzebne klamry) + dodałem bezlik magazynków.

Cały plugin można zobaczyć w temacie: http://amxx.pl/topic...zlik-magazynków


Jeszcze raz dziękuje! :kwiaty: :kwiaty: ^D^


  • +
  • -
  • 0

#6 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 17.05.2015 16:11

event CurWeapon nie sluzy do nabijania amunicji
ten event wykonuje sie za kazdym: strzalem, zmienie broni, przeladowaniu, zmiany predkosci biegu przez bron, wl i wyl celownika itp
 
lepiej wykorzystac forward Ham_Weapon_Reload i dopiero gdy gracz przeladowuje bron to dodawac amunicje
ja tak zawsze robie
 
i nie warto includowac calej biblioteki gdy uzywa sie tylko jednego natywu/forwardu najlepiej znalezc alternatywne i dodac do pluginu jako stock lub funkcje lokalna

#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
 
new g_iMyWeapons[33][2];
new CSW_MAX_AMMO[33] = {-2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1};

public plugin_init()
{
	register_plugin("Menu Broni", "v1.0", "Skull");
 
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);

	for(new g_szName[24], i = 1; i <= 30; i++)
	{
		if(!((1<<CSW_HEGRENADE|1<<CSW_C4|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG|1<<CSW_KNIFE) & 1<<i) && get_weaponname(i, g_szName, 23))
		{
			RegisterHam(Ham_Weapon_Reload, g_szName, "WeaponReload", 1);
		}
	}
}

public client_disconnect(id)
	g_iMyWeapons[id][0] = g_iMyWeapons[id][1] = 0;

public Odrodzenie(id)
{
	new menu = menu_create("Menu Broni", "Handel_Menu");
	menu_additem(menu, "Wybierz Bronie");
	menu_additem(menu, "Daj Poprzednie bronie");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_display(id, menu);
}

public Handel_Menu(id, menu, item)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE;
 
	switch(item)
	{
		case MENU_EXIT: return PLUGIN_CONTINUE;
		case 0: return MenuBroni(id);
		case 1:
		{
			new g_szName[24];
			get_weaponname(g_iMyWeapons[id][0], g_szName, 23);
			give_item(id, g_szName);
			get_weaponname(g_iMyWeapons[id][1], g_szName, 23);
			give_item(id, g_szName);
		}
	}
	return PLUGIN_CONTINUE;
}

public MenuBroni(id)
{
	new menu = menu_create("Wybierz Bron:", "Handel_Bronie");
	menu_additem(menu, "M4A1");
	menu_additem(menu, "AK47");
	menu_additem(menu, "AWP");
	menu_additem(menu, "Scout");
	menu_additem(menu, "AUG");
	menu_additem(menu, "Krieg 550");
	menu_additem(menu, "M249");
	menu_additem(menu, "MP5");
	menu_additem(menu, "UMP45");
	menu_additem(menu, "Famas");
	menu_additem(menu, "Galil");
	menu_additem(menu, "M3");
	menu_additem(menu, "XM1014");
	menu_additem(menu, "Mac10");
	menu_additem(menu, "TMP");
	menu_additem(menu, "P90");
	menu_additem(menu, "G3SG1 (autokampa)");
	menu_additem(menu, "Krieg 552 (autokampa)");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	return menu_display(id, menu);
}

public Handel_Bronie(id, menu, item)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE;

	switch(item)
	{
		case MENU_EXIT: return PLUGIN_CONTINUE;
		case 0: g_iMyWeapons[id][0] = CSW_M4A1;
		case 1: g_iMyWeapons[id][0] = CSW_AK47;
		case 2: g_iMyWeapons[id][0] = CSW_AWP;
		case 3: g_iMyWeapons[id][0] = CSW_SCOUT;
		case 4: g_iMyWeapons[id][0] = CSW_AUG;
		case 5: g_iMyWeapons[id][0] = CSW_SG550;
		case 6: g_iMyWeapons[id][0] = CSW_M249;
		case 7: g_iMyWeapons[id][0] = CSW_MP5NAVY;
		case 8: g_iMyWeapons[id][0] = CSW_UMP45;
		case 9: g_iMyWeapons[id][0] = CSW_FAMAS;
		case 10: g_iMyWeapons[id][0] = CSW_GALI;
		case 11: g_iMyWeapons[id][0] = CSW_M3;
		case 12: g_iMyWeapons[id][0] = CSW_XM1014;
		case 13: g_iMyWeapons[id][0] = CSW_MAC10;
		case 14: g_iMyWeapons[id][0] = CSW_TMP;
		case 15: g_iMyWeapons[id][0] = CSW_P90;
		case 16: g_iMyWeapons[id][0] = CSW_G3SG1;
		case 17: g_iMyWeapons[id][0] = CSW_SG552;
	}
	new g_szName[24];
	get_weaponname(g_iMyWeapons[id][0], g_szName, 23);
	give_item(id, g_szName);
	return MenuBroniPistolety(id);
}

public MenuBroniPistolety(id)
{
	new menu = menu_create("Wybierz Bron Krotka:", "Handel_BroniePistolety");
	menu_additem(menu, "Deagle");
	menu_additem(menu, "Elite");
	menu_additem(menu, "Usp");
	menu_additem(menu, "Glock18");
	menu_additem(menu, "Fiveseven");
	menu_additem(menu, "P228");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	return menu_display(id, menu);
}

public Handel_BroniePistolety(id, menu, item)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE;

	switch(item)
	{
		case MENU_EXIT: return PLUGIN_CONTINUE;
		case 0: g_iMyWeapons[id][1] = CSW_DEAGLE;
		case 1: g_iMyWeapons[id][1] = CSW_ELITE;
		case 2: g_iMyWeapons[id][1] = CSW_USP;
		case 3: g_iMyWeapons[id][1] = CSW_GLOCK18;
		case 4: g_iMyWeapons[id][1] = CSW_FIVESEVEN;
		case 5: g_iMyWeapons[id][1] = CSW_P228;
	}
	new g_szName[24];
	get_weaponname(g_iMyWeapons[id][1], g_szName, 23);
	give_item(id, g_szName);
	return PLUGIN_CONTINUE;
}

public WeaponReload(ent)
{
	if(!get_pdata_int(ent, 54, 4))
	{
		return;
	}
	new id = get_pdata_cbase(ent, 41, 4);

	static iWeapon, iAmmo;
	iWeapon = get_user_weapon(id, _, iAmmo);
	if(iAmmo != CSW_MAX_AMMO[iWeapon])
	{
		SetUserAmmo(id, CSW_MAX_AMMO[iWeapon], iWeapon);
	}
}

SetUserAmmo(id, iBpammo, iWeapon) {
	if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2)
	{
		return 0;
	}
	new g_szName[32];
	if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) 
	{
		while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName)))
		{
			if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id)
			{
				set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo);
			}
		}
		return 0;
	}
	set_pdata_int(id, 351, 0);
	return iWeapon;
}

Użytkownik Asiap edytował ten post 17.05.2015 16:14

  • +
  • -
  • 1

#7 Skull.

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 70
Pomocny

  • Postów:314
  • Steam:steam
  • Imię:Tajemnica
  • Lokalizacja:Woj. Wielkopolskie
Offline

Napisano 21.05.2015 19:23

 

event CurWeapon nie sluzy do nabijania amunicji
ten event wykonuje sie za kazdym: strzalem, zmienie broni, przeladowaniu, zmiany predkosci biegu przez bron, wl i wyl celownika itp
 
lepiej wykorzystac forward Ham_Weapon_Reload i dopiero gdy gracz przeladowuje bron to dodawac amunicje
ja tak zawsze robie
 
i nie warto includowac calej biblioteki gdy uzywa sie tylko jednego natywu/forwardu najlepiej znalezc alternatywne i dodac do pluginu jako stock lub funkcje lokalna

#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
 
new g_iMyWeapons[33][2];
new CSW_MAX_AMMO[33] = {-2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1};

public plugin_init()
{
	register_plugin("Menu Broni", "v1.0", "Skull");
 
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);

	for(new g_szName[24], i = 1; i <= 30; i++)
	{
		if(!((1<<CSW_HEGRENADE|1<<CSW_C4|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG|1<<CSW_KNIFE) & 1<<i) && get_weaponname(i, g_szName, 23))
		{
			RegisterHam(Ham_Weapon_Reload, g_szName, "WeaponReload", 1);
		}
	}
}

public client_disconnect(id)
	g_iMyWeapons[id][0] = g_iMyWeapons[id][1] = 0;

public Odrodzenie(id)
{
	new menu = menu_create("Menu Broni", "Handel_Menu");
	menu_additem(menu, "Wybierz Bronie");
	menu_additem(menu, "Daj Poprzednie bronie");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_display(id, menu);
}

public Handel_Menu(id, menu, item)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE;
 
	switch(item)
	{
		case MENU_EXIT: return PLUGIN_CONTINUE;
		case 0: return MenuBroni(id);
		case 1:
		{
			new g_szName[24];
			get_weaponname(g_iMyWeapons[id][0], g_szName, 23);
			give_item(id, g_szName);
			get_weaponname(g_iMyWeapons[id][1], g_szName, 23);
			give_item(id, g_szName);
		}
	}
	return PLUGIN_CONTINUE;
}

public MenuBroni(id)
{
	new menu = menu_create("Wybierz Bron:", "Handel_Bronie");
	menu_additem(menu, "M4A1");
	menu_additem(menu, "AK47");
	menu_additem(menu, "AWP");
	menu_additem(menu, "Scout");
	menu_additem(menu, "AUG");
	menu_additem(menu, "Krieg 550");
	menu_additem(menu, "M249");
	menu_additem(menu, "MP5");
	menu_additem(menu, "UMP45");
	menu_additem(menu, "Famas");
	menu_additem(menu, "Galil");
	menu_additem(menu, "M3");
	menu_additem(menu, "XM1014");
	menu_additem(menu, "Mac10");
	menu_additem(menu, "TMP");
	menu_additem(menu, "P90");
	menu_additem(menu, "G3SG1 (autokampa)");
	menu_additem(menu, "Krieg 552 (autokampa)");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	return menu_display(id, menu);
}

public Handel_Bronie(id, menu, item)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE;

	switch(item)
	{
		case MENU_EXIT: return PLUGIN_CONTINUE;
		case 0: g_iMyWeapons[id][0] = CSW_M4A1;
		case 1: g_iMyWeapons[id][0] = CSW_AK47;
		case 2: g_iMyWeapons[id][0] = CSW_AWP;
		case 3: g_iMyWeapons[id][0] = CSW_SCOUT;
		case 4: g_iMyWeapons[id][0] = CSW_AUG;
		case 5: g_iMyWeapons[id][0] = CSW_SG550;
		case 6: g_iMyWeapons[id][0] = CSW_M249;
		case 7: g_iMyWeapons[id][0] = CSW_MP5NAVY;
		case 8: g_iMyWeapons[id][0] = CSW_UMP45;
		case 9: g_iMyWeapons[id][0] = CSW_FAMAS;
		case 10: g_iMyWeapons[id][0] = CSW_GALI;
		case 11: g_iMyWeapons[id][0] = CSW_M3;
		case 12: g_iMyWeapons[id][0] = CSW_XM1014;
		case 13: g_iMyWeapons[id][0] = CSW_MAC10;
		case 14: g_iMyWeapons[id][0] = CSW_TMP;
		case 15: g_iMyWeapons[id][0] = CSW_P90;
		case 16: g_iMyWeapons[id][0] = CSW_G3SG1;
		case 17: g_iMyWeapons[id][0] = CSW_SG552;
	}
	new g_szName[24];
	get_weaponname(g_iMyWeapons[id][0], g_szName, 23);
	give_item(id, g_szName);
	return MenuBroniPistolety(id);
}

public MenuBroniPistolety(id)
{
	new menu = menu_create("Wybierz Bron Krotka:", "Handel_BroniePistolety");
	menu_additem(menu, "Deagle");
	menu_additem(menu, "Elite");
	menu_additem(menu, "Usp");
	menu_additem(menu, "Glock18");
	menu_additem(menu, "Fiveseven");
	menu_additem(menu, "P228");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	return menu_display(id, menu);
}

public Handel_BroniePistolety(id, menu, item)
{
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE;

	switch(item)
	{
		case MENU_EXIT: return PLUGIN_CONTINUE;
		case 0: g_iMyWeapons[id][1] = CSW_DEAGLE;
		case 1: g_iMyWeapons[id][1] = CSW_ELITE;
		case 2: g_iMyWeapons[id][1] = CSW_USP;
		case 3: g_iMyWeapons[id][1] = CSW_GLOCK18;
		case 4: g_iMyWeapons[id][1] = CSW_FIVESEVEN;
		case 5: g_iMyWeapons[id][1] = CSW_P228;
	}
	new g_szName[24];
	get_weaponname(g_iMyWeapons[id][1], g_szName, 23);
	give_item(id, g_szName);
	return PLUGIN_CONTINUE;
}

public WeaponReload(ent)
{
	if(!get_pdata_int(ent, 54, 4))
	{
		return;
	}
	new id = get_pdata_cbase(ent, 41, 4);

	static iWeapon, iAmmo;
	iWeapon = get_user_weapon(id, _, iAmmo);
	if(iAmmo != CSW_MAX_AMMO[iWeapon])
	{
		SetUserAmmo(id, CSW_MAX_AMMO[iWeapon], iWeapon);
	}
}

SetUserAmmo(id, iBpammo, iWeapon) {
	if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2)
	{
		return 0;
	}
	new g_szName[32];
	if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) 
	{
		while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName)))
		{
			if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id)
			{
				set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo);
			}
		}
		return 0;
	}
	set_pdata_int(id, 351, 0);
	return iWeapon;
}

Nie działa :/


  • +
  • -
  • 0

#8 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 21.05.2015 20:39

sprobuj zamienic

SetUserAmmo(id, iBpammo, iWeapon) {
	if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2)
	{
		return 0;
	}
	new g_szName[32];
	if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) 
	{
		while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName)))
		{
			if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id)
			{
				set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo);
			}
		}
		return 0;
	}
	set_pdata_int(id, 351, 0);
	return iWeapon;
}

na 

SetUserAmmo(id, iBpammo, iWeapon) {
	if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2)
	{
		return 0;
	}
	new g_szName[32];
	if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) 
	{
		while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName)))
		{
			if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id)
			{
				set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo);
				set_pdata_int(id, 351, 0);
				return iWeapon;
			}
		}
		return 0;
	}
}

  • +
  • -
  • 1

#9 Skull.

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 70
Pomocny

  • Postów:314
  • Steam:steam
  • Imię:Tajemnica
  • Lokalizacja:Woj. Wielkopolskie
Offline

Napisano 03.06.2015 22:49

 

sprobuj zamienic

SetUserAmmo(id, iBpammo, iWeapon) {
	if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2)
	{
		return 0;
	}
	new g_szName[32];
	if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) 
	{
		while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName)))
		{
			if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id)
			{
				set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo);
			}
		}
		return 0;
	}
	set_pdata_int(id, 351, 0);
	return iWeapon;
}

na 

SetUserAmmo(id, iBpammo, iWeapon) {
	if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2)
	{
		return 0;
	}
	new g_szName[32];
	if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) 
	{
		while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName)))
		{
			if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id)
			{
				set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo);
				set_pdata_int(id, 351, 0);
				return iWeapon;
			}
		}
		return 0;
	}
}

Nie testowałem jeszcze.

 

Lecz mam error:

L 06/03/2015 - 21:22:58: Invalid weapon id 0
L 06/03/2015 - 21:22:58: [AMXX] Run time error 10 (plugin "xVote_DM_MenuBroni.amxx") (native "get_weaponname") - debug not enabled!
L 06/03/2015 - 21:22:58: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

Dopisałem debug i czekam właśnie co mi się pojawi, to jest na razie bez dopisku debug.


  • +
  • -
  • 0




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

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