Малко помощ с аддони

DownFall

Registered
Здравейте,

Опитвам се сам да напиша бот, но не разбирам достатъчно, затова искам да попитам:

1. Как да направя файл, от който да се дърпа информацията, след което да се банва потребителя. Искам да използвам файлове, за да кажа на скрипта, кои са така наречените "лоши думички", а отделно и за autokick мога да го използвам, като банва всички IP адреси посочени в друг файл..

2. Трябва ми flood защита :)

3. След като напиша /whois nick, ми излиза следното
Код:
nick is D2XP@1.2.3.4 * PvPGN user
user on  #channel
End of /WHOIS list

Трябва ми след като напиша например !ip nick, бота да ми извежда IP адреса на nick, който спрямо примера по-горе е 1.2.3.4.

Искам само да уточня, че бота не е предназначен за UniBG. Мрежата, в която ще го пусна е по-различна и няма CS и seenserv например..

Благодаря предварително на отзовалите се (дано да има такива) :)
 
DownFall каза:
1. Как да направя файл, от който да се дърпа информацията, след което да се банва потребителя. Искам да използвам файлове, за да кажа на скрипта, кои са така наречените "лоши думички", а отделно и за autokick мога да го използвам, като банва всички IP адреси посочени в друг файл..
Първо си правиш един файл , в моя случай съм го кръстил akick.dat и после си добавяш самия скрипт
Код:
on *:join:#:{
  if ($read(akick.dat,w,$address($nick,2))) {
    .msg $chan Шъ тъ банна :-) 
  }
}
Примерни записи в akick.dat
*!*@1.2.3.4
*!*@5.6.7.7
П.П. Когато ги записваш във файла ,ползвай
Код:
$address($nick,2)
А за лоши думи може да използваш нещо подобно
on *:text:*:#:{
if ((badword1 isin $1-) || (badword2 isin $1-) || (badword3 isin $1-)) { msg $chan Внимавай с езика $nick :mad: }
}

DownFall каза:
2. Трябва ми flood защита :)
Това ми се струва вече играчка ;)

DownFall каза:
3. След като напиша /whois nick, ми излиза следното
Код:
nick is D2XP@1.2.3.4 * PvPGN user
user on  #channel
End of /WHOIS list

Трябва ми след като напиша например !ip nick, бота да ми извежда IP адреса на nick, който спрямо примера по-горе е 1.2.3.4.

Ето ти едно скриптче
Код:
on *:text:!ip*:#:{ 
  if ($2) { .enable #ipcheck | set %chan $chan | whois $2 }
} 
#ipcheck off
RAW 311:*:*:{ haltdef | msg %chan $1 -> $4 | unset %chan | unset %nick | .disable #ipcheck }
#ipcheck end
 
Лошите думички работят :) Има ли го варианта обаче да се направи при първо нарушение да предупреждава, при второ да киква, при трето да банва? :)

Също така в бота добавям
Код:
500:*!*@1.2.3.4
500:*username*@*

Има ли начин да се направи тези да се пропускат?

Кодовете за /whois-а и за akick не работят :(
 
Моя грешка, работят кодовете :)

Ако може към whois-а едно допълнение, когато изпише No such nick/channel да връща съобщение, че потребителя не е онлайн :)

Също и за лошите думички, това което описах в предното си мнение.. При първо нарушение да предупреждава, при второ да киква, а при трето да банва за определен период от време, след което записите да се нулират и всичко да започне от начало :) Сървъра премахва временните банове автоматично, така че не е нужно бота да смята кога трябва да се премахне :)

Благодая предварително.. :)
 
Заповядай ,малко преформени ;)
Код:
on *:text:!ip*:#:{
  if ($2) { .enable #ipcheck | set %chan $chan | whois $2 }
}
#ipcheck off
RAW 311:*:*:{ haltdef | msg %chan $2 -> $4 | unset %chan | unset %nick | .disable #ipcheck }
RAW 401:*:*:{ haltdef | msg %chan $2 не е на линия в момента | unset %chan | unset %nick | .disable #ipcheck }
#ipcheck end
Код:
alias -l sumwarn { return $readini(addons/web-tourist.mrc,warn,$nick) }
alias -l calcwarn { return $readini(addons/web-tourist.mrc,time,$nick) }
on *:text:*:#:{
  if ((badword1 isin $1-) || (badword2 isin $1-) || (badword3 isin $1-)) { 
    if ((!$sumwarn($nick)) || ($calcwarn < $ctime)) { 
      writeini addons/web-tourist.mrc warn $nick 1
      writeini addons/web-tourist.mrc time $nick $calc($ctime + 10)
      msg $chan Първо предупреждение $nick
    }
    else {
      if (($sumwarn($nick) == 1) || ($sumwarn($nick) == 2)) {
        writeini addons/web-tourist.mrc warn $nick $calc($sumwarn + 1)
        writeini addons/web-tourist.mrc time $nick $calc($ctime + 10)
        msg $chan Внимавай с езика $nick :@ ( $sumwarn предупреждения )

      }
      else { 
        remini addons/web-tourist.mrc warn $nick
        remini addons/web-tourist.mrc time $nick
        msg $chan Казах ли ти да внимаваш с думите $nick :@ :@ :@
        msg $chan и следва бан за тебе 
      }
    } 
  }
}
Промени си го както искаш ,понеже нямам много време.Значи набързо по-важното ,което може да оправиш. Ако искаш на 3-тото предупреждение (а не след третото) предупреждение , реда
if (($sumwarn($nick) == 1) || ($sumwarn($nick) == 2)) {
го правиш на
if (($sumwarn($nick) == 1)) {
Оправи си и директорията до адона (в моя случай това беше addons/web-tourist.mrc) , задай точния път до адона ,защото и там се записват данните за потребителите.
Направил съм го на 10 секунди , в смисъл след казаната лоша дума , добавя 10 секунди , и ако през това време каже още някоя лоша дума добавя предупреждение и/или банва направо. Това може да оправиш от
writeini addons/web-tourist.mrc time $nick $calc($ctime + 10)
Друго не се сещам , ако има нещо неясно питай :)
 
За нищо ;)
Много се радвам ,че все още има "патриоти" в mIRC :D
 
Еми, то имам игрално сървърче, към което има опция за connect от mirc и ми трябваше бота, за да стягам играчите, че много взеха да си позволяват, затова и уточних, че сървъра е по-различен от този на унибг и стандартните ботове нещо не можеха да се разберат с него :D

Само Flood protect tcl остава да си намеря и вариант как дадените от теб кодове да не важат за потребителите добавени в user lista на бота :)

ПП. А има ли начин да банва и някой, който дава някакъв IP адрес?
 
Опитах се малко да тунинговам лошите думички, така че да черпи информацията от отделен файл, че е по-удобно :)

Код:
alias -l sumwarn { return $readini(sources/badword.mrc,warn,$nick) }
alias -l calcwarn { return $readini(sources/badword.mrc,time,$nick) }
on *:text:*:#: {
if ($readini(sources\dumichki.mrc,badwords,$1-)) { 

if ((!$sumwarn($nick)) || ($calcwarn < $ctime)) {
writeini sources/badword.mrc warn $nick 1 
writeini sources/badword.mrc time $nick $calc($ctime + 3600)
msg $chan $nick $+ , psuwnite i obidite w chata sa strogo zabraneni. Ako smqtash, che towa e greshka, pishi ni na ***@***.** | msg $chan Obidna duma e zasechena w slednoto izrechenie: $1- $+ .
}

else if ($sumwarn($nick) == 1) {
writeini sources/badword.mrc warn $nick 2
writeini sources/badword.mrc time $nick $calc($ctime + 3600)
msg $chan $nick $+ , psuwnite i obidite w chata sa strogo zabraneni. Towa e twoeto $sumwarn prowinenie w ramkite na 1 chas. Ako smqtash, che towa e greshka, pishi ni na ***@***.** | msg $chan Obidna duma e zasechena w slednoto izrechenie: $1- $+ .
}

else if ($sumwarn($nick) == 2) {
writeini sources/badword.mrc warn $nick 3
writeini sources/badword.mrc time $nick $calc($ctime + 3600)
msg $chan $nick $+ , psuwnite i obidite w chata sa strogo zabraneni. Towa e twoeto $sumwarn prowinenie w ramkite na 1 chas. Ako smqtash, che towa e greshka, pishi ni na ***@***.** | msg $chan Obidna duma e zasechena w slednoto izrechenie: $1- $+ . 
kick $chan $nick psuwnite i obidite w chata sa storgo zabraneni
}

else if ($sumwarn($nick) == 3) {
remini sources/badword.mrc warn $nick 
remini sources/badword.mrc time $nick 
msg $chan $nick $+ , dobawen si w auto kick lista na bota i poweche nqma da mojesh da wlizash w tozi channel. Ako smqtash, che towa e greshka, pishi na ***@***.**  | .msg $chan Obidna duma e zasechena w slednoto izrechenie: $1- $+ . | .notice $nick $nick $+ , dobawen si w auto kick lista na bota i poweche nqma da mojesh da wlizash w tozi channel. Ako smqtash, che towa e greshka, pishi na ***@***.** | .notice $nick Obidna duma e zasechena w slednoto izrechenie: $1- $+ .  | .kick $chan $nick Auto Kick
writeini akick.dat ip $address($nick,2) $ctime | .writeini akick.dat account $nick $ctime
}

}
}

Примерно в badword.mrc съм задал думичката "gosho". Всичко е ок, ако напиша gosho в канала ме предупреждава, записва във файла, както си му е реда :)

Ако напиша dasjdoiasjdigoshoasdiasda не предприема нищо - точно така исках да се получи, тъй като стават много недоразумения иначе.

Проблема е, че ако напиша asdas dsa dsa sa sa gosho eiwejgweg sdas das пак няма да ме банне, това вече е проблем, с който не можах да се оправя..

Help me please :)
 
Модни си го по този начин
Код:
on *:text:*:#:{
  var %words $gettok($1-,0,32)
  var %inc 1
  while (%inc <= %words) {
    if ($read(database/badwords.txt,w,$gettok($1-,%inc,32))) {
      .msg $chan Засечена обидна дума $gettok($1-,%inc,32)
    }
    inc %inc
  }
}

П.П. Мързеше ме отново да го пиша или променям стария код ,и затова направо написах този. Вкарваш думите в някакъв файл (в моя случай database/badwords.txt във обикновен формат ,записвани с write (ако ще ги записваш)
Код:
badword1
badword2
badword3
...
 
Абе имам един въпрос :) Защо просто не си пуснеш един Бот в канала ама не от тия малоумните скриптове ами говоря за Eggdrop от типа, които пазят всеки от големите канали ?:) като гледам колко време си отделил да търсиш тези кодове тук........ Бота прави всичко това на куп + още 100 хиляди неща стига да искаш :) поне преди 7-8 години беше така когато аз имах 8 такива накуп и всичките бяха в ботнет вързани. Самия бот си се инсталира стартираш го той си върви на background и не хаби кои знае колко ресурс слагаш му няколко базови TCL-i (аддони), за да те слуша и всичко е типтоп :)
 
Защото и по-горе го бях споменал.. :) Не става въпрос за UniBG или някоя подобна мрежа, тази за която ми трябва е доста различна и повечето ботове са несъвместими..

Replace, кода си работи, прави точно това което исках, но нарочно изчаках малко преди да коментирам, за да видя дали ще даде бъгове и ето, че се намери 1 :) Ако се напише * (звездичка) бота го отчита като обида, без значение, че не е зададено в файла.
 
Хм ... не ми се експериментира ,затова стрелям направо
on *:text:*:#:{
var %words $gettok($1-,0,32)
var %inc 1
while (%inc <= %words) {
if ($gettok($1-,%inc,32) != $chr(42) && $read(database/badwords.txt,w,$gettok($1-,%inc,32))) {
.msg $chan Засечена обидна дума $gettok($1-,%inc,32)
}
inc %inc
}
}
 

Горе