Перейти к содержимому


Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1 Оффлайн   whiskas

whiskas
  • Пользователи
  • Сообщений: 13
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 23 Октябрь 2017 - 18:40

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

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

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

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

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

 

 

 

https://pastebin.com/zSz79XVh

 

 

Скрины 

 

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

v1.pngi.gif

 

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

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

v2.pngi.gif

 

Админ панель 

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

v3.pngi.gif

 

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

v4.pngi.gif

Сообщение отредактировал whiskas: 23 Октябрь 2017 - 23:59


#2 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 683
  • Уровень сигнала: 0,36%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 23 Октябрь 2017 - 20:46

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

 

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



#3 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 576
  • Уровень сигнала: 30,09%
  • В игре: 184 час. 25 мин.

Отправлено 23 Октябрь 2017 - 21:12

Но что за варпы - непонятно.

 

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

 

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


  • Doob это нравится

#4 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 213
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

5                                 

Отправлено 24 Октябрь 2017 - 09:20

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

У тебя координаты и размеры каждой кнопки фактически прописаны в виде констант дважды. Первый раз - для прорисовки (функции 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-библиотеку. Их у нас на форуме есть несколько.


  • eu_tomat и RccHD это нравится

#5 Оффлайн   Zabqer

Zabqer
  • Пользователи
  • Сообщений: 17
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 25 Октябрь 2017 - 08:45

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


#6 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 213
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

5                                 

Отправлено 25 Октябрь 2017 - 08:53

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

	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
							 }

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



#7 Оффлайн   Zabqer

Zabqer
  • Пользователи
  • Сообщений: 17
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 25 Октябрь 2017 - 09:00

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

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							 }
Почему в таблице нельзя было сохранить только значения цветов, а по мере надобности вынимать их, для меня осталось загадкой.

Это делалось для того что бы на каждую букву можно было сделать другие действия, помимо изменения цвета. Я, например, потом добавлял псевдо-подчёркивание. Да, в данном варианте это смысла не имеет.

#8 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 213
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

5                                 

Отправлено 25 Октябрь 2017 - 09:17

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



#9 Оффлайн   Miroshka

Miroshka
  • Пользователи
  • Сообщений: 45
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 5 мин.

Отправлено 10 Ноябрь 2017 - 21:49

Функция:

        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()
крашит программу, ибо идёт удаление отзыва, которого - нет. Поможет кто?


#10 Оффлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 793
  • Уровень сигнала: 0,05%
  • В игре: 0 час. 19 мин.

Награды

                          

Отправлено 10 Ноябрь 2017 - 22:20

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


#11 Оффлайн   Miroshka

Miroshka
  • Пользователи
  • Сообщений: 45
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 5 мин.

Отправлено 12 Ноябрь 2017 - 12:12

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

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

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

Спойлер

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

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


Сообщение отредактировал Miroshka: 12 Ноябрь 2017 - 20:21


#12 Оффлайн   Miroshka

Miroshka
  • Пользователи
  • Сообщений: 45
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 5 мин.

Отправлено 12 Ноябрь 2017 - 21:58

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

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

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

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

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

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

 

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


Сообщение отредактировал Miroshka: 12 Ноябрь 2017 - 22:08


#13 Оффлайн   Zabqer

Zabqer
  • Пользователи
  • Сообщений: 17
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 13 Ноябрь 2017 - 08:23

Прикрути эти функции куда нада:
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: 13 Ноябрь 2017 - 08:24


#14 Оффлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 793
  • Уровень сигнала: 0,05%
  • В игре: 0 час. 19 мин.

Награды

                          

Отправлено 17 Ноябрь 2017 - 09:03

    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)


#15 Оффлайн   Zabqer

Zabqer
  • Пользователи
  • Сообщений: 17
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 17 Ноябрь 2017 - 12:21

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


Есть, но я про него забыл)
Я там ещё ошибся, поставил точку в начале

#16 Оффлайн   Miroshka

Miroshka
  • Пользователи
  • Сообщений: 45
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 5 мин.

Отправлено 29 Ноябрь 2017 - 11:39

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






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика