Заявка за плъгин [Spectator]

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
bobywTf
Извън линия
Потребител
Потребител
Мнения: 37
Регистриран на: 21 Ное 2021, 14:28
Се отблагодари: 18 пъти
Получена благодарност: 3 пъти
Обратна връзка:

Заявка за плъгин [Spectator]

Мнение от bobywTf » 07 Яну 2022, 23:33

Здравейте!
Бих искал да попитам дали някой може да направи плъгн който отваря меню с лист на играчите и след като се избере играч да го мята в Spectator + да излиза Public Message в чата и да може да връща играча обратно в игра + [Текст по желание след като админ го е пуснал да се върне в игра] и ако напусне сървъра да банне дадения играч за 1 седмица.
Нямам притенций с каква команда се отваря менюто !
Да може само АДМИН с флаг [по избор] да използва това меню !
Благодаря предварително ако някой ме отрази ! :beer:

Аватар
mharisrazaa
Извън линия
Потребител
Потребител
Мнения: 31
Регистриран на: 15 Дек 2021, 17:15
Местоположение: Pakistan
Се отблагодари: 2 пъти
Обратна връзка:

Заявка за плъгин [Spectator]

Мнение от mharisrazaa » 08 Яну 2022, 17:38

explain it a bit more pricesly.

there are Spectator Menu in amxmodmenu, and others plugin too.
Just Search on Google > Spectator Plugin and modifiy it.

Аватар
rago12
Извън линия
Потребител
Потребител
Мнения: 63
Регистриран на: 10 Апр 2017, 15:23
Получена благодарност: 34 пъти

Заявка за плъгин [Spectator]

Мнение от rago12 » 08 Яну 2022, 20:05

Ти ми беше писал на лично братле ама те забравих покрай празниците

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

#include <amxmodx>
#include <cstrike>
#include <fun>

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

new bool:UnderInspection[33]
new UserTeam[33]

new plAuthId[33]

public plugin_init()
	register_clcmd("say /inspect", "InspectMenu")

public InspectMenu(id)
{
	if(!is_user_connected(id) && !(get_user_flags(id) & ADMIN_BAN)) return
	
	new menu = menu_create( "Choose option", "main_menu_handler" )
	
	menu_additem(menu, "Inspect player")
	menu_additem(menu, "Clear players inspection")
	
	menu_display(id,menu)
}

public main_menu_handler(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(menu)
		return
	}
	
	switch(item)
	{
		case 0: InspectPlayers(id)
		case 1: ClearPlayers(id)
	}
}

public ClearPlayers(id)
{
	new players[32],num
	get_players(players,num)
	for(new i; i<num;i++)
	{
		@clear_all(players[i])
	}
	
	new szName[32]
	get_user_name(id, szName, charsmax(szName))
	client_print_color(0, print_team_default,"^3(Inpsector)^1 Admin ^3%s ^1has cleared the inspections", szName)
}

public InspectPlayers(id)
{	
	new plmenu = menu_create( "Choose player", "menu_player_handler" )
	
	new players[32], pnum, tempid
	new szName[32], szUserId[32]
	get_players(players, pnum, "a")
	
	for ( new i; i<pnum; i++ )
	{
		tempid = players[i];
		get_user_name(tempid, szName, charsmax(szName))
		formatex(szUserId, charsmax(szUserId), "%d", get_user_userid(tempid))
		menu_additem(plmenu, szName, szUserId, 0)
	}
	
	menu_display(id, plmenu)
}

public menu_player_handler(id, plmenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(plmenu)
		return
	}
	
	new szData[6], szName[64];
	new _access, item_callback;
	
	menu_item_getinfo( plmenu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
	
	new userid = str_to_num( szData );
	new player = find_player( "k", userid );
	
	if (player && is_user_alive(player))
	{
		UnderInspection[player] = true
		UserTeam[player] = get_user_team(player)
		user_kill(player)
		cs_set_user_team(player, CS_TEAM_SPECTATOR)
		
		new szNamePlayer[32], szNameAdmin[32]
		get_user_name(player, szNamePlayer, charsmax(szNamePlayer))
		get_user_name(id, szNameAdmin, charsmax(szNameAdmin))
		
		new authid[34]
		plAuthId[player] = get_user_authid(player,authid,charsmax(authid))
		
		client_cmd(player, "spk ambience/bigwarning" )
		
		client_print_color(0, print_team_default,"^3(Inspector) ^1Player ^3%s ^1was placed under inspection by ^3%s", szNamePlayer, szNameAdmin)
	}else{
		client_print_color(id, print_team_default,"^3(Inspector) ^1Player not found")
		InspectPlayers(id)
	}
}

public client_disconnect(id)
{
	if(UnderInspection[id] == true)
	{
		server_cmd( "banid 10080 %s", plAuthId[id])
	}
}

@clear_all(id)
{
	if(UnderInspection[id] == true)
	{
		if(is_user_connected(id))
		{
			cs_set_user_team(id, UserTeam[id])
			UnderInspection[id] = false
			client_cmd(id, "stopsound")
		}
	}
}
Набързо съм го написал, тествай го.
Ако имаш някакви добавки или нещо да поправя пиши като коментар и когато мога ще редактирам кода.

Отваря се менюто с /inspect, за флаг съм сложил ADMIN_BAN.

Аватар
bobywTf
Извън линия
Потребител
Потребител
Мнения: 37
Регистриран на: 21 Ное 2021, 14:28
Се отблагодари: 18 пъти
Получена благодарност: 3 пъти
Обратна връзка:

Заявка за плъгин [Spectator]

Мнение от bobywTf » 09 Яну 2022, 00:35

rago12 написа: 08 Яну 2022, 20:05 Ти ми беше писал на лично братле ама те забравих покрай празниците

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

#include <amxmodx>
#include <cstrike>
#include <fun>

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

new bool:UnderInspection[33]
new UserTeam[33]

new plAuthId[33]

public plugin_init()
	register_clcmd("say /inspect", "InspectMenu")

public InspectMenu(id)
{
	if(!is_user_connected(id) && !(get_user_flags(id) & ADMIN_BAN)) return
	
	new menu = menu_create( "Choose option", "main_menu_handler" )
	
	menu_additem(menu, "Inspect player")
	menu_additem(menu, "Clear players inspection")
	
	menu_display(id,menu)
}

public main_menu_handler(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(menu)
		return
	}
	
	switch(item)
	{
		case 0: InspectPlayers(id)
		case 1: ClearPlayers(id)
	}
}

public ClearPlayers(id)
{
	new players[32],num
	get_players(players,num)
	for(new i; i<num;i++)
	{
		@clear_all(players[i])
	}
	
	new szName[32]
	get_user_name(id, szName, charsmax(szName))
	client_print_color(0, print_team_default,"^3(Inpsector)^1 Admin ^3%s ^1has cleared the inspections", szName)
}

public InspectPlayers(id)
{	
	new plmenu = menu_create( "Choose player", "menu_player_handler" )
	
	new players[32], pnum, tempid
	new szName[32], szUserId[32]
	get_players(players, pnum, "a")
	
	for ( new i; i<pnum; i++ )
	{
		tempid = players[i];
		get_user_name(tempid, szName, charsmax(szName))
		formatex(szUserId, charsmax(szUserId), "%d", get_user_userid(tempid))
		menu_additem(plmenu, szName, szUserId, 0)
	}
	
	menu_display(id, plmenu)
}

