1. sayfa (Toplam 1 sayfa)

Özel Admin Menü

Gönderilme zamanı: Prş May 13, 2021 8:38 pm
gönderen FearLess
Merhabalar ben admin menü istiyorum ama forumdaki gibi değil.
Mesela Menüde 1. Sırada Ban Menu var
Ben Bu Ban Menuye otomatik Konsola amx_banmenu ile girmesini istiyorum.
Aynı şekilde slapmenu için de Konsola amx_slapmenu Yazdırsın.
Kick Menu İçin ise konsola amx_kickmenu
Çıkan Oyunucları Görüntülemek İçin İse konsola amx_last (bu yere girdiği zaman sadece giren admine lütfen konsola bakın yazsın.)
Ayrıca Bir Admin Giriş Yaptığında Menüye "Nick isimli admin Özel Admin Menüye Girdi." Yazsın.
Özel Ban Atması İçin Ban Menü (Menü İçinden Süre ve Sebep Soracak- Konsoldan Plugin amx_ban nick 0 süre yazdırsın loglardan o adminin attığı ban belli olsun.)
Özel Kick Atması İçin Kick Menü (Menü İçinden Sebep Soracak - amx_kick nick sebep yazdırsın loglardan o adminin attığı kick belli olsun.)
UzaBanMenu için konsola amx_uzabanmenu yazdırsın

Plugin için örnek vereyim mesela ts3 yazdır plugini kolayca yazdırıyor kolayca düzenleniyor.

Özel Admin Menü

Gönderilme zamanı: Prş May 13, 2021 9:23 pm
gönderen Özcan Örs
eklentiler-pluginler/kisayol-menu-t16142.html

Bu eklenti üzerinden istediğin gibi ayarlayabilirsin kanka

Özel Admin Menü

Gönderilme zamanı: Prş May 13, 2021 9:44 pm
gönderen bestcore
Sanırım istediği o değil. İstediğiniz şey admin menüde örnek veriyorum ban menu var, bu ban menuye girince karşısına seçenekler çıkacak 1. Banlayacağın oyuncuyu seç 2.Süre belirle 3. Sebep gir, bu 3'ünü doldurduktan sonra oyuncuyu banlaya basınca otomatik "x kişisine x süre ve x nedenle" ban atacak ve bunu panelde loglayacak. İstediğiniz böyle birşey mi ?

Özel Admin Menü

Gönderilme zamanı: Cum May 14, 2021 12:19 pm
gönderen tosunbey
@bestcore ustam dediğin şekil güzel bi menüye benziyor atabilirmisin

Özel Admin Menü

Gönderilme zamanı: Cum May 14, 2021 9:29 pm
gönderen FearLess
bestcore yazdı: Prş May 13, 2021 9:44 pm Sanırım istediği o değil. İstediğiniz şey admin menüde örnek veriyorum ban menu var, bu ban menuye girince karşısına seçenekler çıkacak 1. Banlayacağın oyuncuyu seç 2.Süre belirle 3. Sebep gir, bu 3'ünü doldurduktan sonra oyuncuyu banlaya basınca otomatik "x kişisine x süre ve x nedenle" ban atacak ve bunu panelde loglayacak. İstediğiniz böyle birşey mi ?
Hocam yakın söylediniz ama hatalar var mesela adam banlıyor ya adamın konsolundan amx_ban nick 0 süre yazdırıcak. Yani kullanan adminin üstünden banlıyacak.
Pluginin ayriyetten log tutmasına gerek kalmayacak. Admin Kayıtları amx_ban nick 0 süre diye gözükecek zaten.

Özel Admin Menü

Gönderilme zamanı: Cum May 14, 2021 10:41 pm
gönderen bestcore
FearLess yazdı: Cum May 14, 2021 9:29 pm Hocam yakın söylediniz ama hatalar var mesela adam banlıyor ya adamın konsolundan amx_ban nick 0 süre yazdırıcak. Yani kullanan adminin üstünden banlıyacak.
Pluginin ayriyetten log tutmasına gerek kalmayacak. Admin Kayıtları amx_ban nick 0 süre diye gözükecek zaten.
Onu yaparım sıkıntı yok. Müsait zamanımda ilgileneceğim.

