Редактиране на Nick Protection.

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Заключена
Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 359
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 101 пъти
Получена благодарност: 10 пъти

Редактиране на Nick Protection.

Мнение от iv69 » 14 май 2019, 17:32

Ползвам този плъгин за "резервация" на никнейм на играчи в сървъра:

Код: Избери всички

#include <amxmodx>
#include <cromchat>
#include <nvault>

#define MSG_DELAY 15.0
#define MSG_TASK 300533
#define PLUGIN_VERSION "1.0"

new g_iVault

public plugin_init()
{
	register_plugin("Nick Protection", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXNickProtection", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	register_clcmd("say /nick", "Cmd_Nick")
	register_clcmd("say_team /nick", "Cmd_Nick")
	g_iVault = nvault_open("NickProtection")
	CC_SetPrefix("&x04[Nick Protection]")
}

public plugin_end()
	nvault_close(g_iVault)

public client_authorized(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
		
	if(!is_valid_steam(szAuth))
		return
		
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
	{
		if(!equal(szAuth, szData))
			server_cmd("kick #%i ^"Tozi nick e zashtiten sus SteamID!^"", get_user_userid(id))
	}
	else set_task(MSG_DELAY, "Inform_User", id + MSG_TASK)
}

public Inform_User(id)
{
	id -= MSG_TASK
	
	if(is_user_connected(id))
		CC_SendMessage(id, "Napishi &x03/nick &x01za da si zashtitish nicka po SteamID!")
}

public Cmd_Nick(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
	
	if(!is_valid_steam(szAuth))
	{
		CC_SendMessage(id, "Trqbva da imash SteamID za da mojesh da polzvash sistemata!")
		return PLUGIN_HANDLED
	}
	
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
		CC_SendMessage(id, "Tozi nick veche e zashtiten sus SteamID &x04%s", szData)
	else if(nvault_get(g_iVault, szAuth, szData, charsmax(szData)))
		CC_SendMessage(id, "Veche si zashtitil edin nick sus SteamID-to si: &x03%s", szData)
	else
	{
		nvault_set(g_iVault, szAuth, szName)
		nvault_set(g_iVault, szName, szAuth)
		CC_LogMessage(id, _, "Nickut &x03%s &x01e uspeshno zashtiten sus SteamID &x04%s", szName, szAuth)
		remove_task(id + MSG_TASK)
	}

	return PLUGIN_HANDLED
}

get_user_name_lower(const id, szName[], const iLen)
{
	get_user_name(id, szName, iLen)
	strtolower(szName)
}

bool:is_valid_steam(const szAuth[])
{
	if(!equali(szAuth, "STEAM_", 6) || equal(szAuth, "STEAM_ID_LAN") || equal(szAuth, "STEAM_ID_PENDING"))
		return false
	
	return true
}
Плъгина предоставя много удобен и лесен начин за резервиране на никнейм, но имам едно питане: Ще може ли към резервирания си ник, играча да получи и "флага -b" за резервиран слот в сървъра?
Благодаря !?

Потребителски аватар

blazz3rzbg NSFW
Потребител
Потребител
Мнения: 34
Регистриран: 22 фев 2019, 14:38
Местоположение: Стара Загора
Се отблагодари: 7 пъти
Получена благодарност: 11 пъти
Години: 18

Редактиране на Nick Protection.

Мнение от blazz3rzbg NSFW » 14 май 2019, 18:36

Код: Избери всички

#include <amxmodx>
#include <cromchat>
#include <nvault>

#define MSG_DELAY 15.0
#define MSG_TASK 300533
#define PLUGIN_VERSION "1.0"

new g_iVault

public plugin_init()
{
	register_plugin("Nick Protection", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXNickProtection", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	register_clcmd("say /nick", "Cmd_Nick")
	register_clcmd("say_team /nick", "Cmd_Nick")
	g_iVault = nvault_open("NickProtection")
	CC_SetPrefix("&x04[Nick Protection]")
}

public plugin_end()
	nvault_close(g_iVault)

public client_authorized(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
		
	if(!is_valid_steam(szAuth))
		return
		
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
	{
		if(!equal(szAuth, szData))
			server_cmd("kick #%i ^"Tozi nick e zashtiten sus SteamID!^"", get_user_userid(id))
			
		new flags = read_flags("b");
		set_user_flags(id, flags);
	}
	else set_task(MSG_DELAY, "Inform_User", id + MSG_TASK)
}

public Inform_User(id)
{
	id -= MSG_TASK
	
	if(is_user_connected(id))
		CC_SendMessage(id, "Napishi &x03/nick &x01za da si zashtitish nicka po SteamID!")
}

public Cmd_Nick(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
	
	if(!is_valid_steam(szAuth))
	{
		CC_SendMessage(id, "Trqbva da imash SteamID za da mojesh da polzvash sistemata!")
		return PLUGIN_HANDLED
	}
	
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
		CC_SendMessage(id, "Tozi nick veche e zashtiten sus SteamID &x04%s", szData)
	else if(nvault_get(g_iVault, szAuth, szData, charsmax(szData)))
		CC_SendMessage(id, "Veche si zashtitil edin nick sus SteamID-to si: &x03%s", szData)
	else
	{
		nvault_set(g_iVault, szAuth, szName)
		nvault_set(g_iVault, szName, szAuth)
		CC_LogMessage(id, _, "Nickut &x03%s &x01e uspeshno zashtiten sus SteamID &x04%s", szName, szAuth)
		remove_task(id + MSG_TASK)
	}
	
	new flags = read_flags("b");
	set_user_flags(id, flags);

	return PLUGIN_HANDLED
}

get_user_name_lower(const id, szName[], const iLen)
{
	get_user_name(id, szName, iLen)
	strtolower(szName)
}

bool:is_valid_steam(const szAuth[])
{
	if(!equali(szAuth, "STEAM_", 6) || equal(szAuth, "STEAM_ID_LAN") || equal(szAuth, "STEAM_ID_PENDING"))
		return false
	
	return true
}
Тествай и пиши :P

Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 359
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 101 пъти
Получена благодарност: 10 пъти

Редактиране на Nick Protection.

Мнение от iv69 » 14 май 2019, 21:10

blazz3rzbg написа:
14 май 2019, 18:36

Код: Избери всички

#include <amxmodx>
#include <cromchat>
#include <nvault>

#define MSG_DELAY 15.0
#define MSG_TASK 300533
#define PLUGIN_VERSION "1.0"

new g_iVault

public plugin_init()
{
	register_plugin("Nick Protection", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXNickProtection", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	register_clcmd("say /nick", "Cmd_Nick")
	register_clcmd("say_team /nick", "Cmd_Nick")
	g_iVault = nvault_open("NickProtection")
	CC_SetPrefix("&x04[Nick Protection]")
}

public plugin_end()
	nvault_close(g_iVault)

public client_authorized(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
		
	if(!is_valid_steam(szAuth))
		return
		
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
	{
		if(!equal(szAuth, szData))
			server_cmd("kick #%i ^"Tozi nick e zashtiten sus SteamID!^"", get_user_userid(id))
			
		new flags = read_flags("b");
		set_user_flags(id, flags);
	}
	else set_task(MSG_DELAY, "Inform_User", id + MSG_TASK)
}

public Inform_User(id)
{
	id -= MSG_TASK
	
	if(is_user_connected(id))
		CC_SendMessage(id, "Napishi &x03/nick &x01za da si zashtitish nicka po SteamID!")
}

public Cmd_Nick(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
	
	if(!is_valid_steam(szAuth))
	{
		CC_SendMessage(id, "Trqbva da imash SteamID za da mojesh da polzvash sistemata!")
		return PLUGIN_HANDLED
	}
	
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
		CC_SendMessage(id, "Tozi nick veche e zashtiten sus SteamID &x04%s", szData)
	else if(nvault_get(g_iVault, szAuth, szData, charsmax(szData)))
		CC_SendMessage(id, "Veche si zashtitil edin nick sus SteamID-to si: &x03%s", szData)
	else
	{
		nvault_set(g_iVault, szAuth, szName)
		nvault_set(g_iVault, szName, szAuth)
		CC_LogMessage(id, _, "Nickut &x03%s &x01e uspeshno zashtiten sus SteamID &x04%s", szName, szAuth)
		remove_task(id + MSG_TASK)
	}
	
	new flags = read_flags("b");
	set_user_flags(id, flags);

	return PLUGIN_HANDLED
}

get_user_name_lower(const id, szName[], const iLen)
{
	get_user_name(id, szName, iLen)
	strtolower(szName)
}

bool:is_valid_steam(const szAuth[])
{
	if(!equali(szAuth, "STEAM_", 6) || equal(szAuth, "STEAM_ID_LAN") || equal(szAuth, "STEAM_ID_PENDING"))
		return false
	
	return true
}
Тествай и пиши :P
Ще го проверя и ще кажа как е. Само да попитам , къде ще се запазват флаговете ако не е тайна? :drunk:

РАБОТИИ :) Благодаря !!!
Последна промяна от iv69 на 14 май 2019, 21:33, променено общо 2 пъти.

Потребителски аватар

blazz3rzbg NSFW
Потребител
Потребител
Мнения: 34
Регистриран: 22 фев 2019, 14:38
Местоположение: Стара Загора
Се отблагодари: 7 пъти
Получена благодарност: 11 пъти
Години: 18

Редактиране на Nick Protection.

Мнение от blazz3rzbg NSFW » 14 май 2019, 21:23

мился че при всяко влизане на играча в сървъра от nvault валутата ще се проверява дали има "protection" и ако има ще му добавя флаг b временно същата работа става и в момента на изпълнение на функцията /nick

Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 359
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 101 пъти
Получена благодарност: 10 пъти

Редактиране на Nick Protection.

Мнение от iv69 » 14 май 2019, 21:33

blazz3rzbg написа:
14 май 2019, 21:23
мился че при всяко влизане на играча в сървъра от nvault валутата ще се проверява дали има "protection" и ако има ще му добавя флаг b временно същата работа става и в момента на изпълнение на функцията /nick
Ми добавя флаговете,само не знам дали с влизането на играча в сървъра ги чете или след момента на влизането... , просто не ми е на 100% пълен сървъра за да го тествам на 100% . Целта е да може играча който си е запазил ник - и иска да влезе в пълен сървър със свободен слот(само запазения), да се смята , че вече е с флага, а не след като влезе да се брои ,че го има... не знам това как е , и дали ще важи , не съм го пробвал, иначе добавя флага, но не знам кое по-напред чете, нещата от nvault валутата ,или от users.ini, за да допусне играча? Има ли и опция чрез плъгин да се добавя текст за флагове за даден Стеам_ИД във файла users.ini ?

Потребителски аватар

blazz3rzbg NSFW
Потребител
Потребител
Мнения: 34
Регистриран: 22 фев 2019, 14:38
Местоположение: Стара Загора
Се отблагодари: 7 пъти
Получена благодарност: 11 пъти
Години: 18

Редактиране на Nick Protection.

Мнение от blazz3rzbg NSFW » 14 май 2019, 21:53

Код: Избери всички

#include <amxmodx>
#include <cromchat>
#include <nvault>

#define MSG_DELAY 15.0
#define MSG_TASK 300533
#define PLUGIN_VERSION "1.0"

new g_iVault
new const g_szUsers[] = "addons/amxmodx/configs/users.ini";

public plugin_init()
{
	register_plugin("Nick Protection", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXNickProtection", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	register_clcmd("say /nick", "Cmd_Nick")
	register_clcmd("say_team /nick", "Cmd_Nick")
	g_iVault = nvault_open("NickProtection")
	CC_SetPrefix("&x04[Nick Protection]")
}

public plugin_end()
	nvault_close(g_iVault)

public client_authorized(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
		
	if(!is_valid_steam(szAuth))
		return
		
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
	{
		if(!equal(szAuth, szData))
			server_cmd("kick #%i ^"Tozi nick e zashtiten sus SteamID!^"", get_user_userid(id))
	}
	else set_task(MSG_DELAY, "Inform_User", id + MSG_TASK)
}

public Inform_User(id)
{
	id -= MSG_TASK
	
	if(is_user_connected(id))
		CC_SendMessage(id, "Napishi &x03/nick &x01za da si zashtitish nicka po SteamID!")
}

public Cmd_Nick(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
	
	if(!is_valid_steam(szAuth))
	{
		CC_SendMessage(id, "Trqbva da imash SteamID za da mojesh da polzvash sistemata!")
		return PLUGIN_HANDLED
	}
	
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
		CC_SendMessage(id, "Tozi nick veche e zashtiten sus SteamID &x04%s", szData)
	else if(nvault_get(g_iVault, szAuth, szData, charsmax(szData)))
		CC_SendMessage(id, "Veche si zashtitil edin nick sus SteamID-to si: &x03%s", szData)
	else
	{
		nvault_set(g_iVault, szAuth, szName)
		nvault_set(g_iVault, szName, szAuth)
		CC_LogMessage(id, _, "Nickut &x03%s &x01e uspeshno zashtiten sus SteamID &x04%s", szName, szAuth)
		remove_task(id + MSG_TASK)
		
		give_user_flag_b(id);
	}

	return PLUGIN_HANDLED
}

get_user_name_lower(const id, szName[], const iLen)
{
	get_user_name(id, szName, iLen)
	strtolower(szName)
}

bool:is_valid_steam(const szAuth[])
{
	if(!equali(szAuth, "STEAM_", 6) || equal(szAuth, "STEAM_ID_LAN") || equal(szAuth, "STEAM_ID_PENDING"))
		return false
	
	return true
}

public give_user_flag_b(id)
{
	new szName[32]
	get_user_name(id, szName, charsmax(szName))
	new szText[192], iLine, iLen, szLineData[2][32]
	while((iLine = read_file(g_szUsers, iLine, szText, charsmax(szText), iLen))) 
	{
		if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;	
		if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;		
		if(equal(szName, szLineData[0])) return;
	}
	formatex(szText, charsmax(szText), "^"%s^" ^"^" ^"b^" ^"e^"", szName);
	write_file(g_szUsers, szText);
}
Този код добавя името на играча и b флаг в users.ini без парола ако името му го няма там
Последна промяна от blazz3rzbg NSFW на 14 май 2019, 22:38, променено общо 1 път.

Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 359
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 101 пъти
Получена благодарност: 10 пъти

Редактиране на Nick Protection.

Мнение от iv69 » 14 май 2019, 22:15

blazz3rzbg написа:
14 май 2019, 21:53

Код: Избери всички

#include <amxmodx>
#include <cromchat>
#include <nvault>

#define MSG_DELAY 15.0
#define MSG_TASK 300533
#define PLUGIN_VERSION "1.0"

new g_iVault
new const g_szUsers[] = "addons/amxmodx/configs/users.ini";

public plugin_init()
{
	register_plugin("Nick Protection", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXNickProtection", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	register_clcmd("say /nick", "Cmd_Nick")
	register_clcmd("say_team /nick", "Cmd_Nick")
	g_iVault = nvault_open("NickProtection")
	CC_SetPrefix("&x04[Nick Protection]")
}

public plugin_end()
	nvault_close(g_iVault)

public client_authorized(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
		
	if(!is_valid_steam(szAuth))
		return
		
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
	{
		if(!equal(szAuth, szData))
			server_cmd("kick #%i ^"Tozi nick e zashtiten sus SteamID!^"", get_user_userid(id))
	}
	else set_task(MSG_DELAY, "Inform_User", id + MSG_TASK)
}

public Inform_User(id)
{
	id -= MSG_TASK
	
	if(is_user_connected(id))
		CC_SendMessage(id, "Napishi &x03/nick &x01za da si zashtitish nicka po SteamID!")
}

public Cmd_Nick(id)
{
	new szAuth[35]
	get_user_authid(id, szAuth, charsmax(szAuth))
	
	if(!is_valid_steam(szAuth))
	{
		CC_SendMessage(id, "Trqbva da imash SteamID za da mojesh da polzvash sistemata!")
		return PLUGIN_HANDLED
	}
	
	new szData[35], szName[32]
	get_user_name_lower(id, szName, charsmax(szName))

	if(nvault_get(g_iVault, szName, szData, charsmax(szData)))
		CC_SendMessage(id, "Tozi nick veche e zashtiten sus SteamID &x04%s", szData)
	else if(nvault_get(g_iVault, szAuth, szData, charsmax(szData)))
		CC_SendMessage(id, "Veche si zashtitil edin nick sus SteamID-to si: &x03%s", szData)
	else
	{
		nvault_set(g_iVault, szAuth, szName)
		nvault_set(g_iVault, szName, szAuth)
		CC_LogMessage(id, _, "Nickut &x03%s &x01e uspeshno zashtiten sus SteamID &x04%s", szName, szAuth)
		remove_task(id + MSG_TASK)
		
		give_user_flag_b(id);
	}

	return PLUGIN_HANDLED
}

get_user_name_lower(const id, szName[], const iLen)
{
	get_user_name(id, szName, iLen)
	strtolower(szName)
}

bool:is_valid_steam(const szAuth[])
{
	if(!equali(szAuth, "STEAM_", 6) || equal(szAuth, "STEAM_ID_LAN") || equal(szAuth, "STEAM_ID_PENDING"))
		return false
	
	return true
}

public give_user_flag_b(id)
{
	new szName[32]
	get_user_name(id, szName, charsmax(szName))
	new szText[192], iLine, iLen, szLineData[2][32]
	while((iLine = read_file(g_szUsers, iLine, szText, charsmax(szText), iLen))) 
	{
		if(!iLen || szText[0] == ';' || szText[0] == '/' && szText[1] == '/') continue;	
		if(parse(szText, szLineData[0], charsmax(szLineData[]), szLineData[1], charsmax(szLineData[])) < 2) continue;		
		if(equal(iName, szLineData[0])) return;
	}
	formatex(szText, charsmax(szText), "^"%s^" ^"^" ^"b^" ^"e^"", szName);
	write_file(g_szUsers, szText);
}
Този код добавя името на играча и b флаг в users.ini без парола ако името му го няма там
Това ще ползвам , и ще пиша по-нататък за отзиви.

Дава грешка при компилация:

nickprotect.sma(112) : error 017: undefined symbol "iName"

1 Error.
Could not locate output file nickprotect.amx (compile failed).

Потребителски аватар

blazz3rzbg NSFW
Потребител
Потребител
Мнения: 34
Регистриран: 22 фев 2019, 14:38
Местоположение: Стара Загора
Се отблагодари: 7 пъти
Получена благодарност: 11 пъти
Години: 18

Редактиране на Nick Protection.

Мнение от blazz3rzbg NSFW » 14 май 2019, 22:38

редактирах си последното мнение кода е поправен

Добавено преди 49 минути 27 секунди:
сега се сетих че когато се добави флаг "b" в users.ini и играча напусне сървъра и реши след 5,6 минути пак да влезе обаче сървъра е пълен и map-а не се е сменил още няма да може да се възползва от слот-а...

решението е да добавиш под

Код: Избери всички

give_user_flag_b(id);
това

Код: Избери всички

server_cmd("amx_reloadadmins");
така след като му се добави флага директно ще презареди users.ini и резервираният слот (flag b) ще влезе в сила директно. без нужда да се сменя map-a.

Потребителски аватар

Автор на темата
iv69
Потребител
Потребител
Мнения: 359
Регистриран: 17 мар 2018, 15:34
Се отблагодари: 101 пъти
Получена благодарност: 10 пъти

Редактиране на Nick Protection.

Мнение от iv69 » 15 май 2019, 11:04

blazz3rzbg написа:
14 май 2019, 23:28
редактирах си последното мнение кода е поправен

Добавено преди 49 минути 27 секунди:
сега се сетих че когато се добави флаг "b" в users.ini и играча напусне сървъра и реши след 5,6 минути пак да влезе обаче сървъра е пълен и map-а не се е сменил още няма да може да се възползва от слот-а...

решението е да добавиш под

Код: Избери всички

give_user_flag_b(id);
това

Код: Избери всички

server_cmd("amx_reloadadmins");
така след като му се добави флага директно ще презареди users.ini и резервираният слот (flag b) ще влезе в сила директно. без нужда да се сменя map-a.
Благодаря ти blazz3rzbg :clap: , плъгина наистина работи !!! Компилира се пробвах в сървъра сам , добави ми флага във users.ini... Супер е направено! :beer: :lock:

Заключена

Върни се в “Заявки за плъгини”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост