| Láttam többeknek is problémája akadt az addolás, ajándékozás menü elkészítésével, szóval gondoltam bemutatom nektek egy kicsit kiegészített változatát.
 
 Először is deklaráljuk a szükséges változókat és készítünk 2 definiálást:
 
 #include <amxmodx>#include <amxmisc>#include <ColorChat> #define PLUGIN "New Plug-In"#define VERSION "1.0"#define AUTHOR "Akosch:." #define SLOT 32 //Itt adjuk meg, hogy hány slotos a szerverünk.#define ADDFLAG ADMIN_IMMUNITY //Itt adjuk meg, hogy milyen joggal tudjon addolni az admin. new g_iCelpont[SLOT + 1] //Ez fogja tárolni a kiválasztott személy azonosítóját.new g_iValtozo[SLOT + 1] //Ezt fogom használni, a szervereken található pont, ezüst vagy arany helyett.
 
 Ha ezzel meglennénk akkor már minden rendelkezésünkre áll, hogy elkészítsük a menüt:
 
  Ne feledjük, hogy a pluginban a játékosok a szerverre csatlakozásukkor kapott azonosítószám(id) szerint vannak azonosítva(ez a szám 1-től a szerver slotiszámáig terjed).
 
 public plugin_init(){	register_plugin(PLUGIN,VERSION,AUTHOR); 	register_clcmd("say /add", "AdasMenu");	register_clcmd("ADAS", "Adas");} public AdasMenu(id){	if(access(id, ADDFLAG)) //Ellenőrizzük, hogy a menüt megnyitó rendelkezik-e megfelelő joggal.	{		new sMenu[64], sInfo[8], pMenu;		formatex(sMenu, charsmax(sMenu), "Válaszd ki kinek szeretnél adni értéket!^nSaját értékeid: %i", g_iValtozo[id]); //Megjelenítjük menüben, h neki mennyije van, megelőzve azt, hogy többet írjon be mint amije van.		pMenu = menu_create(sMenu, "AdasKezelo"); 		for(new i = 1; i < SLOT; i ++)		{			if(!is_user_connected(i)) //Ha nincs csatlakozva ilyen azonosítóval rendelkező játékos egyszerűen léptetünk egyet a ciklusban.				continue; 			get_user_name(i, sMenu, charsmax(sMenu)); //Ha csatlakozva van akkor lekérjük a nevét.			num_to_str(i, sInfo, charsmax(sInfo)); //Lementjük az azonosítóját is.			menu_additem(pMenu, sMenu, sInfo); //Létrehozunk egy menüpontot a játékos nevével és infóként átadjuk az azonosítót.		}		//Legyen szép magyar minden <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->		menu_setprop(pMenu, MPROP_EXIT, MEXIT_ALL);		menu_setprop(pMenu, MPROP_BACKNAME, "Vissza");		menu_setprop(pMenu, MPROP_NEXTNAME, "Tovább");		menu_setprop(pMenu, MPROP_EXITNAME, "Kilépés"); 		menu_display(id , pMenu, 0);	}	else	{		ColorChat(id, GREEN, "[Információ]^1 Ehhez nincs hozzáférésed!"); //Ha nincs joga megnyitni ezt a menüt dobunk neki egy üzenetet.	} 	return PLUGIN_HANDLED;} public AdasKezelo(id, menu, item){	if(item == MENU_EXIT)	{		menu_destroy(menu); 		return PLUGIN_HANDLED;	} 	new access, info[8], name[64], callback;	menu_item_getinfo(menu, item, access, info, 5, name, 63, callback); 	g_iCelpont[id] = str_to_num(info); //A választott menüpontnál mentett azonosítót lementjük a változónkba. 	if(!is_user_connected(g_iCelpont[id])) //Ha idő közben lecsatlakozott volna a választott játékos.	{		ColorChat(id, GREEN, "[Információ]^1 Sajnos lecsatlakozott a kiválasztott játékos!") //Dobunk egy üzenetet neki. 		menu_display(id, menu, 0); //Megnyitjuk neki a menüt újra, hátha talál valaki mást <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D --> 		return PLUGIN_HANDLED;	} 	client_cmd(id, "messagemode ADAS"); //Létrehozunk egy beviteli módot("ADAS" néven). 	menu_destroy(menu); //Eltüntetjük a menüt a játékosnál. 	return PLUGIN_HANDLED;}
 Már csak egy lépés maradt hátra... Ellenőrizni, hogy a beírt szöveg csak számokat tartalmaz és eldönteni, hogy mit is csinálunk vele.
 
 Ha addolás menüt akarunk:
 
 
 public Adas(id){	new adat[192], szam;	read_args(adat, charsmax(adat));        remove_quotes(adat); 	if(is_str_num(adat)) //Ellenőrizzük, hogy csak számokat tartalmaz a beírt szöveg.	{		szam = str_to_num(adat) //Átkonvertáljuk a szöveget számokká.		if(szam) //Ellenőrizzük, h a beírt szám nagyobb mint 0, van értelme hozzáadni.		{			g_iValtozo[g_iCelpont[id]] += szam; //Hozzáadjuk a választott játékos változójához a beírt számot.			ColorChat(g_iCelpont[id], GREEN, "[Információ] ^1 Kaptál %i értéket", szam); //Dobunk a választott játékosnak egy üzenetet.		}		else			ColorChat(id, GREEN, "[Információ] ^1 0-t fölösleges hozzáadni az ölésekhez.");	}	else		ColorChat(id, GREEN, "[Információ] ^1 A megadott szöveg nem csak számokat tartalmazott.(érvénytelen)"); 	return PLUGIN_CONTINUE;}
 Ha ajándékozás menüt:
 
 
 public Adas(id){	new adat[192], szam;	read_args(adat, charsmax(adat));        remove_quotes(adat); 	if(is_str_num(adat)) //Ellenőrizzük, hogy csak számokat tartalmaz a beírt szöveg.	{		szam = str_to_num(adat) //Átkonvertáljuk a szöveget számokká.		if(g_iValtozo[id] >= szam) //Ellenőrizzük, hogy van-e ennyije.		{			g_iValtozo[g_iCelpont[id]] += szam; //Hozzáadjuk a választott játékos változójához a beírt számot.			g_iValtozo[id] -= szam; //Levonjuk az ajándékozott mennyiséget.			ColorChat(id, GREEN, "[Információ] ^1Sikeresen elküldtél %i értéket.", szam);			ColorChat(g_iCelpont[id], GREEN, "[Információ] ^1 Kaptál %i értéket.", szam); //Dobunk a választott játékosnak egy üzenetet.		}		else			ColorChat(id, GREEN, "[Információ] ^1 0-t fölösleges hozzáadni az ölésekhez.");	}	else		ColorChat(id, GREEN, "[Információ] ^1 A megadott szöveg nem csak számokat tartalmazott.(érvénytelen)"); 	return PLUGIN_CONTINUE;}
 Végül pedig a teljes addolás menü:
 
 
 #include <amxmodx>#include <amxmisc>#include <ColorChat> #define PLUGIN "New Plug-In"#define VERSION "1.0"#define AUTHOR "Akosch:." #define SLOT 32#define ADDFLAG ADMIN_CVAR new g_iCelpont[SLOT + 1]; //Ez fogja tárolni a kiválasztott személy azonosítóját.new g_iValtozo[SLOT + 1]; //Ezt fogom használni, a szervereken található pont, ezüst vagy arany helyett. public plugin_init(){	register_plugin(PLUGIN,VERSION,AUTHOR); 	register_clcmd("say /add", "AdasMenu");	register_clcmd("ADAS", "Adas");} public AdasMenu(id){	if(access(id, ADDFLAG)) //Ellenőrizzük, hogy a menüt megnyitó rendelkezik-e megfelelő joggal.	{		new sMenu[64], sInfo[8], pMenu;		formatex(sMenu, charsmax(sMenu), "Válaszd ki kinek szeretnél adni értéket!^nSaját értékeid: %i", g_iValtozo[id]);		pMenu = menu_create(sMenu, "AdasKezelo"); 		for(new i = 1; i < SLOT; i ++)		{			if(!is_user_connected(i)) //Ha nincs csatlakozva ilyen azonosítóval rendelkező játékos egyszerűen léptetünk egyet a ciklusban.				continue; 			get_user_name(i, sMenu, charsmax(sMenu)); //Ha csatlakozva van akkor lekérjük a nevét.			num_to_str(i, sInfo, charsmax(sInfo)); //Lementjük az azonosítóját is.			menu_additem(pMenu, sMenu, sInfo); //Létrehozunk egy menüpontot a játékos nevével és infóként átadjuk az azonosítót.		}		//Legyen szép magyar minden <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->		menu_setprop(pMenu, MPROP_EXIT, MEXIT_ALL);		menu_setprop(pMenu, MPROP_BACKNAME, "Vissza");		menu_setprop(pMenu, MPROP_NEXTNAME, "Tovább");		menu_setprop(pMenu, MPROP_EXITNAME, "Kilépés"); 		menu_display(id , pMenu , 0);	}	else	{		ColorChat(id, GREEN, "[Információ]^1 Ehhez nincs hozzáférésed!"); //Ha nincs joga megnyitni ezt a menüt dobunk neki egy üzenetet.	} 	return PLUGIN_HANDLED;} public AdasKezelo(id, menu, item){	if(item == MENU_EXIT)	{		menu_destroy(menu); 		return PLUGIN_HANDLED;	} 	new access, info[8], name[64], callback;	menu_item_getinfo(menu, item, access, info, 5, name, 63, callback); 	g_iCelpont[id] = str_to_num(info); //A választott menüpontnál mentett azonosítót lementjük a változónkba. 	if(!is_user_connected(g_iCelpont[id])) //Ha idő közben lecsatlakozott volna a választott játékos.	{		ColorChat(id, GREEN, "[Információ]^1 Sajnos lecsatlakozott a kiválasztott játékos!") //Dobunk egy üzenetet neki. 		menu_display(id, menu, 0); //Megnyitjuk neki a menüt újra, hátha talál valaki mást <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D --> 		return PLUGIN_HANDLED;	} 	client_cmd(id, "messagemode ADAS"); //Létrehozunk egy beviteli módot("ADAS" néven). 	menu_destroy(menu); //Eltüntetjük a menüt a játékosnál. 	return PLUGIN_HANDLED;} public Adas(id){	new adat[192], szam;	read_args(adat, charsmax(adat));        remove_quotes(adat); 	if(is_str_num(adat)) //Ellenőrizzük, hogy csak számokat tartalmaz a beírt szöveg.	{		szam = str_to_num(adat) //Átkonvertáljuk a szöveget számokká.		if(szam) //Ellenőrizzük, h a beírt szám nagyobb mint 0, van értelme hozzáadni.		{			g_iValtozo[g_iCelpont[id]] += szam; //Hozzáadjuk a választott játékos változójához a beírt számot.			ColorChat(g_iCelpont[id], GREEN, "[Információ] ^1 Kaptál %i értéket", szam); //Dobunk a választott játékosnak egy üzenetet.		}		else			ColorChat(id, GREEN, "[Információ] ^1 0-t fölösleges hozzáadni az ölésekhez.");	}	else		ColorChat(id, GREEN, "[Információ] ^1 A megadott szöveg nem csak számokat tartalmazott.(érvénytelen)"); 	return PLUGIN_CONTINUE;}
 ...és a teljes ajándékozás menü:
 
 
 #include <amxmodx>#include <amxmisc>#include <ColorChat> #define PLUGIN "New Plug-In"#define VERSION "1.0"#define AUTHOR "Akosch:." #define SLOT 32#define ADDFLAG ADMIN_ALL new g_iCelpont[SLOT + 1]; //Ez fogja tárolni a kiválasztott személy azonosítóját.new g_iValtozo[SLOT + 1]; //Ezt fogom használni, a szervereken található pont, ezüst vagy arany helyett. public plugin_init(){	register_plugin(PLUGIN,VERSION,AUTHOR); 	register_clcmd("say /add", "AdasMenu");	register_clcmd("ADAS", "Adas");} public AdasMenu(id){	if(access(id, ADDFLAG)) //Ellenőrizzük, hogy a menüt megnyitó rendelkezik-e megfelelő joggal.	{		new sMenu[64], sInfo[8], pMenu;		formatex(sMenu, charsmax(sMenu), "Válaszd ki kinek szeretnél adni értéket!^nSaját értékeid: %i", g_iValtozo[id]);		pMenu = menu_create(sMenu, "AdasKezelo"); 		for(new i = 1; i < SLOT; i ++)		{			if(!is_user_connected(i)) //Ha nincs csatlakozva ilyen azonosítóval rendelkező játékos egyszerűen léptetünk egyet a ciklusban.				continue; 			get_user_name(i, sMenu, charsmax(sMenu)); //Ha csatlakozva van akkor lekérjük a nevét.			num_to_str(i, sInfo, charsmax(sInfo)); //Lementjük az azonosítóját is.			menu_additem(pMenu, sMenu, sInfo); //Létrehozunk egy menüpontot a játékos nevével és infóként átadjuk az azonosítót.		}		//Legyen szép magyar minden <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->		menu_setprop(pMenu, MPROP_EXIT, MEXIT_ALL);		menu_setprop(pMenu, MPROP_BACKNAME, "Vissza");		menu_setprop(pMenu, MPROP_NEXTNAME, "Tovább");		menu_setprop(pMenu, MPROP_EXITNAME, "Kilépés"); 		menu_display(id , pMenu , 0);	}	else	{		ColorChat(id, GREEN, "[Információ]^1 Ehhez nincs hozzáférésed!"); //Ha nincs joga megnyitni ezt a menüt dobunk neki egy üzenetet.	} 	return PLUGIN_HANDLED;} public AdasKezelo(id, menu, item){	if(item == MENU_EXIT)	{		menu_destroy(menu); 		return PLUGIN_HANDLED;	} 	new access, info[8], name[64], callback;	menu_item_getinfo(menu, item, access, info, 5, name, 63, callback); 	g_iCelpont[id] = str_to_num(info); //A választott menüpontnál mentett azonosítót lementjük a változónkba. 	if(!is_user_connected(g_iCelpont[id])) //Ha idő közben lecsatlakozott volna a választott játékos.	{		ColorChat(id, GREEN, "[Információ]^1 Sajnos lecsatlakozott a kiválasztott játékos!") //Dobunk egy üzenetet neki. 		menu_display(id, menu, 0); //Megnyitjuk neki a menüt újra, hátha talál valaki mást <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D --> 		return PLUGIN_HANDLED;	} 	client_cmd(id, "messagemode ADAS"); //Létrehozunk egy beviteli módot("ADAS" néven). 	menu_destroy(menu); //Eltüntetjük a menüt a játékosnál. 	return PLUGIN_HANDLED;} public Adas(id){	new adat[192], szam;	read_args(adat, charsmax(adat));        remove_quotes(adat); 	if(is_str_num(adat)) //Ellenőrizzük, hogy csak számokat tartalmaz a beírt szöveg.	{		szam = str_to_num(adat) //Átkonvertáljuk a szöveget számokká.		if(g_iValtozo[id] >= szam) //Ellenőrizzük, hogy van-e ennyije.		{			g_iValtozo[g_iCelpont[id]] += szam; //Hozzáadjuk a választott játékos változójához a beírt számot.			g_iValtozo[id] -= szam; //Levonjuk az ajándékozott mennyiséget.			ColorChat(id, GREEN, "[Információ] ^1Sikeresen elküldtél %i értéket.", szam);			ColorChat(g_iCelpont[id], GREEN, "[Információ] ^1 Kaptál %i értéket.", szam); //Dobunk a választott játékosnak egy üzenetet.		}		else			ColorChat(id, GREEN, "[Információ] ^1 0-t fölösleges hozzáadni az ölésekhez.");	}	else		ColorChat(id, GREEN, "[Információ] ^1 A megadott szöveg nem csak számokat tartalmazott.(érvénytelen)"); 	return PLUGIN_CONTINUE;}
 
  Ha szeretnénk, hogy mindenki hozzáférjen a menühöz(pl, ha ajándékozáshoz használnánk), akkor írjunk az ADDFLAG-hez ADMIN_ALL-t.
 Ha elírtam, vagy rosszul fejeztem ki valamit nyugodtan szóljatok
  Remélem hasznos lesz pár embernek
  
 Kiegészítés:
 Én ColorChat.inc-t használtam az üzenet küldéshez(személyes kedvenc), ha ez nincs meg neked, vagy kihagyod a "#include <ColorChat>" sort, akkor errorokat fog dobni.
 
 Megoldás: Átírod az üzeneteket más üzenet küldési lehetőséghez, vagy beszerzel egy ColorChat.inc file-t.
 |