WARNING! GOVNOCODE!ну покажи через ио
script_name("test lua")
script_author("Котовский")
script_description("Lua file for test new scripts")
script_version("1.0")
-- Библиотеки
local res = pcall(require, "lib.moonloader") assert(res, "Lib MOONLOADER not found!")
local res = pcall(require, 'lib.sampfuncs') assert(res, 'Lib SAMPFUNCS not found')
-- переменные
local f_path = getGameDirectory().."\\moonloader\\test\\list" -- Путь до нужного файла
if not doesFileExist(f_path) then -- Проверка на файлик, первый запуск
createDirectory(getGameDirectory().."\\moonloader\\test") -- Создаем папку
f = io.open(f_path, "w")...
Чего?! Так укажи какой нужно удалять.а не любой элемент массива
у меня через цикл выводит текст и кнопки. по нажатию на кнопку текст удаляется из ини файла.Чего?! Так укажи какой нужно удалять.
А что тебе тогда нужно?у меня через цикл выводит текст и кнопки. по нажатию на кнопку текст удаляется из ини файла.
текст = кнопка
текст = кнопка
текст = кнопка
есть формат таблицы чекераУ тебя в иник как добавляется, так и удаляется, правильно?
То есть нет обычной таблицы, она может как пополняться, так и удаляться, верно понял?
if imgui.Button(u8"Удалить") then ini.checker[k] = nil inicfg.save(def,directIni)end
А тебе обязательно нужно использовать ключи и иники?есть формат таблицы чекера
например
1 = Вальтер_Скотт
2 = Чарльз_Бруно
3 = Виктор_Сампаро
4 = Джон Дин
5 = Леонардо_Джейден
6 = Лео_Рокс
То бишь ключ присваивается к ним автоматически.
Я пытаюсь удалять значения с помощью
Lua:if imgui.Button(u8"Удалить") then ini.checker[k] = nil inicfg.save(def,directIni)end
Удалять получается только по очередности,то бишь с 1 по 6,а не какой угодно ник. Код выше - ясное дело находится в цикле
ну покажи через иоА тебе обязательно нужно использовать ключи и иники?
Могу предложить тебе идею на обычных txt через io
WARNING! GOVNOCODE!ну покажи через ио
script_name("test lua")
script_author("Котовский")
script_description("Lua file for test new scripts")
script_version("1.0")
-- Библиотеки
local res = pcall(require, "lib.moonloader") assert(res, "Lib MOONLOADER not found!")
local res = pcall(require, 'lib.sampfuncs') assert(res, 'Lib SAMPFUNCS not found')
-- переменные
local f_path = getGameDirectory().."\\moonloader\\test\\list" -- Путь до нужного файла
if not doesFileExist(f_path) then -- Проверка на файлик, первый запуск
createDirectory(getGameDirectory().."\\moonloader\\test") -- Создаем папку
f = io.open(f_path, "w") -- Создаем файл через открытие его в режиме записи
f:write("Meow_Brightside") -- Делаем первую строку, чтобы потом не было пустых строк, лень было делать доп проверки в addonfile
f:close() -- Закрываем, сохраняем
print("Был создан файл list.") -- Пишем в консоль что создали
end
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
sampAddChatMessage("test.lua loaded", -1)
while true do
wait(0)
end
end
function addonfile(params) -- params может принять ID игрока, либо сразу Nick
if type(tonumber(params)) == 'number' then -- Если принимаем ID игрока
params = tonumber(params) -- Меняем тип
if not sampIsPlayerConnected(params) then return end -- чекаем подключен ли игрок
name = sampGetPlayerNickname(params) -- получаем ник игрока
else name = tostring(params) end -- Если принимаем сразу ник игрока, то просто переведем в string на всякий случай
f = io.open(f_path, "a+") -- открываем наш файл в режиме добавления
for line in f:lines() do -- проходимся по каждой строчке и проверяем нет ли у нас такого ника уже в списке
if line ~= '' and line ~= nil then -- проверка на пустые строки
if line:match(name.."$") then -- если находим ник в файле
f:close() -- закрываем его
return -- прекращаем
end
end
end
f:write(("\n%s"):format(name)) -- иначе записываем в файл на новой строке
f:close() -- закрываем, сохраняем
end
function delonfile(params) -- params может принять ID игрока, либо сразу Nick
if type(tonumber(params)) == 'number' then -- Если принимаем ID игрока
params = tonumber(params) -- Меняем тип
if not sampIsPlayerConnected(params) then return end -- чекаем подключен ли игрок
name = sampGetPlayerNickname(params) -- получаем ник игрока
else name = tostring(params) end -- Если принимаем сразу ник игрока, то просто переведем в string на всякий случай
f = io.open(f_path, "r") -- открываем файл в режиме чтения
local tempign = "" -- переменная, которая будет содержать в себе временную инфу из нашего файла
found = false -- булевая переменная, которая будет принимать true, если нашли нужный ник в файле
first_line = true -- переменная, чтобы не было лишней первой пустой строки
for line in f:lines() do -- проходимся по каждой строке
if line ~= '' and line ~= nil then -- если строка не пустая
if line:match(name.."$") then -- если найден нужный ник в файле
line = string.gsub(line, name, "") -- то заменяем его на "ничего"
found = true -- показываем что нашли нужный ник и заменили его
end
if first_line then tempign = line first_line = false -- тут костыли, говнокод и все дела
else tempign = string.format("%s\n%s", tempign, line) end -- в этих двух строках мы как бы обновляем наш файл, избавляясь от нужного нам ника
end
end
if found then -- если все таки нашли
f:close() -- закрываем файл, который открывали в режиме чтения
f = io.open(f_path, "w") -- открываем его уже в режиме записи, на этом этапе файл полностью очистит свое содержимое
f:write(tempign) -- для этих целей мы и писали во временную переменную нужную нам инфу, теперь пишем ее в файл
f:close() -- сохраняем
else f:close() end -- ну, а если и не нашли, то просто закрываем файл
end
Насколько я знаю нельзя в ini использовать в виде ключа цифры. Или у этого есть побочные эффекты.есть формат таблицы чекера
например
1 = Вальтер_Скотт
2 = Чарльз_Бруно
3 = Виктор_Сампаро
4 = Джон Дин
5 = Леонардо_Джейден
6 = Лео_Рокс
То бишь ключ присваивается к ним автоматически.
Я пытаюсь удалять значения с помощью
Lua:if imgui.Button(u8"Удалить") then ini.checker[k] = nil inicfg.save(def,directIni)end
Удалять получается только по очередности,то бишь с 1 по 6,а не какой угодно ник. Код выше - ясное дело находится в цикле
Ну вот зачем? Он же всё равно заюзает это...WARNING! GOVNOCODE!
Lua:script_name("test lua") script_author("Котовский") script_description("Lua file for test new scripts") script_version("1.0") -- Библиотеки local res = pcall(require, "lib.moonloader") assert(res, "Lib MOONLOADER not found!") local res = pcall(require, 'lib.sampfuncs') assert(res, 'Lib SAMPFUNCS not found') -- переменные local f_path = getGameDirectory().."\\moonloader\\test\\list" -- Путь до нужного файла if not doesFileExist(f_path) then -- Проверка на файлик, первый запуск createDirectory(getGameDirectory().."\\moonloader\\test") -- Создаем папку f = io.open(f_path, "w") -- Создаем файл через открытие его в режиме записи f:write("Meow_Brightside") -- Делаем первую строку, чтобы потом не было пустых строк, лень было делать доп проверки в addonfile f:close() -- Закрываем, сохраняем print("Был создан файл list.") -- Пишем в консоль что создали end function main() if not isSampLoaded() or not isSampfuncsLoaded() then return end while not isSampAvailable() do wait(100) end sampAddChatMessage("test.lua loaded", -1) while true do wait(0) end end function addonfile(params) -- params может принять ID игрока, либо сразу Nick if type(tonumber(params)) == 'number' then -- Если принимаем ID игрока params = tonumber(params) -- Меняем тип if not sampIsPlayerConnected(params) then return end -- чекаем подключен ли игрок name = sampGetPlayerNickname(params) -- получаем ник игрока else name = tostring(params) end -- Если принимаем сразу ник игрока, то просто переведем в string на всякий случай f = io.open(f_path, "a+") -- открываем наш файл в режиме добавления for line in f:lines() do -- проходимся по каждой строчке и проверяем нет ли у нас такого ника уже в списке if line ~= '' and line ~= nil then -- проверка на пустые строки if line:match(name.."$") then -- если находим ник в файле f:close() -- закрываем его return -- прекращаем end end end f:write(("\n%s"):format(name)) -- иначе записываем в файл на новой строке f:close() -- закрываем, сохраняем end function delonfile(params) -- params может принять ID игрока, либо сразу Nick if type(tonumber(params)) == 'number' then -- Если принимаем ID игрока params = tonumber(params) -- Меняем тип if not sampIsPlayerConnected(params) then return end -- чекаем подключен ли игрок name = sampGetPlayerNickname(params) -- получаем ник игрока else name = tostring(params) end -- Если принимаем сразу ник игрока, то просто переведем в string на всякий случай f = io.open(f_path, "r") -- открываем файл в режиме чтения local tempign = "" -- переменная, которая будет содержать в себе временную инфу из нашего файла found = false -- булевая переменная, которая будет принимать true, если нашли нужный ник в файле first_line = true -- переменная, чтобы не было лишней первой пустой строки for line in f:lines() do -- проходимся по каждой строке if line ~= '' and line ~= nil then -- если строка не пустая if line:match(name.."$") then -- если найден нужный ник в файле line = string.gsub(line, name, "") -- то заменяем его на "ничего" found = true -- показываем что нашли нужный ник и заменили его end if first_line then tempign = line first_line = false -- тут костыли, говнокод и все дела else tempign = string.format("%s\n%s", tempign, line) end -- в этих двух строках мы как бы обновляем наш файл, избавляясь от нужного нам ника end end if found then -- если все таки нашли f:close() -- закрываем файл, который открывали в режиме чтения f = io.open(f_path, "w") -- открываем его уже в режиме записи, на этом этапе файл полностью очистит свое содержимое f:write(tempign) -- для этих целей мы и писали во временную переменную нужную нам инфу, теперь пишем ее в файл f:close() -- сохраняем else f:close() end -- ну, а если и не нашли, то просто закрываем файл end
подумаю своей башкой ещеНу вот зачем? Он же всё равно заюзает это...
Я дал ему набросок, его задача отшлифовать это дело, если он захочетНу вот зачем? Он же всё равно заюзает это...
Он и не притронется. Даже мысли не будет улучшить твой код.Я дал ему набросок, его задача отшлифовать это дело, если он захочет
Не думай чужой головой, совет на всю жизнь.Он и не притронется. Даже мысли не будет улучшить твой код.