Lua [ALL] cenvers - версии moonloader и cleo (и еще некоторые функции)

cenim

Новичок
Автор темы
6
3
Версия SA-MP
  1. 0.3.7 (R1)
всем привет, это мой первый скрипт, поэтому такой легкий

функции (v2):
узнает версию мунлоадера
узнает версию клео
последнее в буфере обмена (+, перенос строки и исправил буфер по совету)
запущен ли сампфункс (+)
ВОЗМОЖНО убрана зависимость от сампфункса (не удалось проверить)
фриз себя
активация теперь по кнопке J (+)

зависимости:
mimgui


прошу без лишней агрессии, я еще плоховато разбираюсь в луа.
так же огромное спасибо тем, кто помогал своими советами в ответах
 

Вложения

  • cenvers.lua
    2.5 KB · Просмотры: 15
  • cenversv2.lua
    2.7 KB · Просмотры: 6
Последнее редактирование:
  • Нравится
Реакции: painw и nngromovv

meowprd

Тот самый Котовский
Проверенный
1,280
712
Раз это первый скрипт, то подскажу тебе для дальнейшего развития.

Lua:
local mvers = getMoonloaderVersion() -- 3 line
local cleovers = getCleoLibraryVersion() -- 4 line
local bufer = getClipboardText() -- 8 line

-- imgui.OnFrame
imgui.Text('moonloader version: ' .. mvers) -- 52 line
imgui.Text('cleo version: ' .. cleovers) -- 53 line
imgui.Text(u8'Сейчас в буфере:\n\n' .. bufer) -- 56 line

Если с getMoonloaderVersion() и getCleoLibraryVersion() еще можно так поступить, а именно записать в переменную и потом показывать там, где надо, то с getClipboardText() такая штука не прокатит. Если ты вновь что-то запишешь в буфер обмена (сделаешь CTRL+C), то показываться будет все равно старый буфер на момент загрузки игры, это не есть хорошо. Поэтому я бы предложил такой вариант событий:
Lua:
-- imgui.onFrame
imgui.Text(u8(string.format("Сейчас в буфере:\n\n%s", tostring(getClipboardText()))))
imgui.Text - думаю понятно
u8 - меняем кодировку с cp1251 на utf-8
string.format - готовим строку, форматируем ее, можешь почитать вики по функции и поймешь (она помогает спастись от краша скрипта, если переменная = nil)
tostring - На всякий случай пересоберем полученную переменную в строку
getClipboardText - получаем наш буфер обмена

Следующий момент.
Есть у тебя функция imgui_text_wrapped(clr, text), но она не используется, лучше ее тогда убрать, так код будет чище и самому будет приятнее для чтения

Дальше.
Lua:
script_author = 'cenim'
script_version = 'v1'
script_name = 'cenvers'

Это не совсем правильное объявление, для этого есть функции (ровно такие же, которыми ты назвал переменные), лови ссылки на wiki

Развивайся, дерзай.
Надеюсь мои советы чем-то смогут помочь =)
 

why ega

РП игрок
Модератор
2,540
2,233
всем привет, это мой первый скрипт, поэтому такой легкий


функции:
узнает версию мунлоадера
узнает версию клео
последнее в буфере обмена
фриз себя

зависимости:
mimgui


прошу без лишней агрессии, это мой первый скрипт и я еще плоховато разбираюсь в луа.
Можно избавиться от ещё одной зависимости - SAMPFUNCS.asi, используя функцию получения версии клео сразу из клео, а не из сампфункса.

Также у тебя в скрипте используется функция sampRegisterChatCommand, которая тоже зависит от СФ, самое просто это сделать через нажатие клавиши, тем самым ещё и избавиться от зависимости в самом сампе (запуск на чистой гта, да-да)
 
  • Нравится
Реакции: cenim

cenim

Новичок
Автор темы
6
3
Раз это первый скрипт, то подскажу тебе для дальнейшего развития.

Lua:
local mvers = getMoonloaderVersion() -- 3 line
local cleovers = getCleoLibraryVersion() -- 4 line
local bufer = getClipboardText() -- 8 line

-- imgui.OnFrame
imgui.Text('moonloader version: ' .. mvers) -- 52 line
imgui.Text('cleo version: ' .. cleovers) -- 53 line
imgui.Text(u8'Сейчас в буфере:\n\n' .. bufer) -- 56 line

Если с getMoonloaderVersion() и getCleoLibraryVersion() еще можно так поступить, а именно записать в переменную и потом показывать там, где надо, то с getClipboardText() такая штука не прокатит. Если ты вновь что-то запишешь в буфер обмена (сделаешь CTRL+C), то показываться будет все равно старый буфер на момент загрузки игры, это не есть хорошо. Поэтому я бы предложил такой вариант событий:
Lua:
-- imgui.onFrame
imgui.Text(u8(string.format("Сейчас в буфере:\n\n%s", tostring(getClipboardText()))))
imgui.Text - думаю понятно
u8 - меняем кодировку с cp1251 на utf-8
string.format - готовим строку, форматируем ее, можешь почитать вики по функции и поймешь (она помогает спастись от краша скрипта, если переменная = nil)
tostring - На всякий случай пересоберем полученную переменную в строку
getClipboardText - получаем наш буфер обмена

Следующий момент.
Есть у тебя функция imgui_text_wrapped(clr, text), но она не используется, лучше ее тогда убрать, так код будет чище и самому будет приятнее для чтения

Дальше.
Lua:
script_author = 'cenim'
script_version = 'v1'
script_name = 'cenvers'

Это не совсем правильное объявление, для этого есть функции (ровно такие же, которыми ты назвал переменные), лови ссылки на wiki

Развивайся, дерзай.
Надеюсь мои советы чем-то смогут помочь =)
функция imgui.text.wrapped для переноса строки вроде, а с буфером спасибо)
 

cenim

Новичок
Автор темы
6
3
Можно избавиться от ещё одной зависимости - SAMPFUNCS.asi, используя функцию получения версии клео сразу из клео, а не из сампфункса.

Также у тебя в скрипте используется функция sampRegisterChatCommand, которая тоже зависит от СФ, самое просто это сделать через нажатие клавиши, тем самым ещё и избавиться от зависимости в самом сампе (запуск на чистой гта, да-да
Можно избавиться от ещё одной зависимости - SAMPFUNCS.asi, используя функцию получения версии клео сразу из клео, а не из сампфункса.

Также у тебя в скрипте используется функция sampRegisterChatCommand, которая тоже зависит от СФ, самое просто это сделать через нажатие клавиши, тем самым ещё и избавиться от зависимости в самом сампе (запуск на чистой гта, да-да)
буду использовать ;)
 
  • Нравится
Реакции: why ega