ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #4871  
Старый 16.10.2020, 09:21
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

Репутация: 213
По умолчанию

В имгуи при попытке загрузки шрифта из пути имеющего русские символы, не получается загрузить шрифт.

Цитата:
Сообщение от Спойлер  




Загружаю так:

C++:





Код:
io
.
Fonts
->
AddFontFromFileTTF
(
font
,
15.0f
,
&
icons_config
,
icons_ranges
)
;


Кто-то знает как можно решить эту проблему?
 
Ответить с цитированием

  #4872  
Старый 16.10.2020, 10:45
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от SC6UT  

В имгуи при попытке загрузки шрифта из пути имеющего русские символы, не получается загрузить шрифт.
Цитата:
Сообщение от Спойлер  


Загружаю так:

C++:





Код:
io
.
Fonts
->
AddFontFromFileTTF
(
font
,
15.0f
,
&
icons_config
,
icons_ranges
)
;


Кто-то знает как можно решить эту проблему?
Путь в utf-8 отдаешь?
 
Ответить с цитированием

  #4873  
Старый 16.10.2020, 11:33
#Northn
Флудер
Регистрация: 10.08.2017
Сообщений: 2,659
С нами: 4609424

Репутация: 183


По умолчанию

Цитата:
Сообщение от SC6UT  

делаю вот так, но не уверен, что это правильно

C++:





Код:
char
path
[
MAX_PATH
]
,
font
[
MAX_PATH
]
;
GetCurrentDirectory
(
MAX_PATH
,
path
)
;
sprintf
(
font
,
u8
"%s\\%s"
,
path
,
FONT_PATH
)
;

Это нелогично, ты обёртываешь под кодировку не путь, а только текст %s\\%s, поэтому ошибка, у тебя строка всё ещё не под utf8

Отдельно перекодируй
 
Ответить с цитированием

  #4874  
Старый 22.10.2020, 20:07
|| NN - NoName ||
Познавший АНТИЧАТ
Регистрация: 21.12.2016
Сообщений: 1,046
С нами: 4943565

Репутация: 168


По умолчанию



C++:





Код:
#include 
#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
std
::
stoi
(
param
)
;
char
buf
[
128
]
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
if
(
!
pPlayer
)
return
;
sprintf
(
buf
,
"Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
buf
)
;
}
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
SF
->
getSAMP
(
)
->
registerChatCommand
(
"showinfo"
,
cmd_show_info_player
)
;
initialized
=
true
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"Bl"
)
;
}
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}
 
Ответить с цитированием

  #4875  
Старый 22.10.2020, 20:10
#Northn
Флудер
Регистрация: 10.08.2017
Сообщений: 2,659
С нами: 4609424

Репутация: 183


По умолчанию

Цитата:
Сообщение от #00DD00  

C++:





Код:
#include 
#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
CALLBACK
cmd_show_info_player
(
std
::
string param
)
{
if
(
param
.
empty
(
)
)
return
;
int
i
=
std
::
stoi
(
param
)
;
char
buf
[
128
]
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
if
(
!
pPlayer
)
return
;
sprintf
(
buf
,
"Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d"
,
pPlayer
->
szPlayerName
,
pPlayer
->
iPing
,
pPlayer
->
iScore
,
pPlayer
->
iIsNPC
,
pPlayer
->
pPlayerData
->
iAFKState
==
2
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
buf
)
;
}
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
SF
->
getSAMP
(
)
->
registerChatCommand
(
"showinfo"
,
cmd_show_info_player
)
;
initialized
=
true
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"Bl"
)
;
}
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}

Гайд - Интегрированная отладка asi/sf/dll плагинов в игре с помощью Visual Studio

прив Многие ли из вас знают, что с помощью Visual Studio можно отлаживать плагины прямо в игре и что делается это очень просто? Нет, блять, нихуя вы не знаете! Но я вас научу. Берём студию и проект своего плагина, идём в конфигурацию проекта на страницу "Debugging" (Отладка) и ставим такие...

www.blast.hk


настрой и посмотри

там скорее всего исключение в stoi вызывается, если больше sizeof(int) то std:ut_of_range, если туда отправляется текст без цифр то std::invalid_argument
 
Ответить с цитированием

  #4876  
Старый 22.10.2020, 20:11
|| NN - NoName ||
Познавший АНТИЧАТ
Регистрация: 21.12.2016
Сообщений: 1,046
С нами: 4943565

Репутация: 168


По умолчанию

Цитата:
Сообщение от #Northn  

Гайд - Интегрированная отладка asi/sf/dll плагинов в игре с помощью Visual Studio

прив Многие ли из вас знают, что с помощью Visual Studio можно отлаживать плагины прямо в игре и что делается это очень просто? Нет, блять, нихуя вы не знаете! Но я вас научу. Берём студию и проект своего плагина, идём в конфигурацию проекта на страницу "Debugging" (Отладка) и ставим такие...

www.blast.hk


настрой и посмотри
там скорее всего исключение в stoi вызывается, если больше sizeof(int) то std:ut_of_range, если туда отправляется текст без цифр то std::invalid_argument
Сорри, я тупой нихуя не понял. Но, то что ты скинул(ссылку), я сделал уже.
 
Ответить с цитированием

  #4877  
Старый 22.10.2020, 20:16
#Northn
Флудер
Регистрация: 10.08.2017
Сообщений: 2,659
С нами: 4609424

Репутация: 183


По умолчанию

Цитата:
Сообщение от #00DD00  

Сорри, я тупой нихуя не понял
C++:





Код:
void
CALLBACK
si
(
std
::
string param
)
{
if
(
param
.
empty
(
)
||
param
.
length
(
)
>
23
)
return
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Please use /si "
)
;
try
{
int
id
=
std
::
stoi
(
param
)
;
if
(
id
>
SAMP_MAX_PLAYERS
-
5
)
_Xout_of_range
(
"stoi"
)
;
stRemotePlayer
*
pData
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
if
(
!
pData
)
throw
std
::
exception
(
"Player is offline"
)
;
std
::
string text
=
"ID: "
+
param
+
" | NAME: "
+
pData
.
name
// fields may be wrong
+
" | SCORE: "
+
to_string
(
pData
.
score
)
+
" | PING: "
+
to_string
(
pData
.
ping
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
text
.
c_str
(
)
)
;
}
catch
(
const
std
::
out_of_range
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Not more than 1000"
)
;
}
catch
(
const
std
::
invalid_argument
)
{
// here u can try find player by nickname
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"You didn't put number"
)
;
}
catch
(
const
std
::
exception
&
arg
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
arg
.
what
(
)
)
;
}
}
 
Ответить с цитированием

  #4878  
Старый 22.10.2020, 20:31
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от #Northn  

C++:





Код:
void
CALLBACK
si
(
std
::
string param
)
{
if
(
param
.
empty
(
)
||
param
.
length
(
)
>
23
)
return
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Please use /si "
)
;
try
{
int
id
=
std
::
stoi
(
param
)
;
if
(
id
>
SAMP_MAX_PLAYERS
-
5
)
_Xout_of_range
(
"stoi"
)
;
stRemotePlayer
*
pData
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
i
]
;
if
(
!
pData
)
throw
std
::
exception
(
"Player is offline"
)
;
std
::
string text
=
"ID: "
+
param
+
" | NAME: "
+
pData
.
name
// fields may be wrong
+
" | SCORE: "
+
to_string
(
pData
.
score
)
+
" | PING: "
+
to_string
(
pData
.
ping
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
text
.
c_str
(
)
)
;
}
catch
(
const
std
::
out_of_range
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Not more than 1000"
)
;
}
catch
(
const
std
::
invalid_argument
)
{
// here u can try find player by nickname
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"You didn't put number"
)
;
}
catch
(
const
std
::
exception
&
arg
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
arg
.
what
(
)
)
;
}
}

Исключения в c++ чересчур медленные. Для чтения числа можно использовать scanf, либо regex_match.
 
Ответить с цитированием

  #4879  
Старый 22.10.2020, 20:38
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Цитата:
Сообщение от KiN4StAt  

Исключения в c++ чересчур медленные. Для чтения числа можно использовать scanf, либо regex_match.
Добро пожаловать в 2к20. Если исключение не брошено, то оно ничего не стоит
 
Ответить с цитированием

  #4880  
Старый 22.10.2020, 20:39
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от SR_team  

Добро пожаловать в 2к20. Если исключение не брошено, то оно ничего не стоит
Тоже верно.

(Оптимизация головного мозга, извините)
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.