Özel Admin Menü

Gönderilme zamanı: Pzr May 16, 2021 3:23 pm
gönderen bestcore
FearLess yazdı: Cum May 14, 2021 9:29 pm Hocam yakın söylediniz ama hatalar var mesela adam banlıyor ya adamın konsolundan amx_ban nick 0 süre yazdırıcak. Yani kullanan adminin üstünden banlıyacak.
Pluginin ayriyetten log tutmasına gerek kalmayacak. Admin Kayıtları amx_ban nick 0 süre diye gözükecek zaten.
Sizin eklentinizi yapmaya fırsat bulamadım, şimdi yapabildim. Eklenti içerisinde Satır 7'den menü özelliklerini ayarlayabilirsiniz, kısaca şöyle özetliyeyim; 1. yere Menü isminizi yazıcaksınız (Ban, Kick Menu) gibi, 2. yere bu menüde kullanılacak kodları yazacaksınız (Ban menude amx_ban, Kick menude amx_kick gibi), 3. yere eğer menüde oyuncuyu banlarken bir sebep girilmesini istiyorsanız 1 istemiyorsanız 0 yazın, bunu yapmamın amacı örnek veriyorum amx_ban komutunu kullanırken sebep giriyoruz ama amx_kick komutunu kullanırken sebep belirtmiyoruz. Son olarak 4. yere aynı 3. yerdeki mantık gibi Süre girilecekse 1 girilmeyecekse 0 yazın, bunuda yapmamın amacı oyuncuyu banlarken süre belirtiyoruz ama kicklerken süre belirtmiyoruz. Mantığı anlamadıysan veya eklenti istediğin gibi değilse geri dönüş yapabilirsin.

Kod: Tümünü seç

#pragma semicolon 1

#include <amxmodx>

#define ADMIN_SPECIALMENU    ADMIN_BAN

new const g_szMenus[][][] =
{
	// Menudeki Başlık,   Konsola işlenecek kod,   Sebep belirtilecek mi ?  , Süre Belirlenecek mi ?
	{"Ban Menu", "amx_ban", 1, 1},
	{"Kick Menu", "amx_kick", 0, 0},
	{"Slap Menu", "amx_slap", 0, 0}
};

enum _:intEnum
{
	iPickPlayer,
	iMenuTime,
	iMenuReasonType,
	iMenuTimeType
};
new g_int[intEnum][MAX_PLAYERS+1];

new g_szMenuTitle[MAX_PLAYERS+1][30],
	g_szMenuCode[MAX_PLAYERS+1][20],
	g_szMenuReason[MAX_PLAYERS+1][MAX_FMT_LENGTH];

new bool:g_blPickKey[MAX_PLAYERS+1];

