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

problem lista graczy


Najlepsza odpowiedź KoRrNiK, 19.09.2021 13:14

Teraz tak patrzę to masz źle wypełnione bo pierwszy argument to "%s" czyli name i po nim masz , get_user_userid a drugiego argumentu nie masz wpisanego czyli %d 

I po co pobierasz np steamid jak go nie wykorzystujesz i twoja zmienna "wybrales" odpowiada za wybranego gracza więc jak wykonujesz client_cmd(wybrales, to wykonuje się u niego, a raczej powinieneś ty wykonać tą komendę wypełniając dane danego gracza którego wybrałeś czyli client_cmd(id, ..... , get_user_userid(wybrales);

client_cmd(wybrales, "amx_screen ^"%s^" 5", name, get_user_userid(id));
client_cmd(id, "amx_screen #%d 5", get_user_userid(wybrales)); 

Dla mnie lepszym sposobem jest taki: 


new userVarMenu[33][33];

public menuPlayer(id){
	
	if(!(get_user_flags(id) & ADMIN_BAN)) return;
	
	new menu = menu_create("Lista Graczy", "menuPlayer_2");
	
	new szName[33];
	
	for(new i = 1, x = 0; i < 33; i ++){
		
		if(!is_user_connected(i) || is_user_hltv(i) || is_user_bot(i)) continue;
		
		get_user_name(i, szName, sizeof(szName) - 1 );
		
		menu_additem(menu, szName);
		
		userVarMenu[id][x++] = i;
	}
	
	menu_display(id, menu, 0);
	
}

public menuPlayer_2(id, menu, item){
	if(item != MENU_EXIT){
		
		new target = userVarMenu[id][item];

		client_cmd(id, "amx_screen #%d 5", get_user_userid(target));
		
	} else menu_destroy(menu);
}

Gdy robisz pętle na graczach to rób od i = 1 ponieważ 0 = host i zmienną od nazwy rób [33] bo to maksymalny rozmiar bufora do przechowywania nazwy więc nie ma potrzeby robić na 64 .  

 

Oraz gdy chcesz banować przez ID to musisz przed nim wpisać jeszcze # czyli np amx_screen #1 5 

Przejdź do postu


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

#1 PANDA_2zl

    Guru

  • Power User

Reputacja: 177
Profesjonalista

  • Postów:722
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 18.09.2021 13:52

do pluginu od robienia ssów dorobiłem menu graczy, tak samo do pluginu banującego na zakres i oba działają na graczy steam, ale graczom nonsteam nic nie robią pomimo tego że przed dodaniem listy graczy z samej komendy działało, jaki może być w tym problem?

public Gracz(id)
{
	if(!(get_user_flags(id) & ADMIN_BAN))
		return PLUGIN_HANDLED;

	new menu = menu_create("\yLista Graczy", "Wybierz_Gracza");
	
	for(new i=0, n=0; i<=32; i++)
	{
		if(!is_user_connected(i))
			continue;
		
		id_gracza[n++] = i;
		new nazwa_gracza[64];
		get_user_name(i, nazwa_gracza, 63)
		menu_additem(menu, nazwa_gracza, "0", 0);
	}
	menu_display(id, menu);
	return PLUGIN_HANDLED;
}

public Wybierz_Gracza(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_CONTINUE;
	}
	wybrales = id_gracza[item]
	new name[MAX_NAME_LENGTH], authid[32];
	get_user_authid(id, authid, charsmax(authid));
	get_user_name(id, name, charsmax(name));
	

	client_cmd(wybrales, "amx_screen ^"%s^" 5", name, get_user_userid(id));
	return PLUGIN_HANDLED;
}

  • +
  • -
  • 0

#2 KoRrNiK

    Zaawansowany

  • Użytkownik

Reputacja: 81
Zaawansowany

  • Postów:78
  • Steam:steam
  • Lokalizacja:Rzeszów
Offline

Napisano 19.09.2021 13:14   Najlepsza odpowiedź

Teraz tak patrzę to masz źle wypełnione bo pierwszy argument to "%s" czyli name i po nim masz , get_user_userid a drugiego argumentu nie masz wpisanego czyli %d 

I po co pobierasz np steamid jak go nie wykorzystujesz i twoja zmienna "wybrales" odpowiada za wybranego gracza więc jak wykonujesz client_cmd(wybrales, to wykonuje się u niego, a raczej powinieneś ty wykonać tą komendę wypełniając dane danego gracza którego wybrałeś czyli client_cmd(id, ..... , get_user_userid(wybrales);

client_cmd(wybrales, "amx_screen ^"%s^" 5", name, get_user_userid(id));
client_cmd(id, "amx_screen #%d 5", get_user_userid(wybrales)); 

Dla mnie lepszym sposobem jest taki: 


new userVarMenu[33][33];

public menuPlayer(id){
	
	if(!(get_user_flags(id) & ADMIN_BAN)) return;
	
	new menu = menu_create("Lista Graczy", "menuPlayer_2");
	
	new szName[33];
	
	for(new i = 1, x = 0; i < 33; i ++){
		
		if(!is_user_connected(i) || is_user_hltv(i) || is_user_bot(i)) continue;
		
		get_user_name(i, szName, sizeof(szName) - 1 );
		
		menu_additem(menu, szName);
		
		userVarMenu[id][x++] = i;
	}
	
	menu_display(id, menu, 0);
	
}

public menuPlayer_2(id, menu, item){
	if(item != MENU_EXIT){
		
		new target = userVarMenu[id][item];

		client_cmd(id, "amx_screen #%d 5", get_user_userid(target));
		
	} else menu_destroy(menu);
}

Gdy robisz pętle na graczach to rób od i = 1 ponieważ 0 = host i zmienną od nazwy rób [33] bo to maksymalny rozmiar bufora do przechowywania nazwy więc nie ma potrzeby robić na 64 .  

 

Oraz gdy chcesz banować przez ID to musisz przed nim wpisać jeszcze # czyli np amx_screen #1 5 


  • +
  • -
  • 1

- Na wiadomości typu "siema, mam sprawę" nie odpisuję pisz od razu o co Ci chodzi.

- Jeśli masz zlecenie pisz śmiało  :)

- Nie pomagam na PW za darmo  :(

 

 





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

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