| View previous topic :: View next topic |
| Author |
Message |
LinkinPark Voice
Joined: 26 Apr 2011 Posts: 7 Location: Cambodia
|
Posted: Sun Dec 04, 2011 10:06 am Post subject: Needed help with !rep |
|
|
Can anyone edit the access to use this.. I was an op'ed but can not check !rep but voiced people can do it as well..
| Code: | ## Rep.tcl-v.1.1.0
## Author: Luminous
## Support: pm on egghelp.org
## This is a public script for voiced and opped users to add or remove reputation points to/from users. Its intended use is to keep track of positively and negatively contributing users, similar to forums with reputation systems. Points will be logged to the file "~/eggdrop/reps.txt". Note that everyone starts off at 0 or "neutral" points and does not show up as having reputation via !rep or !rep NICK until they reach negative or positive points. If points are removed from a user not in the file, they are automatically given -1. If rep is added to a user not in the file, they are automatically given 1. The plus/minus increments work normally from there unless the user reaches 0, or neutral, again.
## Commands
# All commands are public
# To add a reputation point to a user, use "NICK++"
# To remove a reputation point, use "NICK--"
# To view the reputation points of a specific user, use "!rep NICK"
# To view all reputation, use "!rep". A list will be noticed you slowly to avoid flooding.
# Set below the char you want to trigger the "rep" functions with:
set bchar "!"
## Code starts, edit beyond here at your own risk
bind pubm * * rep
proc rep {nick host hand chan text} {
global bchar
if {[regexp -nocase {^\S+\+\+$} $text] || [regexp -nocase {^\S+--$} $text] || [regexp "^${bchar}rep.*" $text]} {
if {![isvoice $nick $chan] && ![matchattr $hand |o $chan]} {
return
}
if {![file exists "reps.txt"]} {
close [open "reps.txt" w]
}
set fs [open "reps.txt"]
set data [split [read -nonewline $fs] \n]
close $fs
if {[regexp -nocase {^\S+\+\+$} $text]} {
set whom [join [lindex [split $text +] 0]]
if {[string equal -nocase "[string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} $whom]" "[string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} $nick]"]} {
putserv "NOTICE $nick :You can not rep yourself."
return
}
set match [lsearch $data "[string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} $whom] *"]
if {$match == -1} {
if {![llength $data]} {
set fs [open "reps.txt" w]
} else {
set fs [open "reps.txt" a]
}
puts $fs "$whom 1"
close $fs
putserv "PRIVMSG $chan :$whom now has 1 reputation point."
return 0
} else {
set line [lindex $data $match]
set rep [lindex $line 1]
incr rep
if {$rep == 0} {
set lines [lreplace $data $match $match]
} else {
set newline "$whom $rep"
set lines [lreplace $data $match $match $newline]
}
set fs [open "reps.txt" w]
puts $fs [join $lines "\n"]
close $fs
if {$rep == 0} {
putserv "PRIVMSG $chan :$whom now has neutral reputation points."
} elseif {$rep == -1} {
putserv "PRIVMSG $chan :$whom now has $rep reputation point."
} else {
putserv "PRIVMSG $chan :$whom now has $rep reputation points."
}
}
} elseif {[regexp -nocase {^\S+--$} $text]} {
set whom [join [lindex [split $text -] 0]]
set match [lsearch $data "[string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} $whom] *"]
if {$match == -1} {
if {![llength $data]} {
set fs [open "reps.txt" w]
} else {
set fs [open "reps.txt" a]
}
puts $fs "$whom -1"
close $fs
putserv "PRIVMSG $chan :$whom now has -1 reputation point."
return
}
set line [lindex $data $match]
set rep [lindex $line 1]
incr rep -1
set newline "$whom $rep"
if {$rep == 0} {
set lines [lreplace $data $match $match]
set check 0
} elseif {$rep == 1} {
set lines [lreplace $data $match $match $newline]
set check 1
} else {
set lines [lreplace $data $match $match $newline]
set check 2
}
set fs [open "reps.txt" w]
puts $fs [join $lines "\n"]
close $fs
if {$check == 0} {
putserv "PRIVMSG $chan :$whom now has neutral reputation points."
} elseif {$check == 1} {
putserv "PRIVMSG $chan :$whom now has 1 reputation point."
} else {
putserv "PRIVMSG $chan :$whom now has $rep reputation points."
}
} elseif {[string equal "${bchar}rep" $text]} {
if {![llength $data]} {
putserv "PRIVMSG $chan :No one currently has any reputation points."
return 0
}
putserv "NOTICE $nick : The reputation list is as follows:"
set fs [open "reps.txt"]
while {[gets $fs line] >= 0} {
set rep [join [lindex [split $line] 1]]
if {$rep == 1 || $rep == -1} {
puthelp "NOTICE $nick :[join [lindex [split $line] 0]] has $rep reputation point."
} else {
puthelp "NOTICE $nick :[join [lindex [split $line] 0]] has $rep reputation points."
}
}
puthelp "NOTICE $nick : End of reputation list"
close $fs
} elseif {[string match -nocase "${bchar}rep *" $text]} {
if {[llength [split $text]] != 2} {
return
}
set whom [string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} [join [lindex [split $text] end]]]
regsub -all {\s} $whom ""
set line [lsearch $data "$whom *"]
if {$line != -1} {
set line [lindex $data $line]
set whom [string map {"\\\]" "\]" "\\\[" "\[" "\\\{" "\{" "\\\}" "\}"} $whom]
if {[lindex [split $line] 1] == 1 || [lindex [split $line] 1] == -1} {
putserv "PRIVMSG $chan :$whom has [lindex [split $line] 1] reputation point."
} else {
putserv "PRIVMSG $chan :$whom has [lindex [split $line] 1] reputation points."
}
} else {
putserv "PRIVMSG $chan :$whom has no reputation points"
}
}
}
return
}
putlog " -rep.tcl loaded" |
Thank you for reading and helping this out..
Moderated: Changed the quote-tags to code-tags. Preserves the indenting of the code, and eases readability.
/NML_375 |
|
| Back to top |
|
 |
