Заявка за изработна на плъгин работещ с GS

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Заявка за изработна на плъгин работещ с GS

Мнение от ElitePower » 03 Фев 2018, 20:14

Описание: Искам да се изработи плъгин към GagSystem-a на Shoko, който като няма админ и играчите се хранят да бъдат гагвани за определени думи, които се намират в ini файл.
viewtopic.php?f=32&t=2744


Ако не ви се занимава с изработката на цялостен плъгин не се занимавайте с горната заявка.


Кое точно трябва да променя в този плъгин, за да не гагва за цял мап, а за примерно 5 минути?

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

#include <amxmodx>
#include <colorchat>

#define MAX_WORDS 100
#define MAX_LEN 32

new gsWords[ MAX_WORDS ][ MAX_LEN ];

new gsGagged[ 1024 ];

new gsWordFile[] = "addons/amxmodx/configs/badwords.ini";

public plugin_init() 
{
    register_plugin( "Word Blocker", "0.1", "hornet" )
    
    register_clcmd( "say", "cmdSay" );
    register_clcmd( "say_team", "cmdSay" );
    
    new text[ MAX_LEN ], txtlen;
    for( new i ; i < file_size( gsWordFile, 1 ) ; i ++ )
    {
        read_file( gsWordFile, i , text, charsmax( text ), txtlen );
        gsWords[ i ] = text;
    }
}

public cmdSay( id )
{    
    new authid[ 32 ];
    get_user_authid( id, authid, charsmax( authid ) );
    format( authid, charsmax( authid ) + 1, "%s ", authid );
    
    if( contain( gsGagged, authid ) != -1 )
    {
        ColorChat(id, RED, "^x04* You^x03 gagged^x01 for^x03 advertising^x04 /^x03 swearing^x01 in^x04 chat^x01 !^x04 [^x03Wait End of Map^x04]" );
        return PLUGIN_HANDLED;
    }
    
    new say[ 256 ];
    read_args( say, charsmax( say ) );
    
    for( new i ; i < sizeof gsWords - 1 ; i ++ )
    {
        if( contain( say, gsWords[ i ] ) != -1 )
        {
            new name[ 32 ];
            get_user_name( id, name, charsmax( name ) );
            
            format( authid, charsmax( authid ) + 1, "%s ", authid );
            format( gsGagged, charsmax( gsGagged ) + charsmax( authid ), "%s%s", gsGagged, authid );
            
            ColorChat(0, RED, "*^x04 %s^x03 punished^x01 because of the^x03 advertising^x04 /^x03 swearing^x01 in^x04 chat", name );
            
            return PLUGIN_HANDLED;
        }
    }
    
    return PLUGIN_CONTINUE;
}  

Аватар
Nikolow
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 196
Регистриран на: 27 Ное 2016, 13:02
Местоположение: Варна
Се отблагодари: 7 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Заявка за изработна на плъгин работещ с GS

Мнение от Nikolow » 03 Фев 2018, 22:36

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

#include <amxmodx>

#define MAX_WORDS 100
#define MAX_LEN 32

native gag_user(name[], ip[], duration, reason[], admin[])

new gsWords[ MAX_WORDS ][ MAX_LEN ];

new gsWordFile[] = "addons/amxmodx/configs/badwords.ini";

public plugin_init() 
{
    register_plugin( "Word Blocker", "0.1", "hornet" )
    
    register_clcmd( "say", "cmdSay" );
    register_clcmd( "say_team", "cmdSay" );
    
    new text[ MAX_LEN ], txtlen;
    for( new i ; i < file_size( gsWordFile, 1 ) ; i ++ )
    {
        read_file( gsWordFile, i , text, charsmax( text ), txtlen );
        gsWords[ i ] = text;
    }
}

public cmdSay( id )
{    
    new say[ 256 ];
    read_args( say, charsmax( say ) );
    
    for( new i ; i < sizeof gsWords - 1 ; i ++ )
    {
        if( contain( say, gsWords[ i ] ) != -1 )
        {
			new szName[32], szIP[16];
			get_user_name(id, szName, charsmax(szName));
			get_user_ip(id, szIP, charsmax(szIP), 1);

			gag_user(szName, szIP, 1, "Adversting / Swearing", "Bad Words System");
            
			return PLUGIN_HANDLED;
        }
    }
    
    return PLUGIN_CONTINUE;
}  
Кода е редакция на този вторият, като използва гаг системата на Шоко. При засичане на дума от файла, гагва играча за 1 минута.
Прочети API-то на Шоко плъгина и ще разбереш кое как да промениш за гаг-а.
Tired and retired...

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Заявка за изработна на плъгин работещ с GS

Мнение от ElitePower » 04 Фев 2018, 17:42

Това със смяната на времето за гаг не го разбрах, не съм се занимавал с api досега.

Аватар
Nikolow
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 196
Регистриран на: 27 Ное 2016, 13:02
Местоположение: Варна
Се отблагодари: 7 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Заявка за изработна на плъгин работещ с GS

Мнение от Nikolow » 04 Фев 2018, 18:31

Става дума за Това. В плъгина съм използвал gag_user. Виждаш как е устроен и редактираш, каквото желаеш и както желаеш.
Tired and retired...

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Заявка за изработна на плъгин работещ с GS

Мнение от ElitePower » 04 Фев 2018, 20:53

До тук всичко е точно. Ако може да се направи, плъгина да не гагва, когато има админ в сървъра

Аватар
Nikolow
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 196
Регистриран на: 27 Ное 2016, 13:02
Местоположение: Варна
Се отблагодари: 7 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Заявка за изработна на плъгин работещ с GS

Мнение от Nikolow » 04 Фев 2018, 21:56

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

#include <amxmodx>

#define MAX_WORDS 100
#define MAX_LEN 32

native gag_user(name[], ip[], duration, reason[], admin[])

new gsWords[ MAX_WORDS ][ MAX_LEN ];
new gsWordFile[] = "addons/amxmodx/configs/badwords.ini";

new bool:is_admin_connected[33]
new g_iAdminCount 

public plugin_init() 
{
    register_plugin( "Word Blocker", "0.1", "hornet" )
    
    register_clcmd( "say", "cmdSay" );
    register_clcmd( "say_team", "cmdSay" );
    
    new text[ MAX_LEN ], txtlen;
    for( new i ; i < file_size( gsWordFile, 1 ) ; i ++ )
    {
        read_file( gsWordFile, i , text, charsmax( text ), txtlen );
        gsWords[ i ] = text;
    }
}

public cmdSay( id )
{    
	if (g_iAdminCount > 0)
		return PLUGIN_HANDLED;

	for( new i ; i < sizeof gsWords - 1 ; i ++ )
    {
		new say[ 256 ];
		read_args( say, charsmax( say ) );
		
		if( contain( say, gsWords[ i ] ) != -1 )
        {
			new szName[32], szIP[16];
			get_user_name(id, szName, charsmax(szName));
			get_user_ip(id, szIP, charsmax(szIP), 1);

			gag_user(szName, szIP, 1, "Adversting / Swearing", "Bad Words System");
            
			return PLUGIN_HANDLED;
        }
    }
    
	return PLUGIN_CONTINUE;
}  

public client_putinserver(id)
{
	if(get_user_flags(id) & ADMIN_KICK)
	{
		g_iAdminCount++
		is_admin_connected[id] = true
	}
}

