Перейти к публикации
Форум - ComputerCraft
whiskas

Программа для отзывов о варпах

Рекомендованные сообщения

-- Большая часть кода сделана игроком N1nt3nd0 и была заимствована мной

Программа предназначена для варпов что б игроки оставляли свои отзыви та предложения.

Некоторые из отзывов показуються на главном меню.

Администрующий игрок может удалять отзывы если какието плохие люди писали маты или чтот такое.

В программе стоит счечик что офает залогинивнего человека с програмки если он просто зашел в прогу и ушел .

 

 

 

https://pastebin.com/zSz79XVh

 

 

Скрины 

 

Выгляд самой программы 

v1.pngi.gif

 

После того как залогинился игрок что администрует эт прогу (у него дополнительная кнопка)

Как видно верху идет щет и игрока офакт с проги через 30 сек если он нечего не жал

v2.pngi.gif

 

Админ панель 

Тут можна удалять коментарии а также видить ник того кто написал

v3.pngi.gif

 

Панелька простого игрока когда залогинился

v4.pngi.gif
Изменено пользователем whiskas
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Выглядит вроде прикольно. Но что за варпы - непонятно.

 

P.S. Грамматика хромает на обе ноги =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Но что за варпы - непонятно.

 

ну тут все просто. Отзывы - это тренд. В чем смысл: на сервере пишешь /warp , далее летишь сквозь гиперпространство, прилетаешь, видишь, упс, а там комп стоит, который просит оставить отзыв, и можно написать свой отзыв, свои ощущения от варпа, переживания, как все прошло и т.д.

 

Сейчас писать где-то комменты, ставить лойсы, дизы, оставлять отзывы - это просто необходимо. Без этого сейчас в современном мире никак. Купил трусы в интернет магазине - оставь отзыв, сделай видеогайд, распаковку  :)

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Несколько замечаний или даже предложений:

У тебя координаты и размеры каждой кнопки фактически прописаны в виде констант дважды. Первый раз - для прорисовки (функции drawMenu), второй раз - для обработки события touch. А что это значит? Это значит, что если ты или кто нибудь другой захочет добавить или переместить кнопку, ему это придется сделать в двух местах программы, что существенно увеличивает вероятность ошибки. 

Я бы на твоем месте все кнопки хранил в одной таблице. Как то так

button={
  Add   ={x=27,y=24,width=15,height=3,col=color.general,txt="Добавить",align=3},
  Cansel={x=47,y=24,width=15,height=3,col=color.general,txt="Отменить",align=3},
-- и так далее
}

тогда вызов функции прорисовки кнопки можно будет оформить так

function drawBox(but)
		color(but.col)
		g.fill(but.x,but.y,1,but.height,'│')
		g.fill(but.x+but.width-1,but.y,1,but.height,'│')
		g.set(but.x,but.y,'┌'..rep('─',but.width-2)..'┐')
		g.set(but.x,but.y+but.height-1,'└'..rep('─',but.width-2)..'┘')
		if but.txt then
			g.set(but.x+but.align,but.y+1,but.txt)
		end
	end

 

drawBox(button.Add)
drawBow(button.Cansel)

А для проверки нажатия кнопки можно сделать еще одну функцию, скажем:

function ifTouch(but, proc)

где but - кнопка, а proc - функция, выполняемая при нажатии кнопки.

Таким образом программа не будет пестреть числовыми константами и будет намного лучше читаться.

 

А вообще, если пишешь приложения с графическим интерфейсом, рассмотри какую либо GUI-библиотеку. Их у нас на форуме есть несколько.

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну если уж пошло дело об авторах.. То с печатью цветом помогал я. Гы-гы. :)

Пруфац:

 

b816121a9adeb9209a888cac7eb99880.jpg

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коли так, объясни мне великий смысл массива функций:

	local colorsTable = {
				['&0'] = function() color(0x000000) end,
				['&1'] = function() color(0x0000AA) end,
				['&2'] = function() color(0x00AA00) end,
				['&3'] = function() color(0x00AAAA) end,
				['&4'] = function() color(0xAA0000) end,
				['&5'] = function() color(0xAA00AA) end,
				['&6'] = function() color(0xFFAA00) end,
				['&7'] = function() color(0xAAAAAA) end,
				['&8'] = function() color(0x555555) end,
				['&9'] = function() color(0x5555FF) end,
				['&a'] = function() color(0x55FF55) end,
				['&b'] = function() color(0x55FFFF) end,
				['&c'] = function() color(0xFF5555) end,
				['&d'] = function() color(0xFF55FF) end,
				['&e'] = function() color(0xFFFF55) end,
				['&f'] = function() color(0xFFFFFF) end,
				['&r'] = function() color(0xFFFFFF) end
							 }

Почему в таблице нельзя было сохранить только значения цветов, а по мере надобности вынимать их, для меня осталось загадкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коли так, объясни мне великий смысл массива функций:

