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

Przerobka

Modyfikacja

  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 Fovi

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:15
Offline

Napisano 11.01.2009 15:00

Witam, może mi to ktoś tak przerobić żeby adminowi z flaga "t" nic nie robiło ?
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1


new const gPLUGIN[] = "[KzM] Script Detector";
new const gVERSION[] = "1.1";
new const gAUTHOR[] = "[KzM] Fatalis";

new const gLOOPTYPES[][] =
{
	"special",
	"rebuy",
	"autobuy"
};

new gRandomStrings[3][4];
new gAliases[129];

new gMsgSayText;
new gMaxPlayers;

new gTimesDetected[33];

new gCvarBanTime;
new gCvarPunishment;
new gCvarBanMode;

public plugin_init()
{
	register_plugin(gPLUGIN, gVERSION, gAUTHOR);
	
	register_cvar("fatalis", "sd1.1", FCVAR_SERVER, 0.0);
	
	gMsgSayText = get_user_msgid("SayText");
	gMaxPlayers = get_maxplayers();
	
	gCvarBanTime = register_cvar("kzm_sd_bantime", "30", 0, 0.0);
	gCvarPunishment = register_cvar("kzm_sd_punishment", "1", 0, 0.0);
	gCvarBanMode = register_cvar("kzm_sd_banmode", "1", 0, 0.0);
	
	register_forward(FM_PlayerPreThink, "fwdPlayerPreThink", 0);
	
	new szCmd[10] = "kzm_sd";
	for( new i = 6; i < 10; i++ )
	{
		szCmd[i] = random_num('a', 'z');
	}
	
	register_clcmd(szCmd, "cmdScriptDetected", -1, "");
	
	for( new i = 0; i < 3; i++ )
	{
		for( new j = 0; j < 3; j++ )
		{
			gRandomStrings[i][j] = random_num('a', 'z');
		}
	}
	
	format(gAliases, 128,
		";alias cl_yawspeed say LJScript;alias _special %s %s;alias cl_rebuy %s %s;alias cl_autobuy %s %s",
		szCmd, gRandomStrings[0],
		szCmd, gRandomStrings[1],
		szCmd, gRandomStrings[2]);
	
	return PLUGIN_CONTINUE;
}

public fwdPlayerPreThink(plr)
{
	if( pev(plr, pev_button)&IN_JUMP
	&& !(pev(plr, pev_oldbuttons)&IN_JUMP) )
	{
		client_cmd(plr, gAliases);
	}
	
	return FMRES_IGNORED;
}

public client_putinserver(plr)
{
	gTimesDetected[plr] = 0;
	
	return PLUGIN_CONTINUE;
}

public cmdScriptDetected(plr)
{
	
	if( !is_user_alive(plr)
	|| fnIsOnGround(plr) )
	{
		return PLUGIN_HANDLED;
	}
	
	new szArg[7];
	read_argv(1, szArg, 6);
	
	for( new i = 0; i < 3; i++ )
	{
		if( !strcmp(szArg, gRandomStrings[i], 0) )
		{
			switch( i )
			{
			case 0:
			{
				fnPunish(plr, i);
			}
			case 1,2:
			{
				switch( ++gTimesDetected[plr] )
				{
				case 1,2:
				{
					fnGreenChat(plr, "[KzMSD] Don't use rebuy/autobuy on this server.");
				}
				case 3:
				{
					fnPunish(plr, i);
					gTimesDetected[plr] = 0;
				}
				}
			}
			}
			
			break;
		}
	}
	
	return PLUGIN_HANDLED;
}

bool:fnIsOnGround(plr) // surf_olympics.sma - OneEyed
{	
	new flags = pev(plr, pev_flags);
	
	if( (flags&FL_ONGROUND) || (flags & FL_PARTIALGROUND)
	||( flags&FL_INWATER )
	||( flags&FL_CONVEYOR )
	||( flags&FL_FLOAT) )
	{
		return true;
	}
	
	return false;
}