public client_disconnected(id)
{
	if(is_admin_connected[id])
	{
		is_admin_connected[id] = false
		g_iAdminCount--
	}
}
Извън темата
Пустата табулация не изглежда добре във форума :(
Tired and retired...

Аватар
ElitePower
Извън линия
Потребител
Потребител
Мнения: 547
Регистриран на: 13 Окт 2016, 14:20
Се отблагодари: 7 пъти
Получена благодарност: 13 пъти

Заявка за изработна на плъгин работещ с GS

Мнение от ElitePower » 04 Фев 2018, 22:44

Сега не се вижда какво се пише в чата.
Error log:
L 02/04/2018 - 22:43:43: Start of error session.
L 02/04/2018 - 22:43:43: Info (map "de_snipe_it5") (file "addons/amxmodx/logs/error_20180204.log")
L 02/04/2018 - 22:43:43: [AMXX] Displaying debug trace (plugin "AutoGag.amxx")
L 02/04/2018 - 22:43:43: [AMXX] Run time error 4: index out of bounds
L 02/04/2018 - 22:43:43: [AMXX] [0] AutoGag.sma::plugin_init (line 25)

Аватар
Nikolow
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 196
Регистриран на: 27 Ное 2016, 13:02
Местоположение: Варна
Се отблагодари: 7 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Заявка за изработна на плъгин работещ с GS

Мнение от Nikolow » 05 Фев 2018, 00:14

Пардон, моя грешка. От бързането съм написал проверката на неправилното място.

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

#include <amxmodx>

#define MAX_WORDS 100
#define MAX_LEN 32

native gag_user(name[], ip[], duration, reason[], admin[])

new gsWords[ MAX_WORDS ][ MAX_LEN ];
new gsWordFile[] = "addons/amxmodx/configs/badwords.ini";

new bool:is_admin_connected[33]
new g_iAdminCount 

public plugin_init() 
{
    register_plugin( "Word Blocker", "0.1", "hornet" )
    
    register_clcmd( "say", "cmdSay" );
    register_clcmd( "say_team", "cmdSay" );
    
    new text[ MAX_LEN ], txtlen;
    for( new i ; i < file_size( gsWordFile, 1 ) ; i ++ )
    {
        read_file( gsWordFile, i , text, charsmax( text ), txtlen );
        gsWords[ i ] = text;
    }
}

public cmdSay( id )
{    
	new say[ 256 ];
	read_args( say, charsmax( say ) );
	
	for( new i ; i < sizeof gsWords - 1 ; i ++ )
    {
		if( contain( say, gsWords[ i ] ) != -1 )
        {
			if (g_iAdminCount > 0)
				return PLUGIN_HANDLED;
		
			new szName[32], szIP[16];
			get_user_name(id, szName, charsmax(szName));
			get_user_ip(id, szIP, charsmax(szIP), 1);

			gag_user(szName, szIP, 1, "Adversting / Swearing", "Bad Words System");
            
			return PLUGIN_HANDLED;
        }
    }
    
	return PLUGIN_CONTINUE;
}  

public client_putinserver(id)
{
	if(get_user_flags(id) & ADMIN_KICK)
	{
		g_iAdminCount++
		is_admin_connected[id] = true
	}
}

public client_disconnected(id)
{
	if(is_admin_connected[id])
	{
		is_admin_connected[id] = false
		g_iAdminCount--
	}
}
Единственият минус, който може да не ти хареса е, че при наличието на админ и написването на дума, която я има във файла, то тя (думата) няма да бъде показана в чата.

Тоест:
  • Когато има админ и напишеш дума от файла, просто нищо няма да стане -> Нито ГАГ, Нито думата ще излезе.
  • Когато НЯМА админ и напишеш дума от файла, ще бъдеш ГАГ-нат за 1 минута и думата отново няма да излезе.
Tired and retired...

Аватар
deadlylord
Извън линия
Потребител
Потребител
Мнения: 572
Регистриран на: 04 Апр 2017, 16:35
Местоположение: Бургас, България
Получена благодарност: 2 пъти
Обратна връзка:

Заявка за изработна на плъгин работещ с GS

Мнение от deadlylord » 05 Фев 2018, 03:58

По-добре да си ги гагва, без значение дали има админ или няма

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Заявка за изработна на плъгин работещ с GS

Мнение от TheRedShoko » 07 Фев 2018, 16:22

Nikolow написа: 05 Фев 2018, 00:14 Пардон, моя грешка. От бързането съм написал проверката на неправилното място.

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

#include <amxmodx>

#define MAX_WORDS 100
#define MAX_LEN 32

native gag_user(name[], ip[], duration, reason[], admin[])

new gsWords[ MAX_WORDS ][ MAX_LEN ];
new gsWordFile[] = "addons/amxmodx/configs/badwords.ini";

new bool:is_admin_connected[33]
new g_iAdminCount 

public plugin_init() 
{
    register_plugin( "Word Blocker", "0.1", "hornet" )
    
    register_clcmd( "say", "cmdSay" );
    register_clcmd( "say_team", "cmdSay" );
    
    new text[ MAX_LEN ], txtlen;
    for( new i ; i < file_size( gsWordFile, 1 ) ; i ++ )
    {
        read_file( gsWordFile, i , text, charsmax( text ), txtlen );
        gsWords[ i ] = text;
    }
}

public cmdSay( id )
{    
	new say[ 256 ];
	read_args( say, charsmax( say ) );
	
	for( new i ; i < sizeof gsWords - 1 ; i ++ )
    {
		if( contain( say, gsWords[ i ] ) != -1 )
        {
			if (g_iAdminCount > 0)
				return PLUGIN_HANDLED;
		
			new szName[32], szIP[16];
			get_user_name(id, szName, charsmax(szName));
			get_user_ip(id, szIP, charsmax(szIP), 1);

			gag_user(szName, szIP, 1, "Adversting / Swearing", "Bad Words System");
            
			return PLUGIN_HANDLED;
        }
    }
    
	return PLUGIN_CONTINUE;
}  

public client_putinserver(id)
{
	if(get_user_flags(id) & ADMIN_KICK)
	{
		g_iAdminCount++
		is_admin_connected[id] = true
	}
}

public client_disconnected(id)
{
	if(is_admin_connected[id])
	{
		is_admin_connected[id] = false
		g_iAdminCount--
	}
}
Единственият минус, който може да не ти хареса е, че при наличието на админ и написването на дума, която я има във файла, то тя (думата) няма да бъде показана в чата.

Тоест:
  • Когато има админ и напишеш дума от файла, просто нищо няма да стане -> Нито ГАГ, Нито думата ще излезе.
  • Когато НЯМА админ и напишеш дума от файла, ще бъдеш ГАГ-нат за 1 минута и думата отново няма да излезе.
Ако върнеш проверката на предишното ѝ място и замениш PLUGIN_HANDLED с CONTINUE няма да има проблеми. Ако ще блокира неприличните думи за какво е проверката дали има админ? Той няма да я види и няма да накаже за нея.

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

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

Кой е на линия

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