Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Несколько вопросов

Статус пользователя Mr.Dmitry
сообщение 29.3.2011, 19:27
Сообщение #1


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Лазил по форуму и нашел вот эту тему

До этого ни когда не занимался плагинами. Нашел этот и решил поковыряется. Сразу же возникло несколько вопросов. Сколько можно добавить слов в массив? У меня больше 198 не лезит (( А это мало. И как можно закрыть матерное слово? Именно слово а не все сообщение! Все сообщение закрывается без проблем )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 29.3.2011, 20:02
Сообщение #2


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Цитата(Mr.Dmitry @ 29.3.2011, 23:27) *
Лазил по форуму и нашел вот эту тему

До этого ни когда не занимался плагинами. Нашел этот и решил поковыряется. Сразу же возникло несколько вопросов. Сколько можно добавить слов в массив? У меня больше 198 не лезит (( А это мало. И как можно закрыть матерное слово? Именно слово а не все сообщение! Все сообщение закрывается без проблем )

Вот что сейчас я сделал


antimat.sma
Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

// Change this number to the number of mat words (currently 2)
#define MATWORDS 559
#define MAX_WORDS 200

//Default required admin level - don't want too many admins to have it, for the sake of speed
#define ACCESS_LEVEL ADMIN_IMMUNITY

new g_Warned[33]

new g_MatWords[MATWORDS][] = // DON'T DO ANYTHING HERE!
{
"e6",
"e6",
"eb",
"blya",
"yob",
"huy",
"xyu",
"xye",
"huj",    
"hui",    
"xui",
"huli",
"/7uga",
"/7uda",
"nuga",
"nugp",
"nugep",
"nuda",
"nudop",
"nudr",
"pudp",
"pi3da",
"/7u3g",
"nu3g",
"pizda",
"pi3d",
"zopa",
"zadrot",
"suk",
"cyk",
"syk",
"such",
"suki",
"su4",
"cy4",
"cuka",
"cuki",
"cuku",
"paskud",
"loshar",
"lox",
"loh",
"sosi",
"COCU",
"coco",
"zaebal",
"zaibal",
"ueban",
"idiot",
"suka",
"syka",
"cyka",
"cuka",
"syki",
"bl9",
"blya",
"loh",
"lox",
"l0x",
"idiot",
"pridyrok",
"prudyrok",
"pidar",
"loshara",
"sosi",
"coci",
"xyi",
"mlya",
"ml9",
"fuck",
"baran",
"yrod",
"zaebal",
"poxyi",
"gnida",
"piska",
"nax",
"nah",
"scykoo",
"mlia",
"***",
"kozlu",
"kozel",
"ebatb",
"kpbIca",
"LO)(",
"loLLIapa",
"LLOOXX",
"ycbIpa4",
"su4ku",
"su4ki",
"su4ka",
"pedarasika",
"blia",
"pediki",
"romuku",
"xy*",
"nuCbka",
"6apaH",
"xy*lo",
"XYLI",
"blad",
"epanytsya",
"ebalo",
"zaebi",
"nu3Da",
"nugpu/\o",
"zaipal",
"4mo",
"4mmo",
"scyko",
"bI4",
"nugop",
"negapIOra",
"L_O_X_!",
"L_O_X",
"pizdovatuj",
"raBHo",
"dubilu",
"oleni",
"pizdak",
"sasat",
"svolo4",
"B.L.9l.",
"gamno",
"pizdec",
"pizda",
"lo.h",
"pis`ka",
"ssukynu",
"NIGER",
"3ae6aJI",
"lowapik",
"/7ePDyH",
"shlyxa",
"xy9ce",
"CboJIo4",
"iopnyta9",
"cy_KI",
"kpblc|0ku",
"DAyH",
"Topmo3",
"drochyn",
"lawara",
"cyko",
"IiagoHar",
"e6aTb",
"debilu",
"CY_KA",
"puzdec",
"gayH",
"unaTb",
"e6alo",
"1OX",
"NA)(",
"debil",
"inaTb",
"suka",
"blya",
"loh",
"IIuIIeu",
"nnu",
"c y k a 6Jl9",
"6/la",
"/\ox",
"/7cux",
"/7oxyi",
"/7u3DA",
"/7u3DEL|",
"/7u3Do6oJI",
"/7u3dyH",
"/7u3DyH",
"/7u3dyK",
"/7u3ga",
"/7u3gaKpbl/|",
"/7uDOPAS",
"/7udoras",
"/7y3DeL|",
"/Iox",
"}I{O/7A",
"}I{O/7y",
"3aDrot",
"3adrot",
"3ae6a/\",
"3ae6ucb",
"3aebal",
"3aebali",
"3aeblo",
"3AeBlo",
"3aeblo",
"3AeBlo",
"3aJIy/7a",
"3au/7aJI",
"3au6aJIu",
"3oofuJI",
"4len",
"4moLLlnik",
"6/\9",
"6JI9",
"6JI9Idyga",
"6JI9Itb",
"ahuet",
"ahyet",
"ass-hole",
"asshole",
"axuenno",
"Axueno",
"axuet",
"axuetb",
"axyenno",
"axyet",
"Axyetb",
"b1ay",
"balvan",
"bitch",
"bl9",
"bl9|",
"bl9i",
"bl9idinbI",
"bl9It",
"bl9l",
"bla",
"bla",
"blai",
"blat",
"blay",
"blia",
"bliat'",
"blja",
"blya",
"blyat",
"blyt",
"chit",
"chitak",
"chiter",
"chitu",
"COCu",
"cuka",
"cy4apa",
"Cy4aRa",
"Cy4bE",
"Cy4eHOk",
"cy4ka",
"Cy4KA",
"CY4KA",
"Cy4uJIO",
"Cyka",
"CYKA",
"cyka",
"Cyku",
"CYKu",
"d9ITeJI",
"d9ITeJL",
"daun",
"DAyH",
"debil",
"dibil",
"dolboeb",
"DP9IHb",
"dra4ilo",
"dra4it'",
"Dro4itb",
"durak",
"dyatel",
"e6/la",
"e6aHA9I",
"e6aHbIu",
"e6aJI",
"e6anble",
"e6annble",
"e6annnble",
"e6aTb",
"e6JIAH",
"e6JIaHu",
"EBAHIY",
"ebal",
"ebalbnik",
"EbaLLL",
"ebaLLl",
"eBaLLlitb",
"ebanat",
"ebanbiu",
"ebani",
"ebanoe",
"ebanu",
"ebanuts9i",
"ebany",
"ebarb",
"ebat",
"eBatb",
"ebi",
"ebla",
"eblan",
"ebta",
"ebu",
"ebu4ie",
"ebuchi",
"ebuchie",
"ebuhie",
"ebut",
"eby",
"eBy4iu",
"fuck",
"GANDOHuLL|E",
"GaNdon",
"gandon",
"govno",
"ha4",
"hachik",
"HAxy9I",
"hernia",
"HExy9I",
"hu19",
"hui",
"hujnya",
"hul9",
"huli",
"hulja",
"hulu",
"hulya",
"hunya",
"huy",
"huya",
"hyli",
"hyu",
"idiot",
"JIOXALLIAPA",
"ka3el",
"kazel",
"KO3EJI",
"ko3eJI",
"ko3el",
"KO3JI",
"KO3JIbI",
"ko3li",
"kozel",
"krbIca",
"kriso4ka",
"lamin",
"loh",
"loshara",
"loshok",
"lox",
"lox",
"mudak",
"Mudik",
"mudila",
"mudila",
"mudilo",
"mudlan",
"mudlo",
"myda3von",
"mydak",
"mydila",
"myDJIaH",
"MyDuJIO",
"MyuJIO",
"naher",
"naxuy",
"naxyu",
"naxyu'",
"Naxyu",
"Naxyu",
"ne3D",
"ne3Da",
"ne3Dy",
"nexuya",
"nigga",
"nigger",
"nixera",
"nixuya",
"nizga",
"noxyu",
"nu3DA",
"nu3dec",
"nu3DEL|",
"nu3ga",
"ohyel",
"Ohyet",
"osel",
"Otbebisb",
"oTbeBisbka",
"oTbeBisbka",
"OTCOCUTE",
"OXyEJI",
"oxyetb",
"OXyETb",
"oxyetb",
"padl",
"PaDla",
"padla",
"padlu",
"paskuda",
"petux",
"Pi3da",
"Pi3dabol",
"Pi3daNutS9|",
"pi3danyts9i",
"pi3dato",
"Pi3daTo",
"pi3dec",
"pi3deLL",
"pi3delL",
"Pi3deLLl",
"Pi3Diok",
"pi3dobol",
"pi3docik",
"Pi3Dosik",
"pi3dy",
"pidar",
"pidaras",
"pidor",
"pidr",
"pizd",
"pizda",
"pizdec",
"PIZDEL|",
"pizdi",
"pizdobol",
"PIZDOS",
"pizdqa",
"pizduk",
"pizdun",
"pohuy",
"ProXu9|Ritb",
"proxy9iritb",
"psix",
"pu3deLLl",
"pu3di",
"pu3du",
"Pu3Dy",
"puDAR",
"pussies",
"pussy",
"PuzDu",
"raHDoH",
"sosi",
"su4ara",
"su4ilo",
"su4ka",
"suchenok",
"suka",
"suki",
"svolo4uga",
"Sy4ara",
"syca",
"syka",
"syki",
"tupoi",
"tvarb",
"Tyna9l",
"TynaP",
"ueban",
"urod",
"vafel",
"Xu9|Ritb",
"xuesos",
"Xuevo",
"xui",
"xuilo",
"xuinya",
"xuli",
"xuy ***",
"xuya",
"xuynia",
"xy9",
"Xy9CE6E",
"xy9I",
"xy9irutb",
"Xy9Ise",
"xy9l",
"XYeBO",
"xyeBo",
"xyecoc",
"XyeTa",
"xyeta",
"xyeta",
"XyeTa",
"xyevo",
"xyi",
"xyi",
"xyilo",
"XyJI9I",
"XyJIu",
"xyl9",
"xyli",
"xyli",
"xylu",
"XYu",
"xyu",
"xyu",
"xyuH9I",
"XyuJIO",
"Xyulo",
"xyumAN",
"ye6ok",
"Yeban",
"yeBaN",
"Yeban",
"yeBaN",
"yeBaneL|",
"yebaneLL",
"yebok",
"yPod",
"ypogbI",
"zadrot",
"zaeb",
"zaebal",
"zaibal",
"zaibali",
"zalupa",
"zhopy",
"zoofil",
"zopa",
"zsuka",
"/\o/\",
"lol",
"LoL",
"Lol",
"l0l",
"L0L",
"e6atb",
"eb",
"pizd",
"bla",
"hui",
"huy",
"hu",
"xy",
"lox",
"loh",
"6/la",
"/\ox",
"/7u3D",
"3ae6",
"6/\9",
"6JI9",
"bl9",
"bla",
"COCu",
"cuka",
"cy4",
"Cyk",
"loh",
"losh",
"lox",
"mudak",
"nu3DA",
"nu3dec",
"pidor",
"pidr",
"piz",
"nax",
"suka",
"syca",
"syka",
"rand",
"cyk",
"fuck"
}

public client_putinserver(id)
{
    set_task(20.0, "dispLogo", id)
}

public dispLogo(id)
{
    new name[32], userip[16]
    get_user_name(id, name, 31)
    get_user_ip(id, userip, 15, 1)
    set_hudmessage(0, 100, 200, 0.05, 0.40, 2, 0.1, 4.0, 0.02, 0.02, 2)
    show_hudmessage(id, "nPuBeT %s", name, userip)
    set_hudmessage(140, 0, 0, 0.05, 0.42, 2, 0.1, 4.0, 0.02, 0.02, 3)
    show_hudmessage(id, "Ha cepBepe yctaHoBJ|eHa AHTuMAT 3awuTa!")
}

new g_Antimat

public plugin_init()
{
    register_plugin("Antimat", "1.5", "Mr.Dmitry")

    g_Antimat = register_cvar("antimat_enabled", "1")
    register_cvar("antimat_money1","6000")
    register_cvar("antimat_money2","16000")
    register_clcmd("say", "Say")
    register_clcmd("say_team", "Say")
}

public client_connect(id){
new name[32], userip[16]
get_user_name(id,name,31)
get_user_ip(id,userip,15,1)    
g_Warned[id] = 0
for (new i = 0; i < MATWORDS; i++){
       new pos = containi(name,g_MatWords[i])
       if (pos != -1)
       {
             client_print(0,print_chat,"** %s (%s) 6bIJI oTKJII04eH! MaTepLLIuHHoe uM9! **", name, userip)
client_cmd(id,"echo ** 3anpeLLjeHbI MaTbI B HuKax! **; disconnect")
        return PLUGIN_HANDLED
        }
       }
return PLUGIN_CONTINUE
}

public client_infochanged(id)
{
if (is_user_connected(id)){
                new newname[32], oldname[32]
                get_user_info(id, "name", newname,31)
                get_user_name(id,oldname,31)
                if (!equal(oldname,newname))
                {
                for (new i = 0; i < MATWORDS; i++){
                new pos = containi(newname,g_MatWords[i])
                if (pos != -1)
                {
                              client_cmd(id,"echo ** 3anpeLLjeHbI MaTbI B HuKax! **")
                              set_user_info(id,"name",oldname)
                            }
                }
  }
}
return PLUGIN_HANDLED
}

public Say(id)
{

    if (!get_pcvar_num(g_Antimat))
    return PLUGIN_HANDLED
    
    new Text[128] // Should be enough
    read_args(Text, 127)
    new money1 = get_cvar_num("antimat_money1")
    new money2 = get_cvar_num("antimat_money2")
    new my_money
    new len
    new cmd[10]
    read_argv(0,cmd,9)
    
    for (new i = 0; i < MATWORDS; i++)
    {
        new pos = containi(Text,g_MatWords[i])
       if (pos != -1)
       {
         len=strlen(Text)
         replace(Text, len, g_MatWords[i], "*" )
        
         engclient_cmd(id, cmd, Text)
        
        
          g_Warned[id] += 1
            if (g_Warned[id] == 1){
                client_print(id, print_chat, "[Antimat] Ha cpBepe 3anPeLLjeH maT")
            }
            
           else if (g_Warned[id] == 2){
              my_money = cs_get_user_money(id)
              if (my_money>=money1)
                 cs_set_user_money(id, (my_money-money1), 1)
               else
                 cs_set_user_money(id, 0, 1)  
                client_print(id, print_chat, "[Antimat] BToPoe nPeDYnPe}|{DeHuE")
            }
            
           else if (g_Warned[id] == 3){
             my_money = cs_get_user_money(id)
              if (my_money>=money2)
                 cs_set_user_money(id, (my_money-money2), 1)
               else
                 cs_set_user_money(id, 0, 1)  
            client_print(id, print_chat, "[Antimat] ETO nocJIedHee nPeDynPe}|{DeHuEE")
            }
            
           else if (g_Warned[id] == 4)
            {  
                new name[32], ip[32], authid[32]
                get_user_name(id, name, 31)
                get_user_ip(id, ip, 31, 1)
                get_user_authid(id, authid, 31)

                
                server_cmd("amx_gag #%d ", get_user_userid(id))

                set_hudmessage(0, 100, 200, 0.05, 0.70, 0, 6.0, 4.0)
                show_hudmessage( 0, "[Antimat] %s 4aT 6bIJI 3a6JIokuPoBaH !", name)
            }
        }
    }
    return PLUGIN_CONTINUE
}
}


Плагин выдает одно предупреждение и отнимает 5к на второе нарушение дает предупреждение и отнимает все деньги на третье полностью блокирует чат на 10 минут. При смени ника на матерный отнимает 5к и дает предупреждение и меняет ник на предыдущий. при коннекти на сервер с матерным ником не пускает на сервер. Понимаю что все это уже давно реализовано, но я делаю чисто для себя )) Так что вопросы с 1 сообщения актуальны