fnGreenChat(plr, const message[], {Float,Sql,Result,_}:...)
{
	static msg[192];
	msg[0] = 0x04;
	
	vformat(msg[1], 190, message, 3);
	
	if( plr > 0 && plr <= gMaxPlayers )
	{
		message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, plr);
		write_byte(plr);
		write_string(msg);
		message_end();
	}
	else if( plr == 0 )
	{
		for( new i = 1; i <= gMaxPlayers; i++ )
		{
			if( !is_user_connected(i) )
			{
				continue;
			}
			
			message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i);
			write_byte(i);
			write_string(msg);
			message_end();
		}
	}
	
	return 1;
}

fnPunish(plr, loopType)
{
	new banTime = get_pcvar_num(gCvarBanTime);
	new punishment = get_pcvar_num(gCvarPunishment);
	new banMode = get_pcvar_num(gCvarBanMode);
	new userId = get_user_userid(plr);
	
	new szName[32];
	get_user_name(plr, szName, 32);
	
	new szReason[33];
	format(szReason, 32, "Script(%s)", gLOOPTYPES[loopType]);
	
	switch( punishment )
	{
	case 1:
	{
		if( banMode == 1 )
		{
			server_cmd("amx_ban #%i %i ^"%s^"", userId, banTime, szReason);
		}
		else if( banMode == 2 )
		{
			server_cmd("amx_ban %i #%i %s", banTime, userId, szReason);
		}
		
		fnGreenChat(0, "[KzMSD] %s was automagically banned for %i minutes. Reason: %s",
			szName, banTime, szReason);
	}
	case 2:
	{
		server_cmd("amx_kick #%i ^"%s^"", userId, szReason);
		
		fnGreenChat(0, "[KzMSD] %s was automagically kicked. Reason: %s", szName, szReason);
	}
	case 3:
	{
		user_kill(plr, 0);
		
		fnGreenChat(0, "[KzMSD] %s was automagically slayed. Reason: %s", szName, szReason);
	}
	}
	
	
	return 1;
}

  • +
  • -
  • 0

#2 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 11.01.2009 15:23

Powinno działać. W każdym bądź razie nietestowane.
Następnym razem pisz, do czego jest ten plugin, zaoszczędzi nam to czasu.

#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1


new const gPLUGIN[] = "[KzM] Script Detector";
new const gVERSION[] = "1.1";
new const gAUTHOR[] = "[KzM] Fatalis";

new const gLOOPTYPES[][] =
{
    "special",
    "rebuy",
    "autobuy"
};

new gRandomStrings[3][4];
new gAliases[129];

new gMsgSayText;
new gMaxPlayers;

new gTimesDetected[33];

new gCvarBanTime;
new gCvarPunishment;
new gCvarBanMode;

public plugin_init()
{
    register_plugin(gPLUGIN, gVERSION, gAUTHOR);
   
    register_cvar("fatalis", "sd1.1", FCVAR_SERVER, 0.0);
   
    gMsgSayText = get_user_msgid("SayText");
    gMaxPlayers = get_maxplayers();
   
    gCvarBanTime = register_cvar("kzm_sd_bantime", "30", 0, 0.0);
    gCvarPunishment = register_cvar("kzm_sd_punishment", "1", 0, 0.0);
    gCvarBanMode = register_cvar("kzm_sd_banmode", "1", 0, 0.0);
   
    register_forward(FM_PlayerPreThink, "fwdPlayerPreThink", 0);
   
    new szCmd[10] = "kzm_sd";
    for( new i = 6; i < 10; i++ )
    {
        szCmd[i] = random_num('a', 'z');
    }
   
    register_clcmd(szCmd, "cmdScriptDetected", -1, "");
   
    for( new i = 0; i < 3; i++ )
    {
        for( new j = 0; j < 3; j++ )
        {
            gRandomStrings[i][j] = random_num('a', 'z');
        }
    }
   
    format(gAliases, 128,
        ";alias cl_yawspeed say LJScript;alias _special %s %s;alias cl_rebuy %s %s;alias cl_autobuy %s %s",
        szCmd, gRandomStrings[0],
        szCmd, gRandomStrings[1],
        szCmd, gRandomStrings[2]);
   
    return PLUGIN_CONTINUE;
}

public fwdPlayerPreThink(plr)
{
    if (get_user_flags(plr) & ADMIN_LEVEL_H)
	return PLUGIN_CONTINUE;
    if( pev(plr, pev_button)&IN_JUMP && !(pev(plr, pev_oldbuttons)&IN_JUMP) )
    {
        client_cmd(plr, gAliases);
    }
   
    return FMRES_IGNORED;
}

public client_putinserver(plr)
{
    gTimesDetected[plr] = 0;
   
    return PLUGIN_CONTINUE;
}

public cmdScriptDetected(plr)
{
    if (get_user_flags(plr) & ADMIN_LEVEL_H)
	return PLUGIN_CONTINUE;
    if( !is_user_alive(plr)
    || fnIsOnGround(plr) )
    {
        return PLUGIN_HANDLED;
    }
   
    new szArg[7];
    read_argv(1, szArg, 6);
   
    for( new i = 0; i < 3; i++ )
    {
        if( !strcmp(szArg, gRandomStrings[i], 0) )
        {
            switch( i )
            {
            case 0:
            {
                fnPunish(plr, i);
            }
            case 1,2:
            {
                switch( ++gTimesDetected[plr] )
                {
                case 1,2:
                {
                    fnGreenChat(plr, "[KzMSD] Don't use rebuy/autobuy on this server.");
                }
                case 3:
                {
                    fnPunish(plr, i);
                    gTimesDetected[plr] = 0;
                }
                }
            }
            }
           
            break;
        }
    }
   
    return PLUGIN_HANDLED;
}

bool:fnIsOnGround(plr) // surf_olympics.sma - OneEyed
{   
    new flags = pev(plr, pev_flags);
   
    if( (flags&FL_ONGROUND) || (flags & FL_PARTIALGROUND)
    ||( flags&FL_INWATER )
    ||( flags&FL_CONVEYOR )
    ||( flags&FL_FLOAT) )
    {
        return true;
    }
   
    return false;
}

fnGreenChat(plr, const message[], {Float,Sql,Result,_}:...)
{
    static msg[192];
    msg[0] = 0x04;
   
    vformat(msg[1], 190, message, 3);
   
    if( plr > 0 && plr <= gMaxPlayers )
    {
        message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, plr);
        write_byte(plr);
        write_string(msg);
        message_end();
    }
    else if( plr == 0 )
    {
        for( new i = 1; i <= gMaxPlayers; i++ )
        {
            if( !is_user_connected(i) )
            {
                continue;
            }
           
            message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i);
            write_byte(i);
            write_string(msg);
            message_end();
        }
    }
   
    return 1;
}

fnPunish(plr, loopType)
{
    if (get_user_flags(plr) & ADMIN_LEVEL_H)
	return PLUGIN_CONTINUE;
    new banTime = get_pcvar_num(gCvarBanTime);
    new punishment = get_pcvar_num(gCvarPunishment);
    new banMode = get_pcvar_num(gCvarBanMode);
    new userId = get_user_userid(plr);
   
    new szName[32];
    get_user_name(plr, szName, 32);
   
    new szReason[33];
    format(szReason, 32, "Script(%s)", gLOOPTYPES[loopType]);
   
    switch( punishment )
    {
    case 1:
    {
        if( banMode == 1 )
        {
            server_cmd("amx_ban #%i %i ^"%s^"", userId, banTime, szReason);
        }
        else if( banMode == 2 )
        {
            server_cmd("amx_ban %i #%i %s", banTime, userId, szReason);
        }
       
        fnGreenChat(0, "[KzMSD] %s was automagically banned for %i minutes. Reason: %s",
            szName, banTime, szReason);
    }
    case 2:
    {
        server_cmd("amx_kick #%i ^"%s^"", userId, szReason);
       
        fnGreenChat(0, "[KzMSD] %s was automagically kicked. Reason: %s", szName, szReason);
    }
    case 3:
    {
        user_kill(plr, 0);
       
        fnGreenChat(0, "[KzMSD] %s was automagically slayed. Reason: %s", szName, szReason);
    }
    }
   
   
    return 1;
}

  • +
  • -
  • 0

#3 Fovi

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:15
Offline

Napisano 11.01.2009 15:56

Ok, działa Można zamknąć
  • +
  • -
  • 0





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