local colorsTable = {				['&0'] = function() color(0x000000) end,				['&1'] = function() color(0x0000AA) end,				['&2'] = function() color(0x00AA00) end,				['&3'] = function() color(0x00AAAA) end,				['&4'] = function() color(0xAA0000) end,				['&5'] = function() color(0xAA00AA) end,				['&6'] = function() color(0xFFAA00) end,				['&7'] = function() color(0xAAAAAA) end,				['&8'] = function() color(0x555555) end,				['&9'] = function() color(0x5555FF) end,				['&a'] = function() color(0x55FF55) end,				['&b'] = function() color(0x55FFFF) end,				['&c'] = function() color(0xFF5555) end,				['&d'] = function() color(0xFF55FF) end,				['&e'] = function() color(0xFFFF55) end,				['&f'] = function() color(0xFFFFFF) end,				['&r'] = function() color(0xFFFFFF) end							 }
Почему в таблице нельзя было сохранить только значения цветов, а по мере надобности вынимать их, для меня осталось загадкой.
Это делалось для того что бы на каждую букву можно было сделать другие действия, помимо изменения цвета. Я, например, потом добавлял псевдо-подчёркивание. Да, в данном варианте это смысла не имеет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А, тогда понятно. Но, всё же функция printFormatText сделана малость костыльно. Я бы советовал использовать gmatch, а не перебирать строку посимвольно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Функция:

        elseif w>=65 and w<=80 and h>=27 and h<=40 and nick==123 then
          positions[commen[n]]=nil
          333()
          n=n-1
          222()
крашит программу, ибо идёт удаление отзыва, которого - нет. Поможет кто?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@@Miroshka, участок кода, начинающийся с elseif, не может быть функцией. И что значит запись 222()?

222() - заменил название.

Затупил я. То, что выше скинул - это не целая функция. Она состоит в похожем коде:

 

 

  1.             elseif login==2 then
  2.                 if w>=35 and w<=50 and h>=24 and h<=27 then
  3.                     exit()
  4.                 elseif w>=24 and w<=34 and h>=17 and h<=20 then
  5.                     if n>1 then
  6.                         n=n-1
  7.                         drawMenu3()
  8.                     end
  9.                 elseif w>=51 and w<=61 and h>=17 and h<=20 then
  10.                     if n<#commen then
  11.                         n=n+1
  12.                         drawMenu3()
  13.                     end
  14.                 elseif w>=35 and w<=50 and h>=17 and h<=20 then
  15.                     positions[commen[n]]=nil
  16.                     conf_S()
  17.                     n=n-1
  18.                     drawMenu3()
  19.                 end

 

 

Взял с пастебина самой темы.

Крашит программу, ибо идёт удаление отзыва, которого - нет.

Изменено пользователем Miroshka

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно ли ник, брать с файла, а не вписывать его в код?

    local owner = 'Durex77' -- игрок, админящий программу

Те вайл в cd / лежит, название white.cfg или просто white и в этот файл нужно вписать ник, который уже "будет админить прогу" ?

Пере пробывал менять positions, conf_R и.т.д. 

raw ссылка не робит (Вставлял рав ссылку пастебина чисто с ником в "" для ника. Бред, но решил пробывать)

просто делал путь на файл через /white - не робит, те считает это за ник, а не за путь.

 

Есть идеи? Мб что то пропустил.

Изменено пользователем Miroshka

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прикрути эти функции куда нада:

local fs = require("filesystem")
local cfg = "./etc/warp_list/owner.cfg"

local function setProgOwner(owner)
    local cdir = fs.segments(cfg)
    table.remove(cdir)
    cdir = table.concat(cdir, "/")
    if not fs.exists(cdir) then
        fs.makeDirectory(cdir)--Тут можно добавить рекурсивное создание коталогов до нужного. Но мне кажется это ужн перебор)
    end
    local file, res = io.open(cfg, "w")
    if not file then
        error("Couldn't set owner name; " .. res)
    end
    file:write(owner)
    file:close()
end

local function getProgOwner()
    local file, res = io.open(cfg, "r")
    if not file then
        error("Couldn't get owner name; " .. res)
    end
    local nick = file:read("*l")
    file:close()
    return nick
end
Изменено пользователем Zabqer

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

    local cdir = fs.segments(cfg)
    table.remove(cdir)
    cdir = table.concat(cdir, "/")
    if not fs.exists(cdir) then
        fs.makeDirectory(cdir)--Тут можно добавить рекурсивное создание коталогов до нужного. Но мне кажется это ужн перебор)
    end

 

Если рекурсивное создание каталогов не требуется, то зачем нужны лишние действия по разбору пути к файлу на части и последующей их сборке?

Есть же filesystem.path(path)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если рекурсивное создание каталогов не требуется, то зачем нужны лишние действия по разбору пути к файлу на части и последующей их сборке?Есть же filesystem.path(path)

Есть, но я про него забыл)

Я там ещё ошибся, поставил точку в начале

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как заставить функцию printLogTimer работать на все окна? Те если игрок перешел с 1-го окна на 2-е, то таймер не обнулиться!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×