willyw Revered One
Joined: 15 Jan 2009 Posts: 1175
|
Posted: Sun Dec 04, 2011 12:03 pm Post subject: Re: Needed help with !rep |
|
|
| LinkinPark wrote: | Can anyone edit the access to use this.. I was an op'ed but can not check !rep but voiced people can do it as well..
|
I'm not 100% sure of what you are asking. But I think I may have the idea.
Find this line:
| Code: |
if {![isvoice $nick $chan] && ![matchattr $hand |o $chan]} {
|
and change it to this:
| Code: |
if {![isvoice $nick $chan] || ![isop $nick $chan]} {
|
Rehash, and see if that does what you want.
I have not tested it.
The idea is to have it work, if the user is EITHER voiced or op'd.
Here is reference for isvoice and isop:
http://www.eggheads.org/support/egghtml/1.6.20/tcl-commands.html
side note - see this line:
perhaps it is ok, and works fine as-is.
But it seems to me that it should be:
| Code: |
bind pubm - "* *" rep
|
Again, see above link for tcl-commands.doc for reference.
I hope this helps. |
|
| Back to top |
|
 |
LinkinPark Voice
Joined: 26 Apr 2011 Posts: 7 Location: Cambodia
|
Posted: Mon Dec 05, 2011 4:50 am Post subject: |
|
|
Hi willyw,
Thanks for understand .. You're right that what I meant.. sorry for my bad English.. but it still not working..
it's only work with voice'ed users to check !rep and nick++
for op'ed users can not check it.. |
|
| Back to top |
|
 |
willyw Revered One
Joined: 15 Jan 2009 Posts: 1175
|
Posted: Mon Dec 05, 2011 11:23 am Post subject: |
|
|
| LinkinPark wrote: |
...
it's only work with voice'ed users to check !rep and nick++
for op'ed users can not check it.. |
Try this:
| Code: |
## Rep.tcl-v.1.1.0
## Author: Luminous
## Support: pm on egghelp.org
## This is a public script for voiced and opped users to add or remove reputation points to/from users. Its intended use is to keep track of positively and negatively contributing users, similar to forums with reputation systems. Points will be logged to the file "~/eggdrop/reps.txt". Note that everyone starts off at 0 or "neutral" points and does not show up as having reputation via !rep or !rep NICK until they reach negative or positive points. If points are removed from a user not in the file, they are automatically given -1. If rep is added to a user not in the file, they are automatically given 1. The plus/minus increments work normally from there unless the user reaches 0, or neutral, again.
## Commands
# All commands are public
# To add a reputation point to a user, use "NICK++"
# To remove a reputation point, use "NICK--"
# To view the reputation points of a specific user, use "!rep NICK"
# To view all reputation, use "!rep". A list will be noticed you slowly to avoid flooding.
# Set below the char you want to trigger the "rep" functions with:
set bchar "!"
## Code starts, edit beyond here at your own risk
### bind pubm * * rep
bind pubm - "* *" rep
proc rep {nick host hand chan text} {
global bchar
if {[regexp -nocase {^\S+\+\+$} $text] || [regexp -nocase {^\S+--$} $text] || [regexp "^${bchar}rep.*" $text]} {
if { ( ![isvoice $nick $chan] ) && ( ![isop $nick $chan] ) } {
return
}
if {![file exists "reps.txt"]} {
close [open "reps.txt" w]
}
set fs [open "reps.txt"]
set data [split [read -nonewline $fs] \n]
close $fs
if {[regexp -nocase {^\S+\+\+$} $text]} {
set whom [join [lindex [split $text +] 0]]
if {[string equal -nocase "[string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} $whom]" "[string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} $nick]"]} {
putserv "NOTICE $nick :You can not rep yourself."
return
}
set match [lsearch $data "[string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} $whom] *"]
if {$match == -1} {
if {![llength $data]} {
set fs [open "reps.txt" w]
} else {
set fs [open "reps.txt" a]
}
puts $fs "$whom 1"
close $fs
putserv "PRIVMSG $chan :$whom now has 1 reputation point."
return 0
} else {
set line [lindex $data $match]
set rep [lindex $line 1]
incr rep
if {$rep == 0} {
set lines [lreplace $data $match $match]
} else {
set newline "$whom $rep"
set lines [lreplace $data $match $match $newline]
}
set fs [open "reps.txt" w]
puts $fs [join $lines "\n"]
close $fs
if {$rep == 0} {
putserv "PRIVMSG $chan :$whom now has neutral reputation points."
} elseif {$rep == -1} {
putserv "PRIVMSG $chan :$whom now has $rep reputation point."
} else {
putserv "PRIVMSG $chan :$whom now has $rep reputation points."
}
}
} elseif {[regexp -nocase {^\S+--$} $text]} {
set whom [join [lindex [split $text -] 0]]
set match [lsearch $data "[string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} $whom] *"]
if {$match == -1} {
if {![llength $data]} {
set fs [open "reps.txt" w]
} else {
set fs [open "reps.txt" a]
}
puts $fs "$whom -1"
close $fs
putserv "PRIVMSG $chan :$whom now has -1 reputation point."
return
}
set line [lindex $data $match]
set rep [lindex $line 1]
incr rep -1
set newline "$whom $rep"
if {$rep == 0} {
set lines [lreplace $data $match $match]
set check 0
} elseif {$rep == 1} {
set lines [lreplace $data $match $match $newline]
set check 1
} else {
set lines [lreplace $data $match $match $newline]
set check 2
}
set fs [open "reps.txt" w]
puts $fs [join $lines "\n"]
close $fs
if {$check == 0} {
putserv "PRIVMSG $chan :$whom now has neutral reputation points."
} elseif {$check == 1} {
putserv "PRIVMSG $chan :$whom now has 1 reputation point."
} else {
putserv "PRIVMSG $chan :$whom now has $rep reputation points."
}
} elseif {[string equal "${bchar}rep" $text]} {
if {![llength $data]} {
putserv "PRIVMSG $chan :No one currently has any reputation points."
return 0
}
putserv "NOTICE $nick : The reputation list is as follows:"
set fs [open "reps.txt"]
while {[gets $fs line] >= 0} {
set rep [join [lindex [split $line] 1]]
if {$rep == 1 || $rep == -1} {
puthelp "NOTICE $nick :[join [lindex [split $line] 0]] has $rep reputation point."
} else {
puthelp "NOTICE $nick :[join [lindex [split $line] 0]] has $rep reputation points."
}
}
puthelp "NOTICE $nick : End of reputation list"
close $fs
} elseif {[string match -nocase "${bchar}rep *" $text]} {
if {[llength [split $text]] != 2} {
return
}
set whom [string map {"\[" "\\\[" "\]" "\\\]" "\}" "\\\}"} [join [lindex [split $text] end]]]
regsub -all {\s} $whom ""
set line [lsearch $data "$whom *"]
if {$line != -1} {
set line [lindex $data $line]
set whom [string map {"\\\]" "\]" "\\\[" "\[" "\\\{" "\{" "\\\}" "\}"} $whom]
if {[lindex [split $line] 1] == 1 || [lindex [split $line] 1] == -1} {
putserv "PRIVMSG $chan :$whom has [lindex [split $line] 1] reputation point."
} else {
putserv "PRIVMSG $chan :$whom has [lindex [split $line] 1] reputation points."
}
} else {
putserv "PRIVMSG $chan :$whom has no reputation points"
}
}
}
return
}
putlog " -rep.tcl loaded"
|
You can find my previous error in the line that I directed you to earlier.
I used || instead of && as the original scripter had it.
The above has been tested - but only briefly.
In that it responds to the public command !rep if the user is either op'd or voiced. |
|
| Back to top |
|
 |
LinkinPark Voice
Joined: 26 Apr 2011 Posts: 7 Location: Cambodia
|
Posted: Tue Dec 06, 2011 2:05 am Post subject: |
|
|
| Thank to willyw.. it's working now.. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|