All pastes #161433 Raw Edit

TXTED beta release

public lua v1 · immutable
·published 2006-09-05 12:50 UTC
rendered paste body
--WSMENU V1b BY DEVENGER. RELEASED FREELY; PLEASE USE WHEREVER IT IS USEFUL!--DOESN'T REQUIRE GMX. MUHAHAHAHA!if wsmenu then  if wsmenu.hooks then    for i,j in wsmenu.hooks do      UnHookEvent(j)    end  endendwsmenu = {}function wsmenu.color4(r,g,b,a)  return {r=r,g=g,b=b,a=a};endwsmenu.menus = {}wsmenu.players = {}for i=1, _MaxPlayers() do  wsmenu.players[i] = {}  wsmenu.players[i].opened = {}endwsmenu.hooks = {}wsmenu.templates = {}wsmenu.screenWidth = 1024wsmenu.screenHeight = 768wsmenu.debug = falsefunction wsmenu.SetAsTemplate (id, template)  wsmenu.templates[template] = wsmenu.menus[id]endfunction wsmenu.Msg (msg)  if wsmenu.debug then    _Msg(msg)  endendfunction wsmenu.Create (id, template)  wsmenu.menus[id] = {}  wsmenu.menus[id].currentmax = 0  wsmenu.menus[id].text = {}  wsmenu.menus[id].rect = {}  wsmenu.menus[id].selecter = {}  wsmenu.menus[id].pos = {}  wsmenu.menus[id].items = {}  if template then    wsmenu.menus[id].pos.x = wsmenu.templates[template].pos.x    wsmenu.menus[id].pos.y = wsmenu.templates[template].pos.y    wsmenu.menus[id].rect.texture = wsmenu.templates[template].rect.texture    wsmenu.menus[id].rect.colour = wsmenu.templates[template].rect.colour    wsmenu.menus[id].rect.width = wsmenu.templates[template].rect.width    wsmenu.menus[id].rect.border = wsmenu.templates[template].rect.border    wsmenu.menus[id].text.font = wsmenu.templates[template].text.font    wsmenu.menus[id].text.colour = wsmenu.templates[template].text.colour    wsmenu.menus[id].text.height = wsmenu.templates[template].text.height    wsmenu.menus[id].selecter.texture = wsmenu.templates[template].selecter.texture    wsmenu.menus[id].selecter.colour = wsmenu.templates[template].selecter.colour    wsmenu.menus[id].selecter.leftinc = wsmenu.templates[template].selecter.leftinc    wsmenu.menus[id].selecter.rightdec = wsmenu.templates[template].selecter.rightdec  end  return idendfunction wsmenu.Position (id, x, y)  wsmenu.menus[id].pos.x = x  wsmenu.menus[id].pos.y = yendfunction wsmenu.RectProperties (id, texture, colour, width, border)  wsmenu.menus[id].rect.texture = texture  wsmenu.menus[id].rect.colour = colour  wsmenu.menus[id].rect.width = width  wsmenu.menus[id].rect.border = borderendfunction wsmenu.TextProperties (id, font, colour, height)  wsmenu.menus[id].text.font = font  wsmenu.menus[id].text.colour = colour  wsmenu.menus[id].text.height = heightendfunction wsmenu.SelecterProperties (id, texture, colour, leftinc, rightdec)  wsmenu.menus[id].selecter.texture = texture  wsmenu.menus[id].selecter.colour = colour  wsmenu.menus[id].selecter.leftinc = leftinc  wsmenu.menus[id].selecter.rightdec = rightdecendfunction wsmenu.Add (id, itemid, text, selectable, actions)  wsmenu.menus[id].items[itemid] = {}  wsmenu.menus[id].items[itemid].text = text  wsmenu.menus[id].items[itemid].selectable = selectable  if actions ~= nil then    wsmenu.menus[id].items[itemid].actions = actions  end  if selectable == true then    wsmenu.menus[id].items[itemid].colour = wsmenu.menus[id].text.colour  else    wsmenu.menus[id].items[itemid].colour = wsmenu.menus[id].text.colour  end  if itemid > wsmenu.menus[id].currentmax then    wsmenu.menus[id].currentmax = itemid  endendfunction wsmenu.Spawn (id, PlayerID)    for j=1, 10 do      used = false      for k,l in wsmenu.players[PlayerID].opened do        if l == j then          used = true        end      end      if not used then        wsmenu.players[PlayerID].opened[id] = j        _Msg("Menu identity: "..j.."\n")        break      end    end  for i in wsmenu.menus[id].items do    wsmenu.Msg("Writing text "..wsmenu.menus[id].items[i].text.."\n")    --gmx.makeText("m"..id.."i"..i,PlayerID,wsmenu.menus[id].text.font,wsmenu.menus[id].items[i].text,wsmenu.menus[id].pos.x,wsmenu.menus[id].pos.y+(wsmenu.menus[id].text.height*(i-1)),wsmenu.menus[id].items[i].colour,0,0,9999,0.2)    col = wsmenu.menus[id].items[i].colour    _GModText_Start(wsmenu.menus[id].text.font);    _GModText_SetPos(wsmenu.menus[id].pos.x/wsmenu.screenWidth,(wsmenu.menus[id].pos.y+(wsmenu.menus[id].text.height*(i-1)))/wsmenu.screenHeight);    _GModText_SetText(wsmenu.menus[id].items[i].text);    _GModText_SetTime(9999,0,0);    _GModText_SetColor(col.r,col.g,col.b,col.a);    _GModText_Send(PlayerID, 20000+(wsmenu.players[PlayerID].opened[id]*100)+i);    wsmenu.Msg("Text written.\n")  end  col = wsmenu.menus[id].rect.colour  --gmx.makeRect("back"..id,PlayerID,wsmenu.menus[id].rect.texture,wsmenu.menus[id].pos.x-wsmenu.menus[id].rect.border,wsmenu.menus[id].pos.y-wsmenu.menus[id].rect.border,wsmenu.menus[id].rect.width,wsmenu.menus[id].text.height*wsmenu.menus[id].currentmax+wsmenu.menus[id].rect.border*2,wsmenu.menus[id].rect.colour,0,0,9999,0.3)  _GModRect_Start(wsmenu.menus[id].rect.texture);  _GModRect_SetPos((wsmenu.menus[id].pos.x-wsmenu.menus[id].rect.border)/wsmenu.screenWidth,(wsmenu.menus[id].pos.y-wsmenu.menus[id].rect.border)/wsmenu.screenHeight,wsmenu.menus[id].rect.width/wsmenu.screenWidth,(wsmenu.menus[id].text.height*wsmenu.menus[id].currentmax+wsmenu.menus[id].rect.border*2)/wsmenu.screenHeight);  _GModRect_SetColor(col.r,col.g,col.b,col.a);  _GModRect_SetTime(9999,0,0);  _GModRect_Send(PlayerID, 20000+wsmenu.players[PlayerID].opened[id]);endfunction wsmenu.Select (id, PlayerID)  wsmenu.players[PlayerID].selected = {}  wsmenu.players[PlayerID].selected.menuid = id  wsmenu.players[PlayerID].selected.option = 1  wsmenu.FindNextSelectableOption(PlayerID)endfunction wsmenu.Hide (id, PlayerID)  for i in wsmenu.menus[id].items do    --gmx.hideText("m"..id.."i"..i, PlayerID, 0)    _GModText_Hide(PlayerID, 20000+(wsmenu.players[PlayerID].opened[id]*100)+i)  end  --gmx.hideRect("back"..id, PlayerID, 0)  _GModRect_Hide(PlayerID, 20000+wsmenu.players[PlayerID].opened[id])  _GModRect_Hide(PlayerID, 21000+wsmenu.players[PlayerID].opened[id])  --gmx.hideRect("option", PlayerID, 0)  wsmenu.players[PlayerID].opened[id] = nil  wsmenu.players[PlayerID].selected = nilendfunction wsmenu.FindNextSelectableOption (PlayerID)  found = false  while found == false do    if wsmenu.menus[wsmenu.players[PlayerID].selected.menuid].items[wsmenu.players[PlayerID].selected.option] then      if wsmenu.menus[wsmenu.players[PlayerID].selected.menuid].items[wsmenu.players[PlayerID].selected.option].selectable then        found = true      else        wsmenu.players[PlayerID].selected.option = wsmenu.players[PlayerID].selected.option + 1      end    else      wsmenu.players[PlayerID].selected.option = 1    end  end  wsmenu.DrawSelecter(PlayerID)endfunction wsmenu.FindLastSelectableOption (PlayerID)  found = false  while found == false do    if wsmenu.menus[wsmenu.players[PlayerID].selected.menuid].items[wsmenu.players[PlayerID].selected.option] then      if wsmenu.menus[wsmenu.players[PlayerID].selected.menuid].items[wsmenu.players[PlayerID].selected.option].selectable then        found = true      else        wsmenu.players[PlayerID].selected.option = wsmenu.players[PlayerID].selected.option - 1      end    else      wsmenu.players[PlayerID].selected.option = wsmenu.menus[wsmenu.players[PlayerID].selected.menuid].currentmax    end  end  wsmenu.DrawSelecter(PlayerID)endfunction wsmenu.DrawSelecter (PlayerID)  r = wsmenu.players[PlayerID].selected.menuid  col = wsmenu.menus[r].selecter.colour  --gmx.makeRect("option",PlayerID,wsmenu.menus[r].selecter.texture,wsmenu.menus[r].pos.x-wsmenu.menus[r].rect.border+wsmenu.menus[r].selecter.leftinc,wsmenu.menus[r].pos.y-wsmenu.menus[r].text.height+wsmenu.players[PlayerID].selected.option*wsmenu.menus[r].text.height,wsmenu.menus[r].rect.width-wsmenu.menus[r].selecter.leftinc-wsmenu.menus[r].selecter.rightdec,wsmenu.menus[r].text.height-1,wsmenu.menus[r].selecter.colour,0,0,9999,0.3)  _GModRect_Start(wsmenu.menus[r].selecter.texture);  _GModRect_SetPos((wsmenu.menus[r].pos.x-wsmenu.menus[r].rect.border+wsmenu.menus[r].selecter.leftinc)/wsmenu.screenWidth,(wsmenu.menus[r].pos.y-wsmenu.menus[r].text.height+wsmenu.players[PlayerID].selected.option*wsmenu.menus[r].text.height)/wsmenu.screenHeight,(wsmenu.menus[r].rect.width-wsmenu.menus[r].selecter.leftinc-wsmenu.menus[r].selecter.rightdec)/wsmenu.screenWidth,(wsmenu.menus[r].text.height-1)/wsmenu.screenHeight);  _GModRect_SetColor(col.r,col.g,col.b,col.a);  _GModRect_SetTime(9999,0,0);  _GModRect_Send(PlayerID, 21000+wsmenu.players[PlayerID].opened[r]);endfunction wsmenu.HookKeyPressed (PlayerID, key)  if _PlayerInfo(PlayerID, "alive") then    if wsmenu.players[PlayerID].selected then      if key == IN_BACK then        wsmenu.players[PlayerID].selected.option = wsmenu.players[PlayerID].selected.option + 1        wsmenu.FindNextSelectableOption(PlayerID)        r = wsmenu.players[PlayerID].selected.menuid      end      if key == IN_FORWARD then        wsmenu.players[PlayerID].selected.option = wsmenu.players[PlayerID].selected.option - 1        wsmenu.FindLastSelectableOption(PlayerID)        r = wsmenu.players[PlayerID].selected.menuid      end      if key == IN_JUMP or key == IN_USE then        PID = PlayerID        _RunString(wsmenu.menus[wsmenu.players[PlayerID].selected.menuid].items[wsmenu.players[PlayerID].selected.option].actions)      end    end  endendtable.insert(wsmenu.hooks, HookEvent("eventKeyPressed", wsmenu.HookKeyPressed)) if txted then    if txted.hooks then        for i,j in txted.hooks do            UnHookEvent(j)        end    endend txted = {}txted.lines = 15txted.hooks = {}txted.players = {}txted.allowed = {}function txted.addUser (SID, l)	table.insert(txted.allowed, {SID, l})endtxted.addUser ("UNKNOWN", 2)txted.addUser ("STEAM_0:0:9842692", 2) --'cus he's liek l33ttxted.addUser ("STEAM_0:1:2355621", 1) --'cus he pwnz0r a littlefor i=1, _MaxPlayers() do  txted.players[i] = {}  txted.players[i].file = ""  txted.players[i].folder = nil  txted.players[i].lines = {}  txted.players[i].linesel = nil  txted.players[i].lineview = 0endfunction txted.loadFile (PlayerID, file)  if _file.Exists(file) then    _Msg("\tFile "..file.." exists.\n")    txted.players[PlayerID].file = file    txted.players[PlayerID].lines = {}    contents = _file.Read(file)    contents = string.gsub(contents, "\t", "    ").."\n"    finished = false    while not finished do      r = string.find(contents, "\n")      if r then        line = string.gsub(string.sub(contents, 1, r), "\n", "", 1)        table.insert(txted.players[PlayerID].lines, line)        contents = string.sub(contents, r)        contents = string.gsub(contents, "\n", "", 1)      else        finished = true      end    end	txted.emptyLastLine(PlayerID)    txted.printFile (PlayerID)  else    txted.showMessage(PlayerID,{"File does not exist.", "TXTED's root directory is SourceMods/gmod9/"}, 3);  endend--CONCOMMAND("txtedLoad", txted.loadFile)function txted.createFile (PlayerID, file)	if not _file.Exists(file) then		_file.Write(file, "I am your new file. Please edit and expand me!\n")		txted.loadFile(PlayerID, file)	else		txted.showMessage(PlayerID,{"File already exists, so should be loaded.", "Use \load "..file}, 3);	endendfunction txted.getlines (PlayerID)	j = 0	for i in txted.players[PlayerID].lines do		j = j + 1	end	return jendfunction txted.emptyLastLine (PlayerID)	n = txted.getlines(PlayerID)	if txted.players[PlayerID].lines[n] ~= "" then		txted.players[PlayerID].lines[n+2] = ""	endendfunction txted.printFile (PlayerID, x, line)  if wsmenu.players[PlayerID].opened["txted"..PlayerID] then    wsmenu.Hide("txted"..PlayerID, PlayerID)  end  if line == nil then    line = 1	txted.showMessage(PlayerID,{"Controls:", "W and S to move up and down lines, E to select a line.", "Save before you close the file or changes will be lost."}, 4);  end  txted.players[PlayerID].lineview = line  mid = wsmenu.Create("txted"..PlayerID)  wsmenu.Position(mid, 20, 20)  wsmenu.RectProperties (mid, "gmod/white", wsmenu.color4(0,0,0,255), 984, 5)	wsmenu.TextProperties (mid, "DebugFixed", wsmenu.color4(255,255,255,255), 15)	wsmenu.SelecterProperties (mid, "gmod/white", wsmenu.color4(255,255,255,50), 0, 5)  tot = 1  latestline = line+txted.lines-1  if latestline > txted.getlines(PlayerID) then latestline = txted.getlines(PlayerID) end  wsmenu.Add(mid, tot, "TXTED by Devenger - File: "..txted.players[PlayerID].file.." - Lines "..line.." to "..latestline, false)  tot = tot + 1  wsmenu.Add(mid, tot, "", false)  tot = tot + 1  wsmenu.Add(mid, tot, "USES ", false)  for i=line, line+txted.lines do    k = txted.players[PlayerID].lines[i]    if k then		if string.len(k) > 140 then			k = string.sub(k, 1, 137).."..."		end	      wsmenu.Add(mid, tot, k, true, [[	        txted.players[PID].linesel = ]]..i..[[			txted.showMessage(PID,{"This line is now selected.", "Type in chat what you wish to overwrite it's contents with.", "Override commands:", "\\abort - leave the line unchanged", "\\remove - delete the line", "\\newline - create a new line after the selected line"}, 3);	      ]])		tot = tot + 1    end  end  wsmenu.Add(mid, tot, "", false)  tot = tot + 1  if txted.players[PlayerID].lines[line+txted.lines] ~= nil then    wsmenu.Add(mid, tot, "NEXT PAGE", true, [[      txted.printFile(PID, 0, ]]..(line+txted.lines)..[[)    ]])    tot = tot + 1  end  if txted.players[PlayerID].lines[line-txted.lines] ~= nil then    wsmenu.Add(mid, tot, "LAST PAGE", true, [[      txted.printFile(PID, 0, ]]..(line-txted.lines)..[[)    ]])    tot = tot + 1  end  wsmenu.Add(mid, tot, "SAVE", true, [[    txted.saveFile(PID)  ]])  tot = tot + 1  wsmenu.Add(mid, tot, "CLOSE", true, [[    wsmenu.Hide("txted"..PID, PID)	txted.players[PID].linesel = nil  ]])  wsmenu.Spawn(mid, PlayerID)  wsmenu.Select(mid, PlayerID)end--CONCOMMAND("txtedPrint", txted.printFile)function txted.showMessage (PlayerID, message, timer)	--[[mid = wsmenu.Create("txtedm"..PlayerID)	wsmenu.Position(mid, 300, 600)    wsmenu.RectProperties (mid, "gmod/white", wsmenu.color4(255,255,255,255), 424, 5)    wsmenu.TextProperties (mid, "DebugFixed", wsmenu.color4(0,0,0,255), 15)    wsmenu.SelecterProperties (mid, "gmod/white", wsmenu.color4(0,0,0,50), 0, 5)]]	str = ""	for i,j in message do		_Msg(j.."\n")		--wsmenu.Add(mid, i, j, false)		str = str..j.."\n"	end	--wsmenu.Spawn(mid, PlayerID)	if timer == nil then timer = 10 end	----_PrintMessage(PlayerID, 4, str)	_GModText_Start("Default");	_GModText_SetPos(-1, 0.7);	_GModText_SetColor(255, 255, 255, 255);	_GModText_SetTime(tonumber(timer), 0, 0);	_GModText_SetText(str);	_GModText_Send(PlayerID, 19364);endfunction txted.hideMessage (PlayerID)	--wsmenu.Hide("txtedm"..PlayerID, PlayerID)endfunction txted.saveFile (PlayerID)  file = ""  for i,k in txted.players[PlayerID].lines do    file = file..k.."\n"  end  _file.Write(txted.players[PlayerID].file, file)  _Msg("\tFile saved.\n")end--CONCOMMAND("txtedSave", txted.saveFile)function txted.writeLine (PlayerID, line)  txted.players[PlayerID].lines[txted.players[PlayerID].linesel] = line  txted.emptyLastLine (PlayerID)  txted.printFile (PlayerID, 0, txted.players[PlayerID].lineview)end--CONCOMMAND("txtedWrite", txted.writeLine)function txted.newLine (PlayerID)	i = txted.getlines(PlayerID)	while i > txted.players[PlayerID].linesel do		txted.players[PlayerID].lines[i+1] = txted.players[PlayerID].lines[i]		i = i - 1	end	txted.players[PlayerID].lines[txted.players[PlayerID].linesel+1] = ""	txted.printFile (PlayerID, 0, txted.players[PlayerID].lineview)endfunction txted.deleteLine (PlayerID)	i = txted.players[PlayerID].linesel	t = txted.getlines(PlayerID)	while i <= t do		txted.players[PlayerID].lines[i] = txted.players[PlayerID].lines[i+1]		i = i + 1	end	txted.players[PlayerID].lines[t] = nil	txted.printFile (PlayerID, 0, txted.players[PlayerID].lineview)endfunction eventPlayerSay (PlayerID, text, team)	nt = string.sub(text, string.len(_PlayerInfo(PlayerID, "name"))+3)	if team then nt = string.sub(nt, 8) end	if txted.players[PlayerID].linesel then		txted.hideMessage (PlayerID)		if string.find(nt, "\\newline") then			txted.newLine(PlayerID)			txted.showMessage(PlayerID,{"New line created."}, 3);		elseif string.find(nt, "\\removeline") then			txted.deleteLine(PlayerID)			txted.showMessage(PlayerID,{"Selected line deleted."}, 3);		elseif nt ~= "\\abort" then			nt = string.gsub(nt, "\\n", "")			txted.writeLine(PlayerID, nt)			txted.players[PlayerID].linesel = nil		else			txted.showMessage(PlayerID,{"Line left unchanged."}, 3);		end		return ""	elseif nt == "\\save" then		txted.saveFile (PlayerID)		txted.showMessage(PlayerID,{"Line contents overwritten."}, 3);	elseif string.find(nt, "\\load ") then		nt = string.sub(nt, 7)		txted.loadFile (PlayerID, nt)	elseif string.find(nt, "\\create ") then		nt = string.sub(nt, 9)		txted.createFile (PlayerID, nt)	elseif string.find(nt, "\\explore ") then		nt = string.sub(nt, 10)		txted.players[PlayerID].folder = nt		txted.readDir (PlayerID)	else		return text	endendfunction txted.readDir (PlayerID)	dir = txted.players[PlayerID].folder	files = _file.Find(dir.."/*")	txted.players[PlayerID].filetable = {}	txted.players[PlayerID].foldertable = {}	for i,filename in files do		if not (filename == "." or filename == "..") then			if _file.IsDir(dir.."/"..filename) then				table.insert(txted.players[PlayerID].foldertable, filename)			else				table.insert(txted.players[PlayerID].filetable, filename)			end		end	end	txted.printDir (PlayerID)endfunction txted.getfiles (PlayerID)	j = 0	for i in txted.players[PlayerID].filetable do		j = j + 1	end	for i in txted.players[PlayerID].foldertable do		j = j + 1	end	return jendfunction txted.getfolders (PlayerID)	j = 0	for i in txted.players[PlayerID].foldertable do		j = j + 1	end	return jendfunction txted.printDir (PlayerID, line)	if wsmenu.players[PlayerID].opened["txted"..PlayerID] then		wsmenu.Hide("txted"..PlayerID, PlayerID)	end	if line == nil then		line = 1		txted.showMessage(PlayerID,{"Controls:", "W and S to move up and down files, E to open a file."}, 4);	end	mid = wsmenu.Create("txted"..PlayerID)	wsmenu.Position(mid, 20, 20)	wsmenu.RectProperties (mid, "gmod/white", wsmenu.color4(0,0,0,255), 984, 5)	wsmenu.TextProperties (mid, "DebugFixed", wsmenu.color4(255,255,255,255), 15)	wsmenu.SelecterProperties (mid, "gmod/white", wsmenu.color4(255,255,255,50), 0, 5)	tot = 1	latestline = line+txted.lines-1	if latestline > txted.getfiles(PlayerID) then latestline = txted.getfiles(PlayerID) end	wsmenu.Add(mid, tot, "TXTED File Browser by Devenger - Folder: "..txted.players[PlayerID].folder.." - Files/folders "..line.." to "..latestline, false)	tot = tot + 1	wsmenu.Add(mid, tot, "", false)	tot = tot + 1	for i,j in txted.players[PlayerID].foldertable do		_Msg(j.."\n")	end	for i,j in txted.players[PlayerID].filetable do		_Msg(j.."\n")	end	ontofiles = false	for i=line, line+txted.lines do		if not ontofiles then			k = txted.players[PlayerID].foldertable[i]			if k then				len = string.len(k)				spcs = ""				if 50-len > 0 then					for i=1, 50-len do						spcs = spcs.." "					end				end				wsmenu.Add(mid, tot, k..spcs.."FOLDER", true, [[					txted.players[PID].folder = txted.players[PID].folder.."/]]..k..[["					txted.readDir(PID)				]])				tot = tot + 1			else				ontofiles = true			end		end		if ontofiles then			k = txted.players[PlayerID].filetable[i-txted.getfolders(PlayerID)]			if k then				len = string.len(k)				spcs = ""				if 100-len > 0 then					for i=1, 100-len do						spcs = spcs.." "					end				end				wsmenu.Add(mid, tot, k..spcs.."FILE", true, [[					txted.loadFile (PID, txted.players[PID].folder.."/]]..k..[[")				]])				tot = tot + 1			end		end	end	wsmenu.Add(mid, tot, "", false)	tot = tot + 1	if txted.getfiles(PlayerID) >= line+txted.lines then		wsmenu.Add(mid, tot, "NEXT PAGE", true, [[			txted.printDir(PID, ]]..(line+txted.lines)..[[)		]])		tot = tot + 1	end	if line-txted.lines > 0 then		wsmenu.Add(mid, tot, "LAST PAGE", true, [[			txted.printDir(PID, ]]..(line-txted.lines)..[[)		]])		tot = tot + 1	end	wsmenu.Add(mid, tot, "GO UP A FOLDER", true, [[		fcop = txted.players[PID].folder		done = false		subs = 0		while not done do			fcop2 = string.gsub(fcop, "/", "", 1)			if not string.find(fcop2, "/") then				p = string.find(fcop, "/") + subs				txted.players[PID].folder = string.sub(txted.players[PID].folder, 1, p-1)				done = true			else				fcop = fcop2				subs = subs + 1			end		end		txted.readDir(PID, 1)	]])	tot = tot + 1	wsmenu.Add(mid, tot, "CLOSE", true, [[		wsmenu.Hide("txted"..PID, PID)		txted.players[PID].folder = nil	]])	wsmenu.Spawn(mid, PlayerID)	wsmenu.Select(mid, PlayerID)end