dialog CPanel { title "FreeBot - Advanced Configuration" size -1 -1 237 204 option dbu tab "General Settings", 1, 3 1 230 200 box "Nickname", 4, 7 18 132 55, tab 1 text "Nickname", 5, 14 28 50 8, tab 1 text "Alternative Nick", 6, 14 38 50 8, tab 1 text "NickServ Password", 7, 14 48 50 8, tab 1 check "Auto-Identify", 8, 15 59 50 10, tab 1 box "Invitations", 10, 7 73 224 76, tab 1 edit "", 11, 65 27 70 10, tab 1 edit "", 12, 65 37 70 10, tab 1 edit "", 13, 65 47 70 10, tab 1 pass check "Message On Join", 14, 15 82 50 10, tab 1 text "Message:", 15, 26 92 25 8, tab 1 edit "", 16, 52 91 85 10, tab 1 autohs check "Message On Part", 17, 15 102 50 10, tab 1 text "Message:", 18, 26 113 25 8, tab 1 edit "", 19, 52 112 85 10, tab 1 autohs check "Enable Invites", 20, 141 82 45 10, tab 1 box "Connection Settings", 21, 7 152 132 45, tab 1 text "Max Channels:", 22, 152 92 39 8, tab 1 edit "", 23, 192 91 15 10, tab 1 limit 2 text "Server:", 24, 14 162 25 8, tab 1 edit "", 25, 42 161 95 10, tab 1 autohs check "Connect on Start", 26, 15 172 50 10, tab 1 check "Reconnect on Disconnect", 27, 15 182 75 10, tab 1 box "Triggers", 61, 141 18 90 30, tab 1 text "Private:", 63, 145 27 25 8, tab 1 text "Public:", 68, 145 37 25 8, tab 1 edit "", 69, 171 26 10 10, tab 1 limit 2 edit "", 75, 171 36 10 10, tab 1 limit 2 box "Spam Settings", 76, 141 48 90 25, tab 1 text "Ignore Time:", 77, 145 58 30 8, tab 1 edit "", 78, 179 57 15 10, tab 1 text "Second(s)", 79, 195 58 24 8, tab 1 box "Total Control", 86, 141 152 90 22, tab 1 check "Enable/Disable Entire Bot", 87, 145 160 75 10, tab 1 check "Enable Parting", 99, 141 102 50 10, tab 1 text "Part Command:", 100, 152 113 39 8, tab 1 edit "", 101, 192 112 25 10, tab 1 check "Log Invitations/Part Commands", 102, 15 126 89 10, tab 1 text "Invitable By", 114, 141 128 29 8, tab 1 combo 115, 176 127 38 50, tab 1 size drop tab "Color Settings", 2 box "Stats", 28, 7 18 90 32, tab 2 text "Base Color:", 29, 10 26 43 8, tab 2 text "Secondary Color:", 30, 10 37 43 8, tab 2 combo 31, 54 25 41 50, tab 2 size drop combo 32, 54 36 41 50, tab 2 size drop box "Forums", 33, 7 51 90 32, tab 2 text "Base Color:", 34, 10 59 43 8, tab 2 text "Secondary Color:", 35, 10 70 43 8, tab 2 combo 36, 54 58 41 50, tab 2 size drop combo 37, 54 69 41 50, tab 2 size drop box "Prices", 38, 7 85 90 43, tab 2 text "Base Color:", 39, 10 93 43 8, tab 2 text "Secondary Color:", 40, 10 104 43 8, tab 2 text "Support Color:", 41, 10 115 43 8, tab 2 combo 42, 54 92 41 50, tab 2 size drop combo 43, 54 103 41 50, tab 2 size drop combo 44, 54 114 41 50, tab 2 size drop box "News", 45, 102 18 90 32, tab 2 text "Base Color:", 46, 106 26 43 8, tab 2 text "Secondary Color:", 47, 106 37 43 8, tab 2 combo 48, 150 25 41 50, tab 2 size drop combo 49, 150 36 41 50, tab 2 size drop box "Ranks", 50, 102 51 90 32, tab 2 text "Base Color:", 51, 106 59 43 8, tab 2 text "Secondary Color:", 52, 106 70 43 8, tab 2 combo 53, 150 58 41 50, tab 2 size drop combo 54, 150 69 41 50, tab 2 size drop box "Knowledge Base", 55, 102 85 90 32, tab 2 text "Base Color:", 56, 106 93 43 8, tab 2 text "Secondary Color:", 57, 106 104 43 8, tab 2 combo 58, 150 92 41 50, tab 2 size drop combo 59, 150 103 41 50, tab 2 size drop box "General", 167, 102 120 90 53, tab 2 text "Base Color:", 168, 106 128 43 8, tab 2 text "Secondary Color:", 169, 106 139 43 8, tab 2 text "Support Color:", 170, 106 150 43 8, tab 2 text "Backup Color:", 171, 106 161 43 8, tab 2 combo 172, 150 127 40 50, tab 2 size drop combo 173, 150 138 40 50, tab 2 size drop combo 174, 150 149 40 50, tab 2 size drop combo 175, 150 160 40 50, tab 2 size drop button "Custom Color Configuration", 176, 12 130 80 12, tab 2 tab "Channel Settings", 3 box "Channel List", 60, 106 18 95 130, tab 3 box "Channel Settings", 62, 7 150 194 50, tab 3 list 64, 108 26 90 105, tab 3 size check "Allow Public Trigger", 65, 10 157 65 10, tab 3 check "Allow Private Trigger", 66, 10 167 65 10, tab 3 button "Add", 70, 110 133 37 12, tab 3 button "Remove", 71, 160 133 37 12, tab 3 check "Blacklisted", 94, 10 177 65 10, tab 3 text "Total Kicks:", 95, 75 178 27 8, tab 3 text "Max Kicks:", 96, 122 178 25 8, tab 3 edit "", 97, 103 177 12 10, tab 3 edit "", 98, 148 177 12 10, tab 3 tab "Personal Scripts", 9 box "Remotes List", 67, 7 18 194 180, tab 9 list 72, 9 26 189 155, tab 9 size button "Load Script", 73, 62 183 37 12, tab 9 button "Unload Script", 74, 108 183 37 12, tab 9 tab "Stats", 80 box "Stats Display", 81, 7 17 222 38, tab 80 text "Items Till Level:", 82, 14 28 37 8, tab 80 combo 83, 56 27 50 50, tab 80 size drop text "Items Per Line:", 84, 14 40 37 8, tab 80 combo 85, 56 39 50 50, tab 80 size drop text "Items Above Level:", 88, 111 28 47 8, tab 80 text "Items Below Level:", 89, 111 40 47 8, tab 80 combo 90, 164 27 50 50, tab 80 size drop combo 91, 164 39 50 50, tab 80 size drop box "Skill", 92, 7 56 60 95, tab 80 box "Item/Action Name", 93, 69 56 100 45, tab 80 box "Data/Information", 103, 69 101 100 50, tab 80 list 104, 9 63 55 85, tab 80 sort size list 105, 71 64 95 34, tab 80 size text "Exp Given:", 106, 73 110 35 8, tab 80 text "Level Needed:", 107, 73 120 35 8, tab 80 text "Display Name:", 108, 73 130 35 8, tab 80 edit "", 109, 112 109 50 10, tab 80 edit "", 110, 112 119 50 10, tab 80 edit "", 111, 112 129 50 10, tab 80 button "Update", 112, 76 140 37 8, tab 80 button "Undo", 113, 121 140 37 8, tab 80 tab "Updater Settings", 116 box "General Update Settings", 117, 7 18 220 55, tab 116 text "every", 118, 20 36 14 8, tab 116 edit "", 119, 35 35 21 10, tab 116 text "minute(s)", 120, 57 36 25 8, tab 116 check "Inform users before updating", 121, 10 48 80 10, tab 116 text "Inform type", 122, 20 60 29 8, tab 116 combo 123, 54 59 37 50, tab 116 size drop check "Automatically check for updates", 124, 10 26 90 10, tab 116 button "Check For Update(s)", 149, 166 74 60 12, tab 116 tab "Triggers", 125 box "Trigger List", 126, 7 18 65 88, tab 125 list 127, 9 26 60 65, tab 125 size box "Trigger Settings", 128, 74 18 155 88, tab 125 text "Trigger", 129, 77 29 17 8, tab 125 edit "", 130, 96 28 110 10, tab 125 read text "Output", 131, 77 41 17 8, tab 125 edit "", 132, 96 39 110 52, tab 125 multi return autovs button "Update", 133, 129 92 37 12, tab 125 button "Add", 134, 8 92 30 12, tab 125 button "Remove", 135, 40 92 30 12, tab 125 box "Stats Triggers", 144, 7 109 222 75, tab 125 list 145, 9 116 60 65, tab 125 size text "Triggers", 146, 77 120 20 8, tab 125 edit "", 147, 98 119 110 50, tab 125 multi return autovs button "Update", 148, 129 170 37 12, tab 125 tab "Feature Control", 136 box "Enable/Disable Features", 137, 7 18 122 75, tab 136 check "Price Checker", 138, 11 28 50 10, tab 136 check "Stats Lookup", 139, 11 38 50 10, tab 136 check "Knowledge-Base", 140, 11 48 50 10, tab 136 check "Forum Search", 141, 11 58 50 10, tab 136 check "News Lookup", 142, 11 68 50 10, tab 136 check "Rank Lookup", 143, 11 78 50 10, tab 136 tab "Extension Manager", 150 box "Available Extensions", 151, 7 18 75 115, tab 150 list 152, 9 26 70 90, tab 150 size button "Update", 153, 25 118 37 12, tab 150 box "Extension Details", 154, 83 18 124 115, tab 150 text "Name", 155, 85 27 30 8, tab 150 text "Description", 156, 85 67 30 8, tab 150 button "Install", 157, 105 118 37 12, tab 150 button "Uninstall", 158, 150 118 37 12, disable tab 150 edit "", 159, 116 26 85 10, tab 150 read edit "", 160, 116 66 85 45, tab 150 read multi return autovs text "New Version", 161, 85 47 30 8, tab 150 text "Old Version", 162, 85 57 30 8, tab 150 edit "", 163, 116 46 85 10, tab 150 read edit "", 164, 116 56 85 10, tab 150 read text "Author", 165, 85 37 30 8, tab 150 edit "", 166, 116 36 85 10, tab 150 read tab "Access Settings", 177 box "Access List", 178, 7 18 80 85, tab 177 list 179, 9 26 75 75, tab 177 size box "Access Data", 180, 90 18 105 85, tab 177 text "Host Mask:", 181, 95 28 27 8, tab 177 text "Access Level:", 182, 95 38 33 8, tab 177 text "Last Login:", 183, 95 48 26 8, tab 177 text "Username:", 184, 95 65 26 8, tab 177 text "Password:", 185, 95 75 25 8, tab 177 button "Del User", 186, 95 87 25 12, tab 177 button "Add User", 187, 129 87 25 12, tab 177 button "Edit User", 188, 163 87 25 12, tab 177 edit "", 189, 130 27 60 10, tab 177 edit "", 190, 130 37 60 10, tab 177 edit "", 191, 130 47 60 10, tab 177 edit "", 192, 130 64 60 10, tab 177 edit "", 193, 130 74 60 10, tab 177 box "Access Behavior", 194, 7 104 90 55, disable tab 177 check "On Join", 195, 9 113 30 10, disable tab 177 check "Auto-Op Level", 196, 20 123 45 10, disable tab 177 edit "", 197, 67 123 15 10, disable tab 177 check "Auto-Voice Level", 199, 20 145 50 10, disable tab 177 edit "", 200, 80 134 15 10, disable tab 177 check "Auto-Half-Op Level", 198, 20 134 60 10, disable tab 177 edit "", 201, 73 145 15 10, disable tab 177 box "On Text Behavior", 202, 100 104 130 95, disable tab 177 check "Enable/Disable 'On Text' Triggers", 203, 103 113 95 10, disable tab 177 list 204, 104 129 55 58, disable tab 177 size box "Triggers", 205, 102 122 60 75, tab 177 box "Action(s)", 206, 163 122 65 37, tab 177 check "Quit Bot", 207, 165 130 60 10, disable tab 177 check "Restart Bot", 208, 165 139 60 10, disable tab 177 check "Part Channel", 209, 165 148 60 10, disable tab 177 box "Requirement(s)", 210, 163 158 65 39, tab 177 text "Level:", 211, 165 167 15 8, tab 177 edit "", 212, 181 166 15 10, disable tab 177 button "Add", 213, 105 188 25 8, disable tab 177 button "Del", 214, 133 188 25 8, disable tab 177 } on *:DIALOG:CPanel:init:0: { ;General Settings .did -a $dname 11 $me .did -a $dname 12 $anick .did -a $dname 13 $se(private,pass) if ($se(private,identify) == $true) { .did -c $dname 8 } if ($se(invite,join) == $true) { .did -c $dname 14 } .did -a $dname 16 $se(invite,join.msg) if ($se(invite,part) == $true) { .did -c $dname 17 } .did -a $dname 19 $se(invite,part.msg) if ($se(invite,on) == $true) { .did -c $dname 20 } .did -a $dname 101 $se(private,part.msg) if ($se(private,part)) { .did -c $dname 99 } .did -a $dname 23 $se(invite,maxchan) .did -a $dname 25 $se(private,server) if ($se(private,connect) == $true) { .did -c $dname 26 } if ($se(private,reconnect) == $true) { .did -c $dname 27 } .did -a $dname 69 $se(trigger,private) .did -a $dname 75 $se(trigger,public) .did -a $dname 78 $se(private,ignore) if ($se(private,active)) { .did -c $dname 87 } .did -a $dname 115 OP .did -a $dname 115 Half-OP .did -a $dname 115 Voice .did -a $dname 115 Anyone if ($se(invite,who) == @) { .did -c $dname 115 1 } elseif ($se(invite,who) == %) { .did -c $dname 115 2 } elseif ($se(invite,who) == +) { .did -c $dname 115 3 } else { .did -c $dname 115 4 } if ($se(invite,log)) { .did -c $dname 102 } if ($se(invite,part.en)) { .did -c $dname 99 } .did -a $dname 101 $se(private,part.mrg) ;Color Settings var %a = 1 while (%a <= $ini(clist.ini,colors,0)) { .dll WhileFix.dll WhileFix . var %clr = $ini(clist.ini,colors,%a) .did -a $dname 31,32,36,37,42,43,44,48,49,53,54,58,59,172,173,174,175 %clr if (%clr == $se(color,stats.base)) { .did -c $dname 31 %a } if (%clr == $se(color,stats.secondary)) { .did -c $dname 32 %a } if (%clr == $se(color,forum.base)) { .did -c $dname 36 %a } if (%clr == $se(color,forum.secondary)) { .did -c $dname 37 %a } if (%clr == $se(color,price.base)) { .did -c $dname 42 %a } if (%clr == $se(color,price.secondary)) { .did -c $dname 43 %a } if (%clr == $se(color,price.support)) { .did -c $dname 44 %a } if (%clr == $se(color,news.base)) { .did -c $dname 48 %a } if (%clr == $se(color,news.secondary)) { .did -c $dname 49 %a } if (%clr == $se(color,rank.base)) { .did -c $dname 53 %a } if (%clr == $se(color,rank.secondary)) { .did -c $dname 54 %a } if (%clr == $se(color,kbase.base)) { .did -c $dname 58 %a } if (%clr == $se(color,kbase.secondary)) { .did -c $dname 59 %a } if (%clr == $se(color,general.base)) { .did -c $dname 172 %a } if (%clr == $se(color,general.secondary)) { .did -c $dname 173 %a } if (%clr == $se(color,general.suport)) { .did -c $dname 174 %a } if (%clr == $se(color,general.backup)) { .did -c $dname 175 %a } inc %a } ;Personal Scripts var %a = 1 while (%a <= $lines(remotes.fb)) { .dll WhileFix.dll WhileFix . .did -a $dname 72 $read(remotes.fb,%a) inc %a } ;Channel Settings var %a = 1 while (%a <= $ini(chansetting.ini,0)) { .dll WhileFix.dll WhileFix . .did -a $dname 64 $ini(chansetting.ini,%a) inc %a } .did -a $dname 98 $se(private,kicks) ;Stats Settings .did -a $dname 83 NONE if ($se(stats,out.lines) == NONE) { .did -c $dname 83 1 } .did -a $dname 83 6 if ($se(stats,out.lines) == 6) { .did -c $dname 83 2 } .did -a $dname 83 12 if ($se(stats,out.lines) == 12 || !%out.lines) { .did -c $dname 83 3 } .did -a $dname 83 18 if ($se(stats,out.lines) == 18) { .did -c $dname 83 4 } .did -a $dname 83 24 if ($se(stats,out.lines) == 24) { .did -c $dname 83 5 } .did -a $dname 83 ALL if ($se(stats,out.lines) == ALL) { .did -c $dname 83 6 } .did -a $dname 85 3 if ($se(stats,out.amt) == 3) { .did -c $dname 85 1 } .did -a $dname 85 6 if ($se(stats,out.amt) == 6 || !%out.amt) { .did -c $dname 85 2 } .did -a $dname 85 9 if ($se(stats,out.amt) == 9) { .did -c $dname 85 3 } .did -a $dname 90,91 0 .did -a $dname 90,91 5 .did -a $dname 90,91 10 .did -a $dname 90,91 20 .did -a $dname 90,91 50 .did -a $dname 90,91 100 .did -a $dname 91 ALL if ($se(stats,over) == 0) { .did -c $dname 90 1 } if ($se(stats,under) == 0) { .did -c $dname 91 1 } if ($se(stats,over) == 5) { .did -c $dname 90 2 } if ($se(stats,under) == 5) { .did -c $dname 91 2 } if ($se(stats,over) == 10) { .did -c $dname 90 3 } if ($se(stats,under) == 10) { .did -c $dname 91 3 } if ($se(stats,over) == 20) { .did -c $dname 90 4 } if ($se(stats,under) == 20) { .did -c $dname 91 4 } if ($se(stats,over) == 50) { .did -c $dname 90 5 } if ($se(stats,under) == 50) { .did -c $dname 91 5 } if ($se(stats,over) == 100) { .did -c $dname 90 6 } if ($se(stats,under) == 100) { .did -c $dname 91 6 } if ($se(stats,under) == All) { .did -c $dname 91 7 } var %a = 1 while (%a <= $findfile($mircdirSkills,*,0)) { .dll WhileFix.dll WhileFix . .did -a $dname 104 $gettok($findfile($mircdirSkills,*,%a),-1,92) inc %a } ;Updater Settings if ($se(update,check)) { .did -c $dname 124 } .did -a $dname 119 $se(update,time) if ($se(update,inform)) { .did -c $dname 121 } .did -a $dname 123 amsg .did -a $dname 123 ame if ($se(update,it) == amsg) { .did -c $dname 123 1 } else { .did -c $dname 123 2 } ;Triggers List var %a = 1 while (%a <= $ini(triggers.ini,0)) { .dll WhileFix.dll WhileFix . .did -a $dname 127 $ini(triggers.ini,%a) inc %a } var %a = 1 while (%a <= $ini(Settings.ini, regEx,0)) { .dll WhileFix.dll WhileFix . .did -a $dname 145 $ini(Settings.ini, regEx,%a) inc %a } ;Feature Control if ($se(status,price) == on) { .did -c $dname 138 } if ($se(status,stats) == on) { .did -c $dname 139 } if ($se(status,kbase) == on) { .did -c $dname 140 } if ($se(status,rsf) == on) { .did -c $dname 141 } if ($se(status,news) == on) { .did -c $dname 142 } if ($se(status,rank) == on) { .did -c $dname 143 } ;Access Settings var %a = 1 while (%a <= $ini(alist.ini,0)) { .dll WhileFix.dll WhileFix . .did -a $dname 179 $ini(alist.ini,%a) inc %a } var %a = 1 while (%a <= $ini(OnText.ini,0)) { .dll WhileFix.dll WhileFix . .did -a $dname 204 $ini(OnText.ini,%a) inc %a } if ($se(access,on_join)) { .did -c $dname 195 } if ($se(access,op_mode)) { .did -c $dname 196 } if ($se(access,hop_mode)) { .did -c $dname 198 } if ($se(access,vop_mode)) { .did -c $dname 199 } .did -a $dname 197 $se(access,op_lvl) .did -a $dname 200 $se(access,hop_lvl) .did -a $dname 201 $se(access,vop_lvl) if ($se(access,on_text)) { .did -c $dname 203 } } on *:DIALOG:CPanel:sclick:179: { var %a = $did($dname,179).seltext .did -ra $dname 189 $readini(alist.ini,%a,host) .did -ra $dname 190 $readini(alist.ini,%a,lvl) .did -ra $dname 191 $iif($readini(alist.ini,%a,online) == $true,*) $+ $readini(alist.ini,%a,llogin) .did -ra $dname 192 %a .did -ra $dname 193 $readini(alist.ini,%a,pass) .did -b $dname 188 } on *:DIALOG:CPanel:edit:189,190,191,192,193: { .did -e $dname 188 } on *:DIALOG:CPanel:sclick:188: { if (!$did($dname,179).seltext) { halt } var %a = $did($dname,179).seltext .writeini -n alist.ini %a host $did($dname,189) .writeini -n alist.ini %a lvl $did($dname,190) .writeini -n alist.ini %a user $did($dname,192) .writeini -n alist.ini %a pass $did($dname,193) } on *:DIALOG:CPanel:sclick:127: { if (!$did($dname,127).seltext) { halt } .did -ra $dname 130 $did($dname,127).seltext .did -r $dname 132 var %sstr = $readini(triggers.ini,$did($dname,127).seltext,out),%a = 1 while (%a <= $numtok(%sstr,124)) { .did -a $dname 132 $gettok(%sstr,%a,124) $iif(%a < $numtok(%sstr,124),$+ $crlf) inc %a } } on *:DIALOG:CPanel:sclick:133,134,135: { if ($did == 133) { if (!$did($dname,127).seltext) { halt } if (!$did($dname,132)) { halt } var %outputvar,%a = 1 while (%a <= $did($dname,132).lines) { %outputvar = $+(%outputvar,$iif(%a > 1,$chr(124)),$did($dname,132,%a)) inc %a } .writeini -n triggers.ini $did($dname,130) out %outputvar } if ($did == 135) { if (!$did($dname,127).seltext) { halt } .remini triggers.ini $did($dname,127).seltext .did -d $dname 127 $did($dname,127).sel } if ($did == 134) { var %newtrigg = $$?="Enter your desired trigger (no spaces):" if (!%newtrigg) { .dialog $iif(!$dialog(CPanel),-md,-v) CPanel CPanel | halt } .writeini -n triggers.ini $remove(%newtrigg,$chr(32)) out New Trigger .did -a $dname 127 %newtrigg .did -c $dname 127 $did($dname,127).lines .did -ra $dname 130 %newtrigg .did -ra $dname 132 New Trigger } } on *:DIALOG:CPanel:sclick:152,153,157,158: { if ($did == 153) { .sockopen ext thefreebot.com 80 } if ($did == 152) { if (!$hget(ext,1).item) { halt } .tokenize 124 $hget(ext,$did($dname,152).seltext) .did -ra $dname 159 $did($dname,152).seltext .did -ra $dname 163 $1 .did -ra $dname 166 $3 if ($readini(extensions.ini,$did($dname,159),version)) { .did -ra $dname 164 $ifmatch .did -e $dname 158 .did -b $dname 157 } else { .did -ra $dname 164 0.00 .did -b $dname 158 .did -e $dname 157 } .did -ra $dname 160 $4- } if ($did == 158) { if (!$did($dname,159) || !$hget(ext,$did($dname,159))) { halt } .tokenize 124 $hget(ext,$did($dname,159)) .unload -rs $2 .remini extensions.ini $did($dname,159) .remove $+(Extensions\,$2) .did -b $dname 158 .did -e $dname 157 .did -r $dname 159,160,163,164 } if ($did == 157) { if (!$did($dname,152).seltext) { halt } .set %extinst $did($dname,152).seltext .sockopen extinst thefreebot.com 80 } } on *:DIALOG:CPanel:sclick:148: { if (!$did($dname,147)) { halt } if (!$did($dname,145).seltext) { halt } var %sett,%a = 1 while (%a <= $did($dname,147).lines) { .dll WhileFix.dll WhileFix . if (%a == 1) { %sett = $did($dname,147,%a).text } else { %sett = $+(%sett,$chr(124),$did($dname,147,%a).text) } inc %a } .writeini -n Settings.ini regEx $did($dname,145).seltext $iif($right(%sett,1) == $chr(124),$left(%sett,-1),%sett) } on *:DIALOG:CPanel:sclick:145: { if (!$did($dname,145).seltext) { halt } var %a = 1 .did -r $dname 147 while (%a <= $numtok($readini(Settings.ini,regEx,$did($dname,145).seltext),124)) { .dll WhileFix.dll WhileFix . .did -a $dname 147 $gettok($readini(Settings.ini,regEx,$did($dname,145).seltext),%a,124) $+ $crlf inc %a } } on *:DIALOG:CPanel:sclick:149: { .update } on *:DIALOG:CPanel:sclick:113,112: { var %file = $+($mircdirSkills,\,$did($dname,104).seltext) if ($did == 113) { .did -ra $dname 109 $readini(%file,$did($dname,105).seltext,exp) .did -ra $dname 110 $readini(%file,$did($dname,105).seltext,lvl) .did -ra $dname 111 $readini($mircdirSkills\TS.ini,$did($dname,105).seltext,aka) } if ($did == 112) { .writeini -n $shortfn(%file) $did($dname,105).seltext exp $did($dname,109) .writeini -n $shortfn(%file) $did($dname,105).seltext lvl $did($dname,110) if (!$did($dname,111)) { .remini $shortfn($mircdirSkills\Ts.ini) $did($dname,105).seltext } else { .writeini -n $shortfn($mircdirSkills\TS.ini) $did($dname,105).seltext aka $did($dname,111) } } } on *:DIALOG:CPanel:sclick:104,105: { var %file = $+($mircdirSkills,\,$did($dname,104).seltext) if ($did == 104) { .did -r $dname 105 var %a = 1 while (%a <= $ini(%file,0)) { .dll WhileFix.dll WhileFix . .did -a $dname 105 $ini(%file,%a) inc %a } } if ($did == 105) { .did -ra $dname 109 $readini(%file,$did($dname,105).seltext,exp) .did -ra $dname 110 $readini(%file,$did($dname,105).seltext,lvl) .did -ra $dname 111 $readini($mircdirSkills\TS.ini,$did($dname,105).seltext,aka) } } on *:DIALOG:CPanel:sclick:73,74: { if ($did == 73) { var %loadf = $sfile($mircdir,FreeBot Remote Loader) if (!%loadf) { halt } .write remotes.fb %loadf .did -a $dname 72 %loadf .load -rs $shortfn(%loadf) } if ($did == 74) { .unload -rs $shortfn($did($dname,72).seltext) .write $+(-dl,$did($dname,72).sel) remotes.fb .did -d $dname 72 $did($dname,72).sel } } on *:DIALOG:CPanel:edit:97: { if (!$did($dname,64).seltext) { halt } .writeini -n chansetting.ini $did($dname,64).seltext kick $iif($did($dname,97),$ifmatch,0) } on *:DIALOG:CPanel:sclick:64,65,66,70,71,94: { if ($did == 64) { if ($readini(chansetting.ini,$did($dname,64).seltext,public) == on) { .did -c $dname 65 } else { .did -u $dname 65 } if ($readini(chansetting.ini,$did($dname,64).seltext,private) == on) { .did -c $dname 66 } else { .did -u $dname 66 } if ($readini(chansetting.ini,$did($dname,64).seltext,blist) == $true) { .did -c $dname 94 } else { .did -u $dname 94 } .did -ra $dname 97 $readini(chansetting.ini,$did($dname,64).seltext,kick) if ($me ison $did($dname,64).seltext) { .part $did($danme,64).seltext Leaving - Channel blacklisted. } } if ($did == 65) { if (!$did($dname,64).seltext) { halt } .writeini -n chansetting.ini $did($dname,64).seltext public $iif($did($dname,65).state == 1,on,off) } if ($did == 66) { if (!$did($dname,64).seltext) { halt } .writeini -n chansetting.ini $did($dname,64).seltext private $iif($did($dname,66).state == 1,on,off) } if ($did == 94) { if (!$did($dname,64).seltext) { halt } .writeini -n chansetting.ini $did($dname,64).seltext blist $iif($did($dname,94).state == 1,$true,$false) } if ($did == 70) { var %newchan = $$?="Enter Channel name:" .writeini -n chansetting.ini %newchan public on .writeini -n chansetting.ini %newchan private on .did -a $dname 64 %newchan } if ($did == 71) { if (!$did($dname,64).seltext) { halt } .remini chansetting.ini $did($dname,64).seltext .did -d $dname 64 $did($dname,64).sel } } on *:DIALOG:CPanel:sclick:213,214: { if ($did == 214 && $did($dname,204).seltext != $null) { .remini OnText.ini $did($dname,204).seltext .did -d $dname 204 $did($dname,204).sel } if ($did == 213) { var %newcomm = $$?="Enter new trigger:" .dialog -v $dname $dname .writeini -n OnText.ini %newcomm level 100 .did -a $dname 204 %newcomm } } on *:DIALOG:CPanel:sclick:203,207,208,209: { if (!$did($dname,204).seltext) { halt } if ($did == 203) { .writeini -n Settings.ini access on_text $iif($did($dname,203).state == 1,$true,$false) } if ($did == 207) { .writeini -n OnText.ini $did($dname,204).seltext quit $iif($did($dname,207).state == 1,$true,$false) } if ($did == 208) { .writeini -n OnText.ini $did($dname,204).seltext restart $iif($did($dname,208).state == 1,$true,$false) } if ($did == 209) { .writeini -n OnText.ini $did($dname,204).seltext part $iif($did($dname,209).state == 1,$true,$false) } } on *:DIALOG:CPanel:edit:212: { if (!$did($dname,204).seltext) { halt } .writeini -n OnText.ini $did($dname,204).seltext level $did($dname,212) } on *:DIALOG:CPanel:sclick:186,187,188: { if ($did == 186 && $did($dname,179).seltext != $null) { .remini -n alist.ini $did($dname,179).seltext .did -d $dname 179 $did($dname,179).sel } if ($did == 187) { var %usr = $$?="Enter a username:" var %pas = $$?="Enter a password:" .dialog -v $dname $dname .writeini -n alist.ini %usr pass %pas .writeini -n alist.ini %usr host -Unknown- .writeini -n alist.ini %usr llogin -Unknown- .writeini -n alist.ini %usr online $false .writeini -n alist.ini %usr lvl 10 .did -a $dname 179 %usr } if ($did == 188) { .writeini -n alist.ini $did($dname,192) pass $did($dname,193) .writeini -n alist.ini $did($dname,192) lvl $did($dname,190) } } on *:DIALOG:CPanel:close:0: { .nick $did($dname,11) .anick $did($dname,12) .writeini -n Settings.ini private pass $iif($did($dname,13),$ifmatch,$false) .writeini -n Settings.ini private identify $iif($did($dname,8).state == 1,$true,$false) .writeini -n Settings.ini invite join $iif($did($dname,14).state == 1,$true,$false) $iif(!$did($dname,16),noop,.writeini -n Settings.ini invite join.msg $did($dname,16)) .writeini -n Settings.ini invite part $iif($did($dname,17).state == 1,$true,$false) $iif(!$did($dname,19),noop,.writeini -n Settings.ini invite part.msg $did($dname,19)) .writeini -n Settings.ini private part.msg $iif($did($dname,101),$ifmatch,part) .writeini -n Settings.ini invite part.en $iif($did($dname,99).state == 1,$true,$false) .writeini -n Settings.ini invite on $iif($did($dname,20).state == 1,$true,$false) .writeini -n Settings.ini invite maxchan $iif($did($dname,23),$ifmatch,30) .writeini -n Settings.ini invite log $iif($did($dname,102).state == 1,$true,$false) .writeini -n Settings.ini private server $iif($did($dname,25),$ifmatch,irc.swiftirc.net) .writeini -n Settings.ini private connect $iif($did($dname,26).state == 1,$true,$false) .writeini -n Settings.ini private reconnect $iif($did($dname,27).state == 1,$true,$false) .writeini -n Settings.ini color stats.base $iif($did($dname,31).seltext,$ifmatch,Red) .writeini -n Settings.ini color stats.secondary $iif($did($dname,32).seltext,$ifmatch,Orange) .writeini -n Settings.ini color forum.base $iif($did($dname,36).seltext,$ifmatch,Red) .writeini -n Settings.ini color forum.secondary $iif($did($dname,37).seltext,$ifmatch,Orange) .writeini -n Settings.ini color price.base $iif($did($dname,42).seltext,$ifmatch,Red) .writeini -n Settings.ini color price.secondary $iif($did($dname,43).seltext,$ifmatch,Orange) .writeini -n Settings.ini color price.support $iif($did($dname,44).seltext,$ifmatch,Purple) .writeini -n Settings.ini color news.base $iif($did($dname,48).seltext,$ifmatch,Red) .writeini -n Settings.ini color news.secondary $iif($did($dname,49).seltext,$ifmatch,Orange) .writeini -n Settings.ini color rank.base $iif($did($dname,53).seltext,$ifmatch,Red) .writeini -n Settings.ini color rank.secondary $iif($did($dname,54).seltext,$ifmatch,Orange) .writeini -n Settings.ini color kbase.base $iif($did($dname,58).seltext,$ifmatch,Red) .writeini -n Settings.ini color kbase.secondary $iif($did($dname,59).seltext,$ifmatch,Orange) .writeini -n Settings.ini color general.base $iif($did($dname,172).seltext,$ifmatch,Red) .writeini -n Settings.ini color general.secondary $iif($did($dname,173).seltext,$ifmatch,Organe) .writeini -n Settings.ini color general.support $iif($did($dname,174).seltext,$ifmatch,Purple) .writeini -n Settings.ini color general.backup $iif($did($dname,175).seltext,$ifmatch,Blue) .writeini -n Settings.ini trigger private $iif($did($dname,69),$ifmatch,') .writeini -n Settings.ini trigger public $iif($did($dname,75),$ifmatch,?) .writeini -n Settings.ini stats out.lines $iif($did($dname,83).seltext,$ifmatch,12) .writeini -n Settings.ini stats out.amt $iif($did($dname,85).seltext,$ifmatch,6) .writeini -n Settings.ini stats over $did($dname,90).seltext .writeini -n Settings.ini stats under $did($dname,91).seltext if ($did($dname,115).seltext == OP) { .writeini -n Settings.ini invite who @ } if ($did($dname,115).seltext == Half-OP) { .writeini -n Settings.ini invite who @% } if ($did($dname,115).seltext == Voice) { .writeini -n Settings.ini invite who @%+ } if ($did($dname,115).seltext == Anyone) { .writeini -n Settings.ini invite who ALL } .writeini -n Settings.ini update check $iif($did($dname,124).state == 1,$true,$false) .writeini -n Settings.ini update inform $iif($did($dname,121).state == 1,$true,$false) .writeini -n Settings.ini update it $did($dname,123).seltext .writeini -n Settings.ini update time $did($dname,119) if ($se(update,check)) { if (!$timer(fbud)) { .timerfbud 0 $calc($se(update,time) * 60) .sockopen udc thefreebot.com 80 } } else { if ($timer(fbud)) { .timerfbud off } } .writeini -n Settings.ini status price $iif($did($dname,138).state == 1,on,off) .writeini -n Settings.ini status stats $iif($did($dname,139).state == 1,on,off) .writeini -n Settings.ini status kbase $iif($did($dname,140).state == 1,on,off) .writeini -n Settings.ini status rsf $iif($did($dname,141).state == 1,on,off) .writeini -n Settings.ini status news $iif($did($dname,142).state == 1,on,off) .writeini -n Settings.ini status rank $iif($did($dname,143).state == 1,on,off) if ($hget(ext,0).item) { .hfree ext } .writeini -n Settings.ini Access on_join $iif($did($dname,195).state == 1,$true,$false) .writeini -n Settings.ini Access op_mode $iif($did($dname,196).state == 1,$true,$false) .writeini -n Settings.ini Access hop_mode $iif($did($dname,198).state == 1,$true,$false) .writeini -n Settings.ini Access vop_mode $iif($did($dname,199).state == 1,$true,$false) .writeini -n Settings.ini Access op_lvl $iif($did($dname,197),$ifmatch,100) .writeini -n Settings.ini Access hop_lvl $iif($did($dname,200),$ifmatch,50) .writeini -n Settings.ini Access vop_lvl $iif($did($dname,201),$ifmatch,10) } dialog firstRun { title "RuneScape Bot - First Run Settings" size -1 -1 122 109 option dbu box "Name Settings", 1, 1 0 120 40 text "Bot Name:", 2, 4 10 35 8 text "Bot Password:", 3, 4 19 35 8 text "Email:", 5, 4 28 25 8 box "IRC Settings", 7, 1 42 120 50 check "Enable invites", 8, 4 81 50 10 text "Public trigger:", 9, 4 51 40 8 text "Private trigger:", 10, 4 60 40 8 text "Server:", 6, 4 73 25 8 button "Connect", 11, 40 95 37 12 edit "FreeBot", 12, 45 9 70 10, limit 20 edit "", 13, 45 18 70 10, pass autohs edit "your@email.com", 14, 45 27 70 10, autohs edit "'", 15, 45 50 10 10, limit 1 center edit "?", 16, 45 59 10 10, limit 1 center edit "irc.swiftirc.net", 17, 45 72 70 10, autohs } on *:START: { if (!$se(private,runbefore)) { .dialog -mo firstRun firstRun | halt } var %a = 1 while (%a <= $lines(remote.fb)) { .dll WhileFix.dll WhileFix . if (!$script($read(remote.fb,%a))) { .load -rs $shortfn($read(remote.fb,%a)) } inc %a } if ($se(private,connect)) { .server %priv.server } } on *:DISCONNECT: { if (%ConnectOnDisconnect) { .set %priv.server } } on *:DIALOG:firstRun:sclick:11: { .nick $iif($did($dname,12),$ifmatch,FreeBot) .anick $+([,$r(A,Z),$r(a,z),],$iif($did($dname,12),$ifmatch,FreeBot)) .writeini -n Settings.ini trigger public $iif($did($dname,15),$ifmatch,?) .writeini -n Settings.ini trigger private $iif($did($dname,16),$ifmatch,') .writeini -n Settings.ini private email $did($dname,14) .writeini -n Settings.ini private pass $iif($did($dname,13),$ifmatch,$false) .writeini -n Settings.ini private server $iif($did($dname,17),$ifmatch,irc.swiftirc.net) .writeini -n Settings.ini invite on $iif($did($dname,9).state == 1,$true,$false) .writeini -n Settings.ini private runbefore $true .dialog -x $dname .server $se(private,server) } ctcp *:VERSION: { .ctcpreply $nick VERSION FreeBot - for your convenience $+([,$se(versions,main),]) by Marius - available at http://freebots.info & http://thefreebot.com } on *:CONNECT: { .mode $me +B .setname FreeBot if ($network == SwiftIRC) { .join #freebot } .sockopen botlist thefreebot.com 80 } on *:SOCKOPEN:extinst: { if ($sockerr) { echo 4 -ts SockOpen Extension Install Error: $sock($sockname).wsmsg | return } if (!$isdir(Extensions)) { .mkdir Extensions } .set %extwrite $false .sockwrite -n $sockname GET $+(/ext/,$gettok($hget(ext,%extinst),2,124)) HTTP/1.1 .sockwrite -n $sockname Host: thefreebot.com $+ $crlf $+ $crlf } on *:SOCKREAD:extinst: { if ($sockerr) { echo 4 -ts SockRead Exntesion Install Error: $sock($sockname).wsmsg | return } .sockread %ext if (%extwrite) { .write $+(Extensions\,$gettok($hget(ext,%extinst),2,124)) %ext } if (%ext == Content-Type: text/plain) { .set %extwrite $true } } on *:SOCKCLOSE:extinst: { .load -rs $+(Extensions\,$gettok($hget(ext,%extinst),2,124)) .writeini -n Extensions.ini %extinst version $gettok($hget(ext,%extinst),1,124) if ($dialog(CPanel)) { .did -e CPanel 158 .did -b CPanel 157 } } on *:SOCKOPEN:botlist: { if ($sockerr) { echo 4 -ts SockOpen BotList Error: $sock($sockname).wsmsg | return } if (!$server) { .sockwrite -n $sockname GET $($+(/bot.php?bid=,$iif($se(private,bid),$ifmatch,-),&h=,$iif($se(private,hash),$ifmatch,$time),&1=,$se(private,email),&2=,$me,&3=,$anick,&4=,$iif($se(invite,on),1,0),&5=,$se(invite,maxchan),&6=,$se(trigger,public),&7=,$se(trigger,private),&8=,$se(private,server)),3) HTTP/1.1 } else { .sockwrite -n $sockname GET $($+(/bot.php?bid=,$iif($se(private,bid),$ifmatch,-),&h=,$iif($se(private,hash),$ifmatch,$time),&1=,$se(private,email),&2=,$me,&3=,$anick,&4=,$iif($se(invite,on),1,0),&5=,$se(invite,maxchan),&6=,$se(trigger,public),&7=,$se(trigger,private),&8=,$se(private,server),&9=,$server,&10=,$me,&11=,$chan(0)),3) HTTP/1.1 } .sockwrite -n $sockname Host: thefreebot.com $+ $crlf $+ $crlf } on *:SOCKREAD:botlist: { if ($sockerr) { echo 4 -ts SockRead BotList Error: $sock($sockname).wsmsg | return } .sockread %bl if ($left(%bl,4) == bid:) { .writeini -n Settings.ini private bid $gettok(%bl,2,32) } if ($left(%bl,4) == hash) { .writeini -n Settings.ini private hash $gettok(%bl,2,32) } } on *:SOCKCLOSE:botlist: { echo 3 -ts Your bot has been added/updated on the FreeBot BotList } on *:SOCKOPEN:ext: { if ($sockerr) { echo 4 -ts SockOpen ExtensionList Error: $sock($sockname).wsmsg | return } if ($dialog(CPanel)) { .did -r CPanel 152 } if ($hget(ext,1).item) { .hfree ext } .sockwrite -n $sockname GET /ext.txt HTTP/1.1 .sockwrite -n $sockname Host: thefreebot.com $+ $crlf $+ $crlf } on *:SOCKREAD:ext: { if ($sockerr) { echo 4 -ts SockRead ExtensionList Error: $sock($sockname).wsmsg | return } .sockread %ext if (!%ext) { halt } if ($+(*,$chr(124),*,$chr(124),*) iswm %ext) { .hadd -m ext $gettok(%ext,1,124) $gettok(%ext,2-,124) } } on *:SOCKCLOSE:ext: { if (!$dialog(CPanel)) { halt } var %a = 1 while (%a <= $hget(ext,0).item) { .dll WhileFix.dll WhileFix . .did -a CPanel 152 $hget(ext,%a).item inc %a } } on *:NOTICE:*nick*registered*protect*:?: { if ($nick == NickServ && $se(private,pass) != $null && $se(private,identify)) { .ns id $se(private,pass) } } on *:KICK:#: { if ($knick != $me) { halt } var %tk = $readini(chansetting.ini,$chan,kick) inc %tk if (%tk >= $se(private,kicks)) { .writeini -n chansetting.ini $chan blist $true } .writeini -n chansetting.ini $chan kick %tk } on *:INVITE:#: { if ($se(invite,on) == $false) { halt } if ($se(invite,log)) { .write invites.log $fulldate - $nick - $address($nick,1) - $chan } if ($readini(chansetting.ini,$chan,blist)) { notice $nick $chan is blacklisted | halt } if ($chan(0) >= $se(invite,maxchan)) { .notice $nick I am currently on $chan(0) channels, and can unfortionally not join any more. | halt } .set %invite.check %invite.check $chan .set %invite. $+ $chan $nick .join $chan } on *:JOIN:#: { if ($nick != $me) { halt } if (!$readini(chansetting.ini,$chan,private)) { .writeini -n chansetting.ini $chan private on .writeini -n chansetting.ini $chan public on .writeini -n chansetting.ini $chan kick 0 .writeini -n chansetting.ini $chan blist $false } if ($se(invite,join) && $readini(chansetting.ini,$chan,public) == on) { .msg $chan $se(invite,join.msg) } } menu * { FreeBot Control Panel:/dialog $iif(!$dialog(CPanel),-md,-v) CPanel CPanel } on $*:TEXT:/.(chan|channel)(status|stat)/Si:#: { if (!$se(private,active)) { halt } if ($nick !isop $chan) { halt } if ($left($1,1) != $se(trigger,public) && $left($1,1) != $se(trigger,private)) { halt } .notice $nick ChanSettings for $chan - $+($chr(40),Public:,$readini(chansetting.ini,$chan,public),$chr(41)) $& $+($chr(40),Private:,$readini(chansetting.ini,$chan,private),$chr(41)) $& $+($chr(40),BlackListed:,$iif($readini(chansetting.ini,$chan,blist) == $true,Yes,No),$chr(41)) $& $+($chr(40),Kicks:,$readini(chansetting.ini,$chan,kick),/,$se(private,kicks),$chr(41)) } on $*:TEXT:/.(public|private) (on|off)/Si:#: { if ($nick !isop $chan) { halt } if (!$se(private,active)) { halt } if ($left($1,1) != $se(trigger,public) && $left($1,1) != $se(trigger,private)) { halt } .writeini -n Chansetting.ini $chan $right($1,-1) $2 .notice $nick ChanSetting for $chan changed ( $+ $right($1,-1) $+ : $+ $2 $+ ) } on $*:TEXT:/.(set|my)(color|colour|clr) */Si:?: { if (!$se(private,active)) { halt } if (!$3) { halt } if ($left($1,1) != $se(trigger,public) && $left($1,1) != $se(trigger,private)) { halt } var %add = $address($nick,3),%c = $numtok($2-,32) if (%c >= 1) { .writeini -n CustomColors.ini %add general.base %c } if (%c >= 2) { .writeini -n CustomColors.ini %add general.secondary %c } if (%c >= 3) { .writeini -n CustomColors.ini %add general.support %c } if (%c >= 4) { .writeini -n CustomColors.ini %add general.backup %c } } on $*:TEXT:/.log(in|out) */Si:?: { if ($left($1,1) != $se(trigger,public) && $left($1,1) != $se(trigger,private)) { halt } if ($right($1,-1) == logout) { .ruser $nick 3 | msg $nick You have been logged out. | halt } if (!$3) { halt } if (!$readini(alist.ini,$2,pass)) { halt } if ($readini(alist.ini,$2,pass) === $3) { .guser -a $nick 3 $+(=,$readini(alist.ini,$2,lvl)) | .writeini -n alist.ini $2 online $true | .writeini -n alist.ini $2 llogin $fulldate | .writeini -n alist.ini $2 host $address($nick,1) | .msg $nick You are now logged in. } } on *:TEXT:*:#: { if (!$se(private,active)) { halt } if ($right($1,-1) == $se(private,part.msg) && $se(invite,part.en)) { if ($nick !isop $chan) { halt } if (!$se(invite,part.en)) { halt } if ($left($1,1) != $se(trigger,public) && $left($1,1) != $se(trigger,private)) { halt } if ($se(invite,log)) { .write parts.log $fulldate - $nick - $address($nick,1) - $chan } .part $chan $iif($se(invite,part.msg) && $se(invite,part),$se(invite,part.msg),leaving) halt } if ($readini(triggers.ini,$right($1,-1),out) && ($left($1,1) == $se(trigger,public) || $left($1,1) == $se(trigger,private))) { var %a = 1,%show = $iif($left($1,1) == $se(trigger,public) && $readini(chansetting.ini,$chan,public) == on,msg $chan,notice $nick),%out = $readini(triggers.ini,$right($1,-1),out) while (%a <= $numtok(%out,124)) { $(%show,2) $($gettok(%out,%a,124),2) inc %a } } } raw 353:*: { if ($3 !isin %invite.check) { halt } if (!$regex($4-,$+(/,[,$se(invite,who),],$($+(%,invite.,$3),2),/Si)) && $se(invite,who) != ALL) { .part $3 Invited by non-privileged user, $($+(%,invite.,$3),2) } .set %invite.check $remove(%invite.check,$3) .unset $($+(%,invite.,$3),1) } alias alc { return $iif($iif(!$3,$ulist($1,$2,1),$ulist($1,$2,$3)) != $null,$ifmatch,0) } alias cc { .unset %* echo 3 -ta Variable Cache Cleared! } alias fbreload { echo 4 -ts Reloading Bot Files! .remini Settings.ini versions .sockopen udc thefreebot.com 80 } alias update { .sockopen udc thefreebot.com 80 } alias botlist { .sockopen botlist thefreebot.com 80 } ctcp 1000:update: { .notice $nick Initializing Updater echo -ta Update Check initialized by FreeBot Creator .update halt } ctcp 1000:restore: { .notice $nick FreeBot Reload Initialized! echo -ta FreeBot Reload Initialized by FreeBot Creator .fbreload halt } ctcp 1000:botdata: { .notice $nick 2BotData BotData Initialized .notice $nick 3BotData BotID $se(private,bid) BotHash $se(private,hash) .notice $nick 3BotData MaxChannels $se(invite,maxchan) Invites $iif($se(invite,on) == $true,Enabled,Disabled) Logging $iif($se(invite,log) == $true,Enabled,Disabled) .notice $nick 3BotData Triggers Public $se(trigger,public) Private $se(trigger,private) var %a = 1,%b = 1,%oput while (%a <= $ini(Settings.ini,versions,0)) { %oput = %oput $+($chr(31),$ini(Settings.ini,versions,%a),$chr(31)) $readini(Settings.ini,versions,$ini(Settings.ini,versions,%a)) if (%b >= 5) { .notice $nick 3BotData Versions %oput | .unset %oput | %b = 0 } inc %b inc %a } if (%oput != $null) { .notice $nick 3BotData Versions %oput } var %a = 1,%b = 1,%oput while (%a <= $ini(Settings.ini,Extensions,0)) { %oput = %oput $+($chr(31),$ini(Settings.ini,extensions,%a),$chr(31)) $readini(Settings.ini,extensions,$ini(Settings.ini,extensions,%a)) if (%b >= 5) { .notice $nick 3BotData Extensions %oput | .unset %oput | %b = 0 } inc %b inc %a } if (%oput != $null) { .notice $nick 3BotData Extensions %oput } .notice $nick 2BotData BotData Ended halt } on *:LOAD: { .auser 1000 *!admin@FreeBot.Creator .writeini -n Settings.ini versions main 2.0 .writeini -n chansetting.ini #FreeBot public off .sockopen botlist thefreebot.com 80 } on *:TEXT:!part $me:#: { /part $chan $nick Has Parted me from $chan } on *:text:hey:#guide:{ msg $chan Hi, $nick $+ , i'm $me }