public menu_player_handler(id, plmenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(plmenu)
		return
	}
	
	new szData[6], szName[64];
	new _access, item_callback;
	
	menu_item_getinfo( plmenu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
	
	new userid = str_to_num( szData );
	new player = find_player( "k", userid );
	
	if (player && is_user_alive(player))
	{
		UnderInspection[player] = true
		UserTeam[player] = get_user_team(player)
		user_kill(player)
		cs_set_user_team(player, CS_TEAM_SPECTATOR)
		
		new szNamePlayer[32], szNameAdmin[32]
		get_user_name(player, szNamePlayer, charsmax(szNamePlayer))
		get_user_name(id, szNameAdmin, charsmax(szNameAdmin))
		
		new authid[34]
		plAuthId[player] = get_user_authid(player,authid,charsmax(authid))
		
		client_cmd(player, "spk ambience/bigwarning" )
		
		client_print_color(0, print_team_default,"^3(Inspector) ^1Player ^3%s ^1was placed under inspection by ^3%s", szNamePlayer, szNameAdmin)
	}else{
		client_print_color(id, print_team_default,"^3(Inspector) ^1Player not found")
		InspectPlayers(id)
	}
}

public client_disconnect(id)
{
	if(UnderInspection[id] == true)
	{
		server_cmd( "banid 10080 %s", plAuthId[id])
	}
}

@clear_all(id)
{
	if(UnderInspection[id] == true)
	{
		if(is_user_connected(id))
		{
			cs_set_user_team(id, UserTeam[id])
			UnderInspection[id] = false
			client_cmd(id, "stopsound")
		}
	}
}
Набързо съм го написал, тествай го.
Ако имаш някакви добавки или нещо да поправя пиши като коментар и когато мога ще редактирам кода.

Отваря се менюто с /inspect, за флаг съм сложил ADMIN_BAN.
Работи чудестно почети, когато вкарам играча в Spectator да не може да му позволява да влезе обратно в отбор и ако напусне сървъра преди да съм потвърдил че е чист да го бане за 1 седмица ,и ако може да се добави след команда /wginfo примерно да излиза MOTD и ако може да има log файл който да записва кой админ на кого е искал WarGod.
Благодаря ! :beer:

Аватар
rago12
Извън линия
Потребител
Потребител
Мнения: 63
Регистриран на: 10 Апр 2017, 15:23
Получена благодарност: 34 пъти

Заявка за плъгин [Spectator]

Мнение от rago12 » 09 Яну 2022, 17:57

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

#include <amxmodx>
#include <cstrike>
#include <fun>

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

#define WARGOD_MOTD "addons/amxmodx/configs/WG_info.txt"

new bool:UnderInspection[33]
new UserTeam[33]

public plugin_init()
{
	
	register_clcmd("say /inspect", "InspectMenu")
	register_clcmd("say /wginfo", "WargodMotd")
	
	register_clcmd("chooseteam", "cmdChooseTeam")
	register_clcmd("jointeam", "cmdChooseTeam")
}

public WargodMotd(id)
	show_motd(id, WARGOD_MOTD, "WarGod information")

