mIRC Homepage
Posted By: goth80 Query Response (variable dependent) - 23/07/05 02:53 PM
Intention:
when pm arrives, send response based on channel status. Ops/Voices get "if" msg, others get the "else".

My code is broke... it sends the else msg to Ops/Voices and Others. How can I fix it.

Code:

 on ^*:open:?:*: {
  if ($nick isop $chan) || ($nick isvoice $chan) { msg $nick sup7 $nick }
  else { 
    msg $nick Do not pm me, didnt you read the topic?
  }
}
 
Posted By: SladeKraven Re: Query Response (variable dependent) - 23/07/05 03:07 PM
$chan wont have a value (I don't think), as it's coming from a Private Message.

You could very well do:

if ($nick isop #ChannelName) { ... }

-Andy
Posted By: goth80 Re: Query Response (variable dependent) - 23/07/05 04:06 PM
Quote:
$chan wont have a value (I don't think), as it's coming from a Private Message.

You could very well do:

if ($nick isop #ChannelName) { ... }

-Andy


Great Andy, works beautifully., Good looking out.

Another thing..

Trying to stop and start it manually. where am I going wrong

Code:
 
alias queryfilter {
  if ($1 == on) { .enable #queryrep | amsg starting query filter }
  if ($1 == off) { .disable #queryrep | amsg stopping query filter }
}

#queryfilter on

on ^*:open:?:*: {
  if ($nick isop #channel name) || ($nick isvoice #channel name) { msg $nick sup7 $nick }
  else { 
    msg $nick Do not pm me didnt you read the topic?
  }
}

 
Posted By: SladeKraven Re: Query Response (variable dependent) - 23/07/05 04:24 PM
Hey dude, slight alteration to you code.

Code:
alias queryfilter { 
  $iif($group(#queryfilter) == off,.enable,.disable) #queryfilter
  $iif($group(#queryfilter) == off,amsg stopping query filter, amsg starting query filter)
}

#queryfilter off
on ^*:open:?:*: {
  if ($nick isop #channel name) || ($nick isvoice #channelname) { msg $nick sup7 $nick }  
  else { 
    msg $nick Do not pm me didnt you read the topic?  
  }
}
#queryfilter end


Just simple type:

/queryfilter

If it's turned on, it turns it off. If it's turned off, it turns on. You wont need to keep typing /queryfilter on and /queryfilter off.

-Andy
Posted By: goth80 Re: Query Response (variable dependent) - 23/07/05 04:32 PM
Most decent!! Sheer genius. Great work SladeKraven (aka Andy)
Posted By: SladeKraven Re: Query Response (variable dependent) - 23/07/05 04:36 PM
Have a good one buddy, if you find any problems with the code or need help again all of us here try our best to help. smile

-Andy
Posted By: goth80 Re: Query Response (variable dependent) - 24/07/05 12:54 AM
I made additions to the code originally posted. I added a hash table to store ip address and a numeral for a person whom pm'ed me, if it was the first pm they'll get a warning, if the second they get kicked/ban.

The script appears to work perfectly, though I'm stuck on trying to expand on it further.

I wish to:
increment the number of times a user pms me
kick/ban dependent on number of times settable by me
kick/ban for a span of time. 1min to Infinity
read from text file for nics that are not Ops or Voices but are approved to pm me

Any direction you could provide would be invaluable. I thank you for your indulgence.

Raja Bahm


*************** updated coding ***************

Code:
 
on *:start: {
  hmake qcount 10
}
alias queryfilter {
  $iif($group(#queryfilter) == off,.enable,.disable) #queryfilter
  $iif($group(#queryfilter) == off,notice stopping query filter, notice starting query filter)
}
#queryfilter off
on ^*:open:?:*: {
  if ($nick isop #ftres) || ($nick isvoice #ftres) { msg $nick sup7 $nick }

elseif ($me isop #ftres) && ($hget(qcount,$address($nick,2))) {
  .kick #ftres $nick Couldnt read... could ya.
   mode #ftres  +b $address($nick,2)
    }
else {
   hadd -m qcount $address($nick,2) 1
   msg $nick Don't msg ops/voices without permission. Repeat violators will be 4kicked/banned.
   timer -m 1 4000 msg $nick Did you get that?
}
}
#queryfilter end

on *:EXIT: {
  hsave -o qcount qcount.hsh
  hfree qcount
}

 
Posted By: RusselB Re: Query Response (variable dependent) - 24/07/05 01:49 AM
Give this a try...got a few extra things in as well
Code:
 on *:start: {
  hmake qcount 10
  if $exists(qcount.hsh) { .hload qcount qcount.hsh }
}
alias queryfilter {
  if (!$1) || ($1 != $group(#queryfilter).status) {
    $iif($group(#queryfilter) == off,.enable,.disable) #queryfilter
    echo -a $iif($group(#queryfilter) == off,stopping query filter,starting query filter)
  }
  else echo -a Query filter is $group(#queryfilter).status
}
menu * {
  queryfilter
  .on : queryfilter on
  .off : queryfilter off
}
menu nicklist {
  Query Approval
  .add : .approved add
  .del : .approved del
}
alias approved {
  if $1 == add {
    var %a = 1
    while %a <= $snick(#ftres,0) {
      .hadd -m qcount $+(Approved.,$snick(#ftres,%a)) $snick(#ftres,%a)
      inc %a
    }
  }
  elseif $1 == del {
    var %a = 1
    while %a <= $snick(#ftres,0) {
      hdel qcount $+(Approved.,$snick(#ftres,%a))
      inc %a
    }
  }
}

#queryfilter off
on ^*:open:?:*: {
  if ($nick isop #ftres) || ($nick isvoice #ftres) { msg $nick sup7 $nick }
  elseif ($me isop #ftres) && ($hget(qcount,$address($nick,3)) > 1 ) {
    .hinc -m qcount $address($nick,3)
    .ban -ku $+ $calc(60 * $hget(qcount,$address($nick,3))) $nick 3 Couldn't read... could ya
  }
  elseif $hget(qcount,$+(Approved.,$address($nick,3))) {
    .msg $nick $read(Approval.txt)
  }
  else {
    .hinc -m qcount $address($nick,3)
    .msg $nick Don't msg ops/voices without permission. Repeat violators will be 4kicked/banned.
    .timer 1 4 msg $nick Did you get that?
  }
}
#queryfilter end
on *:EXIT: {
  .hsave -o qcount qcount.hsh
}
on *:disconnect: {
  .hsave -o qcount qcount.hsh
}
 


Query filter can now be turned on/off using /queryfilter or via the menu option. If the filter is already on/off and you go to turn it on/off, it'll tell you that it's already on/off

combined kick & mode +b command lines into .ban line
removed -m from timer, as using a millisecond timer makes no sense for a 4 second timer....easier on resources also

kick/ban times are now dependent on the number of times kick/banned starting at 2 minutes and increasing by a minute each time

removed the hfree command in the ON EXIT, as the table would be freed automatically, and added a ON DISCONNECT event.

saved file is looked for on start, and if found, loaded into the hash table.
Posted By: goth80 Re: Query Response (variable dependent) - 24/07/05 02:06 AM
Sir RusslelB, I am in great debt to you for your direction and guidance. Not only have you steered me in the appropriate direction. You've sacrificed valuable time and personal resources in providing me with a clear explanation as to the methodology behind your implementation.

I commend you RussleB, your dedication, is a inspiration. I'll look through this code you've provided and hopefully I will garnish a greater level of understanding from it.

Again, I thank you.
Posted By: RusselB Re: Query Response (variable dependent) - 24/07/05 02:23 AM
I hope it works, and it wasn't that long ago that I was a newbie to mIRC programming. Good luck and don't hesitate to ask if you need clarification or repairs on something.
Posted By: goth80 Re: Query Response (variable dependent) - 24/07/05 01:44 PM
Okay, just finished initial tests of new implementation. Following problems were discovered:

1. A number of bugs (attributed to spacing problems) were introduced from copying and pasting from web page to text editor (textpad).

* Resolved by manually retyping entire script

2. Approved system is broke.
Although approved (checked hash and its in there) individual will still be warned not to pm me.

3. Kick on muliple pm is broke.
Repeated pms (closed win to trigger "on open" event) just got repeated warning. No kick or ban.

error msg:
/ban: invalid parameters (line 44, 001.mrc)
Code:
 [color:red]    .ban -ku $+ $calc(60 * $hget(qcount,$address($nick,3))) $nick 3 Couldn't read... could ya [/color]   


That is all I've noticed thus far, everything else seems to work appropriately.

Starting and stopping script via menu and command line works. And Ops/Voice getting "no hassle" and others recieive warning working also.
Posted By: RusselB Re: Query Response (variable dependent) - 24/07/05 06:30 PM
1) That's a problem with this forum board. Nothing I can do to correct it. Next time you might want to copy & paste one line at a time from the code.
2) Oops... stored the information in one format, then tried looking it up in a different format.
3) Oops...had the if/elseif/else statements in the wrong order
4) As far as I'm concerned that's a bug in the timer command. It doesn't like complicated calculations. work around put in place.

Code, with all known bugs corrected
Code:
 on *:start: {
  hmake qcount 10
  if $exists(qcount.hsh) { .hload qcount qcount.hsh }
}
alias queryfilter {
  if (!$1) || ($1 != $group(#queryfilter).status) {
    $iif($group(#queryfilter) == off,.enable,.disable) #queryfilter
    echo -a $iif($group(#queryfilter) == off,stopping query filter,starting query filter)
  }
  else echo -a Query filter is $group(#queryfilter).status}
}
menu * {
  queryfilter
  .on : queryfilter on
  .off : queryfilter off
}
menu nicklist {
  Query Approval  .add : .approved add
  .del : .approved del
}
alias approved {
  if $1 == add {
    var %a = 1
    while %a <= $snick(#ftres,0) {
      .hadd -m qcount $+(Approved.,$snick(#ftres,%a)) $snick(#ftres,%a)
      inc %a
    }
  }
  elseif $1 == del {
    var %a = 1
    while %a <= $snick(#ftres,0) {
      hdel qcount $+(Approved.,$snick(#ftres,%a))
      inc %a
    }
  }
}
#queryfilter off
on ^*:open:?:*: {
  if ($nick !isreg #ftres) { msg $nick sup7 $nick }
  elseif $hget(qcount,$+(Approved.,$nick)) == $nick {
    .msg $nick $read(Approval.txt)
  }
  elseif ($me isop #ftres) && ($hget(qcount,$address($nick,3)) > 1 ) {
    .hinc -m qcount $address($nick,3)
    var %ban = $calc(60 * $hget(qcount,$address($nick,3)))
    .ban -ku $+ %ban $nick 3 Couldn't read... could ya
  }
  else {
    .hinc -m qcount $address($nick,3)
    .msg $nick Don't msg ops/voices without permission. Repeat violators will be 4kicked/banned.
    .timer 1 4 msg $nick Did you get that?
  }
}
#queryfilter end
on *:EXIT: {
  .hsave -o qcount qcount.hsh
}
on *:disconnect: {
  .hsave -o qcount qcount.hsh
}
 
Posted By: goth80 Re: Query Response (variable dependent) - 24/07/05 07:12 PM
1. ban still generating errors:
/ban: invalid parameters (line 47, 002.mrc)
Code:
 [color:red].ban -ku $+ %ban $nick 3 Couldn't read... could ya[/color]   


Appoval system works fine.
All other aspects work fine.
Posted By: MikeChat Re: Query Response (variable dependent) - 24/07/05 07:19 PM
.ban -ku $+ %ban $nick 3 Couldn't read... could ya

doesn't that need a channel to ban from?
Posted By: goth80 Re: Query Response (variable dependent) - 24/07/05 07:26 PM
got it to actually ban by doing
Code:
.ban #ftres $address($nick,3) -ku $+ %ban $nick 3 Couldn't read... could ya  
wating to see if timer works

No timed ban.. its stays banned.
* Pinnys sets mode: +b *!*paulie@*.sf.comcastnet

And optimally it should be a kick and ban
Posted By: SladeKraven Re: Query Response (variable dependent) - 24/07/05 07:36 PM
ban $+(-ku,%ban) #ftres $nick 3 Couldn't read... could ya

-Andy
Posted By: RusselB Re: Query Response (variable dependent) - 24/07/05 07:36 PM
Change the ban command to read
Code:
 .ban -ku $+ %ban #ftres $nick 3 Couldn't read... could ya   
Posted By: goth80 Re: Query Response (variable dependent) - 24/07/05 08:09 PM
This has be a long and educational journey. I truly thank all that have been a part of it. RusselB and SladeKraven your expertise has been invaluable.

HOUSTON... We have NO problems!

Works beautifully, ban sets, then usets appropriate interval according to pm violations.

A great thanks... you guys truly rock.
© mIRC Discussion Forums