Добавлен , опубликован
Раздел:
Триггеры и объекты
При работе с несколькими картами, часто возникает необходимость копировать в них множество кода облегчающего разработку. В цивилизованном мире для этого используют менеджеры пакетов с зависимостями, контролем версий и автоматическим обновлением. В суровых реалиях варкрафта об этом можно только мечтать, но если вы используете дешёвый сборщик, то всё у вас в руках, и можно смело написать жалкое подобие менеджера пакетов.
В прошлой статье мы уже настроили проект, теперь используя его структру, добавим файл \run\lua\FileDownload.lua, который будет отвечать за скачивание файла.
local luacurl = require "luacurl"
function FileDownload(url)
	local curl = luacurl.new()
	curl:setopt(luacurl.OPT_URL, url)
	curl:setopt(luacurl.OPT_FOLLOWLOCATION, true)
	curl:setopt(luacurl.OPT_SSL_VERIFYPEER, false)
	local s = ''
	curl:setopt(luacurl.OPT_WRITEFUNCTION, function(p, chunk)
		s = s .. chunk
		return #chunk
	end)
	curl:setopt(luacurl.OPT_PROGRESSFUNCTION, function(p, dltotal, dlnow)
		print(url, dltotal, dlnow)
	end)
	curl:setopt(luacurl.OPT_NOPROGRESS, false)
	assert(curl:perform())
	local out, count = s:gsub('\r\n', '\n')
	return out
end
Теперь напишем /run/download.lua, который мы и будем запускать для скачивания:
require 'lfs' -- подключаем LuaFileSystem https://keplerproject.github.io/luafilesystem/manual.html
local param = {
	libs    = {
		{ [[\build\libs\math.lua]], 'https://xgm.guru/files/100/227730/math.lua' },
		{ [[\build\libs\pathable.lua]], 'https://xgm.guru/files/100/231022/pathable.lua' },
		{ [[\build\libs\garbage.lua]], 'https://xgm.guru/files/100/231969/garbage.lua' }
	},
	current = lfs.currentdir() -- текущая папка проэкта
}
-- подключаем нужные функции
dofile(param.current .. [[\run\lib\FileDownload.lua]])

-- скачиваем нужные файлы
for i = 1, #param.libs do
	local lib     = param.libs[i]
	local content = FileDownload(lib[2])
	local file    = io.open(param.current .. lib[1], 'w+')
	file:write(content)
	file:close()
end

-- запускаем сборку
dofile(lfs.currentdir() .. [[\run\build.lua]])
Обратите внимание на эту секцию:
{ [[\build\libs\math.lua]], 'https://xgm.guru/files/100/227730/math.lua' },
{ [[\build\libs\pathable.lua]], 'https://xgm.guru/files/100/231022/pathable.lua' },
{ [[\build\libs\garbage.lua]], 'https://xgm.guru/files/100/231969/garbage.lua' }
Здесь первый элемент, как вы уже догадались - путь к файлу в проекте:
Второй, соответственно, содержит ссылку, взять которую можно например здесь:

Заключение

Как видите, писать инструменты для разработки не так уже и сложно, так что пишите комментарии, подписывайтесь на канал ставьте лайк и следите за проэктом на github.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
32
4 года назад
2
Лайк не глядя
0
23
4 года назад
0
Красным текстом выдели не для новичков =) Так как новички вас кинут тапками (Не я я то знаю и пишу в VSCode)
К примеру Рекомендуемый минимальное знание языка lua красным текстом.
А так лови + за то что учите людей.
1
29
4 года назад
1
К примеру Рекомендуемый минимальное знание языка lua красным текстом.
В заголовке и так указано [lua], думаю нормальные новички и так поймут о чём дальше речь пойдёт, а упоротые гуишники и так статей не читают.
0
23
4 года назад
0
NazarPunk, не все знают эти слова =) Подумают это какое то фирменое слово и что то подобное...
2
29
4 года назад
2
не все знают эти слова =) Подумают это какое то фирменое слово и что то подобное...
Глупо в статье, задача которой давать знания, писать предупреждения о недостатке этих самых знаний. Притом в статье почти такой же lua как и в игре, что поможет в нём освоиться, а на крайний случай всегда можно задать вопрос в комментариях.
2
33
4 года назад
2
не все знают эти слова =)
как рефордж запустят, все будут знать
Чтобы оставить комментарий, пожалуйста, войдите на сайт.