Преработка на Admin Complain

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Преработка на Admin Complain

Мнение от Marinovv » 23 Фев 2018, 23:22

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <colorchat>

#define PLUGIN	"Admin Complaint"
#define AUTHOR	"thony"
#define VERSION	"1.0"

new szComplaintsDir[] = "addons/amxmodx/logs/complaints/";
new g_PlayerVotes[33][33]
new iComplaining[33]
new nVault
new iMaxPlayers

new cvar_MaxComplaints

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /@U", "ShowComplainMenu")
	register_clcmd("Reason why you're complaining", "ComplaintReason")
	register_clcmd("say /@uview", "ViewComplaintsMenu", ADMIN_RCON)
	
	cvar_MaxComplaints = register_cvar("ac_maxcomplaints", "3")
	
	nVault = nvault_open("AdminComplain")
	iMaxPlayers = get_maxplayers();
}
public ComplaintReason(id) {
	if(iComplaining[id] == 0)
		return PLUGIN_HANDLED;
	
	if(is_user_admin(iComplaining[id])) {
		new szNum[3], authid[32]
		get_user_authid(iComplaining[id], authid, charsmax(authid))
		if(nvault_get(nVault, authid, szNum, charsmax(szNum))) {
			new iNum = str_to_num(szNum)
			num_to_str((iNum+1), szNum, charsmax(szNum))
			nvault_set(nVault, authid, szNum)
		}
		else
			nvault_set(nVault, authid, "1")
		
		g_PlayerVotes[id][iComplaining[id]]++;
		
		new szReason[246]
		read_argv(6, szReason, charsmax(szReason))
		LogComplain(id, iComplaining[id], szReason);
		iComplaining[id] = 0;
		
		ColorChat(id, GREY, "^4[Admin Complaint] ^3Vasheto oplakvane beshe izprateno do nas.")
	}
	return PLUGIN_HANDLED;
}
public client_disconnect(id) {
	for(new i; i < iMaxPlayers; i++) {
		g_PlayerVotes[id][i] = 0;
	}
	iComplaining[id] = 0;
}
public ShowComplainMenu(id) {
	new admins[33], adminsnum
	for(new i; i < iMaxPlayers; i++) {
		if(is_user_admin(i)) {
			admins[adminsnum] = i;
			adminsnum++;
		}
	}
	if(adminsnum < 1) {
		ColorChat(id, GREY, "^4[Admin Complaint] ^3Sazhalyavame, no tazi optsiya v momenta ne e aktivna.")
		return PLUGIN_HANDLED;
	}
	new menu = menu_create("Admin Complain", "ComplainMenuHandler")
	
	for(new i; i < adminsnum; i++) {
		new szName[42], szID[2], szFinal[42], iComplaintsNum = getComplaintsNum(admins[i]);
		get_user_name(admins[i], szName, charsmax(szName))
		num_to_str(admins[i], szID, charsmax(szID))
		
		if(g_PlayerVotes[id][admins[i]] >= get_pcvar_num(cvar_MaxComplaints))
			formatex(szFinal, charsmax(szFinal), "\d%s \r(%i)", szName, iComplaintsNum)
		else
			formatex(szFinal, charsmax(szFinal), "%s \r(%i)", szName, iComplaintsNum)
		
		menu_additem(menu, szFinal, szID)
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED;
}
public ComplainMenuHandler(id, menu, item)
{
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	
	new adminid = str_to_num(data);
	
	if(g_PlayerVotes[id][adminid] >= get_pcvar_num(cvar_MaxComplaints)) {
		ColorChat(id, GREY, "^4[Admin Complaint] ^3Maksimumat za oplakvane ot administrator e dostignat, veche ne mozhe da se oplachete ot  edin i sasht administrator.")
		ShowComplainMenu(id)
	}
	
	else if(is_user_admin(adminid)) {
		iComplaining[id] = adminid;
		client_cmd(id, "messagemode ^"Posochete prichina:^"")
	}
	
	return PLUGIN_HANDLED;
}
public ViewComplaintsMenu(id, level, cid) {
	if(!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED;
	
	new fileName[32], dir;
	dir = open_dir(szComplaintsDir, fileName, charsmax(fileName))
	next_file(dir, fileName, charsmax(fileName))
	
	if(!next_file(dir, fileName, charsmax(fileName))) {
		ColorChat(id, GREY, "^4[Admin Complaint] ^3Nyama oplakvaniya.")
		close_dir(dir)
		return PLUGIN_HANDLED;
	}
	new menu = menu_create("Vizhte oplakvaniyata po data", "ViewComplaintsMenuHandler")
	
	do {
		menu_additem(menu, fileName, fileName)
	}
	while(next_file(dir, fileName, charsmax(fileName)))
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	close_dir(dir)
	return PLUGIN_HANDLED;
}
public ViewComplaintsMenuHandler(id, menu, item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data[6], szName[64], fullDir[100];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	
	formatex(fullDir, charsmax(fullDir), "%s%s", szComplaintsDir, szName)
	
	show_motd(id, fullDir, szName)
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
getComplaintsNum(id) {
	new szNum[3], authid[32]
	get_user_authid(id, authid, charsmax(authid))
	if(nvault_get(nVault, authid, szNum, charsmax(szNum)))
		return str_to_num(szNum);
	
	return 0;
}
LogComplain(id, adminid, const reason[]) {
	new szDate[40], szFile[50]
	get_time("%d-%m-%Y", szDate, charsmax(szDate))
	formatex(szFile, charsmax(szFile), "%s%s.txt", szComplaintsDir, szDate)
	if(!file_exists(szFile)) {
		write_file(szFile, "<style> body {background: black; color: white; font-size: 10px; font-family: arial;} </style>")
	}
	new szAuthid[32], szAuthid2[32], szTime[32], szName[42], szName2[42], szLog[200]
	get_time( "%H:%M:%S", szTime, charsmax(szTime))
	get_user_authid(id, szAuthid, charsmax(szAuthid))
	get_user_authid(adminid, szAuthid2, charsmax(szAuthid2))
	get_user_name(id, szName, charsmax(szName))
	get_user_name(adminid, szName2, charsmax(szName2))
	formatex(szLog, charsmax(szLog), "<b>Complainant:</b> %s (%s)<br/><b>Admin:</b> %s (%s).<br/><b>Reason:</b> %s<br/> <b>Time:</b>  %s<br/><hr/>", szName, szAuthid, szName2, szAuthid2, reason, szTime)
	write_file(szFile, szLog)
}
Тук изцяло аз съм си го превел. Въпросът е, че не бачка! Когато се напише в чата /@U излиза меню с администраторите. Когато посоча администратор излиза поле, за изява на клиента, който се оплаква. След като напиша нещо тест : kikna me bez pri4ina и натисне enter нищо не става оттам нататък.

Забелязвам, че се използва Nvalt , което в някой плъгини мои, които имам играе много лоша шега.

Може ли да го преработите да работи. Не виждам нищо в кода, което да не е нередно.
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
NiKo.
Извън линия
Потребител
Потребител
Мнения: 41
Регистриран на: 13 Окт 2016, 20:57
Местоположение: Варна
Получена благодарност: 1 път

Преработка на Admin Complain

Мнение от NiKo. » 24 Фев 2018, 01:48

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <colorchat>

#define PLUGIN	"Admin Complaint"
#define AUTHOR	"thony"
#define VERSION	"1.0"

new szComplaintsDir[] = "addons/amxmodx/logs/complaints/";
new g_PlayerVotes[33][33]
new iComplaining[33]
new nVault
new iMaxPlayers

new cvar_MaxComplaints

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /@U", "ShowComplainMenu")
	register_clcmd("Prichina", "ComplaintReason")
	register_clcmd("say /@uview", "ViewComplaintsMenu", ADMIN_RCON)
	
	cvar_MaxComplaints = register_cvar("ac_maxcomplaints", "3")
	
	nVault = nvault_open("AdminComplain")
	iMaxPlayers = get_maxplayers();
}
public ComplaintReason(id) {
	if(iComplaining[id] == 0)
		return PLUGIN_HANDLED;
	
	if(is_user_admin(iComplaining[id])) {
		new szNum[3], authid[32]
		get_user_authid(iComplaining[id], authid, charsmax(authid))
		if(nvault_get(nVault, authid, szNum, charsmax(szNum))) {
			new iNum = str_to_num(szNum)
			num_to_str((iNum+1), szNum, charsmax(szNum))
			nvault_set(nVault, authid, szNum)
		}
		else
			nvault_set(nVault, authid, "1")
		
		g_PlayerVotes[id][iComplaining[id]]++;
		
		new szReason[246]
		read_argv(1, szReason, charsmax(szReason))
		remove_quotes(szReason)
		LogComplain(id, iComplaining[id], szReason);
		iComplaining[id] = 0;
		
		ColorChat(id, GREY, "^4[Admin Complaint] ^3Vasheto oplakvane beshe izprateno do nas.")
	}
	return PLUGIN_HANDLED;
}
public client_disconnected(id) {
	for(new i; i < iMaxPlayers; i++) {
		g_PlayerVotes[id][i] = 0;
	}
	iComplaining[id] = 0;
}
public ShowComplainMenu(id) {
	new admins[33], adminsnum
	for(new i; i < iMaxPlayers; i++) {
		if(is_user_admin(i)) {
			admins[adminsnum] = i;
			adminsnum++;
		}
	}
	if(adminsnum < 1) {
		ColorChat(id, GREY, "^4[Admin Complaint] ^3Sazhalyavame, no tazi optsiya v momenta ne e aktivna.")
		return PLUGIN_HANDLED;
	}
	new menu = menu_create("Admin Complain", "ComplainMenuHandler")
	
	for(new i; i < adminsnum; i++) {
		new szName[42], szID[2], szFinal[42], iComplaintsNum = getComplaintsNum(admins[i]);
		get_user_name(admins[i], szName, charsmax(szName))
		num_to_str(admins[i], szID, charsmax(szID))
		
		if(g_PlayerVotes[id][admins[i]] >= get_pcvar_num(cvar_MaxComplaints))
			formatex(szFinal, charsmax(szFinal), "\d%s \r(%i)", szName, iComplaintsNum)
		else
			formatex(szFinal, charsmax(szFinal), "%s \r(%i)", szName, iComplaintsNum)
		
		menu_additem(menu, szFinal, szID)
	}
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED;
}
public ComplainMenuHandler(id, menu, item)
{
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	
	new adminid = str_to_num(data);
	
	if(g_PlayerVotes[id][adminid] >= get_pcvar_num(cvar_MaxComplaints)) {
		ColorChat(id, GREY, "^4[Admin Complaint] ^3Maksimumat za oplakvane ot administrator e dostignat, veche ne mozhe da se oplachete ot  edin i sasht administrator.")
		ShowComplainMenu(id)
	}
	
	else if(is_user_admin(adminid)) {
		iComplaining[id] = adminid;
		client_cmd(id, "messagemode Prichina")
	}
	
	return PLUGIN_HANDLED;
}
public ViewComplaintsMenu(id, level, cid) {
	if(!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED;
	
	new fileName[32], dir;
	dir = open_dir(szComplaintsDir, fileName, charsmax(fileName))
	next_file(dir, fileName, charsmax(fileName))
	
	if(!next_file(dir, fileName, charsmax(fileName))) {
		ColorChat(id, GREY, "^4[Admin Complaint] ^3Nyama oplakvaniya.")
		close_dir(dir)
		return PLUGIN_HANDLED;
	}
	new menu = menu_create("Vizhte oplakvaniyata po data", "ViewComplaintsMenuHandler")
	
	do {
		menu_additem(menu, fileName, fileName)
	}
	while(next_file(dir, fileName, charsmax(fileName)))
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	close_dir(dir)
	return PLUGIN_HANDLED;
}
public ViewComplaintsMenuHandler(id, menu, item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data[6], szName[64], fullDir[100];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	
	formatex(fullDir, charsmax(fullDir), "%s%s", szComplaintsDir, szName)
	
	show_motd(id, fullDir, szName)
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
getComplaintsNum(id) {
	new szNum[3], authid[32]
	get_user_authid(id, authid, charsmax(authid))
	if(nvault_get(nVault, authid, szNum, charsmax(szNum)))
		return str_to_num(szNum);
	
	return 0;
}
LogComplain(id, adminid, const reason[]) {
	new szDate[40], szFile[50]
	get_time("%d-%m-%Y", szDate, charsmax(szDate))
	formatex(szFile, charsmax(szFile), "%s%s.txt", szComplaintsDir, szDate)
	if(!file_exists(szFile)) {
		write_file(szFile, "<style> body {background: black; color: white; font-size: 10px; font-family: arial;} </style>")
	}
	new szAuthid[32], szAuthid2[32], szTime[32], szName[42], szName2[42], szLog[200]
	get_time( "%H:%M:%S", szTime, charsmax(szTime))
	get_user_authid(id, szAuthid, charsmax(szAuthid))
	get_user_authid(adminid, szAuthid2, charsmax(szAuthid2))
	get_user_name(id, szName, charsmax(szName))
	get_user_name(adminid, szName2, charsmax(szName2))
	formatex(szLog, charsmax(szLog), "<b>Complainant:</b> %s (%s)<br/><b>Admin:</b> %s (%s).<br/><b>Reason:</b> %s<br/> <b>Time:</b>  %s<br/><hr/>", szName, szAuthid, szName2, szAuthid2, reason, szTime)
	write_file(szFile, szLog)
}
Създай папка complaints в addons/amxmodx/logs/ и би трябвало да стане.
Изображение

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Преработка на Admin Complain

Мнение от Marinovv » 24 Фев 2018, 08:51

Благодаря, но този път при написване на /@U изписва - [Admin Complaint] Sazhalyavame, no tazi optsiya v momenta ne e aktivna.
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
NiKo.
Извън линия
Потребител
Потребител
Мнения: 41
Регистриран на: 13 Окт 2016, 20:57
Местоположение: Варна
Получена благодарност: 1 път

Преработка на Admin Complain

Мнение от NiKo. » 24 Фев 2018, 10:47

Това е защото няма онлайн админ който да излезе в менюто ако го тестваш сам, виж флаговете си и опитай пак
Изображение

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Преработка на Admin Complain

Мнение от Marinovv » 26 Фев 2018, 11:17

Този път, както каза работи. Не знам каква е била причината да не работи старото издание, но сега всичко е шест.

Благодаря ти и локвайте. :)
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 10 госта