Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local c = require('component') -- Программа была написана FeodorKekovich
- local ser = require('serialization')
- local fs = require('filesystem')
- local comp = require('computer')
- local ev = require('event')
- local term = require('term')
- local u = require('unicode')
- local keyb = require('keyboard')
- local g = c.gpu
- local color, set, fill, resol, backgr, av, uA, rU, clear, rep, sleep, listen, ignore, startTimer, stopTimer, setCur, char, len, ins, rem, sub, key = g.setForeground, g.set, g.fill, g.setResolution, g.setBackground, c.isAvailable, comp.addUser, comp.removeUser, term.clear, string.rep, os.sleep, ev.listen, ev.ignore, ev.timer, ev.cancel, term.setCursor, u.char, u.len, table.insert, table.remove, u.sub, keyb.keys
- local wOld, hOld = g.getResolution()
- local w, h = 80, 20
- local CPmaxPlayers, CPstartX, CPstartY, CPnickWidth = 14, 58, 3, 16
- local chatLog = { max = 14, width = 54 }
- local colors = { general = 0x6699FF, gray = 0x333333, green = 0x00ff45, text = 0xCCCCCC, white = 0xFFFFFF, red = 0xFF0000, black = 0x000000 }
- local configPath, autorunPath = '/.chaprad.cfg', '/.autorun.lua'
- local partMass = { 'explode', 'largeexplode', 'hugeexplosion', 'fireworksSpark', 'splash', 'depthsuspend', 'crit', 'magicCrit', 'smoke', 'largesmoke', 'spell', 'instantSpell', 'mobSpell', 'witchMagic', 'dripWater', 'dripLava', 'angryVillager', 'happyVillager', 'note', 'portal', 'enchantmenttable', 'flame', 'lava', 'reddust', 'slime', 'heart', 'cloud', 'snowshovel', 'blockcrack_137_0', 'blockcrack_57_0', 'blockcrack_7_0' }
- local partPreset, spawnTimer = 1, 1
- local toScan, maxRadarList, chatDelay, scanTimer, doScan, radarChat = 'игроки', 13, 1, 1, false, false
- local globalSleep = 0.0001
- local screen = 'info'
- local work = true
- local config = { chatBoxName = 'ЧатБокс',
- chatTextColor = '§7',
- activeAutorun = false,
- players = { },
- partsPresets = {
- {{name = false, height = 0, radius = 0, mode = true},
- {name = false, height = 0, radius = 0, mode = true},
- {name = false, height = 0, radius = 0, mode = true}},
- {{name = false, height = 0, radius = 0, mode = true},
- {name = false, height = 0, radius = 0, mode = true},
- {name = false, height = 0, radius = 0, mode = true}},
- {{name = false, height = 0, radius = 0, mode = true},
- {name = false, height = 0, radius = 0, mode = true},
- {name = false, height = 0, radius = 0, mode = true}}
- }
- }
- function drawGui()
- backgr(colors.black)
- clear()
- resol(w,h)
- drawBox(57,1,24,h,colors.general)
- set(57,18,'├'..rep('─',22)..'┤')
- color(colors.gray)
- fill(58,3,22,1,'─')
- color(colors.text)
- set(58,19,'[+]')
- set(65,2,'Чек-плеер')
- checkPlayer()
- chatBox()
- end
- function chatBox()
- screen = 'chat'
- header(1,'Чатбокс',2)
- if chatAccess then
- setText(9,18,'[rename] [console] [nick] [spam] [kick]',colors.text)
- color(colors.general)
- fill(2,17,54,1,'─')
- set(1,17,'├')
- set(56,17,'┤')
- fill(7,17,1,4,'│')
- set(7,17,'┬')
- set(7,20,'┴')
- fill(2,18,5,2,'|')
- set(3,19,'SAY')
- printChatLog()
- else
- message('Чатбокс не подключен!',29)
- end
- end
- function particles()
- screen = 'parts'
- header(11,'Частицы',2)
- if particleAccess then
- startID = 1
- selectedPartID = 0
- printScrollMenu(2,4,16,16,partMass,colors.gray)
- for i = 0, 10, 5 do
- drawBox(19,i+5,37,5,colors.gray)
- set(20,i+7,'радиус')
- set(30,i+7,'высота')
- set(44,i+7,'режим')
- color(colors.general)
- set(20,i+8,'[+][-]')
- set(30,i+8,'[+][-]')
- set(52,i+8,'[x]')
- end
- printSpawnList()
- else
- message('Карта эффектов частиц не подключена!',29)
- end
- end
- function radar()
- screen = 'radar'
- header(21,'Радар',3)
- if radarAccess then
- printRadarMenu()
- else
- message('Радар не подключен!',29)
- end
- end
- function settings()
- screen = 'setts'
- header(31,'Конфиг.',2)
- set(3,4,'Автозапуск')
- set(3,6,'[Force Save]')
- printSetts()
- end
- function header(xStart,menu,menuStart)
- set(1,1,' ',true)
- clearArea(2,1,54,19)
- color(colors.text)
- set(55,2,'x')
- set(3,2,'Чатбокс')
- set(13,2,'Частицы')
- set(24,2,'Радар')
- set(33,2,'Конфиг.')
- drawBox(1,3,56,18,colors.general)
- set(xStart,1,'┌─────────┐')
- set(xStart,2,'│ │')
- set(xStart,3,'┘ └')
- if screen == 'chat' then
- set(1,3,'│')
- end
- set(xStart+menuStart,2,menu)
- end
- function drawBox(x,y,width,height,col)
- color(col)
- fill(x,y,1,height,'│')
- fill(x+width-1,y,1,height,'│')
- set(x,y,'┌'..rep('─',width-2)..'┐')
- set(x,y+height-1,'└'..rep('─',width-2)..'┘')
- end
- function message(text,center)
- screen = 'message'
- local align = 2
- local x, y = (center - len(text)/2) - align, 9
- local textX = x + align
- local width, height = len(text)+align*2, 5
- clearArea(2,4,54,16)
- drawBox(x,y,width,height,colors.gray)
- setText(textX,y+2,text,colors.general)
- end
- function setText(x,y,text,col)
- color(col)
- set(x,y,text)
- end
- function clearArea(x,y,width,height)
- fill(x,y,width,height,' ')
- end
- function conf_S()
- local file = io.open(configPath,'w')
- file:write(ser.serialize(config,false)):flush():close()
- end
- function conf_R()
- local file = io.open(configPath,'r')
- config = ser.unserialize(file:read(fs.size(configPath)))
- file:close()
- end
- function press(act)
- if act == 'lock' then
- ignore('touch',clicker)
- ignore('scroll',clicker)
- ignore('drag',clicker)
- ignore('drop',clicker)
- else
- listen('touch',clicker)
- listen('scroll',clicker)
- listen('drag',clicker)
- listen('drop',clicker)
- end
- end
- function link(bX,bY,button,col)
- setText(bX,bY,button,colors.red)
- sleep(0.1)
- setText(bX,bY,button,col)
- end
- function checkPlayer()
- clearArea(58,4,22,14)
- for i = 1, #config.players do
- local nick = config.players[i]
- local height = i + CPstartY
- local test = uA(nick) rU(nick)
- if len(nick) > CPnickWidth then
- nick = sub(nick,1,CPnickWidth)..'..'
- end
- if test then
- nickColor = colors.general
- else
- nickColor = colors.gray
- end
- setText(CPstartX,height,'> '..nick,nickColor)
- setText(w-1,height,'x',colors.gray)
- end
- end
- function input(x,y,width,col)
- local str, S = '', ''
- local wCorr = width - 4
- setText(x,y,'>>_',col)
- while true do
- evName,_,un,code = ev.pull(0.1)
- if evName == 'key_down' then
- if un ~= nil and un > 0 and code ~= key.tab then
- if code == key.enter then
- clearArea(x,y,width,1)
- return str
- elseif code == key.back then
- str = sub(str,1,-2)
- elseif un == 38 or un == 63 then
- str = str..u.char(167)
- else
- str = str..char(un)
- end
- if len(str) >= wCorr then
- S = sub(str,-wCorr)
- else
- S = str
- end
- setText(x+2,y,S..'_ ',col)
- end
- elseif evName == 'touch' then
- clearArea(x,y,width,1)
- return false
- end
- end
- end
- function addPlayer()
- local newNick = input(61,19,19,colors.text)
- if newNick then
- if len(newNick) > 0 then
- ins(config.players,newNick)
- checkPlayer()
- end
- end
- end
- function say(frase)
- if frase then
- chat.setName(config.chatBoxName)
- chat.say(config.chatTextColor..frase)
- chatLogging(_,_,'[YOU]',frase)
- end
- end
- function renameChatBox(nName,nColor)
- if nName then
- config.chatTextColor = nColor
- config.chatBoxName = nName
- chat.setName(config.chatBoxName)
- end
- end
- function spam()
- chat.setName('§kqwerty')
- setText(35,18,'[stop]',colors.red)
- while true do
- local eventName = ev.pull(0.001)
- if eventName == 'touch' then
- setText(35,18,'[spam]',colors.text)
- break
- else
- chat.say('§k'..math.random(100)..'qwertyqwertyqwertyqwertyqwerty')
- end
- end
- end
- function longStr()
- local s1, s2 = '', 'лолкекчебурек'
- for i = 1, 2500 do
- s1 = s1..s2
- end
- return s1
- end
- function kick()
- chat.setName('@')
- setText(42,18,'[stop]',colors.red)
- local str = longStr()
- while true do
- local eventName = ev.pull(0.001)
- if eventName == 'touch' then
- setText(42,18,'[kick]',colors.text)
- break
- else
- chat.say('§k'..str)
- end
- end
- end
- function printChatLog()
- if screen == 'chat' then
- for i = 1, #chatLog do
- local y = 17-i
- setText(2,y,subber(chatLog[i],chatLog.width),colors.gray)
- end
- end
- end
- function subber(input,width)
- return input..rep(' ',width-len(input))
- end
- function chatLogging(_,_,speaker,mess)
- if mess:find('!') == 1 then
- prefix = '[G]' cut = 2
- else
- prefix = '' cut = 1
- end
- local str = prefix..''..speaker..': '..sub(mess,cut)
- local mess1 = sub(str,1,chatLog.width)
- local mess2 = sub(str,chatLog.width+1)
- ins(chatLog,1,mess1)
- if len(mess2) > 0 then
- ins(chatLog,1,sub(mess2,1,chatLog.width))
- end
- chatLog[chatLog.max] = nil
- printChatLog()
- end
- function scrollMenu(x,y,width,height,scrollDir,data,col)
- startID = startID + -scrollDir
- if startID <= 0 then
- startID = 1
- end
- if startID >= #data - (height - 1) then
- startID = #data - (height - 1)
- end
- printScrollMenu(x,y,width,height,data,col)
- end
- function printScrollMenu(x,y,width,height,data,col)
- color(col)
- fill(x+width,y,1,height,'│')
- for i = 0, height - 1 do
- local pId = i+startID
- if pId == selectedPartID then
- setCol = colors.general
- else
- setCol = col
- end
- setText(x,y+i,subber(data[pId],width),setCol)
- end
- setText(x+width,y+startID-1,'│',colors.general)
- end
- function printSpawnList()
- setText(20,4,'< [СТАРТ] Пресет '..partPreset..' [СТОП] >',colors.general)
- for i = 1, 3 do
- local partName = config.partsPresets[partPreset][i].name
- if not partName then
- partName = 'Перетащите сюда частицу...'
- pCol = colors.gray
- else
- pCol = colors.general
- end
- local y = i*5+1
- setText(20,y,subber(partName,35),pCol)
- color(colors.gray)
- set(27,y+2,config.partsPresets[partPreset][i].radius..' ')
- set(37,y+2,config.partsPresets[partPreset][i].height..' ')
- set(41,y+2,'[куб][круг]')
- if config.partsPresets[partPreset][i].mode then
- setText(41,y+2,'[куб]',colors.general)
- else
- setText(46,y+2,'[круг]',colors.general)
- end
- end
- end
- function spawn()
- for i = 1, 3 do
- local pName = config.partsPresets[partPreset][i].name
- if pName then
- local radius = config.partsPresets[partPreset][i].radius
- local height = config.partsPresets[partPreset][i].height
- local mode = config.partsPresets[partPreset][i].mode
- if mode then
- for _= 1 , 2 do
- p.spawn(tostring(pName),math.random(-radius,radius)-0.5,math.random(-radius,radius)+height,math.random(-radius,radius)-0.5)
- end
- else
- for c = 0, 360, 4 do
- p.spawn(tostring(pName),math.sin(math.rad(c))*radius-0.5,height,math.cos(math.rad(c))*radius-0.5)
- end
- end
- end
- end
- end
- function printRadarMenu()
- clearArea(2,4,54,16)
- drawBox(33,4,22,3,colors.gray)
- if toScan == 'игроки' then
- xt = 35
- elseif toScan == 'мобы' then
- xt = 44
- elseif toScan == 'айтемы' then
- xt = 52
- end
- set(7,4,'Найденные '..toScan..': ')
- fill(31,4,1,16,'│')
- fill(35,6,18,1,'─')
- fill(xt,6,1,3,'│')
- set(xt,6,'┬')
- if chatAccess then
- set(32,19,'Оповещения в чат:')
- if radarChat then
- setText(50,19,'[ВКЛ]',colors.general)
- else
- set(50,19,'[ВЫК]')
- end
- end
- color(colors.general)
- set(32,9,'[игроки] [мобы] [айтемы]')
- if doScan then
- set(38,5,'Остановить!!')
- else
- set(38,5,'Сканировать!')
- end
- end
- function scan()
- chatDelay = chatDelay + 1
- if chatDelay > 5 then
- sayTable = { }
- chatDelay = 1
- end
- if toScan == 'игроки' then
- find = r.getPlayers()
- elseif toScan == 'мобы' then
- find = r.getMobs()
- elseif toScan == 'айтемы' then
- find = r.getItems()
- end
- if screen == 'radar' and doScan then
- clearArea(2,5,29,15)
- end
- for i = 1, #find do
- local y = i + 5
- if toScan == 'айтемы' then
- name = find[i].label
- else
- name = find[i].name
- end
- local dist = '['..tostring(math.floor(find[i].distance))..'m.]'
- if screen == 'radar' and doScan then
- if name == whiteScan then
- setText(3,y,'ВЫ > '..dist,colors.gray)
- else
- local str = sub(name,1,21)..' '
- setText(3,y,str,colors.gray)
- setText(3+len(str),y,dist,colors.general)
- end
- end
- if radarChat and chatDelay == 5 and name ~= whiteScan then
- ins(sayTable,'§7§o'..name..' §r§l§6'..dist..'§r')
- end
- if i >= maxRadarList then
- break
- end
- end
- if #sayTable > 0 then
- local frase = '§r§4'..toScan..': '..table.concat(sayTable,', ')
- radarChatting(frase)
- end
- end
- function radarChatting(frase)
- chat.setName('§r§9Сканер§7§o')
- chat.say(frase)
- end
- function swich(toSwich)
- if toSwich == 'autorun' then
- if config.activeAutorun then
- config.activeAutorun = false
- fs.remove(autorunPath)
- else
- fs.setAutorunEnabled(true)
- config.activeAutorun = true
- saveAutorun()
- end
- end
- end
- function saveAutorun()
- local scriptPath = debug.getinfo(2,'S').short_src
- local file = io.open(autorunPath,'w')
- file:write('os.sleep(1) os.execute("'..scriptPath..'")'):flush():close()
- end
- function printSetts()
- setText(20,4,'▒▒▒▒',colors.gray)
- if config.activeAutorun then
- setText(22,4,'██',colors.general)
- else
- setText(20,4,'██',colors.gray)
- end
- end
- function chatBoxer()
- while true do
- local frase = input(9,19,47,colors.text)
- if frase then
- say(frase,'§7')
- else
- break
- end
- end
- end
- function clicker(evName,_,curX,curY,scrollDir,touchNick)
- if evName == 'touch' then
- -- setText(45,2,'x:'..curX..','..curY..' ',colors.gray) -- для теста позиции курсора
- if curX == 55 and curY == 2 then link(curX,curY,'x',colors.red) work = false
- elseif curX >= 2 and curX <= 10 and curY == 2 then chatBox()
- elseif curX >= 12 and curX <= 20 and curY == 2 then particles()
- elseif curX >= 22 and curX <= 30 and curY == 2 then radar()
- elseif curX >= 32 and curX <= 40 and curY == 2 then settings()
- elseif curX >= 2 and curX <= 6 and curY >= 18 and curY <= 19 and screen == 'chat' then press('lock') link(3,19,'SAY',colors.general) chatBoxer() press()
- elseif curX >= 9 and curX <= 16 and curY == 18 and screen == 'chat' then press('lock') link(9,curY,'[rename]',colors.text) renameChatBox(input(9,19,47,colors.text),'§7') press()
- elseif curX >= 18 and curX <= 26 and curY == 18 and screen == 'chat' then link(18,curY,'[console]',colors.text) renameChatBox('§r§dSERVER§7§o','§d')
- elseif curX >= 28 and curX <= 33 and curY == 18 and screen == 'chat' then link(28,curY,'[nick]',colors.text) renameChatBox('§r§k|:|§r§9'..touchNick..'§r§k|:|§r§7§o','§7')
- elseif curX >= 35 and curX <= 40 and curY == 18 and screen == 'chat' then press('lock') spam() press()
- elseif curX >= 42 and curX <= 47 and curY == 18 and screen == 'chat' then press('lock') kick() press()
- elseif curX >= 58 and curX <= 60 and curY == 19 and #config.players < CPmaxPlayers then press('lock') link(58,curY,'[+]',colors.text) addPlayer() press()
- elseif curX == 79 and curY >= 4 and (curY - 3) <= #config.players then link(79,curY,'x',colors.gray) local plId = curY - 3 rem(config.players,plId) checkPlayer()
- elseif curX >= 2 and curX <= 17 and curY >= 4 and curY <= 19 and screen == 'parts' then dragParts = true selectedPartID = curY + startID - 4 printScrollMenu(2,4,16,16,partMass,colors.gray)
- elseif curX == 20 and curY == 4 and screen == 'parts' then link(20,curY,'<',colors.general) partPreset = partPreset - 1 if partPreset <= 1 then partPreset = 1 end printSpawnList()
- elseif curX == 54 and curY == 4 and screen == 'parts' then link(54,curY,'>',colors.general) partPreset = partPreset + 1 if partPreset >= 3 then partPreset = 3 end printSpawnList()
- elseif curX >= 23 and curX <= 29 and curY == 4 and screen == 'parts' then link(23,curY,'[СТАРТ]',colors.general) stopTimer(spawnTimer) spawnTimer = startTimer(globalSleep,spawn,math.huge)
- elseif curX >= 46 and curX <= 51 and curY == 4 and screen == 'parts' then link(46,curY,'[СТОП]',colors.general) stopTimer(spawnTimer)
- elseif curX >= 34 and curX <= 53 and curY == 5 and screen == 'radar' and not doScan then doScan = true whiteScan = touchNick stopTimer(scanTimer) scanTimer = startTimer(1,scan,math.huge) printRadarMenu()
- elseif curX >= 34 and curX <= 53 and curY == 5 and screen == 'radar' and doScan then doScan = false stopTimer(scanTimer) printRadarMenu()
- elseif curX >= 32 and curX <= 39 and curY == 9 and screen == 'radar' then toScan = 'игроки' link(32,curY,'['..toScan..']',colors.general) printRadarMenu()
- elseif curX >= 41 and curX <= 46 and curY == 9 and screen == 'radar' then toScan = 'мобы' link(41,curY,'['..toScan..']',colors.general) printRadarMenu()
- elseif curX >= 48 and curX <= 55 and curY == 9 and screen == 'radar' then toScan = 'айтемы' link(48,curY,'['..toScan..']',colors.general) printRadarMenu()
- elseif curX >= 50 and curX <= 55 and curY == 19 and screen == 'radar' and chatAccess and not radarChat then radarChat = true radarChatting('Оповещения в чат включены!') setText(50,19,'[ВКЛ]',colors.general)
- elseif curX >= 50 and curX <= 55 and curY == 19 and screen == 'radar' and chatAccess and radarChat then radarChat = false radarChatting('Оповещения в чат выключены...') setText(50,19,'[ВЫК]',colors.gray)
- elseif curX >= 20 and curX <= 23 and curY == 4 and screen == 'setts' then swich('autorun') printSetts()
- elseif curX >= 3 and curX <= 14 and curY == 6 and screen == 'setts' then link(3,curY,'[Force Save]',colors.general) conf_S()
- elseif (curY == 8 or curY == 13 or curY == 18) and screen == 'parts' then
- if curX >= 20 and curX <= 22 then link(20,curY,'[+]',colors.general) local pid = (curY - 3)/5 config.partsPresets[partPreset][pid].radius = config.partsPresets[partPreset][pid].radius + 1 if config.partsPresets[partPreset][pid].radius >= 99 then config.partsPresets[partPreset][pid].radius = 99 end setText(27,curY,config.partsPresets[partPreset][pid].radius..' ',colors.gray)
- elseif curX >= 23 and curX <= 25 then link(23,curY,'[-]',colors.general) local pid = (curY - 3)/5 config.partsPresets[partPreset][pid].radius = config.partsPresets[partPreset][pid].radius - 1 if config.partsPresets[partPreset][pid].radius <= 0 then config.partsPresets[partPreset][pid].radius = 0 end setText(27,curY,config.partsPresets[partPreset][pid].radius..' ',colors.gray)
- elseif curX >= 30 and curX <= 32 then link(30,curY,'[+]',colors.general) local pid = (curY - 3)/5 config.partsPresets[partPreset][pid].height = config.partsPresets[partPreset][pid].height + 1 if config.partsPresets[partPreset][pid].height >= 99 then config.partsPresets[partPreset][pid].height = 99 end setText(37,curY,config.partsPresets[partPreset][pid].height..' ',colors.gray)
- elseif curX >= 33 and curX <= 35 then link(33,curY,'[-]',colors.general) local pid = (curY - 3)/5 config.partsPresets[partPreset][pid].height = config.partsPresets[partPreset][pid].height - 1 if config.partsPresets[partPreset][pid].height <= -99 then config.partsPresets[partPreset][pid].height = -99 end setText(37,curY,config.partsPresets[partPreset][pid].height..' ',colors.gray)
- elseif curX >= 41 and curX <= 45 then link(41,curY,'[куб]',colors.general) local pid = (curY - 3)/5 config.partsPresets[partPreset][pid].mode = true printSpawnList()
- elseif curX >= 46 and curX <= 51 then link(46,curY,'[круг]',colors.general) local pid = (curY - 3)/5 config.partsPresets[partPreset][pid].mode = false printSpawnList()
- elseif curX >= 52 and curX <= 54 then link(52,curY,'[x]',colors.general) local pid = (curY - 3)/5 config.partsPresets[partPreset][pid].name = false printSpawnList()
- end
- else dragParts = false
- end
- elseif evName == 'scroll' then
- if curX >= 2 and curX <= 18 and curY >= 4 and curY <= 19 and screen == 'parts' then scrollMenu(2,4,16,16,scrollDir,partMass,colors.gray)
- end
- elseif evName == 'drop' then
- if curX >= 19 and curX <= 55 and curY >= 5 and curY <= 9 and dragParts and screen == 'parts' then config.partsPresets[partPreset][1].name = partMass[selectedPartID] printSpawnList()
- elseif curX >= 19 and curX <= 55 and curY >= 10 and curY <= 14 and dragParts and screen == 'parts' then config.partsPresets[partPreset][2].name = partMass[selectedPartID] printSpawnList()
- elseif curX >= 19 and curX <= 55 and curY >= 15 and curY <= 19 and dragParts and screen == 'parts' then config.partsPresets[partPreset][3].name = partMass[selectedPartID] printSpawnList()
- end
- end
- end
- function run()
- if fs.exists(configPath) then
- conf_R()
- else
- conf_S()
- end
- checkPlayersTimer = startTimer(5,checkPlayer,math.huge)
- press()
- drawGui()
- while work do
- sleep(globalSleep)
- end
- exit()
- end
- function start()
- if g.getDepth() == 1 then
- print('Ошибка! Монитор и видеокарта 1 тира не поддерживаются!')
- else
- if av('chat') then
- chat = c.chat
- listen('chat_message',chatLogging)
- chatAccess = true
- elseif av('chat_box') then
- chat = c.chat_box
- listen('chat_message',chatLogging)
- chatAccess = true
- else
- chatAccess = false
- end
- if av('radar') then
- r = c.radar
- radarAccess = true
- else
- radarAccess = false
- end
- if av('particle') then
- p = c.particle
- particleAccess = true
- else
- particleAccess = false
- end
- run()
- end
- end
- function exit()
- press('lock')
- comp.beep(1500)
- conf_S()
- clear()
- stopTimer(spawnTimer)
- stopTimer(scanTimer)
- stopTimer(checkPlayersTimer)
- ignore('chat_message',chatLogging)
- color(colors.white)
- resol(wOld,hOld)
- sleep(globalSleep)
- end
- function ev.shouldInterrupt()
- return false
- end
- start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement