Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Вопрос по textout

Страниц (2): [1] 2 »
 

1. faryatiev - 30 Декабря, 2023 - 07:46:32 - перейти к сообщению
textout(0, 100, 50, "текст", 0);

или

textout(0, 100, 50, format(#t[0])+"----------", 0);

у меня на ноутбуке текст успешно выводится поверх игры, а на компьютере текст виден, только когда окно игры свернуть.

Что с этим можно сделать?
2. Zireael - 30 Декабря, 2023 - 08:05:28 - перейти к сообщению
Так тоже?:
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);
}
3. faryatiev - 30 Декабря, 2023 - 10:23:09 - перейти к сообщению
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);
}
4. Zireael - 30 Декабря, 2023 - 10:41:21 - перейти к сообщению
 Цитата:
в моём случае сильно мерцает

Так не используйте textout.
5. faryatiev - 30 Декабря, 2023 - 10:42:34 - перейти к сообщению
 Zireael пишет:
 Цитата:
в моём случае сильно мерцает

Так не используйте textout.


Не понял, а что использовать? Мне надо вывести уровень звука.
6. Kibor - 30 Декабря, 2023 - 10:46:47 - перейти к сообщению
 faryatiev пишет:
а что использовать?

Можно использовать еще
CODE:
kiborlog (0, "Текст", 5, 5, 300, 250);
(для просмотра ссылки Вам необходимо авторизоваться)
7. Zireael - 30 Декабря, 2023 - 10:47:05 - перейти к сообщению
 Цитата:
а что использовать?

TextOut.
8. faryatiev - 30 Декабря, 2023 - 10:53:22 - перейти к сообщению
 Zireael пишет:
 Цитата:
а что использовать?

TextOut.


Ого, я думал это одно и то же. Теперь всё красиво. Спасибо огромное.
Внешняя функция. Я понял.
9. resident - 30 Декабря, 2023 - 15:27:07 - перейти к сообщению
 Zireael пишет:
Так тоже?:

Есть что-нибудь для написания текста в созданном скриншоте?
screen(#scr[0][0],0,0,1280,720,w);
//добавляем текст на скриншот
saveimage(BMP, #scr[0][0], "screenshot_"+format(ts)+".bmp"Подмигивание; // сохраняем скриншот с текстом
Я представляю как это сделать, но не так сильно надо, чтоб разрабатывать это
10. Zireael - 30 Декабря, 2023 - 15:58:42 - перейти к сообщению
 Цитата:
Есть что-нибудь для написания текста в созданном скриншоте?

Можно собрать в exe и запускать из кибор.
C# (Отобразить)

Powered by ExBB FM 1.0 Final