←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Co zrobić by wpisane komendy znikały?

  • +
  • -
Vanilla's Photo Vanilla 03.03.2021

Witam, mam takie śmieszne a zapewne banalne pytanie, w jaki sposób można ustawić aby komenda, np. /menu, nie wyświetlała sie na czacie? Może to być plugin usuwający komendy z czatu, ale najlepiej jakby to był dopisek do pluginu :)

Quote

  • +
  • -
Toldi's Photo Toldi 03.03.2021

Daj

return PLUGIN_HANDLED;

zamiast 

return PLUGIN_CONTINUE;

w funkcji która otwiera się po wpisaniu komendy.

Quote

  • +
  • -
Vanilla's Photo Vanilla 04.03.2021

W drużynie spectator, komenda /menu sie nie wyświetla, wygląda tak:

public MenuGraczaNieZywego(id)
{
         new menu = menu_create("\w[\rJailbreak\w] Menu \rWidza", "Handel_Menu");
	
	menu_additem(menu, "\w[\r~\w] Info \rVIP", "0");
	menu_additem(menu, "\w[\r~\w] Info \rSUPER VIP", "1");

	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna");
	menu_display(id, menu);

	return PLUGIN_HANDLED;
}

W druzynie TT:

public MenuGraczaTT(id)
{
	new menu = menu_create("\w[\rJailbreak\w] Menu \rWieznia", "Handel_Menu");
	new cb = menu_makecallback("Menu_Callback");	

	menu_additem(menu, "\w[\r~\w] Czapki \y- Wybierz czapke", 		"3");
	menu_additem(menu, "\w[\r~\w] Sklep \y- Sklep za szlugi", 		"19");
	menu_additem(menu, "\w[\r~\w] Ukradnij bron \y- Kradziez broni CT", 	"4");
	menu_additem(menu, "\w[\r~\w] Ruletka \y- Wylosuj bonus", 		"20");
	menu_additem(menu, "\w[\r~\w] \rZyczenie \y- Dla ostatniego wieznia", 	"18", 4, cb);
	menu_additem(menu, "\w[\r~\w] Info \rVIP", "0");
	menu_additem(menu, "\w[\r~\w] Info \rSUPER VIP", "1");
	menu_additem(menu, "\w[\r~\w] Serwerowy \rRegulamin", "2");
	
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna");
	menu_setprop(menu, MPROP_PERPAGE, 7);
	menu_display(id, menu);

	return PLUGIN_HANDLED;
}

CT

public MenuGraczaCT(id)
{
	new menu = menu_create("\w[\rJailbreak\w] Menu \rStraznika:", "Handel_Menu");
	new cb = menu_makecallback("Menu_Callback");

	menu_additem(menu, "\w[\r~\w] Wez \rProwadzenie", 		"6", 1, cb);
	menu_additem(menu, "\w[\r~\w] Przeszukaj \rWieznia","5");
	menu_additem(menu, "\w[\r~\w] Otworz \rCele", 	"7");
	menu_additem(menu, "\w[\r~\w] Walka \rwiezniow\w: \rON/OFF", 	"8", 3, cb);
	menu_additem(menu, "\w[\r~\w] Mikrofon dla \rWiezniow\w: \rON/OFF", 	"9");
	menu_additem(menu, "\w[\r~\w] Wbierz \rZabawy \y- Wlacz zabawe", 		"10", 3, cb);
	menu_additem(menu, "\w[\r~\w] Wlacz \rGong \y- Sygnal gongu","17", 3, cb);
	menu_additem(menu, "\w[\r~\w] Oznacz wieznia \rkolorem",   "43");
	menu_additem(menu, "\w[\r~\w] Wylosuj \rWieznia",    "44");
	menu_additem(menu, "\w[\r~\w] Daj: \yFreeDay'a lub Duszka","11");
	menu_additem(menu, "\w[\r~\w] Daj \rDeagle'a\w Wiezniowi","21", 3, cb);
	menu_additem(menu, "\w[\r~\w] Podziel \rWiezniow","22", 3, cb);
	menu_additem(menu, "\w[\r~\w] Info \rVIP", "0");
	menu_additem(menu, "\w[\r~\w] Info \rSUPER VIP", "1");
	menu_additem(menu, "\w[\r~\w] Serwerowy \rRegulamin", "2");
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna");
	menu_display(id, menu);

        return PLUGIN_HANDLED;
}

Komenda na spec sie nie wyświetla, a w TT i CT już sie wyświetla

Quote

  • +
  • -
Misiu.'s Photo Misiu. 04.03.2021

Jest też na to jeden sprytny plugin https://darkgl.pl/20...rywanie-komend/

Quote

  • +
  • -
Zuzza's Photo Zuzza 04.03.2021

Po 1. przechwytywanie czatu, w plugin init
register_clcmd("say", "cmdSay")
register_clcmd("say_team", "cmdSay")
Po 2. Funkcja cmdSay
public cmdSay(id){
	new szMessage[124];
	read_args(szMessage, sizeof( szMessage )); 
	remove_quotes(szMessage);	
	if( szMessage[0] == '/')		
		if( equal(szMessage, "/menu"){
			if( !is_user_alive(id) )
				MenuDlaTrupa(id)
			else{
				switch(get_user_team(id)){
					case 1: MenuDlaTT(id)
					case 2: MenuDlaCT(id)
				}
			}
		}else if( equal(szMessage, "/innemenu"){
			TuInneMenu(id)
		}
		
		return PLUGIN_HANDLED // Byl slash na poczatku wiec nie wysylam wiadomosci na czat.
	}
	return PLUGIN_CONTINUE //Nie bylo slasha na poczatku wiec wysylam wiadomosc na czat
}
Wszystkie wiadomości których pierwszy znak to / nie zostaną wyświetlone na say. Polecam od razu wykorzystać te funkcje do dodawania komend do pluginu zamiast pisać dla każdej komendy register_clcmd("say /Komenda", "funckja")
 
Dzięki takiej obsłudze komend zaoszczędzisz sporo nerwów i możesz dodać parę fajnych możliwości np jeżeli masz tylko 2 komendy
 
/menu
/konto
 
to możesz zrobić aby te komendy wyświetlały się kiedy ktoś wpisze skrót np dla menu: /me, /menu, /men, /MENUUUU
Jednak jak widzisz zadziała także gdy wpiszesz /me,  a taka komenda też jest z innego pluginu bodajże. ale mimo wszystko chyba rozumiesz o co mi chodzi. 
if( containi(szMessage, "/m") != -1 ){
	
}
//Te same menu pod dwie komendy: /sklep, /shop

if( containi(szMessage, "/sk") != -1 || equali(szMessage, "/shop")){
MenuSklepu(id)
}
 
Polecam używać equali, oraz containi te funkcje nie biorą pod uwage wielkości liter,
Edited by Zuzza, 04.03.2021 12:17.
Quote

  • +
  • -
rzeznik9871's Photo rzeznik9871 05.03.2021

@up ja to bym jednak zwracał PLUGIN_HANDLED_MAIN aby nie bylo jakichkolwiek problemow z komendami innych pluginów

Quote

  • +
  • -
Toldi's Photo Toldi 05.03.2021

Mi zawsze 

return PLUGIN_HANDLED;

pomagało. Zauważ że po wpisaniu komendy /menu wykonuje się funkcja, która 'odsyła' nas do innej funkcji, która wyświetla odpowiednie menu w zależności w jakiej drużynie jesteśmy i właśnie w tej funkcji sprawdź czy masz to co podałem wyżej.

Quote