Отредактировал: Mr.Dmitry, - 30.3.2011, 15:03
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 29.3.2011, 20:14
Сообщение #3


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

зачем все эти заморочки с банами и киками, AMXBANS? сделайте просто плагин, чтобы маты,которые пишет плеер видел тока он,а в общий чат они не попадали..и всё.. это никак не критика, просто предложение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 29.3.2011, 20:32
Сообщение #4


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Цитата(scurra @ 30.3.2011, 0:14) *
зачем все эти заморочки с банами и киками, AMXBANS? сделайте просто плагин, чтобы маты,которые пишет плеер видел тока он,а в общий чат они не попадали..и всё.. это никак не критика, просто предложение

Ну и я с банами не заморачивался, его же не банит )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 29.3.2011, 22:24
Сообщение #5


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

С кол-во матов в словаре разобрался

Появился другой вопрос, есть ли какая то альтернатива gagip? Чтоб был гаг на время
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 30.3.2011, 11:45
Сообщение #6


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Собственно все сделал, осталось только заменить мат на звездочку. команда replace выдает ошибку

Цитата
replace buffer not big enough (6)=1)


делаю так:



Код
for (new i = 0; i < MATWORDS; i++)
    {
        new pos = containi(Text,g_MatWords[i])
       if (pos != -1)
       {
        replace(Text, pos, g_MatWords[i], "*" )
...



в MATWORDS массив матерных слов.


Помощи в коде в принципе не прошу(хотя было бы не плохо :biggrin: ) Подскажите в каком направлении рыть, почему не работает replace? Вить как раз эта функция заменяет слова. Или дайте уже готовый плагин в котором осуществлена замена слова на другое

Отредактировал: Mr.Dmitry, - 30.3.2011, 11:46
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 30.3.2011, 12:37
Сообщение #7


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

Цитата(Mr.Dmitry @ 30.3.2011, 12:45) *
в MATWORDS массив матерных слов.


или количество матерных слов?

ты б расписал все переменные в приведённом кусае кода.. что такое Text, g_MatWords?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 30.3.2011, 13:17
Сообщение #8


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

код
Код
[quote]#define MATWORDS 559
new g_MatWords[MATWORDS][] = // DON'T DO ANYTHING HERE!
{
"e6",
"e6",
"eb",
"blya",
"yob",
"huy",
"xyu",
"xye",
"huj",    
"hui",    
"xui"
...
public plugin_init()
{
register_clcmd("say", "Say")
    register_clcmd("say_team", "Say")
}
...
public Say(id)
{
...
new Text[128]
read_args(Text, 127)
for (new i = 0; i < MATWORDS; i++)
    {
        new pos = containi(Text,g_MatWords[i])
       if (pos != -1)
       {
        replace(Text, pos, g_MatWords[i], "*" )
...
MATWORDS - количество слов
Text - сообщение в чате
g_MatWords - массив слов

Привел не весь код а только не обходимую часть, весь код можно посмотреть в моем 2 сообщение.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 30.3.2011, 13:44
Сообщение #9


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

replace ( text[], len, const what[], const with[] )

replace(Text, pos, g_MatWords[i], "*" )

второй параметр должен быть длинна первого, а не позиция вхождения матерного слова...не знаю связано ли это с ошибкой,но так он вобще ничего не найдёт у тебя

"Собственно все сделал, осталось только заменить мат на звездочку. команда replace выдает ошибку" в процессе компиляции или в еррор-логах?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 30.3.2011, 13:58
Сообщение #10


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Код
      new = len
    for (new i = 0; i < MATWORDS; i++)
    {
        new pos = containi(Text,g_MatWords[i])
       if (pos != -1)
       {
         len=strlen(Text)
         replace(Text, len, g_MatWords[i], "*" )


Не каких ошибок не при компиляции не в самой игре нет, но слова не заменяет (

Цитата(scurra @ 30.3.2011, 17:44) *
"Собственно все сделал, осталось только заменить мат на звездочку. команда replace выдает ошибку" в процессе компиляции или в еррор-логах?

Ошибка была в логах сервера

Отредактировал: Mr.Dmitry, - 30.3.2011, 14:00
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 30.3.2011, 14:03
Сообщение #11


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

"Ошибка была в логах сервера" -я протестил - ошибка была как раз изза того,что не была указана длина правильно

Код
#include <amxmodx>

public plugin_init()
{
    register_plugin("replace","1.0","scurra");
    new msg[32]
    format(msg,31,"eroorti kfmfgn gjg xyu")
    new len = strlen(msg)
    replace(msg,len,"xyu","*")
    log_to_file("111.log",msg)
}


этот код всё норм меняет... теперь надо смотреть ,что там у тебя
выведи в лог текст сообщения, слово из словаря и длину сообщения... надо глянуть
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 30.3.2011, 14:30
Сообщение #12


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Цитата
L 03/30/2011 - 18:28:49: Log file started (file

"cstrike\addons\amxmodx\logs\111.log") (game "cstrike") (amx

"1.8.1.3746")
L 03/30/2011 - 18:28:49: "privet *"
L 03/30/2011 - 18:28:49: mudak
L 03/30/2011 - 18:28:49: 12



Странно что в логах поменялось а в чате нет (( Я так понимаю менять слово я меняю, но как теперь изменёное слово вывести в чат?

Отредактировал: Mr.Dmitry, - 30.3.2011, 14:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 30.3.2011, 14:38
Сообщение #13


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

а где в твоём коде вывод в чат?

пробуй так в конце функции
Код
    new cmd[10]
    read_argv(0,cmd,9)
    engclient_cmd(id,cmd,Text)
    return PLUGIN_HANDLED
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 30.3.2011, 14:56
Сообщение #14


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Цитата(scurra @ 30.3.2011, 18:38) *
а где в твоём коде вывод в чат?

пробуй так в конце функции
Код
    new cmd[10]
    read_argv(0,cmd,9)
    engclient_cmd(id,cmd,Text)
    return PLUGIN_HANDLED

ОООООО, спасибки огромные, теперь появилась другая проблема, матерное слово заменяется на звездочку, но например в чате такое сообщение

Цитата
Privet mudak ti dolbaniy shkolota


Должны менятся слова mudak и dolbaniy на звездочку но меняются только долбаный. В принципе понимаю что нужно организовывать цикл по всему тексту сообщения находить в нем все вхождения g_MatWords[i] и переделывать на *. Но как такое осуществляется в pawn? Цикл for?

Отредактировал: Mr.Dmitry, - 30.3.2011, 14:56
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 30.3.2011, 15:00
Сообщение #15


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

обнови пост с полным кодом
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 30.3.2011, 15:03
Сообщение #16


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Цитата(scurra @ 30.3.2011, 19:00) *
обнови пост с полным кодом

готово
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 30.3.2011, 15:07
Сообщение #17


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

Код
engclient_cmd(id, cmd, Text)

эта строка выводит в чат сообщение...это у тебя происходит после первой замены
поставь её перед

Код
return PLUGIN_HANDLED


в функции Say()
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 30.3.2011, 15:14
Сообщение #18


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Цитата(scurra @ 30.3.2011, 19:07) *
Код
engclient_cmd(id, cmd, Text)

эта строка выводит в чат сообщение...это у тебя происходит после первой замены
поставь её перед

Код
return PLUGIN_HANDLED


в функции Say()

Не понял как нужно сделать
так
Код
return PLUGIN_HANDLED
engclient_cmd(id, cmd, Text)

или
Код
engclient_cmd(id, cmd, Text)
return PLUGIN_HANDLED

так

попробовал оба варианта

при первом варианте, в чат вообще не попадает сообщение содержащее запрещенное слово

При втором варианте не выполняется участок кода идущий после return PLUGIN_HANDLED. При этом заменяется только последнее вхождение запрещенного слова
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя scurra
сообщение 30.3.2011, 15:27
Сообщение #19


Стаж: 17 лет

Сообщений: 458
Благодарностей: 141
Полезность: 707

Меценат Меценат

пробуй так
Код
public Say(id)
{

    if (!get_pcvar_num(g_Antimat))
    return PLUGIN_CONTINUE
    
    new Text[128] // Should be enough
    read_args(Text, 127)
    new money1 = get_cvar_num("antimat_money1")
    new money2 = get_cvar_num("antimat_money2")
    new my_money
    new len = 0
    new alarm = 0
    
    for (new i = 0; i < MATWORDS; i++)
    {
        new pos = containi(Text,g_MatWords[i])
        if (pos != -1)
        {
            len = strlen(Text)
            replace(Text, len, g_MatWords[i], "*" )
            alarm = 1
        }
    }
    if ( alarm == 1 )
    {
        g_Warned[id] += 1
        if (g_Warned[id] == 1)
        {
            client_print(id, print_chat, "[Antimat] Ha cpBepe 3anPeLLjeH maT")
        }
            
        else if (g_Warned[id] == 2)
        {
            my_money = cs_get_user_money(id)
            if (my_money>=money1)
                cs_set_user_money(id, (my_money-money1), 1)
            else
                cs_set_user_money(id, 0, 1)  
            client_print(id, print_chat, "[Antimat] BToPoe nPeDYnPe}|{DeHuE")
        }
            
        else if (g_Warned[id] == 3)
        {
            my_money = cs_get_user_money(id)
            if (my_money>=money2)
                cs_set_user_money(id, (my_money-money2), 1)
            else
                cs_set_user_money(id, 0, 1)  
            client_print(id, print_chat, "[Antimat] ETO nocJIedHee nPeDynPe}|{DeHuEE")
        }
            
        else if (g_Warned[id] == 4)
        {  
            new name[32], ip[32], authid[32]
            get_user_name(id, name, 31)
            get_user_ip(id, ip, 31, 1)
            get_user_authid(id, authid, 31)

                
            server_cmd("amx_gag #%d ", get_user_userid(id))

            set_hudmessage(0, 100, 200, 0.05, 0.70, 0, 6.0, 4.0)
            show_hudmessage( 0, "[Antimat] %s 4aT 6bIJI 3a6JIokuPoBaH !", name)
        }
    }
    new cmd[10]
    read_argv(0,cmd,9)
    engclient_cmd(id, cmd, Text)
    return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mr.Dmitry
сообщение 30.3.2011, 16:28
Сообщение #20


Стаж: 19 лет

Сообщений: 3992
Благодарностей: 853
Полезность: 463

Цитата(scurra @ 30.3.2011, 19:27) *
пробуй так
Код
public Say(id)
{

    if (!get_pcvar_num(g_Antimat))
    return PLUGIN_CONTINUE
    
    new Text[128] // Should be enough
    read_args(Text, 127)
    new money1 = get_cvar_num("antimat_money1")
    new money2 = get_cvar_num("antimat_money2")
    new my_money
    new len = 0
    new alarm = 0
    
    for (new i = 0; i < MATWORDS; i++)
    {
        new pos = containi(Text,g_MatWords[i])
        if (pos != -1)
        {
            len = strlen(Text)
            replace(Text, len, g_MatWords[i], "*" )
            alarm = 1
        }
    }
    if ( alarm == 1 )
    {
        g_Warned[id] += 1
        if (g_Warned[id] == 1)
        {
            client_print(id, print_chat, "[Antimat] Ha cpBepe 3anPeLLjeH maT")
        }
            
        else if (g_Warned[id] == 2)
        {
            my_money = cs_get_user_money(id)
            if (my_money>=money1)
                cs_set_user_money(id, (my_money-money1), 1)
            else
                cs_set_user_money(id, 0, 1)  
            client_print(id, print_chat, "[Antimat] BToPoe nPeDYnPe}|{DeHuE")
        }
            
        else if (g_Warned[id] == 3)
        {
            my_money = cs_get_user_money(id)
            if (my_money>=money2)
                cs_set_user_money(id, (my_money-money2), 1)
            else
                cs_set_user_money(id, 0, 1)  
            client_print(id, print_chat, "[Antimat] ETO nocJIedHee nPeDynPe}|{DeHuEE")
        }
            
        else if (g_Warned[id] == 4)
        {  
            new name[32], ip[32], authid[32]
            get_user_name(id, name, 31)
            get_user_ip(id, ip, 31, 1)
            get_user_authid(id, authid, 31)

                
            server_cmd("amx_gag #%d ", get_user_userid(id))

            set_hudmessage(0, 100, 200, 0.05, 0.70, 0, 6.0, 4.0)
            show_hudmessage( 0, "[Antimat] %s 4aT 6bIJI 3a6JIokuPoBaH !", name)
        }
    }
    new cmd[10]
    read_argv(0,cmd,9)
    engclient_cmd(id, cmd, Text)
    return PLUGIN_HANDLED
}

Спасибо!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: