faryatiev |
Отправлено: 30 Декабря, 2023 - 15:46:32
|
Участник
Покинул форум
Сообщений всего: 55
Дата рег-ции: Янв. 2016
Репутация: 0
|
textout(0, 100, 50, "текст", 0);
или
textout(0, 100, 50, format(#t[0])+"----------", 0);
у меня на ноутбуке текст успешно выводится поверх игры, а на компьютере текст виден, только когда окно игры свернуть.
Что с этим можно сделать? |
|
|
Zireael |
Отправлено: 30 Декабря, 2023 - 16:05:28
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Так тоже?:
CODE:external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "TextOut", "TextOutA", "Gdi32.dll");
int HDC = GetDC(0);
loop()TextOut(HDC, 200, 100, "qwerty", 6);
Такое поведение только с этой игрой или другими тоже?
(Добавление)
Ещё можно такой вариант использовать:
CODE:#define LWA_COLORKEY 0x00000001
#define GWL_STYLE -16
#define GWL_EXSTYLE -20
#define COLOR_3DFACE 15
#define WS_EX_LAYERED 0x00080000
#define WS_EX_TRANSPARENT 0x00000020
#define WS_VISIBLE 0x10000000
#define RUSSIAN_CHARSET 204
#define TRANSPARENT 1
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "TextOut", "TextOutA", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll");
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll");
external(INT, "SetBkColor", "SetBkColor", "Gdi32.dll");
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll");
external(INT, "GetSysColor", "GetSysColor", "User32.dll");
external(INT, "SetLayeredWindowAttributes", "SetLayeredWindowAttributes", "User32");
external(INT, "GetWindowLong", "GetWindowLongA", "User32");
external(INT, "SetWindowLong", "SetWindowLongA", "User32");
createdialog(2);
int DisplayColor, DisplayHeight, DisplayWidth;
int HWND = gethwnd(2);
int crKey = GetSysColor(COLOR_3DFACE);
SetWindowLong(HWND,GWL_STYLE, WS_VISIBLE);
SetWindowLong(HWND,GWL_EXSTYLE, WS_EX_LAYERED + WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(HWND, crKey, 0, LWA_COLORKEY);
getdisplay(DisplayColor, DisplayHeight, DisplayWidth);
int HDC = GetDC(HWND);
int Font = CreateFont(-48, 0, 0, 0, 0, 0, 0, 0, RUSSIAN_CHARSET, 0, 0, 0, 0, "Arial"); // шрифт
SelectObject(HDC, Font);
SetTextColor(HDC, rgb(255, 0, 0)); // цвет текста
SetBkColor(HDC, rgb(0, 255, 0)); // цвет фона
showdialog(2, "", 0, 0, DisplayHeight, DisplayWidth, 0, 1);
pause(1000);
int x = 0;
loop()
{
TextOut(HDC, 200, 100, format(x), size(format(x)));
x++;
sleep(100);
} (Отредактировано автором: 30 Декабря, 2023 - 16:06:32) |
|
|
faryatiev |
Отправлено: 30 Декабря, 2023 - 18:23:09
|
Участник
Покинул форум
Сообщений всего: 55
Дата рег-ции: Янв. 2016
Репутация: 0
|
Zireael , спасибо!
Я играю только в одну игру, так что о других не могу сказать.
Ваш второй вариант рабочий, правда, в моём случае сильно мерцает, но разглядеть можно.
CODE:external(INT, "GetKey", "GetKeyState", "user32.dll");
external (INT, "mciSendString", "mciSendStringA", "Winmm.dll");
char t[4];
#define LWA_COLORKEY 0x00000001
#define GWL_STYLE -16
#define GWL_EXSTYLE -20
#define COLOR_3DFACE 15
#define WS_EX_LAYERED 0x00080000
#define WS_EX_TRANSPARENT 0x00000020
#define WS_VISIBLE 0x10000000
#define RUSSIAN_CHARSET 204
#define TRANSPARENT 1
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "TextOut", "TextOutA", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll");
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll");
external(INT, "SetBkColor", "SetBkColor", "Gdi32.dll");
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll");
external(INT, "GetSysColor", "GetSysColor", "User32.dll");
external(INT, "SetLayeredWindowAttributes", "SetLayeredWindowAttributes", "User32");
external(INT, "GetWindowLong", "GetWindowLongA", "User32");
external(INT, "SetWindowLong", "SetWindowLongA", "User32");
createdialog(2);
int DisplayColor, DisplayHeight, DisplayWidth;
int HWND = gethwnd(2);
int crKey = GetSysColor(COLOR_3DFACE);
SetWindowLong(HWND,GWL_STYLE, WS_VISIBLE);
SetWindowLong(HWND,GWL_EXSTYLE, WS_EX_LAYERED + WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(HWND, crKey, 0, LWA_COLORKEY);
getdisplay(DisplayColor, DisplayHeight, DisplayWidth);
int HDC = GetDC(HWND);
int Font = CreateFont(-48, 0, 0, 0, 0, 0, 0, 0, RUSSIAN_CHARSET, 0, 0, 0, 0, "Arial"); // шрифт
SelectObject(HDC, Font);
SetTextColor(HDC, rgb(255, 0, 0)); // цвет текста
SetBkColor(HDC, rgb(0, 255, 0)); // цвет фона
showdialog(2, "", 0, 0, DisplayHeight, DisplayWidth, 0, 1);
pause(1000);
ex:
int x0 = 0;
//resettextout(0);
loop(200)
{
x0++;
mciSendString("status waveLevel level", address(#t[0]), 16, 3);
//TextOut(HDC, 200, 100, format(x0), size(format(x0)));
textout(0, 200, 100, format(#t[0])+"----------", 0);
if (formatsn(format(#t[0]))>50)
{
mouse (RIGHT);
sleep(rand(1700,1900));
goto ex:;
}
sleep(100);
}
(Отредактировано автором: 30 Декабря, 2023 - 18:32:33) |
|
|
faryatiev |
Отправлено: 30 Декабря, 2023 - 18:42:34
|
Участник
Покинул форум
Сообщений всего: 55
Дата рег-ции: Янв. 2016
Репутация: 0
|
Zireael пишет: Цитата: в моём случае сильно мерцает
Так не используйте textout.
Не понял, а что использовать? Мне надо вывести уровень звука.(Отредактировано автором: 30 Декабря, 2023 - 18:43:32) |
|
|
Kibor |
Отправлено: 30 Декабря, 2023 - 18:46:47
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
faryatiev пишет: а что использовать?
Можно использовать еще
CODE:kiborlog (0, "Текст", 5, 5, 300, 250); (для просмотра ссылки Вам необходимо авторизоваться) |
|
|
faryatiev |
Отправлено: 30 Декабря, 2023 - 18:53:22
|
Участник
Покинул форум
Сообщений всего: 55
Дата рег-ции: Янв. 2016
Репутация: 0
|
Zireael пишет: Цитата: а что использовать?
TextOut.
Ого, я думал это одно и то же. Теперь всё красиво. Спасибо огромное.
Внешняя функция. Я понял.(Отредактировано автором: 30 Декабря, 2023 - 19:01:54) |
|
|
resident |
Отправлено: 30 Декабря, 2023 - 23:27:07
|
Участник
Покинул форум
Сообщений всего: 72
Дата рег-ции: Янв. 2023
Репутация: 0
|
Zireael пишет: Так тоже?:
Есть что-нибудь для написания текста в созданном скриншоте?
screen(#scr[0][0],0,0,1280,720,w);
//добавляем текст на скриншот
saveimage(BMP, #scr[0][0], "screenshot_"+format(ts)+".bmp" // сохраняем скриншот с текстом
Я представляю как это сделать, но не так сильно надо, чтоб разрабатывать это |
|
|
Zireael |
Отправлено: 30 Декабря, 2023 - 23:58:42
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Есть что-нибудь для написания текста в созданном скриншоте?
Можно собрать в exe и запускать из кибор.
C# (Отобразить)CODE: string Text = "Hello"; // текст
Point Pos = new Point(200, 100); // координаты
string Path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // куда сохранить (рабочий стол)
Rectangle Rect = Screen.PrimaryScreen.Bounds; // получить разрешение экрана
using (Bitmap Img = new Bitmap(Rect.Width, Rect.Height, PixelFormat.Format32bppArgb)) //создать Bitmap
{
using (Graphics G = Graphics.FromImage(Img)) // создать Graphics
{
G.CopyFromScreen(Rect.Location, Point.Empty, Rect.Size); // скрин экрана
using (Font font = new Font("Arial", 36)) G.DrawString(Text, font, Brushes.Red, Pos); // нарисовать надпись
}
Img.Save(Path+"\\Img.png"); // сохранить изображение
} |
|
|
|