public plugin_init()
{
	register_plugin("Admin ShortCut Menu", "0.1", "` BesTCore;");

	register_clcmd("say /adminmenu", "clcmd_adminmenu");

	register_clcmd("Belirle", "clcmd_determine");
}
public clcmd_adminmenu(const id)
{
	new bestm = menu_create("\rAdmin Menu", "clcmd_adminmenu_");

	for(new i = 0; i < sizeof(g_szMenus); i++)
	{
		menu_additem(bestm, fmt("%s", g_szMenus[i][0]), fmt("%i", i));
	}
	menu_display(id, bestm);
}
public clcmd_adminmenu_(const id, const menu, const item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], key;
	menu_item_getinfo(menu, item, _, data, charsmax(data));
	key = str_to_num(data);
	
	copy(g_szMenuTitle[id], charsmax(g_szMenuTitle[]), g_szMenus[key][0]);
	copy(g_szMenuCode[id], charsmax(g_szMenuCode[]), g_szMenus[key][1][0]);
	g_int[iMenuReasonType][id] = g_szMenus[key][2][0];
	g_int[iMenuTimeType][id] = g_szMenus[key][3][0];
	ShowMenu(id);

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public ShowMenu(const id)
{
	new bestm = menu_create(fmt("\r%s", g_szMenuTitle[id]), "ShowMenu_");

	menu_additem(bestm, fmt("Oyuncu:\r %s", fmt(g_int[iPickPlayer][id] ? "%n":"Tikla Belirle", g_int[iPickPlayer][id])), "1");
	
	if(g_int[iMenuTimeType][id] == 1)
	{
		menu_additem(bestm, fmt("Sure:\r %s^n", fmt(g_int[iMenuTime][id] > 0 ? "%i":"Tikla Belirle", g_int[iMenuTime][id])), "2");
	}
	if(g_int[iMenuReasonType][id] == 1)
	{
		menu_additem(bestm, fmt("Sebep:\r %s^n", fmt(g_szMenuReason[id][0] == EOS ? "Tikla Yaz":"%s", g_szMenuReason[id])), "3");
	}
	menu_additem(bestm, "Uygula", "4");

	menu_display(id, bestm);
}
public ShowMenu_(const id, const menu, const item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], key;
	menu_item_getinfo(menu, item, _, data, charsmax(data));
	key = str_to_num(data);
	switch(key)
	{
		case 1:
		{
			ChoosePlayer(id);
		}
		case 2:
		{
			client_cmd(id, "messagemode Belirle");
			g_blPickKey[id] = true;
		}
		case 3:
		{
			client_cmd(id, "messagemode Belirle");
			g_blPickKey[id] = false;
		}
		case 4:
		{
			if(!(g_int[iPickPlayer][id])){
				client_print_color(id, id, "^3Oyuncu secmeden islem yapamazsiniz.");
				return PLUGIN_HANDLED;
			}
			client_cmd(id, "%s %n%s%s", g_szMenuCode[id], g_int[iPickPlayer][id], fmt(g_int[iMenuTime][id] > 0 ? " %i":"", g_int[iMenuTime][id]), fmt(g_szMenuReason[id][0] == EOS ? "":" %s", g_szMenuReason[id]));
			sifirla(id);
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public clcmd_determine(const id)
{
	new szArg[32];
	read_args(szArg, charsmax(szArg));
	remove_quotes(szArg);

	switch(g_blPickKey[id])
	{
		case true:
		{
			new iTime = str_to_num(szArg);
			if(iTime > 0)
			{
				g_int[iMenuTime][id] = iTime;
			}
		}
		case false:
		{
			g_szMenuReason[id] = szArg;
		}
	}
	ShowMenu(id);
	return PLUGIN_HANDLED;
}
public ChoosePlayer(const id)
{
	new bestm = menu_create("\rOyuncu Sec", "ChoosePlayer_");

	for(new i = 1; i <= MaxClients; i++)
	{
		if(is_user_connected(i) && !(get_user_flags(id) & ADMIN_IMMUNITY))
		{
			menu_additem(bestm, fmt("%n", i), fmt("%i", i));
		}
	}
	menu_display(id, bestm);
}
public ChoosePlayer_(const id, const menu, const item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], key;
	menu_item_getinfo(menu, item, _, data, charsmax(data));
	key = str_to_num(data);
	
	g_int[iPickPlayer][id] = key;
	ShowMenu(id);

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public client_disconnected(id)
{
	sifirla(id);
}
public sifirla(const id)
{
	g_int[iPickPlayer][id] = 0;
	g_int[iMenuTime][id] = 0;
	g_int[iMenuReasonType][id] = 0;
	g_int[iMenuTimeType][id] = 0;

	g_blPickKey[id] = false;

	g_szMenuTitle[id][0] = EOS;
	g_szMenuCode[id][0] = EOS;
	g_szMenuReason[id][0] = EOS;
}

Özel Admin Menü

Gönderilme zamanı: Pzr May 16, 2021 8:38 pm
gönderen FearLess
bestcore yazdı: Pzr May 16, 2021 3:23 pm
FearLess yazdı: Cum May 14, 2021 9:29 pm Hocam yakın söylediniz ama hatalar var mesela adam banlıyor ya adamın konsolundan amx_ban nick 0 süre yazdırıcak. Yani kullanan adminin üstünden banlıyacak.
Pluginin ayriyetten log tutmasına gerek kalmayacak. Admin Kayıtları amx_ban nick 0 süre diye gözükecek zaten.
Sizin eklentinizi yapmaya fırsat bulamadım, şimdi yapabildim. Eklenti içerisinde Satır 7'den menü özelliklerini ayarlayabilirsiniz, kısaca şöyle özetliyeyim; 1. yere Menü isminizi yazıcaksınız (Ban, Kick Menu) gibi, 2. yere bu menüde kullanılacak kodları yazacaksınız (Ban menude amx_ban, Kick menude amx_kick gibi), 3. yere eğer menüde oyuncuyu banlarken bir sebep girilmesini istiyorsanız 1 istemiyorsanız 0 yazın, bunu yapmamın amacı örnek veriyorum amx_ban komutunu kullanırken sebep giriyoruz ama amx_kick komutunu kullanırken sebep belirtmiyoruz. Son olarak 4. yere aynı 3. yerdeki mantık gibi Süre girilecekse 1 girilmeyecekse 0 yazın, bunuda yapmamın amacı oyuncuyu banlarken süre belirtiyoruz ama kicklerken süre belirtmiyoruz. Mantığı anlamadıysan veya eklenti istediğin gibi değilse geri dönüş yapabilirsin.

Kod: Tümünü seç

#pragma semicolon 1

#include <amxmodx>

#define ADMIN_SPECIALMENU    ADMIN_BAN

new const g_szMenus[][][] =
{
	// Menudeki Başlık,   Konsola işlenecek kod,   Sebep belirtilecek mi ?  , Süre Belirlenecek mi ?
	{"Ban Menu", "amx_ban", 1, 1},
	{"Kick Menu", "amx_kick", 0, 0},
	{"Slap Menu", "amx_slap", 0, 0}
};

enum _:intEnum
{
	iPickPlayer,
	iMenuTime,
	iMenuReasonType,
	iMenuTimeType
};
new g_int[intEnum][MAX_PLAYERS+1];

new g_szMenuTitle[MAX_PLAYERS+1][30],
	g_szMenuCode[MAX_PLAYERS+1][20],
	g_szMenuReason[MAX_PLAYERS+1][MAX_FMT_LENGTH];

new bool:g_blPickKey[MAX_PLAYERS+1];

public plugin_init()
{
	register_plugin("Admin ShortCut Menu", "0.1", "` BesTCore;");

	register_clcmd("say /adminmenu", "clcmd_adminmenu");

	register_clcmd("Belirle", "clcmd_determine");
}
public clcmd_adminmenu(const id)
{
	new bestm = menu_create("\rAdmin Menu", "clcmd_adminmenu_");

	for(new i = 0; i < sizeof(g_szMenus); i++)
	{
		menu_additem(bestm, fmt("%s", g_szMenus[i][0]), fmt("%i", i));
	}
	menu_display(id, bestm);
}
public clcmd_adminmenu_(const id, const menu, const item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], key;
	menu_item_getinfo(menu, item, _, data, charsmax(data));
	key = str_to_num(data);
	
	copy(g_szMenuTitle[id], charsmax(g_szMenuTitle[]), g_szMenus[key][0]);
	copy(g_szMenuCode[id], charsmax(g_szMenuCode[]), g_szMenus[key][1][0]);
	g_int[iMenuReasonType][id] = g_szMenus[key][2][0];
	g_int[iMenuTimeType][id] = g_szMenus[key][3][0];
	ShowMenu(id);

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public ShowMenu(const id)
{
	new bestm = menu_create(fmt("\r%s", g_szMenuTitle[id]), "ShowMenu_");

	menu_additem(bestm, fmt("Oyuncu:\r %s", fmt(g_int[iPickPlayer][id] ? "%n":"Tikla Belirle", g_int[iPickPlayer][id])), "1");
	
	if(g_int[iMenuTimeType][id] == 1)
	{
		menu_additem(bestm, fmt("Sure:\r %s^n", fmt(g_int[iMenuTime][id] > 0 ? "%i":"Tikla Belirle", g_int[iMenuTime][id])), "2");
	}
	if(g_int[iMenuReasonType][id] == 1)
	{
		menu_additem(bestm, fmt("Sebep:\r %s^n", fmt(g_szMenuReason[id][0] == EOS ? "Tikla Yaz":"%s", g_szMenuReason[id])), "3");
	}
	menu_additem(bestm, "Uygula", "4");

	menu_display(id, bestm);
}
public ShowMenu_(const id, const menu, const item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], key;
	menu_item_getinfo(menu, item, _, data, charsmax(data));
	key = str_to_num(data);
	switch(key)
	{
		case 1:
		{
			ChoosePlayer(id);
		}
		case 2:
		{
			client_cmd(id, "messagemode Belirle");
			g_blPickKey[id] = true;
		}
		case 3:
		{
			client_cmd(id, "messagemode Belirle");
			g_blPickKey[id] = false;
		}
		case 4:
		{
			if(!(g_int[iPickPlayer][id])){
				client_print_color(id, id, "^3Oyuncu secmeden islem yapamazsiniz.");
				return PLUGIN_HANDLED;
			}
			client_cmd(id, "%s %n%s%s", g_szMenuCode[id], g_int[iPickPlayer][id], fmt(g_int[iMenuTime][id] > 0 ? " %i":"", g_int[iMenuTime][id]), fmt(g_szMenuReason[id][0] == EOS ? "":" %s", g_szMenuReason[id]));
			sifirla(id);
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public clcmd_determine(const id)
{
	new szArg[32];
	read_args(szArg, charsmax(szArg));
	remove_quotes(szArg);

	switch(g_blPickKey[id])
	{
		case true:
		{
			new iTime = str_to_num(szArg);
			if(iTime > 0)
			{
				g_int[iMenuTime][id] = iTime;
			}
		}
		case false:
		{
			g_szMenuReason[id] = szArg;
		}
	}
	ShowMenu(id);
	return PLUGIN_HANDLED;
}
public ChoosePlayer(const id)
{
	new bestm = menu_create("\rOyuncu Sec", "ChoosePlayer_");

	for(new i = 1; i <= MaxClients; i++)
	{
		if(is_user_connected(i) && !(get_user_flags(id) & ADMIN_IMMUNITY))
		{
			menu_additem(bestm, fmt("%n", i), fmt("%i", i));
		}
	}
	menu_display(id, bestm);
}
public ChoosePlayer_(const id, const menu, const item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], key;
	menu_item_getinfo(menu, item, _, data, charsmax(data));
	key = str_to_num(data);
	
	g_int[iPickPlayer][id] = key;
	ShowMenu(id);

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public client_disconnected(id)
{
	sifirla(id);
}
public sifirla(const id)
{
	g_int[iPickPlayer][id] = 0;
	g_int[iMenuTime][id] = 0;
	g_int[iMenuReasonType][id] = 0;
	g_int[iMenuTimeType][id] = 0;

	g_blPickKey[id] = false;

	g_szMenuTitle[id][0] = EOS;
	g_szMenuCode[id][0] = EOS;
	g_szMenuReason[id][0] = EOS;
}

Kod: Tümünü seç

	{"Ban Menu", "amx_ban", 1, 1},
	{"Kick Menu", "amx_kick", 0, 0},
	{"Slap Menu", "amx_slap", 0, 0}
	
Biz burayı istediğimiz gibi değişebiliriz dimi adı mesela amx_ban değil de amx_rbban gibi

Özel Admin Menü

Gönderilme zamanı: Pzr May 16, 2021 9:05 pm
gönderen bestcore
FearLess yazdı: Pzr May 16, 2021 8:38 pm

Kod: Tümünü seç

	{"Ban Menu", "amx_ban", 1, 1},
	{"Kick Menu", "amx_kick", 0, 0},
	{"Slap Menu", "amx_slap", 0, 0}
	
Biz burayı istediğimiz gibi değişebiliriz dimi adı mesela amx_ban değil de amx_rbban gibi
Oraya ne yazarsanız oyuncunun konsolunda oyuncuya o işlem uygulanır, "amx_rbban" yazarsanız "amx_rbban isim süre"