function room_scene(self) return true; end function par(space,...) local i, res local a = {...}; for i = 1, stead.table.maxn(a) do if type(a[i]) == 'string' then if res == nil then res = "" end res = res..a[i]; end end return res; end stead.par = par word = function(word) return obj{ nam = '', _word = word, _enabled = true, dsc = function(this) value = "" if (this._enabled == true) then value = this._word else value = string.rep("█",string.len(this._word)/2) end return "{".. value .."}" end, act = function(this) this._enabled = not this._enabled return true end } end function table.contains(table, element) for _, value in pairs(table) do if value == element then return true end end return false end function string.split(str, pat) local t = {} local fpat = "(.-)" .. pat local last_end = 1 local s, e, cap = str:find(fpat, 1) while s do if s ~= 1 or cap ~= "" then table.insert(t,cap) end last_end = e+1 s, e, cap = str:find(fpat, last_end) end if last_end <= #str then cap = str:sub(last_end) table.insert(t, cap) end return t end sentence = function(text) text = string.gsub(text, '%!', ' exclamation space ') text = string.gsub(text, '%,', ' comma ') text = string.gsub(text, '%:', ' colon ') text = string.gsub(text, '%.', ' dot space') text = string.gsub(text, '%(', ' space opening_bracket ') text = string.gsub(text, '%)', ' closing_bracket space ') text = string.gsub(text, '%?', ' question space ') text = string.gsub(text, '%-%-', ' space dash ') text = string.gsub(text, '%^%^', ' newline ') array = string.split(text, " ") objects = {} local j = 1 for i,v in ipairs(array) do if (table.contains({'colon', 'dot', 'newline', 'opening_bracket', 'closing_bracket', 'space', 'dash', 'exclamation', 'question', 'comma'},v) == false and string.match (v, "%S")) then if(i > 1) then table.insert(objects, j, 'space') j = j + 1 end table.insert(objects, j, word(v)) j = j + 1 else if (string.match (v, "%S")) then table.insert(objects, j, v) j = j + 1 end end end local value = obj{ nam = '', dsc = '', obj = objects } return value end newline = vobj("^^", "^^") space = vobj(" ", " ") opening_bracket = vobj(" ", "(") closing_bracket = vobj(" ", ")") dash = vobj("--", "--") comma = vobj(",", ",") dot = vobj(".", ".") exclamation = vobj("!", "!") question = vobj("?", "?") colon = vobj(":", ":") signed = vobj(" ", txtr("Проверено: цензор ███████████^^")) function headline(text) return obj{ nam="", _selected = false, dsc = function(this) if (this._selected) then return "• {" .. txtb(text) .. "}" .. "\t\t\t" .. [[^]] end return "• {" .. text .. "}" .. "\t\t\t" .. [[^]] end, act = function(this) this._selected = not this._selected return true end, } end function news(v) if v.news == nil then v.news = {} end if v.dsc == nil then v.dsc = "" end if v.way == nil then v.way = {} end if v.obj == nil then v.obj = {} end if v.look == nil then v.look = room_look end if v.save == nil then v.save = room_save end if v.scene == nil then v.scene = room_scene end v.way = list(v.way); v.location_type = true for i,text in ipairs(v.news) do table.insert(v.obj, i, headline(text)) end table.insert(v.obj, table.maxn(v.obj)+1, 'sign_newspaper_1') v = obj(v); return v; end function is_activated(previous, current, room) for i,v in ipairs(room.obj) do for j,word in ipairs(v.obj) do if (word._word ~= nil) then if (previous ~= nil) then if (word._word == previous) then if (v.obj[j+2]._word == current) then --следующее слово _после пробела_ return v.obj[j+2]._enabled end end else if (word._word == current) then return word._enabled end end end end end end