ooops sorry was late, i tested it using myself in a line while not connected, and forgot to correct it to yours when i pasted it.
((%guest.warned. $+ $nick) != 1) << thats badly formated, should be >> (%guest.warned. [ $+ [ $me ] ] == 1)
should have read
((%guest.warned. $+ $nick) != 1) << thats badly formated, should be >> (%guest.warned. [ $+ [ $nick ] ] != 1)
I was also wrong in believing the error was in those $identifiers
The reason your one doesnt work is while you can set a value using /SET %guest.warned. $+ $nick 1 you can not access it in the same way you must use %guest.warned. [ $+ [ $nick ] ] or $($+(%,guest.warned.,$nick),2).
The result of using this wrong construct is as follows
if ($nick !isop $chan) && ((%guest.warned. $+ $nick) != 1) { $nick is say FRED, $chan is say #blah, %guest.warned. holds no value so evaluates to nothing
if (FRED !isop #blah) && (( $+ FRED) != 1) { also $+ joins the left and the right sides together so you get (FRED which superseeds ( as a bracket
if (FRED !isop #blah) && ( (FRED ) != 1) { If 1st condition is $true and the 2nd condition is always $true you end up with...
if ( $true ) && ( $true) != 1) { two true conditions well trigger the folowing command which is != 1) this is an unknown internal mirc command = with a dont use alises ! on the front so is sent to the irc server to see if its a command there, this replies with :Unknown command you can test this yourself using /!= 1) {
Using the correct construct like so gets...
if ($nick !isop $chan) && (%guest.warned. [ $+ [ $nick ] ] != 1) {
if (FRED !isop #blah) && (%guest.warned.FRED != 1) {
if (FRED !isop #blah) && ( $null != 1) {
if ( $true ) && ( $true ) {
^ this was the intended action.
I still beleieve there is some errors in your script (to do with multi user processing, and how timers treat |), but give it a try just using (%guest.warned. [ $+ [ $me ] ] != 1) see if it suits your needs.