 |
|

18.03.2019, 13:00
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
Сообщение от ๖ۣۣۜШурик
Не совсем понял, можно подробней?
Екземпляр класса должен быть глобальным или static
|
|
|

18.03.2019, 14:58
|
|
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами:
8654409
Репутация:
0
|
|
Сообщение от Stiopko
Екземпляр класса должен быть глобальным или static
Попытался сделать глобальным и статическим - результата нет, всё также вылетает.
Хочу обратить внимание на то, что если я укажу th.join() после: std::thread th = test.start(""), то игра не вылетит, но к сожалению от потока не будет смысла (т.к. фризит процесс при Sleep).
UPD: Проверил на консольном приложении - успешно (но не в SF).

|
|
|

18.03.2019, 17:15
|
|
Участник форума
Регистрация: 07.03.2015
Сообщений: 233
С нами:
5887139
Репутация:
18
|
|
Сообщение от ๖ۣۣۜШурик
Попытался сделать глобальным и статическим - результата нет, всё также вылетает.
Хочу обратить внимание на то, что если я укажу th.join() после: std::thread th = test.start(""), то игра не вылетит, но к сожалению от потока не будет смысла (т.к. фризит процесс при Sleep).
UPD: Проверил на консольном приложении - успешно (но не в SF).

Необходимость в парилке с потоком возникла с целью нормально использовать задержку?
|
|
|

18.03.2019, 17:33
|
|
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами:
8654409
Репутация:
0
|
|
Сообщение от Harryss
Необходимость в парилке с потоком возникла с целью нормально использовать задержку?
Да, но не только из-за задержки.
|
|
|

18.03.2019, 18:14
|
|
Участник форума
Регистрация: 07.03.2015
Сообщений: 233
С нами:
5887139
Репутация:
18
|
|
Сообщение от ๖ۣۣۜШурик
Да, но не только из-за задержки.
Если это вдруг поможет, предлагаю простой вариант избавления от этой парилки, с библиотекой thread.
C++:
[CODE]
const
auto
myTask
=
[
]
(
)
{
// Твой код.
// Можно использовать Sleep и это не будет тормозить игру.
}
;
std
::
thread
(
myTask
)
.
detach
(
)
;
//
|
|
|

18.03.2019, 19:33
|
|
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами:
8654409
Репутация:
0
|
|
[QUOTE="Harryss"]
Если это вдруг поможет, предлагаю простой вариант избавления от этой парилки, с библиотекой thread.
C++:
[CODE]
const
auto
myTask
=
[
]
(
)
{
// Твой код.
// Можно использовать Sleep и это не будет тормозить игру.
}
;
std
::
thread
(
myTask
)
.
detach
(
)
;
//
|
|
|

18.03.2019, 19:57
|
|
Флудер
Регистрация: 08.11.2017
Сообщений: 4,787
С нами:
4480376
Репутация:
183
|
|
Сообщение от {cran}
Есть ли возможность менять шрифт текста для ImGui меню?
C++:
Код:
ImGui
::
CreateContext
(
)
;
ImGui_ImplWin32_Init
(
GetActiveWindow
(
)
)
;
ImGui_ImplDX9_Init
(
SF
->
getRender
(
)
->
getD3DDevice
(
)
)
;
ImGuiIO
&
IO
=
ImGui
::
GetIO
(
)
;
if
(
!
bChangeFont
)
{
ImFontConfig font_config
;
TCHAR path
[
MAX_PATH
]
;
HRESULT hr
=
SHGetFolderPathA
(
NULL
,
CSIDL_FONTS
,
NULL
,
SHGFP_TYPE_CURRENT
,
path
)
;
std
::
string fPath
=
std
::
string
(
path
)
.
append
(
"\\arialbd.ttf"
)
;
IO
.
Fonts
->
AddFontFromFileTTF
(
fPath
.
c_str
(
)
,
14.0f
,
&
font_config
,
IO
.
Fonts
->
GetGlyphRangesCyrillic
(
)
)
;
smallFont
=
IO
.
Fonts
->
AddFontFromFileTTF
(
fPath
.
c_str
(
)
,
12.0f
,
&
font_config
,
IO
.
Fonts
->
GetGlyphRangesCyrillic
(
)
)
;
bChangeFont
=
true
;
}
ImGuiStyle
*
style
=
&
ImGui
::
GetStyle
(
)
;
у меня так
|
|
|

18.03.2019, 21:39
|
|
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами:
8654409
Репутация:
0
|
|
Возможно ли в registerChatCommandпередать в качестве второго параметра лямбду? Но внутри неё мне нужно получить 2 переменные, которые в ней не находятся. Если да, то пожалуйста покажите пример.
|
|
|

18.03.2019, 22:33
|
|
Участник форума
Регистрация: 07.03.2015
Сообщений: 233
С нами:
5887139
Репутация:
18
|
|
Сообщение от ๖ۣۣۜШурик
Возможно ли в registerChatCommandпередать в качестве второго параметра лямбду? Но внутри неё мне нужно получить 2 переменные, которые в ней не находятся. Если да, то пожалуйста покажите пример.
registerChatCommand напрямую с лямбдой не работает, на основе того, что я показал ранее, с cmd работаю так
C++:
Код:
void
CALLBACK
cmdExample
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
const
auto
task
=
[
param
]
(
)
// Просто добавил param
{
// Код, задержки, все дела.
int
my_int
=
std
::
stoi
(
param
)
;
// Получение параметра функции
}
;
std
::
thread
(
task
)
.
detach
(
)
;
}
|
|
|

18.03.2019, 22:47
|
|
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами:
8654409
Репутация:
0
|
|
Сообщение от Harryss
registerChatCommand напрямую с лямбдой не работает, на основе того, что я показал ранее, с cmd работаю так
C++:
Код:
void
CALLBACK
cmdExample
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
const
auto
task
=
[
param
]
(
)
// Просто добавил param
{
// Код, задержки, все дела.
int
my_int
=
std
::
stoi
(
param
)
;
// Получение параметра функции
}
;
std
::
thread
(
task
)
.
detach
(
)
;
}
У меня нет определённой команды.
Я команды создаю уже непосредственно в самой игре и не могу сделать так как у тебя.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|