All pastes #552435 Raw Edit

Mine

public text v1 · immutable
·published 2007-06-09 08:54 UTC
rendered paste body
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
}