| Offline | 
				 				
					  | 
				 				
					  | 
				 				 
				 Csatlakozott:2015.04.10. 19:49 Hozzászólások:610 Megköszönt másnak: 53 alkalommal Megköszönték neki: 147 alkalommal				
			 | 
			
				
				
					
						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.  						 _________________ Néha itt, de többször nem. 							
  
							A hozzászólást 4 alkalommal szerkesztették, utoljára Akosch:. 2015.08.21. 21:16-kor.		
  
						
					 | 
				 
				 
			 |