public cmdChooseTeam(id)
{
	if(UnderInspection[id] == true)
	{
		client_print_color(id, print_team_default,"^1You are under ^3Inspection ^1 and cannot join teams.")
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public InspectMenu(id)
{
	if(!is_user_connected(id) && !(get_user_flags(id) & ADMIN_BAN)) return
	
	new menu = menu_create( "Choose option", "main_menu_handler" )
	
	menu_additem(menu, "Inspect player")
	menu_additem(menu, "Clear players inspection")
	
	menu_display(id,menu)
}

public main_menu_handler(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(menu)
		return
	}
	
	switch(item)
	{
		case 0: InspectPlayers(id)
		case 1: ClearPlayers(id)
	}
}

public ClearPlayers(id)
{
	new players[32],num
	get_players(players,num)
	
	for(new i; i<num;i++)
		@clear_all(players[i])
	
	new szName[32]
	get_user_name(id, szName, charsmax(szName))
	client_print_color(0, print_team_default,"^3(Inpsector)^1 Admin ^3%s ^1has cleared the inspections", szName)
}

public InspectPlayers(id)
{	
	new plmenu = menu_create( "Choose player", "menu_player_handler" )
	
	new players[32], pnum, tempid
	new szName[32], szUserId[32]
	get_players(players, pnum, "ch")
	
	for ( new i; i<pnum; i++ )
	{
		tempid = players[i];
		get_user_name(tempid, szName, charsmax(szName))
		formatex(szUserId, charsmax(szUserId), "%d", get_user_userid(tempid))
		menu_additem(plmenu, szName, szUserId, 0)
	}
	
	menu_display(id, plmenu)
}

public menu_player_handler(id, plmenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(plmenu)
		return
	}
	
	new szData[6], szName[64];
	new _access, item_callback;
	
	menu_item_getinfo( plmenu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
	
	new userid = str_to_num( szData );
	new player = find_player( "k", userid );
	
	if (player && is_user_alive(player))
	{
		UnderInspection[player] = true
		UserTeam[player] = get_user_team(player)
		user_kill(player)
		cs_set_user_team(player, CS_TEAM_SPECTATOR)
		
		new szNamePlayer[32], szNameAdmin[32]
		get_user_name(player, szNamePlayer, charsmax(szNamePlayer))
		get_user_name(id, szNameAdmin, charsmax(szNameAdmin))
		
		client_cmd(player, "spk ambience/bigwarning" )
		
		client_print_color(0, print_team_default,"^3(Inspector) ^1Player ^3%s ^1was placed under inspection by ^3%s", szNamePlayer, szNameAdmin)
		log_to_file("WG_Inspect.log", "Player: %s  |  inspected by Admin: %s", szNamePlayer, szNameAdmin)
		
		client_print_color(player, print_team_default,"^1Type ^3/wginfo")
	}else{
		client_print_color(id, print_team_default,"^3(Inspector) ^1Player not found")
		InspectPlayers(id)
	}
}

public client_disconnect(id)
{
	if(UnderInspection[id] == true)
	{
		new authid[34]
		get_user_authid(id,authid,charsmax(authid))
	
		server_cmd("amx_banip %s 10080", authid)
	}
}

@clear_all(id)
{
	if(UnderInspection[id] == true)
	{
		if(is_user_connected(id))
		{
			cs_set_user_team(id, UserTeam[id])
			UnderInspection[id] = false
			client_cmd(id, "stopsound")
		}
	}
}
Пробвай го така,
за MOTD-то съм сложил път : addons/amxmodx/configs/WG_info.txt най-отгоре в кода можеш да си го промениш ако искаш, в случая си създаваш .txt файл в amxmodx/configs на име WG_info, и там си слагаш какъвто MOTD решиш.
Лог файла е с име WG_Inspect.log

Пак съм бързал, така че може да съм пропуснал нещо

Аватар
bobywTf
Извън линия
Потребител
Потребител
Мнения: 37
Регистриран на: 21 Ное 2021, 14:28
Се отблагодари: 18 пъти
Получена благодарност: 3 пъти
Обратна връзка:

Заявка за плъгин [Spectator]

Мнение от bobywTf » 09 Яну 2022, 21:35

rago12 написа: 09 Яну 2022, 17:57

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

#include <amxmodx>
#include <cstrike>
#include <fun>

#if defined client_disconnected
	#define client_disconnect client_disconnected
#endif

#define WARGOD_MOTD "addons/amxmodx/configs/WG_info.txt"

new bool:UnderInspection[33]
new UserTeam[33]

public plugin_init()
{
	
	register_clcmd("say /inspect", "InspectMenu")
	register_clcmd("say /wginfo", "WargodMotd")
	
	register_clcmd("chooseteam", "cmdChooseTeam")
	register_clcmd("jointeam", "cmdChooseTeam")
}

public WargodMotd(id)
	show_motd(id, WARGOD_MOTD, "WarGod information")

public cmdChooseTeam(id)
{
	if(UnderInspection[id] == true)
	{
		client_print_color(id, print_team_default,"^1You are under ^3Inspection ^1 and cannot join teams.")
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public InspectMenu(id)
{
	if(!is_user_connected(id) && !(get_user_flags(id) & ADMIN_BAN)) return
	
	new menu = menu_create( "Choose option", "main_menu_handler" )
	
	menu_additem(menu, "Inspect player")
	menu_additem(menu, "Clear players inspection")
	
	menu_display(id,menu)
}

public main_menu_handler(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(menu)
		return
	}
	
	switch(item)
	{
		case 0: InspectPlayers(id)
		case 1: ClearPlayers(id)
	}
}

public ClearPlayers(id)
{
	new players[32],num
	get_players(players,num)
	
	for(new i; i<num;i++)
		@clear_all(players[i])
	
	new szName[32]
	get_user_name(id, szName, charsmax(szName))
	client_print_color(0, print_team_default,"^3(Inpsector)^1 Admin ^3%s ^1has cleared the inspections", szName)
}

public InspectPlayers(id)
{	
	new plmenu = menu_create( "Choose player", "menu_player_handler" )
	
	new players[32], pnum, tempid
	new szName[32], szUserId[32]
	get_players(players, pnum, "ch")
	
	for ( new i; i<pnum; i++ )
	{
		tempid = players[i];
		get_user_name(tempid, szName, charsmax(szName))
		formatex(szUserId, charsmax(szUserId), "%d", get_user_userid(tempid))
		menu_additem(plmenu, szName, szUserId, 0)
	}
	
	menu_display(id, plmenu)
}

public menu_player_handler(id, plmenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(plmenu)
		return
	}
	
	new szData[6], szName[64];
	new _access, item_callback;
	
	menu_item_getinfo( plmenu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
	
	new userid = str_to_num( szData );
	new player = find_player( "k", userid );
	
	if (player && is_user_alive(player))
	{
		UnderInspection[player] = true
		UserTeam[player] = get_user_team(player)
		user_kill(player)
		cs_set_user_team(player, CS_TEAM_SPECTATOR)
		
		new szNamePlayer[32], szNameAdmin[32]
		get_user_name(player, szNamePlayer, charsmax(szNamePlayer))
		get_user_name(id, szNameAdmin, charsmax(szNameAdmin))
		
		client_cmd(player, "spk ambience/bigwarning" )
		
		client_print_color(0, print_team_default,"^3(Inspector) ^1Player ^3%s ^1was placed under inspection by ^3%s", szNamePlayer, szNameAdmin)
		log_to_file("WG_Inspect.log", "Player: %s  |  inspected by Admin: %s", szNamePlayer, szNameAdmin)
		
		client_print_color(player, print_team_default,"^1Type ^3/wginfo")
	}else{
		client_print_color(id, print_team_default,"^3(Inspector) ^1Player not found")
		InspectPlayers(id)
	}
}

public client_disconnect(id)
{
	if(UnderInspection[id] == true)
	{
		new authid[34]
		get_user_authid(id,authid,charsmax(authid))
	
		server_cmd("amx_banip %s 10080", authid)
	}
}

@clear_all(id)
{
	if(UnderInspection[id] == true)
	{
		if(is_user_connected(id))
		{
			cs_set_user_team(id, UserTeam[id])
			UnderInspection[id] = false
			client_cmd(id, "stopsound")
		}
	}
}
Пробвай го така,
за MOTD-то съм сложил път : addons/amxmodx/configs/WG_info.txt най-отгоре в кода можеш да си го промениш ако искаш, в случая си създаваш .txt файл в amxmodx/configs на име WG_info, и там си слагаш какъвто MOTD решиш.
Лог файла е с име WG_Inspect.log

Пак съм бързал, така че може да съм пропуснал нещо
Много по добре от стария код !! Работи до 90% единствено не работи ако играча излезе от сървъра да го банне за 1 седмица + "причина текс по избор" ако е възжмоно ?
Благодаря !!

Аватар
bobywTf
Извън линия
Потребител
Потребител
Мнения: 37
Регистриран на: 21 Ное 2021, 14:28
Се отблагодари: 18 пъти
Получена благодарност: 3 пъти
Обратна връзка:

Заявка за плъгин [Spectator]

Мнение от bobywTf » 14 Яну 2022, 00:59

Lock !

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

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

Кой е на линия

Потребители разглеждащи този форум: Semrush [Bot] и 14 госта