Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Modyfikacja

Przeróbka voicecomm_ban

Modyfikacja

  • Zamknięty Temat jest zamknięty
Brak odpowiedzi do tego tematu

#1 Syczaj

    Profesjonalista

  • Użytkownik

Reputacja: 32
Życzliwy

  • Postów:156
  • Lokalizacja:Plock
Offline

Napisano 10.08.2010 15:10

Chciałbym przerobic ten plugin... ale nie umiem :P
Gdyby ktos moglby mi pomoc, chcialbym, abym po przerobce mógł dać bana na okreslony czas. Niestety zwykly admin_gag mnie nie satysfakcjonuje z powodu braku logowania SID do pliku oraz mozliwosci zrobienia reconnecta.


/*
Voicecomm ban
About:
This plugin is used to restric access to voicecomm to the users that abuse it, it saves ppl who are banned from using voicecomm in a text file. Witch is loaded
on mapchange.

Usage:
amx_banvoice <nick/userid>
amx_unbanvoice <nick/userid>

Modules required:
Engine

FAQ)
Q) Can i use this plugin on a lan server?
A) No.

Plugin forum thread: [url=http://www.amxmodx.org/forums/viewtopic.php?p=80462]The topic or forum you have requested has moved![/url]

Credits:
Ops in #AMXmodx @ Quakenet for alot of help ( + AssKicR & CheesyPeteza )
SirTiger for idea of plugin

Changelog 
 1.0.4
 	- Fixed: Runetime error when clients disconnects sometimes

 1.0.3
 	- Added: Extra check to make sure players are fully connectedć
 	
 1.0.2
	- Fixed: Plugin no longer does anything against Bots/hltv When they join/disconnect
	
 1.0.1
 	- Added: Console echo to the admin console when he bans/unbans the client
 	- Added: If the server reaches max voicecomm  bans it also warns in amxx logs
 	
 1.0.0
 	- First release
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>

#define MAXBANS 120
#define MAXPLAYERS 32

new gs_BannedId[MAXBANS+1][35]
new g_NumberOfBans
new gs_BannedFile[128]

public plugin_init()
{
	register_plugin("Voicecomm ban","1.0.4","EKS")
	
	get_localinfo("amxx_basedir",gs_BannedFile,127)
	format(gs_BannedFile,127,"%s/configs/voicecomm_banned.txt",gs_BannedFile)
	
	register_concmd("amx_banvoice","CMD_BanVoiceComm",ADMIN_IMMUNITY,"<nick/userid> Bans the user from using voicecomm") 
	register_concmd("amx_unbanvoice","CMD_UnBanVoiceComm",ADMIN_IMMUNITY,"<nick/userid> unBans the user from using voicecomm")	
	ReadBanFile()
}
public CMD_BanVoiceComm(id,level,cid) 
{ 
	if(!cmd_access (id,level,cid,1)) return PLUGIN_HANDLED
	new arg[32],VictimID
	
	read_argv(1,arg,31) 
	VictimID = cmd_target(id,arg,8)	
	if ((get_user_flags(VictimID) & ADMIN_IMMUNITY) && VictimID != id ) { return PLUGIN_HANDLED; } // This code is kind of "long", its job is to. Stop actions against admins with immunity, Stop actions action if the user lacks access, or is a bot/hltv
	new SteamID[35],VName[32]
	get_user_authid(VictimID,SteamID,34)
	get_user_name(VictimID,VName,31)
	
	if(CompareSteamId(SteamID))
	{
		console_print(id,"[AMXX] %s ma juz bana na voicechat",VName)
		return PLUGIN_HANDLED
	}
	else if(g_NumberOfBans == MAXBANS)
	{
		console_print(id,"[AMXX] Serwer osiagnal maksymalna liczbe graczy zbanowanych na voicechat. Admin serwera powinien przekonfigurowac ten plugin.")
		log_amx("Serwer osiagnal maksymalna liczbe graczy zbanowanych na voicechat. Admin serwera powinien przekonfigurowac ten plugin.")
		return PLUGIN_HANDLED		
	}
	new AdminName[32],AdminAuthid[35]
	
	BanSteamID(SteamID)
	
	set_speak(VictimID, SPEAK_MUTED)
	
	get_user_name(id,AdminName,31)
	get_user_authid(id,AdminAuthid,34)
	
	switch(get_cvar_num("amx_show_activity"))   
	{ 
		case 2:   client_print(0,print_chat,"ADMIN %s: zbanowal %s na voicechat",AdminName,VName)
   		case 1:   client_print(0,print_chat,"ADMIN: %s zostal zbanowany na voicechat",VName)
	}
	log_amx("%s<%s> zbanowal %s<%s> na voicechat",AdminName,AdminAuthid,VName,SteamID)
	console_print(id,"[AMXX] %s zostal zbanowany na voicechat",VName)
	return PLUGIN_HANDLED
}
public CMD_UnBanVoiceComm(id,level,cid) 
{ 
	if(!cmd_access (id,level,cid,1)) return PLUGIN_HANDLED
	new arg[32],VictimID
	
	read_argv(1,arg,31) 
	VictimID = cmd_target(id,arg,8)	
	if ((get_user_flags(VictimID) & ADMIN_IMMUNITY) && VictimID != id ) { return PLUGIN_HANDLED; } // This code is kind of "long", its job is to. Stop actions against admins with immunity, Stop actions action if the user lacks access, or is a bot/hltv
	new SteamID[35],VName[32]
	get_user_authid(VictimID,SteamID,34)
	get_user_name(VictimID,VName,31)
	
	if(!CompareSteamId(SteamID))
	{
		console_print(id,"[AMXX] %s nie ma jeszcze bana",VName)
		return PLUGIN_HANDLED
	}
	new AdminName[32],AdminAuthid[35]
	
	UnBanSteamID(SteamID)
	
	set_speak(VictimID, SPEAK_NORMAL)
	
	get_user_name(id,AdminName,31)
	get_user_authid(id,AdminAuthid,34)
	
	switch(get_cvar_num("amx_show_activity"))   
	{ 
		case 2:   client_print(0,print_chat,"ADMIN %s: odbanowal voicechat gracza %s ",AdminName,VName)
   		case 1:   client_print(0,print_chat,"ADMIN: voicechat gracza %s zostal odbanowany",VName)
	}
	log_amx("%s<%s> odbanowal voicechat gracza %s<%s>",AdminName,AdminAuthid,VName,SteamID)
	console_print(id,"[AMXX] Graczowi %s zdjeto bana na voicechat",VName)
	return PLUGIN_HANDLED
}
public client_putinserver(id)
{
	new SteamID[35]
	get_user_authid(id,SteamID,34)	
	
	if(!is_user_bot(id) && !is_user_hltv(id))
	{
		if(CompareSteamId(SteamID))
		{
			new Name[32]
			get_user_name(id,Name,31)
			client_print(id,print_chat,"[AMXX] %s zostal zbanowany na voicechat",Name)
			client_print(id,print_chat,"[AMXX] Zostales zbanowany na voicechat na tym serwerze")
			
			set_speak(id, SPEAK_MUTED)
		}
		else
			set_speak(id, SPEAK_NORMAL)
	}
}
stock UnBanSteamID(SteamID[])
{
	if(g_NumberOfBans == 1)
	{
		delete_file(gs_BannedFile)
		setc(gs_BannedId[1],34,0)
		g_NumberOfBans--
		return PLUGIN_CONTINUE
	}
	new Ban2Remove
	for(new i=1;i<=g_NumberOfBans;i++)	// We now find the index of the ban in the array
	{
		if(equal(SteamID,gs_BannedId[i]))
		{
			Ban2Remove = i
			break
		}
	}
	if(Ban2Remove == g_NumberOfBans) // If the ban we are removing is the last ban, we dont have to move strings around.
	{
		setc(gs_BannedId[Ban2Remove],34,0)
		g_NumberOfBans--
		WriteBanFile()
		return PLUGIN_CONTINUE
	}
	format(gs_BannedId[Ban2Remove],34,"%s",gs_BannedId[g_NumberOfBans])
	setc(gs_BannedId[g_NumberOfBans],34,0)
	g_NumberOfBans--
	WriteBanFile()
	return PLUGIN_CONTINUE
}
stock BanSteamID(SteamID[])
{
	g_NumberOfBans++
	format(gs_BannedId[g_NumberOfBans],34,"%s",SteamID)
	WriteBanFile()
}
stock WriteBanFile()
{
	if(file_exists(gs_BannedFile)) delete_file(gs_BannedFile)
	for(new i=0;i<=g_NumberOfBans;i++)
	{
		write_file(gs_BannedFile,gs_BannedId[i],-1)
	}	
}

stock CompareSteamId(SteamID[])
{
	for(new i=1;i<=g_NumberOfBans;i++)
	{
		if(equal(SteamID,gs_BannedId[i]))
			return 1
	}
	return 0
}
stock ReadBanFile()
{
	if(!file_exists(gs_BannedFile)) return PLUGIN_CONTINUE
	
	new InfoFromFile[40],EOF
	for(new i=0;read_file(gs_BannedFile,i,InfoFromFile,40,EOF) != 0 && i<= MAXBANS;i++)
	{
		if(strlen(InfoFromFile) >= 4)		// We make sure there is at least 4 vail chars before we accept the ban.
		{
			g_NumberOfBans++
			format(gs_BannedId[g_NumberOfBans],34,"%s",InfoFromFile)
		}
	}
	server_print("[AMXX] loaded %d bans from %s",g_NumberOfBans,gs_BannedFile)
	return PLUGIN_CONTINUE
}

17 sierpień 2010 - 12:42:
Bump, odswiezam. Na prawde nikt nie pomoze?
  • +
  • -
  • 0
Dołączona grafika





Również z jednym lub większą ilością słów kluczowych: Modyfikacja

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych