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

  #1  
Старый 06.04.2019, 23:36
san0
Постоянный
Регистрация: 15.12.2013
Сообщений: 412
С нами: 6530249

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

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

Рассчитываю на вашу поддержку.
Вы попались на то, что многие функции WinAPI реализованы в двух вариантах - для строк Unicode (по правильному конечно это wide characters) и ASCII. Для простоты выбора конкретной из них используют директивы препроцессора, одна из которых на этапе компиляции сама подбирает вариацию функции на основе настроек проекта. Т.е. все функции по типу MessageBox на самом деле бывают двух вариантов - MessageBoxA и MessageBoxW, сам MessageBox - это только макрос.

Это, конечно, весьма не детальное описание, о поддержке широких символов можно почитать тут https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/working-with-strings

В lua Вы, естественно, вручную беспокоитесь о декларировании функций, а это значит, что макроса SendMessage здесь нет, в то время как внешний символ SendMessageA присутствует в составе библиотеки user32.dll.

Lua:





Код:
function
main
(
)
local
ffi
=
require
(
'ffi'
)
ffi
.
cdef
(
'int SendMessageA(int, int, int, int);'
)
ffi
.
C
.
SendMessageA
(
9576
,
0x1002
,
0xFF
,
0xFFF
)
end
 
Ответить с цитированием

  #2  
Старый 07.04.2019, 00:02
Belo4ka_belka
Участник форума
Регистрация: 28.07.2015
Сообщений: 191
С нами: 5680844

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

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

Вы попались на то, что многие функции WinAPI реализованы в двух вариантах - для строк Unicode (по правильному конечно это wide characters) и ASCII. Для простоты выбора конкретной из них используют директивы препроцессора, одна из которых на этапе компиляции сама подбирает вариацию функции на основе настроек проекта. Т.е. все функции по типу MessageBox на самом деле бывают двух вариантов - MessageBoxA и MessageBoxW, сам MessageBox - это только макрос.
Это, конечно, весьма не детальное описание, о поддержке широких символов можно почитать тут https://docs.microsoft.com/en-us/windows/desktop/LearnWin32/working-with-strings
В lua Вы, естественно, вручную беспокоитесь о декларировании функций, а это значит, что макроса SendMessage здесь нет, в то время как внешний символ SendMessageA присутствует в составе библиотеки user32.dll.

Lua:





Код:
function
main
(
)
local
ffi
=
require
(
'ffi'
)
ffi
.
cdef
(
'int SendMessageA(int, int, int, int);'
)
ffi
.
C
.
SendMessageA
(
9576
,
0x1002
,
0xFF
,
0xFFF
)
end

А я все думал что это за приставки к названиям функций! Теперь все без ошибок запустилось. Правда раньше я лишь подозревал, а теперь на практике понял, что PID и HWND это разные вещи, к сожалению. Но думаю с этим я уже смогу разобраться. Спасибо!
 
Ответить с цитированием

  #3  
Старый 06.04.2019, 22:32
Imbecil
Новичок
Регистрация: 06.04.2019
Сообщений: 15
С нами: 3739435

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

Как сделать так, чтобы по определенной команде в чат писало '/me ' и строку из test.ini файла
 
Ответить с цитированием

  #4  
Старый 06.04.2019, 23:50
Неадекватная сова
Постоянный
Регистрация: 02.06.2018
Сообщений: 342
С нами: 4183567

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

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

Как сделать так, чтобы по определенной команде в чат писало '/me ' и строку из test.ini файла
C++:





Код:
string
ReadStr
(
std
::
string _Section
,
std
::
string _Key
)
{
char
str
[
256
]
;
GetPrivateProfileString
(
_Section
.
c_str
(
)
,
_Key
.
c_str
(
)
,
NULL
,
str
,
sizeof
(
str
)
,
"SAMPFUNCS\\test.ini"
)
;
return
str
;
}
string
UTF8ToANSI
(
string s
)
{
BSTR    bstrWide
;
char
*
pszAnsi
;
int
nLength
;
const
char
*
pszCode
=
s
.
c_str
(
)
;
nLength
=
MultiByteToWideChar
(
CP_UTF8
,
0
,
pszCode
,
strlen
(
pszCode
)
+
1
,
NULL
,
NULL
)
;
bstrWide
=
SysAllocStringLen
(
NULL
,
nLength
)
;
MultiByteToWideChar
(
CP_UTF8
,
0
,
pszCode
,
strlen
(
pszCode
)
+
1
,
bstrWide
,
nLength
)
;
nLength
=
WideCharToMultiByte
(
CP_ACP
,
0
,
bstrWide
,
-
1
,
NULL
,
0
,
NULL
,
NULL
)
;
pszAnsi
=
new
char
[
nLength
]
;
WideCharToMultiByte
(
CP_ACP
,
0
,
bstrWide
,
-
1
,
pszAnsi
,
nLength
,
NULL
,
NULL
)
;
SysFreeString
(
bstrWide
)
;
string
r
(
pszAnsi
)
;
delete
[
]
pszAnsi
;
return
r
;
}
SFCLEO
*
SC
;
void
CALLBACK
sendChatMessage
(
string message
)
{
string thmsg
=
"0C8F: samp process_chat_input \""
+
message
+
"\""
;
SC
->
callOpcode
(
thmsg
.
c_str
(
)
)
;
}
Use
:
string szStr
=
"/me "
+
UTF8ToANSI
(
ReadStr
(
""
,
""
)
)
;
sendChatMessage
(
szStr
)
;
 
Ответить с цитированием

  #5  
Старый 06.04.2019, 22:51
-raymond-
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами: 4423953

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

как перевести цвет uint32_t в формат rbga и как в hex
 
Ответить с цитированием

  #6  
Старый 07.04.2019, 00:29
Cake_
Участник форума
Регистрация: 04.04.2017
Сообщений: 263
С нами: 4793630

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

Как получить координаты пикапе в зоне стрима?
 
Ответить с цитированием

  #7  
Старый 07.04.2019, 00:58
Imbecil
Новичок
Регистрация: 06.04.2019
Сообщений: 15
С нами: 3739435

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

кто то сталкивался с такой проблемой? крч установил Boost

C++:





Код:
boost
::
property_tree
::
ptree pt
;
boost
::
property_tree
::
ini_parser
::
read_ini
(
"time.ini"
,
pt
)
;
std
::
string patay
=
pt
.
get

(
"time.string"
)
;


пишу это, чтобы прочитать time.ini и получить значение строки. и вылазит куча ошибок в boost'e при попытке сборки проекта
















boost 1.69

visual studio 2017
 
Ответить с цитированием

  #8  
Старый 07.04.2019, 12:14
Cake_
Участник форума
Регистрация: 04.04.2017
Сообщений: 263
С нами: 4793630

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

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

кто то сталкивался с такой проблемой? крч установил Boost

C++:





Код:
boost
::
property_tree
::
ptree pt
;
boost
::
property_tree
::
ini_parser
::
read_ini
(
"time.ini"
,
pt
)
;
std
::
string patay
=
pt
.
get

(
"time.string"
)
;


пишу это, чтобы прочитать time.ini и получить значение строки. и вылазит куча ошибок в boost'e при попытке сборки проекта














boost 1.69
visual studio 2017
В начало

C++:





Код:
#include 
#include 
#include 
#include


 
Ответить с цитированием

  #9  
Старый 07.04.2019, 16:53
Imbecil
Новичок
Регистрация: 06.04.2019
Сообщений: 15
С нами: 3739435

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

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

В начало

C++:





Код:
#include 
#include 
#include 
#include



было, не помогает

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

ты грузишь boost ради того чтобы работать с одним INI?
если да, специально для тебя
https://blast.hk/threads/22983/
я уже все либы перепробовал, эту тоже. может я что то не так делаю

C++:





Код:
SF
->
getSAMP
(
)
->
registerChatCommand
(
"time"
,
time_command
)
;
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
std
::
string str
=
INI
::
ReadString
(
"time"
,
"string"
,
1337
,
".\\time.INI"
)
;
const
char
*
result
=
&
str
[
0
]
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
result
)
;
}


гружу тут, чтобы сразу увидеть вышло ли



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

  #10  
Старый 07.04.2019, 17:25
Неадекватная сова
Постоянный
Регистрация: 02.06.2018
Сообщений: 342
С нами: 4183567

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

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

было, не помогает

я уже все либы перепробовал, эту тоже. может я что то не так делаю

C++:





Код:
SF
->
getSAMP
(
)
->
registerChatCommand
(
"time"
,
time_command
)
;
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
std
::
string str
=
INI
::
ReadString
(
"time"
,
"string"
,
1337
,
".\\time.INI"
)
;
const
char
*
result
=
&
str
[
0
]
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
result
)
;
}


гружу тут, чтобы сразу увидеть вышло ли

просто пустая строка
Покажи содержимое ini файла в котором читаешь
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.